JustAnotherDnDGame 0.1.0
Jeu de rôle tactique au d20, vue de dessus, en C++/Qt
Loading...
Searching...
No Matches
AssetThumbnailView.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: 2026 Valentin Eloy
2// SPDX-License-Identifier: GPL-3.0-or-later
3
4#pragma once
5
6#include <QPixmap>
7#include <QWidget>
8#include <filesystem>
9#include <functional>
10#include <memory>
11#include <string>
12#include <unordered_map>
13#include <vector>
14
16
22
23class QEvent;
24class QListWidgetItem;
25
26namespace Ui {
27class AssetThumbnailView;
28}
29
30namespace hmi {
31
32class Localization;
33
55class AssetThumbnailView : public QWidget {
56 Q_OBJECT
57
58public:
61 using ReferenceChecker = std::function<std::vector<std::string>(const std::string&)>;
62
63 explicit AssetThumbnailView(QWidget* parent = nullptr);
65
67 void setDirectory(std::filesystem::path directory);
68
71 void setAssetFamily(AssetFamily family) noexcept {
72 _family = family;
73 }
74
77 _referenceChecker = std::move(checker);
78 }
79
82 void setNoneOptionVisible(bool visible);
83
86 void refresh();
87
90 void clearCache();
91
94 void selectAsset(const std::string& fileName);
95
97 [[nodiscard]] std::string selectedAsset() const;
98
100 void retranslateUi(const Localization& loc);
101
102protected:
105 bool event(QEvent* event) override;
106
107signals:
109 void assetSelected(const QString& fileName);
111 void assetActivated(const QString& fileName);
115
116private:
117 void rebuildItems();
118 [[nodiscard]] QPixmap thumbnailFor(const std::string& fileName);
119 void onFilterChanged(const QString& text);
120 void onCurrentItemChanged(QListWidgetItem* current, QListWidgetItem* previous);
121 void onItemActivated(QListWidgetItem* item);
122 void onImport();
123 void onRename();
124 void onDuplicate();
125 void onDelete();
126
129 [[nodiscard]] QString referencesWarning(const std::string& fileName) const;
130
131 std::unique_ptr<Ui::AssetThumbnailView> _ui;
132 std::filesystem::path _directory;
135 std::string _filterText;
140 std::unordered_map<std::string, QPixmap> _thumbnails;
141 const Localization* _loc = nullptr;
142};
143
144} // namespace hmi
Contrat de dimensions par famille d'assets graphiques et validation pure (EX-REN-007).
void onItemActivated(QListWidgetItem *item)
Definition AssetThumbnailView.cpp:209
std::filesystem::path _directory
Definition AssetThumbnailView.h:132
void assetSelected(const QString &fileName)
Émis quand la sélection change dans la grille (feuille, pas l'entrée « (aucun) »… incluse).
std::string _filterText
Definition AssetThumbnailView.h:135
AssetFamily _family
Definition AssetThumbnailView.h:133
const Localization * _loc
Definition AssetThumbnailView.h:141
void rebuildItems()
Definition AssetThumbnailView.cpp:133
void selectAsset(const std::string &fileName)
Sélectionne un fichier par son nom (aucun effet s'il n'est pas listé).
Definition AssetThumbnailView.cpp:106
void onImport()
Definition AssetThumbnailView.cpp:237
void setReferenceChecker(ReferenceChecker checker)
Fournit le vérificateur de références de la section (voir la doc de classe).
Definition AssetThumbnailView.h:76
void onFilterChanged(const QString &text)
Definition AssetThumbnailView.cpp:197
std::unique_ptr< Ui::AssetThumbnailView > _ui
Definition AssetThumbnailView.h:131
std::function< std::vector< std::string >(const std::string &)> ReferenceChecker
Fonction fournie par la section : renvoie les références lisibles à un fichier (jeu de skins,...
Definition AssetThumbnailView.h:61
void assetActivated(const QString &fileName)
Émis sur double-clic/activation : confirme le choix (fermeture d'un dialogue englobant).
std::string selectedAsset() const
Definition AssetThumbnailView.cpp:117
void retranslateUi(const Localization &loc)
Applique la langue active (champ de recherche, boutons, entrée « (aucun) »).
Definition AssetThumbnailView.cpp:122
void setNoneOptionVisible(bool visible)
Affiche ou masque l'entrée « (aucun) » en tête de grille (sélection représentant l'absence d'assignat...
Definition AssetThumbnailView.cpp:93
bool event(QEvent *event) override
Régénère les vignettes lors d'un changement d'écran (QEvent::ScreenChangeInternal) : l'échelle d'affi...
Definition AssetThumbnailView.cpp:186
void clearCache()
Vide le cache de vignettes décodées, sans recharger la grille (rechargement à chaud,...
Definition AssetThumbnailView.cpp:102
QPixmap thumbnailFor(const std::string &fileName)
Definition AssetThumbnailView.cpp:154
void setAssetFamily(AssetFamily family) noexcept
Famille de l'asset (EX-REN-007), utilisée pour valider les imports.
Definition AssetThumbnailView.h:71
void assetsChanged()
Émis après un import/renommage/duplication/suppression réussi : la section doit rafraîchir ce qui dép...
ReferenceChecker _referenceChecker
Definition AssetThumbnailView.h:134
std::unordered_map< std::string, QPixmap > _thumbnails
Chemin absolu -> vignette décodée.
Definition AssetThumbnailView.h:140
QString referencesWarning(const std::string &fileName) const
Références de fileName, décrites en un seul message ; chaîne vide si aucune ou si aucun vérificateur ...
Definition AssetThumbnailView.cpp:219
~AssetThumbnailView() override
void refresh()
Recharge la grille depuis le dossier courant (après un import/renommage/suppression,...
Definition AssetThumbnailView.cpp:98
AssetThumbnailView(QWidget *parent=nullptr)
Definition AssetThumbnailView.cpp:71
bool _noneOptionVisible
Definition AssetThumbnailView.h:136
void onRename()
Definition AssetThumbnailView.cpp:266
void setDirectory(std::filesystem::path directory)
Désigne le dossier balayé et recharge la grille.
Definition AssetThumbnailView.cpp:88
void onCurrentItemChanged(QListWidgetItem *current, QListWidgetItem *previous)
Definition AssetThumbnailView.cpp:202
void onDuplicate()
Definition AssetThumbnailView.cpp:302
void onDelete()
Definition AssetThumbnailView.cpp:321
Catalogue de traduction (i18n) : associe des clés stables à des chaînes selon la langue active,...
Definition Localization.h:29
Definition AssetThumbnailView.h:26
Definition AudioEngine.cpp:15
AssetFamily
Famille d'un asset graphique, qui détermine les dimensions attendues du fichier image.
Definition AssetContract.h:22
@ TileSkin
Skin d'une tuile isolée : exactement une case (LOT-42).
Definition AssetContract.h:27