[Pkg-owncloud-commits] [owncloud-client] 15/26: Add a button to acitivity view to clean the blacklist.
Sandro Knauß
hefee-guest at moszumanska.debian.org
Mon Dec 9 00:01:58 UTC 2013
This is an automated email from the git hooks/post-receive script.
hefee-guest pushed a commit to branch master
in repository owncloud-client.
commit f0a6047ecf9b1fbeee3802f3a45bb2fa970867dd
Author: Klaas Freitag <freitag at owncloud.com>
Date: Tue Dec 3 14:03:45 2013 +0100
Add a button to acitivity view to clean the blacklist.
---
src/mirall/protocolwidget.cpp | 43 +++++++++++++++++++++++++++++++++++++------
src/mirall/protocolwidget.h | 8 ++++++--
src/mirall/syncjournaldb.cpp | 18 +++++++++++++++++-
src/mirall/syncjournaldb.h | 1 +
4 files changed, 61 insertions(+), 9 deletions(-)
diff --git a/src/mirall/protocolwidget.cpp b/src/mirall/protocolwidget.cpp
index d5f249d..5cb037a 100644
--- a/src/mirall/protocolwidget.cpp
+++ b/src/mirall/protocolwidget.cpp
@@ -23,6 +23,7 @@
#include "mirall/theme.h"
#include "mirall/folderman.h"
#include "mirall/syncfileitem.h"
+#include "mirall/folder.h"
#include "ui_protocolwidget.h"
@@ -57,8 +58,15 @@ ProtocolWidget::ProtocolWidget(QWidget *parent) :
connect(this, SIGNAL(guiLog(QString,QString)), Logger::instance(), SIGNAL(guiLog(QString,QString)));
+ _clearBlacklistBtn = _ui->_dialogButtonBox->addButton(tr("Retry Sync"), QDialogButtonBox::ActionRole);
+ _clearBlacklistBtn->setToolTip( tr("Some files are ignored because of previous errors.\n Try to sync these again.") );
+ _clearBlacklistBtn->setEnabled(false);
+ connect(_clearBlacklistBtn, SIGNAL(clicked()), SLOT(slotClearBlacklist()));
+
QPushButton *copyBtn = _ui->_dialogButtonBox->addButton(tr("Copy"), QDialogButtonBox::ActionRole);
+ copyBtn->setToolTip( tr("Copy the activity list to the clipboard."));
connect(copyBtn, SIGNAL(clicked()), SLOT(copyToClipboard()));
+
}
void ProtocolWidget::setupList()
@@ -126,10 +134,23 @@ void ProtocolWidget::copyToClipboard()
emit guiLog(tr("Copied to clipboard"), tr("The sync status has been copied to the clipboard."));
}
-void ProtocolWidget::cleanErrors( const QString& folder ) // FIXME: Use the folder to detect which errors can be deleted.
+void ProtocolWidget::slotClearBlacklist()
{
- _problemCounter = 0;
- QList<QTreeWidgetItem*> wipeList;
+ FolderMan *folderMan = FolderMan::instance();
+
+ Folder::Map folders = folderMan->map();
+
+ foreach( Folder *f, folders ) {
+ int num = f->slotWipeBlacklist();
+ qDebug() << num << "entries were removed from"<< f->alias() << "blacklist";
+ }
+
+ folderMan->slotScheduleAllFolders();
+}
+
+QList<QTreeWidgetItem*> ProtocolWidget::errorItems( const QString& folder )
+{
+ QList<QTreeWidgetItem*> list;
int itemCnt = _ui->_treeWidget->topLevelItemCount();
@@ -138,10 +159,19 @@ void ProtocolWidget::cleanErrors( const QString& folder ) // FIXME: Use the fold
bool isErrorItem = item->data(0, ErrorIndicatorRole).toBool();
QString itemFolder = item->data(2, Qt::DisplayRole).toString();
if( isErrorItem && itemFolder == folder ) {
- wipeList.append(item);
+ list.append(item);
}
}
- qDeleteAll(wipeList.begin(), wipeList.end());
+ return list;
+}
+
+void ProtocolWidget::cleanErrorItems( const QString& folder ) // FIXME: Use the folder to detect which errors can be deleted.
+{
+ QList<QTreeWidgetItem*> wipeList = errorItems(folder);
+ if( wipeList.count() > 0 ) {
+ qDeleteAll(wipeList.begin(), wipeList.end());
+ }
+ _clearBlacklistBtn->setEnabled(false);
}
QString ProtocolWidget::timeString(QDateTime dt, QLocale::FormatType format) const
@@ -187,6 +217,7 @@ QTreeWidgetItem *ProtocolWidget::createProblemTreewidgetItem( const Progress::Sy
item->setIcon(0, Theme::instance()->syncStateIcon(SyncResult::Problem, true));
} else {
item->setIcon(0, Theme::instance()->syncStateIcon(SyncResult::Error, true));
+ _clearBlacklistBtn->setEnabled(true);
}
item->setToolTip(0, longTimeStr);
item->setToolTip(3, errMsg );
@@ -236,7 +267,7 @@ QTreeWidgetItem* ProtocolWidget::createProgressTreewidgetItem( const Progress::I
void ProtocolWidget::slotProgressInfo( const QString& folder, const Progress::Info& progress )
{
if( progress.kind == Progress::StartSync ) {
- cleanErrors( folder );
+ cleanErrorItems( folder );
}
if( progress.kind == Progress::EndSync ) {
diff --git a/src/mirall/protocolwidget.h b/src/mirall/protocolwidget.h
index 39a6544..db1543a 100644
--- a/src/mirall/protocolwidget.h
+++ b/src/mirall/protocolwidget.h
@@ -22,6 +22,8 @@
#include "ui_protocolwidget.h"
+class QPushButton;
+
namespace Mirall {
class SyncResult;
@@ -48,21 +50,23 @@ public slots:
protected slots:
void copyToClipboard();
+ void slotClearBlacklist();
signals:
void guiLog(const QString&, const QString&);
private:
void setSyncResultStatus(const SyncResult& result );
- void cleanErrors( const QString& folder );
+ void cleanErrorItems( const QString& folder );
QTreeWidgetItem* createProgressTreewidgetItem(const Progress::Info& progress );
QTreeWidgetItem* createProblemTreewidgetItem( const Progress::SyncProblem& problem);
+ QList<QTreeWidgetItem*> errorItems(const QString &folder);
QString timeString(QDateTime dt, QLocale::FormatType format = QLocale::NarrowFormat) const;
const int ErrorIndicatorRole;
Ui::ProtocolWidget *_ui;
- int _problemCounter;
+ QPushButton *_clearBlacklistBtn;
};
}
diff --git a/src/mirall/syncjournaldb.cpp b/src/mirall/syncjournaldb.cpp
index ca88b8c..cd779b4 100644
--- a/src/mirall/syncjournaldb.cpp
+++ b/src/mirall/syncjournaldb.cpp
@@ -677,6 +677,22 @@ SyncJournalBlacklistRecord SyncJournalDb::blacklistEntry( const QString& file )
return entry;
}
+int SyncJournalDb::wipeBlacklist()
+{
+ QMutexLocker locker(&_mutex);
+ if( checkConnect() ) {
+ QSqlQuery query(_db);
+
+ query.prepare("DELETE FROM blacklist WHERE retrycount >= 0");
+
+ if( ! query.exec() ) {
+ sqlFail("Deletion of whole blacklist failed", query);
+ }
+ return query.numRowsAffected();
+ }
+ return -1;
+}
+
void SyncJournalDb::wipeBlacklistEntry( const QString& file )
{
QMutexLocker locker(&_mutex);
@@ -686,7 +702,7 @@ void SyncJournalDb::wipeBlacklistEntry( const QString& file )
query.prepare("DELETE FROM blacklist WHERE path=:path");
query.bindValue(":path", file);
if( ! query.exec() ) {
- qDebug() << "Deletion of blacklist item failed.";
+ sqlFail("Deletion of blacklist item failed.", query);
}
}
}
diff --git a/src/mirall/syncjournaldb.h b/src/mirall/syncjournaldb.h
index fbc3f62..fffb224 100644
--- a/src/mirall/syncjournaldb.h
+++ b/src/mirall/syncjournaldb.h
@@ -38,6 +38,7 @@ public:
bool exists();
void updateBlacklistEntry( const SyncJournalBlacklistRecord& item );
void wipeBlacklistEntry(const QString& file);
+ int wipeBlacklist();
struct DownloadInfo {
DownloadInfo() : _errorCount(0), _valid(false) {}
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-owncloud/owncloud-client.git
More information about the Pkg-owncloud-commits
mailing list