[Pkg-owncloud-commits] [owncloud-client] 50/498: Folders: Store inside account config.
Sandro Knauß
hefee-guest at moszumanska.debian.org
Tue Aug 11 14:48:33 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 27159104a947de7e388dcd16cae7a8c61ba44982
Author: Christian Kamm <kamm at incasoftware.de>
Date: Fri Apr 24 10:18:33 2015 +0200
Folders: Store inside account config.
---
src/gui/accountmanager.cpp | 51 ++++++++-------
src/gui/accountmanager.h | 4 +-
src/gui/accountsettings.cpp | 15 ++---
src/gui/folder.cpp | 95 ++++++++++++++++++---------
src/gui/folder.h | 50 ++++++++++++---
src/gui/folderman.cpp | 139 ++++++++++++++++++++++++++--------------
src/gui/folderman.h | 20 +++---
src/gui/folderstatusmodel.cpp | 4 --
src/gui/owncloudsetupwizard.cpp | 10 ++-
src/gui/selectivesyncdialog.cpp | 4 --
src/libsync/account.cpp | 7 ++
src/libsync/account.h | 3 +
12 files changed, 260 insertions(+), 142 deletions(-)
diff --git a/src/gui/accountmanager.cpp b/src/gui/accountmanager.cpp
index 3be3c2c..5d84ebf 100644
--- a/src/gui/accountmanager.cpp
+++ b/src/gui/accountmanager.cpp
@@ -27,6 +27,8 @@ static const char authTypeC[] = "authType";
static const char userC[] = "user";
static const char httpUserC[] = "http_user";
static const char caCertsKeyC[] = "CaCertificates";
+static const char accountsC[] = "Accounts";
+static const char foldersC[] = "Folders";
}
@@ -40,7 +42,7 @@ AccountManager *AccountManager::instance()
bool AccountManager::restore()
{
- QScopedPointer<QSettings> settings(Account::settingsWithGroup("Accounts"));
+ QScopedPointer<QSettings> settings(Account::settingsWithGroup(QLatin1String(accountsC)));
// If there are no accounts, check the old format.
if (settings->childGroups().isEmpty()) {
@@ -49,7 +51,7 @@ bool AccountManager::restore()
foreach (const auto& accountId, settings->childGroups()) {
settings->beginGroup(accountId);
- if (auto acc = load(settings)) {
+ if (auto acc = load(*settings)) {
acc->_id = accountId;
addAccount(acc);
}
@@ -106,7 +108,7 @@ bool AccountManager::restoreFromLegacySettings()
// Try to load the single account.
if (!settings->childKeys().isEmpty()) {
- if (auto acc = load(settings)) {
+ if (auto acc = load(*settings)) {
if (migratedCreds) {
acc->setMigrated(true);
}
@@ -119,41 +121,41 @@ bool AccountManager::restoreFromLegacySettings()
void AccountManager::save()
{
- QScopedPointer<QSettings> settings(Account::settingsWithGroup("Accounts"));
+ QScopedPointer<QSettings> settings(Account::settingsWithGroup(QLatin1String(accountsC)));
foreach (const auto &acc, _accounts) {
settings->beginGroup(acc->account()->id());
- save(acc->account(), settings);
+ save(acc->account(), *settings);
settings->endGroup();
}
}
-void AccountManager::save(const AccountPtr& acc, QScopedPointer<QSettings>& settings)
+void AccountManager::save(const AccountPtr& acc, QSettings& settings)
{
- settings->setValue(QLatin1String(urlC), acc->_url.toString());
+ settings.setValue(QLatin1String(urlC), acc->_url.toString());
if (acc->_credentials) {
acc->_credentials->persist();
Q_FOREACH(QString key, acc->_settingsMap.keys()) {
- settings->setValue(key, acc->_settingsMap.value(key));
+ settings.setValue(key, acc->_settingsMap.value(key));
}
- settings->setValue(QLatin1String(authTypeC), acc->_credentials->authType());
+ settings.setValue(QLatin1String(authTypeC), acc->_credentials->authType());
// HACK: Save http_user also as user
if (acc->_settingsMap.contains(httpUserC))
- settings->setValue(userC, acc->_settingsMap.value(httpUserC));
+ settings.setValue(userC, acc->_settingsMap.value(httpUserC));
}
- settings->sync();
+ settings.sync();
// Save accepted certificates.
- settings->beginGroup(QLatin1String("General"));
+ settings.beginGroup(QLatin1String("General"));
qDebug() << "Saving " << acc->approvedCerts().count() << " unknown certs.";
QByteArray certs;
Q_FOREACH( const QSslCertificate& cert, acc->approvedCerts() ) {
certs += cert.toPem() + '\n';
}
if (!certs.isEmpty()) {
- settings->setValue( QLatin1String(caCertsKeyC), certs );
+ settings.setValue( QLatin1String(caCertsKeyC), certs );
}
- settings->endGroup();
+ settings.endGroup();
// Save cookies.
if (acc->_am) {
@@ -165,28 +167,29 @@ void AccountManager::save(const AccountPtr& acc, QScopedPointer<QSettings>& sett
}
}
-AccountPtr AccountManager::load(const QScopedPointer<QSettings>& settings)
+AccountPtr AccountManager::load(QSettings& settings)
{
auto acc = Account::create();
- acc->setUrl(settings->value(QLatin1String(urlC)).toUrl());
+ acc->setUrl(settings.value(QLatin1String(urlC)).toUrl());
// We want to only restore settings for that auth type and the user value
- acc->_settingsMap.insert(QLatin1String(userC), settings->value(userC));
- QString authTypePrefix = settings->value(authTypeC).toString() + "_";
- Q_FOREACH(QString key, settings->childKeys()) {
+ acc->_settingsMap.insert(QLatin1String(userC), settings.value(userC));
+ QString authTypePrefix = settings.value(authTypeC).toString() + "_";
+ Q_FOREACH(QString key, settings.childKeys()) {
if (!key.startsWith(authTypePrefix))
continue;
- acc->_settingsMap.insert(key, settings->value(key));
+ acc->_settingsMap.insert(key, settings.value(key));
}
- acc->setCredentials(CredentialsFactory::create(settings->value(QLatin1String(authTypeC)).toString()));
+ acc->setCredentials(CredentialsFactory::create(settings.value(QLatin1String(authTypeC)).toString()));
// now the cert, it is in the general group
- settings->beginGroup(QLatin1String("General"));
- acc->setApprovedCerts(QSslCertificate::fromData(settings->value(caCertsKeyC).toByteArray()));
+ settings.beginGroup(QLatin1String("General"));
+ acc->setApprovedCerts(QSslCertificate::fromData(settings.value(caCertsKeyC).toByteArray()));
acc->setSslErrorHandler(new SslDialogErrorHandler);
- settings->endGroup();
+ settings.endGroup();
+
return acc;
}
diff --git a/src/gui/accountmanager.h b/src/gui/accountmanager.h
index 228e54c..44ef48f 100644
--- a/src/gui/accountmanager.h
+++ b/src/gui/accountmanager.h
@@ -51,8 +51,8 @@ public:
QList<AccountStatePtr> accounts() { return _accounts; }
private:
- void save(const AccountPtr& account, QScopedPointer<QSettings>& settings);
- AccountPtr load(const QScopedPointer<QSettings>& settings);
+ void save(const AccountPtr& account, QSettings& settings);
+ AccountPtr load(QSettings& settings);
bool restoreFromLegacySettings();
bool isAccountIdAvailable(const QString& id) const;
diff --git a/src/gui/accountsettings.cpp b/src/gui/accountsettings.cpp
index 8bcf52c..4a8be3b 100644
--- a/src/gui/accountsettings.cpp
+++ b/src/gui/accountsettings.cpp
@@ -184,16 +184,13 @@ void AccountSettings::slotFolderWizardAccepted()
qDebug() << "* Folder wizard completed";
- QString alias = folderWizard->field(QLatin1String("alias")).toString();
- QString sourceFolder = folderWizard->field(QLatin1String("sourceFolder")).toString();
- QString targetPath = folderWizard->property("targetPath").toString();
- QStringList selectiveSyncBlackList
- = folderWizard->property("selectiveSyncBlackList").toStringList();
+ FolderDefinition definition;
+ definition.alias = folderWizard->field(QLatin1String("alias")).toString();
+ definition.localPath = folderWizard->field(QLatin1String("sourceFolder")).toString();
+ definition.targetPath = folderWizard->property("targetPath").toString();
+ definition.selectiveSyncBlackList = folderWizard->property("selectiveSyncBlackList").toStringList();
- if (!folderMan->addFolderDefinition(alias, sourceFolder, targetPath, selectiveSyncBlackList))
- return;
-
- Folder *f = folderMan->setupFolderFromConfigFile( alias );
+ Folder *f = folderMan->addFolder(_accountState, definition);
folderMan->setSyncEnabled(true);
if( f ) {
folderMan->slotScheduleAllFolders();
diff --git a/src/gui/folder.cpp b/src/gui/folder.cpp
index 0b37518..9a47a10 100644
--- a/src/gui/folder.cpp
+++ b/src/gui/folder.cpp
@@ -38,6 +38,7 @@
#include <QTimer>
#include <QUrl>
#include <QDir>
+#include <QSettings>
#include <QMessageBox>
#include <QPushButton>
@@ -54,16 +55,16 @@ static void csyncLogCatcher(int /*verbosity*/,
Folder::Folder(AccountState* accountState,
- const QString& alias,
- const QString& path,
- const QString& secondPath,
+ const FolderDefinition& definition,
QObject* parent)
: QObject(parent)
, _accountState(accountState)
- , _path(path)
- , _remotePath(secondPath)
- , _alias(alias)
- , _paused(false)
+ , _definition(definition)
+ , _alias(_definition.alias)
+ , _path(_definition.localPath)
+ , _remotePath(_definition.targetPath)
+ , _paused(_definition.paused)
+ , _selectiveSyncBlackList(_definition.selectiveSyncBlackList)
, _csyncError(false)
, _csyncUnavail(false)
, _wipeDb(false)
@@ -72,7 +73,7 @@ Folder::Folder(AccountState* accountState,
, _forceSyncOnPollTimeout(false)
, _consecutiveFailingSyncs(0)
, _consecutiveFollowUpSyncs(0)
- , _journal(path)
+ , _journal(_path)
, _csync_ctx(0)
{
qsrand(QTime::currentTime().msec());
@@ -84,7 +85,7 @@ Folder::Folder(AccountState* accountState,
// check if the local path exists
checkLocalPath();
- _syncResult.setFolder(alias);
+ _syncResult.setFolder(_alias);
}
bool Folder::init()
@@ -220,16 +221,21 @@ bool Folder::syncPaused() const
void Folder::setSyncPaused( bool paused )
{
- _paused = paused;
-
- if( !paused ) {
- // qDebug() << "Syncing enabled on folder " << name();
- } else {
- // do not stop or start the watcher here, that is done internally by
- // folder class. Even if the watcher fires, the folder does not
- // schedule itself because it checks the var. _enabled before.
- setSyncState(SyncResult::Paused);
- }
+ const bool oldPaused = _paused;
+ _paused = paused;
+
+ if (_paused != oldPaused) {
+ saveToSettings();
+ }
+
+ if( !paused ) {
+ // qDebug() << "Syncing enabled on folder " << name();
+ } else {
+ // do not stop or start the watcher here, that is done internally by
+ // folder class. Even if the watcher fires, the folder does not
+ // schedule itself because it checks the var. _enabled before.
+ setSyncState(SyncResult::Paused);
+ }
}
void Folder::setSyncState(SyncResult::Status state)
@@ -567,16 +573,6 @@ void Folder::slotWatchedPathChanged(const QString& path)
}
}
-void Folder::setConfigFile( const QString& file )
-{
- _configFile = file;
-}
-
-QString Folder::configFile()
-{
- return _configFile;
-}
-
static void addErroredSyncItemPathsToList(const SyncFileItemVector& items, QSet<QString>* set) {
Q_FOREACH(const SyncFileItem &item, items) {
if (item.hasErrorStatus()) {
@@ -640,6 +636,20 @@ bool Folder::estimateState(QString fn, csync_ftw_type_e t, SyncFileStatus* s)
return false;
}
+void Folder::saveToSettings() const
+{
+ QScopedPointer<QSettings> settings(_accountState->account()->settings());
+ settings->beginGroup(QLatin1String("Folders"));
+ FolderDefinition::save(*settings, _definition);
+}
+
+void Folder::removeFromSettings() const
+{
+ QScopedPointer<QSettings> settings(_accountState->account()->settings());
+ settings->beginGroup(QLatin1String("Folders"));
+ settings->remove(_definition.alias);
+}
+
void Folder::watcherSlot(QString fn)
{
// FIXME: On OS X we could not do this "if" since on OS X the file watcher ignores events for ourselves
@@ -847,6 +857,7 @@ void Folder::setSelectiveSyncBlackList(const QStringList& blackList)
_selectiveSyncBlackList[i].append(QLatin1Char('/'));
}
}
+ saveToSettings();
}
@@ -1020,5 +1031,31 @@ void Folder::slotAboutToRemoveAllFiles(SyncFileItem::Direction, bool *cancel)
QTimer::singleShot(50, this, SLOT(slotRunEtagJob()));
}
}
+
+
+
+void FolderDefinition::save(QSettings& settings, const FolderDefinition& folder)
+{
+ settings.beginGroup(folder.alias);
+ settings.setValue(QLatin1String("localPath"), folder.localPath);
+ settings.setValue(QLatin1String("targetPath"), folder.targetPath);
+ settings.setValue(QLatin1String("blackList"), folder.selectiveSyncBlackList);
+ settings.setValue(QLatin1String("paused"), folder.paused);
+ settings.endGroup();
+}
+
+bool FolderDefinition::load(QSettings& settings, const QString& alias,
+ FolderDefinition* folder)
+{
+ settings.beginGroup(alias);
+ folder->alias = alias;
+ folder->localPath = settings.value(QLatin1String("localPath")).toString();
+ folder->targetPath = settings.value(QLatin1String("targetPath")).toString();
+ folder->selectiveSyncBlackList = settings.value(QLatin1String("blackList")).toStringList();
+ folder->paused = settings.value(QLatin1String("paused")).toBool();
+ settings.endGroup();
+ return true;
+}
+
} // namespace OCC
diff --git a/src/gui/folder.h b/src/gui/folder.h
index f07be95..774bb00 100644
--- a/src/gui/folder.h
+++ b/src/gui/folder.h
@@ -37,19 +37,46 @@
#include <qelapsedtimer.h>
class QThread;
+class QSettings;
namespace OCC {
class SyncEngine;
class AccountState;
+class FolderDefinition
+{
+public:
+ FolderDefinition()
+ : paused(false)
+ {}
+
+ /// The name of the folder in the ui and internally
+ QString alias;
+ /// path on local machine
+ QString localPath;
+ /// path on remote
+ QString targetPath;
+ /// Which folders not to sync
+ QStringList selectiveSyncBlackList;
+ /// whether the folder is paused
+ bool paused;
+
+ /// Saves the folder definition, creating a new settings group.
+ static void save(QSettings& settings, const FolderDefinition& folder);
+
+ /// Reads a folder definition from a settings group with the name 'alias'.
+ static bool load(QSettings& settings, const QString& alias,
+ FolderDefinition* folder);
+};
+
class Folder : public QObject
{
Q_OBJECT
public:
- Folder(AccountState* accountState,
- const QString&, const QString&, const QString& , QObject*parent = 0L);
+ Folder(AccountState* accountState, const FolderDefinition& definition,
+ QObject* parent = 0L);
~Folder();
@@ -136,6 +163,11 @@ public:
qint64 msecLastSyncDuration() const { return _lastSyncDuration; }
int consecutiveFollowUpSyncs() const { return _consecutiveFollowUpSyncs; }
+ /// Saves the folder data in the account's settings.
+ void saveToSettings() const;
+ /// Removes the folder from the account's settings.
+ void removeFromSettings() const;
+
signals:
void syncStateChange();
void syncStarted();
@@ -209,15 +241,17 @@ private:
const QString& renameTarget = QString::null );
AccountState* _accountState;
- QString _path;
- QString _remotePath;
- QString _alias;
- QString _configFile;
- bool _paused;
+ FolderDefinition _definition;
+ // TODO: Remove these.
+ QString& _path;
+ QString& _remotePath;
+ QString& _alias;
+ bool& _paused;
+ QStringList& _selectiveSyncBlackList;
+
SyncResult _syncResult;
QScopedPointer<SyncEngine> _engine;
QStringList _errors;
- QStringList _selectiveSyncBlackList;
bool _csyncError;
bool _csyncUnavail;
bool _wipeDb;
diff --git a/src/gui/folderman.cpp b/src/gui/folderman.cpp
index b4e476f..3ee2186 100644
--- a/src/gui/folderman.cpp
+++ b/src/gui/folderman.cpp
@@ -187,32 +187,68 @@ void FolderMan::removeMonitorPath( const QString& alias, const QString& path )
int FolderMan::setupFolders()
{
- qDebug() << "* Setup folders from " << _folderConfigPath;
+ unloadAndDeleteAllFolders();
- unloadAndDeleteAllFolders();
+ QScopedPointer<QSettings> settings(Account::settingsWithGroup(QLatin1String("Accounts")));
+ const auto accountsWithSettings = settings->childGroups();
+ if (accountsWithSettings.isEmpty()) {
+ return setupFoldersMigration();
+ }
+
+ qDebug() << "* Setup folders from settings file";
- ConfigFile cfg;
- QDir storageDir(cfg.configPath());
- storageDir.mkpath(QLatin1String("folders"));
- _folderConfigPath = cfg.configPath() + QLatin1String("folders");
+ 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(account.data(), folderDefinition);
+ if (f) {
+ slotScheduleSync(f->alias());
+ emit folderSyncStateChange(f->alias());
+ }
+ }
+ }
+ settings->endGroup(); // Folders
+ settings->endGroup(); // <account>
+ }
- 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();
+ emit folderListLoaded(_folderMap);
- foreach ( const QString& alias, list ) {
- Folder *f = setupFolderFromConfigFile( alias );
- if( f ) {
- slotScheduleSync(alias);
- emit( folderSyncStateChange( f->alias() ) );
+ 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();
+
+ foreach ( const QString& alias, list ) {
+ Folder *f = setupFolderFromConfigFile( alias );
+ if( f ) {
+ slotScheduleSync(alias);
+ emit( folderSyncStateChange( f->alias() ) );
+ }
}
- }
- emit folderListLoaded(_folderMap);
+ emit folderListLoaded(_folderMap);
- // return the number of valid folders.
- return _folderMap.size();
+ // return the number of valid folders.
+ return _folderMap.size();
}
bool FolderMan::ensureJournalGone(const QString &localPath)
@@ -352,9 +388,12 @@ Folder* FolderMan::setupFolderFromConfigFile(const QString &file) {
return 0;
}
- folder = new Folder( accountState, alias, path, targetPath, this );
- folder->setConfigFile(cfgFile.absoluteFilePath());
- folder->setSelectiveSyncBlackList(blackList);
+ FolderDefinition folderDefinition;
+ folderDefinition.alias = alias;
+ folderDefinition.localPath = path;
+ folderDefinition.targetPath = targetPath;
+ folderDefinition.selectiveSyncBlackList = blackList;
+ folder = new Folder( accountState, folderDefinition, this );
qDebug() << "Adding folder to Folder Map " << folder;
_folderMap[alias] = folder;
if (paused) {
@@ -384,16 +423,12 @@ void FolderMan::slotSetFolderPaused( const QString& alias, bool paused )
slotScheduleSync(alias);
- // FIXME: Use ConfigFile
- QSettings settings(f->configFile(), QSettings::IniFormat);
- settings.beginGroup(escapeAlias(f->alias()));
if (!paused) {
- settings.remove("paused");
_disabledFolders.remove(f);
} else {
- settings.setValue("paused", true);
_disabledFolders.insert(f);
}
+ f->setSyncPaused(paused);
emit folderSyncStateChange(alias);
}
@@ -703,25 +738,37 @@ void FolderMan::slotFolderSyncFinished( const SyncResult& )
startScheduledSyncSoon();
}
-bool FolderMan::addFolderDefinition(const QString& alias, const QString& sourceFolder,
- const QString& targetPath, const QStringList& selectiveSyncBlackList)
+Folder* FolderMan::addFolder(AccountState* accountState, const FolderDefinition& folderDefinition)
{
- if (! ensureJournalGone(sourceFolder))
- return false;
+ if (!ensureJournalGone(folderDefinition.localPath)) {
+ return 0;
+ }
- QString escapedAlias = escapeAlias(alias);
- // Create a settings file named after the alias
- QSettings settings( _folderConfigPath + QLatin1Char('/') + escapedAlias, QSettings::IniFormat);
- settings.beginGroup(escapedAlias);
- settings.setValue(QLatin1String("localPath"), sourceFolder );
- settings.setValue(QLatin1String("targetPath"), targetPath );
- // for compat reasons
- settings.setValue(QLatin1String("backend"), "owncloud" );
- settings.setValue(QLatin1String("connection"), Theme::instance()->appName());
- settings.setValue(QLatin1String("blackList"), selectiveSyncBlackList);
- settings.sync();
+ auto folder = addFolderInternal(accountState, folderDefinition);
+ folder->saveToSettings();
+}
- return true;
+Folder* FolderMan::addFolderInternal(AccountState* accountState, const FolderDefinition& folderDefinition)
+{
+ auto folder = new Folder( accountState, folderDefinition, this );
+
+ qDebug() << "Adding folder to Folder Map " << folder;
+ _folderMap[folder->alias()] = folder;
+ if (folderDefinition.paused) {
+ folder->setSyncPaused(true);
+ _disabledFolders.insert(folder);
+ }
+
+ /* Use a signal mapper to connect the signals to the alias */
+ connect(folder, SIGNAL(scheduleToSync(const QString&)), SLOT(slotScheduleSync(const QString&)));
+ connect(folder, SIGNAL(syncStateChange()), _folderChangeSignalMapper, SLOT(map()));
+ connect(folder, SIGNAL(syncStarted()), SLOT(slotFolderSyncStarted()));
+ connect(folder, SIGNAL(syncFinished(SyncResult)), SLOT(slotFolderSyncFinished(SyncResult)));
+
+ _folderChangeSignalMapper->setMapping( folder, folder->alias() );
+
+ registerFolderMonitor(folder);
+ return folder;
}
Folder *FolderMan::folderForPath(const QString &path)
@@ -776,11 +823,7 @@ void FolderMan::slotRemoveFolder( const QString& alias )
f->setSyncPaused(true);
// remove the folder configuration
- QFile file(f->configFile() );
- if( file.exists() ) {
- qDebug() << "Remove folder config file " << file.fileName();
- file.remove();
- }
+ f->removeFromSettings();
unloadFolder( alias );
if( !currentlyRunning ) {
diff --git a/src/gui/folderman.h b/src/gui/folderman.h
index 7c7ae4a..d8bdb6d 100644
--- a/src/gui/folderman.h
+++ b/src/gui/folderman.h
@@ -41,22 +41,13 @@ public:
static FolderMan* instance();
int setupFolders();
+ int setupFoldersMigration();
OCC::Folder::Map map();
- /**
- * Add a folder definition to the config
- * Params:
- * QString alias
- * QString sourceFolder on local machine
- * QString targetPath on remote
- *
- * Ensures any existing journal in the sourceFolder is deleted.
- * Returns true on success.
+ /** Adds a folder for an account, ensures the journal is gone and saves it in the settings.
*/
- bool addFolderDefinition(const QString& alias, const QString& sourceFolder,
- const QString& targetPath,
- const QStringList& selectiveSyncBlacklist = QStringList());
+ Folder* addFolder(AccountState* accountState, const FolderDefinition& folderDefinition);
/** Returns the folder which the file or directory stored in path is in */
Folder* folderForPath(const QString& path);
@@ -145,9 +136,14 @@ private slots:
// slot to take the next folder from queue and start syncing.
void slotStartScheduledFolderSync();
void slotEtagPollTimerTimeout();
+
void slotRemoveFoldersForAccount(AccountState* accountState);
private:
+ /** Adds a folder for an account, does not add it to the account settings.
+ */
+ Folder* addFolderInternal(AccountState* accountState, const FolderDefinition& folderDefinition);
+
/* unloads a folder object, does not delete it */
void unloadFolder( const QString& alias );
diff --git a/src/gui/folderstatusmodel.cpp b/src/gui/folderstatusmodel.cpp
index e27c98c..0c38540 100644
--- a/src/gui/folderstatusmodel.cpp
+++ b/src/gui/folderstatusmodel.cpp
@@ -475,10 +475,6 @@ void FolderStatusModel::slotApplySelectiveSync()
QStringList blackList = createBlackList(&_folders[i], oldBlackList);
folder->setSelectiveSyncBlackList(blackList);
- // FIXME: Use ConfigFile
- QSettings settings(folder->configFile(), QSettings::IniFormat);
- settings.beginGroup(FolderMan::escapeAlias(folder->alias()));
- settings.setValue("blackList", blackList);
FolderMan *folderMan = FolderMan::instance();
auto blackListSet = blackList.toSet();
auto oldBlackListSet = oldBlackList.toSet();
diff --git a/src/gui/owncloudsetupwizard.cpp b/src/gui/owncloudsetupwizard.cpp
index b00acbd..975d8ec 100644
--- a/src/gui/owncloudsetupwizard.cpp
+++ b/src/gui/owncloudsetupwizard.cpp
@@ -480,8 +480,14 @@ void OwncloudSetupWizard::slotAssistantFinished( int result )
bool startFromScratch = _ocWizard->field("OCSyncFromScratch").toBool();
if (!startFromScratch || ensureStartFromScratch(localFolder)) {
qDebug() << "Adding folder definition for" << localFolder << _remoteFolder;
- folderMan->addFolderDefinition(Theme::instance()->appName(),
- localFolder, _remoteFolder, _ocWizard->selectiveSyncBlacklist() );
+ FolderDefinition folderDefinition;
+ folderDefinition.alias = Theme::instance()->appName();
+ folderDefinition.localPath = localFolder;
+ folderDefinition.targetPath = _remoteFolder;
+ folderDefinition.selectiveSyncBlackList = _ocWizard->selectiveSyncBlacklist();
+#warning fixme: which account? save the one from addAccount below?
+ AccountState* account = AccountManager::instance()->accounts().value(0).data();
+ folderMan->addFolder(account, folderDefinition);
_ocWizard->appendToConfigurationLog(tr("<font color=\"green\"><b>Local sync folder %1 successfully created!</b></font>").arg(localFolder));
}
}
diff --git a/src/gui/selectivesyncdialog.cpp b/src/gui/selectivesyncdialog.cpp
index 07a6162..b50bb33 100644
--- a/src/gui/selectivesyncdialog.cpp
+++ b/src/gui/selectivesyncdialog.cpp
@@ -400,10 +400,6 @@ void SelectiveSyncDialog::accept()
QStringList blackList = _treeView->createBlackList();
_folder->setSelectiveSyncBlackList(blackList);
- // FIXME: Use ConfigFile
- QSettings settings(_folder->configFile(), QSettings::IniFormat);
- settings.beginGroup(FolderMan::escapeAlias(_folder->alias()));
- settings.setValue("blackList", blackList);
FolderMan *folderMan = FolderMan::instance();
if (_folder->isBusy()) {
_folder->slotTerminateSync();
diff --git a/src/libsync/account.cpp b/src/libsync/account.cpp
index 3c1bcff..71f349a 100644
--- a/src/libsync/account.cpp
+++ b/src/libsync/account.cpp
@@ -318,6 +318,13 @@ QSettings *Account::settingsWithGroup(const QString& group, QObject *parent)
return settings;
}
+QSettings* Account::settings()
+{
+ auto s = settingsWithGroup(QLatin1String("Accounts"));
+ s->beginGroup(id());
+ return s;
+}
+
QVariant Account::credentialSetting(const QString &key) const
{
if (_credentials) {
diff --git a/src/libsync/account.h b/src/libsync/account.h
index 49fa737..0f6a995 100644
--- a/src/libsync/account.h
+++ b/src/libsync/account.h
@@ -121,6 +121,9 @@ public:
with the given parent. If no parents is specified, the caller must destroy the settings */
static QSettings* settingsWithGroup(const QString &group, QObject *parent = 0);
+ /** Returns a new settings object for this account, already in the right groups. */
+ QSettings* settings();
+
// to be called by credentials only
QVariant credentialSetting(const QString& key) const;
void setCredentialSetting(const QString& key, const QVariant &value);
--
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