RadioSvegliaGBE
Slider.cpp
Go to the documentation of this file.
1 
11 // Inclusione <automatica> dell'header che si sta implementando
12 #include "Slider.h"
13 
14 // Implementazione del metodo 'Init' della categoria 'Init'
15 bool Slider::Init(const TimeFormat& t_Format)
16 {
17  m_isReady = false;
20 
21  switch (t_Format)
22  {
25  break;
26 
29  break;
30 
32  return false;
33  break;
34  }
35 
36  m_Format = t_Format;
37  m_isReady = true;
38  return true;
39 }
40 
41 // Implementazione del metodo 'get_Hour' della categoria 'getter'
42 unsigned int Slider::get_Hour()
43 {
44  if (m_isReady)
45  return m_Hour;
46  else
47  return m_Invalidator;
48 }
49 
50 // Implementazione del metodo 'get_Minute' della categoria 'getter'
51 unsigned int Slider::get_Minute()
52 {
53  if (m_isReady)
54  return m_Minute;
55  else
56  return m_Invalidator;
57 }
58 
59 // Implementazione del metodo 'get_Period' della categoria 'getter'
61 {
62  if (m_isReady)
63  return m_Period;
64  else
65  return TimePeriod::NOT_USED;
66 }
67 
68 // Implementazione del metodo 'get_Format' della categoria 'getter'
70 {
71  if (m_isReady)
72  return m_Format;
73  else
75 }
76 
77 // Implementazione del metodo 'get_SliderValue' della categoria 'getter'
79 {
80  if (m_isReady)
81  {
82  String l_SliderValue = "";
83 
84  switch (m_Format)
85  {
87  // Ottengo 'hh'
88  // 'Elegant Adjustment' "Regolazione Elegante" della stringa in ritorno per l'ora formattata
89  // Aggiunge uno zero '0' inziale per compensare un eventuale mancanza di seconda cifra (per i valori minori di '_ElegantAdj' (i.e. '10'))
91  l_SliderValue = l_SliderValue + "0";
92 
93  l_SliderValue = l_SliderValue + String(m_Hour);
94 
95  l_SliderValue = l_SliderValue + ":";
96 
97  // Ottengo 'mm'
98  // 'Elegant Adjustment' "Regolazione Elegante" della stringa in ritorno per l'ora formattata
99  // Aggiunge uno zero '0' inziale per compensare un eventuale mancanza di seconda cifra (per i valori minori di '_ElegantAdj' (i.e. '10'))
101  l_SliderValue = l_SliderValue + "0";
102 
103  l_SliderValue = l_SliderValue + String(m_Minute);
104 
105  // Ottengo periodo
106  switch (m_Period)
107  {
109  l_SliderValue = l_SliderValue + "am";
110  break;
112  l_SliderValue = l_SliderValue + "pm";
113  break;
115  return String(m_Invalidator);
116  break;
117  }
118  break;
119 
121  // Ottengo 'hh'
122  // 'Elegant Adjustment' "Regolazione Elegante" della stringa in ritorno per l'ora formattata
123  // Aggiunge uno zero '0' inziale per compensare un eventuale mancanza di seconda cifra (per i valori minori di '_ElegantAdj' (i.e. '10'))
125  l_SliderValue = l_SliderValue + "0";
126 
127  l_SliderValue = l_SliderValue + String(m_Hour);
128 
129  l_SliderValue = l_SliderValue + ":";
130 
131  // Ottengo 'mm'
132  // 'Elegant Adjustment' "Regolazione Elegante" della stringa in ritorno per l'ora formattata
133  // Aggiunge uno zero '0' inziale per compensare un eventuale mancanza di seconda cifra (per i valori minori di '_ElegantAdj' (i.e. '10'))
135  l_SliderValue = l_SliderValue + "0";
136 
137  l_SliderValue = l_SliderValue + String(m_Minute);
138  break;
139  }
140 
141  return l_SliderValue;
142  }
143  else
144  return String(m_Invalidator);
145 }
146 
147 // Implementazione del metodo 'set_SliderValue' della categoria 'setter'
148 bool Slider::set_SliderValue(const String& t_SliderValue, const TimePeriod& t_Period /* = Slider::TimePeriod::NOT_USED */)
149 {
150  if (m_isReady)
151  {
152  // Controlli preventivi sulla stringa
153  /*hh:mmperiod (facoltativo)*/
154  if (t_SliderValue.length() != Slider__file::_length_short && t_SliderValue.length() != Slider__file::_length_long)
155  return false;
156 
157  if (t_SliderValue[2] != Slider__file::_characteratpositiontwo)
158  return false;
159 
160  unsigned int l_Hour = ((String(t_SliderValue[0]).toInt() * 10) + String(t_SliderValue[1]).toInt());
161  unsigned int l_Minute = ((String(t_SliderValue[3]).toInt() * 10) + String(t_SliderValue[4]).toInt());
162 
163  switch (m_Format)
164  {
167  return false;
168  else
169  {
170  if (t_Period == TimePeriod::NOT_USED)
171  return false;
172 
173  if (l_Hour == Slider__file::_12HOURS_hourlimiter && t_Period == TimePeriod::PM)
174  return false;
175 
176  if (l_Hour == Slider__file::_initvalue && t_Period == TimePeriod::PM)
177  return false;
178 
179  m_Hour = l_Hour;
180  m_Minute = l_Minute;
181  m_Period = t_Period;
182 
183  return true;
184  }
185  break;
188  return false;
189  else
190  {
191  m_Hour = l_Hour;
192  m_Minute = l_Minute;
194 
195  return true;
196  }
197  break;
198  }
199  }
200  else
201  return false;
202 }
203 
204 // Implementazione del metodo 'inc_Hour' della categoria 'Metodi'
205 inline bool Slider::inc_Hour()
206 {
207  if (m_isReady)
208  {
209  switch (m_Format)
210  {
213  {
216  }
218  {
221  }
222  else
223  m_Hour++;
224  break;
228  else
229  m_Hour++;
230 
231  break;
232  }
233 
234  return true;
235  }
236  else
237  return false;
238 }
239 
240 // Implementazione del metodo 'inc_Minute' della categoria 'Metodi'
241 inline bool Slider::inc_Minute()
242 {
243  if (m_isReady)
244  {
247  else
248  m_Minute++;
249 
250  return true;
251  }
252  else
253  return false;
254 }
255 
256 // Implementazione del metodo 'changeFormat' della categoria 'Metodi'
257 bool Slider::ChangeFormat(const TimeFormat& t_Format)
258 {
259  if (m_isReady)
260  {
261  switch (t_Format)
262  {
265  return false;
266  else
267  {
268  // Proveniamo dal formato 24 ore
269  auto l_Supporter = m_Hour;
270 
271  if (l_Supporter > Slider__file::_Period)
272  {
274  m_Hour = l_Supporter - Slider__file::_Period;
275  }
276  else
277  {
279  m_Hour = l_Supporter;
280  }
281  m_Format = t_Format;
282 
283  return true;
284  break;
285  }
286 
289  return false;
290  else
291  {
292  // Proveniamo dal formato 12 ore
293  switch (m_Period)
294  {
296  break;
299  break;
300  }
301  }
302  m_Format = t_Format;
303 
305  return true;
306  break;
307 
309  return false;
310  break;
311  }
312  }
313  else
314  return false;
315 }
316 
317 // Implementazione del metodo 'get_Invalidator' della categoria 'getter -> Invalidator'
318 /*La specificazione 'inline' rappresenta una grossa ottimizzazione!!*/
319 inline const int& Slider::get_Invalidator()
320 {
321  // Ritorno il valore dell'attributo 'm_Invalidator'. Per evitare la copia durante la fase di ritorno, ritorno l'attributo
322  // originale [referenza --> reference '&']. L'attributo è già costante, questo evita modifiche non autorizzate.
323  return m_Invalidator;
324 }
325 
327 //////////////////////////////////////////////////////////////////////////
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::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::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::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::_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.h
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