Debounce writing the setting to cache when adjusting card sizes.

This commit is contained in:
Lukas Brübach 2025-02-02 19:30:27 +01:00
parent f0adafb275
commit b0764ecff4
2 changed files with 18 additions and 8 deletions

View file

@ -1,5 +1,4 @@
#include "card_size_widget.h" #include "card_size_widget.h"
#include "../../../../settings/cache_settings.h" #include "../../../../settings/cache_settings.h"
#include "../printing_selector/printing_selector.h" #include "../printing_selector/printing_selector.h"
#include "../visual_deck_storage/visual_deck_storage_widget.h" #include "../visual_deck_storage/visual_deck_storage_widget.h"
@ -32,6 +31,17 @@ CardSizeWidget::CardSizeWidget(QWidget *parent, FlowWidget *flowWidget, int defa
connect(cardSizeSlider, &QSlider::valueChanged, flowWidget, &FlowWidget::setMinimumSizeToMaxSizeHint); connect(cardSizeSlider, &QSlider::valueChanged, flowWidget, &FlowWidget::setMinimumSizeToMaxSizeHint);
} }
// Debounce setup
debounceTimer.setSingleShot(true);
connect(&debounceTimer, &QTimer::timeout, this, [this]() {
// Check the type of the parent widget
if (qobject_cast<PrintingSelector *>(parentWidget())) {
SettingsCache::instance().setPrintingSelectorCardSize(pendingValue);
} else if (qobject_cast<VisualDeckStorageWidget *>(parentWidget())) {
SettingsCache::instance().setVisualDeckStorageCardSize(pendingValue);
}
});
connect(cardSizeSlider, &QSlider::valueChanged, this, &CardSizeWidget::updateCardSizeSetting); connect(cardSizeSlider, &QSlider::valueChanged, this, &CardSizeWidget::updateCardSizeSetting);
} }
@ -42,12 +52,8 @@ CardSizeWidget::CardSizeWidget(QWidget *parent, FlowWidget *flowWidget, int defa
*/ */
void CardSizeWidget::updateCardSizeSetting(int newValue) void CardSizeWidget::updateCardSizeSetting(int newValue)
{ {
// Check the type of the parent widget pendingValue = newValue;
if ((parent = qobject_cast<PrintingSelector *>(parentWidget()))) { debounceTimer.start(300); // 300ms debounce time
SettingsCache::instance().setPrintingSelectorCardSize(newValue);
} else if ((parent = qobject_cast<VisualDeckStorageWidget *>(parentWidget()))) {
SettingsCache::instance().setVisualDeckStorageCardSize(newValue);
}
} }
/** /**

View file

@ -6,6 +6,7 @@
#include <QHBoxLayout> #include <QHBoxLayout>
#include <QLabel> #include <QLabel>
#include <QSlider> #include <QSlider>
#include <QTimer>
#include <QWidget> #include <QWidget>
class CardSizeWidget : public QWidget class CardSizeWidget : public QWidget
@ -15,15 +16,18 @@ class CardSizeWidget : public QWidget
public: public:
explicit CardSizeWidget(QWidget *parent, FlowWidget *flowWidget = nullptr, int defaultValue = 100); explicit CardSizeWidget(QWidget *parent, FlowWidget *flowWidget = nullptr, int defaultValue = 100);
[[nodiscard]] QSlider *getSlider() const; [[nodiscard]] QSlider *getSlider() const;
QWidget *parent;
public slots: public slots:
void updateCardSizeSetting(int newValue); void updateCardSizeSetting(int newValue);
private: private:
QWidget *parent;
FlowWidget *flowWidget; FlowWidget *flowWidget;
QHBoxLayout *cardSizeLayout; QHBoxLayout *cardSizeLayout;
QLabel *cardSizeLabel; QLabel *cardSizeLabel;
QSlider *cardSizeSlider; QSlider *cardSizeSlider;
QTimer debounceTimer; // Debounce timer
int pendingValue; // Stores the latest slider value
}; };
#endif // CARD_SIZE_WIDGET_H #endif // CARD_SIZE_WIDGET_H