WIP: touch operation on numeric input area

This commit is contained in:
TT 2017-10-01 08:59:33 +09:00
parent b64826b76a
commit e0197b8381
2 changed files with 43 additions and 7 deletions

2
main.c
View file

@ -687,7 +687,7 @@ get_sweep_frequency(int type)
} else { } else {
switch (type) { switch (type) {
case ST_START: return frequency0 + frequency1/2; case ST_START: return frequency0 + frequency1/2;
case ST_STOP: return frequency1 - frequency1/2; case ST_STOP: return frequency0 - frequency1/2;
case ST_CENTER: return frequency0; case ST_CENTER: return frequency0;
case ST_SPAN: return -frequency1; case ST_SPAN: return -frequency1;
case ST_CW: return frequency0; case ST_CW: return frequency0;

48
ui.c
View file

@ -1487,11 +1487,41 @@ keypad_apply_touch(void)
return -1; return -1;
} }
void
numeric_apply_touch(void)
{
int touch_x, touch_y;
int i = 0;
touch_position(&touch_x, &touch_y);
if (touch_x < 64) {
ui_mode_normal();
return;
}
if (touch_y < 240-32) {
ui_mode_normal();
return;
}
if (touch_x > 64+9*20+8+8) {
ui_mode_keypad(keypad_mode);
ui_process_keypad();
return;
}
i = 9 - (touch_x - 64) / 20;
if (uistat.digit != i) {
uistat.digit = i;
draw_numeric_area();
}
return;
}
void void
ui_process_numeric(void) ui_process_numeric(void)
{ {
int status = btn_check(); int status = btn_check();
if (status != 0) { if (status != 0) {
if (status == EVT_BUTTON_SINGLE_CLICK) { if (status == EVT_BUTTON_SINGLE_CLICK) {
status = btn_wait_release(); status = btn_wait_release();
@ -1517,9 +1547,7 @@ ui_process_numeric(void)
uistat.digit++; uistat.digit++;
draw_numeric_area(); draw_numeric_area();
} else { } else {
// cancel operation goto exit;
ui_mode_normal();
break;
} }
} }
if (status & EVT_UP) { if (status & EVT_UP) {
@ -1527,9 +1555,7 @@ ui_process_numeric(void)
uistat.digit--; uistat.digit--;
draw_numeric_area(); draw_numeric_area();
} else { } else {
// cancel operation goto exit;
ui_mode_normal();
break;
} }
} }
} else { } else {
@ -1550,6 +1576,12 @@ ui_process_numeric(void)
} while (status != 0); } while (status != 0);
} }
} }
return;
exit:
// cancel operation
ui_mode_normal();
} }
void void
@ -1716,6 +1748,10 @@ void ui_process_touch(void)
case UI_MENU: case UI_MENU:
menu_apply_touch(); menu_apply_touch();
break; break;
case UI_NUMERIC:
numeric_apply_touch();
break;
} }
} }
touch_start_watchdog(); touch_start_watchdog();