diff options
author | Kevin Ferrare <kevin@rockbox.org> | 2005-11-22 03:38:07 +0000 |
---|---|---|
committer | Kevin Ferrare <kevin@rockbox.org> | 2005-11-22 03:38:07 +0000 |
commit | 74b6af93b1436dc61e8f10b3aff3c79face5faba (patch) | |
tree | f5d17c6b0adb9f6cc448a112b309a6dff7451a76 /apps/gui/select.c | |
parent | 8042640ce967014f10dbc0e3f382cd1876310b66 (diff) | |
download | rockbox-74b6af93b1436dc61e8f10b3aff3c79face5faba.tar.gz rockbox-74b6af93b1436dc61e8f10b3aff3c79face5faba.zip |
Added multi-screen support for quickscreen (mostly rewritten from scratch) and USB screen ; just looking at the hour makes me think it could be buggy
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8039 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/gui/select.c')
-rw-r--r-- | apps/gui/select.c | 78 |
1 files changed, 10 insertions, 68 deletions
diff --git a/apps/gui/select.c b/apps/gui/select.c index 5cde812a2f..b632177fd7 100644 --- a/apps/gui/select.c +++ b/apps/gui/select.c | |||
@@ -21,9 +21,9 @@ | |||
21 | 21 | ||
22 | #include "lang.h" | 22 | #include "lang.h" |
23 | #include "textarea.h" | 23 | #include "textarea.h" |
24 | #include "sprintf.h" | ||
25 | #include "kernel.h" | ||
26 | #include "screen_access.h" | 24 | #include "screen_access.h" |
25 | #include "kernel.h" | ||
26 | |||
27 | 27 | ||
28 | void gui_select_init_numeric(struct gui_select * select, | 28 | void gui_select_init_numeric(struct gui_select * select, |
29 | const char * title, | 29 | const char * title, |
@@ -32,23 +32,12 @@ void gui_select_init_numeric(struct gui_select * select, | |||
32 | int max_value, | 32 | int max_value, |
33 | int step, | 33 | int step, |
34 | const char * unit, | 34 | const char * unit, |
35 | void (*formatter)(char* dest, | 35 | option_formatter *formatter) |
36 | int dest_length, | ||
37 | int variable, | ||
38 | const char* unit) | ||
39 | ) | ||
40 | { | 36 | { |
41 | select->canceled=false; | 37 | select->canceled=false; |
42 | select->validated=false; | 38 | select->validated=false; |
43 | select->title=title; | 39 | option_select_init_numeric(&select->options, title, init_value, |
44 | select->min_value=min_value; | 40 | min_value, max_value, step, unit, formatter); |
45 | select->max_value=max_value+1; | ||
46 | select->option=init_value; | ||
47 | select->step=step; | ||
48 | select->extra_string=unit; | ||
49 | select->formatter=formatter; | ||
50 | select->items=NULL; | ||
51 | select->limit_loop=false; | ||
52 | } | 41 | } |
53 | 42 | ||
54 | void gui_select_init_items(struct gui_select * select, | 43 | void gui_select_init_items(struct gui_select * select, |
@@ -59,69 +48,22 @@ void gui_select_init_items(struct gui_select * select, | |||
59 | { | 48 | { |
60 | select->canceled=false; | 49 | select->canceled=false; |
61 | select->validated=false; | 50 | select->validated=false; |
62 | select->title=title; | 51 | option_select_init_items(&select->options, title, selected, items, nb_items); |
63 | select->min_value=0; | ||
64 | select->max_value=nb_items; | ||
65 | select->option=selected; | ||
66 | select->step=1; | ||
67 | select->formatter=NULL; | ||
68 | select->items=items; | ||
69 | select->limit_loop=false; | ||
70 | } | ||
71 | |||
72 | void gui_select_next(struct gui_select * select) | ||
73 | { | ||
74 | if(select->option + select->step >= select->max_value) | ||
75 | { | ||
76 | if(!select->limit_loop) | ||
77 | { | ||
78 | if(select->option==select->max_value-1) | ||
79 | select->option=select->min_value; | ||
80 | else | ||
81 | select->option=select->max_value-1; | ||
82 | } | ||
83 | } | ||
84 | else | ||
85 | select->option+=select->step; | ||
86 | } | ||
87 | |||
88 | void gui_select_prev(struct gui_select * select) | ||
89 | { | ||
90 | if(select->option - select->step < select->min_value) | ||
91 | { | ||
92 | if(!select->limit_loop) | ||
93 | { | ||
94 | if(select->option==select->min_value) | ||
95 | select->option=select->max_value-1; | ||
96 | else | ||
97 | select->option=select->min_value; | ||
98 | } | ||
99 | } | ||
100 | else | ||
101 | select->option-=select->step; | ||
102 | } | 52 | } |
103 | 53 | ||
104 | void gui_select_draw(struct gui_select * select, struct screen * display) | 54 | void gui_select_draw(struct gui_select * select, struct screen * display) |
105 | { | 55 | { |
56 | char buffer[30]; | ||
57 | const char * selected=option_select_get_text(&(select->options), buffer); | ||
106 | #ifdef HAVE_LCD_BITMAP | 58 | #ifdef HAVE_LCD_BITMAP |
107 | screen_set_xmargin(display, 0); | 59 | screen_set_xmargin(display, 0); |
108 | #endif | 60 | #endif |
109 | gui_textarea_clear(display); | 61 | gui_textarea_clear(display); |
110 | display->puts_scroll(0, 0, select->title); | 62 | display->puts_scroll(0, 0, option_select_get_title(&(select->options))); |
111 | 63 | ||
112 | if(gui_select_is_canceled(select)) | 64 | if(gui_select_is_canceled(select)) |
113 | display->puts_scroll(0, 0, str(LANG_MENU_SETTING_CANCEL)); | 65 | display->puts_scroll(0, 0, str(LANG_MENU_SETTING_CANCEL)); |
114 | if(select->items) | 66 | display->puts_scroll(0, 1, selected); |
115 | display->puts_scroll(0, 1, P2STR(select->items[select->option].string)); | ||
116 | else | ||
117 | { | ||
118 | char buffer[30]; | ||
119 | if(!select->formatter) | ||
120 | snprintf(buffer, sizeof buffer,"%d %s", select->option, select->extra_string); | ||
121 | else | ||
122 | select->formatter(buffer, sizeof buffer, select->option, select->extra_string); | ||
123 | display->puts_scroll(0, 1, buffer); | ||
124 | } | ||
125 | gui_textarea_update(display); | 67 | gui_textarea_update(display); |
126 | } | 68 | } |
127 | 69 | ||