From c2c924931b1f06d2c54208945b68bb95edac831b Mon Sep 17 00:00:00 2001 From: Christian Kamm Date: Mon, 10 Aug 2015 11:03:57 +0200 Subject: [PATCH] Ignore hidden: Default to enabled #2086 It was 'false' for migrated folders and folders created by the OC setup wizard. --- src/gui/accountsettings.cpp | 8 ++------ src/gui/folder.h | 3 ++- src/gui/folderman.cpp | 19 +++++++++++++++++++ src/gui/folderman.h | 9 +++++++++ src/gui/ignorelisteditor.cpp | 12 ++---------- src/gui/owncloudsetupwizard.cpp | 2 ++ 6 files changed, 36 insertions(+), 17 deletions(-) diff --git a/src/gui/accountsettings.cpp b/src/gui/accountsettings.cpp index e8a0c3428..3f9762b42 100644 --- a/src/gui/accountsettings.cpp +++ b/src/gui/accountsettings.cpp @@ -212,15 +212,11 @@ void AccountSettings::slotFolderWizardAccepted() } } - bool ignoreHidden = true; /* take the value from the definition of already existing folders. All folders have - * the same setting so far, that's why it's ok to check the first one. + * the same setting so far. * The default is to not sync hidden files */ - if( folderMan->map().count() > 0) { - ignoreHidden = folderMan->map().begin().value()->ignoreHiddenFiles(); - } - definition.ignoreHiddenFiles = ignoreHidden; + definition.ignoreHiddenFiles = folderMan->ignoreHiddenFiles(); auto selectiveSyncBlackList = folderWizard->property("selectiveSyncBlackList").toStringList(); diff --git a/src/gui/folder.h b/src/gui/folder.h index cf72f06be..fa48973d6 100644 --- a/src/gui/folder.h +++ b/src/gui/folder.h @@ -52,7 +52,8 @@ class FolderDefinition { public: FolderDefinition() - : paused(false), ignoreHiddenFiles(false) + : paused(false) + , ignoreHiddenFiles(true) {} /// The name of the folder in the ui and internally diff --git a/src/gui/folderman.cpp b/src/gui/folderman.cpp index d57c0ccd3..1d949e5d3 100644 --- a/src/gui/folderman.cpp +++ b/src/gui/folderman.cpp @@ -405,6 +405,7 @@ Folder* FolderMan::setupFolderFromOldConfigFile(const QString &file, AccountStat folderDefinition.localPath = path; folderDefinition.targetPath = targetPath; folderDefinition.paused = paused; + folderDefinition.ignoreHiddenFiles = ignoreHiddenFiles(); folder = addFolderInternal(folderDefinition); if (folder) { @@ -1176,6 +1177,24 @@ QString FolderMan::checkPathValidityForNewFolder(const QString& path, bool forNe } +bool FolderMan::ignoreHiddenFiles() const +{ + if (_folderMap.empty()) { + return true; + } + return _folderMap.begin().value()->ignoreHiddenFiles(); +} + +void FolderMan::setIgnoreHiddenFiles(bool ignore) +{ + // Note that the setting will revert to 'true' if all folders + // are deleted... + foreach (Folder* folder, _folderMap) { + folder->setIgnoreHiddenFiles(ignore); + folder->saveToSettings(); + } +} + void FolderMan::restartApplication() { if( Utility::isLinux() ) { diff --git a/src/gui/folderman.h b/src/gui/folderman.h index 167b82f5f..3244f7217 100644 --- a/src/gui/folderman.h +++ b/src/gui/folderman.h @@ -99,6 +99,15 @@ public: */ QString checkPathValidityForNewFolder(const QString &path, bool forNewDirectory = false); + /** + * While ignoring hidden files can theoretically be switched per folder, + * it's currently a global setting that users can only change for all folders + * at once. + * These helper functions can be removed once it's properly per-folder. + */ + bool ignoreHiddenFiles() const; + void setIgnoreHiddenFiles(bool ignore); + signals: /** * signal to indicate a folder has changed its sync state. diff --git a/src/gui/ignorelisteditor.cpp b/src/gui/ignorelisteditor.cpp index cd760e3de..54230360f 100644 --- a/src/gui/ignorelisteditor.cpp +++ b/src/gui/ignorelisteditor.cpp @@ -58,12 +58,7 @@ IgnoreListEditor::IgnoreListEditor(QWidget *parent) : ui->tableWidget->horizontalHeader()->setResizeMode(patternCol, QHeaderView::Stretch); ui->tableWidget->verticalHeader()->setVisible(false); - /* value for syncing hidden files */ - bool ignoreHidden = true; - if( FolderMan::instance()->map().count() > 0 ) { - ignoreHidden = FolderMan::instance()->map().begin().value()->ignoreHiddenFiles(); - } - ui->ignoreHiddenFilesCheckBox->setChecked( !ignoreHidden ); + ui->ignoreHiddenFilesCheckBox->setChecked( !FolderMan::instance()->ignoreHiddenFiles() ); } IgnoreListEditor::~IgnoreListEditor() @@ -129,10 +124,7 @@ void IgnoreListEditor::slotUpdateLocalIgnoreList() /* the ignoreHiddenFiles flag is a folder specific setting, but for now, it is * handled globally. Save it to every folder that is defined. */ - foreach (Folder* folder, FolderMan::instance()->map()) { - folder->setIgnoreHiddenFiles(ignoreHiddenFiles); - folder->saveToSettings(); - } + FolderMan::instance()->setIgnoreHiddenFiles(ignoreHiddenFiles); } void IgnoreListEditor::slotAddPattern() diff --git a/src/gui/owncloudsetupwizard.cpp b/src/gui/owncloudsetupwizard.cpp index 151cf8eff..64dbaf3fb 100644 --- a/src/gui/owncloudsetupwizard.cpp +++ b/src/gui/owncloudsetupwizard.cpp @@ -470,6 +470,8 @@ void OwncloudSetupWizard::slotAssistantFinished( int result ) } folderDefinition.localPath = localFolder; folderDefinition.targetPath = _remoteFolder; + folderDefinition.ignoreHiddenFiles = folderMan->ignoreHiddenFiles(); + auto f = folderMan->addFolder(account, folderDefinition); if (f) { f->journalDb()->setSelectiveSyncList(SyncJournalDb::SelectiveSyncBlackList, -- 2.30.2