[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