int FolderMan::setupFolders() { qDebug() << "* Setup folders from " << _folderConfigPath; unloadAllFolders(); QDir dir( _folderConfigPath ); dir.setFilter(QDir::Files); QStringList list = dir.entryList(); foreach ( const QString& alias, list ) { Folder *f = setupFolderFromConfigFile( alias ); if( f ) { registerFolderMonitor(f); slotScheduleSync(alias); emit( folderSyncStateChange( f->alias() ) ); } }
int FolderMan::setupFolders() { unloadAndDeleteAllFolders(); auto settings = Account::settingsWithGroup(QLatin1String("Accounts")); const auto accountsWithSettings = settings->childGroups(); if (accountsWithSettings.isEmpty()) { int r = setupFoldersMigration(); if (r > 0) { AccountManager::instance()->save(false); // don't save credentials, they had not been loaded from keychain } return r; } qDebug() << "* Setup folders from settings file"; foreach (const auto& account, AccountManager::instance()->accounts()) { const auto id = account->account()->id(); if (!accountsWithSettings.contains(id)) { continue; } settings->beginGroup(id); settings->beginGroup(QLatin1String("Folders")); foreach (const auto& folderAlias, settings->childGroups()) { FolderDefinition folderDefinition; if (FolderDefinition::load(*settings, folderAlias, &folderDefinition)) { Folder* f = addFolderInternal(folderDefinition); if (f) { f->setAccountState( account.data() ); slotScheduleSync(f); emit folderSyncStateChange(f); } } } settings->endGroup(); // Folders settings->endGroup(); // <account> } emit folderListChanged(_folderMap); return _folderMap.size(); }
int FolderMan::setupFoldersMigration() { ConfigFile cfg; QDir storageDir(cfg.configPath()); storageDir.mkpath(QLatin1String("folders")); _folderConfigPath = cfg.configPath() + QLatin1String("folders"); qDebug() << "* Setup folders from " << _folderConfigPath << "(migration)"; QDir dir( _folderConfigPath ); //We need to include hidden files just in case the alias starts with '.' dir.setFilter(QDir::Files | QDir::Hidden); QStringList list = dir.entryList(); // Normally there should be only one account when migrating. AccountState* accountState = AccountManager::instance()->accounts().value(0).data(); foreach ( const QString& alias, list ) { Folder *f = setupFolderFromOldConfigFile( alias, accountState ); if( f ) { slotScheduleSync(f); emit folderSyncStateChange(f); } }