mirror of
https://github.com/nextcloud/desktop.git
synced 2024-10-27 23:17:13 +03:00
FolderMan: Make folderSyncStateChange() signal reliable. #3354
This commit is contained in:
parent
f4c816f378
commit
10aaf18129
3 changed files with 34 additions and 20 deletions
|
@ -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();
|
||||
|
|
|
@ -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 ) {
|
||||
folderDefinition.paused = paused;
|
||||
|
||||
folder = addFolderInternal(folderDefinition);
|
||||
if (folder) {
|
||||
folder->setAccountState(accountState);
|
||||
|
||||
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)));
|
||||
|
||||
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;
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
Loading…
Reference in a new issue