Cockatrice 2026-09-01-Development-3.1.0-beta.10
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 <QSet>
21#include <QString>
22#include <QWidget>
23
24class BannerWidget;
26class FlowWidget;
27class QTimer;
28class QVBoxLayout;
30
32{
33 Q_OBJECT
34public:
37 const QString &folderPath,
38 bool canBeHidden,
39 bool showFolders);
40
41public slots:
46 void reconcile();
47
52 void scheduleReconcile();
53 void updateShowFolders(bool enabled);
54
55signals:
61
62private:
63 void beginDeckPass();
64 void continueDeckPass();
65 void finishDeckPass();
66 [[nodiscard]] DeckPreviewWidget *createDeckPreviewWidget(const QString &filePath);
68 void refreshVisibility();
69 [[nodiscard]] bool hasContent() const;
70 [[nodiscard]] QStringList childFolderPaths() const;
71
78 static constexpr int DECK_PASS_TIME_BUDGET_MS = 20;
79
81 QString folderPath;
83 QVBoxLayout *layout;
84 QWidget *container;
85 QVBoxLayout *containerLayout;
89 QHash<QString, DeckPreviewWidget *> deckWidgets;
90 QHash<QString, VisualDeckStorageFolderDisplayWidget *> subFolderWidgets;
91 QTimer *reconcileTimer = nullptr;
93
95 bool deckPassActive = false;
101 int deckPassRow = 0;
102 QSet<QString> deckPassPresentPaths;
103};
104
105#endif // VISUAL_DECK_STORAGE_FOLDER_DISPLAY_WIDGET_H
Definition banner_widget.h:17
Definition deck_preview_widget.h:30
Definition flow_widget.h:22
void continueDeckPass()
Definition visual_deck_storage_folder_display_widget.cpp:98
bool deckPassActive
Whether a chunked reconcile pass is currently running.
Definition visual_deck_storage_folder_display_widget.h:95
VisualDeckStorageFolderDisplayWidget(QWidget *parent, VisualDeckStorageWidget *visualDeckStorageWidget, const QString &folderPath, bool canBeHidden, bool showFolders)
Definition visual_deck_storage_folder_display_widget.cpp:17
bool deckPassRestartRequested
Definition visual_deck_storage_folder_display_widget.h:98
QWidget * container
Definition visual_deck_storage_folder_display_widget.h:84
QHash< QString, VisualDeckStorageFolderDisplayWidget * > subFolderWidgets
Folder path -> subfolder widget.
Definition visual_deck_storage_folder_display_widget.h:90
QHash< QString, DeckPreviewWidget * > deckWidgets
Deck file path -> preview widget.
Definition visual_deck_storage_folder_display_widget.h:89
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:78
int deckPassRow
Next proxy row to scan in the active pass.
Definition visual_deck_storage_folder_display_widget.h:101
void refreshVisibility()
Hides the folder when it contains nothing visible, and reports the change upward.
Definition visual_deck_storage_folder_display_widget.cpp:276
QVBoxLayout * layout
Definition visual_deck_storage_folder_display_widget.h:83
void finishDeckPass()
Definition visual_deck_storage_folder_display_widget.cpp:151
bool hasContent() const
Whether this folder shows any deck previews or has any visible subfolder.
Definition visual_deck_storage_folder_display_widget.cpp:292
void createSubFolderWidgets()
Creates, removes and keeps in sync the subfolder widgets of this folder.
Definition visual_deck_storage_folder_display_widget.cpp:225
QStringList lastOrderedFilePaths
The deck order last applied to the flow layout.
Definition visual_deck_storage_folder_display_widget.h:92
int visibleDeckCount
The number of this folder's deck previews not filtered out.
Definition visual_deck_storage_folder_display_widget.h:82
QVBoxLayout * containerLayout
Definition visual_deck_storage_folder_display_widget.h:85
BannerWidget * header
Definition visual_deck_storage_folder_display_widget.h:87
QTimer * reconcileTimer
Coalesces proxy change bursts.
Definition visual_deck_storage_folder_display_widget.h:91
QSet< QString > deckPassPresentPaths
File paths seen so far in the active pass.
Definition visual_deck_storage_folder_display_widget.h:102
bool initialPassCompleted
Whether the first reconcile pass has run to completion at least once.
Definition visual_deck_storage_folder_display_widget.h:100
void updateShowFolders(bool enabled)
Definition visual_deck_storage_folder_display_widget.cpp:257
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:82
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:204
VisualDeckStorageWidget * visualDeckStorageWidget
Definition visual_deck_storage_folder_display_widget.h:88
bool showFolders
Definition visual_deck_storage_folder_display_widget.h:80
QStringList childFolderPaths() const
The direct child folder paths of this folder, sorted by name.
Definition visual_deck_storage_folder_display_widget.cpp:310
FlowWidget * flowWidget
Definition visual_deck_storage_folder_display_widget.h:86
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:68
void beginDeckPass()
Definition visual_deck_storage_folder_display_widget.cpp:87
QString folderPath
Path relative to the deck folder, empty for the root folder.
Definition visual_deck_storage_folder_display_widget.h:81
Definition visual_deck_storage_widget.h:30