Cockatrice 2025-11-30-Development-2.11.0-beta.38
A cross-platform virtual tabletop for multiplayer card games
Loading...
Searching...
No Matches
abstract_tab_deck_editor.h
Go to the documentation of this file.
1
7
8#ifndef TAB_GENERIC_DECK_EDITOR_H
9#define TAB_GENERIC_DECK_EDITOR_H
10
11#include "../interface/widgets/deck_editor/deck_editor_card_info_dock_widget.h"
12#include "../interface/widgets/deck_editor/deck_editor_database_display_widget.h"
13#include "../interface/widgets/deck_editor/deck_editor_deck_dock_widget.h"
14#include "../interface/widgets/deck_editor/deck_editor_filter_dock_widget.h"
15#include "../interface/widgets/deck_editor/deck_editor_printing_selector_dock_widget.h"
16#include "../interface/widgets/menus/deck_editor_menu.h"
17#include "../interface/widgets/visual_deck_storage/deck_preview/deck_preview_deck_tags_display_widget.h"
18#include "tab.h"
19
21
24
26class DeckLoader;
27class DeckEditorMenu;
34class Response;
35class FilterTree;
36class FilterTreeModel;
37class FilterBuilder;
38
39class QTreeView;
40class QTextEdit;
41class QLabel;
42class QComboBox;
43class QGroupBox;
44class QMessageBox;
45class QHBoxLayout;
46class QVBoxLayout;
47class QPushButton;
48class QDockWidget;
49class QMenu;
50class QAction;
51
92{
93 Q_OBJECT
94
95 friend class DeckEditorMenu;
96
97public:
102 explicit AbstractTabDeckEditor(TabSupervisor *_tabSupervisor);
103
105 virtual void createMenus() = 0;
106
108 [[nodiscard]] virtual QString getTabText() const override = 0;
109
111 bool confirmClose();
112
114 virtual void retranslateUi() override = 0;
115
119 void openDeck(DeckLoader *deck);
120
122 DeckLoader *getDeckLoader() const;
123
125 DeckList *getDeckList() const;
126
130 void setModified(bool _windowModified);
131
136
141
143
144 // UI Elements
151
152public slots:
154 virtual void onDeckChanged();
155
157 virtual void onDeckModified();
158
162 virtual void onDeckHistorySaveRequested(const QString &modificationReason);
163
165 virtual void onDeckHistoryClearRequested();
166
170 void updateCard(const ExactCard &card);
171
173 void actAddCard(const ExactCard &card);
174
176 void actAddCardToSideboard(const ExactCard &card);
177
179 void actDecrementCard(const ExactCard &card);
180
183
185 void actOpenRecent(const QString &fileName);
186
188 void filterTreeChanged(FilterTree *filterTree);
189
191 bool closeRequest() override;
192
194 virtual void showPrintingSelector() = 0;
195
197 virtual void dockTopLevelChanged(bool topLevel) = 0;
198
199signals:
201 void openDeckEditor(DeckLoader *deckLoader);
202
205
207 void decrementCard(const ExactCard &card, QString zoneName);
208
209protected slots:
211 virtual void actNewDeck();
212
215
217 virtual void actLoadDeck();
218
220 bool actSaveDeck();
221
223 virtual bool actSaveDeckAs();
224
226 virtual void actLoadDeckFromClipboard();
227
230
233
236
239
242
245
247 void actPrintDeck();
248
251
254
257
260
263
265 void saveDeckRemoteFinished(const Response &r);
266
267 // UI Layout Management
268 virtual void loadLayout() = 0;
269 virtual void restartLayout() = 0;
270 virtual void freeDocksSize() = 0;
271 virtual void refreshShortcuts() = 0;
272
274 void closeEvent(QCloseEvent *event) override;
275
277 bool eventFilter(QObject *o, QEvent *e) override;
278
280 virtual void dockVisibleTriggered() = 0;
281
283 virtual void dockFloatingTriggered() = 0;
284
285private:
289 virtual void setDeck(DeckLoader *_deck);
290
292 void editDeckInClipboard(bool annotated);
293
297 void exportToDecklistWebsite(DeckLoader::DecklistWebsite website);
298
299protected:
307
312 DeckOpenLocation confirmOpen(bool openInSameTabIfBlank = true);
313
317 QMessageBox *createSaveConfirmationWindow();
318
320 bool isBlankNewDeck() const;
321
323 void addCardHelper(const ExactCard &card, QString zoneName);
324
326 void actSwapCard(const ExactCard &card, const QString &zoneName);
327
329 virtual void openDeckFromFile(const QString &fileName, DeckOpenLocation deckOpenLocation);
330
331 // UI Menu Elements
333
334 QAction *aResetLayout;
337
338 bool modified = false;
339};
340
341#endif // TAB_GENERIC_DECK_EDITOR_H
virtual void createMenus()=0
Creates the menus for this tab. Pure virtual.
QMenu * printingSelectorDockMenu
Definition abstract_tab_deck_editor.h:332
QMessageBox * createSaveConfirmationWindow()
Creates a save confirmation message box.
Definition abstract_tab_deck_editor.cpp:333
virtual void onDeckHistoryClearRequested()
Called when a widget would like to clear the history.
Definition abstract_tab_deck_editor.cpp:133
DeckEditorDatabaseDisplayWidget * databaseDisplayDockWidget
Database dock.
Definition abstract_tab_deck_editor.h:146
virtual QString getTabText() const override=0
Returns the display text for the tab.
QAction * aFilterDockVisible
Definition abstract_tab_deck_editor.h:336
void saveDeckRemoteFinished(const Response &r)
Callback when a remote deck save finishes.
Definition abstract_tab_deck_editor.cpp:472
DeckEditorDeckDockWidget * getDeckDockWidget() const
Definition abstract_tab_deck_editor.h:132
void actSwapCard(const ExactCard &card, const QString &zoneName)
Swaps a card in the deck view.
Definition abstract_tab_deck_editor.cpp:200
virtual void restartLayout()=0
QAction * aCardInfoDockFloating
Definition abstract_tab_deck_editor.h:335
bool modified
Whether the deck/tab has unsaved changes.
Definition abstract_tab_deck_editor.h:338
void addCardHelper(const ExactCard &card, QString zoneName)
Helper function to add a card to a specific deck zone.
Definition abstract_tab_deck_editor.cpp:143
void actLoadDeckFromWebsite()
Loads a deck from an online website.
Definition abstract_tab_deck_editor.cpp:567
bool actSaveDeck()
Saves the current deck.
Definition abstract_tab_deck_editor.cpp:405
virtual void loadLayout()=0
virtual void actLoadDeck()
Loads a deck from file.
Definition abstract_tab_deck_editor.cpp:347
DeckEditorCardInfoDockWidget * cardInfoDockWidget
Card info dock.
Definition abstract_tab_deck_editor.h:147
virtual void refreshShortcuts()=0
DeckList * getDeckList() const
Returns the currently active deck list.
Definition abstract_tab_deck_editor.cpp:247
void setModified(bool _windowModified)
Sets the modified state of the tab.
Definition abstract_tab_deck_editor.cpp:256
void actExportDeckDecklist()
Exports the deck to decklist.org.
Definition abstract_tab_deck_editor.cpp:616
virtual void retranslateUi() override=0
Retranslates the UI text. Pure virtual.
bool closeRequest() override
Requests closing the tab.
Definition abstract_tab_deck_editor.cpp:709
void actEditDeckInClipboardRaw()
Opens a raw clipboard deck editor.
Definition abstract_tab_deck_editor.cpp:526
void actSaveDeckToClipboardRawNoSetInfo()
Saves deck to clipboard in raw format without set info.
Definition abstract_tab_deck_editor.cpp:550
DeckEditorMenu * deckMenu
Menu for deck operations.
Definition abstract_tab_deck_editor.h:145
void updateCard(const ExactCard &card)
Updates the card info panel.
Definition abstract_tab_deck_editor.cpp:101
QMenu * cardInfoDockMenu
Definition abstract_tab_deck_editor.h:332
AbstractTabDeckEditor(TabSupervisor *_tabSupervisor)
Constructs an AbstractTabDeckEditor.
Definition abstract_tab_deck_editor.cpp:51
DeckOpenLocation
Enum describing deck open locations.
Definition abstract_tab_deck_editor.h:302
@ NEW_TAB
Open deck in a new tab.
Definition abstract_tab_deck_editor.h:305
@ SAME_TAB
Open deck in the same tab.
Definition abstract_tab_deck_editor.h:304
@ CANCELLED
Operation cancelled.
Definition abstract_tab_deck_editor.h:303
void exportToDecklistWebsite(DeckLoader::DecklistWebsite website)
Helper for exporting decks to websites.
Definition abstract_tab_deck_editor.cpp:591
virtual void showPrintingSelector()=0
Shows the printing selector dock. Pure virtual.
friend class DeckEditorMenu
Definition abstract_tab_deck_editor.h:95
void openDeck(DeckLoader *deck)
Opens a deck in this tab.
Definition abstract_tab_deck_editor.cpp:217
virtual void setDeck(DeckLoader *_deck)
Sets the deck for this tab.
Definition abstract_tab_deck_editor.cpp:230
virtual void openDeckFromFile(const QString &fileName, DeckOpenLocation deckOpenLocation)
Opens a deck from a file.
Definition abstract_tab_deck_editor.cpp:380
virtual void onDeckChanged()
Called when the deck changes.
Definition abstract_tab_deck_editor.cpp:108
DeckOpenLocation confirmOpen(bool openInSameTabIfBlank=true)
Confirms deck open action based on settings and modified state.
Definition abstract_tab_deck_editor.cpp:299
QAction * aPrintingSelectorDockVisible
Definition abstract_tab_deck_editor.h:336
void actAnalyzeDeckTappedout()
Analyzes the deck using tappedout.net.
Definition abstract_tab_deck_editor.cpp:635
void actDecrementCardFromSideboard(const ExactCard &card)
Decrements a card from the sideboard.
Definition abstract_tab_deck_editor.cpp:190
void editDeckInClipboard(bool annotated)
Helper for editing decks from the clipboard.
Definition abstract_tab_deck_editor.cpp:508
void actAddCard(const ExactCard &card)
Adds a card to the main deck or sideboard based on Ctrl key.
Definition abstract_tab_deck_editor.cpp:166
DeckEditorPrintingSelectorDockWidget * printingSelectorDockWidget
Printing selector dock.
Definition abstract_tab_deck_editor.h:150
void actEditDeckInClipboard()
Opens a deck editor for clipboard contents.
Definition abstract_tab_deck_editor.cpp:520
void actAnalyzeDeckDeckstats()
Analyzes the deck using deckstats.net.
Definition abstract_tab_deck_editor.cpp:628
QAction * aPrintingSelectorDockFloating
Definition abstract_tab_deck_editor.h:336
void actOpenRecent(const QString &fileName)
Opens a recently opened deck file.
Definition abstract_tab_deck_editor.cpp:366
void cleanDeckAndResetModified()
Cleans the current deck and resets the modified state.
Definition abstract_tab_deck_editor.cpp:287
void actPrintDeck()
Prints the deck using a preview dialog.
Definition abstract_tab_deck_editor.cpp:556
QAction * aDeckDockFloating
Definition abstract_tab_deck_editor.h:335
QMenu * viewMenu
Definition abstract_tab_deck_editor.h:332
bool confirmClose()
Confirms whether the tab can be safely closed.
Definition abstract_tab_deck_editor.cpp:695
void actSaveDeckToClipboardRaw()
Saves deck to clipboard in raw format.
Definition abstract_tab_deck_editor.cpp:544
virtual void onDeckHistorySaveRequested(const QString &modificationReason)
Called when a widget is about to modify the state of the DeckList.
Definition abstract_tab_deck_editor.cpp:125
QAction * aFilterDockFloating
Definition abstract_tab_deck_editor.h:336
virtual void dockVisibleTriggered()=0
Slot triggered when a dock visibility changes. Pure virtual.
void filterTreeChanged(FilterTree *filterTree)
Called when the filter tree changes.
Definition abstract_tab_deck_editor.cpp:642
DeckEditorFilterDockWidget * filterDockWidget
Filter dock.
Definition abstract_tab_deck_editor.h:149
DeckListHistoryManager * getHistoryManager() const
Definition abstract_tab_deck_editor.h:137
bool isBlankNewDeck() const
Returns true if the tab is a blank newly created deck.
Definition abstract_tab_deck_editor.cpp:265
void actSaveDeckToClipboardNoSetInfo()
Saves deck to clipboard without set info.
Definition abstract_tab_deck_editor.cpp:538
virtual bool actSaveDeckAs()
Saves the current deck under a new name.
Definition abstract_tab_deck_editor.cpp:441
bool eventFilter(QObject *o, QEvent *e) override
Event filter for dock state changes.
Definition abstract_tab_deck_editor.cpp:663
DeckListHistoryManager * historyManager
Definition abstract_tab_deck_editor.h:142
virtual void dockTopLevelChanged(bool topLevel)=0
Slot for when a dock's top-level state changes. Pure virtual.
DeckEditorDeckDockWidget * deckDockWidget
Deck dock.
Definition abstract_tab_deck_editor.h:148
void decrementCard(const ExactCard &card, QString zoneName)
Emitted when a card should be decremented.
QMenu * deckDockMenu
Definition abstract_tab_deck_editor.h:332
virtual void onDeckModified()
Called when the deck is modified.
Definition abstract_tab_deck_editor.cpp:116
void deckEditorClosing(AbstractTabDeckEditor *tab)
Emitted before the tab is closed.
virtual void actLoadDeckFromClipboard()
Loads a deck from the clipboard.
Definition abstract_tab_deck_editor.cpp:484
virtual void dockFloatingTriggered()=0
Slot triggered when a dock floating state changes. Pure virtual.
void actDecrementCard(const ExactCard &card)
Decrements a card from the main deck.
Definition abstract_tab_deck_editor.cpp:184
QAction * aCardInfoDockVisible
Definition abstract_tab_deck_editor.h:335
DeckLoader * getDeckLoader() const
Returns the currently active deck loader.
Definition abstract_tab_deck_editor.cpp:241
void actAddCardToSideboard(const ExactCard &card)
Adds a card to the sideboard explicitly.
Definition abstract_tab_deck_editor.cpp:177
virtual void actNewDeck()
Starts a new deck in this tab.
Definition abstract_tab_deck_editor.cpp:272
QMenu * filterDockMenu
Definition abstract_tab_deck_editor.h:332
virtual void freeDocksSize()=0
void openDeckEditor(DeckLoader *deckLoader)
Emitted when a deck should be opened in a new editor tab.
void actSaveDeckToClipboard()
Saves deck to clipboard with full info.
Definition abstract_tab_deck_editor.cpp:532
void actExportDeckDecklistXyz()
Exports the deck to decklist.xyz.
Definition abstract_tab_deck_editor.cpp:622
QAction * aResetLayout
Definition abstract_tab_deck_editor.h:334
void closeEvent(QCloseEvent *event) override
Handles dock close events.
Definition abstract_tab_deck_editor.cpp:651
QAction * aDeckDockVisible
Definition abstract_tab_deck_editor.h:335
Definition card_database_display_model.h:17
Definition card_database_model.h:16
Definition card_info_frame_widget.h:22
Definition deck_editor_card_info_dock_widget.h:18
Definition deck_editor_database_display_widget.h:22
Definition deck_editor_deck_dock_widget.h:27
Definition deck_editor_filter_dock_widget.h:19
Definition deck_editor_menu.h:14
Definition deck_editor_printing_selector_dock_widget.h:17
Definition deck_list_history_manager.h:11
Represents a complete deck, including metadata, zones, cards, and sideboard plans.
Definition deck_list.h:127
Definition deck_preview_deck_tags_display_widget.h:19
Represents a specific card instance, defined by its CardInfo and a particular printing.
Definition exact_card.h:19
Definition filter_builder.h:18
Definition filter_tree_model.h:18
Definition filter_tree.h:223
Definition tab_supervisor.h:83
Tab(TabSupervisor *_tabSupervisor)
Definition tab.cpp:11
TODO: Document this.