diff options
Diffstat (limited to 'apps/sound_menu.c')
-rw-r--r-- | apps/sound_menu.c | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/apps/sound_menu.c b/apps/sound_menu.c index 50ba26582d..cbfc7a714e 100644 --- a/apps/sound_menu.c +++ b/apps/sound_menu.c | |||
@@ -25,6 +25,13 @@ | |||
25 | #include "mpeg.h" | 25 | #include "mpeg.h" |
26 | #include "settings.h" | 26 | #include "settings.h" |
27 | 27 | ||
28 | static char *fmt[] = | ||
29 | { | ||
30 | "", /* no decimals */ | ||
31 | "%d.%d %s ", /* 1 decimal */ | ||
32 | "%d.%02d %s " /* 2 decimals */ | ||
33 | }; | ||
34 | |||
28 | void set_sound(char* string, | 35 | void set_sound(char* string, |
29 | int* variable, | 36 | int* variable, |
30 | int setting) | 37 | int setting) |
@@ -32,10 +39,14 @@ void set_sound(char* string, | |||
32 | bool done = false; | 39 | bool done = false; |
33 | int min, max; | 40 | int min, max; |
34 | int val; | 41 | int val; |
42 | int numdec; | ||
43 | int integer; | ||
44 | int dec; | ||
35 | char* unit; | 45 | char* unit; |
36 | char str[32]; | 46 | char str[32]; |
37 | 47 | ||
38 | unit = mpeg_sound_unit(setting); | 48 | unit = mpeg_sound_unit(setting); |
49 | numdec = mpeg_sound_numdecimals(setting); | ||
39 | min = mpeg_sound_min(setting); | 50 | min = mpeg_sound_min(setting); |
40 | max = mpeg_sound_max(setting); | 51 | max = mpeg_sound_max(setting); |
41 | 52 | ||
@@ -44,7 +55,16 @@ void set_sound(char* string, | |||
44 | 55 | ||
45 | while (!done) { | 56 | while (!done) { |
46 | val = mpeg_val2phys(setting, *variable); | 57 | val = mpeg_val2phys(setting, *variable); |
47 | snprintf(str,sizeof str,"%d %s ", val, unit); | 58 | if(numdec) |
59 | { | ||
60 | integer = val / (10 * numdec); | ||
61 | dec = val % (10 * numdec); | ||
62 | snprintf(str,sizeof str, fmt[numdec], integer, dec, unit); | ||
63 | } | ||
64 | else | ||
65 | { | ||
66 | snprintf(str,sizeof str,"%d %s ", val, unit); | ||
67 | } | ||
48 | lcd_puts(0,1,str); | 68 | lcd_puts(0,1,str); |
49 | lcd_update(); | 69 | lcd_update(); |
50 | 70 | ||