From 50dbc763d30426f44282f3f77a968aed9e878f67 Mon Sep 17 00:00:00 2001 From: RickyRister Date: Tue, 4 Mar 2025 19:48:12 -0800 Subject: [PATCH] Revert "Revert file watcher in VDS" --- .../visual_deck_storage_widget.cpp | 17 +++++++++++++++++ .../visual_deck_storage_widget.h | 3 +++ 2 files changed, 20 insertions(+) diff --git a/cockatrice/src/client/ui/widgets/visual_deck_storage/visual_deck_storage_widget.cpp b/cockatrice/src/client/ui/widgets/visual_deck_storage/visual_deck_storage_widget.cpp index 8ac228410..db7533cf4 100644 --- a/cockatrice/src/client/ui/widgets/visual_deck_storage/visual_deck_storage_widget.cpp +++ b/cockatrice/src/client/ui/widgets/visual_deck_storage/visual_deck_storage_widget.cpp @@ -11,6 +11,7 @@ #include #include +#include #include #include @@ -125,6 +126,12 @@ VisualDeckStorageWidget::VisualDeckStorageWidget(QWidget *parent) : QWidget(pare } else { scrollArea->setWidget(databaseLoadIndicator); } + + addRecursiveWatch(watcher, SettingsCache::instance().getDeckPath()); + + // Signals for changes + connect(&watcher, &QFileSystemWatcher::fileChanged, this, &VisualDeckStorageWidget::refreshIfPossible); + connect(&watcher, &QFileSystemWatcher::directoryChanged, this, &VisualDeckStorageWidget::refreshIfPossible); } void VisualDeckStorageWidget::refreshIfPossible() @@ -134,6 +141,16 @@ void VisualDeckStorageWidget::refreshIfPossible() } } +void VisualDeckStorageWidget::addRecursiveWatch(QFileSystemWatcher &watcher, const QString &dirPath) +{ + QDir dir(dirPath); + watcher.addPath(dirPath); // Watch the root directory + + for (const QFileInfo &entry : dir.entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot)) { + addRecursiveWatch(watcher, entry.absoluteFilePath()); + } +} + void VisualDeckStorageWidget::showEvent(QShowEvent *event) { QWidget::showEvent(event); diff --git a/cockatrice/src/client/ui/widgets/visual_deck_storage/visual_deck_storage_widget.h b/cockatrice/src/client/ui/widgets/visual_deck_storage/visual_deck_storage_widget.h index adfff06cb..b503c53c2 100644 --- a/cockatrice/src/client/ui/widgets/visual_deck_storage/visual_deck_storage_widget.h +++ b/cockatrice/src/client/ui/widgets/visual_deck_storage/visual_deck_storage_widget.h @@ -14,6 +14,7 @@ #include #include +#include class VisualDeckStorageSearchWidget; class VisualDeckStorageSortWidget; @@ -26,6 +27,7 @@ class VisualDeckStorageWidget final : public QWidget public: explicit VisualDeckStorageWidget(QWidget *parent); void refreshIfPossible(); + void addRecursiveWatch(QFileSystemWatcher &watcher, const QString &dirPath); void retranslateUi(); CardSizeWidget *cardSizeWidget; @@ -66,6 +68,7 @@ private: QCheckBox *searchFolderNamesCheckBox; QScrollArea *scrollArea; VisualDeckStorageFolderDisplayWidget *folderWidget; + QFileSystemWatcher watcher; void reapplySortAndFilters(); };