diff options
author | Klaas Freitag <freitag@owncloud.com> | 2013-02-10 14:00:22 +0400 |
---|---|---|
committer | Klaas Freitag <freitag@owncloud.com> | 2013-02-10 14:02:38 +0400 |
commit | f62626e3eb2751cdff07ae04ee1e98fe87dfb669 (patch) | |
tree | db9b868829046f43e03b48dae109fffa5f07714e | |
parent | 28fcd75494038379e5a137065a892ba64cde498c (diff) |
Delete existing folders properly before adding new ones.
-rw-r--r-- | src/mirall/folderman.cpp | 45 |
1 files changed, 24 insertions, 21 deletions
diff --git a/src/mirall/folderman.cpp b/src/mirall/folderman.cpp index 7c33fbfa4..384a39af0 100644 --- a/src/mirall/folderman.cpp +++ b/src/mirall/folderman.cpp @@ -35,7 +35,8 @@ namespace Mirall { FolderMan::FolderMan(QObject *parent) : QObject(parent), - _customPollInterval(0) + _customPollInterval(0), + _syncEnabled( true ) { // if QDir::mkpath would not be so stupid, I would not need to have this // duplication of folderConfigPath() here @@ -85,7 +86,17 @@ int FolderMan::setupKnownFolders() { qDebug() << "* Setup folders from " << _folderConfigPath; - _folderMap.clear(); // FIXME: check if delete of folder structure happens + // first terminate sync jobs. + if( ! _currentSyncFolder.isEmpty() ) + terminateSyncProcess(_currentSyncFolder); + + // clear the list of existing folders. + Folder::MapIterator i(_folderMap); + while (i.hasNext()) { + i.next(); + delete _folderMap.take( i.key() ); + } + QDir dir( _folderConfigPath ); dir.setFilter(QDir::Files); @@ -281,25 +292,6 @@ Folder* FolderMan::setupFolderFromConfigFile(const QString &file) { return folder; } -void FolderMan::disableFoldersWithRestore() -{ - _folderEnabledMap.clear(); - foreach( Folder *f, _folderMap ) { - // store the enabled state, then make sure it is disabled - _folderEnabledMap.insert(f->alias(), f->syncEnabled()); - f->setSyncEnabled(false); - } -} - -void FolderMan::restoreEnabledFolders() -{ - foreach( Folder *f, _folderMap ) { - if (_folderEnabledMap.contains( f->alias() )) { - f->setSyncEnabled( _folderEnabledMap.value( f->alias() ) ); - } - } -} - void FolderMan::slotEnableFolder( const QString& alias, bool enable ) { if( ! _folderMap.contains( alias ) ) { @@ -379,6 +371,12 @@ void FolderMan::slotScheduleSync( const QString& alias ) } } +void FolderMan::setSyncEnabled( bool enabled ) +{ + _syncEnabled = enabled; + slotScheduleFolderSync(); +} + /* * slot to start folder syncs. * It is either called from the slot where folders enqueue themselves for @@ -391,6 +389,11 @@ void FolderMan::slotScheduleFolderSync() return; } + if( ! _syncEnabled ) { + qDebug() << "FolderMan: Syncing is disabled, no scheduling."; + return; + } + qDebug() << "XX slotScheduleFolderSync: folderQueue size: " << _scheduleQueue.count(); if( ! _scheduleQueue.isEmpty() ) { const QString alias = _scheduleQueue.takeFirst(); |