diff options
author | Zakk Roberts <midk@rockbox.org> | 2004-08-05 11:14:22 +0000 |
---|---|---|
committer | Zakk Roberts <midk@rockbox.org> | 2004-08-05 11:14:22 +0000 |
commit | 3a77069878b7aac2be134db6f45f5a395f4c6e84 (patch) | |
tree | 85af311896dbf428615b9d7ba999d352fb5da410 | |
parent | 35b6dc3ea75880df9b5cd51017aa6ad58ab10829 (diff) | |
download | rockbox-3a77069878b7aac2be134db6f45f5a395f4c6e84.tar.gz rockbox-3a77069878b7aac2be134db6f45f5a395f4c6e84.zip |
New checkboxes introduced for improved, reworked options screen - new option at General settings: Save (when) - faster boot - cleaned up a bit more, removed redundant code
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@4987 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r-- | apps/plugins/clock.c | 651 |
1 files changed, 407 insertions, 244 deletions
diff --git a/apps/plugins/clock.c b/apps/plugins/clock.c index 612f283e33..227295b6cc 100644 --- a/apps/plugins/clock.c +++ b/apps/plugins/clock.c | |||
@@ -19,6 +19,11 @@ | |||
19 | 19 | ||
20 | /***************************** | 20 | /***************************** |
21 | * RELEASE NOTES | 21 | * RELEASE NOTES |
22 | |||
23 | ***** VERSION 2.50 ** | ||
24 | -New general settings mode added, -reworked options screen, | ||
25 | -cleaned up a few things and removed redundant code, -faster | ||
26 | load_settings(), fixed a help-screen bug (thanks to zeekoe) | ||
22 | 27 | ||
23 | ***** VERSION 2.40 ** | 28 | ***** VERSION 2.40 ** |
24 | -Cleaned and optimized code, -removed unused code and bitmaps, | 29 | -Cleaned and optimized code, -removed unused code and bitmaps, |
@@ -68,17 +73,18 @@ Original release, featuring analog / digital modes and a few options. | |||
68 | 73 | ||
69 | #ifdef HAVE_LCD_BITMAP | 74 | #ifdef HAVE_LCD_BITMAP |
70 | 75 | ||
71 | #define CLOCK_VERSION "2.40" | 76 | #define CLOCK_VERSION "2.50" |
72 | 77 | ||
73 | /* prototypes */ | 78 | /************ |
79 | * Prototypes | ||
80 | ***********/ | ||
74 | void show_logo(bool animate, bool show_clock_text); | 81 | void show_logo(bool animate, bool show_clock_text); |
75 | void exit_logo(void); | 82 | void exit_logo(void); |
76 | void save_settings(void); | 83 | void save_settings(bool interface); |
77 | 84 | ||
78 | /* used in help screen */ | 85 | /******************** |
79 | int screen = 1; | 86 | * Misc counter stuff |
80 | 87 | *******************/ | |
81 | /* counter misc */ | ||
82 | int start_tick = 0; | 88 | int start_tick = 0; |
83 | int passed_time = 0; | 89 | int passed_time = 0; |
84 | int counter = 0; | 90 | int counter = 0; |
@@ -92,43 +98,55 @@ int remaining_h=0, remaining_m=0, remaining_s=0; | |||
92 | bool editing_target = false; | 98 | bool editing_target = false; |
93 | bool display_counter = true; | 99 | bool display_counter = true; |
94 | 100 | ||
95 | /* used for centering of text all over */ | 101 | /********************* |
102 | * Used to center text | ||
103 | ********************/ | ||
96 | char buf[20]; | 104 | char buf[20]; |
97 | int buf_w, buf_h; | 105 | int buf_w, buf_h; |
98 | 106 | ||
107 | /* This bool is used for most of the while loops */ | ||
108 | bool done = false; | ||
109 | |||
99 | static struct plugin_api* rb; | 110 | static struct plugin_api* rb; |
100 | 111 | ||
101 | /*********************************************************** | 112 | /*********************************************************** |
102 | * Used for hands to define lengths at a given time - ANALOG | 113 | * Used for hands to define lengths at a given time - ANALOG |
103 | **********************************************************/ | 114 | **********************************************************/ |
104 | static unsigned char xminute[] = { | 115 | static const unsigned char xminute[] = { |
105 | 56,59,61,64,67,70,72,75,77,79,80,82,83,84,84,84,84,84,83,82,80,79,77,75,72,70,67,64,61,59,56,53,51,48,45,42,40,37,35,33,32,30,29,28,28,28,28,28,29,30,32,33,35,37,40,42,45,48,51,53, | 116 | 56,59,61,64,67,70,72,75,77,79,80,82,83,84,84,84,84,84,83,82,80,79,77,75,72,70, |
106 | }; | 117 | 67,64,61,59,56,53,51,48,45,42,40,37,35,33,32,30,29,28,28,28,28,28,29,30,32,33, |
107 | static unsigned char yminute[] = { | 118 | 35,37,40,42,45,48,51,53 }; |
108 | 55,54,54,53,53,51,50,49,47,45,43,41,39,36,34,32,30,28,25,23,21,19,17,15,14,13,11,11,10,10,9,10,10,11,11,13,14,15,17,19,21,23,25,28,30,32,34,36,39,41,43,45,47,49,50,51,53,53,54,54, | 119 | static const unsigned char yminute[] = { |
109 | }; | 120 | 55,54,54,53,53,51,50,49,47,45,43,41,39,36,34,32,30,28,25,23,21,19,17,15,14,13, |
110 | static unsigned char yhour[] = { | 121 | 11,11,10,10, 9,10,10,11,11,13,14,15,17,19,21,23,25,28,30,32,34,36,39,41,43,45, |
111 | 47,47,46,46,46,45,44,43,42,41,39,38,36,35,33,32,31,29,28,26,25,23,22,21,20,19,18,18,18,17,17,17,18,18,18,19,20,21,22,23,25,26,28,29,31,32,33,35,36,38,39,41,42,43,44,45,46,46,46,47, | 122 | 47,49,50,51,53,53,54,54 }; |
112 | }; | 123 | static const unsigned char yhour[] = { |
113 | static unsigned char xhour[] = { | 124 | 47,47,46,46,46,45,44,43,42,41,39,38,36,35,33,32,31,29,28,26,25,23,22,21,20,19, |
114 | 56,58,59,61,63,65,67,68,70,71,72,73,74,74,75,75,75,74,74,73,72,71,70,68,67,65,63,61,59,58,56,54,53,51,49,47,45,44,42,41,40,39,38,38,37,37,37,38,38,39,40,41,42,44,45,47,49,51,53,54, | 125 | 18,18,18,17,17,17,18,18,18,19,20,21,22,23,25,26,28,29,31,32,33,35,36,38,39,41, |
115 | }; | 126 | 42,43,44,45,46,46,46,47 }; |
127 | static const unsigned char xhour[] = { | ||
128 | 56,58,59,61,63,65,67,68,70,71,72,73,74,74,75,75,75,74,74,73,72,71,70,68,67,65, | ||
129 | 63,61,59,58,56,54,53,51,49,47,45,44,42,41,40,39,38,38,37,37,37,38,38,39,40,41, | ||
130 | 42,44,45,47,49,51,53,54 }; | ||
116 | 131 | ||
117 | /************************************************************** | 132 | /************************************************************** |
118 | * Used for hands to define lengths at a give time - FULLSCREEN | 133 | * Used for hands to define lengths at a give time - FULLSCREEN |
119 | *************************************************************/ | 134 | *************************************************************/ |
120 | static unsigned char xminute_full[] = { | 135 | static const unsigned char xminute_full[] = { |
121 | 56,58,61,65,69,74,79,84,91,100,110,110,110,110,110,110,110,110,110,110,110,100,91,84,79,74,69,65,61,58,56,54,51,47,43,38,33,28,21,12,1,1,1,1,1,1,1,1,1,1,1,12,21,28,33,38,43,47,51,54 | 136 | 56,58,61,65,69,74,79,84,91,100,110,110,110,110,110,110,110,110,110,110,110,100, |
122 | }; | 137 | 91,84,79,74,69,65,61,58,56,54,51,47,43,38,33,28,21,12,1,1,1,1,1,1,1,1,1,1,1,12, |
123 | static unsigned char yminute_full[] = { | 138 | 21,28,33,38,43,47,51,54 }; |
124 | 62,62,62,62,62,62,62,62,62,62,62,53,45,40,36,32,28,24,19,11,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,11,19,24,28,32,36,40,45,53,62,62,62,62,62,62,62,62,62,62 | 139 | static const unsigned char yminute_full[] = { |
125 | }; | 140 | 62,62,62,62,62,62,62,62,62,62,62,53,45,40,36,32,28,24,19,11,1,1,1,1,1,1,1,1,1,1, |
126 | static unsigned char xhour_full[] = { | 141 | 1,1,1,1,1,1,1,1,1,1,1,11,19,24,28,32,36,40,45,53,62,62,62,62,62,62,62,62,62,62 }; |
127 | 56,58,60,63,66,69,73,78,84,91,100,100,100,100,100,100,100,100,100,100,100,91,84,78,73,69,66,63,60,58,56,54,52,49,46,43,39,34,28,21,12,12,12,12,12,12,12,12,12,12,12,21,28,34,39,43,46,49,52,54 | 142 | static const unsigned char xhour_full[] = { |
128 | }; | 143 | 56,58,60,63,66,69,73,78,84,91,100,100,100,100,100,100,100,100,100,100,100,91,84, |
129 | static unsigned char yhour_full[] = { | 144 | 78,73,69,66,63,60,58,56,54,52,49,46,43,39,34,28,21,12,12,12,12,12,12,12,12,12, |
130 | 52,52,52,52,52,52,52,52,52,52,52,46,41,37,34,32,30,27,23,18,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,18,23,27,30,32,34,37,41,46,52,52,52,52,52,52,52,52,52,52 | 145 | 12,12,21,28,34,39,43,46,49,52,54 }; |
131 | }; | 146 | static const unsigned char yhour_full[] = { |
147 | 52,52,52,52,52,52,52,52,52,52,52,46,41,37,34,32,30,27,23,18,12,12,12,12,12,12, | ||
148 | 12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,18,23,27,30,32,34,37,41,46,52,52, | ||
149 | 52,52,52,52,52,52,52,52 }; | ||
132 | 150 | ||
133 | /**************************** | 151 | /**************************** |
134 | * BITMAPS | 152 | * BITMAPS |
@@ -136,35 +154,62 @@ static unsigned char yhour_full[] = { | |||
136 | /************************* | 154 | /************************* |
137 | * "0" bitmap - for binary | 155 | * "0" bitmap - for binary |
138 | ************************/ | 156 | ************************/ |
139 | static unsigned char bitmap_0[] = { | 157 | static const unsigned char bitmap_0[] = { |
140 | 0xc0, 0xf0, 0x3c, 0x0e, 0x06, 0x03, 0x03, 0x03, 0x03, 0x06, 0x0e, 0x3c, 0xf0, | 158 | 0xc0, 0xf0, 0x3c, 0x0e, 0x06, 0x03, 0x03, 0x03, 0x03, 0x06, 0x0e, 0x3c, 0xf0, |
141 | 0xc0, 0x00, | 159 | 0xc0, 0x00, 0x1f, 0x7f, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, |
142 | 0x1f, 0x7f, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe0, 0x7f, | 160 | 0xe0, 0x7f, 0x1f, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x06, 0x06, 0x06, 0x06, |
143 | 0x1f, 0x00, | 161 | 0x03, 0x03, 0x01, 0x00, 0x00, 0x00 }; |
144 | 0x00, 0x00, 0x01, 0x03, 0x03, 0x06, 0x06, 0x06, 0x06, 0x03, 0x03, 0x01, 0x00, | ||
145 | 0x00, 0x00 }; | ||
146 | /************************* | 162 | /************************* |
147 | * "1" bitmap - for binary | 163 | * "1" bitmap - for binary |
148 | ************************/ | 164 | ************************/ |
149 | static unsigned char bitmap_1[] = { | 165 | static const unsigned char bitmap_1[] = { |
150 | 0xe0, 0x70, 0x38, 0x1c, 0x0e, 0x07, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, | 166 | 0xe0, 0x70, 0x38, 0x1c, 0x0e, 0x07, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, |
151 | 0x00, 0x00, | 167 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, |
152 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, | 168 | 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x07, 0x07, 0x06, |
153 | 0x00, 0x00, | 169 | 0x06, 0x06, 0x06, 0x06, 0x06, 0x00 }; |
154 | 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x07, 0x07, 0x06, 0x06, 0x06, 0x06, 0x06, | 170 | |
155 | 0x06, 0x00 }; | 171 | /************** |
156 | /**************************** | 172 | * PM indicator |
157 | * PM indicator (moon + text) | 173 | *************/ |
158 | ***************************/ | 174 | static const unsigned char pm[] = { |
159 | static unsigned char pm[] = { 0xFF,0xFF,0x33,0x33,0x33,0x1E,0x0C,0x00,0xFF,0xFF,0x06,0x0C,0x06,0xFF,0xFF }; | 175 | 0xFF,0xFF,0x33,0x33,0x33,0x1E,0x0C,0x00,0xFF,0xFF,0x06,0x0C,0x06,0xFF,0xFF }; |
160 | /**************************** | 176 | /************** |
161 | * AM Indicator (sun and text | 177 | * AM Indicator |
162 | ***************************/ | 178 | *************/ |
163 | static unsigned char am[] = { 0xFE,0xFF,0x1B,0x1B,0xFF,0xFE,0x00,0x00,0xFF,0xFF,0x06,0x0C,0x06,0xFF,0xFF }; | 179 | static const unsigned char am[] = { |
180 | 0xFE,0xFF,0x1B,0x1B,0xFF,0xFE,0x00,0x00,0xFF,0xFF,0x06,0x0C,0x06,0xFF,0xFF }; | ||
181 | |||
164 | /************** | 182 | /************** |
165 | * Arrow bitmap | 183 | * Arrow bitmap |
166 | *************/ | 184 | *************/ |
167 | static unsigned char arrow[] = { 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x3F, 0x1E, 0x0C }; | 185 | static const unsigned char arrow[] = { |
186 | 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x3F, 0x1E, 0x0C }; | ||
187 | |||
188 | /*************************** | ||
189 | * Unchecked checkbox bitmap | ||
190 | **************************/ | ||
191 | const unsigned char checkbox_empty[] = { | ||
192 | 0x3F, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x3F }; | ||
193 | /***************************** | ||
194 | * 1/3 checked checkbox bitmap | ||
195 | ****************************/ | ||
196 | const unsigned char checkbox_onethird[] = { | ||
197 | 0x3F, 0x2B, 0x35, 0x21, 0x21, 0x21, 0x21, 0x3F }; | ||
198 | /***************************** | ||
199 | * 1/2 checked checkbox bitmap | ||
200 | ****************************/ | ||
201 | const unsigned char checkbox_half[] = { | ||
202 | 0x3F, 0x2B, 0x35, 0x2B, 0x21, 0x21, 0x21, 0x3F }; | ||
203 | /***************************** | ||
204 | * 2/3 checked checkbox bitmap | ||
205 | ****************************/ | ||
206 | const unsigned char checkbox_twothird[] = { | ||
207 | 0x3F, 0x2B, 0x35, 0x2B, 0x35, 0x21, 0x21, 0x3F }; | ||
208 | /************************* | ||
209 | * Checked checkbox bitmap | ||
210 | ************************/ | ||
211 | const unsigned char checkbox_full[] = { | ||
212 | 0x3F, 0x2B, 0x35, 0x2B, 0x35, 0x2B, 0x35, 0x3F }; | ||
168 | 213 | ||
169 | /************************************ | 214 | /************************************ |
170 | * "Clockbox" clock logo - by Adam S. | 215 | * "Clockbox" clock logo - by Adam S. |
@@ -219,7 +264,7 @@ const unsigned char clocklogo[] = { | |||
219 | /****************** | 264 | /****************** |
220 | * Time's Up bitmap | 265 | * Time's Up bitmap |
221 | *****************/ | 266 | *****************/ |
222 | const unsigned char timesup[] = { | 267 | const const unsigned char timesup[] = { |
223 | 0x78, 0x78, 0x78, 0x38, 0x08, 0x08, 0xf8, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0x04, | 268 | 0x78, 0x78, 0x78, 0x38, 0x08, 0x08, 0xf8, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0x04, |
224 | 0x04, 0x04, 0x0c, 0x3c, 0x3c, 0x3c, 0x04, 0x04, 0x04, 0xfc, 0xfc, 0xfc, 0xfc, | 269 | 0x04, 0x04, 0x0c, 0x3c, 0x3c, 0x3c, 0x04, 0x04, 0x04, 0xfc, 0xfc, 0xfc, 0xfc, |
225 | 0xfe, 0xfe, 0x06, 0x03, 0x03, 0x05, 0x05, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, | 270 | 0xfe, 0xfe, 0x06, 0x03, 0x03, 0x05, 0x05, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, |
@@ -285,10 +330,10 @@ const unsigned char timesup[] = { | |||
285 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; | 330 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; |
286 | 331 | ||
287 | /* settings saved to this location */ | 332 | /* settings saved to this location */ |
288 | static char default_filename[] = "/.rockbox/rocks/.clock_settings"; | 333 | static const char default_filename[] = "/.rockbox/rocks/.clock_settings"; |
289 | 334 | ||
290 | /* names of contributors */ | 335 | /* names of contributors */ |
291 | char* credits[] = { | 336 | const char* credits[] = { |
292 | "Zakk Roberts", | 337 | "Zakk Roberts", |
293 | "Linus N. Feltzing", | 338 | "Linus N. Feltzing", |
294 | "BlueChip", | 339 | "BlueChip", |
@@ -304,7 +349,7 @@ char* credits[] = { | |||
304 | }; | 349 | }; |
305 | 350 | ||
306 | /* ...and how they helped */ | 351 | /* ...and how they helped */ |
307 | char* jobs[] = { | 352 | const char* jobs[] = { |
308 | "Code", | 353 | "Code", |
309 | "Code", | 354 | "Code", |
310 | "Code", | 355 | "Code", |
@@ -319,8 +364,6 @@ char* jobs[] = { | |||
319 | "Design" | 364 | "Design" |
320 | }; | 365 | }; |
321 | 366 | ||
322 | bool done = false; /* This bool is used for most of the while loops */ | ||
323 | |||
324 | /*********************************** | 367 | /*********************************** |
325 | * This is saved to default_filename | 368 | * This is saved to default_filename |
326 | **********************************/ | 369 | **********************************/ |
@@ -329,6 +372,7 @@ struct saved_settings | |||
329 | /* general */ | 372 | /* general */ |
330 | int clock; /* 1: analog, 2: digital led, 3: digital lcd, 4: full, 5: binary */ | 373 | int clock; /* 1: analog, 2: digital led, 3: digital lcd, 4: full, 5: binary */ |
331 | bool backlight_on; | 374 | bool backlight_on; |
375 | int save_mode; /* 1: on exit, 2: automatically, 3: manually */ | ||
332 | 376 | ||
333 | /* analog */ | 377 | /* analog */ |
334 | bool analog_digits; | 378 | bool analog_digits; |
@@ -362,6 +406,7 @@ void reset_settings(void) | |||
362 | /* general */ | 406 | /* general */ |
363 | settings.clock = 1; /* 1: analog, 2: digital led, 3: digital lcd, 4: full, 5: binary */ | 407 | settings.clock = 1; /* 1: analog, 2: digital led, 3: digital lcd, 4: full, 5: binary */ |
364 | settings.backlight_on = true; | 408 | settings.backlight_on = true; |
409 | settings.save_mode = 1; /* 1: on exit, 2: automatically, 3: manually */ | ||
365 | 410 | ||
366 | /* analog */ | 411 | /* analog */ |
367 | settings.analog_digits = false; | 412 | settings.analog_digits = false; |
@@ -390,19 +435,22 @@ void reset_settings(void) | |||
390 | /******************************** | 435 | /******************************** |
391 | * Saves "saved_settings" to disk | 436 | * Saves "saved_settings" to disk |
392 | *******************************/ | 437 | *******************************/ |
393 | void save_settings(void) | 438 | void save_settings(bool interface) |
394 | { | 439 | { |
395 | int fd; | 440 | int fd; |
396 | 441 | ||
397 | rb->lcd_clear_display(); | 442 | if(interface) |
443 | { | ||
444 | rb->lcd_clear_display(); | ||
398 | 445 | ||
399 | /* display information */ | 446 | /* display information */ |
400 | rb->snprintf(buf, sizeof(buf), "Saving Settings"); | 447 | rb->snprintf(buf, sizeof(buf), "Saving Settings"); |
401 | rb->lcd_getstringsize(buf, &buf_w, &buf_h); | 448 | rb->lcd_getstringsize(buf, &buf_w, &buf_h); |
402 | rb->lcd_putsxy(LCD_WIDTH/2-buf_w/2, 56, buf); | 449 | rb->lcd_putsxy(LCD_WIDTH/2-buf_w/2, 56, buf); |
403 | show_logo(true, true); | 450 | show_logo(true, true); |
404 | 451 | ||
405 | rb->lcd_update(); | 452 | rb->lcd_update(); |
453 | } | ||
406 | 454 | ||
407 | /* create the settings file and write the settings to it */ | 455 | /* create the settings file and write the settings to it */ |
408 | fd = rb->creat(default_filename, O_WRONLY); | 456 | fd = rb->creat(default_filename, O_WRONLY); |
@@ -412,24 +460,33 @@ void save_settings(void) | |||
412 | rb->write (fd, &settings, sizeof(struct saved_settings)); | 460 | rb->write (fd, &settings, sizeof(struct saved_settings)); |
413 | rb->close(fd); | 461 | rb->close(fd); |
414 | 462 | ||
415 | rb->lcd_clearrect(0, 56, 112, 8); | 463 | if(interface) |
416 | rb->snprintf(buf, sizeof(buf), "Saved Settings"); | 464 | { |
417 | rb->lcd_getstringsize(buf, &buf_w, &buf_h); | 465 | rb->lcd_clearrect(0, 56, 112, 8); |
418 | rb->lcd_putsxy(LCD_WIDTH/2-buf_w/2, 56, buf); | 466 | rb->snprintf(buf, sizeof(buf), "Saved Settings"); |
467 | rb->lcd_getstringsize(buf, &buf_w, &buf_h); | ||
468 | rb->lcd_putsxy(LCD_WIDTH/2-buf_w/2, 56, buf); | ||
469 | } | ||
419 | } | 470 | } |
420 | else | 471 | else |
421 | { | 472 | { |
422 | rb->lcd_clearrect(0, 56, 112, 8); | 473 | if(interface) |
423 | rb->snprintf(buf, sizeof(buf), "Save Failed"); | 474 | { |
424 | rb->lcd_getstringsize(buf, &buf_w, &buf_h); | 475 | rb->lcd_clearrect(0, 56, 112, 8); |
425 | rb->lcd_putsxy(LCD_WIDTH/2-buf_w/2, 56, buf); | 476 | rb->snprintf(buf, sizeof(buf), "Save Failed"); |
477 | rb->lcd_getstringsize(buf, &buf_w, &buf_h); | ||
478 | rb->lcd_putsxy(LCD_WIDTH/2-buf_w/2, 56, buf); | ||
479 | } | ||
426 | } | 480 | } |
427 | 481 | ||
428 | rb->lcd_update(); | 482 | if(interface) |
429 | 483 | { | |
430 | rb->sleep(HZ); | 484 | rb->lcd_update(); |
431 | 485 | ||
432 | exit_logo(); | 486 | rb->sleep(HZ); |
487 | |||
488 | exit_logo(); | ||
489 | } | ||
433 | } | 490 | } |
434 | 491 | ||
435 | /********************************** | 492 | /********************************** |
@@ -441,8 +498,6 @@ void load_settings(void) | |||
441 | int fd; | 498 | int fd; |
442 | fd = rb->open(default_filename, O_RDONLY); | 499 | fd = rb->open(default_filename, O_RDONLY); |
443 | 500 | ||
444 | rb->lcd_setfont(FONT_SYSFIXED); | ||
445 | |||
446 | rb->snprintf(buf, sizeof(buf), "Clock %s", CLOCK_VERSION); | 501 | rb->snprintf(buf, sizeof(buf), "Clock %s", CLOCK_VERSION); |
447 | rb->lcd_getstringsize(buf, &buf_w, &buf_h); | 502 | rb->lcd_getstringsize(buf, &buf_w, &buf_h); |
448 | rb->lcd_putsxy(LCD_WIDTH/2-buf_w/2, 48, buf); | 503 | rb->lcd_putsxy(LCD_WIDTH/2-buf_w/2, 48, buf); |
@@ -491,7 +546,7 @@ void load_settings(void) | |||
491 | rb->ata_sleep(); | 546 | rb->ata_sleep(); |
492 | #endif | 547 | #endif |
493 | 548 | ||
494 | rb->sleep(HZ*2); | 549 | rb->sleep(HZ); |
495 | 550 | ||
496 | /* make the logo fly out */ | 551 | /* make the logo fly out */ |
497 | exit_logo(); | 552 | exit_logo(); |
@@ -955,7 +1010,7 @@ void show_logo(bool animate, bool show_clock_text) | |||
955 | if(animate) | 1010 | if(animate) |
956 | { | 1011 | { |
957 | /* move down the screen */ | 1012 | /* move down the screen */ |
958 | for(y_position = 0; y_position <= 25; y_position++) | 1013 | for(y_position = 0; y_position <= 26; y_position++) |
959 | { | 1014 | { |
960 | rb->lcd_clearline(0, y_position/2-1, 111, y_position/2-1); | 1015 | rb->lcd_clearline(0, y_position/2-1, 111, y_position/2-1); |
961 | rb->lcd_clearline(0, y_position/2+38, 111, y_position/2+38); | 1016 | rb->lcd_clearline(0, y_position/2+38, 111, y_position/2+38); |
@@ -965,7 +1020,7 @@ void show_logo(bool animate, bool show_clock_text) | |||
965 | rb->lcd_update(); | 1020 | rb->lcd_update(); |
966 | } | 1021 | } |
967 | /* bounce back up a little */ | 1022 | /* bounce back up a little */ |
968 | for(y_position = 25; y_position >= 18; y_position--) | 1023 | for(y_position = 26; y_position >= 16; y_position--) |
969 | { | 1024 | { |
970 | rb->lcd_clearline(0, y_position/2-1, 111, y_position/2-1); | 1025 | rb->lcd_clearline(0, y_position/2-1, 111, y_position/2-1); |
971 | rb->lcd_clearline(0, y_position/2+38, 111, y_position/2+38); | 1026 | rb->lcd_clearline(0, y_position/2+38, 111, y_position/2+38); |
@@ -975,7 +1030,7 @@ void show_logo(bool animate, bool show_clock_text) | |||
975 | rb->lcd_update(); | 1030 | rb->lcd_update(); |
976 | } | 1031 | } |
977 | /* and go back down again */ | 1032 | /* and go back down again */ |
978 | for(y_position = 18; y_position <= 20; y_position++) | 1033 | for(y_position = 16; y_position <= 20; y_position++) |
979 | { | 1034 | { |
980 | rb->lcd_clearline(0, y_position/2-1, 111, y_position/2-1); | 1035 | rb->lcd_clearline(0, y_position/2-1, 111, y_position/2-1); |
981 | rb->lcd_clearline(0, y_position/2+38, 111, y_position/2+38); | 1036 | rb->lcd_clearline(0, y_position/2+38, 111, y_position/2+38); |
@@ -1222,11 +1277,31 @@ bool show_credits(void) | |||
1222 | *****************/ | 1277 | *****************/ |
1223 | bool f1_screen(void) | 1278 | bool f1_screen(void) |
1224 | { | 1279 | { |
1280 | int screen = 1; | ||
1225 | done = false; | 1281 | done = false; |
1226 | 1282 | ||
1227 | while (!done) | 1283 | while (!done) |
1228 | { | 1284 | { |
1229 | rb->lcd_clear_display(); | 1285 | rb->lcd_clear_display(); |
1286 | |||
1287 | if(screen == 1) | ||
1288 | { | ||
1289 | rb->snprintf(buf, sizeof(buf), "<<---- 1/9 NEXT>>"); | ||
1290 | rb->lcd_getstringsize(buf, &buf_w, &buf_h); | ||
1291 | rb->lcd_putsxy(LCD_WIDTH/2-buf_w/2, 56, buf); | ||
1292 | } | ||
1293 | else if(screen == 9) | ||
1294 | { | ||
1295 | rb->snprintf(buf, sizeof(buf), "<<BACK 9/9 ---->>"); | ||
1296 | rb->lcd_getstringsize(buf, &buf_w, &buf_h); | ||
1297 | rb->lcd_putsxy(LCD_WIDTH/2-buf_w/2, 56, buf); | ||
1298 | } | ||
1299 | else | ||
1300 | { | ||
1301 | rb->snprintf(buf, sizeof(buf), "<<BACK %d/9 NEXT>>", screen); | ||
1302 | rb->lcd_getstringsize(buf, &buf_w, &buf_h); | ||
1303 | rb->lcd_putsxy(LCD_WIDTH/2-buf_w/2, 56, buf); | ||
1304 | } | ||
1230 | 1305 | ||
1231 | /* page one */ | 1306 | /* page one */ |
1232 | if(screen == 1) | 1307 | if(screen == 1) |
@@ -1238,7 +1313,6 @@ bool f1_screen(void) | |||
1238 | rb->lcd_puts(0, 4, "you to the clock."); | 1313 | rb->lcd_puts(0, 4, "you to the clock."); |
1239 | rb->lcd_puts(0, 5, "At any mode, [F1]"); | 1314 | rb->lcd_puts(0, 5, "At any mode, [F1]"); |
1240 | rb->lcd_puts(0, 6, "will show you this"); | 1315 | rb->lcd_puts(0, 6, "will show you this"); |
1241 | rb->lcd_puts(0, 7, "<< ---- 1/9 NEXT >>"); | ||
1242 | } | 1316 | } |
1243 | else if(screen == 2) | 1317 | else if(screen == 2) |
1244 | { | 1318 | { |
@@ -1249,7 +1323,6 @@ bool f1_screen(void) | |||
1249 | rb->lcd_puts(0, 4, "Counter. [ON+F2]"); | 1323 | rb->lcd_puts(0, 4, "Counter. [ON+F2]"); |
1250 | rb->lcd_puts(0, 5, "gives you counting"); | 1324 | rb->lcd_puts(0, 5, "gives you counting"); |
1251 | rb->lcd_puts(0, 6, "options."); | 1325 | rb->lcd_puts(0, 6, "options."); |
1252 | rb->lcd_puts(0, 7, "<< BACK 2/9 NEXT >>"); | ||
1253 | } | 1326 | } |
1254 | else if(screen == 3) | 1327 | else if(screen == 3) |
1255 | { | 1328 | { |
@@ -1260,7 +1333,6 @@ bool f1_screen(void) | |||
1260 | rb->lcd_puts(0, 4, "and PLAY to toggle."); | 1333 | rb->lcd_puts(0, 4, "and PLAY to toggle."); |
1261 | rb->lcd_puts(0, 5, "[ON+F3] shows you"); | 1334 | rb->lcd_puts(0, 5, "[ON+F3] shows you"); |
1262 | rb->lcd_puts(0, 6, "General Settings."); | 1335 | rb->lcd_puts(0, 6, "General Settings."); |
1263 | rb->lcd_puts(0, 7, "<< BACK 3/9 NEXT >>"); | ||
1264 | } | 1336 | } |
1265 | else if(screen == 4) | 1337 | else if(screen == 4) |
1266 | { | 1338 | { |
@@ -1271,7 +1343,6 @@ bool f1_screen(void) | |||
1271 | rb->lcd_puts(0, 4, "mode will show the"); | 1343 | rb->lcd_puts(0, 4, "mode will show the"); |
1272 | rb->lcd_puts(0, 5, "MODE SELECTOR. Use"); | 1344 | rb->lcd_puts(0, 5, "MODE SELECTOR. Use"); |
1273 | rb->lcd_puts(0, 6, "UP/DOWN to select"); | 1345 | rb->lcd_puts(0, 6, "UP/DOWN to select"); |
1274 | rb->lcd_puts(0, 7, "<< BACK 4/9 NEXT >>"); | ||
1275 | } | 1346 | } |
1276 | else if(screen == 5) | 1347 | else if(screen == 5) |
1277 | { | 1348 | { |
@@ -1282,7 +1353,6 @@ bool f1_screen(void) | |||
1282 | rb->lcd_puts(0, 4, "small round clock"); | 1353 | rb->lcd_puts(0, 4, "small round clock"); |
1283 | rb->lcd_puts(0, 5, "in the center of"); | 1354 | rb->lcd_puts(0, 5, "in the center of"); |
1284 | rb->lcd_puts(0, 6, "LCD. Options appear"); | 1355 | rb->lcd_puts(0, 6, "LCD. Options appear"); |
1285 | rb->lcd_puts(0, 7, "<< BACK 5/9 NEXT >>"); | ||
1286 | } | 1356 | } |
1287 | else if(screen == 6) | 1357 | else if(screen == 6) |
1288 | { | 1358 | { |
@@ -1293,7 +1363,6 @@ bool f1_screen(void) | |||
1293 | rb->lcd_puts(0, 4, "*LCD: Shows another"); | 1363 | rb->lcd_puts(0, 4, "*LCD: Shows another"); |
1294 | rb->lcd_puts(0, 5, "imitation of an"); | 1364 | rb->lcd_puts(0, 5, "imitation of an"); |
1295 | rb->lcd_puts(0, 6, "LCD display."); | 1365 | rb->lcd_puts(0, 6, "LCD display."); |
1296 | rb->lcd_puts(0, 7, "<< BACK 6/9 NEXT >>"); | ||
1297 | } | 1366 | } |
1298 | else if(screen == 7) | 1367 | else if(screen == 7) |
1299 | { | 1368 | { |
@@ -1304,7 +1373,6 @@ bool f1_screen(void) | |||
1304 | rb->lcd_puts(0, 4, "available in this"); | 1373 | rb->lcd_puts(0, 4, "available in this"); |
1305 | rb->lcd_puts(0, 5, "mode."); | 1374 | rb->lcd_puts(0, 5, "mode."); |
1306 | rb->lcd_puts(0, 6, "*BINARY: Shows a"); | 1375 | rb->lcd_puts(0, 6, "*BINARY: Shows a"); |
1307 | rb->lcd_puts(0, 7, "<< BACK 7/9 NEXT >>"); | ||
1308 | } | 1376 | } |
1309 | else if(screen == 8) | 1377 | else if(screen == 8) |
1310 | { | 1378 | { |
@@ -1315,7 +1383,6 @@ bool f1_screen(void) | |||
1315 | rb->lcd_puts(0, 4, "_-=OTHER KEYS=-_"); | 1383 | rb->lcd_puts(0, 4, "_-=OTHER KEYS=-_"); |
1316 | rb->lcd_puts(0, 5, "[DWN] will disable"); | 1384 | rb->lcd_puts(0, 5, "[DWN] will disable"); |
1317 | rb->lcd_puts(0, 6, "Rockbox's idle"); | 1385 | rb->lcd_puts(0, 6, "Rockbox's idle"); |
1318 | rb->lcd_puts(0, 7, "<< BACK 8/9 NEXT >>"); | ||
1319 | } | 1386 | } |
1320 | else if(screen == 9) | 1387 | else if(screen == 9) |
1321 | { | 1388 | { |
@@ -1326,12 +1393,11 @@ bool f1_screen(void) | |||
1326 | rb->lcd_puts(0, 4, " light, [RIGHT]"); | 1393 | rb->lcd_puts(0, 4, " light, [RIGHT]"); |
1327 | rb->lcd_puts(0, 5, "will turn it on."); | 1394 | rb->lcd_puts(0, 5, "will turn it on."); |
1328 | rb->lcd_puts(0, 6, "[OFF] exits plugin."); | 1395 | rb->lcd_puts(0, 6, "[OFF] exits plugin."); |
1329 | rb->lcd_puts(0, 7, "<< BACK 9/9 ---- >>"); | ||
1330 | } | 1396 | } |
1331 | 1397 | ||
1332 | rb->lcd_update(); | 1398 | rb->lcd_update(); |
1333 | 1399 | ||
1334 | switch (rb->button_get(true)) | 1400 | switch(rb->button_get_w_tmo(HZ/4)) |
1335 | { | 1401 | { |
1336 | case BUTTON_F1: /* exit */ | 1402 | case BUTTON_F1: /* exit */ |
1337 | case BUTTON_OFF: | 1403 | case BUTTON_OFF: |
@@ -1357,11 +1423,23 @@ bool f1_screen(void) | |||
1357 | return true; | 1423 | return true; |
1358 | } | 1424 | } |
1359 | 1425 | ||
1426 | /************************* | ||
1427 | * Draws a checkbox bitmap | ||
1428 | ************************/ | ||
1429 | void draw_checkbox(bool setting, int x, int y) | ||
1430 | { | ||
1431 | if(setting) /* checkbox is on */ | ||
1432 | rb->lcd_bitmap(checkbox_full, x, y, 8, 6, true); | ||
1433 | else /* checkbox is off */ | ||
1434 | rb->lcd_bitmap(checkbox_empty, x, y, 8, 6, true); | ||
1435 | } | ||
1436 | |||
1360 | /********************* | 1437 | /********************* |
1361 | * F3 Screen - OPTIONS | 1438 | * F3 Screen - OPTIONS |
1362 | ********************/ | 1439 | ********************/ |
1363 | bool f3_screen(void) | 1440 | bool f3_screen(void) |
1364 | { | 1441 | { |
1442 | /* cursor positions */ | ||
1365 | int invert_analog = 1; | 1443 | int invert_analog = 1; |
1366 | int invert_digital = 1; | 1444 | int invert_digital = 1; |
1367 | int invert_lcd = 1; | 1445 | int invert_lcd = 1; |
@@ -1372,53 +1450,58 @@ bool f3_screen(void) | |||
1372 | while (!done) | 1450 | while (!done) |
1373 | { | 1451 | { |
1374 | rb->lcd_clear_display(); | 1452 | rb->lcd_clear_display(); |
1453 | |||
1454 | rb->lcd_puts(0, 1, "UP/DN: move, L/R:"); | ||
1455 | rb->lcd_puts(0, 2, "change, OFF: done"); | ||
1375 | 1456 | ||
1376 | if(settings.clock == 1) | 1457 | if(settings.clock == 1) |
1377 | { | 1458 | { |
1378 | rb->lcd_puts(0, 0, "OPTIONS (Analog)"); | 1459 | rb->lcd_puts(0, 0, "OPTIONS (Analog)"); |
1379 | rb->lcd_puts(0, 1, "UP/DOWN & PLAY"); | 1460 | |
1380 | rb->lcd_puts(0, 2, "F3/OFF: Done"); | ||
1381 | rb->lcd_puts(2, 4, "Digits"); | 1461 | rb->lcd_puts(2, 4, "Digits"); |
1382 | 1462 | ||
1383 | if(settings.analog_date == 0) | 1463 | if(settings.analog_date == 0) |
1384 | rb->lcd_puts(2, 5, "Date"); | 1464 | rb->lcd_puts(2, 5, "Date: Off"); |
1385 | else if(settings.analog_date == 1) | 1465 | else if(settings.analog_date == 1) |
1386 | rb->lcd_puts(2, 5, "Date: American"); | 1466 | rb->lcd_puts(2, 5, "Date: American"); |
1387 | else | 1467 | else |
1388 | rb->lcd_puts(2, 5, "Date: European"); | 1468 | rb->lcd_puts(2, 5, "Date: European"); |
1389 | 1469 | ||
1390 | if(settings.analog_time == 0) | 1470 | if(settings.analog_time == 0) |
1391 | rb->lcd_puts(2, 6, "Time Readout"); | 1471 | rb->lcd_puts(2, 6, "Time Readout:Off"); |
1392 | else if(settings.analog_time == 1) | 1472 | else if(settings.analog_time == 1) |
1393 | rb->lcd_puts(2, 6, "Time Readout 24h"); | 1473 | rb->lcd_puts(2, 6, "Time Readout:24h"); |
1394 | else | 1474 | else |
1395 | rb->lcd_puts(2, 6, "Time Readout 12h"); | 1475 | rb->lcd_puts(2, 6, "Time Readout:12h"); |
1396 | 1476 | ||
1397 | rb->lcd_puts(2, 7, "Second Hand"); | 1477 | rb->lcd_puts(2, 7, "Second Hand"); |
1398 | 1478 | ||
1399 | /* Draw checkboxes using the new checkbox() function */ | 1479 | /* Draw checkboxes */ |
1400 | rb->checkbox(1, 33, 8, 6, settings.analog_digits); | 1480 | draw_checkbox(settings.analog_digits, 1, 33); |
1401 | if(settings.analog_date != 0) | 1481 | |
1402 | rb->checkbox(1, 41, 8, 6, true); | 1482 | if(settings.analog_date == 0) |
1483 | rb->lcd_bitmap(checkbox_empty, 1, 41, 8, 6, true); | ||
1484 | else if(settings.analog_date == 1) | ||
1485 | rb->lcd_bitmap(checkbox_half, 1, 41, 8, 6, true); | ||
1486 | else | ||
1487 | rb->lcd_bitmap(checkbox_full, 1, 41, 8, 6, true); | ||
1488 | |||
1489 | if(settings.analog_time == 0) | ||
1490 | rb->lcd_bitmap(checkbox_empty, 1, 49, 8, 6, true); | ||
1491 | else if(settings.analog_time == 1) | ||
1492 | rb->lcd_bitmap(checkbox_half, 1, 49, 8, 6, true); | ||
1403 | else | 1493 | else |
1404 | rb->checkbox(1, 41, 8, 6, false); | 1494 | rb->lcd_bitmap(checkbox_full, 1, 49, 8, 6, true); |
1405 | rb->checkbox(1, 49, 8, 6, settings.analog_time); | 1495 | |
1406 | rb->checkbox(1, 57, 8, 6, settings.analog_secondhand); | 1496 | draw_checkbox(settings.analog_secondhand, 1, 57); |
1407 | 1497 | ||
1408 | /* Draw line selector */ | 1498 | /* Draw line selector */ |
1409 | switch(invert_analog) | 1499 | switch(invert_analog) |
1410 | { | 1500 | { |
1411 | case 1: | 1501 | case 1: rb->lcd_invertrect(0, 32, 112, 8); break; |
1412 | rb->lcd_invertrect(0, 32, 112, 8); break; | 1502 | case 2: rb->lcd_invertrect(0, 40, 112, 8); break; |
1413 | 1503 | case 3: rb->lcd_invertrect(0, 48, 112, 8); break; | |
1414 | case 2: | 1504 | case 4: rb->lcd_invertrect(0, 56, 112, 8); break; |
1415 | rb->lcd_invertrect(0, 40, 112, 8); break; | ||
1416 | |||
1417 | case 3: | ||
1418 | rb->lcd_invertrect(0, 48, 112, 8); break; | ||
1419 | |||
1420 | case 4: | ||
1421 | rb->lcd_invertrect(0, 56, 112, 8); break; | ||
1422 | } | 1505 | } |
1423 | 1506 | ||
1424 | rb->lcd_update(); | 1507 | rb->lcd_update(); |
@@ -1438,30 +1521,45 @@ bool f3_screen(void) | |||
1438 | else | 1521 | else |
1439 | invert_analog = 1; | 1522 | invert_analog = 1; |
1440 | break; | 1523 | break; |
1441 | 1524 | ||
1442 | case BUTTON_PLAY: | 1525 | case BUTTON_LEFT: |
1526 | if(invert_analog == 1) | ||
1527 | settings.analog_digits = false; | ||
1528 | else if(invert_analog == 2) | ||
1529 | { | ||
1530 | if(settings.analog_date > 0) | ||
1531 | settings.analog_date--; | ||
1532 | } | ||
1533 | else if(invert_analog == 3) | ||
1534 | { | ||
1535 | if(settings.analog_time > 0) | ||
1536 | settings.analog_time--; | ||
1537 | } | ||
1538 | else | ||
1539 | settings.analog_secondhand = false; | ||
1540 | break; | ||
1541 | |||
1542 | case BUTTON_RIGHT: | ||
1443 | if(invert_analog == 1) | 1543 | if(invert_analog == 1) |
1444 | settings.analog_digits = !settings.analog_digits; | 1544 | settings.analog_digits = true; |
1445 | else if(invert_analog == 2) | 1545 | else if(invert_analog == 2) |
1446 | { | 1546 | { |
1447 | if(settings.analog_date < 2) | 1547 | if(settings.analog_date < 2) |
1448 | settings.analog_date++; | 1548 | settings.analog_date++; |
1449 | else | ||
1450 | settings.analog_date = 0; | ||
1451 | } | 1549 | } |
1452 | else if(invert_analog == 3) | 1550 | else if(invert_analog == 3) |
1453 | { | 1551 | { |
1454 | if(settings.analog_time < 2) | 1552 | if(settings.analog_time < 2) |
1455 | settings.analog_time++; | 1553 | settings.analog_time++; |
1456 | else | ||
1457 | settings.analog_time = 0; | ||
1458 | } | 1554 | } |
1459 | else | 1555 | else |
1460 | settings.analog_secondhand = !settings.analog_secondhand; | 1556 | settings.analog_secondhand = true; |
1461 | break; | 1557 | break; |
1462 | 1558 | ||
1463 | case BUTTON_F3: | 1559 | case BUTTON_F3: |
1464 | case BUTTON_OFF: | 1560 | case BUTTON_OFF: |
1561 | if(settings.save_mode == 2) | ||
1562 | save_settings(false); | ||
1465 | done = true; | 1563 | done = true; |
1466 | break; | 1564 | break; |
1467 | } | 1565 | } |
@@ -1469,54 +1567,53 @@ bool f3_screen(void) | |||
1469 | else if(settings.clock == 2) | 1567 | else if(settings.clock == 2) |
1470 | { | 1568 | { |
1471 | rb->lcd_puts(0, 0, "OPTIONS (Digital)"); | 1569 | rb->lcd_puts(0, 0, "OPTIONS (Digital)"); |
1472 | rb->lcd_puts(0, 1, "UP/DOWN & PLAY"); | ||
1473 | rb->lcd_puts(0, 2, "F3/OFF: Done"); | ||
1474 | 1570 | ||
1475 | if(settings.digital_date == 0) | 1571 | if(settings.digital_date == 0) |
1476 | rb->lcd_puts(2, 4, "Date"); | 1572 | rb->lcd_puts(2, 4, "Date: Off"); |
1477 | else if(settings.digital_date == 1) | 1573 | else if(settings.digital_date == 1) |
1478 | rb->lcd_puts(2, 4, "Date: American"); | 1574 | rb->lcd_puts(2, 4, "Date: American"); |
1479 | else | 1575 | else |
1480 | rb->lcd_puts(2, 4, "Date: European"); | 1576 | rb->lcd_puts(2, 4, "Date: European"); |
1481 | 1577 | ||
1482 | if(settings.digital_seconds == 0) | 1578 | if(settings.digital_seconds == 0) |
1483 | rb->lcd_puts(2, 5, "Seconds"); | 1579 | rb->lcd_puts(2, 5, "Seconds: Off"); |
1484 | else if(settings.digital_seconds == 1) | 1580 | else if(settings.digital_seconds == 1) |
1485 | rb->lcd_puts(2, 5, "Seconds: DIGITAL"); | 1581 | rb->lcd_puts(2, 5, "Seconds: Text"); |
1486 | else if(settings.digital_seconds == 2) | 1582 | else if(settings.digital_seconds == 2) |
1487 | rb->lcd_puts(2, 5, "Seconds: BAR"); | 1583 | rb->lcd_puts(2, 5, "Seconds: Bar"); |
1488 | else | 1584 | else |
1489 | rb->lcd_puts(2, 5, "Seconds: INVERSE"); | 1585 | rb->lcd_puts(2, 5, "Seconds: Inverse"); |
1490 | 1586 | ||
1491 | rb->lcd_puts(2, 6, "Blinking Colon"); | 1587 | rb->lcd_puts(2, 6, "Blinking Colon"); |
1492 | rb->lcd_puts(2, 7, "12-Hour Format"); | 1588 | rb->lcd_puts(2, 7, "12-Hour Format"); |
1493 | 1589 | ||
1494 | /* Draw checkboxes */ | 1590 | /* Draw checkboxes */ |
1495 | if(settings.digital_date != 0) | 1591 | if(settings.digital_date == 0) |
1496 | rb->checkbox(1, 33, 8, 6, true); | 1592 | rb->lcd_bitmap(checkbox_empty, 1, 33, 8, 6, true); |
1593 | else if(settings.digital_date == 1) | ||
1594 | rb->lcd_bitmap(checkbox_half, 1, 33, 8, 6, true); | ||
1497 | else | 1595 | else |
1498 | rb->checkbox(1, 33, 8, 6, false); | 1596 | rb->lcd_bitmap(checkbox_full, 1, 33, 8, 6, true); |
1499 | if(settings.digital_seconds != 0) | 1597 | |
1500 | rb->checkbox(1, 41, 8, 6, true); | 1598 | if(settings.digital_seconds == 0) |
1599 | rb->lcd_bitmap(checkbox_empty, 1, 41, 8, 6, true); | ||
1600 | else if(settings.digital_seconds == 1) | ||
1601 | rb->lcd_bitmap(checkbox_onethird, 1, 41, 8, 6, true); | ||
1602 | else if(settings.digital_seconds == 2) | ||
1603 | rb->lcd_bitmap(checkbox_twothird, 1, 41, 8, 6, true); | ||
1501 | else | 1604 | else |
1502 | rb->checkbox(1, 41, 8, 6, false); | 1605 | rb->lcd_bitmap(checkbox_full, 1, 41, 8, 6, true); |
1503 | rb->checkbox(1, 49, 8, 6, settings.digital_blinkcolon); | 1606 | |
1504 | rb->checkbox(1, 57, 8, 6, settings.digital_12h); | 1607 | draw_checkbox(settings.digital_blinkcolon, 1, 49); |
1608 | draw_checkbox(settings.digital_12h, 1, 57); | ||
1505 | 1609 | ||
1506 | /* Draw a line selector */ | 1610 | /* Draw a line selector */ |
1507 | switch(invert_digital) | 1611 | switch(invert_digital) |
1508 | { | 1612 | { |
1509 | case 1: | 1613 | case 1: rb->lcd_invertrect(0, 32, 112, 8); break; |
1510 | rb->lcd_invertrect(0, 32, 112, 8); break; | 1614 | case 2: rb->lcd_invertrect(0, 40, 112, 8); break; |
1511 | 1615 | case 3: rb->lcd_invertrect(0, 48, 112, 8); break; | |
1512 | case 2: | 1616 | case 4: rb->lcd_invertrect(0, 56, 112, 8); break; |
1513 | rb->lcd_invertrect(0, 40, 112, 8); break; | ||
1514 | |||
1515 | case 3: | ||
1516 | rb->lcd_invertrect(0, 48, 112, 8); break; | ||
1517 | |||
1518 | case 4: | ||
1519 | rb->lcd_invertrect(0, 56, 112, 8); break; | ||
1520 | } | 1617 | } |
1521 | 1618 | ||
1522 | rb->lcd_update(); | 1619 | rb->lcd_update(); |
@@ -1536,30 +1633,45 @@ bool f3_screen(void) | |||
1536 | else | 1633 | else |
1537 | invert_digital++; | 1634 | invert_digital++; |
1538 | break; | 1635 | break; |
1539 | 1636 | ||
1540 | case BUTTON_PLAY: | 1637 | case BUTTON_LEFT: |
1638 | if(invert_digital == 1) | ||
1639 | { | ||
1640 | if(settings.digital_date > 0) | ||
1641 | settings.digital_date--; | ||
1642 | } | ||
1643 | else if(invert_digital == 2) | ||
1644 | { | ||
1645 | if(settings.digital_seconds > 0) | ||
1646 | settings.digital_seconds--; | ||
1647 | } | ||
1648 | else if(invert_digital == 3) | ||
1649 | settings.digital_blinkcolon = false; | ||
1650 | else | ||
1651 | settings.digital_12h = false; | ||
1652 | break; | ||
1653 | |||
1654 | case BUTTON_RIGHT: | ||
1541 | if(invert_digital == 1) | 1655 | if(invert_digital == 1) |
1542 | { | 1656 | { |
1543 | if(settings.digital_date < 2) | 1657 | if(settings.digital_date < 2) |
1544 | settings.digital_date++; | 1658 | settings.digital_date++; |
1545 | else | ||
1546 | settings.digital_date = 0; | ||
1547 | } | 1659 | } |
1548 | else if(invert_digital == 2) | 1660 | else if(invert_digital == 2) |
1549 | { | 1661 | { |
1550 | if(settings.digital_seconds < 3) | 1662 | if(settings.digital_seconds < 3) |
1551 | settings.digital_seconds++; | 1663 | settings.digital_seconds++; |
1552 | else | ||
1553 | settings.digital_seconds = 0; | ||
1554 | } | 1664 | } |
1555 | else if(invert_digital == 3) | 1665 | else if(invert_digital == 3) |
1556 | settings.digital_blinkcolon = !settings.digital_blinkcolon; | 1666 | settings.digital_blinkcolon = true; |
1557 | else | 1667 | else |
1558 | settings.digital_12h = !settings.digital_12h; | 1668 | settings.digital_12h = true; |
1559 | break; | 1669 | break; |
1560 | 1670 | ||
1561 | case BUTTON_F3: | 1671 | case BUTTON_F3: |
1562 | case BUTTON_OFF: | 1672 | case BUTTON_OFF: |
1673 | if(settings.save_mode == 2) | ||
1674 | save_settings(false); | ||
1563 | done = true; | 1675 | done = true; |
1564 | break; | 1676 | break; |
1565 | } | 1677 | } |
@@ -1567,56 +1679,54 @@ bool f3_screen(void) | |||
1567 | else if(settings.clock == 3) | 1679 | else if(settings.clock == 3) |
1568 | { | 1680 | { |
1569 | rb->lcd_puts(0, 0, "OPTIONS (LCD)"); | 1681 | rb->lcd_puts(0, 0, "OPTIONS (LCD)"); |
1570 | rb->lcd_puts(0, 1, "UP/DOWN & PLAY"); | ||
1571 | rb->lcd_puts(0, 2, "F3/OFF: Done"); | ||
1572 | 1682 | ||
1573 | if(settings.lcd_date == 0) | 1683 | if(settings.lcd_date == 0) |
1574 | rb->lcd_puts(2, 4, "Date"); | 1684 | rb->lcd_puts(2, 4, "Date: Off"); |
1575 | else if(settings.lcd_date == 1) | 1685 | else if(settings.lcd_date == 1) |
1576 | rb->lcd_puts(2, 4, "Date: American"); | 1686 | rb->lcd_puts(2, 4, "Date: American"); |
1577 | else | 1687 | else |
1578 | rb->lcd_puts(2, 4, "Date: European"); | 1688 | rb->lcd_puts(2, 4, "Date: European"); |
1579 | 1689 | ||
1580 | if(settings.lcd_seconds == 0) | 1690 | if(settings.lcd_seconds == 0) |
1581 | rb->lcd_puts(2, 5, "Seconds"); | 1691 | rb->lcd_puts(2, 5, "Seconds: Off"); |
1582 | else if(settings.lcd_seconds == 1) | 1692 | else if(settings.lcd_seconds == 1) |
1583 | rb->lcd_puts(2, 5, "Seconds: DIGITAL"); | 1693 | rb->lcd_puts(2, 5, "Seconds: Text"); |
1584 | else if(settings.lcd_seconds == 2) | 1694 | else if(settings.lcd_seconds == 2) |
1585 | rb->lcd_puts(2, 5, "Seconds: BAR"); | 1695 | rb->lcd_puts(2, 5, "Seconds: Bar"); |
1586 | else | 1696 | else |
1587 | rb->lcd_puts(2, 5, "Seconds: INVERSE"); | 1697 | rb->lcd_puts(2, 5, "Seconds: Inverse"); |
1588 | 1698 | ||
1589 | rb->lcd_puts(2, 6, "Blinking Colon"); | 1699 | rb->lcd_puts(2, 6, "Blinking Colon"); |
1590 | rb->lcd_puts(2, 7, "12-Hour Format"); | 1700 | rb->lcd_puts(2, 7, "12-Hour Format"); |
1591 | 1701 | ||
1592 | /* Draw checkboxes */ | 1702 | /* Draw checkboxes */ |
1593 | if(settings.lcd_date != 0) | 1703 | if(settings.lcd_date == 0) |
1594 | rb->checkbox(1, 33, 8, 6, true); | 1704 | rb->lcd_bitmap(checkbox_empty, 1, 33, 8, 6, true); |
1705 | else if(settings.lcd_date == 1) | ||
1706 | rb->lcd_bitmap(checkbox_half, 1, 33, 8, 6, true); | ||
1595 | else | 1707 | else |
1596 | rb->checkbox(1, 33, 8, 6, false); | 1708 | rb->lcd_bitmap(checkbox_full, 1, 33, 8, 6, true); |
1597 | if(settings.lcd_seconds != 0) | 1709 | |
1598 | rb->checkbox(1, 41, 8, 6, true); | 1710 | if(settings.lcd_seconds == 0) |
1711 | rb->lcd_bitmap(checkbox_empty, 1, 41, 8, 6, true); | ||
1712 | else if(settings.lcd_seconds == 1) | ||
1713 | rb->lcd_bitmap(checkbox_onethird, 1, 41, 8, 6, true); | ||
1714 | else if(settings.lcd_seconds == 2) | ||
1715 | rb->lcd_bitmap(checkbox_twothird, 1, 41, 8, 6, true); | ||
1599 | else | 1716 | else |
1600 | rb->checkbox(1, 41, 8, 6, false); | 1717 | rb->lcd_bitmap(checkbox_full, 1, 41, 8, 6, true); |
1601 | rb->checkbox(1, 49, 8, 6, settings.lcd_blinkcolon); | 1718 | |
1602 | rb->checkbox(1, 57, 8, 6, settings.lcd_12h); | 1719 | draw_checkbox(settings.lcd_blinkcolon, 1, 49); |
1720 | draw_checkbox(settings.lcd_12h, 1, 57); | ||
1603 | 1721 | ||
1604 | /* Draw a line selector */ | 1722 | /* Draw a line selector */ |
1605 | switch(invert_lcd) | 1723 | switch(invert_lcd) |
1606 | { | 1724 | { |
1607 | case 1: | 1725 | case 1: rb->lcd_invertrect(0, 32, 112, 8); break; |
1608 | rb->lcd_invertrect(0, 32, 112, 8); break; | 1726 | case 2: rb->lcd_invertrect(0, 40, 112, 8); break; |
1609 | 1727 | case 3: rb->lcd_invertrect(0, 48, 112, 8); break; | |
1610 | case 2: | 1728 | case 4: rb->lcd_invertrect(0, 56, 112, 8); break; |
1611 | rb->lcd_invertrect(0, 40, 112, 8); break; | ||
1612 | |||
1613 | case 3: | ||
1614 | rb->lcd_invertrect(0, 48, 112, 8); break; | ||
1615 | |||
1616 | case 4: | ||
1617 | rb->lcd_invertrect(0, 56, 112, 8); break; | ||
1618 | } | 1729 | } |
1619 | |||
1620 | rb->lcd_update(); | 1730 | rb->lcd_update(); |
1621 | 1731 | ||
1622 | switch(rb->button_get_w_tmo(HZ/4)) | 1732 | switch(rb->button_get_w_tmo(HZ/4)) |
@@ -1635,29 +1745,44 @@ bool f3_screen(void) | |||
1635 | invert_lcd++; | 1745 | invert_lcd++; |
1636 | break; | 1746 | break; |
1637 | 1747 | ||
1638 | case BUTTON_PLAY: | 1748 | case BUTTON_LEFT: |
1749 | if(invert_lcd == 1) | ||
1750 | { | ||
1751 | if(settings.lcd_date > 0) | ||
1752 | settings.lcd_date--; | ||
1753 | } | ||
1754 | else if(invert_lcd == 2) | ||
1755 | { | ||
1756 | if(settings.lcd_seconds > 0) | ||
1757 | settings.lcd_seconds--; | ||
1758 | } | ||
1759 | else if(invert_lcd == 3) | ||
1760 | settings.lcd_blinkcolon = false; | ||
1761 | else | ||
1762 | settings.lcd_12h = false; | ||
1763 | break; | ||
1764 | |||
1765 | case BUTTON_RIGHT: | ||
1639 | if(invert_lcd == 1) | 1766 | if(invert_lcd == 1) |
1640 | { | 1767 | { |
1641 | if(settings.lcd_date < 2) | 1768 | if(settings.lcd_date < 2) |
1642 | settings.lcd_date++; | 1769 | settings.lcd_date++; |
1643 | else | ||
1644 | settings.lcd_date = 0; | ||
1645 | } | 1770 | } |
1646 | else if(invert_lcd == 2) | 1771 | else if(invert_lcd == 2) |
1647 | { | 1772 | { |
1648 | if(settings.lcd_seconds < 3) | 1773 | if(settings.lcd_seconds < 3) |
1649 | settings.lcd_seconds++; | 1774 | settings.lcd_seconds++; |
1650 | else | ||
1651 | settings.lcd_seconds = 0; | ||
1652 | } | 1775 | } |
1653 | else if(invert_lcd == 3) | 1776 | else if(invert_lcd == 3) |
1654 | settings.lcd_blinkcolon = !settings.lcd_blinkcolon; | 1777 | settings.lcd_blinkcolon = true; |
1655 | else | 1778 | else |
1656 | settings.lcd_12h = !settings.lcd_12h; | 1779 | settings.lcd_12h = true; |
1657 | break; | 1780 | break; |
1658 | 1781 | ||
1659 | case BUTTON_F3: | 1782 | case BUTTON_F3: |
1660 | case BUTTON_OFF: | 1783 | case BUTTON_OFF: |
1784 | if(settings.save_mode == 2) | ||
1785 | save_settings(false); | ||
1661 | done = true; | 1786 | done = true; |
1662 | break; | 1787 | break; |
1663 | } | 1788 | } |
@@ -1665,32 +1790,23 @@ bool f3_screen(void) | |||
1665 | else if(settings.clock == 4) | 1790 | else if(settings.clock == 4) |
1666 | { | 1791 | { |
1667 | rb->lcd_puts(0, 0, "OPTIONS (Full)"); | 1792 | rb->lcd_puts(0, 0, "OPTIONS (Full)"); |
1668 | rb->lcd_puts(0, 1, "UP/DOWN & PLAY"); | ||
1669 | rb->lcd_puts(0, 2, "F3/OFF: Done"); | ||
1670 | 1793 | ||
1671 | rb->lcd_puts(2, 4, "Border"); | 1794 | rb->lcd_puts(2, 4, "Border"); |
1672 | rb->lcd_puts(2, 5, "Second Hand"); | 1795 | rb->lcd_puts(2, 5, "Second Hand"); |
1673 | rb->lcd_puts(2, 6, "Invert Seconds"); | 1796 | rb->lcd_puts(2, 6, "Invert Seconds"); |
1674 | 1797 | ||
1675 | rb->checkbox(1, 33, 8, 6, settings.fullscreen_border); | 1798 | draw_checkbox(settings.fullscreen_border, 1, 33); |
1676 | rb->checkbox(1, 41, 8, 6, settings.fullscreen_secondhand); | 1799 | draw_checkbox(settings.fullscreen_secondhand, 1, 41); |
1677 | rb->checkbox(1, 49, 8, 6, settings.fullscreen_invertseconds); | 1800 | draw_checkbox(settings.fullscreen_invertseconds, 1, 49); |
1678 | 1801 | ||
1679 | /* Draw a line selector | 1802 | /* Draw a line selector |
1680 | * There are 4 values here in case we decide to "up" the amount of settings */ | 1803 | * There are 4 values here in case we decide to "up" the amount of settings */ |
1681 | switch(invert_fullscreen) | 1804 | switch(invert_fullscreen) |
1682 | { | 1805 | { |
1683 | case 1: | 1806 | case 1: rb->lcd_invertrect(0, 32, 112, 8); break; |
1684 | rb->lcd_invertrect(0, 32, 112, 8); break; | 1807 | case 2: rb->lcd_invertrect(0, 40, 112, 8); break; |
1685 | 1808 | case 3: rb->lcd_invertrect(0, 48, 112, 8); break; | |
1686 | case 2: | 1809 | case 4: rb->lcd_invertrect(0, 56, 112, 8); break; |
1687 | rb->lcd_invertrect(0, 40, 112, 8); break; | ||
1688 | |||
1689 | case 3: | ||
1690 | rb->lcd_invertrect(0, 48, 112, 8); break; | ||
1691 | |||
1692 | case 4: | ||
1693 | rb->lcd_invertrect(0, 56, 112, 8); break; | ||
1694 | } | 1810 | } |
1695 | 1811 | ||
1696 | rb->lcd_update(); | 1812 | rb->lcd_update(); |
@@ -1710,18 +1826,29 @@ bool f3_screen(void) | |||
1710 | else | 1826 | else |
1711 | invert_fullscreen++; | 1827 | invert_fullscreen++; |
1712 | break; | 1828 | break; |
1713 | 1829 | ||
1714 | case BUTTON_PLAY: | 1830 | case BUTTON_LEFT: |
1715 | if(invert_fullscreen == 1) | 1831 | if(invert_fullscreen == 1) |
1716 | settings.fullscreen_border = !settings.fullscreen_border; | 1832 | settings.fullscreen_border = false; |
1717 | else if(invert_fullscreen == 2) | 1833 | else if(invert_fullscreen == 2) |
1718 | settings.fullscreen_secondhand = !settings.fullscreen_secondhand; | 1834 | settings.fullscreen_secondhand = false; |
1719 | else | 1835 | else if(invert_fullscreen ==3) |
1720 | settings.fullscreen_invertseconds = !settings.fullscreen_invertseconds; | 1836 | settings.fullscreen_invertseconds = false; |
1837 | break; | ||
1838 | |||
1839 | case BUTTON_RIGHT: | ||
1840 | if(invert_fullscreen == 1) | ||
1841 | settings.fullscreen_border = true; | ||
1842 | else if(invert_fullscreen == 2) | ||
1843 | settings.fullscreen_secondhand = true; | ||
1844 | else if(invert_fullscreen ==3) | ||
1845 | settings.fullscreen_invertseconds = true; | ||
1721 | break; | 1846 | break; |
1722 | 1847 | ||
1723 | case BUTTON_F3: | 1848 | case BUTTON_F3: |
1724 | case BUTTON_OFF: | 1849 | case BUTTON_OFF: |
1850 | if(settings.save_mode == 2) | ||
1851 | save_settings(false); | ||
1725 | done = true; | 1852 | done = true; |
1726 | break; | 1853 | break; |
1727 | } | 1854 | } |
@@ -1729,17 +1856,13 @@ bool f3_screen(void) | |||
1729 | else | 1856 | else |
1730 | { | 1857 | { |
1731 | rb->lcd_puts(0, 0, "OPTIONS (Binary)"); | 1858 | rb->lcd_puts(0, 0, "OPTIONS (Binary)"); |
1732 | rb->lcd_puts(0, 1, "UP/DOWN & PLAY"); | ||
1733 | rb->lcd_puts(0, 2, "F3/OFF: Done"); | ||
1734 | 1859 | ||
1735 | rb->lcd_puts(2, 4, "-- NO OPTIONS --"); | 1860 | rb->lcd_puts(2, 4, "-- NO OPTIONS --"); |
1736 | rb->lcd_puts(1, 6, "F3/OFF to return"); | ||
1737 | 1861 | ||
1738 | rb->lcd_update(); | 1862 | rb->lcd_update(); |
1739 | 1863 | ||
1740 | switch(rb->button_get_w_tmo(HZ/4)) | 1864 | switch(rb->button_get_w_tmo(HZ/4)) |
1741 | { | 1865 | { |
1742 | |||
1743 | case BUTTON_F3: | 1866 | case BUTTON_F3: |
1744 | case BUTTON_OFF: | 1867 | case BUTTON_OFF: |
1745 | done = true; | 1868 | done = true; |
@@ -1778,7 +1901,15 @@ void confirm_reset(void) | |||
1778 | ask_reset_done = true; | 1901 | ask_reset_done = true; |
1779 | break; | 1902 | break; |
1780 | 1903 | ||
1781 | case BUTTON_F1 : | 1904 | case BUTTON_F1: |
1905 | case BUTTON_F2: | ||
1906 | case BUTTON_F3: | ||
1907 | case BUTTON_DOWN: | ||
1908 | case BUTTON_UP: | ||
1909 | case BUTTON_LEFT: | ||
1910 | case BUTTON_RIGHT: | ||
1911 | case BUTTON_ON: | ||
1912 | case BUTTON_OFF: | ||
1782 | ask_reset_done = true; | 1913 | ask_reset_done = true; |
1783 | break; | 1914 | break; |
1784 | } | 1915 | } |
@@ -1805,6 +1936,12 @@ void general_settings(void) | |||
1805 | rb->lcd_puts(2, 2, "Reset Settings"); | 1936 | rb->lcd_puts(2, 2, "Reset Settings"); |
1806 | rb->lcd_puts(2, 3, "Save Settings"); | 1937 | rb->lcd_puts(2, 3, "Save Settings"); |
1807 | rb->lcd_puts(2, 4, "Show Counter"); | 1938 | rb->lcd_puts(2, 4, "Show Counter"); |
1939 | if(settings.save_mode == 1) /* save on exit */ | ||
1940 | rb->lcd_puts(2, 5, "Save: on Exit"); | ||
1941 | else if(settings.save_mode == 2) | ||
1942 | rb->lcd_puts(2, 5, "Save: Automatic"); | ||
1943 | else | ||
1944 | rb->lcd_puts(2, 5, "Save: Manually"); | ||
1808 | 1945 | ||
1809 | rb->snprintf(buf, sizeof(buf), "UP/DOWN to move"); | 1946 | rb->snprintf(buf, sizeof(buf), "UP/DOWN to move"); |
1810 | rb->lcd_getstringsize(buf, &buf_w, &buf_h); | 1947 | rb->lcd_getstringsize(buf, &buf_w, &buf_h); |
@@ -1815,18 +1952,21 @@ void general_settings(void) | |||
1815 | 1952 | ||
1816 | rb->lcd_bitmap(arrow, 1, 17, 8, 6, true); | 1953 | rb->lcd_bitmap(arrow, 1, 17, 8, 6, true); |
1817 | rb->lcd_bitmap(arrow, 1, 25, 8, 6, true); | 1954 | rb->lcd_bitmap(arrow, 1, 25, 8, 6, true); |
1818 | rb->checkbox(1, 33, 8, 6, display_counter); | 1955 | draw_checkbox(display_counter, 1, 33); |
1956 | |||
1957 | if(settings.save_mode == 1) | ||
1958 | rb->lcd_bitmap(checkbox_onethird, 1, 41, 8, 6, true); | ||
1959 | else if(settings.save_mode == 2) | ||
1960 | rb->lcd_bitmap(checkbox_twothird, 1, 41, 8, 6, true); | ||
1961 | else | ||
1962 | rb->lcd_bitmap(checkbox_full, 1, 41, 8, 6, true); | ||
1819 | 1963 | ||
1820 | switch(cursorpos) | 1964 | switch(cursorpos) |
1821 | { | 1965 | { |
1822 | case 1: | 1966 | case 1: rb->lcd_invertrect(0, 16, 112, 8); break; |
1823 | rb->lcd_invertrect(0, 16, 112, 8); break; | 1967 | case 2: rb->lcd_invertrect(0, 24, 112, 8); break; |
1824 | 1968 | case 3: rb->lcd_invertrect(0, 32, 112, 8); break; | |
1825 | case 2: | 1969 | case 4: rb->lcd_invertrect(0, 40, 112, 8); break; |
1826 | rb->lcd_invertrect(0, 24, 112, 8); break; | ||
1827 | |||
1828 | case 3: | ||
1829 | rb->lcd_invertrect(0, 32, 112, 8); break; | ||
1830 | } | 1970 | } |
1831 | 1971 | ||
1832 | rb->lcd_update(); | 1972 | rb->lcd_update(); |
@@ -1844,17 +1984,38 @@ void general_settings(void) | |||
1844 | break; | 1984 | break; |
1845 | 1985 | ||
1846 | case BUTTON_DOWN: | 1986 | case BUTTON_DOWN: |
1847 | if(cursorpos < 3) | 1987 | if(cursorpos < 4) |
1848 | cursorpos++; | 1988 | cursorpos++; |
1849 | break; | 1989 | break; |
1850 | 1990 | ||
1851 | case BUTTON_PLAY: | 1991 | case BUTTON_LEFT: |
1992 | if(cursorpos == 3) | ||
1993 | display_counter = false; | ||
1994 | else | ||
1995 | { | ||
1996 | if(settings.save_mode > 1) | ||
1997 | { | ||
1998 | settings.save_mode--; | ||
1999 | save_settings(false); | ||
2000 | } | ||
2001 | } | ||
2002 | break; | ||
2003 | |||
2004 | case BUTTON_RIGHT: | ||
1852 | if(cursorpos == 1) | 2005 | if(cursorpos == 1) |
1853 | confirm_reset(); | 2006 | confirm_reset(); |
1854 | else if(cursorpos == 2) | 2007 | else if(cursorpos == 2) |
1855 | save_settings(); | 2008 | save_settings(false); |
2009 | else if(cursorpos == 3) | ||
2010 | display_counter = true; | ||
1856 | else | 2011 | else |
1857 | display_counter = !display_counter; | 2012 | { |
2013 | if(settings.save_mode < 3) | ||
2014 | { | ||
2015 | settings.save_mode++; | ||
2016 | save_settings(false); | ||
2017 | } | ||
2018 | } | ||
1858 | break; | 2019 | break; |
1859 | } | 2020 | } |
1860 | } | 2021 | } |
@@ -2080,6 +2241,7 @@ void select_mode(void) | |||
2080 | break; | 2241 | break; |
2081 | 2242 | ||
2082 | case BUTTON_PLAY: | 2243 | case BUTTON_PLAY: |
2244 | case BUTTON_RIGHT: | ||
2083 | settings.clock = cursorpos; | 2245 | settings.clock = cursorpos; |
2084 | done = true; | 2246 | done = true; |
2085 | break; | 2247 | break; |
@@ -2402,12 +2564,12 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter) | |||
2402 | TEST_PLUGIN_API(api); | 2564 | TEST_PLUGIN_API(api); |
2403 | (void)parameter; | 2565 | (void)parameter; |
2404 | rb = api; | 2566 | rb = api; |
2405 | 2567 | ||
2406 | load_settings(); | ||
2407 | |||
2408 | /* universal font */ | 2568 | /* universal font */ |
2409 | rb->lcd_setfont(FONT_SYSFIXED); | 2569 | rb->lcd_setfont(FONT_SYSFIXED); |
2410 | 2570 | ||
2571 | load_settings(); | ||
2572 | |||
2411 | /* set backlight timeout */ | 2573 | /* set backlight timeout */ |
2412 | rb->backlight_set_timeout(settings.backlight_on); | 2574 | rb->backlight_set_timeout(settings.backlight_on); |
2413 | 2575 | ||
@@ -2637,7 +2799,8 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter) | |||
2637 | switch (rb->button_get_w_tmo(HZ/10)) | 2799 | switch (rb->button_get_w_tmo(HZ/10)) |
2638 | { | 2800 | { |
2639 | case BUTTON_OFF: /* save and exit */ | 2801 | case BUTTON_OFF: /* save and exit */ |
2640 | save_settings(); | 2802 | if(settings.save_mode == 1) |
2803 | save_settings(true); | ||
2641 | 2804 | ||
2642 | /* restore set backlight timeout */ | 2805 | /* restore set backlight timeout */ |
2643 | rb->backlight_set_timeout( | 2806 | rb->backlight_set_timeout( |
@@ -2657,7 +2820,7 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter) | |||
2657 | general_settings(); | 2820 | general_settings(); |
2658 | break; | 2821 | break; |
2659 | 2822 | ||
2660 | case BUTTON_F1 | BUTTON_REL: /* help */ | 2823 | case BUTTON_F1: /* help */ |
2661 | f1_screen(); | 2824 | f1_screen(); |
2662 | break; | 2825 | break; |
2663 | 2826 | ||