fix(slider): edit mode
This commit is contained in:
committed by
Raphael Coeffic
parent
6177a94486
commit
85e9f1d7ca
+7
-12
@@ -49,8 +49,11 @@ void FormField::setEditMode(bool newEditMode)
|
||||
|
||||
void FormField::onClicked()
|
||||
{
|
||||
setEditMode(!editMode);
|
||||
invalidate();
|
||||
lv_indev_type_t indev_type = lv_indev_get_type(lv_indev_get_act());
|
||||
if(indev_type != LV_INDEV_TYPE_POINTER) {
|
||||
setEditMode(!editMode);
|
||||
invalidate();
|
||||
}
|
||||
}
|
||||
|
||||
void FormField::onCancel()
|
||||
@@ -63,16 +66,8 @@ void FormField::onCancel()
|
||||
}
|
||||
}
|
||||
|
||||
FormGroup::Line::Line(FormGroup* parent, lv_obj_t* obj,
|
||||
FlexGridLayout* layout) :
|
||||
Window(parent, obj), layout(layout), group(parent)
|
||||
{
|
||||
construct();
|
||||
}
|
||||
|
||||
FormGroup::Line::Line(Window* parent, lv_obj_t* obj, FlexGridLayout* layout,
|
||||
FormGroup* group) :
|
||||
Window(parent, obj), layout(layout), group(group)
|
||||
FormGroup::Line::Line(Window* parent, lv_obj_t* obj, FlexGridLayout* layout) :
|
||||
Window(parent, obj), layout(layout)
|
||||
{
|
||||
construct();
|
||||
}
|
||||
|
||||
+5
-6
@@ -83,17 +83,16 @@ class FormGroup : public Window
|
||||
public:
|
||||
class Line : public Window
|
||||
{
|
||||
FlexGridLayout* layout;
|
||||
FormGroup* group;
|
||||
FlexGridLayout *layout;
|
||||
FormGroup *group;
|
||||
|
||||
void construct();
|
||||
|
||||
|
||||
public:
|
||||
Line(FormGroup *parent, lv_obj_t *obj, FlexGridLayout* layout);
|
||||
Line(Window *parent, lv_obj_t *obj, FlexGridLayout* layout, FormGroup* group);
|
||||
Line(Window *parent, lv_obj_t *obj, FlexGridLayout *layout = nullptr);
|
||||
|
||||
protected:
|
||||
void addChild(Window* window) override;
|
||||
void addChild(Window *window) override;
|
||||
};
|
||||
|
||||
FormGroup(Window *parent, const rect_t &rect, WindowFlags windowflags = 0,
|
||||
|
||||
+3
-35
@@ -22,19 +22,14 @@
|
||||
|
||||
#include "LvglWrapper.h"
|
||||
|
||||
static void slider_changed_cb(lv_event_t * e)
|
||||
static void slider_changed_cb(lv_event_t* e)
|
||||
{
|
||||
lv_obj_t * target = lv_event_get_target(e);
|
||||
lv_obj_t* target = lv_event_get_target(e);
|
||||
auto code = lv_event_get_code(e);
|
||||
|
||||
Slider* sl = (Slider*)lv_obj_get_user_data(target);
|
||||
if (code == LV_EVENT_VALUE_CHANGED) {
|
||||
// if (!lv_slider_is_dragged(target)) {
|
||||
if (sl != nullptr)
|
||||
sl->setValue(lv_slider_get_value(target));
|
||||
// }
|
||||
} else if (code == LV_EVENT_PRESSED) {
|
||||
sl->setEditMode(true);
|
||||
if (sl != nullptr) sl->setValue(lv_slider_get_value(target));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -100,36 +95,9 @@ Slider::Slider(Window* parent, const rect_t& rect, int32_t vmin, int32_t vmax,
|
||||
lv_obj_add_style(lvobj, &style_edit, LV_PART_KNOB | LV_STATE_FOCUSED | LV_STATE_EDITED);
|
||||
}
|
||||
|
||||
void Slider::paint(BitmapBuffer * dc)
|
||||
{
|
||||
}
|
||||
|
||||
int Slider::value(coord_t x) const
|
||||
{
|
||||
return vmin + ((vmax - vmin) * x + (rect.w / 2)) / rect.w;
|
||||
}
|
||||
|
||||
#if defined(HARDWARE_KEYS)
|
||||
void Slider::onEvent(event_t event)
|
||||
{
|
||||
TRACE_WINDOWS("%s received event 0x%X", getWindowDebugString().c_str(), event);
|
||||
|
||||
if (editMode) {
|
||||
if (event == EVT_ROTARY_RIGHT) {
|
||||
setValue(_getValue() + ROTARY_ENCODER_SPEED());
|
||||
lv_slider_set_value(lvobj, _getValue(), LV_ANIM_OFF);
|
||||
onKeyPress();
|
||||
return;
|
||||
}
|
||||
else if (event == EVT_ROTARY_LEFT) {
|
||||
setValue(_getValue() - ROTARY_ENCODER_SPEED());
|
||||
lv_slider_set_value(lvobj, _getValue(), LV_ANIM_OFF);
|
||||
onKeyPress();
|
||||
return;
|
||||
} else if (event == EVT_KEY_FIRST(KEY_EXIT))
|
||||
return;
|
||||
}
|
||||
|
||||
FormField::onEvent(event);
|
||||
}
|
||||
#endif
|
||||
|
||||
+3
-10
@@ -33,21 +33,14 @@ class Slider : public FormField
|
||||
|
||||
void setValue(int value)
|
||||
{
|
||||
if (_setValue != nullptr)
|
||||
_setValue(limit(vmin, value, vmax));
|
||||
if (_setValue != nullptr) _setValue(limit(vmin, value, vmax));
|
||||
}
|
||||
|
||||
void paint(BitmapBuffer* dc) override;
|
||||
|
||||
#if defined(HARDWARE_KEYS)
|
||||
void onEvent(event_t event) override;
|
||||
#endif
|
||||
|
||||
protected:
|
||||
int value(coord_t x) const;
|
||||
int vmin;
|
||||
int vmax;
|
||||
bool sliding = false;
|
||||
std::function<int()> _getValue;
|
||||
std::function<void(int)> _setValue;
|
||||
|
||||
int value(coord_t x) const;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user