mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-07-09 09:33:57 -07:00
[VDD] Reorder quick filters
Took 1 hour 10 minutes Took 5 seconds Took 49 seconds
This commit is contained in:
parent
ed1115f4c0
commit
50a0a8b075
11 changed files with 229 additions and 137 deletions
|
|
@ -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_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.cpp
|
||||||
src/interface/widgets/tabs/api/edhrec/display/commander/edhrec_commander_api_response_budget_navigation_widget.h
|
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)
|
add_subdirectory(sounds)
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,6 @@
|
||||||
SettingsButtonWidget::SettingsButtonWidget(QWidget *parent)
|
SettingsButtonWidget::SettingsButtonWidget(QWidget *parent)
|
||||||
: QWidget(parent), button(new QToolButton(this)), popup(new SettingsPopupWidget(nullptr))
|
: QWidget(parent), button(new QToolButton(this)), popup(new SettingsPopupWidget(nullptr))
|
||||||
{
|
{
|
||||||
|
|
||||||
button->setIcon(QPixmap("theme:icons/cogwheel"));
|
button->setIcon(QPixmap("theme:icons/cogwheel"));
|
||||||
button->setCheckable(true);
|
button->setCheckable(true);
|
||||||
button->setFixedSize(32, 32);
|
button->setFixedSize(32, 32);
|
||||||
|
|
@ -36,6 +35,21 @@ void SettingsButtonWidget::setButtonIcon(QPixmap iconMap)
|
||||||
button->setIcon(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()
|
void SettingsButtonWidget::togglePopup()
|
||||||
{
|
{
|
||||||
if (popup->isVisible()) {
|
if (popup->isVisible()) {
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,7 @@ public:
|
||||||
void addSettingsWidget(QWidget *toAdd) const;
|
void addSettingsWidget(QWidget *toAdd) const;
|
||||||
void removeSettingsWidget(QWidget *toRemove) const;
|
void removeSettingsWidget(QWidget *toRemove) const;
|
||||||
void setButtonIcon(QPixmap iconMap);
|
void setButtonIcon(QPixmap iconMap);
|
||||||
|
void setButtonText(const QString &buttonText);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void mousePressEvent(QMouseEvent *event) override;
|
void mousePressEvent(QMouseEvent *event) override;
|
||||||
|
|
|
||||||
|
|
@ -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<int>::of(&QComboBox::currentIndexChanged), this, [this]() {
|
||||||
|
int column = sortColumnCombo->currentData().toInt();
|
||||||
|
Qt::SortOrder order = static_cast<Qt::SortOrder>(sortOrderCombo->currentData().toInt());
|
||||||
|
visualDatabaseDisplay->getDatabaseView()->sortByColumn(column, order);
|
||||||
|
|
||||||
|
emit searchModelChanged();
|
||||||
|
});
|
||||||
|
|
||||||
|
connect(sortOrderCombo, QOverload<int>::of(&QComboBox::currentIndexChanged), this, [this]() {
|
||||||
|
int column = sortColumnCombo->currentData().toInt();
|
||||||
|
Qt::SortOrder order = static_cast<Qt::SortOrder>(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"));
|
||||||
|
}
|
||||||
|
|
@ -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
|
||||||
|
|
@ -14,11 +14,10 @@ VisualDatabaseDisplayFormatLegalityFilterWidget::VisualDatabaseDisplayFormatLega
|
||||||
: QWidget(parent), filterModel(_filterModel)
|
: QWidget(parent), filterModel(_filterModel)
|
||||||
{
|
{
|
||||||
allFormatsWithCount = CardDatabaseManager::query()->getAllFormatsWithCount();
|
allFormatsWithCount = CardDatabaseManager::query()->getAllFormatsWithCount();
|
||||||
|
setMinimumWidth(300);
|
||||||
|
setMaximumHeight(300);
|
||||||
|
|
||||||
setMaximumHeight(75);
|
layout = new QVBoxLayout(this);
|
||||||
setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Minimum);
|
|
||||||
|
|
||||||
layout = new QHBoxLayout(this);
|
|
||||||
setLayout(layout);
|
setLayout(layout);
|
||||||
layout->setContentsMargins(0, 1, 0, 1);
|
layout->setContentsMargins(0, 1, 0, 1);
|
||||||
layout->setSpacing(1);
|
layout->setSpacing(1);
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@ private:
|
||||||
FilterTreeModel *filterModel;
|
FilterTreeModel *filterModel;
|
||||||
QMap<QString, int> allFormatsWithCount;
|
QMap<QString, int> allFormatsWithCount;
|
||||||
QSpinBox *spinBox;
|
QSpinBox *spinBox;
|
||||||
QHBoxLayout *layout;
|
QVBoxLayout *layout;
|
||||||
FlowWidget *flowWidget;
|
FlowWidget *flowWidget;
|
||||||
QPushButton *toggleButton; // Mode switch button
|
QPushButton *toggleButton; // Mode switch button
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -12,13 +12,12 @@ VisualDatabaseDisplayMainTypeFilterWidget::VisualDatabaseDisplayMainTypeFilterWi
|
||||||
FilterTreeModel *_filterModel)
|
FilterTreeModel *_filterModel)
|
||||||
: QWidget(parent), filterModel(_filterModel)
|
: QWidget(parent), filterModel(_filterModel)
|
||||||
{
|
{
|
||||||
allMainCardTypesWithCount = CardDatabaseManager::query()->getAllMainCardTypesWithCount();
|
|
||||||
// Get all main card types with their count
|
// Get all main card types with their count
|
||||||
|
allMainCardTypesWithCount = CardDatabaseManager::query()->getAllMainCardTypesWithCount();
|
||||||
|
setMinimumWidth(300);
|
||||||
|
setMaximumHeight(200);
|
||||||
|
|
||||||
setMaximumHeight(75);
|
layout = new QVBoxLayout(this);
|
||||||
setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Minimum);
|
|
||||||
|
|
||||||
layout = new QHBoxLayout(this);
|
|
||||||
setLayout(layout);
|
setLayout(layout);
|
||||||
layout->setContentsMargins(0, 1, 0, 1);
|
layout->setContentsMargins(0, 1, 0, 1);
|
||||||
layout->setSpacing(1);
|
layout->setSpacing(1);
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,7 @@ private:
|
||||||
FilterTreeModel *filterModel;
|
FilterTreeModel *filterModel;
|
||||||
QMap<QString, int> allMainCardTypesWithCount;
|
QMap<QString, int> allMainCardTypesWithCount;
|
||||||
QSpinBox *spinBox;
|
QSpinBox *spinBox;
|
||||||
QHBoxLayout *layout;
|
QVBoxLayout *layout;
|
||||||
FlowWidget *flowWidget;
|
FlowWidget *flowWidget;
|
||||||
QPushButton *toggleButton; // Mode switch button
|
QPushButton *toggleButton; // Mode switch button
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -101,49 +101,9 @@ VisualDatabaseDisplayWidget::VisualDatabaseDisplayWidget(QWidget *parent,
|
||||||
|
|
||||||
searchEdit->setTreeView(databaseView);
|
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<int>::of(&QComboBox::currentIndexChanged), this, [this]() {
|
|
||||||
int column = sortColumnCombo->currentData().toInt();
|
|
||||||
Qt::SortOrder order = static_cast<Qt::SortOrder>(sortOrderCombo->currentData().toInt());
|
|
||||||
databaseView->sortByColumn(column, order);
|
|
||||||
|
|
||||||
searchModelChanged();
|
|
||||||
});
|
|
||||||
|
|
||||||
connect(sortOrderCombo, QOverload<int>::of(&QComboBox::currentIndexChanged), this, [this]() {
|
|
||||||
int column = sortColumnCombo->currentData().toInt();
|
|
||||||
Qt::SortOrder order = static_cast<Qt::SortOrder>(sortOrderCombo->currentData().toInt());
|
|
||||||
databaseView->sortByColumn(column, order);
|
|
||||||
|
|
||||||
searchModelChanged();
|
|
||||||
});
|
|
||||||
|
|
||||||
colorFilterWidget = new VisualDatabaseDisplayColorFilterWidget(this, filterModel);
|
colorFilterWidget = new VisualDatabaseDisplayColorFilterWidget(this, filterModel);
|
||||||
|
|
||||||
filterContainer = new QWidget(this);
|
filterContainer = new VisualDatabaseDisplayFilterToolbarWidget(this);
|
||||||
filterContainerLayout = new QHBoxLayout(filterContainer);
|
|
||||||
filterContainer->setLayout(filterContainerLayout);
|
|
||||||
|
|
||||||
filterByLabel = new QLabel(this);
|
|
||||||
|
|
||||||
clearFilterWidget = new QToolButton();
|
clearFilterWidget = new QToolButton();
|
||||||
clearFilterWidget->setFixedSize(32, 32);
|
clearFilterWidget->setFixedSize(32, 32);
|
||||||
|
|
@ -158,20 +118,6 @@ VisualDatabaseDisplayWidget::VisualDatabaseDisplayWidget(QWidget *parent,
|
||||||
emit filterModel->layoutChanged();
|
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 = new QLabel(this);
|
||||||
databaseLoadIndicator->setAlignment(Qt::AlignCenter);
|
databaseLoadIndicator->setAlignment(Qt::AlignCenter);
|
||||||
|
|
||||||
|
|
@ -180,12 +126,7 @@ VisualDatabaseDisplayWidget::VisualDatabaseDisplayWidget(QWidget *parent,
|
||||||
if (CardDatabaseManager::getInstance()->getLoadStatus() != LoadStatus::Ok) {
|
if (CardDatabaseManager::getInstance()->getLoadStatus() != LoadStatus::Ok) {
|
||||||
connect(CardDatabaseManager::getInstance(), &CardDatabase::cardDatabaseLoadingFinished, this,
|
connect(CardDatabaseManager::getInstance(), &CardDatabase::cardDatabaseLoadingFinished, this,
|
||||||
&VisualDatabaseDisplayWidget::initialize);
|
&VisualDatabaseDisplayWidget::initialize);
|
||||||
sortByLabel->setVisible(false);
|
filterContainer->setVisible(false);
|
||||||
filterByLabel->setVisible(false);
|
|
||||||
quickFilterSaveLoadWidget->setVisible(false);
|
|
||||||
quickFilterNameWidget->setVisible(false);
|
|
||||||
quickFilterSubTypeWidget->setVisible(false);
|
|
||||||
quickFilterSetWidget->setVisible(false);
|
|
||||||
} else {
|
} else {
|
||||||
initialize();
|
initialize();
|
||||||
databaseLoadIndicator->setVisible(false);
|
databaseLoadIndicator->setVisible(false);
|
||||||
|
|
@ -198,35 +139,7 @@ void VisualDatabaseDisplayWidget::initialize()
|
||||||
{
|
{
|
||||||
databaseLoadIndicator->setVisible(false);
|
databaseLoadIndicator->setVisible(false);
|
||||||
|
|
||||||
sortByLabel->setVisible(true);
|
filterContainer->initialize();
|
||||||
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);
|
|
||||||
|
|
||||||
searchLayout->addWidget(colorFilterWidget);
|
searchLayout->addWidget(colorFilterWidget);
|
||||||
searchLayout->addWidget(clearFilterWidget);
|
searchLayout->addWidget(clearFilterWidget);
|
||||||
|
|
@ -246,11 +159,11 @@ void VisualDatabaseDisplayWidget::initialize()
|
||||||
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::searchModelChanged);
|
connect(debounceTimer, &QTimer::timeout, this, &VisualDatabaseDisplayWidget::onSearchModelChanged);
|
||||||
|
|
||||||
databaseDisplayModel->setFilterTree(filterModel->filterTree());
|
databaseDisplayModel->setFilterTree(filterModel->filterTree());
|
||||||
|
|
||||||
connect(filterModel, &FilterTreeModel::layoutChanged, this, &VisualDatabaseDisplayWidget::searchModelChanged);
|
connect(filterModel, &FilterTreeModel::layoutChanged, this, &VisualDatabaseDisplayWidget::onSearchModelChanged);
|
||||||
|
|
||||||
loadCardsTimer = new QTimer(this);
|
loadCardsTimer = new QTimer(this);
|
||||||
loadCardsTimer->setSingleShot(true); // Ensure it only fires once after the timeout
|
loadCardsTimer->setSingleShot(true); // Ensure it only fires once after the timeout
|
||||||
|
|
@ -264,16 +177,7 @@ void VisualDatabaseDisplayWidget::initialize()
|
||||||
void VisualDatabaseDisplayWidget::retranslateUi()
|
void VisualDatabaseDisplayWidget::retranslateUi()
|
||||||
{
|
{
|
||||||
databaseLoadIndicator->setText(tr("Loading database ..."));
|
databaseLoadIndicator->setText(tr("Loading database ..."));
|
||||||
|
|
||||||
clearFilterWidget->setToolTip(tr("Clear all filters"));
|
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)
|
void VisualDatabaseDisplayWidget::resizeEvent(QResizeEvent *event)
|
||||||
|
|
@ -332,7 +236,7 @@ void VisualDatabaseDisplayWidget::updateSearch(const QString &search) const
|
||||||
QItemSelectionModel::SelectCurrent | QItemSelectionModel::Rows);
|
QItemSelectionModel::SelectCurrent | QItemSelectionModel::Rows);
|
||||||
}
|
}
|
||||||
|
|
||||||
void VisualDatabaseDisplayWidget::searchModelChanged()
|
void VisualDatabaseDisplayWidget::onSearchModelChanged()
|
||||||
{
|
{
|
||||||
if (flowWidget->isVisible()) {
|
if (flowWidget->isVisible()) {
|
||||||
// Clear the current page and prepare for new data
|
// Clear the current page and prepare for new data
|
||||||
|
|
|
||||||
|
|
@ -16,12 +16,7 @@
|
||||||
#include "../general/layout_containers/overlap_control_widget.h"
|
#include "../general/layout_containers/overlap_control_widget.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_toolbar_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 <QLoggingCategory>
|
#include <QLoggingCategory>
|
||||||
#include <QVBoxLayout>
|
#include <QVBoxLayout>
|
||||||
|
|
@ -52,6 +47,21 @@ public:
|
||||||
void sortCardList(const QStringList &properties, Qt::SortOrder order) const;
|
void sortCardList(const QStringList &properties, Qt::SortOrder order) const;
|
||||||
void setDeckList(const DeckList &new_deck_list_model);
|
void setDeckList(const DeckList &new_deck_list_model);
|
||||||
|
|
||||||
|
AbstractTabDeckEditor *getDeckEditor()
|
||||||
|
{
|
||||||
|
return deckEditor;
|
||||||
|
}
|
||||||
|
|
||||||
|
CardDatabaseDisplayModel *getDatabaseDisplayModel()
|
||||||
|
{
|
||||||
|
return databaseDisplayModel;
|
||||||
|
}
|
||||||
|
|
||||||
|
QTreeView *getDatabaseView()
|
||||||
|
{
|
||||||
|
return databaseView;
|
||||||
|
}
|
||||||
|
|
||||||
QWidget *searchContainer;
|
QWidget *searchContainer;
|
||||||
QHBoxLayout *searchLayout;
|
QHBoxLayout *searchLayout;
|
||||||
SearchLineEdit *searchEdit;
|
SearchLineEdit *searchEdit;
|
||||||
|
|
@ -60,7 +70,7 @@ public:
|
||||||
VisualDatabaseDisplayColorFilterWidget *colorFilterWidget;
|
VisualDatabaseDisplayColorFilterWidget *colorFilterWidget;
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void searchModelChanged();
|
void onSearchModelChanged();
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void cardClickedDatabaseDisplay(QMouseEvent *event, CardInfoPictureWithTextOverlayWidget *instance);
|
void cardClickedDatabaseDisplay(QMouseEvent *event, CardInfoPictureWithTextOverlayWidget *instance);
|
||||||
|
|
@ -80,23 +90,8 @@ protected slots:
|
||||||
private:
|
private:
|
||||||
QLabel *databaseLoadIndicator;
|
QLabel *databaseLoadIndicator;
|
||||||
|
|
||||||
QLabel *sortByLabel;
|
|
||||||
QComboBox *sortColumnCombo, *sortOrderCombo;
|
|
||||||
|
|
||||||
QLabel *filterByLabel;
|
|
||||||
QToolButton *clearFilterWidget;
|
QToolButton *clearFilterWidget;
|
||||||
QWidget *filterContainer;
|
VisualDatabaseDisplayFilterToolbarWidget *filterContainer;
|
||||||
QHBoxLayout *filterContainerLayout;
|
|
||||||
SettingsButtonWidget *quickFilterSaveLoadWidget;
|
|
||||||
VisualDatabaseDisplayFilterSaveLoadWidget *saveLoadWidget;
|
|
||||||
SettingsButtonWidget *quickFilterNameWidget;
|
|
||||||
VisualDatabaseDisplayNameFilterWidget *nameFilterWidget;
|
|
||||||
VisualDatabaseDisplayMainTypeFilterWidget *mainTypeFilterWidget;
|
|
||||||
VisualDatabaseDisplayFormatLegalityFilterWidget *formatLegalityWidget;
|
|
||||||
SettingsButtonWidget *quickFilterSubTypeWidget;
|
|
||||||
VisualDatabaseDisplaySubTypeFilterWidget *subTypeFilterWidget;
|
|
||||||
SettingsButtonWidget *quickFilterSetWidget;
|
|
||||||
VisualDatabaseDisplaySetFilterWidget *setFilterWidget;
|
|
||||||
KeySignals searchKeySignals;
|
KeySignals searchKeySignals;
|
||||||
AbstractTabDeckEditor *deckEditor;
|
AbstractTabDeckEditor *deckEditor;
|
||||||
CardDatabaseModel *databaseModel;
|
CardDatabaseModel *databaseModel;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue