Slider improvements

master
erikkaashoek 5 years ago
parent 4828b068f2
commit e1d19d79c4

30
ui.c

@ -1833,12 +1833,12 @@ draw_menu_buttons(const menuitem_t *menu)
local_slider_positions = LCD_WIDTH/2+setting.slider_position; local_slider_positions = LCD_WIDTH/2+setting.slider_position;
goto draw_slider; goto draw_slider;
} else if (menu[i].data == KM_LOWOUTLEVEL) { } else if (menu[i].data == KM_LOWOUTLEVEL) {
local_slider_positions = (get_attenuation() + 76 ) * MENU_FORM_WIDTH / 70 + OFFSETX; local_slider_positions = ((get_attenuation() + 76 ) * (MENU_FORM_WIDTH-8)) / 70 + OFFSETX+4;
goto draw_slider; goto draw_slider;
} }
} }
if (MT_MASK(menu[i].type) == MT_ADV_CALLBACK && menu[i].reference == menu_sdrive_acb) { if (MT_MASK(menu[i].type) == MT_ADV_CALLBACK && menu[i].reference == menu_sdrive_acb) {
local_slider_positions = (menu_drive_value[setting.lo_drive] + 38 ) * MENU_FORM_WIDTH / 51 + OFFSETX; local_slider_positions = ((menu_drive_value[setting.lo_drive] + 38 ) * (MENU_FORM_WIDTH-8)) / 51 + OFFSETX+4;
draw_slider: draw_slider:
blit8BitWidthBitmap(local_slider_positions - 4, y, 7, 6, slider_bitmap); blit8BitWidthBitmap(local_slider_positions - 4, y, 7, 6, slider_bitmap);
} }
@ -1889,10 +1889,10 @@ void check_frequency_slider(uint32_t slider_freq)
} }
uint32_t half_span = setting.slider_span >> 1; uint32_t half_span = setting.slider_span >> 1;
if (minFreq + (uint32_t)half_span > slider_freq) { if (minFreq + (uint32_t)half_span > slider_freq) {
setting.slider_position -= (minFreq + half_span - slider_freq) / (setting.slider_span /MENU_FORM_WIDTH); // reposition if needed setting.slider_position -= (minFreq + half_span - slider_freq) / (setting.slider_span / (MENU_FORM_WIDTH-8)); // reposition if needed
} }
if (maxFreq < slider_freq + (uint32_t)half_span) { if (maxFreq < slider_freq + (uint32_t)half_span) {
setting.slider_position += (slider_freq + half_span - maxFreq) / (setting.slider_span /MENU_FORM_WIDTH); // reposition if needed setting.slider_position += (slider_freq + half_span - maxFreq) / (setting.slider_span /(MENU_FORM_WIDTH-8)); // reposition if needed
} }
} }
@ -1922,10 +1922,10 @@ menu_select_touch(int i)
keypad_mode = keypad; keypad_mode = keypad;
fetch_numeric_target(); fetch_numeric_target();
int new_slider = touch_x - LCD_WIDTH/2; int new_slider = touch_x - LCD_WIDTH/2;
if (new_slider < -MENU_FORM_WIDTH/2) if (new_slider < - (MENU_FORM_WIDTH-8)/2)
new_slider = -MENU_FORM_WIDTH/2; new_slider = -(MENU_FORM_WIDTH-8)/2;
if (new_slider > MENU_FORM_WIDTH/2) if (new_slider > (MENU_FORM_WIDTH-8)/2)
new_slider = MENU_FORM_WIDTH/2; new_slider = (MENU_FORM_WIDTH-8)/2;
if (menu_is_form(menu) && MT_MASK(menu[i].type) == MT_KEYPAD && keypad == KM_CENTER){ if (menu_is_form(menu) && MT_MASK(menu[i].type) == MT_KEYPAD && keypad == KM_CENTER){
#define TOUCH_DEAD_ZONE 40 #define TOUCH_DEAD_ZONE 40
if (mode == SL_UNKNOWN ) { if (mode == SL_UNKNOWN ) {
@ -1937,7 +1937,7 @@ menu_select_touch(int i)
} }
} }
if (mode == SL_MOVE ) { if (mode == SL_MOVE ) {
uistat.value = uistat.value - setting.slider_position * (setting.slider_span/MENU_FORM_WIDTH) + new_slider * (setting.slider_span/MENU_FORM_WIDTH); uistat.value = uistat.value - setting.slider_position * (setting.slider_span/(MENU_FORM_WIDTH-8)) + new_slider * (setting.slider_span/(MENU_FORM_WIDTH-8));
if (uistat.value < minFreq) if (uistat.value < minFreq)
uistat.value = minFreq; uistat.value = minFreq;
if (uistat.value > maxFreq) if (uistat.value > maxFreq)
@ -1972,30 +1972,38 @@ menu_select_touch(int i)
minFreq = 0; // And set minFreq to 0 for span display minFreq = 0; // And set minFreq to 0 for span display
uistat.value = setting.slider_span; uistat.value = setting.slider_span;
set_keypad_value(keypad); set_keypad_value(keypad);
#if 1
plot_printf(center_text, sizeof center_text, "WIDTH: %%s");
#else
center_text[0] = 'S'; center_text[0] = 'S';
center_text[1] = 'P'; center_text[1] = 'P';
center_text[2] = 'A'; center_text[2] = 'A';
center_text[3] = 'N'; center_text[3] = 'N';
#endif
draw_menu(); // Show slider span draw_menu(); // Show slider span
minFreq = old_minFreq; // and restore minFreq minFreq = old_minFreq; // and restore minFreq
uistat.value = (float) slider_freq; // and restore current slider freq uistat.value = (float) slider_freq; // and restore current slider freq
set_keypad_value(keypad); set_keypad_value(keypad);
#if 1
plot_printf(center_text, sizeof center_text, "FREQ: %%s");
#else
center_text[0] = 'F'; center_text[0] = 'F';
center_text[1] = 'R'; center_text[1] = 'R';
center_text[2] = 'E'; center_text[2] = 'E';
center_text[3] = 'Q'; center_text[3] = 'Q';
#endif
setting.slider_position = 0; // reset slider after span change setting.slider_position = 0; // reset slider after span change
check_frequency_slider(slider_freq); check_frequency_slider(slider_freq);
} }
} else if (menu_is_form(menu) && MT_MASK(menu[i].type) == MT_KEYPAD && keypad == KM_LOWOUTLEVEL) { } else if (menu_is_form(menu) && MT_MASK(menu[i].type) == MT_KEYPAD && keypad == KM_LOWOUTLEVEL) {
uistat.value = setting.offset + (touch_x - OFFSETX) *( -6 - -76) / MENU_FORM_WIDTH + -76; uistat.value = setting.offset + (touch_x - OFFSETX+4) *( -6 - -76) / (MENU_FORM_WIDTH-8) + -76;
set_keypad_value(keypad); set_keypad_value(keypad);
apply: apply:
perform(false, 0, get_sweep_frequency(ST_CENTER), false); perform(false, 0, get_sweep_frequency(ST_CENTER), false);
draw_menu(); draw_menu();
// } // }
} else if (MT_MASK(menu[i].type) == MT_ADV_CALLBACK && menu[i].reference == menu_sdrive_acb) { } else if (MT_MASK(menu[i].type) == MT_ADV_CALLBACK && menu[i].reference == menu_sdrive_acb) {
set_level( (touch_x - OFFSETX) *( 13 - -38) / MENU_FORM_WIDTH + -38 ); set_level( (touch_x - OFFSETX+4) *( 13 - -38) / (MENU_FORM_WIDTH-8) + -38 );
goto apply; goto apply;
} }
keypad_mode = old_keypad_mode; keypad_mode = old_keypad_mode;

@ -1492,7 +1492,7 @@ static const menuitem_t menu_sweep[] = {
}; };
char low_level_help_text[12] = "-76..-6"; char low_level_help_text[12] = "-76..-6";
char center_text[10] = "FREQ: %s"; char center_text[18] = "FREQ: %s";
static const menuitem_t menu_lowoutputmode[] = { static const menuitem_t menu_lowoutputmode[] = {
{ MT_FORM | MT_ADV_CALLBACK, 0, "LOW OUTPUT %s", menu_outputmode_acb}, { MT_FORM | MT_ADV_CALLBACK, 0, "LOW OUTPUT %s", menu_outputmode_acb},

Loading…
Cancel
Save

Powered by TurnKey Linux.