Ignore hidden: Default to enabled #2086
authorChristian Kamm <mail@ckamm.de>
Mon, 10 Aug 2015 09:03:57 +0000 (11:03 +0200)
committerChristian Kamm <mail@ckamm.de>
Mon, 10 Aug 2015 09:15:39 +0000 (11:15 +0200)
It was 'false' for migrated folders and folders created by the OC
setup wizard.

src/gui/accountsettings.cpp
src/gui/folder.h
src/gui/folderman.cpp
src/gui/folderman.h
src/gui/ignorelisteditor.cpp
src/gui/owncloudsetupwizard.cpp

index e8a0c34288ff96e3aa3ebac46f5eba4ab46b2057..3f9762b428c1042d89d5b212e19cf6d5e83d3a1f 100644 (file)
@@ -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();
 
index cf72f06bed2178f1899c24b40f93919b6d41a9d4..fa48973d695df86f3b0408996e55640463658037 100644 (file)
@@ -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
index d57c0ccd35248c2f4a612118655b6301cfe8a2f9..1d949e5d363af7f09c5bc1e541d3f3682f05b7ac 100644 (file)
@@ -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() ) {
index 167b82f5f3338a4761f38e81c8c3ed53a4b53c80..3244f7217f7c1963e8a63a8f9fc8649ede803d65 100644 (file)
@@ -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.
index cd760e3deca7c31b900a45548e3fbab4b497be0d..54230360fbda497d8a877b29d146900d7e587f8f 100644 (file)
@@ -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()
index 151cf8eff46452ee368681eb577ad5a2bd70e6aa..64dbaf3fbb565eac00b289c74af5af15e0591abb 100644 (file)
@@ -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,