Updated slider

master
erikkaashoek 5 years ago
parent 05351c533f
commit bca0f83a46

@ -203,7 +203,8 @@ extern const char *info_about[];
extern const char * const unit_string[]; extern const char * const unit_string[];
extern uint8_t signal_is_AM; extern uint8_t signal_is_AM;
extern const int reffer_freq[]; extern const int reffer_freq[];
extern uint32_t minFreq;
extern uint32_t maxFreq;
int level_is_calibrated(void); int level_is_calibrated(void);
void reset_settings(int); void reset_settings(int);
void update_min_max_freq(void); void update_min_max_freq(void);

39
ui.c

@ -1877,13 +1877,19 @@ menu_select_touch(int i)
if (menu_is_form(menu) && MT_MASK(menu[i].type) == MT_KEYPAD && menu[i].data == KM_CENTER){ if (menu_is_form(menu) && MT_MASK(menu[i].type) == MT_KEYPAD && menu[i].data == KM_CENTER){
int touch_x, touch_y, prev_touch_x; int touch_x, touch_y, prev_touch_x;
touch_position(&touch_x, &touch_y); touch_position(&touch_x, &touch_y);
float old_value;
int v = menu[i].data; int v = menu[i].data;
int old_keypad_mode = keypad_mode; // int old_keypad_mode = keypad_mode;
#if 0
keypad_mode = v; keypad_mode = v;
fetch_numeric_target(); fetch_numeric_target();
float old_value;
old_value = uistat.value - slider_position * slider_delta; // Center value; old_value = uistat.value - slider_position * slider_delta; // Center value;
keypad_mode = old_keypad_mode; if (old_value < minFreq)
old_value = minFreq;
if (old_value > maxFreq)
old_value = maxFreq;
#endif
// keypad_mode = old_keypad_mode;
systime_t dt = 0; systime_t dt = 0;
int moving = SL_UNKNOWN; int moving = SL_UNKNOWN;
while (touch_check() != EVT_TOUCH_NONE) { while (touch_check() != EVT_TOUCH_NONE) {
@ -1899,6 +1905,7 @@ menu_select_touch(int i)
fetch_numeric_target(); fetch_numeric_target();
#define TOUCH_DEAD_ZONE 20 #define TOUCH_DEAD_ZONE 20
int new_slider = touch_x - LCD_WIDTH/2; int new_slider = touch_x - LCD_WIDTH/2;
#if 1
float saved_value; float saved_value;
if (moving == SL_UNKNOWN ) { if (moving == SL_UNKNOWN ) {
if (slider_position - TOUCH_DEAD_ZONE < new_slider && new_slider < slider_position + TOUCH_DEAD_ZONE) { // Pick up slider if (slider_position - TOUCH_DEAD_ZONE < new_slider && new_slider < slider_position + TOUCH_DEAD_ZONE) { // Pick up slider
@ -1909,34 +1916,48 @@ menu_select_touch(int i)
} }
} }
if (moving == SL_MOVE ) { if (moving == SL_MOVE ) {
#endif
if (touch_x != prev_touch_x /* - 1 || prev_touch_x + 1 < touch_x */ ) { if (touch_x != prev_touch_x /* - 1 || prev_touch_x + 1 < touch_x */ ) {
uistat.value = old_value + new_slider * slider_delta; uistat.value = uistat.value - slider_position * slider_delta + new_slider * slider_delta;
if (uistat.value < 0) if (uistat.value < minFreq)
uistat.value = 0; uistat.value = minFreq;
if (uistat.value > maxFreq)
uistat.value = maxFreq;
slider_position = new_slider; slider_position = new_slider;
keypad_mode = v; keypad_mode = v;
set_numeric_value(); set_numeric_value();
perform(false, 0, (uint32_t)uistat.value, false); perform(false, 0, (uint32_t)uistat.value, false);
draw_menu(); draw_menu();
} }
#if 1
} else if (moving == SL_SPAN ){ } else if (moving == SL_SPAN ){
if (touch_x != prev_touch_x) { if (touch_x != prev_touch_x) {
first_span: first_span:
saved_value = uistat.value; saved_value = uistat.value;
int pw=touch_x * 5 / LCD_WIDTH; int pw=touch_x * 6 / LCD_WIDTH;
slider_position = - LCD_WIDTH/2 + pw * LCD_WIDTH / 6 ; // Show delta on slider
slider_delta = 100; slider_delta = 100;
while (pw-->0) while (pw-->0)
slider_delta *=10; slider_delta *=10;
slider_position = 0; // Use current slider as center uint32_t old_minFreq = minFreq;
minFreq = 0;
uistat.value = slider_delta; uistat.value = slider_delta;
keypad_mode = v; keypad_mode = v;
set_numeric_value(); set_numeric_value();
draw_menu(); // Show slaider span draw_menu(); // Show slider span
slider_position = 0; // reset slider
minFreq = old_minFreq;
uistat.value = saved_value; uistat.value = saved_value;
keypad_mode = v; keypad_mode = v;
set_numeric_value(); set_numeric_value();
} }
} }
#else
int pw=(LCD_HEIGHT - touch_y) * 6 / LCD_HEIGHT;
slider_delta = 100;
while (pw-->0)
slider_delta *=10;
#endif
keypad_mode = old_keypad_mode; keypad_mode = old_keypad_mode;
// return; // return;
} }

@ -2027,7 +2027,7 @@ static void fetch_numeric_target(void)
break; break;
case KM_CENTER: case KM_CENTER:
uistat.value = get_sweep_frequency(ST_CENTER); uistat.value = get_sweep_frequency(ST_CENTER);
plot_printf(uistat.text, sizeof uistat.text, "%3.3fMHz", uistat.value / 1000000.0); plot_printf(uistat.text, sizeof uistat.text, "%3.4fMHz", uistat.value / 1000000.0);
break; break;
case KM_SPAN: case KM_SPAN:
uistat.value = get_sweep_frequency(ST_SPAN); uistat.value = get_sweep_frequency(ST_SPAN);

Loading…
Cancel
Save

Powered by TurnKey Linux.