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

Vue-modèle des options : lit et persiste les réglages, et publie leur changement. More...

#include <OptionsModel.h>

Inheritance diagram for hmi::OptionsModel:

Signals

void fullscreenChanged ()
void vsyncChanged ()
void diagnosticsChanged ()
void volumeChanged ()
void languageChanged ()

Public Member Functions

 OptionsModel (QObject *parent=nullptr)
void setSessionLog (core::MemoryLogSink *sessionLog) noexcept
 Désigne le puits mémoire des journaux de session.
bool fullscreen () const noexcept
bool vsync () const noexcept
bool diagnostics () const noexcept
int volume () const noexcept
QString language () const
QStringList languages () const
QStringList languageNames () const
bool logsAvailable () const noexcept
void setFullscreen (bool enabled)
void setVsync (bool enabled)
void setDiagnostics (bool enabled)
void setVolume (int percent)
void setLanguage (const QString &code)
Q_INVOKABLE QString saveLogs ()
 Écrit les journaux de la session dans un fichier horodaté, à côté de l'exécutable.

Properties

QML_SINGLETONbool fullscreen
bool vsync
bool diagnostics
int volume
QString language
QStringList languages
 Les langues que le jeu propose, par leur code (fr, en).
QStringList languageNames
 Les mêmes, par leur nom, dans le même ordre — et chacun écrit dans sa propre langue.
bool logsAvailable
 false en Release, où aucun puits mémoire ne collecte les journaux de session.

Private Attributes

core::MemoryLogSink_sessionLog = nullptr
bool _fullscreen = false
bool _vsync = true
bool _diagnostics = false
int _volume = 100
QString _language

Detailed Description

Vue-modèle des options : lit et persiste les réglages, et publie leur changement.

La règle qui gouverne cette classe

EX-IHM-083 : tout réglage exposé doit atteindre le moteur. Une case à cocher qui ne fait rien est pire qu'une case absente — elle fait croire à un réglage, et l'utilisateur cherche ensuite pourquoi il n'a pas d'effet.

Cette classe ne fait donc que deux choses : persister, et prévenir. C'est l'application qui branche chaque signal sur ce qu'il doit atteindre — le moteur audio, la fenêtre, les traducteurs. Le faire ici obligerait la présentation à connaître le moteur, et c'est précisément la frontière que le lot établit.

Ce qui s'applique quand

Réglage Atteint
plein écran la fenêtre, immédiatement
volume le moteur audio, immédiatement
langue les traducteurs et le QML, immédiatement
synchronisation verticale le format de surface, au prochain lancement
compteur de diagnostic l'affichage tête haute, quand il existera

Les deux dernières lignes sont dites à l'écran, et non tues : un réglage qui s'applique plus tard atteint bien le moteur, mais l'utilisateur doit savoir quand.

Constructor & Destructor Documentation

◆ OptionsModel()

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

Member Function Documentation

◆ diagnostics()

bool hmi::OptionsModel::diagnostics ( ) const
inlinenodiscardnoexcept

◆ diagnosticsChanged

void hmi::OptionsModel::diagnosticsChanged ( )
signal

◆ fullscreen()

bool hmi::OptionsModel::fullscreen ( ) const
inlinenodiscardnoexcept

◆ fullscreenChanged

void hmi::OptionsModel::fullscreenChanged ( )
signal

◆ language()

QString hmi::OptionsModel::language ( ) const
inlinenodiscard

◆ languageChanged

void hmi::OptionsModel::languageChanged ( )
signal

◆ languageNames()

QStringList hmi::OptionsModel::languageNames ( ) const
nodiscard

◆ languages()

QStringList hmi::OptionsModel::languages ( ) const
nodiscard

◆ logsAvailable()

bool hmi::OptionsModel::logsAvailable ( ) const
inlinenodiscardnoexcept

◆ saveLogs()

QString hmi::OptionsModel::saveLogs ( )
nodiscard

Écrit les journaux de la session dans un fichier horodaté, à côté de l'exécutable.

Returns
Un message destiné à l'écran : le chemin écrit, ou la raison de l'échec. Jamais une chaîne vide — un bouton qui ne répond rien laisse croire qu'il n'a rien fait, alors qu'il a peut-être échoué.

◆ setDiagnostics()

void hmi::OptionsModel::setDiagnostics ( bool enabled)

◆ setFullscreen()

void hmi::OptionsModel::setFullscreen ( bool enabled)

◆ setLanguage()

void hmi::OptionsModel::setLanguage ( const QString & code)

◆ setSessionLog()

void hmi::OptionsModel::setSessionLog ( core::MemoryLogSink * sessionLog)
noexcept

Désigne le puits mémoire des journaux de session.

Appelé par l'application au démarrage : la présentation ne va pas le chercher elle-même, elle ne sait pas qu'il existe.

◆ setVolume()

void hmi::OptionsModel::setVolume ( int percent)

◆ setVsync()

void hmi::OptionsModel::setVsync ( bool enabled)

◆ volume()

int hmi::OptionsModel::volume ( ) const
inlinenodiscardnoexcept

◆ volumeChanged

void hmi::OptionsModel::volumeChanged ( )
signal

◆ vsync()

bool hmi::OptionsModel::vsync ( ) const
inlinenodiscardnoexcept

◆ vsyncChanged

void hmi::OptionsModel::vsyncChanged ( )
signal

Member Data Documentation

◆ _diagnostics

bool hmi::OptionsModel::_diagnostics = false
private

◆ _fullscreen

bool hmi::OptionsModel::_fullscreen = false
private

◆ _language

QString hmi::OptionsModel::_language
private

◆ _sessionLog

core::MemoryLogSink* hmi::OptionsModel::_sessionLog = nullptr
private

◆ _volume

int hmi::OptionsModel::_volume = 100
private

◆ _vsync

bool hmi::OptionsModel::_vsync = true
private

Property Documentation

◆ diagnostics

bool hmi::OptionsModel::diagnostics
readwrite

◆ fullscreen

QML_SINGLETONbool hmi::OptionsModel::fullscreen
readwrite

◆ language

QString hmi::OptionsModel::language
readwrite

◆ languageNames

QStringList hmi::OptionsModel::languageNames
read

Les mêmes, par leur nom, dans le même ordre — et chacun écrit dans sa propre langue.

Un code est une clé technique : l'afficher aurait demandé au joueur de savoir que « en » désigne l'anglais, et ce sont précisément les clés à l'écran que ce lot supprime ailleurs. Ils ne passent pas par qsTr : « English » ne se traduit pas en français, il s'écrit ainsi dans la liste quelle que soit la langue courante — c'est ce qui permet d'en sortir.

◆ languages

QStringList hmi::OptionsModel::languages
read

Les langues que le jeu propose, par leur code (fr, en).

Constantes : une langue s'ajoute avec son catalogue, donc par une construction, jamais à l'exécution.

◆ logsAvailable

bool hmi::OptionsModel::logsAvailable
read

false en Release, où aucun puits mémoire ne collecte les journaux de session.

Le bouton se désactive alors plutôt que d'échouer une fois cliqué.

◆ volume

int hmi::OptionsModel::volume
readwrite

◆ vsync

bool hmi::OptionsModel::vsync
readwrite

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