Cockatrice 2025-11-30-Development-2.11.0-beta.38
A cross-platform virtual tabletop for multiplayer card games
Loading...
Searching...
No Matches
deck_preview_widget.h
Go to the documentation of this file.
1
6
7#ifndef DECK_PREVIEW_WIDGET_H
8#define DECK_PREVIEW_WIDGET_H
9
15
16#include <QAbstractItemView>
17#include <QApplication>
18#include <QComboBox>
19#include <QEvent>
20#include <QVBoxLayout>
21#include <QWidget>
22
23class QMenu;
26
27class DeckPreviewWidget final : public QWidget
28{
29 Q_OBJECT
30public:
31 explicit DeckPreviewWidget(QWidget *_parent,
32 VisualDeckStorageWidget *_visualDeckStorageWidget,
33 const QString &_filePath);
34 void retranslateUi();
35 QString getColorIdentity();
36 [[nodiscard]] QString getDisplayName() const;
37
39 QVBoxLayout *layout;
40 QString filePath;
41 DeckLoader *deckLoader;
45 QLabel *bannerCardLabel = nullptr;
46 QComboBox *bannerCardComboBox = nullptr;
47 bool filteredBySearch = false;
48 bool filteredByColor = false;
49 bool filteredByTags = false;
50 [[nodiscard]] bool checkVisibility() const;
51
52signals:
53 void deckLoadRequested(const QString &filePath);
54 void openDeckEditor(DeckLoader *deck);
55
56public slots:
57 void setFilePath(const QString &filePath);
61 void setBannerCard(int);
62 void imageClickedEvent(QMouseEvent *event, DeckPreviewCardPictureWidget *instance);
63 void imageDoubleClickedEvent(QMouseEvent *event, DeckPreviewCardPictureWidget *instance);
64 void initializeUi(bool deckLoadSuccess);
65 void updateVisibility();
66 void updateBannerCardComboBoxVisibility(bool visible);
67 void updateTagsVisibility(bool visible);
68 void resizeEvent(QResizeEvent *event) override;
69
70private:
71 QMenu *createRightClickMenu();
72 void addSetBannerCardMenu(QMenu *menu);
73
74private slots:
75 void actRenameDeck();
76 void actRenameFile();
77 void actDeleteFile();
78};
79
80class NoScrollFilter : public QObject
81{
82 Q_OBJECT
83protected:
84 bool eventFilter(QObject *obj, QEvent *event) override
85 {
86 if (event->type() == QEvent::Wheel) {
87 if (auto *combo = qobject_cast<QComboBox *>(obj)) {
88 // If popup is not open, forward event to parent scroll area
89 if (!combo->view()->isVisible()) {
90 // Try to find a scrollable parent and manually send the event
91 QWidget *parent = combo->parentWidget();
92 while (parent) {
93 if (auto *scroll = qobject_cast<QAbstractScrollArea *>(parent)) {
94 QApplication::sendEvent(scroll->viewport(), event);
95 return true; // Mark event as handled
96 }
97 parent = parent->parentWidget();
98 }
99 // If no scrollable parent found, just block
100 return true;
101 }
102 }
103 }
104 return QObject::eventFilter(obj, event);
105 }
106};
107
108#endif // DECK_PREVIEW_WIDGET_H
Definition color_identity_widget.h:15
Definition deck_preview_card_picture_widget.h:19
Definition deck_preview_deck_tags_display_widget.h:19
DeckPreviewDeckTagsDisplayWidget * deckTagsDisplayWidget
Definition deck_preview_widget.h:44
QComboBox * bannerCardComboBox
Definition deck_preview_widget.h:46
bool filteredByTags
Definition deck_preview_widget.h:49
void updateBannerCardComboBox()
Definition deck_preview_widget.cpp:222
void setBannerCard(int)
Definition deck_preview_widget.cpp:285
void refreshBannerCardToolTip()
Definition deck_preview_widget.cpp:209
void retranslateUi()
Definition deck_preview_widget.cpp:55
ColorIdentityWidget * colorIdentityWidget
Definition deck_preview_widget.h:43
QString filePath
Definition deck_preview_widget.h:40
void deckLoadRequested(const QString &filePath)
void addSetBannerCardMenu(QMenu *menu)
Definition deck_preview_widget.cpp:351
DeckPreviewWidget(QWidget *_parent, VisualDeckStorageWidget *_visualDeckStorageWidget, const QString &_filePath)
Definition deck_preview_widget.cpp:20
void updateBannerCardComboBoxVisibility(bool visible)
Definition deck_preview_widget.cpp:125
QVBoxLayout * layout
Definition deck_preview_widget.h:39
QString getDisplayName() const
Definition deck_preview_widget.cpp:187
VisualDeckStorageWidget * visualDeckStorageWidget
Definition deck_preview_widget.h:38
void actDeleteFile()
Definition deck_preview_widget.cpp:421
DeckLoader * deckLoader
Definition deck_preview_widget.h:41
void refreshBannerCardText()
Definition deck_preview_widget.cpp:202
void initializeUi(bool deckLoadSuccess)
Definition deck_preview_widget.cpp:72
void setFilePath(const QString &filePath)
Definition deck_preview_widget.cpp:193
void imageDoubleClickedEvent(QMouseEvent *event, DeckPreviewCardPictureWidget *instance)
Definition deck_preview_widget.cpp:303
void actRenameDeck()
Definition deck_preview_widget.cpp:369
QLabel * bannerCardLabel
Definition deck_preview_widget.h:45
bool filteredBySearch
Definition deck_preview_widget.h:47
void openDeckEditor(DeckLoader *deck)
void updateVisibility()
Definition deck_preview_widget.cpp:112
bool checkVisibility() const
Definition deck_preview_widget.cpp:117
void updateTagsVisibility(bool visible)
Definition deck_preview_widget.cpp:140
QString getColorIdentity()
Definition deck_preview_widget.cpp:153
bool filteredByColor
Definition deck_preview_widget.h:48
void imageClickedEvent(QMouseEvent *event, DeckPreviewCardPictureWidget *instance)
Definition deck_preview_widget.cpp:294
void resizeEvent(QResizeEvent *event) override
Definition deck_preview_widget.cpp:60
DeckPreviewCardPictureWidget * bannerCardDisplayWidget
Definition deck_preview_widget.h:42
QMenu * createRightClickMenu()
Definition deck_preview_widget.cpp:310
void actRenameFile()
Definition deck_preview_widget.cpp:388
Definition deck_preview_widget.h:81
bool eventFilter(QObject *obj, QEvent *event) override
Definition deck_preview_widget.h:84
Definition visual_deck_storage_widget.h:29
TODO: Document this.
TODO: Document this.
TODO: Document this.