Mercurial > public > ostc4
comparison Discovery/Src/tMenuEditCustom.c @ 506:998529b3e142
Added new top level menu for customization of views
In the previous versions all menus were occupied by menu option. To indroduce the selection views for data visualization a new tab had to be added.
The menu "Customize views" has been moded to the new tab but not yet removed from the previous one. In addition a view for selection of big font options has been added (including multilanguage strings and other infrastructure)
author | Ideenmodellierer |
---|---|
date | Sun, 30 Aug 2020 17:19:23 +0200 |
parents | |
children | 218ac999e96b |
comparison
equal
deleted
inserted
replaced
505:06b21f1e47a5 | 506:998529b3e142 |
---|---|
1 /////////////////////////////////////////////////////////////////////////////// | |
2 /// -*- coding: UTF-8 -*- | |
3 /// | |
4 /// \file Discovery/Src/tMenuEditXtra.c | |
5 /// \brief Menu Edit Xtra - Specials in Divemode like Reset Stopwatch | |
6 /// \author heinrichs weikamp gmbh | |
7 /// \date 02-Mar-2015 | |
8 /// | |
9 /// \details | |
10 /// | |
11 /// $Id$ | |
12 /////////////////////////////////////////////////////////////////////////////// | |
13 /// \par Copyright (c) 2014-2018 Heinrichs Weikamp gmbh | |
14 /// | |
15 /// This program is free software: you can redistribute it and/or modify | |
16 /// it under the terms of the GNU General Public License as published by | |
17 /// the Free Software Foundation, either version 3 of the License, or | |
18 /// (at your option) any later version. | |
19 /// | |
20 /// This program is distributed in the hope that it will be useful, | |
21 /// but WITHOUT ANY WARRANTY; without even the implied warranty of | |
22 /// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
23 /// GNU General Public License for more details. | |
24 /// | |
25 /// You should have received a copy of the GNU General Public License | |
26 /// along with this program. If not, see <http://www.gnu.org/licenses/>. | |
27 ////////////////////////////////////////////////////////////////////////////// | |
28 | |
29 /* Includes ------------------------------------------------------------------*/ | |
30 #include "tMenuEditCustom.h" | |
31 | |
32 #include "gfx_fonts.h" | |
33 #include "simulation.h" | |
34 #include "timer.h" | |
35 #include "tMenuEdit.h" | |
36 #include "tHome.h" // for enum CUSTOMVIEWS and init_t7_compass() | |
37 #include "t3.h" | |
38 #include "t7.h" | |
39 #include "data_exchange_main.h" | |
40 #include "motion.h" | |
41 | |
42 #define CV_PER_PAGE (5u) /* number of cv selections shown at one page */ | |
43 | |
44 static uint8_t customviewsSubpage = 0; | |
45 static uint8_t customviewsSubpageMax = 0; /* number of pages needed to display all selectable views */ | |
46 static const uint8_t* pcv_curchangelist; | |
47 /* Private function prototypes -----------------------------------------------*/ | |
48 void openEdit_Customview2(void); | |
49 void refresh_Customviews2(void); | |
50 /* Announced function prototypes -----------------------------------------------*/ | |
51 uint8_t OnAction_CViewTimeout (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); | |
52 uint8_t OnAction_CViewStandard (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); | |
53 uint8_t OnAction_CornerTimeout (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); | |
54 uint8_t OnAction_CornerStandard(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); | |
55 | |
56 | |
57 /* Exported functions --------------------------------------------------------*/ | |
58 | |
59 | |
60 | |
61 | |
62 void refresh_Customviews2(void) | |
63 { | |
64 char text[32]; | |
65 uint8_t textpointer = 0; | |
66 | |
67 // header | |
68 text[0] = '\001'; | |
69 text[1] = TXT_2BYTE; | |
70 text[2] = TXT2BYTE_Customviews; | |
71 text[3] = 0; | |
72 write_topline(text); | |
73 | |
74 // custom view center return | |
75 textpointer = 0; | |
76 text[textpointer++] = TXT_2BYTE; | |
77 text[textpointer++] = TXT2BYTE_CViewTimeout; | |
78 textpointer += snprintf(&text[textpointer],11," %02u\016\016 %c\017",settingsGetPointer()->tX_customViewTimeout,TXT_Seconds); | |
79 write_label_var( 30, 700, ME_Y_LINE1, &FontT48, text); | |
80 | |
81 // custom view center primary | |
82 text[0] = TXT_2BYTE; | |
83 text[1] = TXT2BYTE_CViewStandard; | |
84 text[2] = ' '; | |
85 text[3] = ' '; | |
86 switch(settingsGetPointer()->tX_customViewPrimary) | |
87 { | |
88 case CVIEW_sensors: | |
89 text[4] = TXT_2BYTE; | |
90 text[5] = TXT2BYTE_O2monitor; | |
91 break; | |
92 case CVIEW_sensors_mV: | |
93 text[4] = TXT_2BYTE; | |
94 text[5] = TXT2BYTE_O2voltage; | |
95 break; | |
96 case CVIEW_Compass: | |
97 text[4] = TXT_2BYTE; | |
98 text[5] = TXT2BYTE_Compass; | |
99 break; | |
100 case CVIEW_Decolist: | |
101 text[4] = TXT_2BYTE; | |
102 text[5] = TXT2BYTE_Decolist; | |
103 break; | |
104 case CVIEW_Tissues: | |
105 text[4] = TXT_2BYTE; | |
106 text[5] = TXT2BYTE_Tissues; | |
107 break; | |
108 case CVIEW_Profile: | |
109 text[4] = TXT_2BYTE; | |
110 text[5] = TXT2BYTE_Profile; | |
111 break; | |
112 case CVIEW_Gaslist: | |
113 text[4] = TXT_2BYTE; | |
114 text[5] = TXT2BYTE_Gaslist; | |
115 break; | |
116 case CVIEW_EADTime: | |
117 text[4] = TXT_2BYTE; | |
118 text[5] = TXT2BYTE_Info; | |
119 break; | |
120 case CVIEW_SummaryOfLeftCorner: | |
121 text[4] = TXT_2BYTE; | |
122 text[5] = TXT2BYTE_Summary; | |
123 break; | |
124 case CVIEW_noneOrDebug: | |
125 text[4] = ' '; | |
126 text[5] = '-'; | |
127 break; | |
128 default: | |
129 snprintf(&text[4],3,"%02u",settingsGetPointer()->tX_customViewPrimary); | |
130 break; | |
131 } | |
132 text[6] = 0; | |
133 write_label_var( 30, 700, ME_Y_LINE2, &FontT48, text); | |
134 | |
135 | |
136 // field corner return | |
137 textpointer = 0; | |
138 text[textpointer++] = TXT_2BYTE; | |
139 text[textpointer++] = TXT2BYTE_CornerTimeout; | |
140 textpointer += snprintf(&text[textpointer],11," %02u\016\016 %c\017",settingsGetPointer()->tX_userselectedLeftLowerCornerTimeout,TXT_Seconds); | |
141 write_label_var( 30, 700, ME_Y_LINE3, &FontT48, text); | |
142 | |
143 // field corner primary | |
144 text[0] = TXT_2BYTE; | |
145 text[1] = TXT2BYTE_CornerStandard; | |
146 text[2] = ' '; | |
147 text[3] = ' '; | |
148 switch(settingsGetPointer()->tX_userselectedLeftLowerCornerPrimary) | |
149 { | |
150 /* Temperature */ | |
151 case LLC_Temperature: | |
152 text[4] = TXT_Temperature; | |
153 break; | |
154 /* Average Depth */ | |
155 case LLC_AverageDepth: | |
156 text[4] = TXT_AvgDepth; | |
157 break; | |
158 /* ppO2 */ | |
159 case LLC_ppO2: | |
160 text[4] = TXT_ppO2; | |
161 break; | |
162 /* Stop Uhr */ | |
163 case LLC_Stopwatch: | |
164 text[4] = TXT_Stopwatch; | |
165 break; | |
166 /* Ceiling */ | |
167 case LLC_Ceiling: | |
168 text[4] = TXT_Ceiling; | |
169 break; | |
170 /* Future TTS */ | |
171 case LLC_FutureTTS: | |
172 text[4] = TXT_FutureTTS; | |
173 break; | |
174 /* CNS */ | |
175 case LLC_CNS: | |
176 text[4] = TXT_CNS; | |
177 break; | |
178 case LLC_GF: | |
179 text[4] = TXT_ActualGradient; | |
180 break; | |
181 #ifdef ENABLE_BOTTLE_SENSOR | |
182 case LCC_BottleBar: | |
183 text[4] = TXT_AtemGasVorrat; | |
184 break; | |
185 #endif | |
186 /* none */ | |
187 case LLC_Empty: | |
188 text[4] = '-'; | |
189 break; | |
190 default: | |
191 snprintf(&text[4],2,"%u",settingsGetPointer()->tX_userselectedLeftLowerCornerPrimary); | |
192 break; | |
193 } | |
194 text[5] = 0; | |
195 write_label_var( 30, 700, ME_Y_LINE4, &FontT48, text); | |
196 | |
197 | |
198 // extra display | |
199 text[0] = TXT_2BYTE; | |
200 text[1] = TXT2BYTE_ExtraDisplay; | |
201 text[2] = ' '; | |
202 text[3] = ' '; | |
203 text[4] = TXT_2BYTE; | |
204 switch(settingsGetPointer()->extraDisplay) | |
205 { | |
206 /* BigFont */ | |
207 case EXTRADISPLAY_BIGFONT: | |
208 text[5] = TXT2BYTE_ExtraBigFont; | |
209 break; | |
210 /* DecoGame */ | |
211 case EXTRADISPLAY_DECOGAME: | |
212 text[5] = TXT2BYTE_ExtraDecoGame; | |
213 break; | |
214 /* none */ | |
215 case EXTRADISPLAY_none: | |
216 text[5] = TXT2BYTE_ExtraNone; | |
217 break; | |
218 | |
219 default: | |
220 snprintf(&text[4],2,"%u",settingsGetPointer()->extraDisplay); | |
221 break; | |
222 } | |
223 text[6] = 0; | |
224 write_label_var( 30, 700, ME_Y_LINE5, &FontT48, text); | |
225 | |
226 /* MotionCtrl */ | |
227 text[0] = TXT_2BYTE; | |
228 text[1] = TXT2BYTE_MotionCtrl; | |
229 text[2] = ' '; | |
230 text[3] = ' '; | |
231 text[4] = TXT_2BYTE; | |
232 switch(settingsGetPointer()->MotionDetection) | |
233 { | |
234 case MOTION_DETECT_OFF: | |
235 text[5] = TXT2BYTE_MoCtrlNone; | |
236 break; | |
237 case MOTION_DETECT_MOVE: | |
238 text[5] = TXT2BYTE_MoCtrlPitch; | |
239 break; | |
240 case MOTION_DETECT_SECTOR: | |
241 text[5] = TXT2BYTE_MoCtrlSector; | |
242 break; | |
243 case MOTION_DETECT_SCROLL: | |
244 text[5] = TXT2BYTE_MoCtrlScroll; | |
245 break; | |
246 default: | |
247 snprintf(&text[4],2,"%u",settingsGetPointer()->MotionDetection); | |
248 break; | |
249 } | |
250 text[6] = 0; | |
251 write_label_var( 30, 700, ME_Y_LINE6, &FontT48, text); | |
252 | |
253 write_buttonTextline(TXT2BYTE_ButtonBack,TXT2BYTE_ButtonEnter,TXT2BYTE_ButtonNext); | |
254 } | |
255 | |
256 void openEdit_Custom(uint8_t line) | |
257 { | |
258 set_globalState_Menu_Line(line); | |
259 resetMenuEdit(CLUT_MenuPageCustomView); | |
260 | |
261 switch(line) | |
262 { | |
263 case 1: | |
264 default: | |
265 openEdit_Customview2(); | |
266 break; | |
267 case 2: | |
268 openEdit_CustomviewDivemode2(cv_changelist); | |
269 break; | |
270 case 3: | |
271 openEdit_CustomviewDivemode2(cv_changelist_BS); | |
272 break; | |
273 } | |
274 } | |
275 | |
276 /* Private functions ---------------------------------------------------------*/ | |
277 void openEdit_Customview2(void) | |
278 { | |
279 refresh_Customviews2(); | |
280 | |
281 write_field_button(StMCustom1_CViewTimeout, 400, 700, ME_Y_LINE1, &FontT48, ""); | |
282 write_field_button(StMCustom1_CViewStandard, 400, 700, ME_Y_LINE2, &FontT48, ""); | |
283 | |
284 write_field_button(StMCustom1_CornerTimeout, 400, 700, ME_Y_LINE3, &FontT48, ""); | |
285 write_field_button(StMCustom1_CornerStandard, 400, 700, ME_Y_LINE4, &FontT48, ""); | |
286 | |
287 // write_field_button(StMCustom1_ExtraDisplay, 400, 700, ME_Y_LINE5, &FontT48, ""); | |
288 // write_field_button(StMCustom1_MotionCtrl, 400, 700, ME_Y_LINE6, &FontT48, ""); | |
289 | |
290 setEvent(StMCustom1_CViewTimeout, (uint32_t)OnAction_CViewTimeout); | |
291 setEvent(StMCustom1_CViewStandard, (uint32_t)OnAction_CViewStandard); | |
292 | |
293 setEvent(StMCustom1_CornerTimeout, (uint32_t)OnAction_CornerTimeout); | |
294 setEvent(StMCustom1_CornerStandard, (uint32_t)OnAction_CornerStandard); | |
295 | |
296 // setEvent(StMCustom1_ExtraDisplay, (uint32_t)OnAction_ExtraDisplay); | |
297 // setEvent(StMCustom1_MotionCtrl, (uint32_t)OnAction_MotionCtrl); | |
298 } | |
299 | |
300 char customview_TXT2BYTE_helper2(uint8_t customViewId) | |
301 { | |
302 char text = 0; | |
303 | |
304 switch(customViewId) | |
305 { | |
306 case CVIEW_sensors: | |
307 text = TXT2BYTE_O2monitor; | |
308 break; | |
309 case CVIEW_sensors_mV: | |
310 text = TXT2BYTE_O2voltage; | |
311 break; | |
312 case CVIEW_Compass: | |
313 text = TXT2BYTE_Compass; | |
314 break; | |
315 case CVIEW_Decolist: | |
316 case CVIEW_T3_Decostop: | |
317 text = TXT2BYTE_Decolist; | |
318 break; | |
319 case CVIEW_Tissues: | |
320 text = TXT2BYTE_Tissues; | |
321 break; | |
322 case CVIEW_Profile: | |
323 text = TXT2BYTE_Profile; | |
324 break; | |
325 case CVIEW_Gaslist: | |
326 text = TXT2BYTE_Gaslist; | |
327 break; | |
328 case CVIEW_EADTime: | |
329 text = TXT2BYTE_Info; | |
330 break; | |
331 case CVIEW_SummaryOfLeftCorner: | |
332 text = TXT2BYTE_Summary; | |
333 break; | |
334 case CVIEW_noneOrDebug: | |
335 text = TXT2BYTE_DispNoneDbg; | |
336 break; | |
337 case CVIEW_T3_MaxDepth: | |
338 text = TXT2BYTE_MaxDepth; | |
339 break; | |
340 case CVIEW_T3_StopWatch: | |
341 text = TXT2BYTE_Stopwatch; | |
342 break; | |
343 case CVIEW_T3_TTS: | |
344 text = TXT2BYTE_TTS; | |
345 break; | |
346 case CVIEW_T3_ppO2andGas: | |
347 text = TXT2BYTE_ppoNair; | |
348 break; | |
349 case CVIEW_T3_Navigation: | |
350 text = TXT2BYTE_Navigation; | |
351 break; | |
352 case CVIEW_T3_DepthData: | |
353 text = TXT2BYTE_DepthData; | |
354 break; | |
355 default: | |
356 break; | |
357 } | |
358 return text; | |
359 } | |
360 | |
361 | |
362 uint8_t OnAction_CViewTimeout2(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | |
363 { | |
364 uint8_t value; | |
365 value = settingsGetPointer()->tX_customViewTimeout; | |
366 | |
367 if(value < 5) | |
368 value = 5; | |
369 else if(value < 10) | |
370 value = 10; | |
371 else if(value < 15) | |
372 value = 15; | |
373 else if(value < 20) | |
374 value = 20; | |
375 else if(value < 30) | |
376 value = 30; | |
377 else if(value < 45) | |
378 value = 45; | |
379 else if(value < 60) | |
380 value = 60; | |
381 else | |
382 value = 0; | |
383 | |
384 settingsGetPointer()->tX_customViewTimeout = value; | |
385 return UPDATE_DIVESETTINGS; | |
386 } | |
387 | |
388 | |
389 uint8_t OnAction_CViewStandard2(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | |
390 { | |
391 uint8_t newValue; | |
392 switch(settingsGetPointer()->tX_customViewPrimary) | |
393 { | |
394 case CVIEW_sensors: | |
395 newValue = CVIEW_sensors_mV; | |
396 break; | |
397 case CVIEW_sensors_mV: | |
398 newValue = CVIEW_Compass; | |
399 break; | |
400 case CVIEW_Compass: | |
401 newValue = CVIEW_Decolist; | |
402 break; | |
403 case CVIEW_Decolist: | |
404 newValue = CVIEW_Tissues; | |
405 break; | |
406 case CVIEW_Tissues: | |
407 newValue = CVIEW_Profile; | |
408 break; | |
409 case CVIEW_Profile: | |
410 newValue = CVIEW_Gaslist; | |
411 break; | |
412 case CVIEW_Gaslist: | |
413 newValue = CVIEW_EADTime; | |
414 break; | |
415 case CVIEW_EADTime: | |
416 newValue = CVIEW_SummaryOfLeftCorner; | |
417 break; | |
418 case CVIEW_SummaryOfLeftCorner: | |
419 newValue = CVIEW_noneOrDebug; | |
420 break; | |
421 case CVIEW_noneOrDebug: | |
422 default: | |
423 newValue = CVIEW_sensors; | |
424 break; | |
425 } | |
426 settingsGetPointer()->tX_customViewPrimary = newValue; | |
427 return UPDATE_DIVESETTINGS; | |
428 } | |
429 | |
430 | |
431 uint8_t OnAction_CornerTimeout2(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | |
432 { | |
433 uint8_t value; | |
434 value = settingsGetPointer()->tX_userselectedLeftLowerCornerTimeout; | |
435 | |
436 if(value < 5) | |
437 value = 5; | |
438 else if(value < 10) | |
439 value = 10; | |
440 else if(value < 15) | |
441 value = 15; | |
442 else if(value < 20) | |
443 value = 20; | |
444 else if(value < 30) | |
445 value = 30; | |
446 else if(value < 45) | |
447 value = 45; | |
448 else if(value < 60) | |
449 value = 60; | |
450 else | |
451 value = 0; | |
452 | |
453 settingsGetPointer()->tX_userselectedLeftLowerCornerTimeout = value; | |
454 return UPDATE_DIVESETTINGS; | |
455 } | |
456 | |
457 | |
458 uint8_t OnAction_CornerStandard2(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | |
459 { | |
460 uint8_t value; | |
461 value = settingsGetPointer()->tX_userselectedLeftLowerCornerPrimary; | |
462 | |
463 value += 1; | |
464 | |
465 if(value >= LLC_END) | |
466 value = 0; | |
467 | |
468 settingsGetPointer()->tX_userselectedLeftLowerCornerPrimary = value; | |
469 return UPDATE_DIVESETTINGS; | |
470 } | |
471 | |
472 | |
473 uint8_t OnAction_Customview_Toggle(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | |
474 { | |
475 | |
476 uint8_t line = 0; | |
477 SSettings *pSettings = settingsGetPointer(); | |
478 | |
479 switch(editId) | |
480 { | |
481 case StMCustom2_CViewSelection1: line = 1; | |
482 break; | |
483 case StMCustom2_CViewSelection2: line = 2; | |
484 break; | |
485 case StMCustom2_CViewSelection3: line = 3; | |
486 break; | |
487 case StMCustom2_CViewSelection4: line = 4; | |
488 break; | |
489 case StMCustom2_CViewSelection5: line = 5; | |
490 break; | |
491 | |
492 default: | |
493 break; | |
494 } | |
495 if(pcv_curchangelist == cv_changelist) | |
496 { | |
497 pSettings->cv_configuration ^= 1 << (pcv_curchangelist[customviewsSubpage * 5 + line-1]); | |
498 if(t7_GetEnabled_customviews() == 0) | |
499 { | |
500 pSettings->cv_configuration ^= (1 << CVIEW_noneOrDebug); | |
501 } | |
502 } | |
503 else | |
504 { | |
505 pSettings->cv_config_BigScreen ^= 1 << (pcv_curchangelist[customviewsSubpage * 5 + line-1]); | |
506 if(t3_GetEnabled_customviews() == 0) | |
507 { | |
508 pSettings->cv_config_BigScreen ^= (1 << CVIEW_noneOrDebug); | |
509 } | |
510 } | |
511 return UPDATE_DIVESETTINGS; | |
512 } | |
513 | |
514 | |
515 uint8_t OnAction_Customview_NextPage(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | |
516 { | |
517 uint8_t id_next = 0; | |
518 customviewsSubpage++; | |
519 if(customviewsSubpage == customviewsSubpageMax) | |
520 { | |
521 customviewsSubpage = 0; | |
522 } | |
523 resetMenuEdit(CLUT_MenuPageCustomView); /* rebuild page */ | |
524 openEdit_CustomviewDivemode2(pcv_curchangelist); | |
525 | |
526 tMenuEdit_select(StMCustom2_CViewSelection6); | |
527 return UPDATE_DIVESETTINGS; | |
528 } | |
529 | |
530 void openEdit_CustomviewDivemode2(const uint8_t* pcv_changelist) | |
531 { | |
532 | |
533 SSettings *pSettings = settingsGetPointer(); | |
534 char text[MAX_PAGE_TEXTSIZE]; | |
535 uint8_t textPointer = 0; | |
536 uint32_t id; | |
537 | |
538 uint8_t i; | |
539 | |
540 customviewsSubpageMax = (tHome_getNumberOfAvailableCVs(pcv_changelist) / CV_PER_PAGE) + 1; | |
541 pcv_curchangelist = pcv_changelist; | |
542 | |
543 CustomviewDivemode2_refresh(pcv_changelist); | |
544 | |
545 | |
546 text[0] = '\001'; | |
547 text[1] = TXT_2BYTE; | |
548 text[2] = TXT2BYTE_SelectCustomviews; | |
549 text[3] = 0; | |
550 write_topline(text); | |
551 | |
552 for(i=0; i<5;i++) /* fill maximum 5 items and leave last one for sub page selection */ | |
553 { | |
554 textPointer = 0; | |
555 id = pcv_changelist[customviewsSubpage * 5 + i]; | |
556 if((id == CVIEW_END) || (id == CVIEW_T3_END)) /* last list item? */ | |
557 { | |
558 break; | |
559 } | |
560 else | |
561 { | |
562 if(pcv_changelist == cv_changelist) | |
563 { | |
564 text[textPointer++] = '\006' - CHECK_BIT_THOME(pSettings->cv_configuration,id); | |
565 } | |
566 else | |
567 { | |
568 text[textPointer++] = '\006' - CHECK_BIT_THOME(pSettings->cv_config_BigScreen,id); | |
569 } | |
570 text[textPointer++] = ' '; | |
571 textPointer += snprintf(&text[textPointer], 60, "%c%c\n\r", TXT_2BYTE, customview_TXT2BYTE_helper2(id)); | |
572 | |
573 switch(i) | |
574 { | |
575 case 0: write_field_button(StMCustom2_CViewSelection1, 30, 800, ME_Y_LINE1, &FontT48, ""); | |
576 break; | |
577 case 1: write_field_button(StMCustom2_CViewSelection2, 30, 800, ME_Y_LINE2, &FontT48, ""); | |
578 break; | |
579 case 2: write_field_button(StMCustom2_CViewSelection3, 30, 800, ME_Y_LINE3, &FontT48, ""); | |
580 break; | |
581 case 3: write_field_button(StMCustom2_CViewSelection4, 30, 800, ME_Y_LINE4, &FontT48, ""); | |
582 break; | |
583 case 4: write_field_button(StMCustom2_CViewSelection5, 30, 800, ME_Y_LINE5, &FontT48, ""); | |
584 break; | |
585 default: | |
586 break; | |
587 } | |
588 } | |
589 } | |
590 // setEvent(StMCustom2_CViewSelection1, (uint32_t)OnAction_Customview_Toggle); | |
591 | |
592 | |
593 if(customviewsSubpageMax != 1) | |
594 { | |
595 textPointer = 0; | |
596 text[textPointer++] = TXT_2BYTE; | |
597 text[textPointer++] = TXT2BYTE_ButtonNext; | |
598 text[textPointer] = 0; | |
599 write_field_button(StMCustom2_CViewSelection6, 30, 800, ME_Y_LINE6, &FontT48, text); | |
600 } | |
601 | |
602 /* because of the ID handling inside of the functions, all buttons needs to be assigned before the events may be set => have the same loop twice */ | |
603 for(i=0; i<5;i++) /* fill maximum 5 items and leave last one for sub page selection */ | |
604 { | |
605 id = pcv_changelist[customviewsSubpage * 5 + i]; | |
606 if((id == CVIEW_END) || (id == CVIEW_T3_END)) /* last list item? */ | |
607 { | |
608 break; | |
609 } | |
610 else | |
611 { | |
612 switch(i) | |
613 { | |
614 case 0: setEvent(StMCustom2_CViewSelection1, (uint32_t)OnAction_Customview_Toggle); | |
615 break; | |
616 case 1: setEvent(StMCustom2_CViewSelection2, (uint32_t)OnAction_Customview_Toggle); | |
617 break; | |
618 case 2: setEvent(StMCustom2_CViewSelection3, (uint32_t)OnAction_Customview_Toggle); | |
619 break; | |
620 case 3: setEvent(StMCustom2_CViewSelection4, (uint32_t)OnAction_Customview_Toggle); | |
621 break; | |
622 case 4: setEvent(StMCustom2_CViewSelection5, (uint32_t)OnAction_Customview_Toggle); | |
623 break; | |
624 | |
625 default: | |
626 break; | |
627 } | |
628 | |
629 } | |
630 } | |
631 if(customviewsSubpageMax != 1) | |
632 { | |
633 setEvent(StMCustom2_CViewSelection6,(uint32_t)OnAction_Customview_NextPage); | |
634 } | |
635 for(;i<5;i++) /* clear empty lines in case menu shows less than 5 entries */ | |
636 { | |
637 switch(i) | |
638 { | |
639 case 0: write_label_var( 30, 800, ME_Y_LINE1, &FontT48, ""); | |
640 break; | |
641 case 1: write_label_var( 30, 800, ME_Y_LINE2, &FontT48, ""); | |
642 break; | |
643 case 2: write_label_var( 30, 800, ME_Y_LINE3, &FontT48, ""); | |
644 break; | |
645 case 3: write_label_var( 30, 800, ME_Y_LINE4, &FontT48, ""); | |
646 break; | |
647 case 4: write_label_var( 30, 800, ME_Y_LINE5, &FontT48, ""); | |
648 break; | |
649 default: | |
650 break; | |
651 }; | |
652 } | |
653 | |
654 | |
655 write_buttonTextline(TXT2BYTE_ButtonBack,TXT2BYTE_ButtonEnter,TXT2BYTE_ButtonNext); | |
656 } | |
657 | |
658 | |
659 void CustomviewDivemode2_refresh() | |
660 { | |
661 SSettings *pSettings = settingsGetPointer(); | |
662 char text[MAX_PAGE_TEXTSIZE]; | |
663 uint8_t textPointer = 0; | |
664 uint32_t id; | |
665 | |
666 uint8_t i; | |
667 | |
668 text[0] = '\001'; | |
669 text[1] = TXT_2BYTE; | |
670 text[2] = TXT2BYTE_SelectCustomviews; | |
671 text[3] = 0; | |
672 write_topline(text); | |
673 | |
674 | |
675 for(i=0; i<5;i++) /* fill maximum 5 items and leave last one for sub page selection */ | |
676 { | |
677 textPointer = 0; | |
678 id = pcv_curchangelist[customviewsSubpage * 5 + i]; | |
679 if((id == CVIEW_END) || (id == CVIEW_T3_END)) /* last list item? */ | |
680 { | |
681 break; | |
682 } | |
683 else | |
684 { | |
685 if(pcv_curchangelist == cv_changelist) | |
686 { | |
687 text[textPointer++] = '\006' - CHECK_BIT_THOME(pSettings->cv_configuration,id); | |
688 } | |
689 else | |
690 { | |
691 text[textPointer++] = '\006' - CHECK_BIT_THOME(pSettings->cv_config_BigScreen,id); | |
692 } | |
693 text[textPointer++] = ' '; | |
694 textPointer += snprintf(&text[textPointer], 60, "%c%c\n\r", TXT_2BYTE, customview_TXT2BYTE_helper2(id)); | |
695 | |
696 switch(i) | |
697 { | |
698 case 0: write_label_var( 30, 800, ME_Y_LINE1, &FontT48, text); | |
699 break; | |
700 case 1: write_label_var( 30, 800, ME_Y_LINE2, &FontT48, text); | |
701 break; | |
702 case 2: write_label_var( 30, 800, ME_Y_LINE3, &FontT48, text); | |
703 break; | |
704 case 3: write_label_var( 30, 800, ME_Y_LINE4, &FontT48, text); | |
705 break; | |
706 case 4: write_label_var( 30, 800, ME_Y_LINE5, &FontT48, text); | |
707 break; | |
708 default: | |
709 break; | |
710 } | |
711 } | |
712 } | |
713 if(customviewsSubpageMax != 1) | |
714 { | |
715 textPointer = 0; | |
716 text[textPointer++] = TXT_2BYTE; | |
717 text[textPointer++] = TXT2BYTE_ButtonNext; | |
718 text[textPointer] = 0; | |
719 write_label_var( 30, 800, ME_Y_LINE6, &FontT48, text); | |
720 } | |
721 } |