JustAnotherDnDGame 0.1.0
Jeu de rôle tactique au d20, vue de dessus, en C++/Qt
Loading...
Searching...
No Matches
hmi::AssetThumbnailView Class Reference

Grille de vignettes d'un dossier d'assets, avec recherche, sélection et gestion des fichiers (importer/renommer/dupliquer/supprimer). More...

#include <AssetThumbnailView.h>

Inheritance diagram for hmi::AssetThumbnailView:

Public Types

using ReferenceChecker = std::function<std::vector<std::string>(const std::string&)>
 Fonction fournie par la section : renvoie les références lisibles à un fichier (jeu de skins, futur niveau…), vide si aucune.

Signals

void assetSelected (const QString &fileName)
 Émis quand la sélection change dans la grille (feuille, pas l'entrée « (aucun) »… incluse).
void assetActivated (const QString &fileName)
 Émis sur double-clic/activation : confirme le choix (fermeture d'un dialogue englobant).
void assetsChanged ()
 Émis après un import/renommage/duplication/suppression réussi : la section doit rafraîchir ce qui dépend du contenu du dossier (ex.

Public Member Functions

 AssetThumbnailView (QWidget *parent=nullptr)
 ~AssetThumbnailView () override
void setDirectory (std::filesystem::path directory)
 Désigne le dossier balayé et recharge la grille.
void setAssetFamily (AssetFamily family) noexcept
 Famille de l'asset (EX-REN-007), utilisée pour valider les imports.
void setReferenceChecker (ReferenceChecker checker)
 Fournit le vérificateur de références de la section (voir la doc de classe).
void setNoneOptionVisible (bool visible)
 Affiche ou masque l'entrée « (aucun) » en tête de grille (sélection représentant l'absence d'assignation).
void refresh ()
 Recharge la grille depuis le dossier courant (après un import/renommage/suppression, ou un rechargement à chaud externe).
void clearCache ()
 Vide le cache de vignettes décodées, sans recharger la grille (rechargement à chaud, LOT-43 TACHE-03) — le prochain refresh() redécode donc chaque fichier depuis le disque.
void selectAsset (const std::string &fileName)
 Sélectionne un fichier par son nom (aucun effet s'il n'est pas listé).
std::string selectedAsset () const
void retranslateUi (const Localization &loc)
 Applique la langue active (champ de recherche, boutons, entrée « (aucun) »).

Protected Member Functions

bool event (QEvent *event) override
 Régénère les vignettes lors d'un changement d'écran (QEvent::ScreenChangeInternal) : l'échelle d'affichage a pu changer (LOT-56 TACHE-05).

Private Member Functions

void rebuildItems ()
QPixmap thumbnailFor (const std::string &fileName)
void onFilterChanged (const QString &text)
void onCurrentItemChanged (QListWidgetItem *current, QListWidgetItem *previous)
void onItemActivated (QListWidgetItem *item)
void onImport ()
void onRename ()
void onDuplicate ()
void onDelete ()
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 n'est configuré.

Private Attributes

std::unique_ptr< Ui::AssetThumbnailView > _ui
std::filesystem::path _directory
AssetFamily _family = AssetFamily::TileSkin
ReferenceChecker _referenceChecker
std::string _filterText
bool _noneOptionVisible = true
std::unordered_map< std::string, QPixmap > _thumbnails
 Chemin absolu -> vignette décodée.
const Localization_loc = nullptr

Detailed Description

Grille de vignettes d'un dossier d'assets, avec recherche, sélection et gestion des fichiers (importer/renommer/dupliquer/supprimer).

Réutilisable tel quel par toutes les sections du panneau « Textures » (Skins pour l'instant, puis Fond, Objets, Animations, Décors) : le widget ignore délibérément la sémantique d'une section (à quoi sert l'asset une fois choisi) — il liste un dossier et émet une sélection ou une notification de changement. La sémantique (quel type de tuile, quel niveau…) reste dans la section appelante.

Pour la même raison, la détection des références avant renommage/suppression n'est pas codée en dur ici : la section fournit un ReferenceChecker (setReferenceChecker), seule partie qui sait CE QUI peut référencer un asset (un jeu de skins aujourd'hui, un niveau à partir de LOT-44).

Décodage CPU uniquement (hmi::decodeImageFileQPixmap), indépendant du device Direct3D 11 : ce widget doit rester utilisable même quand aucun viewport n'est actif. Les vignettes sont mises à l'échelle en plus proche voisin (pixel art, EX-ARCH-022) et mises en cache par chemin de fichier ; clearCache vide ce cache pour le rechargement à chaud (LOT-43 TACHE-03).

Member Typedef Documentation

◆ ReferenceChecker

using hmi::AssetThumbnailView::ReferenceChecker = std::function<std::vector<std::string>(const std::string&)>

Fonction fournie par la section : renvoie les références lisibles à un fichier (jeu de skins, futur niveau…), vide si aucune.

Le widget ne sait rien de plus sur leur origine.

Constructor & Destructor Documentation

◆ AssetThumbnailView()

hmi::AssetThumbnailView::AssetThumbnailView ( QWidget * parent = nullptr)
explicit

◆ ~AssetThumbnailView()

hmi::AssetThumbnailView::~AssetThumbnailView ( )
overridedefault

Member Function Documentation

◆ assetActivated

void hmi::AssetThumbnailView::assetActivated ( const QString & fileName)
signal

Émis sur double-clic/activation : confirme le choix (fermeture d'un dialogue englobant).

◆ assetsChanged

void hmi::AssetThumbnailView::assetsChanged ( )
signal

Émis après un import/renommage/duplication/suppression réussi : la section doit rafraîchir ce qui dépend du contenu du dossier (ex.

une assignation qui visait le fichier supprimé).

◆ assetSelected

void hmi::AssetThumbnailView::assetSelected ( const QString & fileName)
signal

Émis quand la sélection change dans la grille (feuille, pas l'entrée « (aucun) »… incluse).

◆ clearCache()

void hmi::AssetThumbnailView::clearCache ( )

Vide le cache de vignettes décodées, sans recharger la grille (rechargement à chaud, LOT-43 TACHE-03) — le prochain refresh() redécode donc chaque fichier depuis le disque.

◆ event()

bool hmi::AssetThumbnailView::event ( QEvent * event)
overrideprotected

Régénère les vignettes lors d'un changement d'écran (QEvent::ScreenChangeInternal) : l'échelle d'affichage a pu changer (LOT-56 TACHE-05).

◆ onCurrentItemChanged()

void hmi::AssetThumbnailView::onCurrentItemChanged ( QListWidgetItem * current,
QListWidgetItem * previous )
private

◆ onDelete()

void hmi::AssetThumbnailView::onDelete ( )
private

◆ onDuplicate()

void hmi::AssetThumbnailView::onDuplicate ( )
private

◆ onFilterChanged()

void hmi::AssetThumbnailView::onFilterChanged ( const QString & text)
private

◆ onImport()

void hmi::AssetThumbnailView::onImport ( )
private

◆ onItemActivated()

void hmi::AssetThumbnailView::onItemActivated ( QListWidgetItem * item)
private

◆ onRename()

void hmi::AssetThumbnailView::onRename ( )
private

◆ rebuildItems()

void hmi::AssetThumbnailView::rebuildItems ( )
private

◆ referencesWarning()

QString hmi::AssetThumbnailView::referencesWarning ( const std::string & fileName) const
nodiscardprivate

Références de fileName, décrites en un seul message ; chaîne vide si aucune ou si aucun vérificateur n'est configuré.

◆ refresh()

void hmi::AssetThumbnailView::refresh ( )

Recharge la grille depuis le dossier courant (après un import/renommage/suppression, ou un rechargement à chaud externe).

◆ retranslateUi()

void hmi::AssetThumbnailView::retranslateUi ( const Localization & loc)

Applique la langue active (champ de recherche, boutons, entrée « (aucun) »).

◆ selectAsset()

void hmi::AssetThumbnailView::selectAsset ( const std::string & fileName)

Sélectionne un fichier par son nom (aucun effet s'il n'est pas listé).

Chaîne vide pour sélectionner l'entrée « (aucun) », si affichée.

◆ selectedAsset()

std::string hmi::AssetThumbnailView::selectedAsset ( ) const
nodiscard
Returns
Le fichier actuellement sélectionné, vide si aucun ou si « (aucun) » est choisi.

◆ setAssetFamily()

void hmi::AssetThumbnailView::setAssetFamily ( AssetFamily family)
inlinenoexcept

Famille de l'asset (EX-REN-007), utilisée pour valider les imports.

À définir avant tout import ; sans effet sur le balayage ou l'affichage.

◆ setDirectory()

void hmi::AssetThumbnailView::setDirectory ( std::filesystem::path directory)

Désigne le dossier balayé et recharge la grille.

◆ setNoneOptionVisible()

void hmi::AssetThumbnailView::setNoneOptionVisible ( bool visible)

Affiche ou masque l'entrée « (aucun) » en tête de grille (sélection représentant l'absence d'assignation).

Activée par défaut.

◆ setReferenceChecker()

void hmi::AssetThumbnailView::setReferenceChecker ( ReferenceChecker checker)
inline

Fournit le vérificateur de références de la section (voir la doc de classe).

◆ thumbnailFor()

QPixmap hmi::AssetThumbnailView::thumbnailFor ( const std::string & fileName)
nodiscardprivate

Member Data Documentation

◆ _directory

std::filesystem::path hmi::AssetThumbnailView::_directory
private

◆ _family

AssetFamily hmi::AssetThumbnailView::_family = AssetFamily::TileSkin
private

◆ _filterText

std::string hmi::AssetThumbnailView::_filterText
private

◆ _loc

const Localization* hmi::AssetThumbnailView::_loc = nullptr
private

◆ _noneOptionVisible

bool hmi::AssetThumbnailView::_noneOptionVisible = true
private

◆ _referenceChecker

ReferenceChecker hmi::AssetThumbnailView::_referenceChecker
private

◆ _thumbnails

std::unordered_map<std::string, QPixmap> hmi::AssetThumbnailView::_thumbnails
private

Chemin absolu -> vignette décodée.

Décodage paresseux : rempli au premier refresh() (donc à la première ouverture réelle de la vue), jamais à la construction du widget — une section non consultée ne décode donc jamais ses assets.

◆ _ui

std::unique_ptr<Ui::AssetThumbnailView> hmi::AssetThumbnailView::_ui
private

The documentation for this class was generated from the following files: