Revert "Revert file watcher in VDS"

This commit is contained in:
RickyRister 2025-03-04 19:48:12 -08:00
parent 5238087ddf
commit 50dbc763d3
2 changed files with 20 additions and 0 deletions

View file

@ -11,6 +11,7 @@
#include <QComboBox> #include <QComboBox>
#include <QDirIterator> #include <QDirIterator>
#include <QFileSystemWatcher>
#include <QMouseEvent> #include <QMouseEvent>
#include <QVBoxLayout> #include <QVBoxLayout>
@ -125,6 +126,12 @@ VisualDeckStorageWidget::VisualDeckStorageWidget(QWidget *parent) : QWidget(pare
} else { } else {
scrollArea->setWidget(databaseLoadIndicator); 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() 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) void VisualDeckStorageWidget::showEvent(QShowEvent *event)
{ {
QWidget::showEvent(event); QWidget::showEvent(event);

View file

@ -14,6 +14,7 @@
#include <QCheckBox> #include <QCheckBox>
#include <QFileSystemModel> #include <QFileSystemModel>
#include <QFileSystemWatcher>
class VisualDeckStorageSearchWidget; class VisualDeckStorageSearchWidget;
class VisualDeckStorageSortWidget; class VisualDeckStorageSortWidget;
@ -26,6 +27,7 @@ class VisualDeckStorageWidget final : public QWidget
public: public:
explicit VisualDeckStorageWidget(QWidget *parent); explicit VisualDeckStorageWidget(QWidget *parent);
void refreshIfPossible(); void refreshIfPossible();
void addRecursiveWatch(QFileSystemWatcher &watcher, const QString &dirPath);
void retranslateUi(); void retranslateUi();
CardSizeWidget *cardSizeWidget; CardSizeWidget *cardSizeWidget;
@ -66,6 +68,7 @@ private:
QCheckBox *searchFolderNamesCheckBox; QCheckBox *searchFolderNamesCheckBox;
QScrollArea *scrollArea; QScrollArea *scrollArea;
VisualDeckStorageFolderDisplayWidget *folderWidget; VisualDeckStorageFolderDisplayWidget *folderWidget;
QFileSystemWatcher watcher;
void reapplySortAndFilters(); void reapplySortAndFilters();
}; };