[Pkg-owncloud-commits] [owncloud-client] 89/498: FolderMan: fix some signal-slot broken connection

Sandro Knauß hefee-guest at moszumanska.debian.org
Tue Aug 11 14:48:38 UTC 2015


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 de9770f52a037fbf3d233f8dd455906fa4cff77e
Author: Olivier Goffart <ogoffart at woboq.com>
Date:   Tue May 12 15:50:38 2015 +0200

    FolderMan: fix some signal-slot broken connection
    
    In many cases the alias was changed to a Folder pointer
---
 src/gui/folderman.cpp         | 24 ++++++++++++------------
 src/gui/folderman.h           |  2 +-
 src/gui/settingsdialogmac.cpp |  9 +++------
 src/gui/settingsdialogmac.h   |  2 +-
 src/gui/socketapi.cpp         |  7 +++----
 src/gui/socketapi.h           |  2 +-
 6 files changed, 21 insertions(+), 25 deletions(-)

diff --git a/src/gui/folderman.cpp b/src/gui/folderman.cpp
index 2587704..0135e1e 100644
--- a/src/gui/folderman.cpp
+++ b/src/gui/folderman.cpp
@@ -55,10 +55,6 @@ FolderMan::FolderMan(QObject *parent) :
     QObject(parent),
     _syncEnabled( true )
 {
-    _folderChangeSignalMapper = new QSignalMapper(this);
-    connect(_folderChangeSignalMapper, SIGNAL(mapped(const QString &)),
-            this, SIGNAL(folderSyncStateChange(const QString &)));
-
     Q_ASSERT(!_instance);
     _instance = this;
 
@@ -400,14 +396,11 @@ Folder* FolderMan::setupFolderFromConfigFile(const QString &file) {
         _disabledFolders.insert(folder);
     }
 
-    /* Use a signal mapper to connect the signals to the alias */
     connect(folder, SIGNAL(scheduleToSync(Folder*)), SLOT(slotScheduleSync(Folder*)));
-    connect(folder, SIGNAL(syncStateChange()), _folderChangeSignalMapper, SLOT(map()));
+    connect(folder, SIGNAL(syncStateChange()), this, SLOT(slotFolderSyncStateChanged()));
     connect(folder, SIGNAL(syncStarted()), SLOT(slotFolderSyncStarted()));
     connect(folder, SIGNAL(syncFinished(SyncResult)), SLOT(slotFolderSyncFinished(SyncResult)));
 
-    _folderChangeSignalMapper->setMapping( folder, folder->alias() );
-
     registerFolderMonitor(folder);
     return folder;
 }
@@ -478,7 +471,7 @@ void FolderMan::slotScheduleSync( Folder *f )
         // We want the SocketAPI to already now update so that it can show the EVAL icon
         // for files/folders. Only do this when not syncing, else we might get a lot
         // of those notifications.
-        _socketApi->slotUpdateFolderView(alias);
+        _socketApi->slotUpdateFolderView(f);
     }
 
     qDebug() << "Schedule folder " << alias << " to sync!";
@@ -489,7 +482,7 @@ void FolderMan::slotScheduleSync( Folder *f )
         } else {
             qDebug() << "Folder is not enabled, not scheduled!";
             if( _socketApi ) {
-                _socketApi->slotUpdateFolderView(f->alias());
+                _socketApi->slotUpdateFolderView(f);
             }
             return;
         }
@@ -706,6 +699,14 @@ void FolderMan::slotFolderSyncFinished( const SyncResult& )
     startScheduledSyncSoon();
 }
 
+void FolderMan::slotFolderSyncStateChanged()
+{
+    auto f = qobject_cast<Folder *>(sender());
+    Q_ASSERT(f);
+    emit folderSyncStateChange(f);
+}
+
+
 Folder* FolderMan::addFolder(AccountState* accountState, const FolderDefinition& folderDefinition)
 {
     if (!ensureJournalGone(folderDefinition.localPath)) {
@@ -730,11 +731,10 @@ Folder* FolderMan::addFolderInternal(AccountState* accountState, const FolderDef
 
     /* Use a signal mapper to connect the signals to the alias */
     connect(folder, SIGNAL(scheduleToSync(Folder*)), SLOT(slotScheduleSync(Folder*)));
-    connect(folder, SIGNAL(syncStateChange()), _folderChangeSignalMapper, SLOT(map()));
+    connect(folder, SIGNAL(syncStateChange()), this, SLOT(slotFolderSyncStateChanged()));
     connect(folder, SIGNAL(syncStarted()), SLOT(slotFolderSyncStarted()));
     connect(folder, SIGNAL(syncFinished(SyncResult)), SLOT(slotFolderSyncFinished(SyncResult)));
 
-    _folderChangeSignalMapper->setMapping( folder, folder->alias() );
 
     registerFolderMonitor(folder);
     return folder;
diff --git a/src/gui/folderman.h b/src/gui/folderman.h
index 959f952..9b6ff4e 100644
--- a/src/gui/folderman.h
+++ b/src/gui/folderman.h
@@ -131,6 +131,7 @@ private slots:
     void slotEtagPollTimerTimeout();
 
     void slotRemoveFoldersForAccount(AccountState* accountState);
+    void slotFolderSyncStateChanged();
 
 private:
     /** Adds a folder for an account, does not add it to the account settings.
@@ -153,7 +154,6 @@ private:
     QSet<Folder*>  _disabledFolders;
     Folder::Map    _folderMap;
     QString        _folderConfigPath;
-    QSignalMapper *_folderChangeSignalMapper;
     Folder        *_currentSyncFolder = 0;
     QPointer<Folder> _lastSyncFolder;
     bool           _syncEnabled;
diff --git a/src/gui/settingsdialogmac.cpp b/src/gui/settingsdialogmac.cpp
index beb2207..211c38e 100644
--- a/src/gui/settingsdialogmac.cpp
+++ b/src/gui/settingsdialogmac.cpp
@@ -82,8 +82,8 @@ SettingsDialogMac::SettingsDialogMac(ownCloudGui *gui, QWidget *parent)
     addPreferencesPanel(networkIcon, tr("Network"), networkSettings);
 
     FolderMan *folderMan = FolderMan::instance();
-    connect( folderMan, SIGNAL(folderSyncStateChange(QString)),
-             this, SLOT(slotSyncStateChange(QString)));
+    connect( folderMan, SIGNAL(folderSyncStateChange(Folder*)),
+             this, SLOT(slotSyncStateChange(Folder*)));
 
     connect( _accountSettings, SIGNAL(folderChanged()), gui, SLOT(slotFoldersChanged()));
     connect( _accountSettings, SIGNAL(openFolderAlias(const QString&)),
@@ -101,11 +101,8 @@ SettingsDialogMac::SettingsDialogMac(ownCloudGui *gui, QWidget *parent)
     cfg.restoreGeometry(this);
 }
 
-void SettingsDialogMac::slotSyncStateChange(const QString& alias)
+void SettingsDialogMac::slotSyncStateChange(Folder *folder)
 {
-    FolderMan *folderMan = FolderMan::instance();
-
-    Folder *folder = folderMan->folder(alias);
     if( folder ) {
         _accountSettings->slotUpdateFolderState(folder);
     }
diff --git a/src/gui/settingsdialogmac.h b/src/gui/settingsdialogmac.h
index c4876e1..a98c4ce 100644
--- a/src/gui/settingsdialogmac.h
+++ b/src/gui/settingsdialogmac.h
@@ -39,7 +39,7 @@ public:
     void setGeneralErrors( const QStringList& errors );
 
 public slots:
-    void slotSyncStateChange(const QString& alias);
+    void slotSyncStateChange(Folder *);
     void showActivityPage();
 
 private:
diff --git a/src/gui/socketapi.cpp b/src/gui/socketapi.cpp
index 1a7f641..0aa0d9b 100644
--- a/src/gui/socketapi.cpp
+++ b/src/gui/socketapi.cpp
@@ -127,7 +127,7 @@ SocketApi::SocketApi(QObject* parent)
     connect(&_localServer, SIGNAL(newConnection()), this, SLOT(slotNewConnection()));
 
     // folder watcher
-    connect(FolderMan::instance(), SIGNAL(folderSyncStateChange(QString)), this, SLOT(slotUpdateFolderView(QString)));
+    connect(FolderMan::instance(), SIGNAL(folderSyncStateChange(Folder*)), this, SLOT(slotUpdateFolderView(Folder*)));
     connect(ProgressDispatcher::instance(), SIGNAL(jobCompleted(QString, const SyncFileItem &)),
             SLOT(slotJobCompleted(QString, const SyncFileItem &)));
     connect(ProgressDispatcher::instance(), SIGNAL(syncItemDiscovered(QString, const SyncFileItem &)),
@@ -261,13 +261,12 @@ void SocketApi::slotUnregisterPath( const QString& alias )
     }
 }
 
-void SocketApi::slotUpdateFolderView(const QString& alias)
+void SocketApi::slotUpdateFolderView(Folder *f)
 {
     if (_listeners.isEmpty()) {
         return;
     }
 
-    Folder *f = FolderMan::instance()->folder(alias);
     if (f) {
         // do only send UPDATE_VIEW for a couple of status
         if( f->syncResult().status() == SyncResult::SyncPrepare ||
@@ -282,7 +281,7 @@ void SocketApi::slotUpdateFolderView(const QString& alias)
 
             broadcastMessage(QLatin1String("UPDATE_VIEW"), f->path() );
         } else {
-            qDebug() << "Not sending UPDATE_VIEW for" << alias << "because status() is" << f->syncResult().status();
+            qDebug() << "Not sending UPDATE_VIEW for" << f->alias() << "because status() is" << f->syncResult().status();
         }
     }
 }
diff --git a/src/gui/socketapi.h b/src/gui/socketapi.h
index 97f7b9a..3441b54 100644
--- a/src/gui/socketapi.h
+++ b/src/gui/socketapi.h
@@ -49,7 +49,7 @@ public:
     virtual ~SocketApi();
 
 public slots:
-    void slotUpdateFolderView(const QString&);
+    void slotUpdateFolderView(Folder *f);
     void slotUnregisterPath( const QString& alias );
     void slotRegisterPath( const QString& alias );
     void slotReadExcludes();

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