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

Le point unique vers lequel pointe tout ce qui n'a pas encore de source. More...

#include <PendingData.h>

Inheritance diagram for hmi::PendingData:

Public Member Functions

 PendingData (QObject *parent=nullptr)
Q_INVOKABLE QString value (const QString &key) const
Q_INVOKABLE QUrl image (const QString &key) const
 Une source d'image vide, pour un portrait, une carte ou un blason sans source.
Q_INVOKABLE QAbstractItemModel * rows (const QString &key, int count)
 Un modèle de count lignes vides, pour un bloc de liste pas encore alimenté.

Private Attributes

QHash< QString, SheetRowModel * > _models

Detailed Description

Le point unique vers lequel pointe tout ce qui n'a pas encore de source.

Le problème que cette classe résout

Sept des neuf écrans du RPG — journal, carte, dialogue, marchand, guilde, ATH de combat, feuille d'équipe — n'ont aujourd'hui aucune donnée : les lots qui les produiront n'existent pas encore. Leur mise en page, elle, est décidée, et la jeter en attendant reviendrait à la redessiner plus tard, différemment, sans que personne ne se souvienne de ce qui avait été tranché.

Ils sont donc dessinés maintenant, et chacun de leurs champs porte une clé d'attribution nommée qui aboutit ici. Le jour où le lot fonctionnel arrive, il remplace PendingData par sa vraie vue-modèle dans le fichier de câblage : le formulaire ne bouge pas. C'est précisément ce que la séparation achète.

Pourquoi un tiret cadratin et non de fausses données

Un écran rempli de valeurs plausibles se prend pour un écran fini. Il passe les relectures, on l'oublie, et un jour quelqu'un s'étonne que le marchand vende toujours les mêmes trois objets. Le tiret cadratin est le même signe que le châssis pose sur un champ sans source : à l'écran, « inconnu » et « pas encore alimenté » se ressemblent, et rien ne gagne à les distinguer.

Les valeurs d'exemple, elles, vivent dans les formulaires .ui.qml : Qt Design Studio les affiche, la conception juge sa mise en page dessus, et le jeu ne les voit jamais.

Comment on retrouve ce qu'il reste à brancher

python scripts/list_pending_bindings.py relève toutes les clés depuis le QML lui-même. Aucune liste à tenir à jour en parallèle : l'inventaire est dérivé du code, donc toujours exact — et c'est le motif que ce lot applique partout ailleurs.

Constructor & Destructor Documentation

◆ PendingData()

hmi::PendingData::PendingData ( QObject * parent = nullptr)
explicit

Member Function Documentation

◆ image()

QUrl hmi::PendingData::image ( const QString & key) const
nodiscard

Une source d'image vide, pour un portrait, une carte ou un blason sans source.

Distincte de value et ce n'est pas un détail : le tiret cadratin qu'elle rend est un TEXTE, et l'affecter à la source d'une image fait chercher un fichier nommé « — ». L'erreur est apparue à la première exécution des trois écrans qui portent une illustration.

Une URL vide laisse le bloc afficher son cadre et rien d'autre — il occupe donc déjà sa place, ce qui permet de juger la mise en page avant que l'image existe.

◆ rows()

QAbstractItemModel * hmi::PendingData::rows ( const QString & key,
int count )
nodiscard

Un modèle de count lignes vides, pour un bloc de liste pas encore alimenté.

Le modèle est mis en cache par clé. Sans cela, chaque réévaluation d'une liaison QML en construirait un neuf : la vue se réinitialiserait en boucle, et la position de défilement sauterait à chaque image — un défaut visuel dont la cause ne se lit nulle part.

◆ value()

QString hmi::PendingData::value ( const QString & key) const
nodiscard
Returns
Le tiret cadratin, quelle que soit key. key n'est pas ignorée pour autant : c'est elle qui nomme la donnée future, et que le relevé retrouve dans le QML.

Member Data Documentation

◆ _models

QHash<QString, SheetRowModel*> hmi::PendingData::_models
private

The documentation for this class was generated from the following files:
  • /home/runner/work/JustAnotherDnDGame/JustAnotherDnDGame/Source/HMI/Presentation/PendingData.h
  • /home/runner/work/JustAnotherDnDGame/JustAnotherDnDGame/Source/HMI/Presentation/PendingData.cpp