Cockatrice 2026-10-19-Development-3.1.2-beta.2
A virtual tabletop for multiplayer card games
Loading...
Searching...
No Matches
visual_deck_storage_folder_display_widget.h
Go to the documentation of this file.
1
15
16#ifndef VISUAL_DECK_STORAGE_FOLDER_DISPLAY_WIDGET_H
17#define VISUAL_DECK_STORAGE_FOLDER_DISPLAY_WIDGET_H
18
19#include <QHash>
20#include <QList>
21#include <QSet>
22#include <QString>
23#include <QStringList>
24#include <QWidget>
25#include <qtmetamacros.h>
26
27class BannerWidget;
29class FlowWidget;
30class QTimer;
31class QVBoxLayout;
33
35{
36 Q_OBJECT
37public:
40 const QString &folderPath,
41 bool canBeHidden,
42 bool showFolders);
43
44public slots:
49 void reconcile();
50
55 void scheduleReconcile();
56 void updateShowFolders(bool enabled);
57 void setShareSelectable(bool selectable);
58
59signals:
65
66private:
67 void beginDeckPass();
68 void continueDeckPass();
69 void finishDeckPass();
70 [[nodiscard]] DeckPreviewWidget *createDeckPreviewWidget(const QString &filePath);
72 void refreshVisibility();
73 [[nodiscard]] bool hasContent() const;
74 [[nodiscard]] QStringList childFolderPaths() const;
75
82 static constexpr int DECK_PASS_TIME_BUDGET_MS = 20;
83
85 QString folderPath;
87 QVBoxLayout *layout;
88 QWidget *container;
89 QVBoxLayout *containerLayout;
95 QTimer *reconcileTimer = nullptr;
97
99 bool deckPassActive = false;
105 int deckPassRow = 0;
107};
108
109#endif // VISUAL_DECK_STORAGE_FOLDER_DISPLAY_WIDGET_H
Definition banner_widget.h:19
Definition deck_preview_widget.h:34
Definition flow_widget.h:27
Definition mana_curve_category_widget.h:11
Definition dlg_manage_sets.h:29
void continueDeckPass()
Definition visual_deck_storage_folder_display_widget.cpp:112
bool deckPassActive
Whether a chunked reconcile pass is currently running.
Definition visual_deck_storage_folder_display_widget.h:99
VisualDeckStorageFolderDisplayWidget(QWidget *parent, VisualDeckStorageWidget *visualDeckStorageWidget, const QString &folderPath, bool canBeHidden, bool showFolders)
Definition visual_deck_storage_folder_display_widget.cpp:29
bool deckPassRestartRequested
Definition visual_deck_storage_folder_display_widget.h:102
QWidget * container
Definition visual_deck_storage_folder_display_widget.h:88
QHash< QString, VisualDeckStorageFolderDisplayWidget * > subFolderWidgets
Folder path -> subfolder widget.
Definition visual_deck_storage_folder_display_widget.h:94
QHash< QString, DeckPreviewWidget * > deckWidgets
Deck file path -> preview widget.
Definition visual_deck_storage_folder_display_widget.h:93
static constexpr int DECK_PASS_TIME_BUDGET_MS
The maximum time in milliseconds spent creating deck previews per event loop turn.
Definition visual_deck_storage_folder_display_widget.h:82
int deckPassRow
Next proxy row to scan in the active pass.
Definition visual_deck_storage_folder_display_widget.h:105
void refreshVisibility()
Hides the folder when it contains nothing visible, and reports the change upward.
Definition visual_deck_storage_folder_display_widget.cpp:312
QVBoxLayout * layout
Definition visual_deck_storage_folder_display_widget.h:87
void finishDeckPass()
Definition visual_deck_storage_folder_display_widget.cpp:170
bool hasContent() const
Whether this folder shows any deck previews or has any visible subfolder.
Definition visual_deck_storage_folder_display_widget.cpp:328
void createSubFolderWidgets()
Creates, removes and keeps in sync the subfolder widgets of this folder.
Definition visual_deck_storage_folder_display_widget.cpp:261
QStringList lastOrderedFilePaths
The deck order last applied to the flow layout.
Definition visual_deck_storage_folder_display_widget.h:96
int visibleDeckCount
The number of this folder's deck previews not filtered out.
Definition visual_deck_storage_folder_display_widget.h:86
QVBoxLayout * containerLayout
Definition visual_deck_storage_folder_display_widget.h:89
BannerWidget * header
Definition visual_deck_storage_folder_display_widget.h:91
QTimer * reconcileTimer
Coalesces proxy change bursts.
Definition visual_deck_storage_folder_display_widget.h:95
void setShareSelectable(bool selectable)
Definition visual_deck_storage_folder_display_widget.cpp:243
QSet< QString > deckPassPresentPaths
File paths seen so far in the active pass.
Definition visual_deck_storage_folder_display_widget.h:106
bool initialPassCompleted
Whether the first reconcile pass has run to completion at least once.
Definition visual_deck_storage_folder_display_widget.h:104
void updateShowFolders(bool enabled)
Definition visual_deck_storage_folder_display_widget.cpp:293
void reconcile()
Starts a new chunked reconcile pass that re-reads the proxy and rebuilds the deck previews and subfol...
Definition visual_deck_storage_folder_display_widget.cpp:96
void contentVisibilityChanged()
Emitted whenever this folder's visible content changes, so parent folders can re-evaluate their own v...
DeckPreviewWidget * createDeckPreviewWidget(const QString &filePath)
Creates a deck preview widget and wires it up to the storage widget.
Definition visual_deck_storage_folder_display_widget.cpp:223
VisualDeckStorageWidget * visualDeckStorageWidget
Definition visual_deck_storage_folder_display_widget.h:92
bool showFolders
Definition visual_deck_storage_folder_display_widget.h:84
QStringList childFolderPaths() const
The direct child folder paths of this folder, sorted by name.
Definition visual_deck_storage_folder_display_widget.cpp:346
FlowWidget * flowWidget
Definition visual_deck_storage_folder_display_widget.h:90
void scheduleReconcile()
Coalesces proxy change signals (a burst of deck loads or filter invalidations) into a single reconcil...
Definition visual_deck_storage_folder_display_widget.cpp:82
void beginDeckPass()
Definition visual_deck_storage_folder_display_widget.cpp:101
QString folderPath
Path relative to the deck folder, empty for the root folder.
Definition visual_deck_storage_folder_display_widget.h:85
Definition visual_deck_storage_widget.h:32