@@ -46,9 +46,34 @@ void CurveParam::value_changed(lv_event_t* e)
46
46
param->update ();
47
47
}
48
48
49
+ class CurveChoice : public Choice
50
+ {
51
+ public:
52
+ CurveChoice (Window* parent, CurveRef* ref, std::function<void (int32_t )> setRefValue, std::function<void (void )> refreshView) :
53
+ Choice (parent, rect_t {}, -MAX_CURVES, MAX_CURVES, GET_DEFAULT(ref->value), setRefValue),
54
+ ref (ref), refreshView(refreshView)
55
+ {
56
+ setTextHandler ([](int value) { return getCurveString (value); });
57
+ }
58
+
59
+ bool onLongPress () override
60
+ {
61
+ if (modelCurvesEnabled ()) {
62
+ if (ref->value ) {
63
+ ModelCurvesPage::pushEditCurve (abs (ref->value ) - 1 , refreshView);
64
+ }
65
+ }
66
+ return true ;
67
+ }
68
+
69
+ protected:
70
+ CurveRef* ref;
71
+ std::function<void (void )> refreshView;
72
+ };
73
+
49
74
CurveParam::CurveParam (Window* parent, const rect_t & rect, CurveRef* ref,
50
- std::function<void (int32_t )> setRefValue) :
51
- Window(parent, rect), ref(ref), setRefValue(setRefValue)
75
+ std::function<void (int32_t )> setRefValue, std::function<void( void )> refreshView ) :
76
+ Window(parent, rect), ref(ref)
52
77
{
53
78
padAll (PAD_TINY);
54
79
lv_obj_set_flex_flow (lvobj, LV_FLEX_FLOW_ROW_WRAP);
@@ -67,18 +92,16 @@ CurveParam::CurveParam(Window* parent, const rect_t& rect, CurveRef* ref,
67
92
68
93
// CURVE_REF_DIFF
69
94
// CURVE_REF_EXPO
70
- value_edit = new GVarNumberEdit (this , -100 , 100 , GET_DEFAULT (ref->value ), setRefValue);
71
- value_edit->setSuffix (" %" );
95
+ auto gv = new GVarNumberEdit (this , -100 , 100 , GET_DEFAULT (ref->value ), setRefValue);
96
+ gv->setSuffix (" %" );
97
+ value_edit = gv;
72
98
73
99
// CURVE_REF_FUNC
74
100
func_choice = new Choice (this , rect_t {}, STR_VCURVEFUNC, 0 , CURVE_BASE - 1 ,
75
101
GET_DEFAULT (ref->value ), setRefValue);
76
102
77
103
// CURVE_REF_CUSTOM
78
- cust_choice = new Choice (this , rect_t {}, -MAX_CURVES, MAX_CURVES,
79
- GET_DEFAULT (ref->value ), setRefValue);
80
- cust_choice->setTextHandler ([](int value) { return getCurveString (value); });
81
- cust_choice->set_lv_LongPressHandler (LongPressHandler, &(ref->value ));
104
+ cust_choice = new CurveChoice (this , ref, setRefValue, refreshView);
82
105
83
106
update ();
84
107
}
0 commit comments