mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-11-11 04:23:29 -08:00
[Settings] Add hover zoom/panel triggers, delays, and double-confirm
This commit is contained in:
parent
c7e8422808
commit
92f05fd363
7 changed files with 282 additions and 0 deletions
|
|
@ -569,6 +569,9 @@ private:
|
||||||
{"Player/aRevealToAll", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Reveal Selected Cards to All Players"),
|
{"Player/aRevealToAll", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Reveal Selected Cards to All Players"),
|
||||||
parseSequenceString(""),
|
parseSequenceString(""),
|
||||||
ShortcutGroup::Playing_Area)},
|
ShortcutGroup::Playing_Area)},
|
||||||
|
{"Player/aShowHoverPanel", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Show Hover Panel for Card"),
|
||||||
|
parseSequenceString(""),
|
||||||
|
ShortcutGroup::Playing_Area)},
|
||||||
{"Player/aMoveToBottomLibrary", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Bottom of Library"),
|
{"Player/aMoveToBottomLibrary", ShortcutKey(QT_TRANSLATE_NOOP("shortcutsTab", "Bottom of Library"),
|
||||||
parseSequenceString("Ctrl+B"),
|
parseSequenceString("Ctrl+B"),
|
||||||
ShortcutGroup::Move_selected)},
|
ShortcutGroup::Move_selected)},
|
||||||
|
|
|
||||||
|
|
@ -28,6 +28,14 @@ enum visualDeckStoragePromptForConversionIndex
|
||||||
visualDeckStoragePromptForConversionIndexAlways
|
visualDeckStoragePromptForConversionIndexAlways
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// A corrupt or out-of-range stored trigger would otherwise select index -1 and leave
|
||||||
|
// the row half-hidden; clamp it back into the known trigger range.
|
||||||
|
static int clampHoverTrigger(int trigger)
|
||||||
|
{
|
||||||
|
return qBound(static_cast<int>(CardsDisplaySettings::HoverPanelTriggerHover), trigger,
|
||||||
|
static_cast<int>(CardsDisplaySettings::HoverPanelTriggerShortcut));
|
||||||
|
}
|
||||||
|
|
||||||
UserInterfaceSettingsPage::UserInterfaceSettingsPage()
|
UserInterfaceSettingsPage::UserInterfaceSettingsPage()
|
||||||
{
|
{
|
||||||
// general settings
|
// general settings
|
||||||
|
|
@ -154,6 +162,66 @@ UserInterfaceSettingsPage::UserInterfaceSettingsPage()
|
||||||
animationGroupBox = new QGroupBox;
|
animationGroupBox = new QGroupBox;
|
||||||
animationGroupBox->setLayout(animationGrid);
|
animationGroupBox->setLayout(animationGrid);
|
||||||
|
|
||||||
|
// hover panel settings
|
||||||
|
hoverZoomTriggerSelector.addItem(QString());
|
||||||
|
hoverZoomTriggerSelector.addItem(QString());
|
||||||
|
hoverZoomTriggerSelector.addItem(QString());
|
||||||
|
hoverZoomTriggerSelector.addItem(QString());
|
||||||
|
hoverZoomTriggerSelector.setCurrentIndex(
|
||||||
|
clampHoverTrigger(SettingsCache::instance().cardsDisplay().getHoverZoomTrigger()));
|
||||||
|
connect(&hoverZoomTriggerSelector, &QComboBox::currentIndexChanged, &SettingsCache::instance().cardsDisplay(),
|
||||||
|
&CardsDisplaySettings::setHoverZoomTrigger);
|
||||||
|
|
||||||
|
hoverPanelTriggerSelector.addItem(QString());
|
||||||
|
hoverPanelTriggerSelector.addItem(QString());
|
||||||
|
hoverPanelTriggerSelector.addItem(QString());
|
||||||
|
hoverPanelTriggerSelector.addItem(QString());
|
||||||
|
hoverPanelTriggerSelector.setCurrentIndex(
|
||||||
|
clampHoverTrigger(SettingsCache::instance().cardsDisplay().getHoverPanelTrigger()));
|
||||||
|
connect(&hoverPanelTriggerSelector, &QComboBox::currentIndexChanged, &SettingsCache::instance().cardsDisplay(),
|
||||||
|
&CardsDisplaySettings::setHoverPanelTrigger);
|
||||||
|
|
||||||
|
hoverPanelDoubleConfirmCheckBox.setChecked(SettingsCache::instance().cardsDisplay().getHoverPanelDoubleConfirm());
|
||||||
|
connect(&hoverPanelDoubleConfirmCheckBox, &QCheckBox::QT_STATE_CHANGED, &SettingsCache::instance().cardsDisplay(),
|
||||||
|
&CardsDisplaySettings::setHoverPanelDoubleConfirm);
|
||||||
|
|
||||||
|
hoverZoomDelayBox.setRange(0, 5000);
|
||||||
|
hoverZoomDelayBox.setSingleStep(50);
|
||||||
|
hoverZoomDelayBox.setSuffix(" ms");
|
||||||
|
hoverZoomDelayBox.setValue(SettingsCache::instance().cardsDisplay().getHoverZoomDelayMs());
|
||||||
|
connect(&hoverZoomDelayBox, qOverload<int>(&QSpinBox::valueChanged), &SettingsCache::instance().cardsDisplay(),
|
||||||
|
&CardsDisplaySettings::setHoverZoomDelayMs);
|
||||||
|
|
||||||
|
hoverPanelDelayBox.setRange(0, 5000);
|
||||||
|
hoverPanelDelayBox.setSingleStep(50);
|
||||||
|
hoverPanelDelayBox.setSuffix(" ms");
|
||||||
|
hoverPanelDelayBox.setValue(SettingsCache::instance().cardsDisplay().getHoverPanelDelayMs());
|
||||||
|
connect(&hoverPanelDelayBox, qOverload<int>(&QSpinBox::valueChanged), &SettingsCache::instance().cardsDisplay(),
|
||||||
|
&CardsDisplaySettings::setHoverPanelDelayMs);
|
||||||
|
|
||||||
|
auto *hoverPanelGrid = new QGridLayout;
|
||||||
|
hoverPanelGrid->addWidget(&hoverZoomTriggerLabel, 0, 0);
|
||||||
|
hoverPanelGrid->addWidget(&hoverZoomTriggerSelector, 0, 1);
|
||||||
|
hoverPanelGrid->addWidget(&hoverPanelTriggerLabel, 1, 0);
|
||||||
|
hoverPanelGrid->addWidget(&hoverPanelTriggerSelector, 1, 1);
|
||||||
|
hoverPanelGrid->addWidget(&hoverPanelDoubleConfirmCheckBox, 2, 0, 1, 2);
|
||||||
|
hoverPanelGrid->addWidget(&hoverZoomDelayLabel, 3, 0);
|
||||||
|
hoverPanelGrid->addWidget(&hoverZoomDelayBox, 3, 1);
|
||||||
|
hoverPanelGrid->addWidget(&hoverPanelDelayLabel, 4, 0);
|
||||||
|
hoverPanelGrid->addWidget(&hoverPanelDelayBox, 4, 1);
|
||||||
|
hoverWheelNoteLabel.setWordWrap(true);
|
||||||
|
hoverPanelGrid->addWidget(&hoverWheelNoteLabel, 5, 0, 1, 2);
|
||||||
|
connect(&hoverZoomTriggerSelector, &QComboBox::currentIndexChanged, this,
|
||||||
|
&UserInterfaceSettingsPage::updateHoverPanelUiState);
|
||||||
|
connect(&hoverPanelTriggerSelector, &QComboBox::currentIndexChanged, this,
|
||||||
|
&UserInterfaceSettingsPage::updateHoverPanelUiState);
|
||||||
|
connect(&hoverPanelDoubleConfirmCheckBox, &QCheckBox::QT_STATE_CHANGED, this,
|
||||||
|
&UserInterfaceSettingsPage::updateHoverPanelUiState);
|
||||||
|
updateHoverPanelUiState();
|
||||||
|
|
||||||
|
hoverPanelGroupBox = new QGroupBox;
|
||||||
|
hoverPanelGroupBox->setLayout(hoverPanelGrid);
|
||||||
|
|
||||||
// deck editor settings
|
// deck editor settings
|
||||||
openDeckInNewTabCheckBox.setChecked(SettingsCache::instance().deckEditor().getOpenDeckInNewTab());
|
openDeckInNewTabCheckBox.setChecked(SettingsCache::instance().deckEditor().getOpenDeckInNewTab());
|
||||||
connect(&openDeckInNewTabCheckBox, &QCheckBox::QT_STATE_CHANGED, &SettingsCache::instance().deckEditor(),
|
connect(&openDeckInNewTabCheckBox, &QCheckBox::QT_STATE_CHANGED, &SettingsCache::instance().deckEditor(),
|
||||||
|
|
@ -293,6 +361,7 @@ UserInterfaceSettingsPage::UserInterfaceSettingsPage()
|
||||||
mainLayout->addWidget(generalGroupBox);
|
mainLayout->addWidget(generalGroupBox);
|
||||||
mainLayout->addWidget(notificationsGroupBox);
|
mainLayout->addWidget(notificationsGroupBox);
|
||||||
mainLayout->addWidget(animationGroupBox);
|
mainLayout->addWidget(animationGroupBox);
|
||||||
|
mainLayout->addWidget(hoverPanelGroupBox);
|
||||||
mainLayout->addWidget(deckEditorGroupBox);
|
mainLayout->addWidget(deckEditorGroupBox);
|
||||||
mainLayout->addWidget(replayGroupBox);
|
mainLayout->addWidget(replayGroupBox);
|
||||||
mainLayout->addStretch();
|
mainLayout->addStretch();
|
||||||
|
|
@ -351,6 +420,29 @@ void UserInterfaceSettingsPage::updateCommanderSpellbookUiState()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void UserInterfaceSettingsPage::updateHoverPanelUiState()
|
||||||
|
{
|
||||||
|
// Phase timers only apply to the hover trigger; double-confirm only applies when
|
||||||
|
// both phases share one trigger (repeating it).
|
||||||
|
const auto hoverTrigger = CardsDisplaySettings::HoverPanelTriggerHover;
|
||||||
|
const auto wheelTrigger = CardsDisplaySettings::HoverPanelTriggerWheel;
|
||||||
|
const bool zoomOnHover = hoverZoomTriggerSelector.currentIndex() == hoverTrigger;
|
||||||
|
const bool panelOnHover = hoverPanelTriggerSelector.currentIndex() == hoverTrigger;
|
||||||
|
const bool sharedTrigger = hoverZoomTriggerSelector.currentIndex() == hoverPanelTriggerSelector.currentIndex();
|
||||||
|
hoverZoomDelayLabel.setVisible(zoomOnHover);
|
||||||
|
hoverZoomDelayBox.setVisible(zoomOnHover);
|
||||||
|
hoverPanelDelayLabel.setVisible(panelOnHover);
|
||||||
|
hoverPanelDelayBox.setVisible(panelOnHover);
|
||||||
|
hoverPanelDoubleConfirmCheckBox.setEnabled(sharedTrigger);
|
||||||
|
const bool panelAuto = panelOnHover && !(sharedTrigger && hoverPanelDoubleConfirmCheckBox.isChecked());
|
||||||
|
hoverPanelDelayLabel.setEnabled(panelAuto);
|
||||||
|
hoverPanelDelayBox.setEnabled(panelAuto);
|
||||||
|
// The wheel trigger consumes wheel events over cards, so the board cannot scroll there.
|
||||||
|
const bool wheelBound = hoverZoomTriggerSelector.currentIndex() == wheelTrigger ||
|
||||||
|
hoverPanelTriggerSelector.currentIndex() == wheelTrigger;
|
||||||
|
hoverWheelNoteLabel.setVisible(wheelBound);
|
||||||
|
}
|
||||||
|
|
||||||
void UserInterfaceSettingsPage::retranslateUi()
|
void UserInterfaceSettingsPage::retranslateUi()
|
||||||
{
|
{
|
||||||
generalGroupBox->setTitle(tr("General interface settings"));
|
generalGroupBox->setTitle(tr("General interface settings"));
|
||||||
|
|
@ -380,6 +472,21 @@ void UserInterfaceSettingsPage::retranslateUi()
|
||||||
lifeCounterAnimationsCheckBox.setText(tr("Life counter flash"));
|
lifeCounterAnimationsCheckBox.setText(tr("Life counter flash"));
|
||||||
battlefieldFlashCheckBox.setText(tr("Battlefield flash on damage"));
|
battlefieldFlashCheckBox.setText(tr("Battlefield flash on damage"));
|
||||||
|
|
||||||
|
hoverPanelGroupBox->setTitle(tr("Hover panel settings"));
|
||||||
|
hoverPanelTriggerLabel.setText(tr("Show the card panel on:"));
|
||||||
|
hoverZoomTriggerLabel.setText(tr("Zoom the card on:"));
|
||||||
|
for (auto *selector : {&hoverPanelTriggerSelector, &hoverZoomTriggerSelector}) {
|
||||||
|
selector->setItemText(CardsDisplaySettings::HoverPanelTriggerHover, tr("Hover"));
|
||||||
|
selector->setItemText(CardsDisplaySettings::HoverPanelTriggerRightClick, tr("Right-click"));
|
||||||
|
selector->setItemText(CardsDisplaySettings::HoverPanelTriggerWheel, tr("Mouse wheel"));
|
||||||
|
selector->setItemText(CardsDisplaySettings::HoverPanelTriggerShortcut, tr("Keyboard shortcut"));
|
||||||
|
}
|
||||||
|
hoverPanelDoubleConfirmCheckBox.setText(tr("Zoom first; repeat the action to show the panel"));
|
||||||
|
hoverZoomDelayLabel.setText(tr("Time before the zoom kicks in:"));
|
||||||
|
hoverPanelDelayLabel.setText(tr("Time before the tab panel shows up:"));
|
||||||
|
hoverWheelNoteLabel.setText(
|
||||||
|
tr("Note: the mouse wheel action replaces board scrolling over cards; scroll up to zoom back out."));
|
||||||
|
|
||||||
deckEditorGroupBox->setTitle(tr("Deck editor/storage settings"));
|
deckEditorGroupBox->setTitle(tr("Deck editor/storage settings"));
|
||||||
openDeckInNewTabCheckBox.setText(tr("Open deck in new tab by default"));
|
openDeckInNewTabCheckBox.setText(tr("Open deck in new tab by default"));
|
||||||
visualDeckEditorShowCardCountsCheckBox.setText(tr("Show card counts in Visual Deck Editor"));
|
visualDeckEditorShowCardCountsCheckBox.setText(tr("Show card counts in Visual Deck Editor"));
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,7 @@ private slots:
|
||||||
void enableAllAnimations();
|
void enableAllAnimations();
|
||||||
void disableAllAnimations();
|
void disableAllAnimations();
|
||||||
void updateCommanderSpellbookUiState();
|
void updateCommanderSpellbookUiState();
|
||||||
|
void updateHoverPanelUiState();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QCheckBox doubleClickToPlayCheckBox;
|
QCheckBox doubleClickToPlayCheckBox;
|
||||||
|
|
@ -47,6 +48,17 @@ private:
|
||||||
QCheckBox lifeCounterAnimationsCheckBox;
|
QCheckBox lifeCounterAnimationsCheckBox;
|
||||||
QCheckBox battlefieldFlashCheckBox;
|
QCheckBox battlefieldFlashCheckBox;
|
||||||
|
|
||||||
|
QLabel hoverPanelTriggerLabel;
|
||||||
|
QComboBox hoverPanelTriggerSelector;
|
||||||
|
QLabel hoverZoomTriggerLabel;
|
||||||
|
QComboBox hoverZoomTriggerSelector;
|
||||||
|
QCheckBox hoverPanelDoubleConfirmCheckBox;
|
||||||
|
QLabel hoverZoomDelayLabel;
|
||||||
|
QSpinBox hoverZoomDelayBox;
|
||||||
|
QLabel hoverPanelDelayLabel;
|
||||||
|
QSpinBox hoverPanelDelayBox;
|
||||||
|
QLabel hoverWheelNoteLabel;
|
||||||
|
|
||||||
QCheckBox openDeckInNewTabCheckBox;
|
QCheckBox openDeckInNewTabCheckBox;
|
||||||
QLabel visualDeckStoragePromptForConversionLabel;
|
QLabel visualDeckStoragePromptForConversionLabel;
|
||||||
QComboBox visualDeckStoragePromptForConversionSelector;
|
QComboBox visualDeckStoragePromptForConversionSelector;
|
||||||
|
|
@ -69,6 +81,7 @@ private:
|
||||||
QGroupBox *generalGroupBox;
|
QGroupBox *generalGroupBox;
|
||||||
QGroupBox *notificationsGroupBox;
|
QGroupBox *notificationsGroupBox;
|
||||||
QGroupBox *animationGroupBox;
|
QGroupBox *animationGroupBox;
|
||||||
|
QGroupBox *hoverPanelGroupBox;
|
||||||
QGroupBox *deckEditorGroupBox;
|
QGroupBox *deckEditorGroupBox;
|
||||||
QGroupBox *replayGroupBox;
|
QGroupBox *replayGroupBox;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,11 @@ public:
|
||||||
[[nodiscard]] virtual bool getArrowDrawAnimation() const = 0;
|
[[nodiscard]] virtual bool getArrowDrawAnimation() const = 0;
|
||||||
[[nodiscard]] virtual bool getAutoRotateSidewaysLayoutCards() const = 0;
|
[[nodiscard]] virtual bool getAutoRotateSidewaysLayoutCards() const = 0;
|
||||||
[[nodiscard]] virtual bool getScaleCards() const = 0;
|
[[nodiscard]] virtual bool getScaleCards() const = 0;
|
||||||
|
[[nodiscard]] virtual int getHoverPanelTrigger() const = 0;
|
||||||
|
[[nodiscard]] virtual int getHoverZoomTrigger() const = 0;
|
||||||
|
[[nodiscard]] virtual bool getHoverPanelDoubleConfirm() const = 0;
|
||||||
|
[[nodiscard]] virtual int getHoverZoomDelayMs() const = 0;
|
||||||
|
[[nodiscard]] virtual int getHoverPanelDelayMs() const = 0;
|
||||||
[[nodiscard]] virtual int getStackCardOverlapPercent() const = 0;
|
[[nodiscard]] virtual int getStackCardOverlapPercent() const = 0;
|
||||||
[[nodiscard]] virtual int getCardInfoViewMode() const = 0;
|
[[nodiscard]] virtual int getCardInfoViewMode() const = 0;
|
||||||
[[nodiscard]] virtual int getVisualDeckStorageCardSize() const = 0;
|
[[nodiscard]] virtual int getVisualDeckStorageCardSize() const = 0;
|
||||||
|
|
|
||||||
|
|
@ -68,6 +68,31 @@ bool CardsDisplaySettings::getScaleCards() const
|
||||||
return getValue("scaleCards", QString(), QString(), true).toBool();
|
return getValue("scaleCards", QString(), QString(), true).toBool();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int CardsDisplaySettings::getHoverPanelTrigger() const
|
||||||
|
{
|
||||||
|
return getValue("hoverPanelTrigger", QString(), QString(), 0).toInt();
|
||||||
|
}
|
||||||
|
|
||||||
|
int CardsDisplaySettings::getHoverZoomTrigger() const
|
||||||
|
{
|
||||||
|
return getValue("hoverZoomTrigger", QString(), QString(), 0).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
|
int CardsDisplaySettings::getStackCardOverlapPercent() const
|
||||||
{
|
{
|
||||||
return getValue("verticalCardOverlapPercent", QString(), QString(), 33).toInt();
|
return getValue("verticalCardOverlapPercent", QString(), QString(), 33).toInt();
|
||||||
|
|
@ -188,6 +213,36 @@ void CardsDisplaySettings::setCardScaling(bool _scaleCards)
|
||||||
setValue(_scaleCards, "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)
|
void CardsDisplaySettings::setStackCardOverlapPercent(int _verticalCardOverlapPercent)
|
||||||
{
|
{
|
||||||
setValue(_verticalCardOverlapPercent, "verticalCardOverlapPercent");
|
setValue(_verticalCardOverlapPercent, "verticalCardOverlapPercent");
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,16 @@ class CardsDisplaySettings : public SettingsManager, public ICardsDisplaySetting
|
||||||
friend class SettingsCache;
|
friend class SettingsCache;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
/// What can summon the hover zoom or panel. Stored as int; values are the
|
||||||
|
/// serialization contract, so never reorder or renumber.
|
||||||
|
enum HoverPanelTrigger
|
||||||
|
{
|
||||||
|
HoverPanelTriggerHover = 0,
|
||||||
|
HoverPanelTriggerRightClick = 1,
|
||||||
|
HoverPanelTriggerWheel = 2,
|
||||||
|
HoverPanelTriggerShortcut = 3
|
||||||
|
};
|
||||||
|
|
||||||
[[nodiscard]] bool getDisplayCardNames() const override;
|
[[nodiscard]] bool getDisplayCardNames() const override;
|
||||||
[[nodiscard]] bool getRoundCardCorners() const override;
|
[[nodiscard]] bool getRoundCardCorners() const override;
|
||||||
[[nodiscard]] bool getOverrideAllCardArtWithPersonalPreference() const override;
|
[[nodiscard]] bool getOverrideAllCardArtWithPersonalPreference() const override;
|
||||||
|
|
@ -26,6 +36,16 @@ public:
|
||||||
[[nodiscard]] bool getArrowDrawAnimation() const override;
|
[[nodiscard]] bool getArrowDrawAnimation() const override;
|
||||||
[[nodiscard]] bool getAutoRotateSidewaysLayoutCards() const override;
|
[[nodiscard]] bool getAutoRotateSidewaysLayoutCards() const override;
|
||||||
[[nodiscard]] bool getScaleCards() const override;
|
[[nodiscard]] bool getScaleCards() const override;
|
||||||
|
/// What summons the in-game card hover panel (a HoverPanelTrigger value).
|
||||||
|
[[nodiscard]] int getHoverPanelTrigger() const override;
|
||||||
|
/// What zooms the hovered card (a HoverPanelTrigger value). Zoom and panel triggers are independent.
|
||||||
|
[[nodiscard]] int getHoverZoomTrigger() const override;
|
||||||
|
/// When true, the trigger first only zooms; repeating it shows the panel.
|
||||||
|
[[nodiscard]] bool getHoverPanelDoubleConfirm() const override;
|
||||||
|
/// Hover dwell before the zoom kicks in (ms). Only used with the hover trigger.
|
||||||
|
[[nodiscard]] int getHoverZoomDelayMs() const override;
|
||||||
|
/// Wait after the zoom before the tab panel shows (ms). Hover trigger, one-step only.
|
||||||
|
[[nodiscard]] int getHoverPanelDelayMs() const override;
|
||||||
[[nodiscard]] int getStackCardOverlapPercent() const override;
|
[[nodiscard]] int getStackCardOverlapPercent() const override;
|
||||||
[[nodiscard]] int getCardInfoViewMode() const override;
|
[[nodiscard]] int getCardInfoViewMode() const override;
|
||||||
[[nodiscard]] int getVisualDeckStorageCardSize() const override;
|
[[nodiscard]] int getVisualDeckStorageCardSize() const override;
|
||||||
|
|
@ -49,6 +69,11 @@ public:
|
||||||
void setArrowDrawAnimation(bool _arrowDrawAnimation);
|
void setArrowDrawAnimation(bool _arrowDrawAnimation);
|
||||||
void setAutoRotateSidewaysLayoutCards(bool _autoRotateSidewaysLayoutCards);
|
void setAutoRotateSidewaysLayoutCards(bool _autoRotateSidewaysLayoutCards);
|
||||||
void setCardScaling(bool _scaleCards);
|
void setCardScaling(bool _scaleCards);
|
||||||
|
void setHoverPanelTrigger(int _trigger);
|
||||||
|
void setHoverZoomTrigger(int _trigger);
|
||||||
|
void setHoverPanelDoubleConfirm(bool _doubleConfirm);
|
||||||
|
void setHoverZoomDelayMs(int _ms);
|
||||||
|
void setHoverPanelDelayMs(int _ms);
|
||||||
void setStackCardOverlapPercent(int _verticalCardOverlapPercent);
|
void setStackCardOverlapPercent(int _verticalCardOverlapPercent);
|
||||||
void setCardInfoViewMode(int _viewMode);
|
void setCardInfoViewMode(int _viewMode);
|
||||||
void setVisualDeckStorageCardSize(int _cardSize);
|
void setVisualDeckStorageCardSize(int _cardSize);
|
||||||
|
|
@ -78,6 +103,11 @@ signals:
|
||||||
void sampleHandSizeChanged(int amount);
|
void sampleHandSizeChanged(int amount);
|
||||||
void cardLangChanged(const QString &lang);
|
void cardLangChanged(const QString &lang);
|
||||||
void cardSearchLanguageChanged(int cardSearchLanguage);
|
void cardSearchLanguageChanged(int cardSearchLanguage);
|
||||||
|
void hoverPanelTriggerChanged(int trigger);
|
||||||
|
void hoverZoomTriggerChanged(int trigger);
|
||||||
|
void hoverPanelDoubleConfirmChanged(bool doubleConfirm);
|
||||||
|
void hoverZoomDelayMsChanged(int ms);
|
||||||
|
void hoverPanelDelayMsChanged(int ms);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit CardsDisplaySettings(const QString &settingPath, QObject *parent = nullptr);
|
explicit CardsDisplaySettings(const QString &settingPath, QObject *parent = nullptr);
|
||||||
|
|
|
||||||
|
|
@ -683,6 +683,75 @@ TEST_F(SettingsDefaultsTest, CardsDisplay_ArrowDrawAnimation_Default)
|
||||||
ASSERT_EQ(s.getArrowDrawAnimation(), true);
|
ASSERT_EQ(s.getArrowDrawAnimation(), true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST_F(SettingsDefaultsTest, CardsDisplay_HoverPanelTrigger_Default)
|
||||||
|
{
|
||||||
|
CardsDisplaySettings s(settingsPath, nullptr);
|
||||||
|
ASSERT_EQ(s.getHoverPanelTrigger(), 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(SettingsDefaultsTest, CardsDisplay_HoverPanelTrigger_SetAndGet)
|
||||||
|
{
|
||||||
|
CardsDisplaySettings s(settingsPath, nullptr);
|
||||||
|
s.setHoverPanelTrigger(2);
|
||||||
|
ASSERT_EQ(s.getHoverPanelTrigger(), 2);
|
||||||
|
s.setHoverPanelTrigger(0);
|
||||||
|
ASSERT_EQ(s.getHoverPanelTrigger(), 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(SettingsDefaultsTest, CardsDisplay_HoverZoomTrigger_Default)
|
||||||
|
{
|
||||||
|
CardsDisplaySettings s(settingsPath, nullptr);
|
||||||
|
ASSERT_EQ(s.getHoverZoomTrigger(), 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(SettingsDefaultsTest, CardsDisplay_HoverZoomTrigger_SetAndGet)
|
||||||
|
{
|
||||||
|
CardsDisplaySettings s(settingsPath, nullptr);
|
||||||
|
s.setHoverZoomTrigger(1);
|
||||||
|
ASSERT_EQ(s.getHoverZoomTrigger(), 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(SettingsDefaultsTest, CardsDisplay_HoverPanelDoubleConfirm_Default)
|
||||||
|
{
|
||||||
|
CardsDisplaySettings s(settingsPath, nullptr);
|
||||||
|
ASSERT_EQ(s.getHoverPanelDoubleConfirm(), false);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(SettingsDefaultsTest, CardsDisplay_HoverPanelDoubleConfirm_SetAndGet)
|
||||||
|
{
|
||||||
|
CardsDisplaySettings s(settingsPath, nullptr);
|
||||||
|
s.setHoverPanelDoubleConfirm(true);
|
||||||
|
ASSERT_EQ(s.getHoverPanelDoubleConfirm(), true);
|
||||||
|
s.setHoverPanelDoubleConfirm(false);
|
||||||
|
ASSERT_EQ(s.getHoverPanelDoubleConfirm(), false);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(SettingsDefaultsTest, CardsDisplay_HoverZoomDelayMs_Default)
|
||||||
|
{
|
||||||
|
CardsDisplaySettings s(settingsPath, nullptr);
|
||||||
|
ASSERT_EQ(s.getHoverZoomDelayMs(), 400);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(SettingsDefaultsTest, CardsDisplay_HoverZoomDelayMs_SetAndGet)
|
||||||
|
{
|
||||||
|
CardsDisplaySettings s(settingsPath, nullptr);
|
||||||
|
s.setHoverZoomDelayMs(750);
|
||||||
|
ASSERT_EQ(s.getHoverZoomDelayMs(), 750);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(SettingsDefaultsTest, CardsDisplay_HoverPanelDelayMs_Default)
|
||||||
|
{
|
||||||
|
CardsDisplaySettings s(settingsPath, nullptr);
|
||||||
|
ASSERT_EQ(s.getHoverPanelDelayMs(), 200);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(SettingsDefaultsTest, CardsDisplay_HoverPanelDelayMs_SetAndGet)
|
||||||
|
{
|
||||||
|
CardsDisplaySettings s(settingsPath, nullptr);
|
||||||
|
s.setHoverPanelDelayMs(0);
|
||||||
|
ASSERT_EQ(s.getHoverPanelDelayMs(), 0);
|
||||||
|
}
|
||||||
|
|
||||||
TEST_F(SettingsDefaultsTest, CardsDisplay_CardLang_Default)
|
TEST_F(SettingsDefaultsTest, CardsDisplay_CardLang_Default)
|
||||||
{
|
{
|
||||||
CardsDisplaySettings s(settingsPath, nullptr);
|
CardsDisplaySettings s(settingsPath, nullptr);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue