Cockatrice/libcockatrice_settings/libcockatrice/settings/cards_display_settings.cpp
2026-11-08 19:17:38 +01:00

325 lines
9.8 KiB
C++

#include "cards_display_settings.h"
#include "libcockatrice/card/card_localization.h"
#include "libcockatrice/settings/settings_manager.h"
#include <QSharedPointer>
#include <QVariant>
class QObject;
CardsDisplaySettings::CardsDisplaySettings(const QString &settingPath, QObject *parent)
: SettingsManager(settingPath + "cards_display.ini", "cards", QString(), parent)
{
}
bool CardsDisplaySettings::getDisplayCardNames() const
{
return getValue("displayCardNames", QString(), QString(), true).toBool();
}
bool CardsDisplaySettings::getRoundCardCorners() const
{
return getValue("roundCardCorners", QString(), QString(), true).toBool();
}
bool CardsDisplaySettings::getOverrideAllCardArtWithPersonalPreference() const
{
return getValue("overrideAllCardArtWithPersonalPreference", QString(), QString(), false).toBool();
}
bool CardsDisplaySettings::getBumpSetsWithCardsInDeckToTop() const
{
return getValue("bumpSetsWithCardsInDeckToTop", QString(), QString(), true).toBool();
}
int CardsDisplaySettings::getPrintingSelectorSortOrder() const
{
return getValue("sortOrder", "cards", "printingSelector", 1).toInt();
}
int CardsDisplaySettings::getPrintingSelectorCardSize() const
{
return getValue("printingSelector", "cards", "cardSize", 100).toInt();
}
bool CardsDisplaySettings::getPrintingSelectorNavigationButtonsVisible() const
{
return getValue("navigationButtonsVisible", "cards", "printingSelector", true).toBool();
}
bool CardsDisplaySettings::getTapAnimation() const
{
return getValue("tapAnimation", QString(), QString(), true).toBool();
}
bool CardsDisplaySettings::getArrowDrawAnimation() const
{
return getValue("arrowDrawAnimation", QString(), QString(), true).toBool();
}
bool CardsDisplaySettings::getAutoRotateSidewaysLayoutCards() const
{
return getValue("autoRotateSidewaysLayoutCards", QString(), QString(), true).toBool();
}
bool CardsDisplaySettings::getScaleCards() const
{
return getValue("scaleCards", QString(), QString(), true).toBool();
}
int CardsDisplaySettings::getHoverPanelTrigger() const
{
// Off by default: the panel is new, so it is opt-in.
return getValue("hoverPanelTrigger", QString(), QString(), static_cast<int>(HoverPanelTriggerOff)).toInt();
}
int CardsDisplaySettings::getHoverZoomTrigger() const
{
// Off by default: the smooth hover zoom is opt-in. With no trigger configured,
// hovering keeps the historical 1.1x scale (AbstractCardItem::setHoverHighlighted)
// instead of the smooth zoom to the hover panel size.
return getValue("hoverZoomTrigger", QString(), QString(), static_cast<int>(HoverPanelTriggerOff)).toInt();
}
bool CardsDisplaySettings::getHoverPanelDoubleConfirm() const
{
return getValue("hoverPanelDoubleConfirm", QString(), QString(), false).toBool();
}
int CardsDisplaySettings::getHoverZoomDelayMs() const
{
return getValue("hoverZoomDelayMs", QString(), QString(), 400).toInt();
}
int CardsDisplaySettings::getHoverPanelDelayMs() const
{
return getValue("hoverPanelDelayMs", QString(), QString(), 200).toInt();
}
int CardsDisplaySettings::getStackCardOverlapPercent() const
{
return getValue("verticalCardOverlapPercent", QString(), QString(), 33).toInt();
}
int CardsDisplaySettings::getCardInfoViewMode() const
{
return getValue("cardInfoViewMode", QString(), QString(), 0).toInt();
}
int CardsDisplaySettings::getVisualDeckStorageCardSize() const
{
return getValue("visualDeckStorage", "cards", "cardSize", 100).toInt();
}
int CardsDisplaySettings::getVisualDatabaseDisplayCardSize() const
{
return getValue("visualDatabaseDisplay", "cards", "cardSize", 100).toInt();
}
int CardsDisplaySettings::getVisualDeckEditorCardSize() const
{
return getValue("visualDeckEditor", "cards", "cardSize", 100).toInt();
}
bool CardsDisplaySettings::getVisualDeckEditorShowCardCounts() const
{
return getValue("visualDeckEditorShowCardCounts", QString(), QString(), true).toBool();
}
int CardsDisplaySettings::getEDHRecCardSize() const
{
return getValue("edhrec", "cards", "cardSize", 100).toInt();
}
int CardsDisplaySettings::getArchidektPreviewSize() const
{
return getValue("archidektPreview", "cards", "cardSize", 100).toInt();
}
int CardsDisplaySettings::getSampleHandSize() const
{
return getValue("sampleHandSize", "cards", "cardSize", 7).toInt();
}
QString CardsDisplaySettings::getCardLang() const
{
return getValue("cardLang", QString(), QString(), "en").toString();
}
int CardsDisplaySettings::getCardSearchLanguage() const
{
return getValue("cardSearchLanguage", QString(), QString(), static_cast<int>(SearchLanguageMode::English)).toInt();
}
void CardsDisplaySettings::setDisplayCardNames(bool _displayCardNames)
{
setValue(_displayCardNames, "displayCardNames");
emit displayCardNamesChanged();
}
void CardsDisplaySettings::setRoundCardCorners(bool _roundCardCorners)
{
if (_roundCardCorners == getRoundCardCorners()) {
return;
}
setValue(_roundCardCorners, "roundCardCorners");
emit roundCardCornersChanged(_roundCardCorners);
}
void CardsDisplaySettings::setOverrideAllCardArtWithPersonalPreference(bool _overrideAllCardArt)
{
setValue(_overrideAllCardArt, "overrideAllCardArtWithPersonalPreference");
emit overrideAllCardArtWithPersonalPreferenceChanged(_overrideAllCardArt);
}
void CardsDisplaySettings::setBumpSetsWithCardsInDeckToTop(bool _bumpSetsWithCardsInDeckToTop)
{
setValue(_bumpSetsWithCardsInDeckToTop, "bumpSetsWithCardsInDeckToTop");
emit bumpSetsWithCardsInDeckToTopChanged();
}
void CardsDisplaySettings::setPrintingSelectorSortOrder(int _printingSelectorSortOrder)
{
setValue(_printingSelectorSortOrder, "sortOrder", "cards", "printingSelector");
emit printingSelectorSortOrderChanged();
}
void CardsDisplaySettings::setPrintingSelectorCardSize(int _printingSelectorCardSize)
{
setValue(_printingSelectorCardSize, "printingSelector", "cards", "cardSize");
emit printingSelectorCardSizeChanged();
}
void CardsDisplaySettings::setPrintingSelectorNavigationButtonsVisible(bool _navigationButtonsVisible)
{
setValue(_navigationButtonsVisible, "navigationButtonsVisible", "cards", "printingSelector");
emit printingSelectorNavigationButtonsVisibleChanged();
}
void CardsDisplaySettings::setTapAnimation(bool _tapAnimation)
{
setValue(_tapAnimation, "tapAnimation");
}
void CardsDisplaySettings::setArrowDrawAnimation(bool _arrowDrawAnimation)
{
setValue(_arrowDrawAnimation, "arrowDrawAnimation");
}
void CardsDisplaySettings::setAutoRotateSidewaysLayoutCards(bool _autoRotateSidewaysLayoutCards)
{
setValue(_autoRotateSidewaysLayoutCards, "autoRotateSidewaysLayoutCards");
}
void CardsDisplaySettings::setCardScaling(bool _scaleCards)
{
setValue(_scaleCards, "scaleCards");
}
void CardsDisplaySettings::setHoverPanelTrigger(int _trigger)
{
setValue(_trigger, "hoverPanelTrigger");
emit hoverPanelTriggerChanged(_trigger);
}
void CardsDisplaySettings::setHoverZoomTrigger(int _trigger)
{
setValue(_trigger, "hoverZoomTrigger");
emit hoverZoomTriggerChanged(_trigger);
}
void CardsDisplaySettings::setHoverPanelDoubleConfirm(bool _doubleConfirm)
{
setValue(_doubleConfirm, "hoverPanelDoubleConfirm");
emit hoverPanelDoubleConfirmChanged(_doubleConfirm);
}
void CardsDisplaySettings::setHoverZoomDelayMs(int _ms)
{
setValue(_ms, "hoverZoomDelayMs");
emit hoverZoomDelayMsChanged(_ms);
}
void CardsDisplaySettings::setHoverPanelDelayMs(int _ms)
{
setValue(_ms, "hoverPanelDelayMs");
emit hoverPanelDelayMsChanged(_ms);
}
void CardsDisplaySettings::setStackCardOverlapPercent(int _verticalCardOverlapPercent)
{
setValue(_verticalCardOverlapPercent, "verticalCardOverlapPercent");
}
void CardsDisplaySettings::setCardInfoViewMode(int _viewMode)
{
setValue(_viewMode, "cardInfoViewMode");
}
void CardsDisplaySettings::setVisualDeckStorageCardSize(int _cardSize)
{
setValue(_cardSize, "visualDeckStorage", "cards", "cardSize");
emit visualDeckStorageCardSizeChanged();
}
void CardsDisplaySettings::setVisualDatabaseDisplayCardSize(int _cardSize)
{
setValue(_cardSize, "visualDatabaseDisplay", "cards", "cardSize");
emit visualDatabaseDisplayCardSizeChanged();
}
void CardsDisplaySettings::setVisualDeckEditorCardSize(int _cardSize)
{
setValue(_cardSize, "visualDeckEditor", "cards", "cardSize");
emit visualDeckEditorCardSizeChanged();
}
void CardsDisplaySettings::setVisualDeckEditorShowCardCounts(bool _showCardCounts)
{
if (_showCardCounts == getVisualDeckEditorShowCardCounts()) {
return;
}
setValue(_showCardCounts, "visualDeckEditorShowCardCounts");
emit visualDeckEditorShowCardCountsChanged(_showCardCounts);
}
void CardsDisplaySettings::setEDHRecCardSize(int _edhrecCardSize)
{
setValue(_edhrecCardSize, "edhrec", "cards", "cardSize");
emit edhRecCardSizeChanged();
}
void CardsDisplaySettings::setArchidektPreviewCardSize(int _archidektPreviewCardSize)
{
setValue(_archidektPreviewCardSize, "archidektPreview", "cards", "cardSize");
emit archidektPreviewSizeChanged();
}
void CardsDisplaySettings::setSampleHandSize(int _sampleHandSize)
{
setValue(_sampleHandSize, "sampleHandSize", "cards", "cardSize");
emit sampleHandSizeChanged(_sampleHandSize);
}
void CardsDisplaySettings::setCardLang(const QString &_cardLang)
{
if (_cardLang == getCardLang()) {
return;
}
setValue(_cardLang, "cardLang");
// Flush to disk immediately: the Oracle tool is a separate process that
// reads this value to decide which foreignData to import, so it must not
// observe a stale (pre-change) value.
sync();
emit cardLangChanged(_cardLang);
}
void CardsDisplaySettings::setCardSearchLanguage(int _cardSearchLanguage)
{
if (_cardSearchLanguage == getCardSearchLanguage()) {
return;
}
setValue(_cardSearchLanguage, "cardSearchLanguage");
emit cardSearchLanguageChanged(_cardSearchLanguage);
}