diff --git a/cockatrice/CMakeLists.txt b/cockatrice/CMakeLists.txt index 85e1cd00f..fb57bf7e0 100644 --- a/cockatrice/CMakeLists.txt +++ b/cockatrice/CMakeLists.txt @@ -317,6 +317,8 @@ set(cockatrice_SOURCES src/interface/widgets/tabs/api/edhrec/display/commander/edhrec_commander_api_response_bracket_navigation_widget.h src/interface/widgets/tabs/api/edhrec/display/commander/edhrec_commander_api_response_budget_navigation_widget.cpp src/interface/widgets/tabs/api/edhrec/display/commander/edhrec_commander_api_response_budget_navigation_widget.h + src/interface/widgets/visual_database_display/visual_database_display_filter_toolbar_widget.cpp + src/interface/widgets/visual_database_display/visual_database_display_filter_toolbar_widget.h ) add_subdirectory(sounds) diff --git a/cockatrice/src/interface/widgets/quick_settings/settings_button_widget.cpp b/cockatrice/src/interface/widgets/quick_settings/settings_button_widget.cpp index 17087c8bc..57dfba800 100644 --- a/cockatrice/src/interface/widgets/quick_settings/settings_button_widget.cpp +++ b/cockatrice/src/interface/widgets/quick_settings/settings_button_widget.cpp @@ -8,7 +8,6 @@ SettingsButtonWidget::SettingsButtonWidget(QWidget *parent) : QWidget(parent), button(new QToolButton(this)), popup(new SettingsPopupWidget(nullptr)) { - button->setIcon(QPixmap("theme:icons/cogwheel")); button->setCheckable(true); button->setFixedSize(32, 32); @@ -36,6 +35,21 @@ void SettingsButtonWidget::setButtonIcon(QPixmap iconMap) button->setIcon(iconMap); } +void SettingsButtonWidget::setButtonText(const QString &buttonText) +{ + // 🔓 unlock size constraints + button->setMinimumSize(QSize()); + button->setMaximumSize(QSize(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX)); + + button->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); + button->setText(buttonText); + + button->setFixedHeight(32); + button->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed); + + button->setMinimumWidth(button->sizeHint().width()); +} + void SettingsButtonWidget::togglePopup() { if (popup->isVisible()) { diff --git a/cockatrice/src/interface/widgets/quick_settings/settings_button_widget.h b/cockatrice/src/interface/widgets/quick_settings/settings_button_widget.h index d93078126..36f01ac38 100644 --- a/cockatrice/src/interface/widgets/quick_settings/settings_button_widget.h +++ b/cockatrice/src/interface/widgets/quick_settings/settings_button_widget.h @@ -22,6 +22,7 @@ public: void addSettingsWidget(QWidget *toAdd) const; void removeSettingsWidget(QWidget *toRemove) const; void setButtonIcon(QPixmap iconMap); + void setButtonText(const QString &buttonText); protected: void mousePressEvent(QMouseEvent *event) override; diff --git a/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_filter_toolbar_widget.cpp b/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_filter_toolbar_widget.cpp new file mode 100644 index 000000000..1509dbaa7 --- /dev/null +++ b/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_filter_toolbar_widget.cpp @@ -0,0 +1,130 @@ +#include "visual_database_display_filter_toolbar_widget.h" + +#include "visual_database_display_widget.h" + +VisualDatabaseDisplayFilterToolbarWidget::VisualDatabaseDisplayFilterToolbarWidget(VisualDatabaseDisplayWidget *_parent) + : QWidget(_parent), visualDatabaseDisplay(_parent) +{ + filterContainerLayout = new QHBoxLayout(this); + setLayout(filterContainerLayout); + filterContainerLayout->setAlignment(Qt::AlignLeft); + + setMaximumHeight(80); + + connect(this, &VisualDatabaseDisplayFilterToolbarWidget::searchModelChanged, visualDatabaseDisplay, + &VisualDatabaseDisplayWidget::onSearchModelChanged); + + filterByLabel = new QLabel(this); + + sortByLabel = new QLabel(this); + sortColumnCombo = new QComboBox(this); + sortColumnCombo->setSizeAdjustPolicy(QComboBox::SizeAdjustPolicy::AdjustToContents); + sortOrderCombo = new QComboBox(this); + sortOrderCombo->setSizeAdjustPolicy(QComboBox::SizeAdjustPolicy::AdjustToContents); + + sortOrderCombo->addItem("Ascending", Qt::AscendingOrder); + sortOrderCombo->addItem("Descending", Qt::DescendingOrder); + sortOrderCombo->view()->setMinimumWidth(sortOrderCombo->view()->sizeHintForColumn(0)); + sortOrderCombo->adjustSize(); + + // Populate columns dynamically from the model + for (int i = 0; i < visualDatabaseDisplay->getDatabaseDisplayModel()->columnCount(); ++i) { + QString header = visualDatabaseDisplay->getDatabaseDisplayModel()->headerData(i, Qt::Horizontal).toString(); + sortColumnCombo->addItem(header, i); + } + + sortColumnCombo->view()->setMinimumWidth(sortColumnCombo->view()->sizeHintForColumn(0)); + sortColumnCombo->adjustSize(); + + connect(sortColumnCombo, QOverload::of(&QComboBox::currentIndexChanged), this, [this]() { + int column = sortColumnCombo->currentData().toInt(); + Qt::SortOrder order = static_cast(sortOrderCombo->currentData().toInt()); + visualDatabaseDisplay->getDatabaseView()->sortByColumn(column, order); + + emit searchModelChanged(); + }); + + connect(sortOrderCombo, QOverload::of(&QComboBox::currentIndexChanged), this, [this]() { + int column = sortColumnCombo->currentData().toInt(); + Qt::SortOrder order = static_cast(sortOrderCombo->currentData().toInt()); + visualDatabaseDisplay->getDatabaseView()->sortByColumn(column, order); + + emit searchModelChanged(); + }); + + quickFilterSaveLoadWidget = new SettingsButtonWidget(this); + quickFilterSaveLoadWidget->setButtonIcon(QPixmap("theme:icons/lock")); + quickFilterSaveLoadWidget->setButtonText("Save/Load"); + + quickFilterNameWidget = new SettingsButtonWidget(this); + quickFilterNameWidget->setButtonIcon(QPixmap("theme:icons/rename")); + quickFilterNameWidget->setButtonText("Name"); + + quickFilterMainTypeWidget = new SettingsButtonWidget(this); + quickFilterMainTypeWidget->setButtonIcon(QPixmap("theme:icons/player")); + quickFilterMainTypeWidget->setButtonText("Main Type"); + + quickFilterSubTypeWidget = new SettingsButtonWidget(this); + quickFilterSubTypeWidget->setButtonIcon(QPixmap("theme:icons/player")); + quickFilterSubTypeWidget->setButtonText("Sub Type"); + + quickFilterSetWidget = new SettingsButtonWidget(this); + quickFilterSetWidget->setButtonIcon(QPixmap("theme:icons/scales")); + quickFilterSetWidget->setButtonText("Sets"); + + quickFilterFormatLegalityWidget = new SettingsButtonWidget(this); + quickFilterFormatLegalityWidget->setButtonIcon(QPixmap("theme:icons/player")); + quickFilterFormatLegalityWidget->setButtonText("Formats"); + + retranslateUi(); +} + +void VisualDatabaseDisplayFilterToolbarWidget::initialize() +{ + sortByLabel->setVisible(true); + filterByLabel->setVisible(true); + + quickFilterSaveLoadWidget->setVisible(true); + quickFilterNameWidget->setVisible(true); + quickFilterSubTypeWidget->setVisible(true); + quickFilterSetWidget->setVisible(true); + + auto filterModel = visualDatabaseDisplay->filterModel; + + saveLoadWidget = new VisualDatabaseDisplayFilterSaveLoadWidget(this, filterModel); + nameFilterWidget = + new VisualDatabaseDisplayNameFilterWidget(this, visualDatabaseDisplay->getDeckEditor(), filterModel); + mainTypeFilterWidget = new VisualDatabaseDisplayMainTypeFilterWidget(this, filterModel); + formatLegalityWidget = new VisualDatabaseDisplayFormatLegalityFilterWidget(this, filterModel); + subTypeFilterWidget = new VisualDatabaseDisplaySubTypeFilterWidget(this, filterModel); + setFilterWidget = new VisualDatabaseDisplaySetFilterWidget(this, filterModel); + + quickFilterSaveLoadWidget->addSettingsWidget(saveLoadWidget); + quickFilterNameWidget->addSettingsWidget(nameFilterWidget); + quickFilterMainTypeWidget->addSettingsWidget(mainTypeFilterWidget); + quickFilterSubTypeWidget->addSettingsWidget(subTypeFilterWidget); + quickFilterSetWidget->addSettingsWidget(setFilterWidget); + quickFilterFormatLegalityWidget->addSettingsWidget(formatLegalityWidget); + + filterContainerLayout->addWidget(sortByLabel); + filterContainerLayout->addWidget(sortColumnCombo); + filterContainerLayout->addWidget(sortOrderCombo); + filterContainerLayout->addWidget(filterByLabel); + filterContainerLayout->addWidget(quickFilterSaveLoadWidget); + filterContainerLayout->addWidget(quickFilterNameWidget); + filterContainerLayout->addWidget(quickFilterMainTypeWidget); + filterContainerLayout->addWidget(quickFilterSubTypeWidget); + filterContainerLayout->addWidget(quickFilterSetWidget); + filterContainerLayout->addWidget(quickFilterFormatLegalityWidget); +} + +void VisualDatabaseDisplayFilterToolbarWidget::retranslateUi() +{ + sortByLabel->setText(tr("Sort by:")); + filterByLabel->setText(tr("Filter by:")); + + quickFilterSaveLoadWidget->setToolTip(tr("Save and load filters")); + quickFilterNameWidget->setToolTip(tr("Filter by exact card name")); + quickFilterSubTypeWidget->setToolTip(tr("Filter by card sub-type")); + quickFilterSetWidget->setToolTip(tr("Filter by set")); +} \ No newline at end of file diff --git a/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_filter_toolbar_widget.h b/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_filter_toolbar_widget.h new file mode 100644 index 000000000..a6c614656 --- /dev/null +++ b/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_filter_toolbar_widget.h @@ -0,0 +1,48 @@ +#ifndef COCKATRICE_VISUAL_DATABASE_DISPLAY_FILTER_TOOLBAR_WIDGET_H +#define COCKATRICE_VISUAL_DATABASE_DISPLAY_FILTER_TOOLBAR_WIDGET_H + +#include "visual_database_display_filter_save_load_widget.h" +#include "visual_database_display_format_legality_filter_widget.h" +#include "visual_database_display_main_type_filter_widget.h" +#include "visual_database_display_name_filter_widget.h" +#include "visual_database_display_set_filter_widget.h" +#include "visual_database_display_sub_type_filter_widget.h" + +class VisualDatabaseDisplayWidget; + +class VisualDatabaseDisplayFilterToolbarWidget : public QWidget +{ + Q_OBJECT + +signals: + void searchModelChanged(); + +public: + explicit VisualDatabaseDisplayFilterToolbarWidget(VisualDatabaseDisplayWidget *parent); + void initialize(); + void retranslateUi(); + +private: + VisualDatabaseDisplayWidget *visualDatabaseDisplay; + + QLabel *sortByLabel; + QComboBox *sortColumnCombo, *sortOrderCombo; + + QLabel *filterByLabel; + + QHBoxLayout *filterContainerLayout; + SettingsButtonWidget *quickFilterSaveLoadWidget; + VisualDatabaseDisplayFilterSaveLoadWidget *saveLoadWidget; + SettingsButtonWidget *quickFilterNameWidget; + VisualDatabaseDisplayNameFilterWidget *nameFilterWidget; + SettingsButtonWidget *quickFilterMainTypeWidget; + VisualDatabaseDisplayMainTypeFilterWidget *mainTypeFilterWidget; + SettingsButtonWidget *quickFilterSubTypeWidget; + VisualDatabaseDisplaySubTypeFilterWidget *subTypeFilterWidget; + SettingsButtonWidget *quickFilterSetWidget; + VisualDatabaseDisplaySetFilterWidget *setFilterWidget; + SettingsButtonWidget *quickFilterFormatLegalityWidget; + VisualDatabaseDisplayFormatLegalityFilterWidget *formatLegalityWidget; +}; + +#endif // COCKATRICE_VISUAL_DATABASE_DISPLAY_FILTER_TOOLBAR_WIDGET_H diff --git a/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_format_legality_filter_widget.cpp b/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_format_legality_filter_widget.cpp index 1f1b7b94c..de817f59c 100644 --- a/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_format_legality_filter_widget.cpp +++ b/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_format_legality_filter_widget.cpp @@ -14,11 +14,10 @@ VisualDatabaseDisplayFormatLegalityFilterWidget::VisualDatabaseDisplayFormatLega : QWidget(parent), filterModel(_filterModel) { allFormatsWithCount = CardDatabaseManager::query()->getAllFormatsWithCount(); + setMinimumWidth(300); + setMaximumHeight(300); - setMaximumHeight(75); - setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Minimum); - - layout = new QHBoxLayout(this); + layout = new QVBoxLayout(this); setLayout(layout); layout->setContentsMargins(0, 1, 0, 1); layout->setSpacing(1); diff --git a/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_format_legality_filter_widget.h b/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_format_legality_filter_widget.h index a2a00b740..88bbdeb67 100644 --- a/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_format_legality_filter_widget.h +++ b/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_format_legality_filter_widget.h @@ -30,7 +30,7 @@ private: FilterTreeModel *filterModel; QMap allFormatsWithCount; QSpinBox *spinBox; - QHBoxLayout *layout; + QVBoxLayout *layout; FlowWidget *flowWidget; QPushButton *toggleButton; // Mode switch button diff --git a/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_main_type_filter_widget.cpp b/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_main_type_filter_widget.cpp index 368ac8719..703d63293 100644 --- a/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_main_type_filter_widget.cpp +++ b/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_main_type_filter_widget.cpp @@ -12,13 +12,12 @@ VisualDatabaseDisplayMainTypeFilterWidget::VisualDatabaseDisplayMainTypeFilterWi FilterTreeModel *_filterModel) : QWidget(parent), filterModel(_filterModel) { - allMainCardTypesWithCount = CardDatabaseManager::query()->getAllMainCardTypesWithCount(); // Get all main card types with their count + allMainCardTypesWithCount = CardDatabaseManager::query()->getAllMainCardTypesWithCount(); + setMinimumWidth(300); + setMaximumHeight(200); - setMaximumHeight(75); - setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Minimum); - - layout = new QHBoxLayout(this); + layout = new QVBoxLayout(this); setLayout(layout); layout->setContentsMargins(0, 1, 0, 1); layout->setSpacing(1); diff --git a/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_main_type_filter_widget.h b/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_main_type_filter_widget.h index 27c61dffc..f65a43a0a 100644 --- a/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_main_type_filter_widget.h +++ b/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_main_type_filter_widget.h @@ -35,7 +35,7 @@ private: FilterTreeModel *filterModel; QMap allMainCardTypesWithCount; QSpinBox *spinBox; - QHBoxLayout *layout; + QVBoxLayout *layout; FlowWidget *flowWidget; QPushButton *toggleButton; // Mode switch button diff --git a/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_widget.cpp b/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_widget.cpp index 6112faedf..44a9e98a0 100644 --- a/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_widget.cpp +++ b/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_widget.cpp @@ -101,49 +101,9 @@ VisualDatabaseDisplayWidget::VisualDatabaseDisplayWidget(QWidget *parent, searchEdit->setTreeView(databaseView); - sortByLabel = new QLabel(this); - sortColumnCombo = new QComboBox(this); - sortColumnCombo->setSizeAdjustPolicy(QComboBox::SizeAdjustPolicy::AdjustToContents); - sortOrderCombo = new QComboBox(this); - sortOrderCombo->setSizeAdjustPolicy(QComboBox::SizeAdjustPolicy::AdjustToContents); - - sortOrderCombo->addItem("Ascending", Qt::AscendingOrder); - sortOrderCombo->addItem("Descending", Qt::DescendingOrder); - sortOrderCombo->view()->setMinimumWidth(sortOrderCombo->view()->sizeHintForColumn(0)); - sortOrderCombo->adjustSize(); - - // Populate columns dynamically from the model - for (int i = 0; i < databaseDisplayModel->columnCount(); ++i) { - QString header = databaseDisplayModel->headerData(i, Qt::Horizontal).toString(); - sortColumnCombo->addItem(header, i); - } - - sortColumnCombo->view()->setMinimumWidth(sortColumnCombo->view()->sizeHintForColumn(0)); - sortColumnCombo->adjustSize(); - - connect(sortColumnCombo, QOverload::of(&QComboBox::currentIndexChanged), this, [this]() { - int column = sortColumnCombo->currentData().toInt(); - Qt::SortOrder order = static_cast(sortOrderCombo->currentData().toInt()); - databaseView->sortByColumn(column, order); - - searchModelChanged(); - }); - - connect(sortOrderCombo, QOverload::of(&QComboBox::currentIndexChanged), this, [this]() { - int column = sortColumnCombo->currentData().toInt(); - Qt::SortOrder order = static_cast(sortOrderCombo->currentData().toInt()); - databaseView->sortByColumn(column, order); - - searchModelChanged(); - }); - colorFilterWidget = new VisualDatabaseDisplayColorFilterWidget(this, filterModel); - filterContainer = new QWidget(this); - filterContainerLayout = new QHBoxLayout(filterContainer); - filterContainer->setLayout(filterContainerLayout); - - filterByLabel = new QLabel(this); + filterContainer = new VisualDatabaseDisplayFilterToolbarWidget(this); clearFilterWidget = new QToolButton(); clearFilterWidget->setFixedSize(32, 32); @@ -158,20 +118,6 @@ VisualDatabaseDisplayWidget::VisualDatabaseDisplayWidget(QWidget *parent, emit filterModel->layoutChanged(); }); - quickFilterSaveLoadWidget = new SettingsButtonWidget(this); - quickFilterSaveLoadWidget->setButtonIcon(QPixmap("theme:icons/lock")); - - quickFilterNameWidget = new SettingsButtonWidget(this); - quickFilterNameWidget->setButtonIcon(QPixmap("theme:icons/rename")); - - quickFilterSubTypeWidget = new SettingsButtonWidget(this); - quickFilterSubTypeWidget->setButtonIcon(QPixmap("theme:icons/player")); - - quickFilterSetWidget = new SettingsButtonWidget(this); - quickFilterSetWidget->setButtonIcon(QPixmap("theme:icons/scales")); - - filterContainer->setMaximumHeight(80); - databaseLoadIndicator = new QLabel(this); databaseLoadIndicator->setAlignment(Qt::AlignCenter); @@ -180,12 +126,7 @@ VisualDatabaseDisplayWidget::VisualDatabaseDisplayWidget(QWidget *parent, if (CardDatabaseManager::getInstance()->getLoadStatus() != LoadStatus::Ok) { connect(CardDatabaseManager::getInstance(), &CardDatabase::cardDatabaseLoadingFinished, this, &VisualDatabaseDisplayWidget::initialize); - sortByLabel->setVisible(false); - filterByLabel->setVisible(false); - quickFilterSaveLoadWidget->setVisible(false); - quickFilterNameWidget->setVisible(false); - quickFilterSubTypeWidget->setVisible(false); - quickFilterSetWidget->setVisible(false); + filterContainer->setVisible(false); } else { initialize(); databaseLoadIndicator->setVisible(false); @@ -198,35 +139,7 @@ void VisualDatabaseDisplayWidget::initialize() { databaseLoadIndicator->setVisible(false); - sortByLabel->setVisible(true); - filterByLabel->setVisible(true); - quickFilterSaveLoadWidget->setVisible(true); - quickFilterNameWidget->setVisible(true); - quickFilterSubTypeWidget->setVisible(true); - quickFilterSetWidget->setVisible(true); - - saveLoadWidget = new VisualDatabaseDisplayFilterSaveLoadWidget(this, filterModel); - nameFilterWidget = new VisualDatabaseDisplayNameFilterWidget(this, deckEditor, filterModel); - mainTypeFilterWidget = new VisualDatabaseDisplayMainTypeFilterWidget(this, filterModel); - formatLegalityWidget = new VisualDatabaseDisplayFormatLegalityFilterWidget(this, filterModel); - subTypeFilterWidget = new VisualDatabaseDisplaySubTypeFilterWidget(this, filterModel); - setFilterWidget = new VisualDatabaseDisplaySetFilterWidget(this, filterModel); - - quickFilterSaveLoadWidget->addSettingsWidget(saveLoadWidget); - quickFilterNameWidget->addSettingsWidget(nameFilterWidget); - quickFilterSubTypeWidget->addSettingsWidget(subTypeFilterWidget); - quickFilterSetWidget->addSettingsWidget(setFilterWidget); - - filterContainerLayout->addWidget(sortByLabel); - filterContainerLayout->addWidget(sortColumnCombo); - filterContainerLayout->addWidget(sortOrderCombo); - filterContainerLayout->addWidget(filterByLabel); - filterContainerLayout->addWidget(quickFilterSaveLoadWidget); - filterContainerLayout->addWidget(quickFilterNameWidget); - filterContainerLayout->addWidget(quickFilterSubTypeWidget); - filterContainerLayout->addWidget(quickFilterSetWidget); - filterContainerLayout->addWidget(mainTypeFilterWidget); - filterContainerLayout->addWidget(formatLegalityWidget); + filterContainer->initialize(); searchLayout->addWidget(colorFilterWidget); searchLayout->addWidget(clearFilterWidget); @@ -246,11 +159,11 @@ void VisualDatabaseDisplayWidget::initialize() debounceTimer = new QTimer(this); debounceTimer->setSingleShot(true); // Ensure it only fires once after the timeout - connect(debounceTimer, &QTimer::timeout, this, &VisualDatabaseDisplayWidget::searchModelChanged); + connect(debounceTimer, &QTimer::timeout, this, &VisualDatabaseDisplayWidget::onSearchModelChanged); databaseDisplayModel->setFilterTree(filterModel->filterTree()); - connect(filterModel, &FilterTreeModel::layoutChanged, this, &VisualDatabaseDisplayWidget::searchModelChanged); + connect(filterModel, &FilterTreeModel::layoutChanged, this, &VisualDatabaseDisplayWidget::onSearchModelChanged); loadCardsTimer = new QTimer(this); loadCardsTimer->setSingleShot(true); // Ensure it only fires once after the timeout @@ -264,16 +177,7 @@ void VisualDatabaseDisplayWidget::initialize() void VisualDatabaseDisplayWidget::retranslateUi() { databaseLoadIndicator->setText(tr("Loading database ...")); - clearFilterWidget->setToolTip(tr("Clear all filters")); - - sortByLabel->setText(tr("Sort by:")); - filterByLabel->setText(tr("Filter by:")); - - quickFilterSaveLoadWidget->setToolTip(tr("Save and load filters")); - quickFilterNameWidget->setToolTip(tr("Filter by exact card name")); - quickFilterSubTypeWidget->setToolTip(tr("Filter by card sub-type")); - quickFilterSetWidget->setToolTip(tr("Filter by set")); } void VisualDatabaseDisplayWidget::resizeEvent(QResizeEvent *event) @@ -332,7 +236,7 @@ void VisualDatabaseDisplayWidget::updateSearch(const QString &search) const QItemSelectionModel::SelectCurrent | QItemSelectionModel::Rows); } -void VisualDatabaseDisplayWidget::searchModelChanged() +void VisualDatabaseDisplayWidget::onSearchModelChanged() { if (flowWidget->isVisible()) { // Clear the current page and prepare for new data diff --git a/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_widget.h b/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_widget.h index 24990f8e5..3aa8d7f8e 100644 --- a/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_widget.h +++ b/cockatrice/src/interface/widgets/visual_database_display/visual_database_display_widget.h @@ -16,12 +16,7 @@ #include "../general/layout_containers/overlap_control_widget.h" #include "../utility/custom_line_edit.h" #include "visual_database_display_color_filter_widget.h" -#include "visual_database_display_filter_save_load_widget.h" -#include "visual_database_display_format_legality_filter_widget.h" -#include "visual_database_display_main_type_filter_widget.h" -#include "visual_database_display_name_filter_widget.h" -#include "visual_database_display_set_filter_widget.h" -#include "visual_database_display_sub_type_filter_widget.h" +#include "visual_database_display_filter_toolbar_widget.h" #include #include @@ -52,6 +47,21 @@ public: void sortCardList(const QStringList &properties, Qt::SortOrder order) const; void setDeckList(const DeckList &new_deck_list_model); + AbstractTabDeckEditor *getDeckEditor() + { + return deckEditor; + } + + CardDatabaseDisplayModel *getDatabaseDisplayModel() + { + return databaseDisplayModel; + } + + QTreeView *getDatabaseView() + { + return databaseView; + } + QWidget *searchContainer; QHBoxLayout *searchLayout; SearchLineEdit *searchEdit; @@ -60,7 +70,7 @@ public: VisualDatabaseDisplayColorFilterWidget *colorFilterWidget; public slots: - void searchModelChanged(); + void onSearchModelChanged(); signals: void cardClickedDatabaseDisplay(QMouseEvent *event, CardInfoPictureWithTextOverlayWidget *instance); @@ -80,23 +90,8 @@ protected slots: private: QLabel *databaseLoadIndicator; - QLabel *sortByLabel; - QComboBox *sortColumnCombo, *sortOrderCombo; - - QLabel *filterByLabel; QToolButton *clearFilterWidget; - QWidget *filterContainer; - QHBoxLayout *filterContainerLayout; - SettingsButtonWidget *quickFilterSaveLoadWidget; - VisualDatabaseDisplayFilterSaveLoadWidget *saveLoadWidget; - SettingsButtonWidget *quickFilterNameWidget; - VisualDatabaseDisplayNameFilterWidget *nameFilterWidget; - VisualDatabaseDisplayMainTypeFilterWidget *mainTypeFilterWidget; - VisualDatabaseDisplayFormatLegalityFilterWidget *formatLegalityWidget; - SettingsButtonWidget *quickFilterSubTypeWidget; - VisualDatabaseDisplaySubTypeFilterWidget *subTypeFilterWidget; - SettingsButtonWidget *quickFilterSetWidget; - VisualDatabaseDisplaySetFilterWidget *setFilterWidget; + VisualDatabaseDisplayFilterToolbarWidget *filterContainer; KeySignals searchKeySignals; AbstractTabDeckEditor *deckEditor; CardDatabaseModel *databaseModel;