From 11f92bf10197aca593ed031fe188e955bf6b4212 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lukas=20Br=C3=BCbach?= Date: Tue, 7 Jan 2025 22:23:27 +0100 Subject: [PATCH] Shuffle some classes and signals around. --- cockatrice/CMakeLists.txt | 2 + cockatrice/src/client/tabs/tab_game.cpp | 16 +--- cockatrice/src/client/tabs/tab_game.h | 2 +- .../tab_deck_storage_visual.cpp | 4 +- .../tab_deck_storage_visual.h | 2 +- .../deck_preview_card_picture_widget.cpp | 8 +- .../cards/deck_preview_card_picture_widget.h | 7 +- .../deck_preview_widget.cpp | 52 +++++++++++++ .../visual_deck_storage/deck_preview_widget.h | 31 ++++++++ .../visual_deck_storage_sort_widget.cpp | 63 ++++++++++++++++ .../visual_deck_storage_sort_widget.h | 39 ++++++++++ .../visual_deck_storage_widget.cpp | 73 +++++-------------- .../visual_deck_storage_widget.h | 22 ++---- 13 files changed, 224 insertions(+), 97 deletions(-) create mode 100644 cockatrice/src/client/ui/widgets/visual_deck_storage/deck_preview_widget.cpp create mode 100644 cockatrice/src/client/ui/widgets/visual_deck_storage/deck_preview_widget.h create mode 100644 cockatrice/src/client/ui/widgets/visual_deck_storage/visual_deck_storage_sort_widget.cpp create mode 100644 cockatrice/src/client/ui/widgets/visual_deck_storage/visual_deck_storage_sort_widget.h diff --git a/cockatrice/CMakeLists.txt b/cockatrice/CMakeLists.txt index efdfdffb3..27316805d 100644 --- a/cockatrice/CMakeLists.txt +++ b/cockatrice/CMakeLists.txt @@ -162,8 +162,10 @@ set(cockatrice_SOURCES src/game/zones/view_zone.cpp src/client/tabs/visual_deck_storage/tab_deck_storage_visual.cpp src/client/ui/widgets/cards/deck_preview_card_picture_widget.cpp + src/client/ui/widgets/visual_deck_storage/deck_preview_widget.cpp src/client/ui/widgets/visual_deck_storage/visual_deck_storage_widget.cpp src/client/ui/widgets/visual_deck_storage/visual_deck_storage_search_widget.cpp + src/client/ui/widgets/visual_deck_storage/visual_deck_storage_sort_widget.cpp ${VERSION_STRING_CPP} ) diff --git a/cockatrice/src/client/tabs/tab_game.cpp b/cockatrice/src/client/tabs/tab_game.cpp index 48913596e..113d2ce42 100644 --- a/cockatrice/src/client/tabs/tab_game.cpp +++ b/cockatrice/src/client/tabs/tab_game.cpp @@ -145,7 +145,7 @@ DeckViewContainer::DeckViewContainer(int _playerId, TabGame *parent) deckView->setVisible(false); visualDeckStorageWidget = new VisualDeckStorageWidget(this); - connect(visualDeckStorageWidget, &VisualDeckStorageWidget::imageDoubleClicked, this, + connect(visualDeckStorageWidget, &VisualDeckStorageWidget::deckPreviewDoubleClicked, this, &DeckViewContainer::replaceDeckStorageWithDeckView); deckViewLayout = new QVBoxLayout; @@ -299,20 +299,12 @@ void TabGame::refreshShortcuts() } } -void DeckViewContainer::replaceDeckStorageWithDeckView(QMouseEvent *event, DeckPreviewCardPictureWidget *instance) +void DeckViewContainer::replaceDeckStorageWithDeckView(QMouseEvent *event, DeckPreviewWidget *instance) { Q_UNUSED(event); - QString fileName = instance->filePath; - DeckLoader::FileFormat fmt = DeckLoader::getFormatFromName(fileName); - QString deckString; - DeckLoader deck; + QString deckString = instance->deckLoader->writeToString_Native(); - bool error = !deck.loadFromFile(fileName, fmt, true); - if (!error) { - deckString = deck.writeToString_Native(); - error = deckString.length() > MAX_FILE_LENGTH; - } - if (error) { + if (deckString.length() > MAX_FILE_LENGTH) { QMessageBox::critical(this, tr("Error"), tr("The selected file could not be loaded.")); return; } diff --git a/cockatrice/src/client/tabs/tab_game.h b/cockatrice/src/client/tabs/tab_game.h index 427a3a746..67d8f19a8 100644 --- a/cockatrice/src/client/tabs/tab_game.h +++ b/cockatrice/src/client/tabs/tab_game.h @@ -95,7 +95,7 @@ private: TabGame *parentGame; int playerId; private slots: - void replaceDeckStorageWithDeckView(QMouseEvent *event, DeckPreviewCardPictureWidget *instance); + void replaceDeckStorageWithDeckView(QMouseEvent *event, DeckPreviewWidget *instance); void loadLocalDeck(); void loadRemoteDeck(); void unloadDeck(); diff --git a/cockatrice/src/client/tabs/visual_deck_storage/tab_deck_storage_visual.cpp b/cockatrice/src/client/tabs/visual_deck_storage/tab_deck_storage_visual.cpp index 7d3370f3b..7cf28c6cb 100644 --- a/cockatrice/src/client/tabs/visual_deck_storage/tab_deck_storage_visual.cpp +++ b/cockatrice/src/client/tabs/visual_deck_storage/tab_deck_storage_visual.cpp @@ -49,7 +49,7 @@ TabDeckStorageVisual::TabDeckStorageVisual(TabSupervisor *_tabSupervisor, Abstra leftToolBar->addAction(aDeleteLocalDeck); visualDeckStorageWidget = new VisualDeckStorageWidget(this); - connect(visualDeckStorageWidget, &VisualDeckStorageWidget::imageDoubleClicked, this, + connect(visualDeckStorageWidget, &VisualDeckStorageWidget::deckPreviewDoubleClicked, this, &TabDeckStorageVisual::actOpenLocalDeck); // layout->addWidget(leftToolBar); @@ -74,7 +74,7 @@ QString TabDeckStorageVisual::getTargetPath() const return {}; } -void TabDeckStorageVisual::actOpenLocalDeck(QMouseEvent *event, DeckPreviewCardPictureWidget *instance) +void TabDeckStorageVisual::actOpenLocalDeck(QMouseEvent *event, DeckPreviewWidget *instance) { (void)event; DeckLoader deckLoader; diff --git a/cockatrice/src/client/tabs/visual_deck_storage/tab_deck_storage_visual.h b/cockatrice/src/client/tabs/visual_deck_storage/tab_deck_storage_visual.h index 4d8538826..16d07c366 100644 --- a/cockatrice/src/client/tabs/visual_deck_storage/tab_deck_storage_visual.h +++ b/cockatrice/src/client/tabs/visual_deck_storage/tab_deck_storage_visual.h @@ -34,7 +34,7 @@ public: public slots: void cardUpdateFinished(int exitCode, QProcess::ExitStatus exitStatus); void closeRequest() override; - void actOpenLocalDeck(QMouseEvent *event, DeckPreviewCardPictureWidget *instance); + void actOpenLocalDeck(QMouseEvent *event, DeckPreviewWidget *instance); void actDeleteLocalDeck(); signals: void openDeckEditor(const DeckLoader *deckLoader); diff --git a/cockatrice/src/client/ui/widgets/cards/deck_preview_card_picture_widget.cpp b/cockatrice/src/client/ui/widgets/cards/deck_preview_card_picture_widget.cpp index 8521739b0..85a8200c8 100644 --- a/cockatrice/src/client/ui/widgets/cards/deck_preview_card_picture_widget.cpp +++ b/cockatrice/src/client/ui/widgets/cards/deck_preview_card_picture_widget.cpp @@ -1,6 +1,7 @@ #include "deck_preview_card_picture_widget.h" #include +#include #include #include #include @@ -15,6 +16,7 @@ * @param outlineColor The color of the outline around the text. * @param fontSize The font size of the overlay text. * @param alignment The alignment of the text within the overlay. + * @param _deckLoader The Deck Loader holding the Deck associated with this preview. * * Sets the widget's size policy and default border style. */ @@ -26,7 +28,6 @@ DeckPreviewCardPictureWidget::DeckPreviewCardPictureWidget(QWidget *parent, const Qt::Alignment alignment) : CardInfoPictureWithTextOverlayWidget(parent, hoverToZoomEnabled, textColor, outlineColor, fontSize, alignment) { - // TODO Make this hold the deckloader singleClickTimer = new QTimer(this); singleClickTimer->setSingleShot(true); connect(singleClickTimer, &QTimer::timeout, this, [this]() { emit imageClicked(lastMouseEvent, this); }); @@ -47,8 +48,3 @@ void DeckPreviewCardPictureWidget::mouseDoubleClickEvent(QMouseEvent *event) emit imageDoubleClicked(lastMouseEvent, this); } } - -void DeckPreviewCardPictureWidget::setFilePath(const QString &_filePath) -{ - filePath = _filePath; -} diff --git a/cockatrice/src/client/ui/widgets/cards/deck_preview_card_picture_widget.h b/cockatrice/src/client/ui/widgets/cards/deck_preview_card_picture_widget.h index 25d9b16e9..3fafc73e0 100644 --- a/cockatrice/src/client/ui/widgets/cards/deck_preview_card_picture_widget.h +++ b/cockatrice/src/client/ui/widgets/cards/deck_preview_card_picture_widget.h @@ -12,22 +12,17 @@ class DeckPreviewCardPictureWidget final : public CardInfoPictureWithTextOverlay Q_OBJECT public: - explicit DeckPreviewCardPictureWidget(QWidget *parent = nullptr, + explicit DeckPreviewCardPictureWidget(QWidget *parent, bool hoverToZoomEnabled = false, const QColor &textColor = Qt::white, const QColor &outlineColor = Qt::black, int fontSize = 12, Qt::Alignment alignment = Qt::AlignCenter); - QString filePath; - signals: void imageClicked(QMouseEvent *event, DeckPreviewCardPictureWidget *instance); void imageDoubleClicked(QMouseEvent *event, DeckPreviewCardPictureWidget *instance); -public slots: - void setFilePath(const QString &filePath); - private: QTimer *singleClickTimer; QMouseEvent *lastMouseEvent = nullptr; // Store the last mouse event diff --git a/cockatrice/src/client/ui/widgets/visual_deck_storage/deck_preview_widget.cpp b/cockatrice/src/client/ui/widgets/visual_deck_storage/deck_preview_widget.cpp new file mode 100644 index 000000000..7fb05bd8c --- /dev/null +++ b/cockatrice/src/client/ui/widgets/visual_deck_storage/deck_preview_widget.cpp @@ -0,0 +1,52 @@ +#include "deck_preview_widget.h" + +#include "../../../../game/cards/card_database_manager.h" +#include "../cards/deck_preview_card_picture_widget.h" + +#include +#include + +DeckPreviewWidget::DeckPreviewWidget(QWidget *parent, const QString &_filePath) : QWidget(parent), filePath(_filePath) +{ + layout = new QVBoxLayout(this); + setLayout(layout); + + deckLoader = new DeckLoader(); + deckLoader->loadFromFile(filePath, DeckLoader::CockatriceFormat); + + auto bannerCard = deckLoader->getBannerCard().isEmpty() + ? CardInfoPtr() + : CardDatabaseManager::getInstance()->getCard(deckLoader->getBannerCard()); + + bannerCardDisplayWidget = new DeckPreviewCardPictureWidget(this); + + connect(bannerCardDisplayWidget, &DeckPreviewCardPictureWidget::imageClicked, this, + &DeckPreviewWidget::imageClickedEvent); + connect(bannerCardDisplayWidget, &DeckPreviewCardPictureWidget::imageDoubleClicked, this, + &DeckPreviewWidget::imageDoubleClickedEvent); + + bannerCardDisplayWidget->setCard(bannerCard); + bannerCardDisplayWidget->setOverlayText( + deckLoader->getName().isEmpty() ? QFileInfo(deckLoader->getLastFileName()).fileName() : deckLoader->getName()); + bannerCardDisplayWidget->setFontSize(24); + setFilePath(deckLoader->getLastFileName()); + + layout->addWidget(bannerCardDisplayWidget); +} + +void DeckPreviewWidget::setFilePath(const QString &_filePath) +{ + filePath = _filePath; +} + +void DeckPreviewWidget::imageClickedEvent(QMouseEvent *event, DeckPreviewCardPictureWidget *instance) +{ + Q_UNUSED(instance); + emit deckPreviewClicked(event, this); +} + +void DeckPreviewWidget::imageDoubleClickedEvent(QMouseEvent *event, DeckPreviewCardPictureWidget *instance) +{ + Q_UNUSED(instance); + emit deckPreviewDoubleClicked(event, this); +} \ No newline at end of file diff --git a/cockatrice/src/client/ui/widgets/visual_deck_storage/deck_preview_widget.h b/cockatrice/src/client/ui/widgets/visual_deck_storage/deck_preview_widget.h new file mode 100644 index 000000000..557e62045 --- /dev/null +++ b/cockatrice/src/client/ui/widgets/visual_deck_storage/deck_preview_widget.h @@ -0,0 +1,31 @@ +#ifndef DECK_PREVIEW_WIDGET_H +#define DECK_PREVIEW_WIDGET_H + +#include "../../../../deck/deck_loader.h" +#include "../cards/deck_preview_card_picture_widget.h" + +#include +#include + +class DeckPreviewWidget final : public QWidget +{ + Q_OBJECT +public: + explicit DeckPreviewWidget(QWidget *parent, const QString &_filePath); + + QVBoxLayout *layout; + QString filePath; + DeckLoader *deckLoader; + DeckPreviewCardPictureWidget *bannerCardDisplayWidget; + +signals: + void deckPreviewClicked(QMouseEvent *event, DeckPreviewWidget *instance); + void deckPreviewDoubleClicked(QMouseEvent *event, DeckPreviewWidget *instance); + +public slots: + void setFilePath(const QString &filePath); + void imageClickedEvent(QMouseEvent *event, DeckPreviewCardPictureWidget *instance); + void imageDoubleClickedEvent(QMouseEvent *event, DeckPreviewCardPictureWidget *instance); +}; + +#endif // DECK_PREVIEW_WIDGET_H diff --git a/cockatrice/src/client/ui/widgets/visual_deck_storage/visual_deck_storage_sort_widget.cpp b/cockatrice/src/client/ui/widgets/visual_deck_storage/visual_deck_storage_sort_widget.cpp new file mode 100644 index 000000000..c9a1dacef --- /dev/null +++ b/cockatrice/src/client/ui/widgets/visual_deck_storage/visual_deck_storage_sort_widget.cpp @@ -0,0 +1,63 @@ +#include "visual_deck_storage_sort_widget.h" + +#include "../../../../settings/cache_settings.h" + +/** + * @brief Constructs a PrintingSelectorCardSortWidget for searching cards by set name or set code. + * + * This widget provides a search bar that allows users to search for cards by either their set name + * or set code. It uses a debounced timer to trigger the search action after the user stops typing. + * + * @param parent The parent PrintingSelector widget that will handle the search results. + */ +VisualDeckStorageSortWidget::VisualDeckStorageSortWidget(VisualDeckStorageWidget *parent) + : parent(parent), sortOrder(Alphabetical) +{ + layout = new QHBoxLayout(this); + setLayout(layout); + + // ComboBox for sorting options + sortComboBox = new QComboBox(this); + sortComboBox->addItem("Sort Alphabetically (Filename)", Alphabetical); + sortComboBox->addItem("Sort by Last Modified", ByLastModified); + + // Connect sorting change signal to refresh the file list + connect(sortComboBox, QOverload::of(&QComboBox::currentIndexChanged), this, + &VisualDeckStorageSortWidget::updateSortOrder); + connect(this, &VisualDeckStorageSortWidget::sortOrderChanged, parent, &VisualDeckStorageWidget::updateSortOrder); + + layout->addWidget(sortComboBox); +} + +void VisualDeckStorageSortWidget::showEvent(QShowEvent *event) +{ + QWidget::showEvent(event); + sortComboBox->setCurrentIndex(SettingsCache::instance().getVisualDeckStorageSortingOrder()); +} + +void VisualDeckStorageSortWidget::updateSortOrder() +{ + sortOrder = static_cast(sortComboBox->currentData().toInt()); + SettingsCache::instance().setVisualDeckStorageSortingOrder(sortComboBox->currentData().toInt()); + emit sortOrderChanged(); +} + +QStringList VisualDeckStorageSortWidget::filterFiles(QStringList &files) +{ + // Sort files based on the current sort order + std::sort(files.begin(), files.end(), [this](const QString &file1, const QString &file2) { + QFileInfo info1(file1); + QFileInfo info2(file2); + + switch (sortOrder) { + case Alphabetical: + return info1.fileName().toLower() < info2.fileName().toLower(); + case ByLastModified: + return info1.lastModified() > info2.lastModified(); + } + + return false; // Default case + }); + + return files; +} diff --git a/cockatrice/src/client/ui/widgets/visual_deck_storage/visual_deck_storage_sort_widget.h b/cockatrice/src/client/ui/widgets/visual_deck_storage/visual_deck_storage_sort_widget.h new file mode 100644 index 000000000..e826a6391 --- /dev/null +++ b/cockatrice/src/client/ui/widgets/visual_deck_storage/visual_deck_storage_sort_widget.h @@ -0,0 +1,39 @@ +#ifndef VISUAL_DECK_STORAGE_SORT_WIDGET_H +#define VISUAL_DECK_STORAGE_SORT_WIDGET_H + +#include "visual_deck_storage_widget.h" + +#include +#include +#include + +class VisualDeckStorageWidget; +class VisualDeckStorageSortWidget : public QWidget +{ + Q_OBJECT + +public: + explicit VisualDeckStorageSortWidget(VisualDeckStorageWidget *parent); + void updateSortOrder(); + QString getSearchText(); + QStringList filterFiles(QStringList &files); + +public slots: + void showEvent(QShowEvent *event) override; + +signals: + void sortOrderChanged(); + +private: + enum SortOrder + { + Alphabetical, + ByLastModified + }; + QHBoxLayout *layout; + VisualDeckStorageWidget *parent; + SortOrder sortOrder; // Current sorting option + QComboBox *sortComboBox; +}; + +#endif // VISUAL_DECK_STORAGE_SORT_WIDGET_H diff --git a/cockatrice/src/client/ui/widgets/visual_deck_storage/visual_deck_storage_widget.cpp b/cockatrice/src/client/ui/widgets/visual_deck_storage/visual_deck_storage_widget.cpp index ad609cb41..237474480 100644 --- a/cockatrice/src/client/ui/widgets/visual_deck_storage/visual_deck_storage_widget.cpp +++ b/cockatrice/src/client/ui/widgets/visual_deck_storage/visual_deck_storage_widget.cpp @@ -3,14 +3,16 @@ #include "../../../../deck/deck_loader.h" #include "../../../../game/cards/card_database_manager.h" #include "../../../../settings/cache_settings.h" +#include "deck_preview_widget.h" #include "visual_deck_storage_search_widget.h" +#include "visual_deck_storage_sort_widget.h" #include #include #include #include -VisualDeckStorageWidget::VisualDeckStorageWidget(QWidget *parent) : QWidget(parent), sortOrder(Alphabetical) +VisualDeckStorageWidget::VisualDeckStorageWidget(QWidget *parent) : QWidget(parent) { deckListModel = new DeckListModel(this); deckListModel->setObjectName("visualDeckModel"); @@ -18,16 +20,11 @@ VisualDeckStorageWidget::VisualDeckStorageWidget(QWidget *parent) : QWidget(pare layout = new QVBoxLayout(); setLayout(layout); - // ComboBox for sorting options - sortComboBox = new QComboBox(this); - sortComboBox->addItem("Sort Alphabetically (Filename)", Alphabetical); - sortComboBox->addItem("Sort by Last Modified", ByLastModified); - sortComboBox->setCurrentIndex(SettingsCache::instance().getVisualDeckStorageSortingOrder()); - + sortWidget = new VisualDeckStorageSortWidget(this); searchWidget = new VisualDeckStorageSearchWidget(this); // Add combo box to the main layout - layout->addWidget(sortComboBox); + layout->addWidget(sortWidget); layout->addWidget(searchWidget); flowWidget = new FlowWidget(this, Qt::ScrollBarAlwaysOff, Qt::ScrollBarAsNeeded); @@ -35,10 +32,6 @@ VisualDeckStorageWidget::VisualDeckStorageWidget(QWidget *parent) : QWidget(pare cardSizeWidget = new CardSizeWidget(this, flowWidget, SettingsCache::instance().getVisualDeckStorageCardSize()); layout->addWidget(cardSizeWidget); - - // Connect sorting change signal to refresh the file list - connect(sortComboBox, QOverload::of(&QComboBox::currentIndexChanged), this, - &VisualDeckStorageWidget::updateSortOrder); } void VisualDeckStorageWidget::showEvent(QShowEvent *event) @@ -49,19 +42,17 @@ void VisualDeckStorageWidget::showEvent(QShowEvent *event) void VisualDeckStorageWidget::updateSortOrder() { - sortOrder = static_cast(sortComboBox->currentData().toInt()); - SettingsCache::instance().setVisualDeckStorageSortingOrder(sortComboBox->currentData().toInt()); refreshBannerCards(); // Refresh the banner cards with the new sort order } -void VisualDeckStorageWidget::imageClickedEvent(QMouseEvent *event, DeckPreviewCardPictureWidget *instance) +void VisualDeckStorageWidget::deckPreviewClickedEvent(QMouseEvent *event, DeckPreviewWidget *instance) { - emit imageClicked(event, instance); + emit deckPreviewClicked(event, instance); } -void VisualDeckStorageWidget::imageDoubleClickedEvent(QMouseEvent *event, DeckPreviewCardPictureWidget *instance) +void VisualDeckStorageWidget::deckPreviewDoubleClickedEvent(QMouseEvent *event, DeckPreviewWidget *instance) { - emit imageDoubleClicked(event, instance); + emit deckPreviewDoubleClicked(event, instance); } void VisualDeckStorageWidget::refreshBannerCards() @@ -76,48 +67,20 @@ void VisualDeckStorageWidget::refreshBannerCards() allFiles << it.next(); // Add each file path to the list } - // Sort files based on the current sort order - std::sort(allFiles.begin(), allFiles.end(), [this](const QString &file1, const QString &file2) { - QFileInfo info1(file1); - QFileInfo info2(file2); - - switch (sortOrder) { - case Alphabetical: - return info1.fileName().toLower() < info2.fileName().toLower(); - case ByLastModified: - return info1.lastModified() > info2.lastModified(); - } - - return false; // Default case - }); - - auto filteredFiles = searchWidget->filterFiles(allFiles, searchWidget->getSearchText()); + auto filteredFiles = searchWidget->filterFiles(sortWidget->filterFiles(allFiles), searchWidget->getSearchText()); flowWidget->clearLayout(); // Clear existing widgets in the flow layout foreach (const QString &file, filteredFiles) { - // TODO: We load the deck here to retrieve information (we sorta really have to) but since we do the work, - // we may as well persist the deckLoader to save ourselves some heavy lifting later? - auto deckLoader = new DeckLoader(); - deckLoader->loadFromFile(file, DeckLoader::CockatriceFormat); - deckListModel->setDeckList(new DeckLoader(*deckLoader)); + auto *display = new DeckPreviewWidget(flowWidget, file); - auto *display = new DeckPreviewCardPictureWidget(flowWidget, false); - auto bannerCard = deckLoader->getBannerCard().isEmpty() - ? CardInfoPtr() - : CardDatabaseManager::getInstance()->getCard(deckLoader->getBannerCard()); - display->setCard(bannerCard); - display->setOverlayText(deckLoader->getName().isEmpty() ? QFileInfo(deckLoader->getLastFileName()).fileName() - : deckLoader->getName()); - display->setFontSize(24); - display->setFilePath(deckLoader->getLastFileName()); - - connect(display, &DeckPreviewCardPictureWidget::imageClicked, this, - &VisualDeckStorageWidget::imageClickedEvent); - connect(display, &DeckPreviewCardPictureWidget::imageDoubleClicked, this, - &VisualDeckStorageWidget::imageDoubleClickedEvent); - connect(cardSizeWidget->getSlider(), &QSlider::valueChanged, display, &CardInfoPictureWidget::setScaleFactor); - display->setScaleFactor(cardSizeWidget->getSlider()->value()); + connect(display, &DeckPreviewWidget::deckPreviewClicked, this, + &VisualDeckStorageWidget::deckPreviewClickedEvent); + connect(display, &DeckPreviewWidget::deckPreviewDoubleClicked, this, + &VisualDeckStorageWidget::deckPreviewDoubleClickedEvent); + connect(cardSizeWidget->getSlider(), &QSlider::valueChanged, display->bannerCardDisplayWidget, + &CardInfoPictureWidget::setScaleFactor); + display->bannerCardDisplayWidget->setScaleFactor(cardSizeWidget->getSlider()->value()); flowWidget->addWidget(display); } } diff --git a/cockatrice/src/client/ui/widgets/visual_deck_storage/visual_deck_storage_widget.h b/cockatrice/src/client/ui/widgets/visual_deck_storage/visual_deck_storage_widget.h index 9428fd663..5e993b6f3 100644 --- a/cockatrice/src/client/ui/widgets/visual_deck_storage/visual_deck_storage_widget.h +++ b/cockatrice/src/client/ui/widgets/visual_deck_storage/visual_deck_storage_widget.h @@ -3,15 +3,16 @@ #include "../../../../deck/deck_list_model.h" #include "../../../../deck/deck_view.h" -#include "../../../ui/widgets/cards/deck_preview_card_picture_widget.h" #include "../../../ui/widgets/general/layout_containers/flow_widget.h" #include "../cards/card_size_widget.h" +#include "deck_preview_widget.h" #include "visual_deck_storage_search_widget.h" +#include "visual_deck_storage_sort_widget.h" -#include #include class VisualDeckStorageSearchWidget; +class VisualDeckStorageSortWidget; class VisualDeckStorageWidget final : public QWidget { Q_OBJECT @@ -20,30 +21,23 @@ public: void retranslateUi(); public slots: - void imageClickedEvent(QMouseEvent *event, DeckPreviewCardPictureWidget *instance); - void imageDoubleClickedEvent(QMouseEvent *event, DeckPreviewCardPictureWidget *instance); + void deckPreviewClickedEvent(QMouseEvent *event, DeckPreviewWidget *instance); + void deckPreviewDoubleClickedEvent(QMouseEvent *event, DeckPreviewWidget *instance); void refreshBannerCards(); // Refresh the display of cards based on the current sorting option void showEvent(QShowEvent *event) override; void updateSortOrder(); signals: - void imageClicked(QMouseEvent *event, DeckPreviewCardPictureWidget *instance); - void imageDoubleClicked(QMouseEvent *event, DeckPreviewCardPictureWidget *instance); + void deckPreviewClicked(QMouseEvent *event, DeckPreviewWidget *instance); + void deckPreviewDoubleClicked(QMouseEvent *event, DeckPreviewWidget *instance); private: - enum SortOrder - { - Alphabetical, - ByLastModified - }; - QVBoxLayout *layout; FlowWidget *flowWidget; DeckListModel *deckListModel; QMap cardContainers; - SortOrder sortOrder; // Current sorting option - QComboBox *sortComboBox; + VisualDeckStorageSortWidget *sortWidget; VisualDeckStorageSearchWidget *searchWidget; CardSizeWidget *cardSizeWidget; };