summaryrefslogtreecommitdiff
path: root/apps/gui/quickscreen.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/gui/quickscreen.c')
-rw-r--r--apps/gui/quickscreen.c70
1 files changed, 18 insertions, 52 deletions
diff --git a/apps/gui/quickscreen.c b/apps/gui/quickscreen.c
index e998ee61ad..9465a2e5af 100644
--- a/apps/gui/quickscreen.c
+++ b/apps/gui/quickscreen.c
@@ -29,6 +29,7 @@
29#include "kernel.h" 29#include "kernel.h"
30#include "misc.h" 30#include "misc.h"
31#include "statusbar.h" 31#include "statusbar.h"
32#include "action.h"
32 33
33void gui_quickscreen_init(struct gui_quickscreen * qs, 34void gui_quickscreen_init(struct gui_quickscreen * qs,
34 struct option_select *left_option, 35 struct option_select *left_option,
@@ -128,59 +129,28 @@ bool gui_quickscreen_do_button(struct gui_quickscreen * qs, int button)
128 129
129 switch(button) 130 switch(button)
130 { 131 {
131 case QUICKSCREEN_LEFT : 132 case ACTION_QS_LEFT:
132 case QUICKSCREEN_LEFT | BUTTON_REPEAT :
133#ifdef QUICKSCREEN_RC_LEFT
134 case QUICKSCREEN_RC_LEFT :
135 case QUICKSCREEN_RC_LEFT | BUTTON_REPEAT :
136#endif
137 option_select_next(qs->left_option); 133 option_select_next(qs->left_option);
138 return(true); 134 return(true);
139 135
140 case QUICKSCREEN_BOTTOM : 136 case ACTION_QS_DOWN:
141 case QUICKSCREEN_BOTTOM | BUTTON_REPEAT :
142#ifdef QUICKSCREEN_RC_BOTTOM
143 case QUICKSCREEN_RC_BOTTOM :
144 case QUICKSCREEN_RC_BOTTOM | BUTTON_REPEAT :
145#endif
146 option_select_next(qs->bottom_option); 137 option_select_next(qs->bottom_option);
147 return(true); 138 return(true);
148 139
149 case QUICKSCREEN_RIGHT : 140 case ACTION_QS_RIGHT:
150 case QUICKSCREEN_RIGHT | BUTTON_REPEAT :
151#ifdef QUICKSCREEN_RC_RIGHT
152 case QUICKSCREEN_RC_RIGHT :
153 case QUICKSCREEN_RC_RIGHT | BUTTON_REPEAT :
154#endif
155 option_select_next(qs->right_option); 141 option_select_next(qs->right_option);
156 return(true); 142 return(true);
157 143
158#ifdef QUICKSCREEN_BOTTOM_INV 144 case ACTION_QS_DOWNINV:
159 case QUICKSCREEN_BOTTOM_INV :
160 case QUICKSCREEN_BOTTOM_INV | BUTTON_REPEAT :
161#endif
162#ifdef QUICKSCREEN_RC_BOTTOM_INV
163 case QUICKSCREEN_RC_BOTTOM_INV :
164 case QUICKSCREEN_RC_BOTTOM_INV | BUTTON_REPEAT :
165#endif
166#if defined(QUICKSCREEN_RC_BOTTOM_INV) || defined(QUICKSCREEN_BOTTOM_INV)
167 option_select_prev(qs->bottom_option); 145 option_select_prev(qs->bottom_option);
168 return(true); 146 return(true);
169#endif
170 } 147 }
171 return(false); 148 return(false);
172} 149}
173#ifdef BUTTON_REMOTE
174#define uncombine_button(key_read, combined_button) \
175 key_read & ~(combined_button & ~BUTTON_REMOTE)
176#else
177#define uncombine_button(key_read, combined_button) \
178 key_read & ~combined_button
179#endif
180 150
181bool gui_syncquickscreen_run(struct gui_quickscreen * qs, int button_enter) 151bool gui_syncquickscreen_run(struct gui_quickscreen * qs, int button_enter)
182{ 152{
183 int raw_key, button; 153 int button;
184 /* To quit we need either : 154 /* To quit we need either :
185 * - a second press on the button that made us enter 155 * - a second press on the button that made us enter
186 * - an action taken while pressing the enter button, 156 * - an action taken while pressing the enter button,
@@ -188,9 +158,9 @@ bool gui_syncquickscreen_run(struct gui_quickscreen * qs, int button_enter)
188 bool can_quit=false; 158 bool can_quit=false;
189 gui_syncquickscreen_draw(qs); 159 gui_syncquickscreen_draw(qs);
190 gui_syncstatusbar_draw(&statusbars, true); 160 gui_syncstatusbar_draw(&statusbars, true);
161 action_signalscreenchange();
191 while (true) { 162 while (true) {
192 raw_key = button_get(true); 163 button = get_action(CONTEXT_QUICKSCREEN,TIMEOUT_BLOCK);
193 button=uncombine_button(raw_key, button_enter);
194 if(default_event_handler(button) == SYS_USB_CONNECTED) 164 if(default_event_handler(button) == SYS_USB_CONNECTED)
195 return(true); 165 return(true);
196 if(gui_quickscreen_do_button(qs, button)) 166 if(gui_quickscreen_do_button(qs, button))
@@ -200,23 +170,19 @@ bool gui_syncquickscreen_run(struct gui_quickscreen * qs, int button_enter)
200 qs->callback(qs); 170 qs->callback(qs);
201 gui_syncquickscreen_draw(qs); 171 gui_syncquickscreen_draw(qs);
202 } 172 }
203 else if(raw_key==button_enter) 173 else if(button==button_enter)
204 can_quit=true; 174 can_quit=true;
205 if(raw_key==(button_enter | BUTTON_REL) && can_quit) 175
206 return(false); 176 if((button == button_enter) && can_quit)
207#ifdef QUICKSCREEN_QUIT 177 break;
208 if(raw_key==QUICKSCREEN_QUIT 178
209#ifdef QUICKSCREEN_QUIT2 179 if(button==ACTION_STD_CANCEL)
210 || raw_key==QUICKSCREEN_QUIT2 180 break;
211#endif 181
212#if QUICKSCREEN_RC_QUIT
213 || raw_key==QUICKSCREEN_RC_QUIT
214#endif
215 )
216 return(false);
217#endif /* QUICKSCREEN_QUIT */
218 gui_syncstatusbar_draw(&statusbars, false); 182 gui_syncstatusbar_draw(&statusbars, false);
219 } 183 }
184 action_signalscreenchange();
185 return false;
220} 186}
221 187
222#endif /* HAVE_QUICKSCREEN */ 188#endif /* HAVE_QUICKSCREEN */