From a11a75a81476da6e6f3e190547b97a94b5cb1304 Mon Sep 17 00:00:00 2001 From: Nikhil Tanwar <2002nikhiltanwar@gmail.com> Date: Sat, 23 Jul 2022 19:38:09 +0530 Subject: [PATCH] Don't monitor files while in All files view. When downloading a file, with monitor directory set same as download directory, the changes in fs may send a double booksChanged signal. The first is due to adding/removing books while the second is the explicit booksChanged. This change stops monitoring while in All files view. To save the edge case when the user themselves adds books in monitor directory (while Kiwix is in All files view), a connection is added to Local Files button - to call loadMonitorDir(). --- src/contentmanager.h | 1 + src/contentmanagerside.cpp | 7 +++++++ src/kiwixapp.cpp | 3 ++- 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/contentmanager.h b/src/contentmanager.h index d6abb09..befe884 100644 --- a/src/contentmanager.h +++ b/src/contentmanager.h @@ -26,6 +26,7 @@ public: void setCurrentLanguage(QString language); void setCurrentCategoryFilter(QString category); void setCurrentContentTypeFilter(QList& contentTypeFilter); + bool isLocalLibrary() const { return m_local; } private: Library* mp_library; diff --git a/src/contentmanagerside.cpp b/src/contentmanagerside.cpp index 1693816..8b1f139 100644 --- a/src/contentmanagerside.cpp +++ b/src/contentmanagerside.cpp @@ -22,6 +22,13 @@ ContentManagerSide::ContentManagerSide(QWidget *parent) : connect(mp_ui->localFileButton, &QRadioButton::toggled, this, [=](bool checked) { mp_ui->localFileButton->setStyleSheet( checked ?"*{font-weight: bold}" : "");}); + connect(mp_ui->localFileButton, &QRadioButton::toggled, + this, [=](bool checked) { + if (checked) { + QString monitorDir = KiwixApp::instance()->getSettingsManager()->getMonitorDir(); + KiwixApp::instance()->getLibrary()->asyncLoadMonitorDir(monitorDir); + } + }); mp_ui->localFileButton->setStyleSheet("*{font-weight: bold}"); mp_ui->allFileButton->setText(gt("all-files")); diff --git a/src/kiwixapp.cpp b/src/kiwixapp.cpp index c14d5d8..c3c8c37 100644 --- a/src/kiwixapp.cpp +++ b/src/kiwixapp.cpp @@ -102,7 +102,8 @@ void KiwixApp::init() } }); connect(&m_watcher, &QFileSystemWatcher::directoryChanged, this, [=](QString monitorDir) { - m_library.asyncLoadMonitorDir(monitorDir); + if (getContentManager()->isLocalLibrary()) + m_library.asyncLoadMonitorDir(monitorDir); }); QString monitorDir = m_settingsManager.getMonitorDir(); if (monitorDir != "") {