mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-07-19 17:02:15 -07:00
Debounce writing the setting to cache when adjusting card sizes.
This commit is contained in:
parent
f0adafb275
commit
1546e895ba
2 changed files with 19 additions and 27 deletions
|
|
@ -1,16 +1,8 @@
|
||||||
#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"
|
||||||
|
|
||||||
/**
|
|
||||||
* @class CardSizeWidget
|
|
||||||
* @brief A widget for adjusting card sizes using a slider.
|
|
||||||
*
|
|
||||||
* This widget allows users to dynamically change the card size in a linked FlowWidget
|
|
||||||
* and updates the application's settings accordingly.
|
|
||||||
*/
|
|
||||||
CardSizeWidget::CardSizeWidget(QWidget *parent, FlowWidget *flowWidget, int defaultValue)
|
CardSizeWidget::CardSizeWidget(QWidget *parent, FlowWidget *flowWidget, int defaultValue)
|
||||||
: parent(parent), flowWidget(flowWidget)
|
: parent(parent), flowWidget(flowWidget)
|
||||||
{
|
{
|
||||||
|
|
@ -22,8 +14,8 @@ CardSizeWidget::CardSizeWidget(QWidget *parent, FlowWidget *flowWidget, int defa
|
||||||
cardSizeLabel->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
|
cardSizeLabel->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
|
||||||
|
|
||||||
cardSizeSlider = new QSlider(Qt::Horizontal, this);
|
cardSizeSlider = new QSlider(Qt::Horizontal, this);
|
||||||
cardSizeSlider->setRange(50, 250); ///< Slider range for card size adjustment.
|
cardSizeSlider->setRange(50, 250);
|
||||||
cardSizeSlider->setValue(defaultValue); ///< Initial slider value.
|
cardSizeSlider->setValue(defaultValue);
|
||||||
|
|
||||||
cardSizeLayout->addWidget(cardSizeLabel);
|
cardSizeLayout->addWidget(cardSizeLabel);
|
||||||
cardSizeLayout->addWidget(cardSizeSlider);
|
cardSizeLayout->addWidget(cardSizeSlider);
|
||||||
|
|
@ -32,29 +24,25 @@ 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]() {
|
||||||
|
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Updates the card size setting in the application's cache.
|
|
||||||
*
|
|
||||||
* @param newValue The new card size value set by the slider.
|
|
||||||
*/
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Gets the slider widget used for adjusting the card size.
|
|
||||||
*
|
|
||||||
* @return A pointer to the QSlider object.
|
|
||||||
*/
|
|
||||||
QSlider *CardSizeWidget::getSlider() const
|
QSlider *CardSizeWidget::getSlider() const
|
||||||
{
|
{
|
||||||
return cardSizeSlider;
|
return cardSizeSlider;
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue