Add a card size slider.

This commit is contained in:
Lukas Brübach 2024-12-29 17:17:31 +01:00
parent cee2de45d5
commit b6a96089ec
6 changed files with 39 additions and 4 deletions

View file

@ -1,6 +1,9 @@
#include "card_size_widget.h"
#include "../../../../settings/cache_settings.h"
#include "../printing_selector/printing_selector.h"
#include "../visual_deck_storage/visual_deck_storage_widget.h"
/**
* @class CardSizeWidget
@ -40,9 +43,19 @@ CardSizeWidget::CardSizeWidget(QWidget *parent, FlowWidget *flowWidget, int defa
*/
void CardSizeWidget::updateCardSizeSetting(int newValue)
{
SettingsCache::instance().setPrintingSelectorCardSize(newValue);
// Check the type of the parent widget
if ((parent = qobject_cast<PrintingSelector*>(parentWidget()))) {
SettingsCache::instance().setPrintingSelectorCardSize(newValue);
}
else if ((parent = qobject_cast<VisualDeckStorageWidget*>(parentWidget()))) {
SettingsCache::instance().setVisualDeckStorageCardSize(newValue);
}
else {
qWarning() << "CardSizeWidget has an unexpected parent widget type. Did not set persistent setting.";
}
}
/**
* @brief Gets the slider widget used for adjusting the card size.
*

View file

@ -15,11 +15,11 @@ class CardSizeWidget : public QWidget
public:
explicit CardSizeWidget(QWidget *parent, FlowWidget *flowWidget = nullptr, int defaultValue = 100);
[[nodiscard]] QSlider *getSlider() const;
QWidget *parent;
public slots:
static void updateCardSizeSetting(int newValue);
void updateCardSizeSetting(int newValue);
private:
QWidget *parent;
FlowWidget *flowWidget;
QHBoxLayout *cardSizeLayout;
QLabel *cardSizeLabel;

View file

@ -31,6 +31,9 @@ VisualDeckStorageWidget::VisualDeckStorageWidget(QWidget *parent) : QWidget(pare
flowWidget = new FlowWidget(this, Qt::ScrollBarAlwaysOff, Qt::ScrollBarAsNeeded);
layout->addWidget(flowWidget);
cardSizeWidget = new CardSizeWidget(this, flowWidget, SettingsCache::instance().getVisualDeckStorageCardSize());
layout->addWidget(cardSizeWidget);
// Connect sorting change signal to refresh the file list
connect(sortComboBox, &QComboBox::currentIndexChanged, this, [this, sortComboBox]() {
sortOrder = static_cast<SortOrder>(sortComboBox->currentData().toInt());
@ -91,7 +94,7 @@ void VisualDeckStorageWidget::refreshBannerCards()
deckLoader->loadFromFile(file, DeckLoader::CockatriceFormat);
deckListModel->setDeckList(new DeckLoader(*deckLoader));
auto *display = new DeckPreviewCardPictureWidget(flowWidget, true);
auto *display = new DeckPreviewCardPictureWidget(flowWidget, false);
qDebug() << "Banner card is: " << deckLoader->getBannerCard();
auto bannerCard = deckLoader->getBannerCard().isEmpty()
? CardInfoPtr()
@ -106,6 +109,8 @@ void VisualDeckStorageWidget::refreshBannerCards()
&VisualDeckStorageWidget::imageClickedEvent);
connect(display, &DeckPreviewCardPictureWidget::imageDoubleClicked, this,
&VisualDeckStorageWidget::imageDoubleClickedEvent);
connect(cardSizeWidget->getSlider(), &QSlider::valueChanged, display, &CardInfoPictureWidget::setScaleFactor);
display->setScaleFactor(cardSizeWidget->getSlider()->value());
flowWidget->addWidget(display);
}
}

View file

@ -6,6 +6,7 @@
#include "../../../../deck/deck_view.h"
#include "../../../ui/widgets/cards/deck_preview_card_picture_widget.h"
#include "../../../ui/widgets/general/layout_containers/flow_widget.h"
#include "../cards/card_size_widget.h"
#include <QFileSystemModel>
@ -41,6 +42,7 @@ private:
SortOrder sortOrder; // Current sorting option
VisualDeckStorageSearchWidget *searchWidget;
CardSizeWidget *cardSizeWidget;
};
#endif // VISUAL_DECK_STORAGE_WIDGET_H

View file

@ -259,6 +259,7 @@ SettingsCache::SettingsCache()
settings->value("cards/printingselectorcardsizeslidervisible", true).toBool();
printingSelectorNavigationButtonsVisible =
settings->value("cards/printingselectornavigationbuttonsvisible", true).toBool();
visualDeckStorageCardSize = settings->value("cards/visualdeckstoragecardsize", 100).toInt();
horizontalHand = settings->value("hand/horizontal", true).toBool();
invertVerticalCoordinate = settings->value("table/invert_vertical", false).toBool();
minPlayersForMultiColumnLayout = settings->value("interface/min_players_multicolumn", 4).toInt();
@ -609,6 +610,13 @@ void SettingsCache::setPrintingSelectorNavigationButtonsVisible(QT_STATE_CHANGED
emit printingSelectorNavigationButtonsVisibleChanged();
}
void SettingsCache::setVisualDeckStorageCardSize(int _visualDeckStorageCardSize)
{
visualDeckStorageCardSize = _visualDeckStorageCardSize;
settings->setValue("cards/visualdeckstoragecardsize", visualDeckStorageCardSize);
emit visualDeckStorageCardSizeChanged();
}
void SettingsCache::setHorizontalHand(QT_STATE_CHANGED_T _horizontalHand)
{
horizontalHand = static_cast<bool>(_horizontalHand);

View file

@ -59,6 +59,7 @@ signals:
void printingSelectorSearchBarVisibleChanged();
void printingSelectorCardSizeSliderVisibleChanged();
void printingSelectorNavigationButtonsVisibleChanged();
void visualDeckStorageCardSizeChanged();
void horizontalHandChanged();
void handJustificationChanged();
void invertVerticalCoordinateChanged();
@ -123,6 +124,7 @@ private:
bool printingSelectorSearchBarVisible;
bool printingSelectorCardSizeSliderVisible;
bool printingSelectorNavigationButtonsVisible;
int visualDeckStorageCardSize;
bool horizontalHand;
bool invertVerticalCoordinate;
int minPlayersForMultiColumnLayout;
@ -369,6 +371,10 @@ public:
{
return printingSelectorNavigationButtonsVisible;
}
int getVisualDeckStorageCardSize() const
{
return visualDeckStorageCardSize;
}
bool getHorizontalHand() const
{
return horizontalHand;
@ -677,6 +683,7 @@ public slots:
void setPrintingSelectorSearchBarVisible(QT_STATE_CHANGED_T _searchBarVisible);
void setPrintingSelectorCardSizeSliderVisible(QT_STATE_CHANGED_T _cardSizeSliderVisible);
void setPrintingSelectorNavigationButtonsVisible(QT_STATE_CHANGED_T _navigationButtonsVisible);
void setVisualDeckStorageCardSize(int _visualDeckStorageCardSize);
void setHorizontalHand(QT_STATE_CHANGED_T _horizontalHand);
void setInvertVerticalCoordinate(QT_STATE_CHANGED_T _invertVerticalCoordinate);
void setMinPlayersForMultiColumnLayout(int _minPlayersForMultiColumnLayout);