mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-06-11 00:24:47 -07:00
[LayoutSettings] Refactor how widgetSize settings are managed (#6594)
This commit is contained in:
parent
1eb6027443
commit
ac7ff3a0e9
8 changed files with 92 additions and 211 deletions
|
|
@ -75,7 +75,7 @@ AbstractTabDeckEditor::AbstractTabDeckEditor(TabSupervisor *_tabSupervisor) : Ta
|
|||
&AbstractTabDeckEditor::refreshShortcuts);
|
||||
}
|
||||
|
||||
void AbstractTabDeckEditor::registerDockWidget(QMenu *_viewMenu, QDockWidget *widget)
|
||||
void AbstractTabDeckEditor::registerDockWidget(QMenu *_viewMenu, QDockWidget *widget, const QSize &defaultSize)
|
||||
{
|
||||
QMenu *menu = _viewMenu->addMenu(QString());
|
||||
|
||||
|
|
@ -102,7 +102,7 @@ void AbstractTabDeckEditor::registerDockWidget(QMenu *_viewMenu, QDockWidget *wi
|
|||
connect(filter, &VisibilityChangeListener::visibilityChanged, aVisible,
|
||||
[aVisible](bool visible) { aVisible->setChecked(visible); });
|
||||
|
||||
dockToActions.insert(widget, {menu, aVisible, aFloating});
|
||||
dockToActions.insert(widget, {menu, aVisible, aFloating, defaultSize});
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -274,13 +274,14 @@ protected:
|
|||
QMenu *menu; ///< The menu containing the actions
|
||||
QAction *aVisible; ///< The menu action that toggles visibility
|
||||
QAction *aFloating; ///< The menu action that toggles floating
|
||||
QSize defaultSize; ///< The default size of the dock
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief registers a QDockWidget as a managed dock widget. Creates the associated actions and menu, adds them to
|
||||
* the viewMenu, and connects those actions to the tab's slots.
|
||||
*/
|
||||
void registerDockWidget(QMenu *_viewMenu, QDockWidget *widget);
|
||||
void registerDockWidget(QMenu *_viewMenu, QDockWidget *widget, const QSize &defaultSize);
|
||||
|
||||
/** @brief Confirms deck open action based on settings and modified state.
|
||||
* @param openInSameTabIfBlank Whether to reuse same tab if blank.
|
||||
|
|
|
|||
|
|
@ -54,11 +54,11 @@ void TabDeckEditor::createMenus()
|
|||
|
||||
viewMenu = new QMenu(this);
|
||||
|
||||
registerDockWidget(viewMenu, cardDatabaseDockWidget);
|
||||
registerDockWidget(viewMenu, cardInfoDockWidget);
|
||||
registerDockWidget(viewMenu, deckDockWidget);
|
||||
registerDockWidget(viewMenu, filterDockWidget);
|
||||
registerDockWidget(viewMenu, printingSelectorDockWidget);
|
||||
registerDockWidget(viewMenu, cardDatabaseDockWidget, {500, 500});
|
||||
registerDockWidget(viewMenu, cardInfoDockWidget, {250, 500});
|
||||
registerDockWidget(viewMenu, deckDockWidget, {250, 360});
|
||||
registerDockWidget(viewMenu, filterDockWidget, {250, 250});
|
||||
registerDockWidget(viewMenu, printingSelectorDockWidget, {525, 250});
|
||||
|
||||
connect(&SettingsCache::instance(), &SettingsCache::overrideAllCardArtWithPersonalPreferenceChanged, this,
|
||||
[this](bool enabled) { dockToActions[printingSelectorDockWidget].menu->setEnabled(!enabled); });
|
||||
|
|
@ -144,20 +144,14 @@ void TabDeckEditor::loadLayout()
|
|||
restoreGeometry(layouts.getDeckEditorGeometry());
|
||||
}
|
||||
|
||||
cardDatabaseDockWidget->setMinimumSize(layouts.getDeckEditorCardDatabaseSize());
|
||||
cardDatabaseDockWidget->setMaximumSize(layouts.getDeckEditorCardDatabaseSize());
|
||||
for (auto it = dockToActions.constKeyValueBegin(); it != dockToActions.constKeyValueEnd(); ++it) {
|
||||
auto dockWidget = it->first;
|
||||
auto actions = it->second;
|
||||
|
||||
cardInfoDockWidget->setMinimumSize(layouts.getDeckEditorCardSize());
|
||||
cardInfoDockWidget->setMaximumSize(layouts.getDeckEditorCardSize());
|
||||
|
||||
filterDockWidget->setMinimumSize(layouts.getDeckEditorFilterSize());
|
||||
filterDockWidget->setMaximumSize(layouts.getDeckEditorFilterSize());
|
||||
|
||||
deckDockWidget->setMinimumSize(layouts.getDeckEditorDeckSize());
|
||||
deckDockWidget->setMaximumSize(layouts.getDeckEditorDeckSize());
|
||||
|
||||
printingSelectorDockWidget->setMinimumSize(layouts.getDeckEditorPrintingSelectorSize());
|
||||
printingSelectorDockWidget->setMaximumSize(layouts.getDeckEditorPrintingSelectorSize());
|
||||
QSize size = layouts.getDeckEditorWidgetSize(dockWidget->objectName(), actions.defaultSize);
|
||||
dockWidget->setMinimumSize(size);
|
||||
dockWidget->setMaximumSize(size);
|
||||
}
|
||||
|
||||
QTimer::singleShot(100, this, &TabDeckEditor::freeDocksSize);
|
||||
}
|
||||
|
|
@ -208,11 +202,10 @@ bool TabDeckEditor::eventFilter(QObject *o, QEvent *e)
|
|||
LayoutsSettings &layouts = SettingsCache::instance().layouts();
|
||||
layouts.setDeckEditorLayoutState(saveState());
|
||||
layouts.setDeckEditorGeometry(saveGeometry());
|
||||
layouts.setDeckEditorCardDatabaseSize(cardDatabaseDockWidget->size());
|
||||
layouts.setDeckEditorCardSize(cardInfoDockWidget->size());
|
||||
layouts.setDeckEditorFilterSize(filterDockWidget->size());
|
||||
layouts.setDeckEditorDeckSize(deckDockWidget->size());
|
||||
layouts.setDeckEditorPrintingSelectorSize(printingSelectorDockWidget->size());
|
||||
|
||||
for (auto dockWidget : dockToActions.keys()) {
|
||||
layouts.setDeckEditorWidgetSize(dockWidget->objectName(), dockWidget->size());
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1034,12 +1034,12 @@ void TabGame::createViewMenuItems()
|
|||
{
|
||||
viewMenu = new QMenu(this);
|
||||
|
||||
registerDockWidget(viewMenu, cardInfoDock);
|
||||
registerDockWidget(viewMenu, messageLayoutDock);
|
||||
registerDockWidget(viewMenu, playerListDock);
|
||||
registerDockWidget(viewMenu, cardInfoDock, {250, 360});
|
||||
registerDockWidget(viewMenu, messageLayoutDock, {250, 200});
|
||||
registerDockWidget(viewMenu, playerListDock, {250, 50});
|
||||
|
||||
if (replayDock) {
|
||||
registerDockWidget(viewMenu, replayDock);
|
||||
registerDockWidget(viewMenu, replayDock, {900, 100});
|
||||
}
|
||||
|
||||
viewMenu->addSeparator();
|
||||
|
|
@ -1051,7 +1051,7 @@ void TabGame::createViewMenuItems()
|
|||
addTabMenu(viewMenu);
|
||||
}
|
||||
|
||||
void TabGame::registerDockWidget(QMenu *_viewMenu, QDockWidget *widget)
|
||||
void TabGame::registerDockWidget(QMenu *_viewMenu, QDockWidget *widget, const QSize &defaultSize)
|
||||
{
|
||||
QMenu *menu = _viewMenu->addMenu(QString());
|
||||
|
||||
|
|
@ -1078,7 +1078,7 @@ void TabGame::registerDockWidget(QMenu *_viewMenu, QDockWidget *widget)
|
|||
connect(filter, &VisibilityChangeListener::visibilityChanged, aVisible,
|
||||
[aVisible](bool visible) { aVisible->setChecked(visible); });
|
||||
|
||||
dockToActions.insert(widget, {menu, aVisible, aFloating});
|
||||
dockToActions.insert(widget, {menu, aVisible, aFloating, defaultSize});
|
||||
}
|
||||
|
||||
void TabGame::loadLayout()
|
||||
|
|
@ -1088,24 +1088,27 @@ void TabGame::loadLayout()
|
|||
restoreGeometry(layouts.getReplayPlayAreaGeometry());
|
||||
restoreState(layouts.getReplayPlayAreaLayoutState());
|
||||
|
||||
cardInfoDock->setMinimumSize(layouts.getReplayCardInfoSize());
|
||||
cardInfoDock->setMaximumSize(layouts.getReplayCardInfoSize());
|
||||
messageLayoutDock->setMinimumSize(layouts.getReplayMessageLayoutSize());
|
||||
messageLayoutDock->setMaximumSize(layouts.getReplayMessageLayoutSize());
|
||||
playerListDock->setMinimumSize(layouts.getReplayPlayerListSize());
|
||||
playerListDock->setMaximumSize(layouts.getReplayPlayerListSize());
|
||||
replayDock->setMinimumSize(layouts.getReplayReplaySize());
|
||||
replayDock->setMaximumSize(layouts.getReplayReplaySize());
|
||||
for (auto it = dockToActions.constKeyValueBegin(); it != dockToActions.constKeyValueEnd(); ++it) {
|
||||
auto dockWidget = it->first;
|
||||
auto actions = it->second;
|
||||
|
||||
QSize size = layouts.getReplayPlayAreaWidgetSize(dockWidget->objectName(), actions.defaultSize);
|
||||
dockWidget->setMinimumSize(size);
|
||||
dockWidget->setMaximumSize(size);
|
||||
}
|
||||
|
||||
} else {
|
||||
restoreGeometry(layouts.getGamePlayAreaGeometry());
|
||||
restoreState(layouts.getGamePlayAreaLayoutState());
|
||||
|
||||
cardInfoDock->setMinimumSize(layouts.getGameCardInfoSize());
|
||||
cardInfoDock->setMaximumSize(layouts.getGameCardInfoSize());
|
||||
messageLayoutDock->setMinimumSize(layouts.getGameMessageLayoutSize());
|
||||
messageLayoutDock->setMaximumSize(layouts.getGameMessageLayoutSize());
|
||||
playerListDock->setMinimumSize(layouts.getGamePlayerListSize());
|
||||
playerListDock->setMaximumSize(layouts.getGamePlayerListSize());
|
||||
for (auto it = dockToActions.constKeyValueBegin(); it != dockToActions.constKeyValueEnd(); ++it) {
|
||||
auto dockWidget = it->first;
|
||||
auto actions = it->second;
|
||||
|
||||
QSize size = layouts.getGamePlayAreaWidgetSize(dockWidget->objectName(), actions.defaultSize);
|
||||
dockWidget->setMinimumSize(size);
|
||||
dockWidget->setMaximumSize(size);
|
||||
}
|
||||
}
|
||||
|
||||
QTimer::singleShot(100, this, &TabGame::freeDocksSize);
|
||||
|
|
@ -1333,16 +1336,17 @@ void TabGame::hideEvent(QHideEvent *event)
|
|||
if (replayDock) {
|
||||
layouts.setReplayPlayAreaState(saveState());
|
||||
layouts.setReplayPlayAreaGeometry(saveGeometry());
|
||||
layouts.setReplayCardInfoSize(cardInfoDock->size());
|
||||
layouts.setReplayMessageLayoutSize(messageLayoutDock->size());
|
||||
layouts.setReplayPlayerListSize(playerListDock->size());
|
||||
layouts.setReplayReplaySize(replayDock->size());
|
||||
|
||||
for (auto dockWidget : dockToActions.keys()) {
|
||||
layouts.setReplayPlayAreaWidgetSize(dockWidget->objectName(), dockWidget->size());
|
||||
}
|
||||
} else {
|
||||
layouts.setGamePlayAreaState(saveState());
|
||||
layouts.setGamePlayAreaGeometry(saveGeometry());
|
||||
layouts.setGameCardInfoSize(cardInfoDock->size());
|
||||
layouts.setGameMessageLayoutSize(messageLayoutDock->size());
|
||||
layouts.setGamePlayerListSize(playerListDock->size());
|
||||
|
||||
for (auto dockWidget : dockToActions.keys()) {
|
||||
layouts.setGamePlayAreaWidgetSize(dockWidget->objectName(), dockWidget->size());
|
||||
}
|
||||
}
|
||||
|
||||
Tab::hideEvent(event);
|
||||
|
|
|
|||
|
|
@ -94,6 +94,7 @@ private:
|
|||
QMenu *menu;
|
||||
QAction *aVisible;
|
||||
QAction *aFloating;
|
||||
QSize defaultSize;
|
||||
};
|
||||
|
||||
QMap<QDockWidget *, DockActions> dockToActions;
|
||||
|
|
@ -117,7 +118,7 @@ private:
|
|||
void createMenuItems();
|
||||
void createReplayMenuItems();
|
||||
void createViewMenuItems();
|
||||
void registerDockWidget(QMenu *_viewMenu, QDockWidget *widget);
|
||||
void registerDockWidget(QMenu *_viewMenu, QDockWidget *widget, const QSize &defaultSize);
|
||||
void createCardInfoDock(bool bReplay = false);
|
||||
void createPlayerListDock(bool bReplay = false);
|
||||
void createMessageDock(bool bReplay = false);
|
||||
|
|
|
|||
|
|
@ -97,10 +97,10 @@ void TabDeckEditorVisual::createMenus()
|
|||
|
||||
viewMenu = new QMenu(this);
|
||||
|
||||
registerDockWidget(viewMenu, cardInfoDockWidget);
|
||||
registerDockWidget(viewMenu, deckDockWidget);
|
||||
registerDockWidget(viewMenu, filterDockWidget);
|
||||
registerDockWidget(viewMenu, printingSelectorDockWidget);
|
||||
registerDockWidget(viewMenu, cardInfoDockWidget, {250, 500});
|
||||
registerDockWidget(viewMenu, deckDockWidget, {250, 360});
|
||||
registerDockWidget(viewMenu, filterDockWidget, {250, 250});
|
||||
registerDockWidget(viewMenu, printingSelectorDockWidget, {525, 250});
|
||||
|
||||
viewMenu->addSeparator();
|
||||
|
||||
|
|
@ -274,17 +274,14 @@ void TabDeckEditorVisual::loadLayout()
|
|||
restoreGeometry(layouts.getDeckEditorGeometry());
|
||||
}
|
||||
|
||||
cardInfoDockWidget->setMinimumSize(layouts.getDeckEditorCardSize());
|
||||
cardInfoDockWidget->setMaximumSize(layouts.getDeckEditorCardSize());
|
||||
for (auto it = dockToActions.constKeyValueBegin(); it != dockToActions.constKeyValueEnd(); ++it) {
|
||||
auto dockWidget = it->first;
|
||||
auto actions = it->second;
|
||||
|
||||
filterDockWidget->setMinimumSize(layouts.getDeckEditorFilterSize());
|
||||
filterDockWidget->setMaximumSize(layouts.getDeckEditorFilterSize());
|
||||
|
||||
deckDockWidget->setMinimumSize(layouts.getDeckEditorDeckSize());
|
||||
deckDockWidget->setMaximumSize(layouts.getDeckEditorDeckSize());
|
||||
|
||||
printingSelectorDockWidget->setMinimumSize(layouts.getDeckEditorPrintingSelectorSize());
|
||||
printingSelectorDockWidget->setMaximumSize(layouts.getDeckEditorPrintingSelectorSize());
|
||||
QSize size = layouts.getDeckEditorWidgetSize(dockWidget->objectName(), actions.defaultSize);
|
||||
dockWidget->setMinimumSize(size);
|
||||
dockWidget->setMaximumSize(size);
|
||||
}
|
||||
|
||||
QTimer::singleShot(100, this, &TabDeckEditorVisual::freeDocksSize);
|
||||
}
|
||||
|
|
@ -349,10 +346,10 @@ bool TabDeckEditorVisual::eventFilter(QObject *o, QEvent *e)
|
|||
LayoutsSettings &layouts = SettingsCache::instance().layouts();
|
||||
layouts.setDeckEditorLayoutState(saveState());
|
||||
layouts.setDeckEditorGeometry(saveGeometry());
|
||||
layouts.setDeckEditorCardSize(cardInfoDockWidget->size());
|
||||
layouts.setDeckEditorFilterSize(filterDockWidget->size());
|
||||
layouts.setDeckEditorDeckSize(deckDockWidget->size());
|
||||
layouts.setDeckEditorPrintingSelectorSize(printingSelectorDockWidget->size());
|
||||
|
||||
for (auto dockWidget : dockToActions.keys()) {
|
||||
layouts.setDeckEditorWidgetSize(dockWidget->objectName(), dockWidget->size());
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue