[TabDeckEditor] Refactor card database view into own class (#6967)

* rename method

* [TabDeckEditor] Refactor card database view into own class

* fix include guard

* directly get key signals for eventFilter

* fix includes
This commit is contained in:
RickyRister 2026-06-05 10:20:46 -07:00 committed by GitHub
parent 0da2ac4087
commit c14a008080
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
15 changed files with 392 additions and 252 deletions

View file

@ -1,14 +1,19 @@
#include "tab_visual_database_display.h"
#include "tab_deck_editor.h"
#include "tab_supervisor.h"
#include <libcockatrice/card/database/card_database_manager.h>
TabVisualDatabaseDisplay::TabVisualDatabaseDisplay(TabSupervisor *_tabSupervisor) : Tab(_tabSupervisor)
{
deckEditor = new TabDeckEditor(_tabSupervisor);
deckEditor->setHidden(true);
visualDatabaseDisplayWidget = new VisualDatabaseDisplayWidget(
this, deckEditor, deckEditor->cardDatabaseDockWidget->databaseDisplayWidget->databaseModel,
deckEditor->cardDatabaseDockWidget->databaseDisplayWidget->databaseDisplayModel);
auto databaseModel = new CardDatabaseModel(CardDatabaseManager::getInstance(), true, this);
databaseModel->setObjectName("databaseModel");
visualDatabaseDisplayWidget = new VisualDatabaseDisplayWidget(this, databaseModel);
connect(visualDatabaseDisplayWidget, &VisualDatabaseDisplayWidget::edhrecRequested, this,
&TabVisualDatabaseDisplay::openEdhrecTab);
setCentralWidget(visualDatabaseDisplayWidget);
@ -18,3 +23,8 @@ TabVisualDatabaseDisplay::TabVisualDatabaseDisplay(TabSupervisor *_tabSupervisor
void TabVisualDatabaseDisplay::retranslateUi()
{
}
void TabVisualDatabaseDisplay::openEdhrecTab(const CardInfoPtr &info, bool isCommander) const
{
getTabSupervisor()->addEdhrecTab(info, isCommander);
}

View file

@ -15,9 +15,11 @@ class TabVisualDatabaseDisplay : public Tab
Q_OBJECT
private:
TabDeckEditor *deckEditor;
VisualDatabaseDisplayWidget *visualDatabaseDisplayWidget;
private slots:
void openEdhrecTab(const CardInfoPtr &info, bool isCommander) const;
public:
TabVisualDatabaseDisplay(TabSupervisor *_tabSupervisor);
void retranslateUi() override;

View file

@ -1,6 +1,7 @@
#include "tab_deck_editor_visual.h"
#include "../../../../client/settings/cache_settings.h"
#include "../../cards/card_info_display_widget.h"
#include "../../deck_editor/deck_state_manager.h"
#include "../../filters/filter_builder.h"
#include "../../interface/pixel_map_generator.h"
@ -25,6 +26,7 @@
#include <QTimer>
#include <QTreeView>
#include <QVBoxLayout>
#include <libcockatrice/card/database/card_database_manager.h>
#include <libcockatrice/models/deck_list/deck_list_model.h>
#include <libcockatrice/protocol/pb/command_deck_upload.pb.h>
#include <libcockatrice/protocol/pending_command.h>
@ -63,9 +65,10 @@ void TabDeckEditorVisual::createCentralFrame()
centralFrame = new QVBoxLayout;
centralWidget->setLayout(centralFrame);
tabContainer = new TabDeckEditorVisualTabWidget(
centralWidget, this, deckStateManager->getModel(), cardDatabaseDockWidget->databaseDisplayWidget->databaseModel,
cardDatabaseDockWidget->databaseDisplayWidget->databaseDisplayModel);
auto databaseModel = new CardDatabaseModel(CardDatabaseManager::getInstance(), true, this);
databaseModel->setObjectName("databaseModel");
tabContainer = new TabDeckEditorVisualTabWidget(centralWidget, this, deckStateManager->getModel(), databaseModel);
connect(tabContainer, &TabDeckEditorVisualTabWidget::cardChanged, this,
&TabDeckEditorVisual::changeModelIndexAndCardInfo);
@ -76,6 +79,13 @@ void TabDeckEditorVisual::createCentralFrame()
connect(tabContainer, &TabDeckEditorVisualTabWidget::cardClickedDatabaseDisplay, this,
&TabDeckEditorVisual::processDatabaseCardClick);
connect(tabContainer, &TabDeckEditorVisualTabWidget::cardAdded, this, &TabDeckEditorVisual::addCard);
connect(tabContainer, &TabDeckEditorVisualTabWidget::cardDecremented, this, &TabDeckEditorVisual::decrementCard);
connect(tabContainer, &TabDeckEditorVisualTabWidget::edhrecRequested, this, &TabDeckEditorVisual::openEdhrecTab);
connect(tabContainer, &TabDeckEditorVisualTabWidget::printingSelectorRequested, this,
&TabDeckEditorVisual::showPrintingSelector);
connect(tabContainer, &TabDeckEditorVisualTabWidget::cardInfoRequested, this, &TabDeckEditorVisual::updateCardInfo);
centralFrame->addWidget(tabContainer);
setCentralWidget(centralWidget);
setDockOptions(QMainWindow::AnimatedDocks | QMainWindow::AllowNestedDocks | QMainWindow::AllowTabbedDocks);

View file

@ -9,7 +9,6 @@
* @param _deckEditor Pointer to the associated deck editor.
* @param _deckModel Pointer to the deck list model.
* @param _cardDatabaseModel Pointer to the card database model.
* @param _cardDatabaseDisplayModel Pointer to the card database display model.
*
* Initializes all sub-widgets (visual deck view, database display, deck analytics,
* sample hand) and sets up the tab layout and signal connections.
@ -17,10 +16,8 @@
TabDeckEditorVisualTabWidget::TabDeckEditorVisualTabWidget(QWidget *parent,
AbstractTabDeckEditor *_deckEditor,
DeckListModel *_deckModel,
CardDatabaseModel *_cardDatabaseModel,
CardDatabaseDisplayModel *_cardDatabaseDisplayModel)
: QTabWidget(parent), deckEditor(_deckEditor), deckModel(_deckModel), cardDatabaseModel(_cardDatabaseModel),
cardDatabaseDisplayModel(_cardDatabaseDisplayModel)
CardDatabaseModel *_cardDatabaseModel)
: QTabWidget(parent), deckEditor(_deckEditor), deckModel(_deckModel), cardDatabaseModel(_cardDatabaseModel)
{
this->setTabsClosable(true); // Enable tab closing
connect(this, &QTabWidget::tabCloseRequested, this, &TabDeckEditorVisualTabWidget::handleTabClose);
@ -37,13 +34,22 @@ TabDeckEditorVisualTabWidget::TabDeckEditorVisualTabWidget(QWidget *parent,
connect(visualDeckView, &VisualDeckEditorWidget::cardAdditionRequested, this,
&TabDeckEditorVisualTabWidget::actAddCard);
visualDatabaseDisplay =
new VisualDatabaseDisplayWidget(this, deckEditor, _cardDatabaseModel, _cardDatabaseDisplayModel, deckModel);
visualDatabaseDisplay = new VisualDatabaseDisplayWidget(this, _cardDatabaseModel, deckModel);
visualDatabaseDisplay->setObjectName("visualDatabaseView");
connect(visualDatabaseDisplay, &VisualDatabaseDisplayWidget::cardHoveredDatabaseDisplay, this,
&TabDeckEditorVisualTabWidget::onCardChangedDatabaseDisplay);
connect(visualDatabaseDisplay, &VisualDatabaseDisplayWidget::cardClickedDatabaseDisplay, this,
&TabDeckEditorVisualTabWidget::onCardClickedDatabaseDisplay);
connect(visualDatabaseDisplay, &VisualDatabaseDisplayWidget::cardAdded, this,
&TabDeckEditorVisualTabWidget::cardAdded);
connect(visualDatabaseDisplay, &VisualDatabaseDisplayWidget::cardDecremented, this,
&TabDeckEditorVisualTabWidget::cardDecremented);
connect(visualDatabaseDisplay, &VisualDatabaseDisplayWidget::edhrecRequested, this,
&TabDeckEditorVisualTabWidget::edhrecRequested);
connect(visualDatabaseDisplay, &VisualDatabaseDisplayWidget::printingSelectorRequested, this,
&TabDeckEditorVisualTabWidget::printingSelectorRequested);
connect(visualDatabaseDisplay, &VisualDatabaseDisplayWidget::cardInfoRequested, this,
&TabDeckEditorVisualTabWidget::cardInfoRequested);
statsAnalyzer = new DeckListStatisticsAnalyzer(this, deckModel);
statsAnalyzer->analyze();

View file

@ -55,13 +55,11 @@ public:
* @param _deckEditor Pointer to the deck editor instance.
* @param _deckModel Deck list model.
* @param _cardDatabaseModel Card database model.
* @param _cardDatabaseDisplayModel Database display model.
*/
explicit TabDeckEditorVisualTabWidget(QWidget *parent,
AbstractTabDeckEditor *_deckEditor,
DeckListModel *_deckModel,
CardDatabaseModel *_cardDatabaseModel,
CardDatabaseDisplayModel *_cardDatabaseDisplayModel);
CardDatabaseModel *_cardDatabaseModel);
/** @brief Add a new tab with a widget and title. */
void addNewTab(QWidget *widget, const QString &title);
@ -119,12 +117,17 @@ signals:
void cardClicked(QMouseEvent *event, const ExactCard &card, const QString &zoneName);
void cardClickedDatabaseDisplay(QMouseEvent *event, const ExactCard &card);
void cardAdded(const ExactCard &card, const QString &zoneName);
void cardDecremented(const ExactCard &card, const QString &zoneName);
void edhrecRequested(const CardInfoPtr &cardInfo, bool isCommander);
void printingSelectorRequested();
void cardInfoRequested(const ExactCard &cardName);
private:
QVBoxLayout *layout; ///< Layout for tabs and controls.
AbstractTabDeckEditor *deckEditor; ///< Reference to the deck editor.
DeckListModel *deckModel; ///< Deck list model.
CardDatabaseModel *cardDatabaseModel; ///< Card database model.
CardDatabaseDisplayModel *cardDatabaseDisplayModel; ///< Card database display model.
QVBoxLayout *layout; ///< Layout for tabs and controls.
AbstractTabDeckEditor *deckEditor; ///< Reference to the deck editor.
DeckListModel *deckModel; ///< Deck list model.
CardDatabaseModel *cardDatabaseModel; ///< Card database model.
private slots:
/**