diff --git a/ui.c b/ui.c index 54455d1..8ecd9cb 100644 --- a/ui.c +++ b/ui.c @@ -1756,6 +1756,7 @@ static const uint8_t check_box[] = { _BMP16(0b0000011110000000), }; static const char *step_text[5] = {"-10dB", "-1dB", "set", "+1dB", "+10dB"}; +static char step_text_freq[5][10] = { "-100MHz", "-10MHz", "set", "+10MHz", "+100MHz" }; static void draw_menu_buttons(const menuitem_t *menu) @@ -1831,15 +1832,25 @@ draw_menu_buttons(const menuitem_t *menu) if (MT_MASK(menu[i].type) == MT_KEYPAD) { if (menu[i].data == KM_CENTER) { local_slider_positions = LCD_WIDTH/2+setting.slider_position; - draw_slider: - blit8BitWidthBitmap(local_slider_positions - 4, y, 7, 5, slider_bitmap); + plot_printf(step_text_freq[0], sizeof step_text_freq[0], "-%3.1qHz", setting.slider_span); + plot_printf(step_text_freq[1], sizeof step_text_freq[1], "-%3.1qHz", setting.slider_span/10); + plot_printf(step_text_freq[3], sizeof step_text_freq[3], "+%3.1qHz", setting.slider_span/10); + plot_printf(step_text_freq[4], sizeof step_text_freq[4], "+%3.1qHz", setting.slider_span); + for (int i=0; i <= 4; i++) { + ili9341_drawstring(step_text_freq[i], button_start+12 + i * MENU_FORM_WIDTH/5, y+button_height-9); + } + goto draw_divider; } else if (menu[i].data == KM_LOWOUTLEVEL) { local_slider_positions = ((get_attenuation() + 76 ) * (MENU_FORM_WIDTH-8)) / 70 + OFFSETX+4; - for (int i=0; i <= 4; i++) + for (int i=0; i <= 4; i++) { ili9341_drawstring(step_text[i], button_start+12 + i * MENU_FORM_WIDTH/5, y+button_height-9); - for (int i = 1; i <= 4; i++) + } + draw_divider: + for (int i = 1; i <= 4; i++) { ili9341_line(button_start + i * MENU_FORM_WIDTH/5, y+button_height-9, button_start + i * MENU_FORM_WIDTH/5, y+button_height); - goto draw_slider; + } + draw_slider: + blit8BitWidthBitmap(local_slider_positions - 4, y, 7, 5, slider_bitmap); } else if (menu[i].data == KM_HIGHOUTLEVEL) { local_slider_positions = ((menu_drive_value[setting.lo_drive] + 38 ) * (MENU_FORM_WIDTH-8)) / 51 + OFFSETX+4; goto draw_slider; @@ -1908,7 +1919,7 @@ void check_frequency_slider(uint32_t slider_freq) static void menu_select_touch(int i, int pos) { - int step = 0; + int32_t step = 0; int do_exit = false; selection = i; draw_menu(); @@ -2049,7 +2060,28 @@ menu_select_touch(int i, int pos) uistat.value = get_level() + step; do_exit = true; goto apply_step; + } else if (menu_is_form(menu) && MT_MASK(menu[i].type) == MT_KEYPAD && keypad == KM_CENTER) { + switch (pos) { + case 0: + step = -setting.slider_span; + break; + case 1: + step = -setting.slider_span/10; + break; + case 2: + goto nogo; + case 3: + step = setting.slider_span/10; + break; + case 4: + step = setting.slider_span; + break; + } + uistat.value = get_sweep_frequency(ST_CENTER) + step; + do_exit = true; + goto apply_step; } + nogo: setting.slider_position = 0; // Reset slider when entering frequency prev_touch_button = -1;