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 "card_size_widget.h"
#include "../../../../settings/cache_settings.h" #include "../../../../settings/cache_settings.h"
#include "../printing_selector/printing_selector.h"
#include "../visual_deck_storage/visual_deck_storage_widget.h"
/** /**
* @class CardSizeWidget * @class CardSizeWidget
@ -40,9 +43,19 @@ CardSizeWidget::CardSizeWidget(QWidget *parent, FlowWidget *flowWidget, int defa
*/ */
void CardSizeWidget::updateCardSizeSetting(int newValue) 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. * @brief Gets the slider widget used for adjusting the card size.
* *

View file

@ -15,11 +15,11 @@ 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:
static void updateCardSizeSetting(int newValue); void updateCardSizeSetting(int newValue);
private: private:
QWidget *parent;
FlowWidget *flowWidget; FlowWidget *flowWidget;
QHBoxLayout *cardSizeLayout; QHBoxLayout *cardSizeLayout;
QLabel *cardSizeLabel; QLabel *cardSizeLabel;

View file

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

View file

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

View file

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

View file

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