[Pkg-owncloud-commits] [owncloud-client] 200/498: FolderMan: Make folderSyncStateChange() signal reliable. #3354
Sandro Knauß
hefee-guest at moszumanska.debian.org
Tue Aug 11 14:48:50 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 10aaf18129a8da2c2789f2a09fb706b337b945c7
Author: Christian Kamm <kamm at incasoftware.de>
Date: Wed Jun 17 15:55:48 2015 +0200
FolderMan: Make folderSyncStateChange() signal reliable. #3354
---
src/gui/folder.cpp | 6 +++++-
src/gui/folderman.cpp | 41 +++++++++++++++++++++++------------------
src/gui/folderman.h | 7 ++++++-
3 files changed, 34 insertions(+), 20 deletions(-)
diff --git a/src/gui/folder.cpp b/src/gui/folder.cpp
index 6a4e9a9..06e0086 100644
--- a/src/gui/folder.cpp
+++ b/src/gui/folder.cpp
@@ -74,7 +74,11 @@ Folder::Folder(const FolderDefinition& definition,
_timeSinceLastSyncStart.start();
_timeSinceLastSyncDone.start();
- _syncResult.setStatus( SyncResult::NotYetStarted );
+ SyncResult::Status status = SyncResult::NotYetStarted;
+ if (definition.paused) {
+ status = SyncResult::Paused;
+ }
+ _syncResult.setStatus(status);
// check if the local path exists
checkLocalPath();
diff --git a/src/gui/folderman.cpp b/src/gui/folderman.cpp
index 86446d8..6ed55f8 100644
--- a/src/gui/folderman.cpp
+++ b/src/gui/folderman.cpp
@@ -107,6 +107,15 @@ void FolderMan::unloadFolder( Folder *f )
_folderWatchers.remove(f->alias());
}
_folderMap.remove( f->alias() );
+
+ disconnect(f, SIGNAL(scheduleToSync(Folder*)),
+ this, SLOT(slotScheduleSync(Folder*)));
+ disconnect(f, SIGNAL(syncStarted()),
+ this, SLOT(slotFolderSyncStarted()));
+ disconnect(f, SIGNAL(syncFinished(SyncResult)),
+ this, SLOT(slotFolderSyncFinished(SyncResult)));
+ disconnect(f, SIGNAL(syncStateChange()),
+ this, SLOT(slotForwardFolderSyncStateChange()));
}
int FolderMan::unloadAndDeleteAllFolders()
@@ -389,22 +398,12 @@ Folder* FolderMan::setupFolderFromOldConfigFile(const QString &file, AccountStat
folderDefinition.alias = alias;
folderDefinition.localPath = path;
folderDefinition.targetPath = targetPath;
- folder = new Folder(folderDefinition, this );
- if( folder ) {
- folder->setAccountState(accountState);
+ folderDefinition.paused = paused;
- qDebug() << "Adding folder to Folder Map " << folder;
- _folderMap[alias] = folder;
- if (paused) {
- folder->setSyncPaused(paused);
- _disabledFolders.insert(folder);
- }
-
- connect(folder, SIGNAL(scheduleToSync(Folder*)), SLOT(slotScheduleSync(Folder*)));
- connect(folder, SIGNAL(syncStarted()), SLOT(slotFolderSyncStarted()));
- connect(folder, SIGNAL(syncFinished(SyncResult)), SLOT(slotFolderSyncFinished(SyncResult)));
+ folder = addFolderInternal(folderDefinition);
+ if (folder) {
+ folder->setAccountState(accountState);
- registerFolderMonitor(folder);
QStringList blackList = settings.value( QLatin1String("blackList")).toStringList();
if (!blackList.empty()) {
//migrate settings
@@ -690,6 +689,13 @@ void FolderMan::slotRemoveFoldersForAccount(AccountState* accountState)
}
}
+void FolderMan::slotForwardFolderSyncStateChange()
+{
+ if (Folder* f = qobject_cast<Folder*>(sender())) {
+ emit folderSyncStateChange(f);
+ }
+}
+
void FolderMan::slotFolderSyncStarted( )
{
qDebug() << ">===================================== sync started for " << _currentSyncFolder->alias();
@@ -731,16 +737,15 @@ Folder* FolderMan::addFolderInternal(const FolderDefinition& folderDefinition)
qDebug() << "Adding folder to Folder Map " << folder;
_folderMap[folder->alias()] = folder;
- if (folderDefinition.paused) {
- folder->setSyncPaused(true);
+ if (folder->syncPaused()) {
_disabledFolders.insert(folder);
}
- /* Use a signal mapper to connect the signals to the alias */
+ // See matching disconnects in unloadFolder().
connect(folder, SIGNAL(scheduleToSync(Folder*)), SLOT(slotScheduleSync(Folder*)));
connect(folder, SIGNAL(syncStarted()), SLOT(slotFolderSyncStarted()));
connect(folder, SIGNAL(syncFinished(SyncResult)), SLOT(slotFolderSyncFinished(SyncResult)));
-
+ connect(folder, SIGNAL(syncStateChange()), SLOT(slotForwardFolderSyncStateChange()));
registerFolderMonitor(folder);
return folder;
diff --git a/src/gui/folderman.h b/src/gui/folderman.h
index 6102bc7..6348728 100644
--- a/src/gui/folderman.h
+++ b/src/gui/folderman.h
@@ -135,8 +135,13 @@ private slots:
void slotRemoveFoldersForAccount(AccountState* accountState);
+ // Wraps the Folder::syncStateChange() signal into the
+ // FolderMan::folderSyncStateChange(Folder*) signal.
+ void slotForwardFolderSyncStateChange();
+
private:
- /** Adds a folder for an account, does not add it to the account settings.
+ /** Adds a new folder, does not add it to the account settings and
+ * does not set an account on the new folder.
*/
Folder* addFolderInternal(const FolderDefinition& folderDefinition);
--
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