mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-06-12 19:11:31 -07:00
[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:
@@ -181,6 +181,7 @@ set(cockatrice_SOURCES
|
|||||||
src/interface/widgets/deck_analytics/analyzer_modules/mana_distribution/mana_distribution_single_display_widget.cpp
|
src/interface/widgets/deck_analytics/analyzer_modules/mana_distribution/mana_distribution_single_display_widget.cpp
|
||||||
src/interface/widgets/deck_analytics/analyzer_modules/mana_curve/mana_curve_total_widget.cpp
|
src/interface/widgets/deck_analytics/analyzer_modules/mana_curve/mana_curve_total_widget.cpp
|
||||||
src/interface/widgets/deck_analytics/analyzer_modules/mana_curve/mana_curve_category_widget.cpp
|
src/interface/widgets/deck_analytics/analyzer_modules/mana_curve/mana_curve_category_widget.cpp
|
||||||
|
src/interface/widgets/deck_editor/card_database_view.cpp
|
||||||
src/interface/widgets/deck_editor/deck_list_history_manager_widget.cpp
|
src/interface/widgets/deck_editor/deck_list_history_manager_widget.cpp
|
||||||
src/interface/widgets/deck_editor/deck_editor_card_database_dock_widget.cpp
|
src/interface/widgets/deck_editor/deck_editor_card_database_dock_widget.cpp
|
||||||
src/interface/widgets/deck_editor/deck_editor_card_info_dock_widget.cpp
|
src/interface/widgets/deck_editor/deck_editor_card_info_dock_widget.cpp
|
||||||
|
|||||||
@@ -0,0 +1,167 @@
|
|||||||
|
#include "card_database_view.h"
|
||||||
|
|
||||||
|
#include "../../../client/settings/cache_settings.h"
|
||||||
|
#include "card_database_display_model.h"
|
||||||
|
#include "card_database_model.h"
|
||||||
|
|
||||||
|
#include <QApplication>
|
||||||
|
#include <QClipboard>
|
||||||
|
#include <QHeaderView>
|
||||||
|
#include <QMenu>
|
||||||
|
#include <libcockatrice/card/database/card_database_manager.h>
|
||||||
|
#include <libcockatrice/card/relation/card_relation.h>
|
||||||
|
#include <libcockatrice/deck_list/tree/inner_deck_list_node.h>
|
||||||
|
|
||||||
|
static bool canBeCommander(const CardInfo &cardInfo)
|
||||||
|
{
|
||||||
|
return (cardInfo.getCardType().contains("Legendary", Qt::CaseInsensitive) &&
|
||||||
|
cardInfo.getCardType().contains("Creature", Qt::CaseInsensitive)) ||
|
||||||
|
cardInfo.getText().contains("can be your commander", Qt::CaseInsensitive);
|
||||||
|
}
|
||||||
|
|
||||||
|
CardDatabaseView::CardDatabaseView(QWidget *parent, CardDatabaseDisplayModel *model)
|
||||||
|
: QTreeView(parent), databaseDisplayModel(model)
|
||||||
|
{
|
||||||
|
// set up object
|
||||||
|
setUniformRowHeights(true);
|
||||||
|
setRootIsDecorated(false);
|
||||||
|
setAlternatingRowColors(true);
|
||||||
|
setSortingEnabled(true);
|
||||||
|
sortByColumn(0, Qt::AscendingOrder);
|
||||||
|
QTreeView::setModel(databaseDisplayModel);
|
||||||
|
setContextMenuPolicy(Qt::CustomContextMenu);
|
||||||
|
|
||||||
|
connect(databaseDisplayModel, &CardDatabaseDisplayModel::modelDirty, this,
|
||||||
|
&CardDatabaseView::resetSelectionIfEmpty);
|
||||||
|
|
||||||
|
connect(this, &QTreeView::customContextMenuRequested, this, &CardDatabaseView::openCustomMenu);
|
||||||
|
connect(selectionModel(), &QItemSelectionModel::currentRowChanged, this, &CardDatabaseView::updateCard);
|
||||||
|
connect(this, &QTreeView::doubleClicked, this, &CardDatabaseView::actDoubleClick);
|
||||||
|
|
||||||
|
// layout settings
|
||||||
|
QByteArray dbHeaderState = SettingsCache::instance().layouts().getDeckEditorDbHeaderState();
|
||||||
|
if (dbHeaderState.isNull()) {
|
||||||
|
// first run
|
||||||
|
setColumnWidth(0, 200);
|
||||||
|
} else {
|
||||||
|
header()->restoreState(dbHeaderState);
|
||||||
|
}
|
||||||
|
connect(header(), &QHeaderView::geometriesChanged, this, &CardDatabaseView::saveDbHeaderState);
|
||||||
|
|
||||||
|
// create key filters
|
||||||
|
searchKeySignals.setObjectName("searchKeySignals");
|
||||||
|
connect(&searchKeySignals, &KeySignals::onEnter, this, [this] { addCard(DECK_ZONE_MAIN); });
|
||||||
|
connect(&searchKeySignals, &KeySignals::onCtrlAltEqual, this, [this] { addCard(DECK_ZONE_MAIN); });
|
||||||
|
connect(&searchKeySignals, &KeySignals::onCtrlAltRBracket, this, [this] { addCard(DECK_ZONE_SIDE); });
|
||||||
|
connect(&searchKeySignals, &KeySignals::onCtrlAltMinus, this, [this] { decrementCard(DECK_ZONE_MAIN); });
|
||||||
|
connect(&searchKeySignals, &KeySignals::onCtrlAltLBracket, this, [this] { decrementCard(DECK_ZONE_SIDE); });
|
||||||
|
connect(&searchKeySignals, &KeySignals::onCtrlAltEnter, this, [this] { addCard(DECK_ZONE_SIDE); });
|
||||||
|
connect(&searchKeySignals, &KeySignals::onCtrlEnter, this, [this] { addCard(DECK_ZONE_SIDE); });
|
||||||
|
connect(&searchKeySignals, &KeySignals::onCtrlC, this, &CardDatabaseView::copyDatabaseCellContents);
|
||||||
|
}
|
||||||
|
|
||||||
|
QString CardDatabaseView::currentCardName() const
|
||||||
|
{
|
||||||
|
const QModelIndex currentIndex = selectionModel()->currentIndex();
|
||||||
|
if (!currentIndex.isValid()) {
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
|
||||||
|
return currentIndex.siblingAtColumn(CardDatabaseModel::NameColumn).data().toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CardDatabaseView::actDoubleClick()
|
||||||
|
{
|
||||||
|
if (QApplication::keyboardModifiers() & Qt::ControlModifier) {
|
||||||
|
addCard(DECK_ZONE_SIDE);
|
||||||
|
} else {
|
||||||
|
addCard(DECK_ZONE_MAIN);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void CardDatabaseView::addCard(const QString &zoneName)
|
||||||
|
{
|
||||||
|
emit cardAdded(currentCardName(), zoneName);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CardDatabaseView::decrementCard(const QString &zoneName)
|
||||||
|
{
|
||||||
|
emit cardDecremented(currentCardName(), zoneName);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CardDatabaseView::updateCard(const QModelIndex ¤t, const QModelIndex & /*previous*/)
|
||||||
|
{
|
||||||
|
if (!current.isValid()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const QString cardName = current.siblingAtColumn(CardDatabaseModel::NameColumn).data().toString();
|
||||||
|
|
||||||
|
if (!current.model()->hasChildren(current.siblingAtColumn(CardDatabaseModel::NameColumn))) {
|
||||||
|
emit cardChanged(cardName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void CardDatabaseView::resetSelectionIfEmpty()
|
||||||
|
{
|
||||||
|
QModelIndexList sel = selectionModel()->selectedRows();
|
||||||
|
if (sel.isEmpty() && databaseDisplayModel->rowCount() > 0) {
|
||||||
|
selectionModel()->setCurrentIndex(databaseDisplayModel->index(0, 0),
|
||||||
|
QItemSelectionModel::SelectCurrent | QItemSelectionModel::Rows);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void CardDatabaseView::copyDatabaseCellContents() const
|
||||||
|
{
|
||||||
|
auto _data = selectionModel()->currentIndex().data();
|
||||||
|
QApplication::clipboard()->setText(_data.toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
void CardDatabaseView::saveDbHeaderState()
|
||||||
|
{
|
||||||
|
SettingsCache::instance().layouts().setDeckEditorDbHeaderState(header()->saveState());
|
||||||
|
}
|
||||||
|
|
||||||
|
void CardDatabaseView::openCustomMenu(QPoint point)
|
||||||
|
{
|
||||||
|
CardInfoPtr card = CardDatabaseManager::query()->getCardInfo(currentCardName());
|
||||||
|
|
||||||
|
if (!card) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
QMenu menu;
|
||||||
|
// add to deck and sideboard options
|
||||||
|
QAction *addToDeck = menu.addAction(tr("Add to Deck"));
|
||||||
|
QAction *addToSideboard = menu.addAction(tr("Add to Sideboard"));
|
||||||
|
QAction *selectPrinting = menu.addAction(tr("Select Printing"));
|
||||||
|
|
||||||
|
connect(addToDeck, &QAction::triggered, this, [this, card] { emit cardAdded(card->getName(), DECK_ZONE_MAIN); });
|
||||||
|
connect(addToSideboard, &QAction::triggered, this,
|
||||||
|
[this, card] { emit cardAdded(card->getName(), DECK_ZONE_SIDE); });
|
||||||
|
connect(selectPrinting, &QAction::triggered, this, &CardDatabaseView::selectPrintingClicked);
|
||||||
|
|
||||||
|
if (canBeCommander(*card)) {
|
||||||
|
QAction *edhRecCommander = menu.addAction(tr("Show on EDHRec (Commander)"));
|
||||||
|
connect(edhRecCommander, &QAction::triggered, this, [this, card] { emit edhrecClicked(card, true); });
|
||||||
|
}
|
||||||
|
QAction *edhRecCard = menu.addAction(tr("Show on EDHRec (Card)"));
|
||||||
|
connect(edhRecCard, &QAction::triggered, this, [this, card] { emit edhrecClicked(card, false); });
|
||||||
|
|
||||||
|
// filling out the related cards submenu
|
||||||
|
auto *relatedMenu = new QMenu(tr("Show Related cards"));
|
||||||
|
menu.addMenu(relatedMenu);
|
||||||
|
auto relatedCards = card->getAllRelatedCards();
|
||||||
|
if (relatedCards.isEmpty()) {
|
||||||
|
relatedMenu->setDisabled(true);
|
||||||
|
} else {
|
||||||
|
for (const CardRelation *rel : relatedCards) {
|
||||||
|
const QString &relatedCardName = rel->getName();
|
||||||
|
QAction *relatedCard = relatedMenu->addAction(relatedCardName);
|
||||||
|
connect(relatedCard, &QAction::triggered, this,
|
||||||
|
[this, relatedCardName] { emit relatedCardClicked(relatedCardName); });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
menu.exec(mapToGlobal(point));
|
||||||
|
}
|
||||||
@@ -0,0 +1,59 @@
|
|||||||
|
#ifndef COCKATRICE_CARD_DATABASE_VIEW_H
|
||||||
|
#define COCKATRICE_CARD_DATABASE_VIEW_H
|
||||||
|
|
||||||
|
#include "../../key_signals.h"
|
||||||
|
|
||||||
|
#include <QTreeView>
|
||||||
|
#include <libcockatrice/card/card_info.h>
|
||||||
|
|
||||||
|
class CardDatabaseModel;
|
||||||
|
class CardDatabaseDisplayModel;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief The card database table.
|
||||||
|
*/
|
||||||
|
class CardDatabaseView : public QTreeView
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
KeySignals searchKeySignals;
|
||||||
|
CardDatabaseDisplayModel *databaseDisplayModel;
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit CardDatabaseView(QWidget *parent, CardDatabaseDisplayModel *model);
|
||||||
|
|
||||||
|
QString currentCardName() const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get the KeySignals that are connected to this view.
|
||||||
|
* You can install the KeySignals as an eventFilter to capture keyboard shortcuts for adding and decrementing cards.
|
||||||
|
*/
|
||||||
|
KeySignals *getKeySignals()
|
||||||
|
{
|
||||||
|
return &searchKeySignals;
|
||||||
|
}
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void cardChanged(const QString &cardName);
|
||||||
|
|
||||||
|
void cardAdded(const QString &cardName, const QString &zoneName);
|
||||||
|
void cardDecremented(const QString &cardName, const QString &zoneName);
|
||||||
|
|
||||||
|
void edhrecClicked(const CardInfoPtr &cardInfo, bool isCommander);
|
||||||
|
void selectPrintingClicked();
|
||||||
|
void relatedCardClicked(const QString &relatedCard);
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void actDoubleClick();
|
||||||
|
|
||||||
|
void addCard(const QString &zoneName);
|
||||||
|
void decrementCard(const QString &zoneName);
|
||||||
|
void updateCard(const QModelIndex ¤t, const QModelIndex &);
|
||||||
|
|
||||||
|
void resetSelectionIfEmpty();
|
||||||
|
void copyDatabaseCellContents() const;
|
||||||
|
void saveDbHeaderState();
|
||||||
|
void openCustomMenu(QPoint point);
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // COCKATRICE_CARD_DATABASE_VIEW_H
|
||||||
@@ -41,11 +41,6 @@ void DeckEditorCardDatabaseDockWidget::createDatabaseDisplayDock(AbstractTabDeck
|
|||||||
&AbstractTabDeckEditor::updateCardInfo);
|
&AbstractTabDeckEditor::updateCardInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
CardDatabase *DeckEditorCardDatabaseDockWidget::getDatabase() const
|
|
||||||
{
|
|
||||||
return databaseDisplayWidget->databaseModel->getDatabase();
|
|
||||||
}
|
|
||||||
|
|
||||||
void DeckEditorCardDatabaseDockWidget::retranslateUi()
|
void DeckEditorCardDatabaseDockWidget::retranslateUi()
|
||||||
{
|
{
|
||||||
setWindowTitle(tr("Card Database"));
|
setWindowTitle(tr("Card Database"));
|
||||||
|
|||||||
@@ -17,7 +17,6 @@ public:
|
|||||||
|
|
||||||
DeckEditorDatabaseDisplayWidget *databaseDisplayWidget;
|
DeckEditorDatabaseDisplayWidget *databaseDisplayWidget;
|
||||||
|
|
||||||
CardDatabase *getDatabase() const;
|
|
||||||
void setFilterTree(FilterTree *filterTree);
|
void setFilterTree(FilterTree *filterTree);
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
|
|||||||
+35
-154
@@ -5,24 +5,17 @@
|
|||||||
#include "../../../interface/widgets/tabs/abstract_tab_deck_editor.h"
|
#include "../../../interface/widgets/tabs/abstract_tab_deck_editor.h"
|
||||||
#include "../../../interface/widgets/tabs/tab_supervisor.h"
|
#include "../../../interface/widgets/tabs/tab_supervisor.h"
|
||||||
#include "../../pixel_map_generator.h"
|
#include "../../pixel_map_generator.h"
|
||||||
|
#include "card_database_view.h"
|
||||||
|
|
||||||
#include <QClipboard>
|
#include <QClipboard>
|
||||||
#include <QHeaderView>
|
#include <QHeaderView>
|
||||||
#include <QMenu>
|
|
||||||
#include <QToolButton>
|
#include <QToolButton>
|
||||||
#include <QTreeView>
|
#include <QTreeView>
|
||||||
#include <libcockatrice/card/database/card_database_manager.h>
|
#include <libcockatrice/card/database/card_database_manager.h>
|
||||||
#include <libcockatrice/card/relation/card_relation.h>
|
#include <libcockatrice/card/relation/card_relation.h>
|
||||||
|
|
||||||
static bool canBeCommander(const CardInfo &cardInfo)
|
|
||||||
{
|
|
||||||
return (cardInfo.getCardType().contains("Legendary", Qt::CaseInsensitive) &&
|
|
||||||
cardInfo.getCardType().contains("Creature", Qt::CaseInsensitive)) ||
|
|
||||||
cardInfo.getText().contains("can be your commander", Qt::CaseInsensitive);
|
|
||||||
}
|
|
||||||
|
|
||||||
DeckEditorDatabaseDisplayWidget::DeckEditorDatabaseDisplayWidget(QWidget *parent, CardDatabaseModel *databaseModel)
|
DeckEditorDatabaseDisplayWidget::DeckEditorDatabaseDisplayWidget(QWidget *parent, CardDatabaseModel *databaseModel)
|
||||||
: QWidget(parent), databaseModel(databaseModel)
|
: QWidget(parent)
|
||||||
{
|
{
|
||||||
setObjectName("databaseDisplayWidget");
|
setObjectName("databaseDisplayWidget");
|
||||||
|
|
||||||
@@ -36,26 +29,10 @@ DeckEditorDatabaseDisplayWidget::DeckEditorDatabaseDisplayWidget(QWidget *parent
|
|||||||
searchEdit->setClearButtonEnabled(true);
|
searchEdit->setClearButtonEnabled(true);
|
||||||
searchEdit->addAction(loadColorAdjustedPixmap("theme:icons/search"), QLineEdit::LeadingPosition);
|
searchEdit->addAction(loadColorAdjustedPixmap("theme:icons/search"), QLineEdit::LeadingPosition);
|
||||||
auto help = searchEdit->addAction(QPixmap("theme:icons/info"), QLineEdit::TrailingPosition);
|
auto help = searchEdit->addAction(QPixmap("theme:icons/info"), QLineEdit::TrailingPosition);
|
||||||
searchEdit->installEventFilter(&searchKeySignals);
|
|
||||||
|
|
||||||
setFocusProxy(searchEdit);
|
setFocusProxy(searchEdit);
|
||||||
setFocusPolicy(Qt::ClickFocus);
|
setFocusPolicy(Qt::ClickFocus);
|
||||||
|
|
||||||
searchKeySignals.setObjectName("searchKeySignals");
|
|
||||||
connect(searchEdit, &SearchLineEdit::textChanged, this, &DeckEditorDatabaseDisplayWidget::updateSearch);
|
|
||||||
connect(&searchKeySignals, &KeySignals::onEnter, this, &DeckEditorDatabaseDisplayWidget::actAddCardToMainDeck);
|
|
||||||
connect(&searchKeySignals, &KeySignals::onCtrlAltEqual, this,
|
|
||||||
&DeckEditorDatabaseDisplayWidget::actAddCardToMainDeck);
|
|
||||||
connect(&searchKeySignals, &KeySignals::onCtrlAltRBracket, this,
|
|
||||||
&DeckEditorDatabaseDisplayWidget::actAddCardToSideboard);
|
|
||||||
connect(&searchKeySignals, &KeySignals::onCtrlAltMinus, this,
|
|
||||||
&DeckEditorDatabaseDisplayWidget::actDecrementCardFromMainDeck);
|
|
||||||
connect(&searchKeySignals, &KeySignals::onCtrlAltLBracket, this,
|
|
||||||
&DeckEditorDatabaseDisplayWidget::actDecrementCardFromSideboard);
|
|
||||||
connect(&searchKeySignals, &KeySignals::onCtrlAltEnter, this,
|
|
||||||
&DeckEditorDatabaseDisplayWidget::actAddCardToSideboard);
|
|
||||||
connect(&searchKeySignals, &KeySignals::onCtrlEnter, this, &DeckEditorDatabaseDisplayWidget::actAddCardToSideboard);
|
|
||||||
connect(&searchKeySignals, &KeySignals::onCtrlC, this, &DeckEditorDatabaseDisplayWidget::copyDatabaseCellContents);
|
|
||||||
connect(help, &QAction::triggered, this, [this] { createSearchSyntaxHelpWindow(searchEdit); });
|
connect(help, &QAction::triggered, this, [this] { createSearchSyntaxHelpWindow(searchEdit); });
|
||||||
|
|
||||||
databaseDisplayModel = new CardDatabaseDisplayModel(this);
|
databaseDisplayModel = new CardDatabaseDisplayModel(this);
|
||||||
@@ -63,33 +40,23 @@ DeckEditorDatabaseDisplayWidget::DeckEditorDatabaseDisplayWidget(QWidget *parent
|
|||||||
databaseDisplayModel->setSourceModel(databaseModel);
|
databaseDisplayModel->setSourceModel(databaseModel);
|
||||||
databaseDisplayModel->setFilterKeyColumn(0);
|
databaseDisplayModel->setFilterKeyColumn(0);
|
||||||
|
|
||||||
databaseView = new QTreeView(this);
|
databaseView = new CardDatabaseView(this, databaseDisplayModel);
|
||||||
databaseView->setObjectName("databaseView");
|
databaseView->setObjectName("databaseView");
|
||||||
databaseView->setFocusProxy(searchEdit);
|
databaseView->setFocusProxy(searchEdit);
|
||||||
databaseView->setUniformRowHeights(true);
|
|
||||||
databaseView->setRootIsDecorated(false);
|
|
||||||
databaseView->setAlternatingRowColors(true);
|
|
||||||
databaseView->setSortingEnabled(true);
|
|
||||||
databaseView->sortByColumn(0, Qt::AscendingOrder);
|
|
||||||
databaseView->setModel(databaseDisplayModel);
|
|
||||||
databaseView->setContextMenuPolicy(Qt::CustomContextMenu);
|
|
||||||
connect(databaseView, &QTreeView::customContextMenuRequested, this,
|
|
||||||
&DeckEditorDatabaseDisplayWidget::databaseCustomMenu);
|
|
||||||
connect(databaseView->selectionModel(), &QItemSelectionModel::currentRowChanged, this,
|
|
||||||
&DeckEditorDatabaseDisplayWidget::updateCard);
|
|
||||||
connect(databaseView, &QTreeView::doubleClicked, this, &DeckEditorDatabaseDisplayWidget::actAddCard);
|
|
||||||
|
|
||||||
QByteArray dbHeaderState = SettingsCache::instance().layouts().getDeckEditorDbHeaderState();
|
|
||||||
if (dbHeaderState.isNull()) {
|
|
||||||
// first run
|
|
||||||
databaseView->setColumnWidth(0, 200);
|
|
||||||
} else {
|
|
||||||
databaseView->header()->restoreState(dbHeaderState);
|
|
||||||
}
|
|
||||||
connect(databaseView->header(), &QHeaderView::geometriesChanged, this,
|
|
||||||
&DeckEditorDatabaseDisplayWidget::saveDbHeaderState);
|
|
||||||
|
|
||||||
searchEdit->setTreeView(databaseView);
|
searchEdit->setTreeView(databaseView);
|
||||||
|
searchEdit->installEventFilter(databaseView->getKeySignals());
|
||||||
|
|
||||||
|
connect(searchEdit, &SearchLineEdit::textChanged, databaseDisplayModel, &CardDatabaseDisplayModel::setStringFilter);
|
||||||
|
connect(databaseView, &CardDatabaseView::cardAdded, this, &DeckEditorDatabaseDisplayWidget::addCard);
|
||||||
|
connect(databaseView, &CardDatabaseView::cardDecremented, this, &DeckEditorDatabaseDisplayWidget::decrementCard);
|
||||||
|
connect(databaseView, &CardDatabaseView::cardChanged, this, &DeckEditorDatabaseDisplayWidget::updateCard);
|
||||||
|
|
||||||
|
connect(databaseView, &CardDatabaseView::edhrecClicked, this, &DeckEditorDatabaseDisplayWidget::edhrecRequested);
|
||||||
|
connect(databaseView, &CardDatabaseView::selectPrintingClicked, this,
|
||||||
|
&DeckEditorDatabaseDisplayWidget::printingSelectorRequested);
|
||||||
|
connect(databaseView, &CardDatabaseView::relatedCardClicked, this,
|
||||||
|
&DeckEditorDatabaseDisplayWidget::onRelatedCardClicked);
|
||||||
|
|
||||||
aAddCard = new QAction(QString(), this);
|
aAddCard = new QAction(QString(), this);
|
||||||
aAddCard->setIcon(QPixmap("theme:icons/arrow_right_green"));
|
aAddCard->setIcon(QPixmap("theme:icons/arrow_right_green"));
|
||||||
@@ -115,131 +82,39 @@ DeckEditorDatabaseDisplayWidget::DeckEditorDatabaseDisplayWidget(QWidget *parent
|
|||||||
retranslateUi();
|
retranslateUi();
|
||||||
}
|
}
|
||||||
|
|
||||||
void DeckEditorDatabaseDisplayWidget::updateSearch(const QString &search)
|
|
||||||
{
|
|
||||||
databaseDisplayModel->setStringFilter(search);
|
|
||||||
QModelIndexList sel = databaseView->selectionModel()->selectedRows();
|
|
||||||
if (sel.isEmpty() && databaseDisplayModel->rowCount()) {
|
|
||||||
databaseView->selectionModel()->setCurrentIndex(databaseDisplayModel->index(0, 0),
|
|
||||||
QItemSelectionModel::SelectCurrent | QItemSelectionModel::Rows);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void DeckEditorDatabaseDisplayWidget::clearAllDatabaseFilters()
|
void DeckEditorDatabaseDisplayWidget::clearAllDatabaseFilters()
|
||||||
{
|
{
|
||||||
databaseDisplayModel->clearFilterAll();
|
databaseDisplayModel->clearFilterAll();
|
||||||
searchEdit->setText("");
|
searchEdit->setText("");
|
||||||
}
|
}
|
||||||
|
|
||||||
void DeckEditorDatabaseDisplayWidget::updateCard(const QModelIndex ¤t, const QModelIndex & /*previous*/)
|
|
||||||
{
|
|
||||||
if (!current.isValid()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
const QString cardName = current.siblingAtColumn(CardDatabaseModel::NameColumn).data().toString();
|
|
||||||
|
|
||||||
if (!current.model()->hasChildren(current.siblingAtColumn(CardDatabaseModel::NameColumn))) {
|
|
||||||
emit cardChanged(CardDatabaseManager::query()->getPreferredCard(cardName));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void DeckEditorDatabaseDisplayWidget::actAddCard()
|
|
||||||
{
|
|
||||||
if (QApplication::keyboardModifiers() & Qt::ControlModifier) {
|
|
||||||
actAddCardToSideboard();
|
|
||||||
} else {
|
|
||||||
actAddCardToMainDeck();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void DeckEditorDatabaseDisplayWidget::actAddCardToMainDeck()
|
void DeckEditorDatabaseDisplayWidget::actAddCardToMainDeck()
|
||||||
{
|
{
|
||||||
highlightAllSearchEdit();
|
addCard(databaseView->currentCardName(), DECK_ZONE_MAIN);
|
||||||
emit cardAdded(currentCard(), DECK_ZONE_MAIN);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void DeckEditorDatabaseDisplayWidget::actAddCardToSideboard()
|
void DeckEditorDatabaseDisplayWidget::actAddCardToSideboard()
|
||||||
|
{
|
||||||
|
addCard(databaseView->currentCardName(), DECK_ZONE_SIDE);
|
||||||
|
}
|
||||||
|
|
||||||
|
void DeckEditorDatabaseDisplayWidget::addCard(const QString &cardName, const QString &zoneName)
|
||||||
{
|
{
|
||||||
highlightAllSearchEdit();
|
highlightAllSearchEdit();
|
||||||
emit cardAdded(currentCard(), DECK_ZONE_SIDE);
|
ExactCard exactCard = CardDatabaseManager::query()->getPreferredCard(cardName);
|
||||||
|
emit cardAdded(exactCard, zoneName);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DeckEditorDatabaseDisplayWidget::actDecrementCardFromMainDeck()
|
void DeckEditorDatabaseDisplayWidget::decrementCard(const QString &cardName, const QString &zoneName)
|
||||||
{
|
{
|
||||||
emit cardDecremented(currentCard(), DECK_ZONE_MAIN);
|
ExactCard exactCard = CardDatabaseManager::query()->getPreferredCard(cardName);
|
||||||
|
emit cardDecremented(exactCard, zoneName);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DeckEditorDatabaseDisplayWidget::actDecrementCardFromSideboard()
|
void DeckEditorDatabaseDisplayWidget::updateCard(const QString &cardName)
|
||||||
{
|
{
|
||||||
emit cardDecremented(currentCard(), DECK_ZONE_SIDE);
|
ExactCard exactCard = CardDatabaseManager::query()->getPreferredCard(cardName);
|
||||||
}
|
emit cardChanged(exactCard);
|
||||||
|
|
||||||
ExactCard DeckEditorDatabaseDisplayWidget::currentCard() const
|
|
||||||
{
|
|
||||||
const QModelIndex currentIndex = databaseView->selectionModel()->currentIndex();
|
|
||||||
if (!currentIndex.isValid()) {
|
|
||||||
return {};
|
|
||||||
}
|
|
||||||
|
|
||||||
const QString cardName = currentIndex.siblingAtColumn(CardDatabaseModel::NameColumn).data().toString();
|
|
||||||
|
|
||||||
return CardDatabaseManager::query()->getPreferredCard(cardName);
|
|
||||||
}
|
|
||||||
|
|
||||||
void DeckEditorDatabaseDisplayWidget::databaseCustomMenu(QPoint point)
|
|
||||||
{
|
|
||||||
QMenu menu;
|
|
||||||
ExactCard card = currentCard();
|
|
||||||
|
|
||||||
if (card) {
|
|
||||||
// add to deck and sideboard options
|
|
||||||
QAction *addToDeck, *addToSideboard, *selectPrinting, *edhRecCommander, *edhRecCard;
|
|
||||||
addToDeck = menu.addAction(tr("Add to Deck"));
|
|
||||||
addToSideboard = menu.addAction(tr("Add to Sideboard"));
|
|
||||||
selectPrinting = menu.addAction(tr("Select Printing"));
|
|
||||||
connect(selectPrinting, &QAction::triggered, this, &DeckEditorDatabaseDisplayWidget::printingSelectorRequested);
|
|
||||||
if (canBeCommander(card.getInfo())) {
|
|
||||||
edhRecCommander = menu.addAction(tr("Show on EDHRec (Commander)"));
|
|
||||||
connect(edhRecCommander, &QAction::triggered, this,
|
|
||||||
[this, card] { emit edhrecRequested(card.getCardPtr(), true); });
|
|
||||||
}
|
|
||||||
edhRecCard = menu.addAction(tr("Show on EDHRec (Card)"));
|
|
||||||
|
|
||||||
connect(addToDeck, &QAction::triggered, this, &DeckEditorDatabaseDisplayWidget::actAddCardToMainDeck);
|
|
||||||
connect(addToSideboard, &QAction::triggered, this, &DeckEditorDatabaseDisplayWidget::actAddCardToSideboard);
|
|
||||||
connect(edhRecCard, &QAction::triggered, this,
|
|
||||||
[this, card] { emit edhrecRequested(card.getCardPtr(), false); });
|
|
||||||
|
|
||||||
// filling out the related cards submenu
|
|
||||||
auto *relatedMenu = new QMenu(tr("Show Related cards"));
|
|
||||||
menu.addMenu(relatedMenu);
|
|
||||||
auto relatedCards = card.getInfo().getAllRelatedCards();
|
|
||||||
if (relatedCards.isEmpty()) {
|
|
||||||
relatedMenu->setDisabled(true);
|
|
||||||
} else {
|
|
||||||
for (const CardRelation *rel : relatedCards) {
|
|
||||||
const QString &relatedCardName = rel->getName();
|
|
||||||
QAction *relatedCard = relatedMenu->addAction(relatedCardName);
|
|
||||||
connect(relatedCard, &QAction::triggered, this, [this, relatedCardName] {
|
|
||||||
ExactCard card = CardDatabaseManager::query()->guessCard({relatedCardName});
|
|
||||||
emit cardInfoRequested(card);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
menu.exec(databaseView->mapToGlobal(point));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void DeckEditorDatabaseDisplayWidget::copyDatabaseCellContents()
|
|
||||||
{
|
|
||||||
auto _data = databaseView->selectionModel()->currentIndex().data();
|
|
||||||
QApplication::clipboard()->setText(_data.toString());
|
|
||||||
}
|
|
||||||
|
|
||||||
void DeckEditorDatabaseDisplayWidget::saveDbHeaderState()
|
|
||||||
{
|
|
||||||
SettingsCache::instance().layouts().setDeckEditorDbHeaderState(databaseView->header()->saveState());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void DeckEditorDatabaseDisplayWidget::setFilterTree(FilterTree *filterTree)
|
void DeckEditorDatabaseDisplayWidget::setFilterTree(FilterTree *filterTree)
|
||||||
@@ -256,4 +131,10 @@ void DeckEditorDatabaseDisplayWidget::retranslateUi()
|
|||||||
void DeckEditorDatabaseDisplayWidget::highlightAllSearchEdit()
|
void DeckEditorDatabaseDisplayWidget::highlightAllSearchEdit()
|
||||||
{
|
{
|
||||||
searchEdit->setSelection(0, searchEdit->text().length());
|
searchEdit->setSelection(0, searchEdit->text().length());
|
||||||
|
}
|
||||||
|
|
||||||
|
void DeckEditorDatabaseDisplayWidget::onRelatedCardClicked(const QString &relatedCard)
|
||||||
|
{
|
||||||
|
ExactCard exactCard = CardDatabaseManager::query()->guessCard({relatedCard});
|
||||||
|
emit cardInfoRequested(exactCard);
|
||||||
}
|
}
|
||||||
+12
-15
@@ -9,7 +9,6 @@
|
|||||||
#define DECK_EDITOR_DATABASE_DISPLAY_WIDGET_H
|
#define DECK_EDITOR_DATABASE_DISPLAY_WIDGET_H
|
||||||
|
|
||||||
#include "../../../interface/widgets/tabs/abstract_tab_deck_editor.h"
|
#include "../../../interface/widgets/tabs/abstract_tab_deck_editor.h"
|
||||||
#include "../../key_signals.h"
|
|
||||||
#include "../utility/custom_line_edit.h"
|
#include "../utility/custom_line_edit.h"
|
||||||
|
|
||||||
#include <QHBoxLayout>
|
#include <QHBoxLayout>
|
||||||
@@ -17,34 +16,31 @@
|
|||||||
#include <libcockatrice/models/database/card_database_display_model.h>
|
#include <libcockatrice/models/database/card_database_display_model.h>
|
||||||
#include <libcockatrice/models/database/card_database_model.h>
|
#include <libcockatrice/models/database/card_database_model.h>
|
||||||
|
|
||||||
|
class CardDatabaseView;
|
||||||
class AbstractTabDeckEditor;
|
class AbstractTabDeckEditor;
|
||||||
|
|
||||||
class DeckEditorDatabaseDisplayWidget : public QWidget
|
class DeckEditorDatabaseDisplayWidget : public QWidget
|
||||||
{
|
{
|
||||||
|
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
explicit DeckEditorDatabaseDisplayWidget(QWidget *parent, CardDatabaseModel *databaseModel);
|
explicit DeckEditorDatabaseDisplayWidget(QWidget *parent, CardDatabaseModel *databaseModel);
|
||||||
CardDatabaseModel *databaseModel;
|
|
||||||
CardDatabaseDisplayModel *databaseDisplayModel;
|
|
||||||
|
|
||||||
QTreeView *getDatabaseView()
|
CardDatabaseView *getDatabaseView() const
|
||||||
{
|
{
|
||||||
return databaseView;
|
return databaseView;
|
||||||
}
|
}
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
ExactCard currentCard() const;
|
|
||||||
void setFilterTree(FilterTree *filterTree);
|
void setFilterTree(FilterTree *filterTree);
|
||||||
void clearAllDatabaseFilters();
|
void clearAllDatabaseFilters();
|
||||||
void updateSearch(const QString &search);
|
|
||||||
void updateCard(const QModelIndex ¤t, const QModelIndex &);
|
|
||||||
void actAddCard();
|
|
||||||
void actAddCardToMainDeck();
|
void actAddCardToMainDeck();
|
||||||
void actAddCardToSideboard();
|
void actAddCardToSideboard();
|
||||||
void actDecrementCardFromMainDeck();
|
|
||||||
void actDecrementCardFromSideboard();
|
void addCard(const QString &cardName, const QString &zoneName);
|
||||||
void databaseCustomMenu(QPoint point);
|
void decrementCard(const QString &cardName, const QString &zoneName);
|
||||||
void copyDatabaseCellContents();
|
void updateCard(const QString &cardName);
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void cardAdded(const ExactCard &card, const QString &zoneName);
|
void cardAdded(const ExactCard &card, const QString &zoneName);
|
||||||
@@ -56,8 +52,8 @@ signals:
|
|||||||
void cardInfoRequested(const ExactCard &card);
|
void cardInfoRequested(const ExactCard &card);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
KeySignals searchKeySignals;
|
CardDatabaseDisplayModel *databaseDisplayModel;
|
||||||
QTreeView *databaseView;
|
CardDatabaseView *databaseView;
|
||||||
QHBoxLayout *searchLayout;
|
QHBoxLayout *searchLayout;
|
||||||
SearchLineEdit *searchEdit;
|
SearchLineEdit *searchEdit;
|
||||||
QAction *aAddCard, *aAddCardToSideboard;
|
QAction *aAddCard, *aAddCardToSideboard;
|
||||||
@@ -68,7 +64,8 @@ private:
|
|||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void retranslateUi();
|
void retranslateUi();
|
||||||
void saveDbHeaderState();
|
|
||||||
|
void onRelatedCardClicked(const QString &relatedCard);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // DECK_EDITOR_DATABASE_DISPLAY_WIDGET_H
|
#endif // DECK_EDITOR_DATABASE_DISPLAY_WIDGET_H
|
||||||
|
|||||||
@@ -1,14 +1,19 @@
|
|||||||
#include "tab_visual_database_display.h"
|
#include "tab_visual_database_display.h"
|
||||||
|
|
||||||
#include "tab_deck_editor.h"
|
#include "tab_deck_editor.h"
|
||||||
|
#include "tab_supervisor.h"
|
||||||
|
|
||||||
|
#include <libcockatrice/card/database/card_database_manager.h>
|
||||||
|
|
||||||
TabVisualDatabaseDisplay::TabVisualDatabaseDisplay(TabSupervisor *_tabSupervisor) : Tab(_tabSupervisor)
|
TabVisualDatabaseDisplay::TabVisualDatabaseDisplay(TabSupervisor *_tabSupervisor) : Tab(_tabSupervisor)
|
||||||
{
|
{
|
||||||
deckEditor = new TabDeckEditor(_tabSupervisor);
|
auto databaseModel = new CardDatabaseModel(CardDatabaseManager::getInstance(), true, this);
|
||||||
deckEditor->setHidden(true);
|
databaseModel->setObjectName("databaseModel");
|
||||||
visualDatabaseDisplayWidget = new VisualDatabaseDisplayWidget(
|
|
||||||
this, deckEditor, deckEditor->cardDatabaseDockWidget->databaseDisplayWidget->databaseModel,
|
visualDatabaseDisplayWidget = new VisualDatabaseDisplayWidget(this, databaseModel);
|
||||||
deckEditor->cardDatabaseDockWidget->databaseDisplayWidget->databaseDisplayModel);
|
|
||||||
|
connect(visualDatabaseDisplayWidget, &VisualDatabaseDisplayWidget::edhrecRequested, this,
|
||||||
|
&TabVisualDatabaseDisplay::openEdhrecTab);
|
||||||
|
|
||||||
setCentralWidget(visualDatabaseDisplayWidget);
|
setCentralWidget(visualDatabaseDisplayWidget);
|
||||||
|
|
||||||
@@ -18,3 +23,8 @@ TabVisualDatabaseDisplay::TabVisualDatabaseDisplay(TabSupervisor *_tabSupervisor
|
|||||||
void TabVisualDatabaseDisplay::retranslateUi()
|
void TabVisualDatabaseDisplay::retranslateUi()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TabVisualDatabaseDisplay::openEdhrecTab(const CardInfoPtr &info, bool isCommander) const
|
||||||
|
{
|
||||||
|
getTabSupervisor()->addEdhrecTab(info, isCommander);
|
||||||
|
}
|
||||||
@@ -15,9 +15,11 @@ class TabVisualDatabaseDisplay : public Tab
|
|||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
private:
|
private:
|
||||||
TabDeckEditor *deckEditor;
|
|
||||||
VisualDatabaseDisplayWidget *visualDatabaseDisplayWidget;
|
VisualDatabaseDisplayWidget *visualDatabaseDisplayWidget;
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void openEdhrecTab(const CardInfoPtr &info, bool isCommander) const;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
TabVisualDatabaseDisplay(TabSupervisor *_tabSupervisor);
|
TabVisualDatabaseDisplay(TabSupervisor *_tabSupervisor);
|
||||||
void retranslateUi() override;
|
void retranslateUi() override;
|
||||||
|
|||||||
+13
-3
@@ -1,6 +1,7 @@
|
|||||||
#include "tab_deck_editor_visual.h"
|
#include "tab_deck_editor_visual.h"
|
||||||
|
|
||||||
#include "../../../../client/settings/cache_settings.h"
|
#include "../../../../client/settings/cache_settings.h"
|
||||||
|
#include "../../cards/card_info_display_widget.h"
|
||||||
#include "../../deck_editor/deck_state_manager.h"
|
#include "../../deck_editor/deck_state_manager.h"
|
||||||
#include "../../filters/filter_builder.h"
|
#include "../../filters/filter_builder.h"
|
||||||
#include "../../interface/pixel_map_generator.h"
|
#include "../../interface/pixel_map_generator.h"
|
||||||
@@ -25,6 +26,7 @@
|
|||||||
#include <QTimer>
|
#include <QTimer>
|
||||||
#include <QTreeView>
|
#include <QTreeView>
|
||||||
#include <QVBoxLayout>
|
#include <QVBoxLayout>
|
||||||
|
#include <libcockatrice/card/database/card_database_manager.h>
|
||||||
#include <libcockatrice/models/deck_list/deck_list_model.h>
|
#include <libcockatrice/models/deck_list/deck_list_model.h>
|
||||||
#include <libcockatrice/protocol/pb/command_deck_upload.pb.h>
|
#include <libcockatrice/protocol/pb/command_deck_upload.pb.h>
|
||||||
#include <libcockatrice/protocol/pending_command.h>
|
#include <libcockatrice/protocol/pending_command.h>
|
||||||
@@ -63,9 +65,10 @@ void TabDeckEditorVisual::createCentralFrame()
|
|||||||
centralFrame = new QVBoxLayout;
|
centralFrame = new QVBoxLayout;
|
||||||
centralWidget->setLayout(centralFrame);
|
centralWidget->setLayout(centralFrame);
|
||||||
|
|
||||||
tabContainer = new TabDeckEditorVisualTabWidget(
|
auto databaseModel = new CardDatabaseModel(CardDatabaseManager::getInstance(), true, this);
|
||||||
centralWidget, this, deckStateManager->getModel(), cardDatabaseDockWidget->databaseDisplayWidget->databaseModel,
|
databaseModel->setObjectName("databaseModel");
|
||||||
cardDatabaseDockWidget->databaseDisplayWidget->databaseDisplayModel);
|
|
||||||
|
tabContainer = new TabDeckEditorVisualTabWidget(centralWidget, this, deckStateManager->getModel(), databaseModel);
|
||||||
|
|
||||||
connect(tabContainer, &TabDeckEditorVisualTabWidget::cardChanged, this,
|
connect(tabContainer, &TabDeckEditorVisualTabWidget::cardChanged, this,
|
||||||
&TabDeckEditorVisual::changeModelIndexAndCardInfo);
|
&TabDeckEditorVisual::changeModelIndexAndCardInfo);
|
||||||
@@ -76,6 +79,13 @@ void TabDeckEditorVisual::createCentralFrame()
|
|||||||
connect(tabContainer, &TabDeckEditorVisualTabWidget::cardClickedDatabaseDisplay, this,
|
connect(tabContainer, &TabDeckEditorVisualTabWidget::cardClickedDatabaseDisplay, this,
|
||||||
&TabDeckEditorVisual::processDatabaseCardClick);
|
&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);
|
centralFrame->addWidget(tabContainer);
|
||||||
setCentralWidget(centralWidget);
|
setCentralWidget(centralWidget);
|
||||||
setDockOptions(QMainWindow::AnimatedDocks | QMainWindow::AllowNestedDocks | QMainWindow::AllowTabbedDocks);
|
setDockOptions(QMainWindow::AnimatedDocks | QMainWindow::AllowNestedDocks | QMainWindow::AllowTabbedDocks);
|
||||||
|
|||||||
+13
-7
@@ -9,7 +9,6 @@
|
|||||||
* @param _deckEditor Pointer to the associated deck editor.
|
* @param _deckEditor Pointer to the associated deck editor.
|
||||||
* @param _deckModel Pointer to the deck list model.
|
* @param _deckModel Pointer to the deck list model.
|
||||||
* @param _cardDatabaseModel Pointer to the card database 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,
|
* Initializes all sub-widgets (visual deck view, database display, deck analytics,
|
||||||
* sample hand) and sets up the tab layout and signal connections.
|
* sample hand) and sets up the tab layout and signal connections.
|
||||||
@@ -17,10 +16,8 @@
|
|||||||
TabDeckEditorVisualTabWidget::TabDeckEditorVisualTabWidget(QWidget *parent,
|
TabDeckEditorVisualTabWidget::TabDeckEditorVisualTabWidget(QWidget *parent,
|
||||||
AbstractTabDeckEditor *_deckEditor,
|
AbstractTabDeckEditor *_deckEditor,
|
||||||
DeckListModel *_deckModel,
|
DeckListModel *_deckModel,
|
||||||
CardDatabaseModel *_cardDatabaseModel,
|
CardDatabaseModel *_cardDatabaseModel)
|
||||||
CardDatabaseDisplayModel *_cardDatabaseDisplayModel)
|
: QTabWidget(parent), deckEditor(_deckEditor), deckModel(_deckModel), cardDatabaseModel(_cardDatabaseModel)
|
||||||
: QTabWidget(parent), deckEditor(_deckEditor), deckModel(_deckModel), cardDatabaseModel(_cardDatabaseModel),
|
|
||||||
cardDatabaseDisplayModel(_cardDatabaseDisplayModel)
|
|
||||||
{
|
{
|
||||||
this->setTabsClosable(true); // Enable tab closing
|
this->setTabsClosable(true); // Enable tab closing
|
||||||
connect(this, &QTabWidget::tabCloseRequested, this, &TabDeckEditorVisualTabWidget::handleTabClose);
|
connect(this, &QTabWidget::tabCloseRequested, this, &TabDeckEditorVisualTabWidget::handleTabClose);
|
||||||
@@ -37,13 +34,22 @@ TabDeckEditorVisualTabWidget::TabDeckEditorVisualTabWidget(QWidget *parent,
|
|||||||
connect(visualDeckView, &VisualDeckEditorWidget::cardAdditionRequested, this,
|
connect(visualDeckView, &VisualDeckEditorWidget::cardAdditionRequested, this,
|
||||||
&TabDeckEditorVisualTabWidget::actAddCard);
|
&TabDeckEditorVisualTabWidget::actAddCard);
|
||||||
|
|
||||||
visualDatabaseDisplay =
|
visualDatabaseDisplay = new VisualDatabaseDisplayWidget(this, _cardDatabaseModel, deckModel);
|
||||||
new VisualDatabaseDisplayWidget(this, deckEditor, _cardDatabaseModel, _cardDatabaseDisplayModel, deckModel);
|
|
||||||
visualDatabaseDisplay->setObjectName("visualDatabaseView");
|
visualDatabaseDisplay->setObjectName("visualDatabaseView");
|
||||||
connect(visualDatabaseDisplay, &VisualDatabaseDisplayWidget::cardHoveredDatabaseDisplay, this,
|
connect(visualDatabaseDisplay, &VisualDatabaseDisplayWidget::cardHoveredDatabaseDisplay, this,
|
||||||
&TabDeckEditorVisualTabWidget::onCardChangedDatabaseDisplay);
|
&TabDeckEditorVisualTabWidget::onCardChangedDatabaseDisplay);
|
||||||
connect(visualDatabaseDisplay, &VisualDatabaseDisplayWidget::cardClickedDatabaseDisplay, this,
|
connect(visualDatabaseDisplay, &VisualDatabaseDisplayWidget::cardClickedDatabaseDisplay, this,
|
||||||
&TabDeckEditorVisualTabWidget::onCardClickedDatabaseDisplay);
|
&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 = new DeckListStatisticsAnalyzer(this, deckModel);
|
||||||
statsAnalyzer->analyze();
|
statsAnalyzer->analyze();
|
||||||
|
|||||||
+11
-8
@@ -55,13 +55,11 @@ public:
|
|||||||
* @param _deckEditor Pointer to the deck editor instance.
|
* @param _deckEditor Pointer to the deck editor instance.
|
||||||
* @param _deckModel Deck list model.
|
* @param _deckModel Deck list model.
|
||||||
* @param _cardDatabaseModel Card database model.
|
* @param _cardDatabaseModel Card database model.
|
||||||
* @param _cardDatabaseDisplayModel Database display model.
|
|
||||||
*/
|
*/
|
||||||
explicit TabDeckEditorVisualTabWidget(QWidget *parent,
|
explicit TabDeckEditorVisualTabWidget(QWidget *parent,
|
||||||
AbstractTabDeckEditor *_deckEditor,
|
AbstractTabDeckEditor *_deckEditor,
|
||||||
DeckListModel *_deckModel,
|
DeckListModel *_deckModel,
|
||||||
CardDatabaseModel *_cardDatabaseModel,
|
CardDatabaseModel *_cardDatabaseModel);
|
||||||
CardDatabaseDisplayModel *_cardDatabaseDisplayModel);
|
|
||||||
|
|
||||||
/** @brief Add a new tab with a widget and title. */
|
/** @brief Add a new tab with a widget and title. */
|
||||||
void addNewTab(QWidget *widget, const QString &title);
|
void addNewTab(QWidget *widget, const QString &title);
|
||||||
@@ -119,12 +117,17 @@ signals:
|
|||||||
void cardClicked(QMouseEvent *event, const ExactCard &card, const QString &zoneName);
|
void cardClicked(QMouseEvent *event, const ExactCard &card, const QString &zoneName);
|
||||||
void cardClickedDatabaseDisplay(QMouseEvent *event, const ExactCard &card);
|
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:
|
private:
|
||||||
QVBoxLayout *layout; ///< Layout for tabs and controls.
|
QVBoxLayout *layout; ///< Layout for tabs and controls.
|
||||||
AbstractTabDeckEditor *deckEditor; ///< Reference to the deck editor.
|
AbstractTabDeckEditor *deckEditor; ///< Reference to the deck editor.
|
||||||
DeckListModel *deckModel; ///< Deck list model.
|
DeckListModel *deckModel; ///< Deck list model.
|
||||||
CardDatabaseModel *cardDatabaseModel; ///< Card database model.
|
CardDatabaseModel *cardDatabaseModel; ///< Card database model.
|
||||||
CardDatabaseDisplayModel *cardDatabaseDisplayModel; ///< Card database display model.
|
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
/**
|
/**
|
||||||
|
|||||||
+1
@@ -1,5 +1,6 @@
|
|||||||
#include "visual_database_display_filter_toolbar_widget.h"
|
#include "visual_database_display_filter_toolbar_widget.h"
|
||||||
|
|
||||||
|
#include "../deck_editor/card_database_view.h"
|
||||||
#include "visual_database_display_widget.h"
|
#include "visual_database_display_widget.h"
|
||||||
|
|
||||||
#include <QGroupBox>
|
#include <QGroupBox>
|
||||||
|
|||||||
+48
-44
@@ -5,7 +5,7 @@
|
|||||||
#include "../../../filters/syntax_help.h"
|
#include "../../../filters/syntax_help.h"
|
||||||
#include "../../pixel_map_generator.h"
|
#include "../../pixel_map_generator.h"
|
||||||
#include "../cards/card_info_picture_with_text_overlay_widget.h"
|
#include "../cards/card_info_picture_with_text_overlay_widget.h"
|
||||||
#include "../quick_settings/settings_button_widget.h"
|
#include "../deck_editor/card_database_view.h"
|
||||||
#include "../utility/custom_line_edit.h"
|
#include "../utility/custom_line_edit.h"
|
||||||
#include "visual_database_display_color_filter_widget.h"
|
#include "visual_database_display_color_filter_widget.h"
|
||||||
#include "visual_database_display_filter_save_load_widget.h"
|
#include "visual_database_display_filter_save_load_widget.h"
|
||||||
@@ -23,18 +23,21 @@
|
|||||||
#include <utility>
|
#include <utility>
|
||||||
|
|
||||||
VisualDatabaseDisplayWidget::VisualDatabaseDisplayWidget(QWidget *parent,
|
VisualDatabaseDisplayWidget::VisualDatabaseDisplayWidget(QWidget *parent,
|
||||||
AbstractTabDeckEditor *_deckEditor,
|
|
||||||
CardDatabaseModel *database_model,
|
CardDatabaseModel *database_model,
|
||||||
CardDatabaseDisplayModel *database_display_model,
|
|
||||||
DeckListModel *deckListModel)
|
DeckListModel *deckListModel)
|
||||||
: QWidget(parent), deckEditor(_deckEditor), databaseModel(database_model),
|
: QWidget(parent)
|
||||||
databaseDisplayModel(database_display_model)
|
|
||||||
{
|
{
|
||||||
debounceTimer = new QTimer(this);
|
debounceTimer = new QTimer(this);
|
||||||
debounceTimer->setSingleShot(true); // Ensure it only fires once after the timeout
|
debounceTimer->setSingleShot(true); // Ensure it only fires once after the timeout
|
||||||
|
|
||||||
connect(debounceTimer, &QTimer::timeout, this, &VisualDatabaseDisplayWidget::onSearchModelChanged);
|
connect(debounceTimer, &QTimer::timeout, this, &VisualDatabaseDisplayWidget::onSearchModelChanged);
|
||||||
|
|
||||||
|
// Create display model
|
||||||
|
databaseDisplayModel = new CardDatabaseDisplayModel(this);
|
||||||
|
databaseDisplayModel->setObjectName("databaseDisplayModel");
|
||||||
|
databaseDisplayModel->setSourceModel(database_model);
|
||||||
|
databaseDisplayModel->setFilterKeyColumn(0);
|
||||||
|
|
||||||
cards = new QList<ExactCard>;
|
cards = new QList<ExactCard>;
|
||||||
connect(databaseDisplayModel, &CardDatabaseDisplayModel::modelDirty, this,
|
connect(databaseDisplayModel, &CardDatabaseDisplayModel::modelDirty, this,
|
||||||
&VisualDatabaseDisplayWidget::modelDirty);
|
&VisualDatabaseDisplayWidget::modelDirty);
|
||||||
@@ -61,7 +64,6 @@ VisualDatabaseDisplayWidget::VisualDatabaseDisplayWidget(QWidget *parent,
|
|||||||
searchEdit->addAction(loadColorAdjustedPixmap("theme:icons/search"), QLineEdit::LeadingPosition);
|
searchEdit->addAction(loadColorAdjustedPixmap("theme:icons/search"), QLineEdit::LeadingPosition);
|
||||||
auto help = searchEdit->addAction(QPixmap("theme:icons/info"), QLineEdit::TrailingPosition);
|
auto help = searchEdit->addAction(QPixmap("theme:icons/info"), QLineEdit::TrailingPosition);
|
||||||
connect(help, &QAction::triggered, this, [this] { createSearchSyntaxHelpWindow(searchEdit); });
|
connect(help, &QAction::triggered, this, [this] { createSearchSyntaxHelpWindow(searchEdit); });
|
||||||
searchEdit->installEventFilter(&searchKeySignals);
|
|
||||||
|
|
||||||
setFocusProxy(searchEdit);
|
setFocusProxy(searchEdit);
|
||||||
setFocusPolicy(Qt::ClickFocus);
|
setFocusPolicy(Qt::ClickFocus);
|
||||||
@@ -76,37 +78,25 @@ VisualDatabaseDisplayWidget::VisualDatabaseDisplayWidget(QWidget *parent,
|
|||||||
filterModel = new FilterTreeModel();
|
filterModel = new FilterTreeModel();
|
||||||
filterModel->setObjectName("filterModel");
|
filterModel->setObjectName("filterModel");
|
||||||
|
|
||||||
searchKeySignals.setObjectName("searchKeySignals");
|
connect(searchEdit, &SearchLineEdit::textChanged, databaseDisplayModel, &CardDatabaseDisplayModel::setStringFilter);
|
||||||
connect(searchEdit, &SearchLineEdit::textChanged, this, &VisualDatabaseDisplayWidget::updateSearch);
|
|
||||||
|
|
||||||
DeckEditorDatabaseDisplayWidget *databaseDisplayWidget = deckEditor->cardDatabaseDockWidget->databaseDisplayWidget;
|
databaseView = new CardDatabaseView(this, databaseDisplayModel);
|
||||||
connect(&searchKeySignals, &KeySignals::onEnter, databaseDisplayWidget,
|
databaseView->setObjectName("databaseView");
|
||||||
&DeckEditorDatabaseDisplayWidget::actAddCardToMainDeck);
|
|
||||||
connect(&searchKeySignals, &KeySignals::onCtrlAltEqual, databaseDisplayWidget,
|
|
||||||
&DeckEditorDatabaseDisplayWidget::actAddCardToMainDeck);
|
|
||||||
connect(&searchKeySignals, &KeySignals::onCtrlAltRBracket, databaseDisplayWidget,
|
|
||||||
&DeckEditorDatabaseDisplayWidget::actAddCardToSideboard);
|
|
||||||
connect(&searchKeySignals, &KeySignals::onCtrlAltMinus, databaseDisplayWidget,
|
|
||||||
&DeckEditorDatabaseDisplayWidget::actDecrementCardFromMainDeck);
|
|
||||||
connect(&searchKeySignals, &KeySignals::onCtrlAltLBracket, databaseDisplayWidget,
|
|
||||||
&DeckEditorDatabaseDisplayWidget::actDecrementCardFromSideboard);
|
|
||||||
connect(&searchKeySignals, &KeySignals::onCtrlAltEnter, databaseDisplayWidget,
|
|
||||||
&DeckEditorDatabaseDisplayWidget::actAddCardToSideboard);
|
|
||||||
connect(&searchKeySignals, &KeySignals::onCtrlEnter, databaseDisplayWidget,
|
|
||||||
&DeckEditorDatabaseDisplayWidget::actAddCardToSideboard);
|
|
||||||
connect(&searchKeySignals, &KeySignals::onCtrlC, databaseDisplayWidget,
|
|
||||||
&DeckEditorDatabaseDisplayWidget::copyDatabaseCellContents);
|
|
||||||
connect(help, &QAction::triggered, this, [this] { createSearchSyntaxHelpWindow(searchEdit); });
|
|
||||||
|
|
||||||
connect(databaseDisplayWidget, &DeckEditorDatabaseDisplayWidget::cardAdded, this,
|
|
||||||
&VisualDatabaseDisplayWidget::highlightAllSearchEdit);
|
|
||||||
|
|
||||||
databaseView = databaseDisplayWidget->getDatabaseView();
|
|
||||||
databaseView->setFocusProxy(searchEdit);
|
databaseView->setFocusProxy(searchEdit);
|
||||||
databaseView->setItemDelegate(nullptr);
|
databaseView->setItemDelegate(nullptr);
|
||||||
databaseView->setVisible(false);
|
databaseView->setVisible(false);
|
||||||
|
|
||||||
searchEdit->setTreeView(databaseView);
|
searchEdit->setTreeView(databaseView);
|
||||||
|
searchEdit->installEventFilter(databaseView->getKeySignals());
|
||||||
|
|
||||||
|
connect(databaseView, &CardDatabaseView::cardChanged, this, &VisualDatabaseDisplayWidget::onSelectedCardChanged);
|
||||||
|
connect(databaseView, &CardDatabaseView::cardAdded, this, &VisualDatabaseDisplayWidget::actAddCard);
|
||||||
|
connect(databaseView, &CardDatabaseView::cardDecremented, this, &VisualDatabaseDisplayWidget::actDecrementCard);
|
||||||
|
connect(databaseView, &CardDatabaseView::edhrecClicked, this, &VisualDatabaseDisplayWidget::edhrecRequested);
|
||||||
|
connect(databaseView, &CardDatabaseView::selectPrintingClicked, this,
|
||||||
|
&VisualDatabaseDisplayWidget::printingSelectorRequested);
|
||||||
|
connect(databaseView, &CardDatabaseView::relatedCardClicked, this,
|
||||||
|
&VisualDatabaseDisplayWidget::onRelatedCardClicked);
|
||||||
|
|
||||||
colorFilterWidget = new VisualDatabaseDisplayColorFilterWidget(this, filterModel);
|
colorFilterWidget = new VisualDatabaseDisplayColorFilterWidget(this, filterModel);
|
||||||
|
|
||||||
@@ -225,7 +215,7 @@ void VisualDatabaseDisplayWidget::onHover(const ExactCard &hoveredCard)
|
|||||||
emit cardHoveredDatabaseDisplay(hoveredCard);
|
emit cardHoveredDatabaseDisplay(hoveredCard);
|
||||||
}
|
}
|
||||||
|
|
||||||
void VisualDatabaseDisplayWidget::addCard(const ExactCard &cardToAdd)
|
void VisualDatabaseDisplayWidget::addCardToDisplay(const ExactCard &cardToAdd)
|
||||||
{
|
{
|
||||||
cards->append(cardToAdd);
|
cards->append(cardToAdd);
|
||||||
auto *display = new CardInfoPictureWithTextOverlayWidget(flowWidget, false);
|
auto *display = new CardInfoPictureWithTextOverlayWidget(flowWidget, false);
|
||||||
@@ -237,16 +227,6 @@ void VisualDatabaseDisplayWidget::addCard(const ExactCard &cardToAdd)
|
|||||||
connect(cardSizeWidget->getSlider(), &QSlider::valueChanged, display, &CardInfoPictureWidget::setScaleFactor);
|
connect(cardSizeWidget->getSlider(), &QSlider::valueChanged, display, &CardInfoPictureWidget::setScaleFactor);
|
||||||
}
|
}
|
||||||
|
|
||||||
void VisualDatabaseDisplayWidget::updateSearch(const QString &search) const
|
|
||||||
{
|
|
||||||
databaseDisplayModel->setStringFilter(search);
|
|
||||||
QModelIndexList sel = databaseView->selectionModel()->selectedRows();
|
|
||||||
if (sel.isEmpty() && databaseDisplayModel->rowCount()) {
|
|
||||||
databaseView->selectionModel()->setCurrentIndex(databaseDisplayModel->index(0, 0),
|
|
||||||
QItemSelectionModel::SelectCurrent | QItemSelectionModel::Rows);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
bool VisualDatabaseDisplayWidget::isVisualDisplayMode() const
|
bool VisualDatabaseDisplayWidget::isVisualDisplayMode() const
|
||||||
{
|
{
|
||||||
return !displayModeButton->isChecked();
|
return !displayModeButton->isChecked();
|
||||||
@@ -268,6 +248,30 @@ void VisualDatabaseDisplayWidget::onSearchModelChanged()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void VisualDatabaseDisplayWidget::onSelectedCardChanged(const QString &cardName)
|
||||||
|
{
|
||||||
|
emit cardHoveredDatabaseDisplay(CardDatabaseManager::query()->getPreferredCard(cardName));
|
||||||
|
}
|
||||||
|
|
||||||
|
void VisualDatabaseDisplayWidget::actAddCard(const QString &cardName, const QString &zoneName)
|
||||||
|
{
|
||||||
|
highlightAllSearchEdit();
|
||||||
|
ExactCard exactCard = CardDatabaseManager::query()->getPreferredCard(cardName);
|
||||||
|
emit cardAdded(exactCard, zoneName);
|
||||||
|
}
|
||||||
|
|
||||||
|
void VisualDatabaseDisplayWidget::actDecrementCard(const QString &cardName, const QString &zoneName)
|
||||||
|
{
|
||||||
|
ExactCard exactCard = CardDatabaseManager::query()->getPreferredCard(cardName);
|
||||||
|
emit cardDecremented(exactCard, zoneName);
|
||||||
|
}
|
||||||
|
|
||||||
|
void VisualDatabaseDisplayWidget::onRelatedCardClicked(const QString &relatedCard)
|
||||||
|
{
|
||||||
|
ExactCard exactCard = CardDatabaseManager::query()->guessCard({relatedCard});
|
||||||
|
emit cardInfoRequested(exactCard);
|
||||||
|
}
|
||||||
|
|
||||||
bool VisualDatabaseDisplayWidget::nearEndOfPage() const
|
bool VisualDatabaseDisplayWidget::nearEndOfPage() const
|
||||||
{
|
{
|
||||||
if (!flowWidget->isVisible()) {
|
if (!flowWidget->isVisible()) {
|
||||||
@@ -334,12 +338,12 @@ void VisualDatabaseDisplayWidget::loadPage(int start, int end)
|
|||||||
for (const CardFilter *setFilter : setFilters) {
|
for (const CardFilter *setFilter : setFilters) {
|
||||||
if (setMap.contains(setFilter->term())) {
|
if (setMap.contains(setFilter->term())) {
|
||||||
for (PrintingInfo printing : setMap[setFilter->term()]) {
|
for (PrintingInfo printing : setMap[setFilter->term()]) {
|
||||||
addCard(ExactCard(info, printing));
|
addCardToDisplay(ExactCard(info, printing));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
addCard(CardDatabaseManager::query()->getPreferredCard(info));
|
addCardToDisplay(CardDatabaseManager::query()->getPreferredCard(info));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
qCDebug(VisualDatabaseDisplayLog) << "Card not found in database!";
|
qCDebug(VisualDatabaseDisplayLog) << "Card not found in database!";
|
||||||
|
|||||||
+14
-9
@@ -34,9 +34,7 @@ class VisualDatabaseDisplayWidget : public QWidget
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
explicit VisualDatabaseDisplayWidget(QWidget *parent,
|
explicit VisualDatabaseDisplayWidget(QWidget *parent,
|
||||||
AbstractTabDeckEditor *deckEditor,
|
|
||||||
CardDatabaseModel *database_model,
|
CardDatabaseModel *database_model,
|
||||||
CardDatabaseDisplayModel *database_display_model,
|
|
||||||
DeckListModel *deckListModel = nullptr);
|
DeckListModel *deckListModel = nullptr);
|
||||||
void retranslateUi();
|
void retranslateUi();
|
||||||
|
|
||||||
@@ -53,7 +51,7 @@ public:
|
|||||||
return databaseDisplayModel;
|
return databaseDisplayModel;
|
||||||
}
|
}
|
||||||
|
|
||||||
QTreeView *getDatabaseView()
|
CardDatabaseView *getDatabaseView()
|
||||||
{
|
{
|
||||||
return databaseView;
|
return databaseView;
|
||||||
}
|
}
|
||||||
@@ -75,16 +73,26 @@ signals:
|
|||||||
void cardClickedDatabaseDisplay(QMouseEvent *event, const ExactCard &card);
|
void cardClickedDatabaseDisplay(QMouseEvent *event, const ExactCard &card);
|
||||||
void cardHoveredDatabaseDisplay(const ExactCard &hoveredCard);
|
void cardHoveredDatabaseDisplay(const ExactCard &hoveredCard);
|
||||||
|
|
||||||
|
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);
|
||||||
|
|
||||||
protected slots:
|
protected slots:
|
||||||
void initialize();
|
void initialize();
|
||||||
void onClick(QMouseEvent *event, const ExactCard &card);
|
void onClick(QMouseEvent *event, const ExactCard &card);
|
||||||
void onHover(const ExactCard &hoveredCard);
|
void onHover(const ExactCard &hoveredCard);
|
||||||
void addCard(const ExactCard &cardToAdd);
|
void addCardToDisplay(const ExactCard &cardToAdd);
|
||||||
void databaseDataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight);
|
void databaseDataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight);
|
||||||
void modelDirty() const;
|
void modelDirty() const;
|
||||||
void updateSearch(const QString &search) const;
|
|
||||||
void onDisplayModeChanged(bool checked);
|
void onDisplayModeChanged(bool checked);
|
||||||
|
|
||||||
|
void onSelectedCardChanged(const QString &cardName);
|
||||||
|
void actAddCard(const QString &cardName, const QString &zoneName);
|
||||||
|
void actDecrementCard(const QString &cardName, const QString &zoneName);
|
||||||
|
void onRelatedCardClicked(const QString &relatedCard);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
FlowWidget *searchContainer;
|
FlowWidget *searchContainer;
|
||||||
SearchLineEdit *searchEdit;
|
SearchLineEdit *searchEdit;
|
||||||
@@ -96,11 +104,8 @@ private:
|
|||||||
|
|
||||||
QToolButton *clearFilterWidget;
|
QToolButton *clearFilterWidget;
|
||||||
VisualDatabaseDisplayFilterToolbarWidget *filterContainer;
|
VisualDatabaseDisplayFilterToolbarWidget *filterContainer;
|
||||||
KeySignals searchKeySignals;
|
|
||||||
AbstractTabDeckEditor *deckEditor;
|
|
||||||
CardDatabaseModel *databaseModel;
|
|
||||||
CardDatabaseDisplayModel *databaseDisplayModel;
|
CardDatabaseDisplayModel *databaseDisplayModel;
|
||||||
QTreeView *databaseView;
|
CardDatabaseView *databaseView;
|
||||||
QList<ExactCard> *cards;
|
QList<ExactCard> *cards;
|
||||||
QVBoxLayout *mainLayout;
|
QVBoxLayout *mainLayout;
|
||||||
QScrollArea *scrollArea;
|
QScrollArea *scrollArea;
|
||||||
|
|||||||
Reference in New Issue
Block a user