[Pkg-owncloud-commits] [owncloud-client] 38/115: Show folder icon a offline when account is offline

Sandro Knauß hefee-guest at moszumanska.debian.org
Fri Aug 29 22:03:57 UTC 2014


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 4c67a8812afb8dda78c3a1a6e187866470c22b4e
Author: Daniel Molkentin <danimo at owncloud.com>
Date:   Fri Aug 15 15:01:01 2014 +0200

    Show folder icon a offline when account is offline
    
    Fixes #1959
---
 src/mirall/accountsettings.cpp | 67 ++++++++++++++++++++++++++++++------------
 src/mirall/accountsettings.h   |  2 ++
 src/mirall/application.cpp     |  1 -
 src/mirall/folder.cpp          |  4 +--
 src/mirall/folderman.cpp       | 10 -------
 src/mirall/owncloudgui.cpp     |  4 +--
 src/mirall/owncloudtheme.cpp   |  6 ----
 src/mirall/owncloudtheme.h     |  1 -
 src/mirall/settingsdialog.cpp  | 28 +++++-------------
 src/mirall/settingsdialog.h    |  4 ++-
 src/mirall/syncresult.cpp      |  3 --
 src/mirall/syncresult.h        |  3 +-
 src/mirall/theme.cpp           | 18 +++++++-----
 src/mirall/theme.h             |  3 +-
 14 files changed, 78 insertions(+), 76 deletions(-)

diff --git a/src/mirall/accountsettings.cpp b/src/mirall/accountsettings.cpp
index 6259d44..eeeec59 100644
--- a/src/mirall/accountsettings.cpp
+++ b/src/mirall/accountsettings.cpp
@@ -111,9 +111,13 @@ AccountSettings::AccountSettings(QWidget *parent) :
             this, SLOT(slotAccountChanged(Account*,Account*)));
     slotAccountChanged(AccountManager::instance()->account(), 0);
 
-    connect(FolderMan::instance(), SIGNAL(folderListLoaded(Folder::Map)),
+    FolderMan *folderMan = FolderMan::instance();
+    connect(folderMan, SIGNAL(folderSyncStateChange(QString)),
+             this, SLOT(slotSyncStateChange(QString)));
+    connect(folderMan, SIGNAL(folderListLoaded(Folder::Map)),
             this, SLOT(setFolderList(Folder::Map)));
     setFolderList(FolderMan::instance()->map());
+    slotSyncStateChange();
 }
 
 void AccountSettings::slotAccountChanged(Account *newAccount, Account *oldAccount)
@@ -122,6 +126,7 @@ void AccountSettings::slotAccountChanged(Account *newAccount, Account *oldAccoun
         disconnect(oldAccount, SIGNAL(stateChanged(int)), this, SLOT(slotAccountStateChanged(int)));
         disconnect(oldAccount->quotaInfo(), SIGNAL(quotaUpdated(qint64,qint64)),
                     this, SLOT(slotUpdateQuota(qint64,qint64)));
+        disconnect(oldAccount, SIGNAL(stateChanged(int)), this, SLOT(slotAccountStateChanged(int)));
     }
 
     _account = newAccount;
@@ -260,35 +265,39 @@ void AccountSettings::folderToModelItem( QStandardItem *item, Folder *f )
 
     Theme *theme = Theme::instance();
     item->setData( theme->statusHeaderText( status ),  Qt::ToolTipRole );
-    if( f->syncEnabled() ) {
-        if( status == SyncResult::SyncPrepare ) {
-            if( _wasDisabledBefore ) {
-                // if the folder was disabled before, set the sync icon
+    if (_account->state() == Account::Connected) {
+        if( f->syncEnabled() ) {
+            if( status == SyncResult::SyncPrepare ) {
+                if( _wasDisabledBefore ) {
+                    // if the folder was disabled before, set the sync icon
+                    item->setData( theme->syncStateIcon( SyncResult::SyncRunning), FolderStatusDelegate::FolderStatusIconRole );
+                }  // we keep the previous icon for the SyncPrepare state.
+            } else if( status == SyncResult::Undefined ) {
+                // startup, the sync was never done.
+                qDebug() << "XXX FIRST time sync, setting icon to sync running!";
                 item->setData( theme->syncStateIcon( SyncResult::SyncRunning), FolderStatusDelegate::FolderStatusIconRole );
-            }  // we keep the previous icon for the SyncPrepare state.
-        } else if( status == SyncResult::Undefined ) {
-            // startup, the sync was never done.
-            qDebug() << "XXX FIRST time sync, setting icon to sync running!";
-            item->setData( theme->syncStateIcon( SyncResult::SyncRunning), FolderStatusDelegate::FolderStatusIconRole );
-        } else {
-            // kepp the previous icon for the prepare phase.
-            if( status == SyncResult::Problem) {
-                item->setData( theme->syncStateIcon( SyncResult::Success), FolderStatusDelegate::FolderStatusIconRole );
             } else {
-                item->setData( theme->syncStateIcon( status ), FolderStatusDelegate::FolderStatusIconRole );
+                // kepp the previous icon for the prepare phase.
+                if( status == SyncResult::Problem) {
+                    item->setData( theme->syncStateIcon( SyncResult::Success), FolderStatusDelegate::FolderStatusIconRole );
+                } else {
+                    item->setData( theme->syncStateIcon( status ), FolderStatusDelegate::FolderStatusIconRole );
+                }
             }
+        } else {
+            item->setData( theme->folderDisabledIcon( ), FolderStatusDelegate::FolderStatusIconRole ); // size 48 before
+            _wasDisabledBefore = false;
         }
     } else {
-        item->setData( theme->folderDisabledIcon( ), FolderStatusDelegate::FolderStatusIconRole ); // size 48 before
-        _wasDisabledBefore = false;
+        item->setData( theme->folderOfflineIcon(), FolderStatusDelegate::FolderStatusIconRole);
     }
+
     item->setData( theme->statusHeaderText( status ), FolderStatusDelegate::FolderStatus );
 
     if( errorList.isEmpty() ) {
         if( (status == SyncResult::Error ||
              status == SyncResult::SetupError ||
-             status == SyncResult::SyncAbortRequested ||
-             status == SyncResult::Unavailable)) {
+             status == SyncResult::SyncAbortRequested )) {
             errorList <<  theme->statusHeaderText(status);
         }
     }
@@ -730,6 +739,11 @@ void AccountSettings::slotAccountStateChanged(int state)
         QUrl safeUrl(_account->url());
         safeUrl.setPassword(QString()); // Remove the password from the URL to avoid showing it in the UI
         slotButtonsSetEnabled();
+        FolderMan *folderMan = FolderMan::instance();
+        foreach (Folder *folder, folderMan->map().values()) {
+            slotUpdateFolderState(folder);
+        }
+        slotSyncStateChange();
         if (state == Account::Connected) {
             QString user;
             if (AbstractCredentials *cred = _account->credentials()) {
@@ -755,6 +769,21 @@ void AccountSettings::slotAccountStateChanged(int state)
     }
 }
 
+void AccountSettings::slotSyncStateChange(const QString& alias)
+{
+    Q_UNUSED(alias);
+
+    FolderMan *folderMan = FolderMan::instance();
+    SyncResult state = folderMan->accountStatus(folderMan->map().values());
+    QIcon icon;
+    if (_account && _account->state() == Account::Connected) {
+        icon = Theme::instance()->syncStateIcon(state.status());
+    } else {
+        icon = Theme::instance()->folderOfflineIcon();
+    }
+    emit accountIconChanged(icon);
+}
+
 AccountSettings::~AccountSettings()
 {
     delete ui;
diff --git a/src/mirall/accountsettings.h b/src/mirall/accountsettings.h
index 4e64ea2..ee3bfd4 100644
--- a/src/mirall/accountsettings.h
+++ b/src/mirall/accountsettings.h
@@ -54,6 +54,7 @@ signals:
     void openProtocol();
     void openFolderAlias( const QString& );
     void infoFolderAlias( const QString& );
+    void accountIconChanged( const QIcon& );
 
 public slots:
     void slotFolderActivated( const QModelIndex& );
@@ -62,6 +63,7 @@ public slots:
     void slotDoubleClicked( const QModelIndex& );
     void slotSetProgress(const QString& folder, const Progress::Info& progress);
     void slotButtonsSetEnabled();
+    void slotSyncStateChange(const QString& alias = QString());
 
     void slotUpdateQuota( qint64,qint64 );
     void slotIgnoreFilesEditor();
diff --git a/src/mirall/application.cpp b/src/mirall/application.cpp
index cf506f0..cd33cd9 100644
--- a/src/mirall/application.cpp
+++ b/src/mirall/application.cpp
@@ -179,7 +179,6 @@ void Application::slotLogout()
         FolderMan *folderMan = FolderMan::instance();
         folderMan->setSyncEnabled(false);
         folderMan->terminateSyncProcess();
-        folderMan->unloadAllFolders();
         a->setState(Account::SignedOut);
         // show result
         _gui->slotComputeOverallSyncStatus();
diff --git a/src/mirall/folder.cpp b/src/mirall/folder.cpp
index 0b59485..9677ce6 100644
--- a/src/mirall/folder.cpp
+++ b/src/mirall/folder.cpp
@@ -287,7 +287,6 @@ void Folder::slotNetworkUnavailable()
     if (account && account->state() == Account::Connected) {
         account->setState(Account::Disconnected);
     }
-    _syncResult.setStatus(SyncResult::Unavailable);
     emit syncStateChange();
 }
 
@@ -662,7 +661,8 @@ void Folder::slotSyncFinished()
         _syncResult.setErrorStrings( _errors );
         qDebug() << "    * owncloud csync thread finished with error";
     } else if (_csyncUnavail) {
-        _syncResult.setStatus(SyncResult::Unavailable);
+        _syncResult.setStatus(SyncResult::Error);
+        qDebug() << "  ** csync not available.";
     } else if( _syncResult.warnCount() > 0 ) {
         // there have been warnings on the way.
         _syncResult.setStatus(SyncResult::Problem);
diff --git a/src/mirall/folderman.cpp b/src/mirall/folderman.cpp
index 5729c4d..7ec10a3 100644
--- a/src/mirall/folderman.cpp
+++ b/src/mirall/folderman.cpp
@@ -695,9 +695,6 @@ SyncResult FolderMan::accountStatus(const QList<Folder*> &folders)
             case SyncResult::SyncRunning:
                 overallResult.setStatus( SyncResult::SyncRunning );
                 break;
-            case SyncResult::Unavailable:
-                overallResult.setStatus( SyncResult::Unavailable );
-                break;
             case SyncResult::Problem: // don't show the problem icon in tray.
             case SyncResult::Success:
                 if( overallResult.status() == SyncResult::Undefined )
@@ -724,7 +721,6 @@ SyncResult FolderMan::accountStatus(const QList<Folder*> &folders)
         int abortSeen = 0;
         int runSeen = 0;
         int various = 0;
-        int unavail = 0;
 
         foreach ( Folder *folder, folders ) {
             SyncResult folderResult = folder->syncResult();
@@ -739,9 +735,6 @@ SyncResult FolderMan::accountStatus(const QList<Folder*> &folders)
             case SyncResult::SyncRunning:
                 runSeen++;
                 break;
-            case SyncResult::Unavailable:
-                unavail++;
-                break;
             case SyncResult::Problem: // don't show the problem icon in tray.
             case SyncResult::Success:
                 goodSeen++;
@@ -795,9 +788,6 @@ QString FolderMan::statusToString( SyncResult syncStatus, bool enabled ) const
     case SyncResult::SyncRunning:
         folderMessage = tr( "Sync is running." );
         break;
-    case SyncResult::Unavailable:
-        folderMessage = tr( "Server is currently not available." );
-        break;
     case SyncResult::Success:
         folderMessage = tr( "Last Sync was successful." );
         break;
diff --git a/src/mirall/owncloudgui.cpp b/src/mirall/owncloudgui.cpp
index 7d6b268..48dbdd9 100644
--- a/src/mirall/owncloudgui.cpp
+++ b/src/mirall/owncloudgui.cpp
@@ -212,12 +212,12 @@ void ownCloudGui::slotComputeOverallSyncStatus()
 {
     if (Account *a = AccountManager::instance()->account()) {
         if (a->state() == Account::SignedOut) {
-            _tray->setIcon(Theme::instance()->syncStateIcon( SyncResult::Unavailable, true));
+            _tray->setIcon(Theme::instance()->folderOfflineIcon(true));
             _tray->setToolTip(tr("Please sign in"));
             return;
         }
         if (a->state() == Account::Disconnected) {
-            _tray->setIcon(Theme::instance()->syncStateIcon( SyncResult::Unavailable, true));
+            _tray->setIcon(Theme::instance()->folderOfflineIcon(true));
             _tray->setToolTip(tr("Disconnected from server"));
             return;
         }
diff --git a/src/mirall/owncloudtheme.cpp b/src/mirall/owncloudtheme.cpp
index f73aa7c..5276095 100644
--- a/src/mirall/owncloudtheme.cpp
+++ b/src/mirall/owncloudtheme.cpp
@@ -77,12 +77,6 @@ QIcon ownCloudTheme::trayFolderIcon( const QString& ) const
     return QIcon::fromTheme("folder", fallback);
 }
 
-QIcon ownCloudTheme::folderDisabledIcon( ) const
-{
-    // Fixme: Do we really want the dialog-canel from theme here?
-    return themeIcon( QLatin1String("state-pause") );
-}
-
 QIcon ownCloudTheme::applicationIcon( ) const
 {
     return themeIcon( QLatin1String("owncloud-icon") );
diff --git a/src/mirall/owncloudtheme.h b/src/mirall/owncloudtheme.h
index 33b33e2..1d8e599 100644
--- a/src/mirall/owncloudtheme.h
+++ b/src/mirall/owncloudtheme.h
@@ -31,7 +31,6 @@ public:
 
     QIcon   folderIcon( const QString& ) const;
     QIcon   trayFolderIcon( const QString& ) const Q_DECL_OVERRIDE;
-    QIcon   folderDisabledIcon() const Q_DECL_OVERRIDE;
     QIcon   applicationIcon() const Q_DECL_OVERRIDE;
 
     QVariant customMedia(CustomMediaType type) Q_DECL_OVERRIDE;
diff --git a/src/mirall/settingsdialog.cpp b/src/mirall/settingsdialog.cpp
index ff44af8..cc7cc99 100644
--- a/src/mirall/settingsdialog.cpp
+++ b/src/mirall/settingsdialog.cpp
@@ -14,7 +14,6 @@
 #include "settingsdialog.h"
 #include "ui_settingsdialog.h"
 
-#include "mirall/folderman.h"
 #include "mirall/theme.h"
 #include "mirall/generalsettings.h"
 #include "mirall/networksettings.h"
@@ -74,11 +73,8 @@ SettingsDialog::SettingsDialog(ownCloudGui *gui, QWidget *parent) :
     NetworkSettings *networkSettings = new NetworkSettings;
     _ui->stack->addWidget(networkSettings);
 
-    FolderMan *folderMan = FolderMan::instance();
-    connect( folderMan, SIGNAL(folderSyncStateChange(QString)),
-             this, SLOT(slotSyncStateChange(QString)));
-
     connect( _accountSettings, SIGNAL(folderChanged()), gui, SLOT(slotFoldersChanged()));
+    connect( _accountSettings, SIGNAL(accountIconChanged(QIcon)), SLOT(slotUpdateAccountIcon(QIcon)));
     connect( _accountSettings, SIGNAL(openFolderAlias(const QString&)),
              gui, SLOT(slotFolderOpenAction(QString)));
 
@@ -130,22 +126,7 @@ void SettingsDialog::addAccount(const QString &title, QWidget *widget)
     _accountItem->setSizeHint(QSize(0, 32));
     _ui->labelWidget->addItem(_accountItem);
     _ui->stack->addWidget(widget);
-    slotSyncStateChange();
-
-}
-
-void SettingsDialog::slotSyncStateChange(const QString& alias)
-{
-    FolderMan *folderMan = FolderMan::instance();
-    SyncResult state = folderMan->accountStatus(folderMan->map().values());
-    _accountItem->setIcon(Theme::instance()->syncStateIcon(state.status()));
-
-    if (!alias.isEmpty()) {
-        Folder *folder = folderMan->folder(alias);
-        if( folder ) {
-            _accountSettings->slotUpdateFolderState(folder);
-        }
-    }
+    _accountSettings->slotSyncStateChange();
 }
 
 void SettingsDialog::setGeneralErrors(const QStringList &errors)
@@ -168,6 +149,11 @@ void SettingsDialog::accept() {
     QDialog::accept();
 }
 
+void SettingsDialog::slotUpdateAccountIcon(const QIcon &icon)
+{
+    _accountItem->setIcon(icon);
+}
+
 void SettingsDialog::showActivityPage()
 {
     _ui->labelWidget->setCurrentRow(_protocolIdx);
diff --git a/src/mirall/settingsdialog.h b/src/mirall/settingsdialog.h
index fe82e77..1e60f6d 100644
--- a/src/mirall/settingsdialog.h
+++ b/src/mirall/settingsdialog.h
@@ -45,13 +45,15 @@ public:
     void setGeneralErrors( const QStringList& errors );
 
 public slots:
-    void slotSyncStateChange(const QString& alias = QString());
     void showActivityPage();
 
 protected:
     void reject() Q_DECL_OVERRIDE;
     void accept() Q_DECL_OVERRIDE;
 
+private slots:
+    void slotUpdateAccountIcon(const QIcon& icon);
+
 private:
     Ui::SettingsDialog *_ui;
     AccountSettings *_accountSettings;
diff --git a/src/mirall/syncresult.cpp b/src/mirall/syncresult.cpp
index b10a1a4..289b6a9 100644
--- a/src/mirall/syncresult.cpp
+++ b/src/mirall/syncresult.cpp
@@ -64,9 +64,6 @@ QString SyncResult::statusString() const
     case Problem:
         re = QLatin1String("Success, some files were ignored.");
         break;
-    case Unavailable:
-        re = QLatin1String("Not availabe");
-        break;
     case SyncAbortRequested:
         re = QLatin1String("Sync Request aborted by user");
         break;
diff --git a/src/mirall/syncresult.h b/src/mirall/syncresult.h
index 3350eda..229aac1 100644
--- a/src/mirall/syncresult.h
+++ b/src/mirall/syncresult.h
@@ -39,8 +39,7 @@ public:
       Problem,
       Error,
       SetupError,
-      Paused,
-      Unavailable
+      Paused
     };
 
     SyncResult();
diff --git a/src/mirall/theme.cpp b/src/mirall/theme.cpp
index cd80494..f63a8bf 100644
--- a/src/mirall/theme.cpp
+++ b/src/mirall/theme.cpp
@@ -68,9 +68,6 @@ QString Theme::statusHeaderText( SyncResult::Status status ) const
     case SyncResult::SetupError:
         resultStr = QCoreApplication::translate("theme", "Setup Error" );
         break;
-    case SyncResult::Unavailable:
-        resultStr = QCoreApplication::translate("theme", "The server is currently unavailable" );
-        break;
     case SyncResult::SyncPrepare:
         resultStr = QCoreApplication::translate("theme", "Preparing to sync" );
         break;
@@ -268,9 +265,6 @@ QIcon Theme::syncStateIcon( SyncResult::Status status, bool sysTray ) const
     switch( status ) {
     case SyncResult::Undefined:
     case SyncResult::NotYetStarted:
-    case SyncResult::Unavailable:
-        statusIcon = QLatin1String("state-offline");
-        break;
     case SyncResult::SyncRunning:
         statusIcon = QLatin1String("state-sync");
         break;
@@ -287,7 +281,7 @@ QIcon Theme::syncStateIcon( SyncResult::Status status, bool sysTray ) const
         break;
     case SyncResult::Error:
     case SyncResult::SetupError:
-        statusIcon = QLatin1String("state-error");  // FIXME: Use state-problem once we have an icon.
+        // FIXME: Use state-problem once we have an icon.
     default:
         statusIcon = QLatin1String("state-error");
     }
@@ -295,6 +289,16 @@ QIcon Theme::syncStateIcon( SyncResult::Status status, bool sysTray ) const
     return themeIcon( statusIcon, sysTray );
 }
 
+QIcon Theme::folderDisabledIcon( ) const
+{
+    return themeIcon( QLatin1String("state-pause") );
+}
+
+QIcon Theme::folderOfflineIcon(bool systray) const
+{
+    return themeIcon( QLatin1String("state-offline"), systray );
+}
+
 QColor Theme::wizardHeaderTitleColor() const
 {
     return qApp->palette().text().color();
diff --git a/src/mirall/theme.h b/src/mirall/theme.h
index 7f8166e..3c1d69c 100644
--- a/src/mirall/theme.h
+++ b/src/mirall/theme.h
@@ -90,7 +90,8 @@ public:
       */
     virtual QIcon   syncStateIcon( SyncResult::Status, bool sysTray = false ) const;
 
-    virtual QIcon   folderDisabledIcon() const = 0;
+    virtual QIcon   folderDisabledIcon() const;
+    virtual QIcon   folderOfflineIcon(bool systray = false) const;
     virtual QIcon   applicationIcon() const = 0;
 #endif
 

-- 
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