RadioSvegliaGBE
Slider.h
Go to the documentation of this file.
1 #pragma once
2 
19 #pragma region INCLUSIONS
20 // nessuna inclusione necessaria
21 #pragma endregion INCLUSIONS
22 
31 namespace Slider__file
32 {
33  // Valore costante che viene ritornato in caso di errori
34  // Il valore invalido utilizzato è un valore impossibile, cioè che non potrebbe essere mai restituito naturalmente.
36  static constexpr int _invalidvalue = -1;
37 
39  static constexpr auto _initvalue = 0;
40 
41  // Valore costante per la formattazione "elegante" del formato dell'ora
43  static constexpr auto _ElegantAdj /*Adjustment*/ = 10;
44 
45  // Espressione costante rappresentante il valore massimo che pu� essere attribuito all'attributo 'm_Hour' della classe "Slider" --> _24HOURS
47  static constexpr auto _24HOURS_hourlimiter = 23;
48  // Espressione costante rappresentante il valore massimo che pu� essere attribuito all'attributo 'm_Hour' della classe "Slider" --> _12HOURS
50  static constexpr auto _12HOURS_hourlimiter = 12;
51  // Espressione costante rappresentante il valore massimo che pu� essere attribuito all'attributo 'm_Minute' della classe "Slider" --> _12HOURS / _24HOURS
53  static constexpr auto _minutelimiter = 59;
54 
55  // Espressione costante rappresentante un valore di controllo per l'accettazione della stringa nel metodo 'set_SliderValue' della classe "Slider"
57  static constexpr auto _length_short = 5;
58  // Espressione costante rappresentante un valore di controllo per l'accettazione della stringa nel metodo 'set_SliderValue' della classe "Slider"
60  static constexpr auto _length_long = 7;
61 
62  // Espressione costante rappresentante un valore di controllo per l'accettazione della stringa nel metodo 'set_SliderValue' della classe "Slider"
65  static constexpr auto _characteratpositiontwo = ':';
66 
67  // Valore costante rappresentante il periodo per la gestione del formato --> 12h
69  static constexpr auto _Period = 12;
70 }
71 
80 class Slider
81 {
82  /*Blocco trivial*/
83  /*
84  Stiamo trattando una classe interamente statica. Per la definizione di staticit�, descritta successivamente, questa classe funger� solamente
85  da "contenitore astratto" per organizzare pi� logicamente i dati. In verit�, tutto risieder� principalmente nel Data Segment, quindi sar�
86  globale, ma statico (anche questo descritto successivamente).
87  Questa staticit� implica la NON necessit� di creare istanze di questa classe, che risulterebbero totalmente inutili dato che tutti gli attributi
88  e i metodi esistono nell'ambito globale.
89  Per evitare, quindi, inutili istanziamenti, verranno bloccati il costruttore trivial (di default generato dal compilatore) e il distruttore, reso
90  inutile dalla non-istanziabilit� della classe stessa.
91  */
92 private:
93  // Blocco attraverso privatizzazione del costruttore trivial
100  Slider() = default;
101  // Blocco attraverso privatizzazione del distruttore trivial
108  ~Slider() = default;
109 
110  /*Enumerazioni*/
111  /*
112  Una enumerazione permette una gestione pi� intelligente degli "switcher" forniti all'utente finale.
113  Tramite nomi significativi, si gestiscono gli "switcher" appunto con dei nomi, utilizzati per mascherare i valori di enumerazione meno significativi per l'utente.
114  Anche qua si applica la staticit� descritta successivamente. Una classe di enumarazione � automaticamente statica.
115  */
116 public:
126  enum class TimeFormat
127  {
128  _12HOURS,
129  _24HOURS,
131  };
132 
143  enum class TimePeriod
144  {
145  NOT_USED,
146  AM,
147  PM
148  };
149 
150  /*Attributi*/
151 private:
153  static unsigned int m_Hour;
154 
156  static unsigned int m_Minute;
157 
161 
165 
167  static bool m_isReady;
168 
169  /*Init*/
190 public:
191  static bool Init(const TimeFormat& t_Format);
192 
193  /*getter*/
194 public:
208  static unsigned int get_Hour();
222  static unsigned int get_Minute();
236  static const TimePeriod get_Period();
250  static const TimeFormat get_Format();
267  static const String get_SliderValue();
268 
269  /*setter*/
270 public:
294  static bool set_SliderValue(const String& t_SliderValue, const TimePeriod& t_Period = Slider::TimePeriod::NOT_USED);
295 
296  /*Metodi*/
297 public:
315  static inline bool inc_Hour();
333  static inline bool inc_Minute();
334 
356  static bool ChangeFormat(const TimeFormat& t_Format);
357 
358  /*Invalidator*/
359  /*
360  L'invalidatore consiste in quel valore che viene ritornato ogni qualvolta una chiamata da parte dell'utente ai metodi non produce il risultato atteso.
361  E' importante specificare che, l'invalidatore, pur essendo costante, non deve essere dichiarato come 'constexpr' perchè NON deve seguire le regole di
362  comportamento della direttiva '#define'. Il compilatore NON deve sostituire il nome dell'attributo con un valore numerico costante --> i.e. RVALUE!!
363  L'invalidatore deve essere un vero e proprio attributo della classe, che però non deve mai appartenere ad uno specifico oggetto. Per questo deve essere sempre
364  specificato come statico. Ovviamente, avrà una locazione nel Data Segment, sarà quindi globale ma statico (valido sono in questa unità di traslazione (file)) e utilizzabile
365  solamente nell'ambito della classe di dichiarazione.
366  */
367  /*Attributo*/
368 private:
369  // Valore costante che viene ritornato in caso di invalidità riscontrata nell'oggetto durante il dereferenziamento
370  // per la chiamata dei metodi.
371  // Il valore invalido utilizzato è un valore impossibile, cioè che non potrebbe essere mai restituito naturalmente.
373  static const int m_Invalidator;
374 
375  /*getter*/
376 public:
377  // Metodo per il ritorno del valore dell'Invalidatore. Verrà ritornata una referenza [reference --> '&'] costante, in modo tale da ottimizzare il processo e,
378  // allo stesso tempo evitare modifiche inappropriate.
379  /*
380  Un'altra particolarità di questo metodo sta nel fatto che è definita come 'inline'. Questa keyword comunica al compilatore, ovunque trovi una chiamata
381  a questo metodo, di NON effettuare una vera e propria chiamata, ma di sostituire la porzione del codice per la chiamata con il BODY del metodo (la implementazione stessa).
382  Questa tecnica risulta molto utile per funzioni che effettuano pochissime operazioni e sono sottoposte a frequenti chiamate.
383  Anche qua, per via della staticità, viene applicata la gestione analizzata prima.
384  */
395  static inline const int& get_Invalidator();
396 };
397 
398 // Dichiarazione delle variabili GLOBALI STATICHE
399 // Risiederanno nel Data Segment
400 /*
401 Essendo statiche in classe, tutti gli attributi non sono altro che variabili GLOBALI STATICHE.
402 Per questo è richiesta la dichiarazione globale. Non è necessario specificare 'static' essendo già stato specificato nella dichiarazione degli
403 attributi nella classe stessa.
404 */
406 unsigned int Slider::m_Hour;
408 unsigned int Slider::m_Minute;
416 bool Slider::m_isReady;
419 
421 //////////////////////////////////////////////////////////////////////////
Slider__file::_12HOURS_hourlimiter
static constexpr auto _12HOURS_hourlimiter
Definition: Slider.h:50
Slider::TimePeriod
TimePeriod
Enumerazione per la gestione del periodo durante la visualizzazione dell'ora corrente.
Definition: Slider.h:143
Slider::TimeFormat::_12HOURS
Slider__file::_length_short
static constexpr auto _length_short
Definition: Slider.h:57
Slider__file::_24HOURS_hourlimiter
static constexpr auto _24HOURS_hourlimiter
Definition: Slider.h:47
Slider::get_SliderValue
static const String get_SliderValue()
Permette di ottenere il valore corrente dello slider 'hh:mm periodo se in uso'.
Definition: Slider.cpp:78
Slider
Classe per la gestione di uno slider di selezione per l'impostazione di un orario generico.
Definition: Slider.h:80
Slider::TimePeriod::NOT_USED
Slider::get_Invalidator
static const int & get_Invalidator()
Permette di ottenere l'invalidatore della classe.
Definition: Slider.cpp:319
Slider::TimeFormat::_24HOURS
Slider::m_isReady
static bool m_isReady
Definition: Slider.h:167
Slider::get_Hour
static unsigned int get_Hour()
Permette di ottenere il valore dell'ora 'h' impostata nello slider.
Definition: Slider.cpp:42
Slider::~Slider
~Slider()=default
Distruttore della classe Slider.
Slider::set_SliderValue
static bool set_SliderValue(const String &t_SliderValue, const TimePeriod &t_Period=Slider::TimePeriod::NOT_USED)
Permette di impostare il valore dello slider.
Definition: Slider.cpp:148
Slider::m_Invalidator
static const int m_Invalidator
Definition: Slider.h:373
Slider::TimeFormat
TimeFormat
Enumerazione per la gestione del formato di visualizzazione dell'ora corrente.
Definition: Slider.h:126
Slider::get_Format
static const TimeFormat get_Format()
Permette di ottenere il valore del formato impostato nello slider.
Definition: Slider.cpp:69
Slider::m_Format
static TimeFormat m_Format
Definition: Slider.h:160
Slider::TimePeriod::PM
Slider::Slider
Slider()=default
Costruttore di default della classe Slider.
Slider__file::_invalidvalue
static constexpr int _invalidvalue
Definition: Slider.h:36
Slider::ChangeFormat
static bool ChangeFormat(const TimeFormat &t_Format)
Permette di cambiare il formato di visualizzazione e impostazione dell'ora 'h' e 'm' impostata nella ...
Definition: Slider.cpp:257
Slider__file::_ElegantAdj
static constexpr auto _ElegantAdj
Definition: Slider.h:43
Slider::Init
static bool Init(const TimeFormat &t_Format)
Metodo di inizializzazione dei componenti della classe.
Definition: Slider.cpp:15
Slider__file::_minutelimiter
static constexpr auto _minutelimiter
Definition: Slider.h:53
Slider::get_Minute
static unsigned int get_Minute()
Permette di ottenere il valore dell'ora 'm' impostata nello slider.
Definition: Slider.cpp:51
Slider::m_Minute
static unsigned int m_Minute
Definition: Slider.h:156
Slider__file
Spazio dei nomi riferito al file Slider.h.
Slider__file::_initvalue
static constexpr auto _initvalue
Definition: Slider.h:39
Slider::get_Period
static const TimePeriod get_Period()
Permette di ottenere il valore del periodo impostato nello slider.
Definition: Slider.cpp:60
Slider::TimeFormat::INVALID_REFERENCE
Slider::inc_Minute
static bool inc_Minute()
Incrementa di una unità (1) il valore dell'ora 'm' impostata nello slider.
Definition: Slider.cpp:241
Slider__file::_characteratpositiontwo
static constexpr auto _characteratpositiontwo
Definition: Slider.h:65
Slider__file::_Period
static constexpr auto _Period
Definition: Slider.h:69
Slider::m_Period
static TimePeriod m_Period
Definition: Slider.h:164
Slider__file::_length_long
static constexpr auto _length_long
Definition: Slider.h:60
Slider::inc_Hour
static bool inc_Hour()
Incrementa di una unità (1) il valore dell'ora 'h' impostata nello slider.
Definition: Slider.cpp:205
Slider::m_Hour
static unsigned int m_Hour
Definition: Slider.h:153
Slider::TimePeriod::AM