[TabGame] Notes dockWidget

This commit is contained in:
RickyRister 2026-02-26 00:11:47 -08:00
parent 9794893b63
commit 4d26bc9f82
2 changed files with 35 additions and 16 deletions

View file

@ -31,6 +31,7 @@
#include <QLabel> #include <QLabel>
#include <QMenu> #include <QMenu>
#include <QMessageBox> #include <QMessageBox>
#include <QPlainTextEdit>
#include <QStackedWidget> #include <QStackedWidget>
#include <QTimer> #include <QTimer>
#include <QWidget> #include <QWidget>
@ -51,6 +52,7 @@ TabGame::TabGame(TabSupervisor *_tabSupervisor, GameReplay *_replay)
createCardInfoDock(true); createCardInfoDock(true);
createPlayerListDock(true); createPlayerListDock(true);
createNotesDock(true);
createMessageDock(true); createMessageDock(true);
createPlayAreaWidget(true); createPlayAreaWidget(true);
createDeckViewContainerWidget(true); createDeckViewContainerWidget(true);
@ -58,6 +60,7 @@ TabGame::TabGame(TabSupervisor *_tabSupervisor, GameReplay *_replay)
addDockWidget(Qt::RightDockWidgetArea, cardInfoDock); addDockWidget(Qt::RightDockWidgetArea, cardInfoDock);
addDockWidget(Qt::RightDockWidgetArea, playerListDock); addDockWidget(Qt::RightDockWidgetArea, playerListDock);
addDockWidget(Qt::RightDockWidgetArea, notesDock);
addDockWidget(Qt::RightDockWidgetArea, messageLayoutDock); addDockWidget(Qt::RightDockWidgetArea, messageLayoutDock);
addDockWidget(Qt::BottomDockWidgetArea, replayDock); addDockWidget(Qt::BottomDockWidgetArea, replayDock);
@ -95,6 +98,7 @@ TabGame::TabGame(TabSupervisor *_tabSupervisor,
createCardInfoDock(); createCardInfoDock();
createPlayerListDock(); createPlayerListDock();
createNotesDock();
createMessageDock(); createMessageDock();
createPlayAreaWidget(); createPlayAreaWidget();
createDeckViewContainerWidget(); createDeckViewContainerWidget();
@ -102,6 +106,7 @@ TabGame::TabGame(TabSupervisor *_tabSupervisor,
addDockWidget(Qt::RightDockWidgetArea, cardInfoDock); addDockWidget(Qt::RightDockWidgetArea, cardInfoDock);
addDockWidget(Qt::RightDockWidgetArea, playerListDock); addDockWidget(Qt::RightDockWidgetArea, playerListDock);
addDockWidget(Qt::RightDockWidgetArea, notesDock);
addDockWidget(Qt::RightDockWidgetArea, messageLayoutDock); addDockWidget(Qt::RightDockWidgetArea, messageLayoutDock);
mainWidget = new QStackedWidget(this); mainWidget = new QStackedWidget(this);
@ -278,6 +283,7 @@ void TabGame::retranslateUi()
updatePlayerListDockTitle(); updatePlayerListDockTitle();
cardInfoDock->setWindowTitle(tr("Card Info") + (cardInfoDock->isWindow() ? tabText : QString())); cardInfoDock->setWindowTitle(tr("Card Info") + (cardInfoDock->isWindow() ? tabText : QString()));
notesDock->setWindowTitle(tr("Notes") + (notesDock->isWindow() ? tabText : QString()));
messageLayoutDock->setWindowTitle(tr("Messages") + (messageLayoutDock->isWindow() ? tabText : QString())); messageLayoutDock->setWindowTitle(tr("Messages") + (messageLayoutDock->isWindow() ? tabText : QString()));
if (replayDock) if (replayDock)
replayDock->setWindowTitle(tr("Replay Timeline") + (replayDock->isWindow() ? tabText : QString())); replayDock->setWindowTitle(tr("Replay Timeline") + (replayDock->isWindow() ? tabText : QString()));
@ -341,6 +347,7 @@ void TabGame::retranslateUi()
dockToActions[cardInfoDock].menu->setTitle(tr("Card Info")); dockToActions[cardInfoDock].menu->setTitle(tr("Card Info"));
dockToActions[messageLayoutDock].menu->setTitle(tr("Messages")); dockToActions[messageLayoutDock].menu->setTitle(tr("Messages"));
dockToActions[notesDock].menu->setTitle(tr("Notes"));
dockToActions[playerListDock].menu->setTitle(tr("Player List")); dockToActions[playerListDock].menu->setTitle(tr("Player List"));
if (replayDock) { if (replayDock) {
@ -1035,6 +1042,7 @@ void TabGame::createViewMenuItems()
registerDockWidget(viewMenu, cardInfoDock, {250, 360}); registerDockWidget(viewMenu, cardInfoDock, {250, 360});
registerDockWidget(viewMenu, messageLayoutDock, {250, 200}); registerDockWidget(viewMenu, messageLayoutDock, {250, 200});
registerDockWidget(viewMenu, playerListDock, {250, 50}); registerDockWidget(viewMenu, playerListDock, {250, 50});
registerDockWidget(viewMenu, notesDock, {250, 50});
if (replayDock) { if (replayDock) {
registerDockWidget(viewMenu, replayDock, {900, 100}); registerDockWidget(viewMenu, replayDock, {900, 100});
@ -1124,36 +1132,31 @@ void TabGame::actResetLayout()
{ {
cardInfoDock->setVisible(true); cardInfoDock->setVisible(true);
playerListDock->setVisible(true); playerListDock->setVisible(true);
notesDock->setVisible(false);
messageLayoutDock->setVisible(true); messageLayoutDock->setVisible(true);
cardInfoDock->setFloating(false); cardInfoDock->setFloating(false);
playerListDock->setFloating(false); playerListDock->setFloating(false);
notesDock->setFloating(false);
messageLayoutDock->setFloating(false); messageLayoutDock->setFloating(false);
addDockWidget(Qt::RightDockWidgetArea, cardInfoDock); addDockWidget(Qt::RightDockWidgetArea, cardInfoDock);
addDockWidget(Qt::RightDockWidgetArea, playerListDock); addDockWidget(Qt::RightDockWidgetArea, playerListDock);
addDockWidget(Qt::RightDockWidgetArea, notesDock);
addDockWidget(Qt::RightDockWidgetArea, messageLayoutDock); addDockWidget(Qt::RightDockWidgetArea, messageLayoutDock);
if (replayDock) { if (replayDock) {
replayDock->setVisible(true); replayDock->setVisible(true);
replayDock->setFloating(false); replayDock->setFloating(false);
addDockWidget(Qt::BottomDockWidgetArea, replayDock); addDockWidget(Qt::BottomDockWidgetArea, replayDock);
}
cardInfoDock->setMinimumSize(250, 360); for (auto i = dockToActions.cbegin(); i != dockToActions.cend(); ++i) {
cardInfoDock->setMaximumSize(250, 360); QDockWidget *dock = i.key();
messageLayoutDock->setMinimumSize(250, 200); QSize defaultSize = i.value().defaultSize;
messageLayoutDock->setMaximumSize(250, 200);
playerListDock->setMinimumSize(250, 50); dock->setMinimumSize(defaultSize);
playerListDock->setMaximumSize(250, 50); dock->setMaximumSize(defaultSize);
replayDock->setMinimumSize(900, 100);
replayDock->setMaximumSize(900, 100);
} else {
cardInfoDock->setMinimumSize(250, 360);
cardInfoDock->setMaximumSize(250, 360);
messageLayoutDock->setMinimumSize(250, 250);
messageLayoutDock->setMaximumSize(250, 250);
playerListDock->setMinimumSize(250, 50);
playerListDock->setMaximumSize(250, 50);
} }
QTimer::singleShot(100, this, &TabGame::freeDocksSize); QTimer::singleShot(100, this, &TabGame::freeDocksSize);
@ -1248,6 +1251,21 @@ void TabGame::createPlayerListDock(bool bReplay)
playerListDock->setFloating(false); playerListDock->setFloating(false);
} }
void TabGame::createNotesDock(bool bReplay)
{
Q_UNUSED(bReplay);
auto textEdit = new QPlainTextEdit(this);
notesDock = new QDockWidget(this);
notesDock->setObjectName("notesDock");
notesDock->setFeatures(QDockWidget::DockWidgetClosable | QDockWidget::DockWidgetFloatable |
QDockWidget::DockWidgetMovable);
notesDock->setWidget(textEdit);
// Prevent text from autofocusing if there are no other focusable widgets (such as when loading replay)
QTimer::singleShot(1, textEdit, &QWidget::clearFocus);
}
void TabGame::createMessageDock(bool bReplay) void TabGame::createMessageDock(bool bReplay)
{ {
auto messageLogLayout = new QVBoxLayout; auto messageLogLayout = new QVBoxLayout;

View file

@ -76,7 +76,7 @@ private:
QMap<int, TabbedDeckViewContainer *> deckViewContainers; QMap<int, TabbedDeckViewContainer *> deckViewContainers;
QVBoxLayout *deckViewContainerLayout; QVBoxLayout *deckViewContainerLayout;
QWidget *gamePlayAreaWidget, *deckViewContainerWidget; QWidget *gamePlayAreaWidget, *deckViewContainerWidget;
QDockWidget *cardInfoDock, *messageLayoutDock, *playerListDock, *replayDock; QDockWidget *cardInfoDock, *playerListDock, *notesDock, *messageLayoutDock, *replayDock;
QAction *playersSeparator; QAction *playersSeparator;
QMenu *gameMenu, *viewMenu; QMenu *gameMenu, *viewMenu;
TearOffMenu *phasesMenu; TearOffMenu *phasesMenu;
@ -121,6 +121,7 @@ private:
void registerDockWidget(QMenu *_viewMenu, QDockWidget *widget, const QSize &defaultSize); void registerDockWidget(QMenu *_viewMenu, QDockWidget *widget, const QSize &defaultSize);
void createCardInfoDock(bool bReplay = false); void createCardInfoDock(bool bReplay = false);
void createPlayerListDock(bool bReplay = false); void createPlayerListDock(bool bReplay = false);
void createNotesDock(bool bReplay = false);
void createMessageDock(bool bReplay = false); void createMessageDock(bool bReplay = false);
void createPlayAreaWidget(bool bReplay = false); void createPlayAreaWidget(bool bReplay = false);
void createDeckViewContainerWidget(bool bReplay = false); void createDeckViewContainerWidget(bool bReplay = false);