feat(event) rework the prototype of lv_event_cb
It encapsulates all event related parameters into a single lv_event_t obejct.
This commit is contained in:
@@ -117,7 +117,7 @@ lv_obj_set_event_cb(btn, btn_event_cb); /*Assign a callback to t
|
|||||||
|
|
||||||
void btn_event_cb(lv_obj_t * btn, lv_event_t event)
|
void btn_event_cb(lv_obj_t * btn, lv_event_t event)
|
||||||
{
|
{
|
||||||
if(event == LV_EVENT_CLICKED) {
|
if(code == LV_EVENT_CLICKED) {
|
||||||
printf("Clicked\n");
|
printf("Clicked\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -176,7 +176,7 @@ There are 2 custom pointer that are available in the events:
|
|||||||
- `user_data`: set when the event is registered.
|
- `user_data`: set when the event is registered.
|
||||||
- `event_param`: set when the event is sent in `lv_event_send`
|
- `event_param`: set when the event is sent in `lv_event_send`
|
||||||
|
|
||||||
In any event callback these pointer can be get with `lv_event_get_user_data()` and `lv_event_get_param()`.
|
In any event callback these pointer can be get with `lv_event_get_user_data(e)` and `lv_event_get_param(e)`.
|
||||||
|
|
||||||
|
|
||||||
## Event bubbling
|
## Event bubbling
|
||||||
|
|||||||
@@ -1,9 +1,11 @@
|
|||||||
#include "../lv_examples.h"
|
#include "../lv_examples.h"
|
||||||
#if LV_BUILD_EXAMPLES && LV_USE_BTN
|
#if LV_BUILD_EXAMPLES && LV_USE_BTN
|
||||||
|
|
||||||
static void btn_event_cb(lv_obj_t * btn, lv_event_t event)
|
static void btn_event_cb(lv_event_t * e)
|
||||||
{
|
{
|
||||||
if(event == LV_EVENT_CLICKED) {
|
lv_event_code_t code = lv_event_get_code(e);
|
||||||
|
lv_obj_t * btn = lv_event_get_target(e);
|
||||||
|
if(code == LV_EVENT_CLICKED) {
|
||||||
static uint8_t cnt = 0;
|
static uint8_t cnt = 0;
|
||||||
cnt++;
|
cnt++;
|
||||||
|
|
||||||
|
|||||||
@@ -3,9 +3,12 @@
|
|||||||
|
|
||||||
static lv_obj_t * label;
|
static lv_obj_t * label;
|
||||||
|
|
||||||
static void slider_event_cb(lv_obj_t * slider, lv_event_t event)
|
static void slider_event_cb(lv_event_t * e)
|
||||||
{
|
{
|
||||||
if(event == LV_EVENT_VALUE_CHANGED) {
|
lv_event_code_t code = lv_event_get_code(e);
|
||||||
|
lv_obj_t * slider = lv_event_get_target(e);
|
||||||
|
|
||||||
|
if(code == LV_EVENT_VALUE_CHANGED) {
|
||||||
/*Refresh the text*/
|
/*Refresh the text*/
|
||||||
lv_label_set_text_fmt(label, "%d", lv_slider_get_value(slider));
|
lv_label_set_text_fmt(label, "%d", lv_slider_get_value(slider));
|
||||||
lv_obj_align_to(label, slider, LV_ALIGN_OUT_TOP_MID, 0, -15); /*Align below the slider*/
|
lv_obj_align_to(label, slider, LV_ALIGN_OUT_TOP_MID, 0, -15); /*Align below the slider*/
|
||||||
|
|||||||
@@ -1,10 +1,13 @@
|
|||||||
#include "../lv_examples.h"
|
#include "../lv_examples.h"
|
||||||
#if LV_BUILD_EXAMPLES && LV_USE_FLEX
|
#if LV_BUILD_EXAMPLES && LV_USE_FLEX
|
||||||
|
|
||||||
static void sw_event_cb(lv_obj_t * sw, lv_event_t e)
|
static void sw_event_cb(lv_event_t * e)
|
||||||
{
|
{
|
||||||
if(e == LV_EVENT_VALUE_CHANGED) {
|
lv_event_code_t code = lv_event_get_code(e);
|
||||||
lv_obj_t * list = lv_event_get_user_data();
|
lv_obj_t * sw = lv_event_get_target(e);
|
||||||
|
|
||||||
|
if(code == LV_EVENT_VALUE_CHANGED) {
|
||||||
|
lv_obj_t * list = lv_event_get_user_data(e);
|
||||||
|
|
||||||
if(lv_obj_has_state(sw, LV_STATE_CHECKED)) lv_obj_add_flag(list, LV_OBJ_FLAG_SCROLL_ONE);
|
if(lv_obj_has_state(sw, LV_STATE_CHECKED)) lv_obj_add_flag(list, LV_OBJ_FLAG_SCROLL_ONE);
|
||||||
else lv_obj_clear_flag(list, LV_OBJ_FLAG_SCROLL_ONE);
|
else lv_obj_clear_flag(list, LV_OBJ_FLAG_SCROLL_ONE);
|
||||||
|
|||||||
@@ -3,10 +3,13 @@
|
|||||||
|
|
||||||
static uint32_t btn_cnt = 1;
|
static uint32_t btn_cnt = 1;
|
||||||
|
|
||||||
static void float_btn_event_cb(lv_obj_t * float_btn, lv_event_t e)
|
static void float_btn_event_cb(lv_event_t * e)
|
||||||
{
|
{
|
||||||
if(e == LV_EVENT_CLICKED) {
|
lv_event_code_t code = lv_event_get_code(e);
|
||||||
lv_obj_t * list = lv_event_get_user_data();
|
lv_obj_t * float_btn = lv_event_get_target(e);
|
||||||
|
|
||||||
|
if(code == LV_EVENT_CLICKED) {
|
||||||
|
lv_obj_t * list = lv_event_get_user_data(e);
|
||||||
char buf[32];
|
char buf[32];
|
||||||
lv_snprintf(buf, sizeof(buf), "Track %d", btn_cnt);
|
lv_snprintf(buf, sizeof(buf), "Track %d", btn_cnt);
|
||||||
lv_obj_t * list_btn = lv_list_add_btn(list, LV_SYMBOL_AUDIO, buf, NULL);
|
lv_obj_t * list_btn = lv_list_add_btn(list, LV_SYMBOL_AUDIO, buf, NULL);
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
|
|
||||||
//static void event_cb(lv_obj_t * obj, lv_event_t e)
|
//static void event_cb(lv_obj_t * obj, lv_event_t e)
|
||||||
//{
|
//{
|
||||||
// if(e == LV_EVENT_DRAW_POST_END) {
|
// if(code == LV_EVENT_DRAW_POST_END) {
|
||||||
// lv_bar_t * bar = (lv_bar_t *)obj;
|
// lv_bar_t * bar = (lv_bar_t *)obj;
|
||||||
//
|
//
|
||||||
// lv_draw_label_dsc_t dsc;
|
// lv_draw_label_dsc_t dsc;
|
||||||
@@ -38,7 +38,7 @@
|
|||||||
// txt_area.y1 = bar->indic_area.y1 + (lv_area_get_height(&bar->indic_area) - txt_size.y) / 2;
|
// txt_area.y1 = bar->indic_area.y1 + (lv_area_get_height(&bar->indic_area) - txt_size.y) / 2;
|
||||||
// txt_area.y2 = txt_area.y1 + txt_size.y - 1;
|
// txt_area.y2 = txt_area.y1 + txt_size.y - 1;
|
||||||
//
|
//
|
||||||
// const lv_area_t * clip_area = lv_event_get_param();
|
// const lv_area_t * clip_area = lv_event_get_param(e);
|
||||||
// lv_draw_label(&txt_area, clip_area, &dsc, buf, NULL);
|
// lv_draw_label(&txt_area, clip_area, &dsc, buf, NULL);
|
||||||
// }
|
// }
|
||||||
//}
|
//}
|
||||||
|
|||||||
@@ -1,13 +1,14 @@
|
|||||||
#include "../../lv_examples.h"
|
#include "../../lv_examples.h"
|
||||||
#if LV_USE_BTN && LV_BUILD_EXAMPLES
|
#if LV_USE_BTN && LV_BUILD_EXAMPLES
|
||||||
|
|
||||||
static void event_handler(lv_obj_t * obj, lv_event_t event)
|
static void event_handler(lv_event_t * e)
|
||||||
{
|
{
|
||||||
LV_UNUSED(obj);
|
lv_event_code_t code = lv_event_get_code(e);
|
||||||
if(event == LV_EVENT_CLICKED) {
|
|
||||||
|
if(code == LV_EVENT_CLICKED) {
|
||||||
LV_LOG_USER("Clicked");
|
LV_LOG_USER("Clicked");
|
||||||
}
|
}
|
||||||
else if(event == LV_EVENT_VALUE_CHANGED) {
|
else if(code == LV_EVENT_VALUE_CHANGED) {
|
||||||
LV_LOG_USER("Toggled");
|
LV_LOG_USER("Toggled");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,9 +1,11 @@
|
|||||||
#include "../../lv_examples.h"
|
#include "../../lv_examples.h"
|
||||||
#if LV_USE_BTNMATRIX && LV_BUILD_EXAMPLES
|
#if LV_USE_BTNMATRIX && LV_BUILD_EXAMPLES
|
||||||
|
|
||||||
static void event_handler(lv_obj_t * obj, lv_event_t event)
|
static void event_handler(lv_event_t * e)
|
||||||
{
|
{
|
||||||
if(event == LV_EVENT_VALUE_CHANGED) {
|
lv_event_code_t code = lv_event_get_code(e);
|
||||||
|
lv_obj_t * obj = lv_event_get_target(e);
|
||||||
|
if(code == LV_EVENT_VALUE_CHANGED) {
|
||||||
uint32_t id = lv_btnmatrix_get_selected_btn(obj);
|
uint32_t id = lv_btnmatrix_get_selected_btn(obj);
|
||||||
const char * txt = lv_btnmatrix_get_btn_text(obj, id);
|
const char * txt = lv_btnmatrix_get_btn_text(obj, id);
|
||||||
|
|
||||||
|
|||||||
@@ -2,10 +2,12 @@
|
|||||||
#if LV_USE_BTNMATRIX && LV_BUILD_EXAMPLES
|
#if LV_USE_BTNMATRIX && LV_BUILD_EXAMPLES
|
||||||
|
|
||||||
|
|
||||||
static void event_cb(lv_obj_t * obj, lv_event_t e)
|
static void event_cb(lv_event_t * e)
|
||||||
{
|
{
|
||||||
if(e == LV_EVENT_DRAW_PART_BEGIN) {
|
lv_event_code_t code = lv_event_get_code(e);
|
||||||
lv_obj_draw_dsc_t * dsc = lv_event_get_param();
|
lv_obj_t * obj = lv_event_get_target(e);
|
||||||
|
if(code == LV_EVENT_DRAW_PART_BEGIN) {
|
||||||
|
lv_obj_draw_dsc_t * dsc = lv_event_get_param(e);
|
||||||
|
|
||||||
/*Change the draw descriptor the 2nd button*/
|
/*Change the draw descriptor the 2nd button*/
|
||||||
if(dsc->id == 1) {
|
if(dsc->id == 1) {
|
||||||
@@ -31,8 +33,8 @@ static void event_cb(lv_obj_t * obj, lv_event_t e)
|
|||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(e == LV_EVENT_DRAW_PART_END) {
|
if(code == LV_EVENT_DRAW_PART_END) {
|
||||||
lv_obj_draw_dsc_t * dsc = lv_event_get_param();
|
lv_obj_draw_dsc_t * dsc = lv_event_get_param(e);
|
||||||
|
|
||||||
/*Add custom content to the 4th button when the button itself was drawn*/
|
/*Add custom content to the 4th button when the button itself was drawn*/
|
||||||
if(dsc->id == 3) {
|
if(dsc->id == 3) {
|
||||||
|
|||||||
@@ -1,9 +1,11 @@
|
|||||||
#include "../../lv_examples.h"
|
#include "../../lv_examples.h"
|
||||||
#if LV_USE_BTNMATRIX && LV_BUILD_EXAMPLES
|
#if LV_USE_BTNMATRIX && LV_BUILD_EXAMPLES
|
||||||
|
|
||||||
static void event_cb(lv_obj_t * obj, lv_event_t e)
|
static void event_cb(lv_event_t * e)
|
||||||
{
|
{
|
||||||
if(e == LV_EVENT_VALUE_CHANGED) {
|
lv_event_code_t code = lv_event_get_code(e);
|
||||||
|
lv_obj_t * obj = lv_event_get_target(e);
|
||||||
|
if(code == LV_EVENT_VALUE_CHANGED) {
|
||||||
uint32_t id = lv_btnmatrix_get_selected_btn(obj);
|
uint32_t id = lv_btnmatrix_get_selected_btn(obj);
|
||||||
bool prev = id == 0 ? true : false;
|
bool prev = id == 0 ? true : false;
|
||||||
bool next = id == 6 ? true : false;
|
bool next = id == 6 ? true : false;
|
||||||
|
|||||||
@@ -1,9 +1,12 @@
|
|||||||
#include "../../lv_examples.h"
|
#include "../../lv_examples.h"
|
||||||
#if LV_USE_CALENDAR && LV_BUILD_EXAMPLES
|
#if LV_USE_CALENDAR && LV_BUILD_EXAMPLES
|
||||||
|
|
||||||
static void event_handler(lv_obj_t * obj, lv_event_t event)
|
static void event_handler(lv_event_t * e)
|
||||||
{
|
{
|
||||||
if(event == LV_EVENT_VALUE_CHANGED) {
|
lv_event_code_t code = lv_event_get_code(e);
|
||||||
|
lv_obj_t * obj = lv_event_get_target(e);
|
||||||
|
|
||||||
|
if(code == LV_EVENT_VALUE_CHANGED) {
|
||||||
lv_calendar_date_t date;
|
lv_calendar_date_t date;
|
||||||
if(lv_calendar_get_pressed_date(obj, &date)) {
|
if(lv_calendar_get_pressed_date(obj, &date)) {
|
||||||
LV_LOG_USER("Clicked date: %02d.%02d.%d", date.day, date.month, date.year);
|
LV_LOG_USER("Clicked date: %02d.%02d.%d", date.day, date.month, date.year);
|
||||||
|
|||||||
@@ -5,11 +5,14 @@ static lv_obj_t * chart1;
|
|||||||
static lv_chart_series_t * ser1;
|
static lv_chart_series_t * ser1;
|
||||||
static lv_chart_series_t * ser2;
|
static lv_chart_series_t * ser2;
|
||||||
|
|
||||||
static void event_cb(lv_obj_t * obj, lv_event_t e)
|
static void event_cb(lv_event_t * e)
|
||||||
{
|
{
|
||||||
|
lv_event_code_t code = lv_event_get_code(e);
|
||||||
|
lv_obj_t * obj = lv_event_get_target(e);
|
||||||
|
|
||||||
/*Add the faded area before the lines are drawn*/
|
/*Add the faded area before the lines are drawn*/
|
||||||
if(e == LV_EVENT_DRAW_PART_BEGIN) {
|
if(code == LV_EVENT_DRAW_PART_BEGIN) {
|
||||||
lv_obj_draw_dsc_t * dsc = lv_event_get_param();
|
lv_obj_draw_dsc_t * dsc = lv_event_get_param(e);
|
||||||
if(dsc->part != LV_PART_ITEMS) return;
|
if(dsc->part != LV_PART_ITEMS) return;
|
||||||
if(!dsc->p1 || !dsc->p2) return;
|
if(!dsc->p1 || !dsc->p2) return;
|
||||||
|
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
#include "../../lv_examples.h"
|
#include "../../lv_examples.h"
|
||||||
#if LV_USE_CHART && LV_BUILD_EXAMPLES
|
#if LV_USE_CHART && LV_BUILD_EXAMPLES
|
||||||
|
|
||||||
static void event_cb(lv_obj_t * chart, lv_event_t e)
|
static void event_cb(lv_event_t * e)
|
||||||
{
|
{
|
||||||
LV_UNUSED(chart);
|
lv_event_code_t code = lv_event_get_code(e);
|
||||||
if(e == LV_EVENT_DRAW_PART_BEGIN) {
|
if(code == LV_EVENT_DRAW_PART_BEGIN) {
|
||||||
lv_obj_draw_dsc_t * dsc = lv_event_get_param();
|
lv_obj_draw_dsc_t * dsc = lv_event_get_param(e);
|
||||||
if(dsc->part == LV_PART_TICKS && dsc->id == LV_CHART_AXIS_X) {
|
if(dsc->part == LV_PART_TICKS && dsc->id == LV_CHART_AXIS_X) {
|
||||||
const char * month[] = {"Jan", "Febr", "March", "Apr", "May", "Jun", "July", "Aug", "Sept", "Oct", "Nov", "Dec"};
|
const char * month[] = {"Jan", "Febr", "March", "Apr", "May", "Jun", "July", "Aug", "Sept", "Oct", "Nov", "Dec"};
|
||||||
lv_snprintf(dsc->text, sizeof(dsc->text), "%s", month[dsc->value]);
|
lv_snprintf(dsc->text, sizeof(dsc->text), "%s", month[dsc->value]);
|
||||||
|
|||||||
@@ -2,16 +2,19 @@
|
|||||||
#if LV_USE_CHART && LV_BUILD_EXAMPLES
|
#if LV_USE_CHART && LV_BUILD_EXAMPLES
|
||||||
|
|
||||||
|
|
||||||
static void event_cb(lv_obj_t * chart, lv_event_t e)
|
static void event_cb(lv_event_t * e)
|
||||||
{
|
{
|
||||||
if(e == LV_EVENT_VALUE_CHANGED) {
|
lv_event_code_t code = lv_event_get_code(e);
|
||||||
|
lv_obj_t * chart = lv_event_get_target(e);
|
||||||
|
|
||||||
|
if(code == LV_EVENT_VALUE_CHANGED) {
|
||||||
lv_obj_invalidate(chart);
|
lv_obj_invalidate(chart);
|
||||||
}
|
}
|
||||||
if(e == LV_EVENT_REFR_EXT_DRAW_SIZE) {
|
if(code == LV_EVENT_REFR_EXT_DRAW_SIZE) {
|
||||||
lv_coord_t * s = lv_event_get_param();
|
lv_coord_t * s = lv_event_get_param(e);
|
||||||
*s = LV_MAX(*s, 20);
|
*s = LV_MAX(*s, 20);
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_DRAW_POST_END) {
|
else if(code == LV_EVENT_DRAW_POST_END) {
|
||||||
int32_t id = lv_chart_get_pressed_point(chart);
|
int32_t id = lv_chart_get_pressed_point(chart);
|
||||||
if(id == LV_CHART_POINT_NONE) return;
|
if(id == LV_CHART_POINT_NONE) return;
|
||||||
|
|
||||||
@@ -42,7 +45,7 @@ static void event_cb(lv_obj_t * chart, lv_event_t e)
|
|||||||
a.y1 = chart->coords.y1 + p.y - 30;
|
a.y1 = chart->coords.y1 + p.y - 30;
|
||||||
a.y2 = chart->coords.y1 + p.y - 10;
|
a.y2 = chart->coords.y1 + p.y - 10;
|
||||||
|
|
||||||
const lv_area_t * clip_area = lv_event_get_param();
|
const lv_area_t * clip_area = lv_event_get_param(e);
|
||||||
lv_draw_rect(&a, clip_area, &draw_rect_dsc);
|
lv_draw_rect(&a, clip_area, &draw_rect_dsc);
|
||||||
|
|
||||||
ser = lv_chart_get_series_next(chart, ser);
|
ser = lv_chart_get_series_next(chart, ser);
|
||||||
|
|||||||
@@ -46,17 +46,21 @@ static const lv_coord_t ecg_sample[] = {
|
|||||||
70, 74, 76, 79, 82, 79, 75, 62,
|
70, 74, 76, 79, 82, 79, 75, 62,
|
||||||
};
|
};
|
||||||
|
|
||||||
static void slider_x_event_cb(lv_obj_t * obj, lv_event_t e)
|
static void slider_x_event_cb(lv_event_t * e)
|
||||||
{
|
{
|
||||||
if(e == LV_EVENT_VALUE_CHANGED) {
|
lv_event_code_t code = lv_event_get_code(e);
|
||||||
|
lv_obj_t * obj = lv_event_get_target(e);
|
||||||
|
if(code == LV_EVENT_VALUE_CHANGED) {
|
||||||
int32_t v = lv_slider_get_value(obj);
|
int32_t v = lv_slider_get_value(obj);
|
||||||
lv_chart_set_zoom_x(chart, v);
|
lv_chart_set_zoom_x(chart, v);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void slider_y_event_cb(lv_obj_t * obj, lv_event_t e)
|
static void slider_y_event_cb(lv_event_t * e)
|
||||||
{
|
{
|
||||||
if(e == LV_EVENT_VALUE_CHANGED) {
|
lv_event_code_t code = lv_event_get_code(e);
|
||||||
|
lv_obj_t * obj = lv_event_get_target(e);
|
||||||
|
if(code == LV_EVENT_VALUE_CHANGED) {
|
||||||
lv_chart_set_zoom_y(chart, lv_slider_get_value(obj));
|
lv_chart_set_zoom_y(chart, lv_slider_get_value(obj));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,10 +5,13 @@ static lv_obj_t * chart;
|
|||||||
static lv_chart_series_t * ser;
|
static lv_chart_series_t * ser;
|
||||||
static lv_chart_cursor_t * cursor;
|
static lv_chart_cursor_t * cursor;
|
||||||
|
|
||||||
static void event_cb(lv_obj_t * obj, lv_event_t e)
|
static void event_cb(lv_event_t * e)
|
||||||
{
|
{
|
||||||
static int32_t last_id = -1;
|
static int32_t last_id = -1;
|
||||||
if(e == LV_EVENT_VALUE_CHANGED) {
|
lv_event_code_t code = lv_event_get_code(e);
|
||||||
|
lv_obj_t * obj = lv_event_get_target(e);
|
||||||
|
|
||||||
|
if(code == LV_EVENT_VALUE_CHANGED) {
|
||||||
last_id = lv_chart_get_pressed_point(obj);
|
last_id = lv_chart_get_pressed_point(obj);
|
||||||
if(last_id != LV_CHART_POINT_NONE) {
|
if(last_id != LV_CHART_POINT_NONE) {
|
||||||
lv_point_t p;
|
lv_point_t p;
|
||||||
@@ -16,8 +19,8 @@ static void event_cb(lv_obj_t * obj, lv_event_t e)
|
|||||||
lv_chart_set_cursor_point(obj, cursor, &p);
|
lv_chart_set_cursor_point(obj, cursor, &p);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_DRAW_PART_END) {
|
else if(code == LV_EVENT_DRAW_PART_END) {
|
||||||
lv_obj_draw_dsc_t * dsc = lv_event_get_param();
|
lv_obj_draw_dsc_t * dsc = lv_event_get_param(e);
|
||||||
if(dsc->part == LV_PART_CURSOR && dsc->p1 && dsc->p2 && dsc->p1->y == dsc->p2->y && last_id >= 0) {
|
if(dsc->part == LV_PART_CURSOR && dsc->p1 && dsc->p2 && dsc->p1->y == dsc->p2->y && last_id >= 0) {
|
||||||
lv_coord_t * data_array = lv_chart_get_array(chart, ser);
|
lv_coord_t * data_array = lv_chart_get_array(chart, ser);
|
||||||
lv_coord_t v = data_array[last_id];
|
lv_coord_t v = data_array[last_id];
|
||||||
|
|||||||
@@ -1,9 +1,11 @@
|
|||||||
#include "../../lv_examples.h"
|
#include "../../lv_examples.h"
|
||||||
#if LV_USE_CHECKBOX && LV_BUILD_EXAMPLES
|
#if LV_USE_CHECKBOX && LV_BUILD_EXAMPLES
|
||||||
|
|
||||||
static void event_handler(lv_obj_t * obj, lv_event_t event)
|
static void event_handler(lv_event_t * e)
|
||||||
{
|
{
|
||||||
if(event == LV_EVENT_VALUE_CHANGED) {
|
lv_event_code_t code = lv_event_get_code(e);
|
||||||
|
lv_obj_t * obj = lv_event_get_target(e);
|
||||||
|
if(code == LV_EVENT_VALUE_CHANGED) {
|
||||||
const char * txt = lv_checkbox_get_text(obj);
|
const char * txt = lv_checkbox_get_text(obj);
|
||||||
const char * state = lv_obj_get_state(obj) & LV_STATE_CHECKED ? "Checked" : "Unchecked";
|
const char * state = lv_obj_get_state(obj) & LV_STATE_CHECKED ? "Checked" : "Unchecked";
|
||||||
LV_LOG_USER("%s: %s\n", txt, state);
|
LV_LOG_USER("%s: %s\n", txt, state);
|
||||||
|
|||||||
@@ -1,14 +1,14 @@
|
|||||||
#include "../../lv_examples.h"
|
#include "../../lv_examples.h"
|
||||||
#if LV_USE_DROPDOWN && LV_BUILD_EXAMPLES
|
#if LV_USE_DROPDOWN && LV_BUILD_EXAMPLES
|
||||||
|
|
||||||
static void event_handler(lv_obj_t * obj, lv_event_t event)
|
static void event_handler(lv_event_t * e)
|
||||||
{
|
{
|
||||||
if(event == LV_EVENT_VALUE_CHANGED) {
|
lv_event_code_t code = lv_event_get_code(e);
|
||||||
#if LV_USE_LOG /*To avoid warnings if LV_LOG_USER is empty*/
|
lv_obj_t * obj = lv_event_get_target(e);
|
||||||
|
if(code == LV_EVENT_VALUE_CHANGED) {
|
||||||
char buf[32];
|
char buf[32];
|
||||||
lv_dropdown_get_selected_str(obj, buf, sizeof(buf));
|
lv_dropdown_get_selected_str(obj, buf, sizeof(buf));
|
||||||
LV_LOG_USER("Option: %s", buf);
|
LV_LOG_USER("Option: %s", buf);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,11 @@
|
|||||||
#include "../../lv_examples.h"
|
#include "../../lv_examples.h"
|
||||||
#if LV_USE_DROPDOWN && LV_BUILD_EXAMPLES
|
#if LV_USE_DROPDOWN && LV_BUILD_EXAMPLES
|
||||||
|
|
||||||
static void event_cb(lv_obj_t * dropdown, lv_event_t e)
|
static void event_cb(lv_event_t * e)
|
||||||
{
|
{
|
||||||
if(e == LV_EVENT_VALUE_CHANGED) {
|
lv_event_code_t code = lv_event_get_code(e);
|
||||||
|
lv_obj_t * dropdown = lv_event_get_target(e);
|
||||||
|
if(code == LV_EVENT_VALUE_CHANGED) {
|
||||||
char buf[64];
|
char buf[64];
|
||||||
lv_dropdown_get_selected_str(dropdown, buf, sizeof(buf));
|
lv_dropdown_get_selected_str(dropdown, buf, sizeof(buf));
|
||||||
LV_LOG_USER("'%s' is selected", buf);
|
LV_LOG_USER("'%s' is selected", buf);
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
#if LV_USE_IMG && LV_USE_SLIDER && LV_BUILD_EXAMPLES
|
#if LV_USE_IMG && LV_USE_SLIDER && LV_BUILD_EXAMPLES
|
||||||
|
|
||||||
static lv_obj_t * create_slider(lv_color_t color);
|
static lv_obj_t * create_slider(lv_color_t color);
|
||||||
static void slider_event_cb(lv_obj_t * slider, lv_event_t event);
|
static void slider_event_cb(lv_event_t * e);
|
||||||
|
|
||||||
static lv_obj_t * red_slider, * green_slider, * blue_slider, * intense_slider;
|
static lv_obj_t * red_slider, * green_slider, * blue_slider, * intense_slider;
|
||||||
static lv_obj_t * img1;
|
static lv_obj_t * img1;
|
||||||
@@ -38,11 +38,11 @@ void lv_example_img_2(void)
|
|||||||
lv_event_send(intense_slider, LV_EVENT_VALUE_CHANGED, NULL);
|
lv_event_send(intense_slider, LV_EVENT_VALUE_CHANGED, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void slider_event_cb(lv_obj_t * slider, lv_event_t event)
|
static void slider_event_cb(lv_event_t * e)
|
||||||
{
|
{
|
||||||
LV_UNUSED(slider);
|
|
||||||
|
|
||||||
if(event == LV_EVENT_VALUE_CHANGED) {
|
lv_event_code_t code = lv_event_get_code(e);
|
||||||
|
if(code == LV_EVENT_VALUE_CHANGED) {
|
||||||
/*Recolor the image based on the sliders' values*/
|
/*Recolor the image based on the sliders' values*/
|
||||||
lv_color_t color = lv_color_make(lv_slider_get_value(red_slider), lv_slider_get_value(green_slider), lv_slider_get_value(blue_slider));
|
lv_color_t color = lv_color_make(lv_slider_get_value(red_slider), lv_slider_get_value(green_slider), lv_slider_get_value(blue_slider));
|
||||||
lv_opa_t intense = lv_slider_get_value(intense_slider);
|
lv_opa_t intense = lv_slider_get_value(intense_slider);
|
||||||
|
|||||||
@@ -1,15 +1,17 @@
|
|||||||
#include "../../lv_examples.h"
|
#include "../../lv_examples.h"
|
||||||
#if LV_USE_KEYBOARD && LV_BUILD_EXAMPLES
|
#if LV_USE_KEYBOARD && LV_BUILD_EXAMPLES
|
||||||
|
|
||||||
static void ta_event_cb(lv_obj_t * ta, lv_event_t e)
|
static void ta_event_cb(lv_event_t * e)
|
||||||
{
|
{
|
||||||
lv_obj_t * kb = lv_event_get_user_data();
|
lv_event_code_t code = lv_event_get_code(e);
|
||||||
if(e == LV_EVENT_FOCUSED) {
|
lv_obj_t * ta = lv_event_get_target(e);
|
||||||
|
lv_obj_t * kb = lv_event_get_user_data(e);
|
||||||
|
if(code == LV_EVENT_FOCUSED) {
|
||||||
lv_keyboard_set_textarea(kb, ta);
|
lv_keyboard_set_textarea(kb, ta);
|
||||||
lv_obj_clear_flag(kb, LV_OBJ_FLAG_HIDDEN);
|
lv_obj_clear_flag(kb, LV_OBJ_FLAG_HIDDEN);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(e == LV_EVENT_DEFOCUSED) {
|
if(code == LV_EVENT_DEFOCUSED) {
|
||||||
lv_keyboard_set_textarea(kb, NULL);
|
lv_keyboard_set_textarea(kb, NULL);
|
||||||
lv_obj_add_flag(kb, LV_OBJ_FLAG_HIDDEN);
|
lv_obj_add_flag(kb, LV_OBJ_FLAG_HIDDEN);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,9 +2,11 @@
|
|||||||
#if LV_USE_LIST && LV_BUILD_EXAMPLES
|
#if LV_USE_LIST && LV_BUILD_EXAMPLES
|
||||||
static lv_obj_t * list1;
|
static lv_obj_t * list1;
|
||||||
|
|
||||||
static void event_handler(lv_obj_t * obj, lv_event_t event)
|
static void event_handler(lv_event_t * e)
|
||||||
{
|
{
|
||||||
if(event == LV_EVENT_CLICKED) {
|
lv_event_code_t code = lv_event_get_code(e);
|
||||||
|
lv_obj_t * obj = lv_event_get_target(e);
|
||||||
|
if(code == LV_EVENT_CLICKED) {
|
||||||
LV_LOG_USER("Clicked: %s", lv_list_get_btn_text(list1, obj));
|
LV_LOG_USER("Clicked: %s", lv_list_get_btn_text(list1, obj));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,9 +1,11 @@
|
|||||||
#include "../../lv_examples.h"
|
#include "../../lv_examples.h"
|
||||||
#if LV_USE_MSGBOX && LV_BUILD_EXAMPLES
|
#if LV_USE_MSGBOX && LV_BUILD_EXAMPLES
|
||||||
|
|
||||||
static void event_cb(lv_obj_t * obj, lv_event_t event)
|
static void event_cb(lv_event_t * e)
|
||||||
{
|
{
|
||||||
if(event == LV_EVENT_VALUE_CHANGED) {
|
lv_event_code_t code = lv_event_get_code(e);
|
||||||
|
lv_obj_t * obj = lv_event_get_target(e);
|
||||||
|
if(code == LV_EVENT_VALUE_CHANGED) {
|
||||||
LV_LOG_USER("Button %s clicked", lv_msgbox_get_active_btn_text(obj));
|
LV_LOG_USER("Button %s clicked", lv_msgbox_get_active_btn_text(obj));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,9 +1,11 @@
|
|||||||
#include "../../lv_examples.h"
|
#include "../../lv_examples.h"
|
||||||
#if LV_USE_ROLLER && LV_BUILD_EXAMPLES
|
#if LV_USE_ROLLER && LV_BUILD_EXAMPLES
|
||||||
|
|
||||||
static void event_handler(lv_obj_t * obj, lv_event_t event)
|
static void event_handler(lv_event_t * e)
|
||||||
{
|
{
|
||||||
if(event == LV_EVENT_VALUE_CHANGED) {
|
lv_event_code_t code = lv_event_get_code(e);
|
||||||
|
lv_obj_t * obj = lv_event_get_target(e);
|
||||||
|
if(code == LV_EVENT_VALUE_CHANGED) {
|
||||||
char buf[32];
|
char buf[32];
|
||||||
lv_roller_get_selected_str(obj, buf, sizeof(buf));
|
lv_roller_get_selected_str(obj, buf, sizeof(buf));
|
||||||
LV_LOG_USER("Selected month: %s\n", buf);
|
LV_LOG_USER("Selected month: %s\n", buf);
|
||||||
|
|||||||
@@ -1,9 +1,11 @@
|
|||||||
#include "../../lv_examples.h"
|
#include "../../lv_examples.h"
|
||||||
#if LV_USE_ROLLER && LV_FONT_MONTSERRAT_22 && LV_BUILD_EXAMPLES
|
#if LV_USE_ROLLER && LV_FONT_MONTSERRAT_22 && LV_BUILD_EXAMPLES
|
||||||
|
|
||||||
static void event_handler(lv_obj_t * obj, lv_event_t event)
|
static void event_handler(lv_event_t * e)
|
||||||
{
|
{
|
||||||
if(event == LV_EVENT_VALUE_CHANGED) {
|
lv_event_code_t code = lv_event_get_code(e);
|
||||||
|
lv_obj_t * obj = lv_event_get_target(e);
|
||||||
|
if(code == LV_EVENT_VALUE_CHANGED) {
|
||||||
char buf[32];
|
char buf[32];
|
||||||
lv_roller_get_selected_str(obj, buf, sizeof(buf));
|
lv_roller_get_selected_str(obj, buf, sizeof(buf));
|
||||||
LV_LOG_USER("Selected value: %s\n", buf);
|
LV_LOG_USER("Selected value: %s\n", buf);
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#include "../../lv_examples.h"
|
#include "../../lv_examples.h"
|
||||||
#if LV_USE_SLIDER && LV_BUILD_EXAMPLES
|
#if LV_USE_SLIDER && LV_BUILD_EXAMPLES
|
||||||
|
|
||||||
static void slider_event_cb(lv_obj_t * slider, lv_event_t event);
|
static void slider_event_cb(lv_event_t * e);
|
||||||
static lv_obj_t * slider_label;
|
static lv_obj_t * slider_label;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -21,9 +21,11 @@ void lv_example_slider_1(void)
|
|||||||
lv_obj_align_to(slider_label, slider, LV_ALIGN_OUT_BOTTOM_MID, 0, 10);
|
lv_obj_align_to(slider_label, slider, LV_ALIGN_OUT_BOTTOM_MID, 0, 10);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void slider_event_cb(lv_obj_t * slider, lv_event_t event)
|
static void slider_event_cb(lv_event_t * e)
|
||||||
{
|
{
|
||||||
if(event == LV_EVENT_VALUE_CHANGED) {
|
lv_event_code_t code = lv_event_get_code(e);
|
||||||
|
lv_obj_t * slider = lv_event_get_target(e);
|
||||||
|
if(code == LV_EVENT_VALUE_CHANGED) {
|
||||||
char buf[8];
|
char buf[8];
|
||||||
lv_snprintf(buf, sizeof(buf), "%d%%", lv_slider_get_value(slider));
|
lv_snprintf(buf, sizeof(buf), "%d%%", lv_slider_get_value(slider));
|
||||||
lv_label_set_text(slider_label, buf);
|
lv_label_set_text(slider_label, buf);
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ void lv_example_slider_2(void)
|
|||||||
//
|
//
|
||||||
//static void slider_event_cb(lv_obj_t * slider, lv_event_t event)
|
//static void slider_event_cb(lv_obj_t * slider, lv_event_t event)
|
||||||
//{
|
//{
|
||||||
// if(event == LV_EVENT_VALUE_CHANGED) {
|
// if(code == LV_EVENT_VALUE_CHANGED) {
|
||||||
// static char buf[8];
|
// static char buf[8];
|
||||||
// lv_snprintf(buf, sizeof(buf), "%u", lv_slider_get_value(slider));
|
// lv_snprintf(buf, sizeof(buf), "%u", lv_slider_get_value(slider));
|
||||||
// lv_obj_set_style_content_text(slider, LV_PART_KNOB, LV_STATE_DEFAULT, buf);
|
// lv_obj_set_style_content_text(slider, LV_PART_KNOB, LV_STATE_DEFAULT, buf);
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ void lv_example_slider_3(void)
|
|||||||
//
|
//
|
||||||
//static void slider_event_cb(lv_obj_t * slider, lv_event_t event)
|
//static void slider_event_cb(lv_obj_t * slider, lv_event_t event)
|
||||||
//{
|
//{
|
||||||
// if(event == LV_EVENT_VALUE_CHANGED) {
|
// if(code == LV_EVENT_VALUE_CHANGED) {
|
||||||
// static char buf[8];
|
// static char buf[8];
|
||||||
// lv_snprintf(buf, sizeof(buf), "%d - %d", lv_slider_get_value(slider), lv_slider_get_left_value(slider));
|
// lv_snprintf(buf, sizeof(buf), "%d - %d", lv_slider_get_value(slider), lv_slider_get_left_value(slider));
|
||||||
// lv_obj_set_style_content_text(slider, LV_PART_INDICATOR, LV_STATE_DEFAULT, buf);
|
// lv_obj_set_style_content_text(slider, LV_PART_INDICATOR, LV_STATE_DEFAULT, buf);
|
||||||
|
|||||||
@@ -4,18 +4,18 @@
|
|||||||
static lv_obj_t * spinbox;
|
static lv_obj_t * spinbox;
|
||||||
|
|
||||||
|
|
||||||
static void lv_spinbox_increment_event_cb(lv_obj_t * btn, lv_event_t e)
|
static void lv_spinbox_increment_event_cb(lv_event_t * e)
|
||||||
{
|
{
|
||||||
LV_UNUSED(btn);
|
lv_event_code_t code = lv_event_get_code(e);
|
||||||
if(e == LV_EVENT_SHORT_CLICKED || e == LV_EVENT_LONG_PRESSED_REPEAT) {
|
if(code == LV_EVENT_SHORT_CLICKED || code == LV_EVENT_LONG_PRESSED_REPEAT) {
|
||||||
lv_spinbox_increment(spinbox);
|
lv_spinbox_increment(spinbox);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void lv_spinbox_decrement_event_cb(lv_obj_t * btn, lv_event_t e)
|
static void lv_spinbox_decrement_event_cb(lv_event_t * e)
|
||||||
{
|
{
|
||||||
LV_UNUSED(btn);
|
lv_event_code_t code = lv_event_get_code(e);
|
||||||
if(e == LV_EVENT_SHORT_CLICKED || e == LV_EVENT_LONG_PRESSED_REPEAT) {
|
if(code == LV_EVENT_SHORT_CLICKED || code == LV_EVENT_LONG_PRESSED_REPEAT) {
|
||||||
lv_spinbox_decrement(spinbox);
|
lv_spinbox_decrement(spinbox);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,9 +1,11 @@
|
|||||||
#include "../../lv_examples.h"
|
#include "../../lv_examples.h"
|
||||||
#if LV_USE_SWITCH && LV_BUILD_EXAMPLES
|
#if LV_USE_SWITCH && LV_BUILD_EXAMPLES
|
||||||
|
|
||||||
static void event_handler(lv_obj_t * obj, lv_event_t event)
|
static void event_handler(lv_event_t * e)
|
||||||
{
|
{
|
||||||
if(event == LV_EVENT_VALUE_CHANGED) {
|
lv_event_code_t code = lv_event_get_code(e);
|
||||||
|
lv_obj_t * obj = lv_event_get_target(e);
|
||||||
|
if(code == LV_EVENT_VALUE_CHANGED) {
|
||||||
LV_LOG_USER("State: %s\n", lv_obj_has_state(obj, LV_STATE_CHECKED) ? "On" : "Off");
|
LV_LOG_USER("State: %s\n", lv_obj_has_state(obj, LV_STATE_CHECKED) ? "On" : "Off");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,10 +1,12 @@
|
|||||||
#include "../../lv_examples.h"
|
#include "../../lv_examples.h"
|
||||||
#if LV_USE_TABLE && LV_BUILD_EXAMPLES
|
#if LV_USE_TABLE && LV_BUILD_EXAMPLES
|
||||||
|
|
||||||
static void event_cb(lv_obj_t * obj, lv_event_t e)
|
static void event_cb(lv_event_t * e)
|
||||||
{
|
{
|
||||||
if(e == LV_EVENT_DRAW_PART_BEGIN) {
|
lv_event_code_t code = lv_event_get_code(e);
|
||||||
lv_obj_draw_dsc_t * dsc = lv_event_get_param();
|
lv_obj_t * obj = lv_event_get_target(e);
|
||||||
|
if(code == LV_EVENT_DRAW_PART_BEGIN) {
|
||||||
|
lv_obj_draw_dsc_t * dsc = lv_event_get_param(e);
|
||||||
/*If the cells are drawn...*/
|
/*If the cells are drawn...*/
|
||||||
if(dsc->part == LV_PART_ITEMS) {
|
if(dsc->part == LV_PART_ITEMS) {
|
||||||
uint32_t row = dsc->id / lv_table_get_col_cnt(obj);
|
uint32_t row = dsc->id / lv_table_get_col_cnt(obj);
|
||||||
|
|||||||
@@ -3,10 +3,12 @@
|
|||||||
|
|
||||||
#define ITEM_CNT 200
|
#define ITEM_CNT 200
|
||||||
|
|
||||||
static void event_cb(lv_obj_t * obj, lv_event_t e)
|
static void event_cb(lv_event_t * e)
|
||||||
{
|
{
|
||||||
if(e == LV_EVENT_DRAW_PART_END) {
|
lv_event_code_t code = lv_event_get_code(e);
|
||||||
lv_obj_draw_dsc_t * dsc = lv_event_get_param();
|
lv_obj_t * obj = lv_event_get_target(e);
|
||||||
|
if(code == LV_EVENT_DRAW_PART_END) {
|
||||||
|
lv_obj_draw_dsc_t * dsc = lv_event_get_param(e);
|
||||||
/*If the cells are drawn...*/
|
/*If the cells are drawn...*/
|
||||||
if(dsc->part == LV_PART_ITEMS) {
|
if(dsc->part == LV_PART_ITEMS) {
|
||||||
bool chk = lv_table_has_cell_ctrl(obj, dsc->id, 0, LV_TABLE_CELL_CTRL_CUSTOM_1);
|
bool chk = lv_table_has_cell_ctrl(obj, dsc->id, 0, LV_TABLE_CELL_CTRL_CUSTOM_1);
|
||||||
@@ -36,7 +38,7 @@ static void event_cb(lv_obj_t * obj, lv_event_t e)
|
|||||||
lv_draw_rect(&sw_area, dsc->clip_area, &rect_dsc);
|
lv_draw_rect(&sw_area, dsc->clip_area, &rect_dsc);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_VALUE_CHANGED) {
|
else if(code == LV_EVENT_VALUE_CHANGED) {
|
||||||
uint16_t col;
|
uint16_t col;
|
||||||
uint16_t row;
|
uint16_t row;
|
||||||
lv_table_get_selected_cell(obj, &row, &col);
|
lv_table_get_selected_cell(obj, &row, &col);
|
||||||
|
|||||||
@@ -2,10 +2,12 @@
|
|||||||
#if LV_USE_TEXTAREA && LV_BUILD_EXAMPLES
|
#if LV_USE_TEXTAREA && LV_BUILD_EXAMPLES
|
||||||
|
|
||||||
|
|
||||||
static void btnm_event_handler(lv_obj_t * obj, lv_event_t event)
|
static void btnm_event_handler(lv_event_t * e)
|
||||||
{
|
{
|
||||||
if(event == LV_EVENT_VALUE_CHANGED) {
|
lv_event_code_t code = lv_event_get_code(e);
|
||||||
lv_obj_t * ta = lv_event_get_user_data();
|
lv_obj_t * obj = lv_event_get_target(e);
|
||||||
|
if(code == LV_EVENT_VALUE_CHANGED) {
|
||||||
|
lv_obj_t * ta = lv_event_get_user_data(e);
|
||||||
const char * txt = lv_btnmatrix_get_btn_text(obj, lv_btnmatrix_get_selected_btn(obj));
|
const char * txt = lv_btnmatrix_get_btn_text(obj, lv_btnmatrix_get_selected_btn(obj));
|
||||||
|
|
||||||
if(strcmp(txt, LV_SYMBOL_BACKSPACE) == 0) lv_textarea_del_char(ta);
|
if(strcmp(txt, LV_SYMBOL_BACKSPACE) == 0) lv_textarea_del_char(ta);
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#include "../../lv_examples.h"
|
#include "../../lv_examples.h"
|
||||||
#if LV_USE_TEXTAREA && LV_USE_KEYBOARD && LV_BUILD_EXAMPLES
|
#if LV_USE_TEXTAREA && LV_USE_KEYBOARD && LV_BUILD_EXAMPLES
|
||||||
|
|
||||||
static void ta_event_cb(lv_obj_t * ta, lv_event_t event);
|
static void ta_event_cb(lv_event_t * e);
|
||||||
|
|
||||||
static lv_obj_t * kb;
|
static lv_obj_t * kb;
|
||||||
|
|
||||||
@@ -39,16 +39,18 @@ void lv_example_textarea_2(void)
|
|||||||
lv_keyboard_set_textarea(kb, pwd_ta); /*Focus it on one of the text areas to start*/
|
lv_keyboard_set_textarea(kb, pwd_ta); /*Focus it on one of the text areas to start*/
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ta_event_cb(lv_obj_t * ta, lv_event_t event)
|
static void ta_event_cb(lv_event_t * e)
|
||||||
{
|
{
|
||||||
if(event == LV_EVENT_CLICKED) {
|
lv_event_code_t code = lv_event_get_code(e);
|
||||||
|
lv_obj_t * ta = lv_event_get_target(e);
|
||||||
|
if(code == LV_EVENT_CLICKED) {
|
||||||
/*Focus on the clicked text area*/
|
/*Focus on the clicked text area*/
|
||||||
if(kb != NULL)
|
if(kb != NULL)
|
||||||
lv_keyboard_set_textarea(kb, ta);
|
lv_keyboard_set_textarea(kb, ta);
|
||||||
}
|
}
|
||||||
|
|
||||||
else if(event == LV_EVENT_INSERT) {
|
else if(code == LV_EVENT_INSERT) {
|
||||||
const char * str = lv_event_get_param();
|
const char * str = lv_event_get_param(e);
|
||||||
if(str[0] == '\n') {
|
if(str[0] == '\n') {
|
||||||
LV_LOG_USER("Ready\n");
|
LV_LOG_USER("Ready\n");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#include "../../lv_examples.h"
|
#include "../../lv_examples.h"
|
||||||
#if LV_USE_TEXTAREA && LV_USE_KEYBOARD && LV_BUILD_EXAMPLES
|
#if LV_USE_TEXTAREA && LV_USE_KEYBOARD && LV_BUILD_EXAMPLES
|
||||||
|
|
||||||
static void ta_event_cb(lv_obj_t * ta, lv_event_t event);
|
static void ta_event_cb(lv_event_t * e);
|
||||||
|
|
||||||
static lv_obj_t * kb;
|
static lv_obj_t * kb;
|
||||||
|
|
||||||
@@ -26,9 +26,11 @@ void lv_example_textarea_3(void)
|
|||||||
lv_keyboard_set_textarea(kb, ta);
|
lv_keyboard_set_textarea(kb, ta);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ta_event_cb(lv_obj_t * ta, lv_event_t event)
|
static void ta_event_cb(lv_event_t * e)
|
||||||
{
|
{
|
||||||
if(event == LV_EVENT_VALUE_CHANGED) {
|
lv_event_code_t code = lv_event_get_code(e);
|
||||||
|
lv_obj_t * ta = lv_event_get_target(e);
|
||||||
|
if(code == LV_EVENT_VALUE_CHANGED) {
|
||||||
const char * txt = lv_textarea_get_text(ta);
|
const char * txt = lv_textarea_get_text(ta);
|
||||||
if(txt[0] >= '0' && txt[0] <= '9' &&
|
if(txt[0] >= '0' && txt[0] <= '9' &&
|
||||||
txt[1] >= '0' && txt[1] <= '9' &&
|
txt[1] >= '0' && txt[1] <= '9' &&
|
||||||
|
|||||||
@@ -2,9 +2,11 @@
|
|||||||
#if LV_USE_WIN && LV_BUILD_EXAMPLES
|
#if LV_USE_WIN && LV_BUILD_EXAMPLES
|
||||||
|
|
||||||
|
|
||||||
static void event_handler(lv_obj_t * obj, lv_event_t event)
|
static void event_handler(lv_event_t * e)
|
||||||
{
|
{
|
||||||
if(event == LV_EVENT_CLICKED) {
|
lv_event_code_t code = lv_event_get_code(e);
|
||||||
|
lv_obj_t * obj = lv_event_get_target(e);
|
||||||
|
if(code == LV_EVENT_CLICKED) {
|
||||||
LV_LOG_USER("Button %d clicked", lv_obj_get_child_id(obj));
|
LV_LOG_USER("Button %d clicked", lv_obj_get_child_id(obj));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -66,15 +66,15 @@ typedef struct _lv_event_dsc_t{
|
|||||||
**********************/
|
**********************/
|
||||||
static void lv_obj_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj);
|
static void lv_obj_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj);
|
||||||
static void lv_obj_destructor(const lv_obj_class_t * class_p, lv_obj_t * obj);
|
static void lv_obj_destructor(const lv_obj_class_t * class_p, lv_obj_t * obj);
|
||||||
static void lv_obj_draw(lv_obj_t * obj, lv_event_t e);
|
static void lv_obj_draw(lv_event_t * e);
|
||||||
static void lv_obj_event_cb(lv_obj_t * obj, lv_event_t e);
|
static void lv_obj_event_cb(lv_event_t * e);
|
||||||
static void draw_scrollbar(lv_obj_t * obj, const lv_area_t * clip_area);
|
static void draw_scrollbar(lv_obj_t * obj, const lv_area_t * clip_area);
|
||||||
static lv_res_t scrollbar_init_draw_dsc(lv_obj_t * obj, lv_draw_rect_dsc_t * dsc);
|
static lv_res_t scrollbar_init_draw_dsc(lv_obj_t * obj, lv_draw_rect_dsc_t * dsc);
|
||||||
static bool obj_valid_child(const lv_obj_t * parent, const lv_obj_t * obj_to_find);
|
static bool obj_valid_child(const lv_obj_t * parent, const lv_obj_t * obj_to_find);
|
||||||
static lv_res_t event_send_core(lv_obj_t * obj, lv_event_t event, void * param);
|
static lv_res_t event_send_core(lv_obj_t * obj, lv_event_code_t event_code, void * param);
|
||||||
static void lv_obj_set_state(lv_obj_t * obj, lv_state_t new_state);
|
static void lv_obj_set_state(lv_obj_t * obj, lv_state_t new_state);
|
||||||
static void base_dir_refr_children(lv_obj_t * obj);
|
static void base_dir_refr_children(lv_obj_t * obj);
|
||||||
static bool event_is_bubbled(lv_event_t e);
|
static bool event_is_bubbled(lv_event_code_t e);
|
||||||
|
|
||||||
/**********************
|
/**********************
|
||||||
* STATIC VARIABLES
|
* STATIC VARIABLES
|
||||||
@@ -200,7 +200,7 @@ lv_obj_t * lv_obj_create(lv_obj_t * parent)
|
|||||||
* Event/Signal sending
|
* Event/Signal sending
|
||||||
*---------------------*/
|
*---------------------*/
|
||||||
|
|
||||||
lv_res_t lv_event_send(lv_obj_t * obj, lv_event_t event, void * param)
|
lv_res_t lv_event_send(lv_obj_t * obj, lv_event_code_t event, void * param)
|
||||||
{
|
{
|
||||||
if(obj == NULL) return LV_RES_OK;
|
if(obj == NULL) return LV_RES_OK;
|
||||||
|
|
||||||
@@ -220,10 +220,10 @@ lv_res_t lv_event_send(lv_obj_t * obj, lv_event_t event, void * param)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
lv_res_t lv_obj_event_base(const lv_obj_class_t * class_p, struct _lv_obj_t * obj, lv_event_t e)
|
lv_res_t lv_obj_event_base(const lv_obj_class_t * class_p, lv_event_t * e)
|
||||||
{
|
{
|
||||||
const lv_obj_class_t * base;
|
const lv_obj_class_t * base;
|
||||||
if(class_p == NULL) base = obj->class_p;
|
if(class_p == NULL) base = e->target->class_p;
|
||||||
else base = class_p->base_class;
|
else base = class_p->base_class;
|
||||||
|
|
||||||
/*Find a base in which Call the ancestor's event handler_cb is set*/
|
/*Find a base in which Call the ancestor's event handler_cb is set*/
|
||||||
@@ -232,12 +232,11 @@ lv_res_t lv_obj_event_base(const lv_obj_class_t * class_p, struct _lv_obj_t * ob
|
|||||||
if(base == NULL) return LV_RES_OK;
|
if(base == NULL) return LV_RES_OK;
|
||||||
if(base->event_cb == NULL) return LV_RES_OK;
|
if(base->event_cb == NULL) return LV_RES_OK;
|
||||||
|
|
||||||
|
|
||||||
/* Build a simple linked list from the objects used in the events
|
/* Build a simple linked list from the objects used in the events
|
||||||
* It's important to know if an this object was deleted by a nested event
|
* It's important to know if an this object was deleted by a nested event
|
||||||
* called from this `event_cb`. */
|
* called from this `event_cb`. */
|
||||||
lv_event_temp_data_t event_temp_data;
|
lv_event_temp_data_t event_temp_data;
|
||||||
event_temp_data.obj = obj;
|
event_temp_data.obj = e->target;
|
||||||
event_temp_data.deleted = false;
|
event_temp_data.deleted = false;
|
||||||
event_temp_data.prev = NULL;
|
event_temp_data.prev = NULL;
|
||||||
|
|
||||||
@@ -247,7 +246,8 @@ lv_res_t lv_obj_event_base(const lv_obj_class_t * class_p, struct _lv_obj_t * ob
|
|||||||
event_temp_data_head = &event_temp_data;
|
event_temp_data_head = &event_temp_data;
|
||||||
|
|
||||||
/*Call the actual event callback*/
|
/*Call the actual event callback*/
|
||||||
base->event_cb(obj, e);
|
e->user_data = NULL;
|
||||||
|
base->event_cb(e);
|
||||||
|
|
||||||
lv_res_t res = LV_RES_OK;
|
lv_res_t res = LV_RES_OK;
|
||||||
/*Stop if the object is deleted*/
|
/*Stop if the object is deleted*/
|
||||||
@@ -260,14 +260,24 @@ lv_res_t lv_obj_event_base(const lv_obj_class_t * class_p, struct _lv_obj_t * ob
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void * lv_event_get_param(void)
|
lv_obj_t * lv_event_get_target(lv_event_t * e)
|
||||||
{
|
{
|
||||||
return event_act_param;
|
return e->target;
|
||||||
}
|
}
|
||||||
|
|
||||||
void * lv_event_get_user_data(void)
|
lv_event_code_t lv_event_get_code(lv_event_t * e)
|
||||||
{
|
{
|
||||||
return event_act_user_data_cb;
|
return e->code;
|
||||||
|
}
|
||||||
|
|
||||||
|
void * lv_event_get_param(lv_event_t * e)
|
||||||
|
{
|
||||||
|
return e->param;
|
||||||
|
}
|
||||||
|
|
||||||
|
void * lv_event_get_user_data(lv_event_t * e)
|
||||||
|
{
|
||||||
|
return e->user_data;
|
||||||
}
|
}
|
||||||
|
|
||||||
lv_obj_t * lv_event_get_original_target(void)
|
lv_obj_t * lv_event_get_original_target(void)
|
||||||
@@ -625,10 +635,12 @@ static void lv_obj_destructor(const lv_obj_class_t * class_p, lv_obj_t * obj)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void lv_obj_draw(lv_obj_t * obj, lv_event_t e)
|
static void lv_obj_draw(lv_event_t * e)
|
||||||
{
|
{
|
||||||
if(e == LV_EVENT_COVER_CHECK) {
|
lv_event_code_t code = lv_event_get_code(e);
|
||||||
lv_cover_check_info_t * info = lv_event_get_param();
|
lv_obj_t * obj = lv_event_get_target(e);
|
||||||
|
if(code == LV_EVENT_COVER_CHECK) {
|
||||||
|
lv_cover_check_info_t * info = lv_event_get_param(e);
|
||||||
if(info->res == LV_DRAW_RES_MASKED) return;
|
if(info->res == LV_DRAW_RES_MASKED) return;
|
||||||
if(lv_obj_get_style_clip_corner(obj, LV_PART_MAIN)) {
|
if(lv_obj_get_style_clip_corner(obj, LV_PART_MAIN)) {
|
||||||
info->res = LV_DRAW_RES_MASKED;
|
info->res = LV_DRAW_RES_MASKED;
|
||||||
@@ -670,8 +682,8 @@ static void lv_obj_draw(lv_obj_t * obj, lv_event_t e)
|
|||||||
info->res = LV_DRAW_RES_COVER;
|
info->res = LV_DRAW_RES_COVER;
|
||||||
|
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_DRAW_MAIN) {
|
else if(code == LV_EVENT_DRAW_MAIN) {
|
||||||
const lv_area_t * clip_area = lv_event_get_param();
|
const lv_area_t * clip_area = lv_event_get_param(e);
|
||||||
lv_draw_rect_dsc_t draw_dsc;
|
lv_draw_rect_dsc_t draw_dsc;
|
||||||
lv_draw_rect_dsc_init(&draw_dsc);
|
lv_draw_rect_dsc_init(&draw_dsc);
|
||||||
/*If the border is drawn later disable loading its properties*/
|
/*If the border is drawn later disable loading its properties*/
|
||||||
@@ -702,8 +714,8 @@ static void lv_obj_draw(lv_obj_t * obj, lv_event_t e)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_DRAW_POST) {
|
else if(code == LV_EVENT_DRAW_POST) {
|
||||||
const lv_area_t * clip_area = lv_event_get_param();
|
const lv_area_t * clip_area = lv_event_get_param(e);
|
||||||
draw_scrollbar(obj, clip_area);
|
draw_scrollbar(obj, clip_area);
|
||||||
|
|
||||||
#if LV_DRAW_COMPLEX
|
#if LV_DRAW_COMPLEX
|
||||||
@@ -797,27 +809,29 @@ static lv_res_t scrollbar_init_draw_dsc(lv_obj_t * obj, lv_draw_rect_dsc_t * dsc
|
|||||||
|
|
||||||
#include "lvgl/lvgl.h"
|
#include "lvgl/lvgl.h"
|
||||||
|
|
||||||
static void lv_obj_event_cb(lv_obj_t * obj, lv_event_t e)
|
static void lv_obj_event_cb(lv_event_t * e)
|
||||||
{
|
{
|
||||||
if(e == LV_EVENT_PRESSED) {
|
lv_event_code_t code = lv_event_get_code(e);
|
||||||
|
lv_obj_t * obj = lv_event_get_target(e);
|
||||||
|
if(code == LV_EVENT_PRESSED) {
|
||||||
lv_obj_add_state(obj, LV_STATE_PRESSED);
|
lv_obj_add_state(obj, LV_STATE_PRESSED);
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_RELEASED) {
|
else if(code == LV_EVENT_RELEASED) {
|
||||||
lv_obj_clear_state(obj, LV_STATE_PRESSED);
|
lv_obj_clear_state(obj, LV_STATE_PRESSED);
|
||||||
void * param = lv_event_get_param();
|
void * param = lv_event_get_param(e);
|
||||||
/*Go the checked state if enabled*/
|
/*Go the checked state if enabled*/
|
||||||
if(lv_indev_get_scroll_obj(param) == NULL && lv_obj_has_flag(obj, LV_OBJ_FLAG_CHECKABLE)) {
|
if(lv_indev_get_scroll_obj(param) == NULL && lv_obj_has_flag(obj, LV_OBJ_FLAG_CHECKABLE)) {
|
||||||
if(!(lv_obj_get_state(obj) & LV_STATE_CHECKED)) lv_obj_add_state(obj, LV_STATE_CHECKED);
|
if(!(lv_obj_get_state(obj) & LV_STATE_CHECKED)) lv_obj_add_state(obj, LV_STATE_CHECKED);
|
||||||
else lv_obj_clear_state(obj, LV_STATE_CHECKED);
|
else lv_obj_clear_state(obj, LV_STATE_CHECKED);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_PRESS_LOST) {
|
else if(code == LV_EVENT_PRESS_LOST) {
|
||||||
lv_obj_clear_state(obj, LV_STATE_PRESSED);
|
lv_obj_clear_state(obj, LV_STATE_PRESSED);
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_KEY) {
|
else if(code == LV_EVENT_KEY) {
|
||||||
if(lv_obj_has_flag(obj, LV_OBJ_FLAG_CHECKABLE)) {
|
if(lv_obj_has_flag(obj, LV_OBJ_FLAG_CHECKABLE)) {
|
||||||
uint32_t state = 0;
|
uint32_t state = 0;
|
||||||
char c = *((char *)lv_event_get_param());
|
char c = *((char *)lv_event_get_param(e));
|
||||||
if(c == LV_KEY_RIGHT || c == LV_KEY_UP) {
|
if(c == LV_KEY_RIGHT || c == LV_KEY_UP) {
|
||||||
lv_obj_add_state(obj, LV_STATE_CHECKED);
|
lv_obj_add_state(obj, LV_STATE_CHECKED);
|
||||||
state = 1;
|
state = 1;
|
||||||
@@ -830,7 +844,7 @@ static void lv_obj_event_cb(lv_obj_t * obj, lv_event_t e)
|
|||||||
if(res != LV_RES_OK) return;
|
if(res != LV_RES_OK) return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_FOCUSED) {
|
else if(code == LV_EVENT_FOCUSED) {
|
||||||
if(lv_obj_has_flag(obj, LV_OBJ_FLAG_SCROLL_ON_FOCUS)) {
|
if(lv_obj_has_flag(obj, LV_OBJ_FLAG_SCROLL_ON_FOCUS)) {
|
||||||
lv_obj_scroll_to_view_recursive(obj, LV_ANIM_ON);
|
lv_obj_scroll_to_view_recursive(obj, LV_ANIM_ON);
|
||||||
}
|
}
|
||||||
@@ -856,19 +870,19 @@ static void lv_obj_event_cb(lv_obj_t * obj, lv_event_t e)
|
|||||||
lv_obj_clear_state(obj, LV_STATE_EDITED);
|
lv_obj_clear_state(obj, LV_STATE_EDITED);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_SCROLL_BEGIN) {
|
else if(code == LV_EVENT_SCROLL_BEGIN) {
|
||||||
lv_obj_add_state(obj, LV_STATE_SCROLLED);
|
lv_obj_add_state(obj, LV_STATE_SCROLLED);
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_SCROLL_END) {
|
else if(code == LV_EVENT_SCROLL_END) {
|
||||||
lv_obj_clear_state(obj, LV_STATE_SCROLLED);
|
lv_obj_clear_state(obj, LV_STATE_SCROLLED);
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_DEFOCUSED) {
|
else if(code == LV_EVENT_DEFOCUSED) {
|
||||||
/*if using focus mode, change target to parent*/
|
/*if using focus mode, change target to parent*/
|
||||||
obj = lv_obj_get_focused_obj(obj);
|
obj = lv_obj_get_focused_obj(obj);
|
||||||
|
|
||||||
lv_obj_clear_state(obj, LV_STATE_FOCUSED | LV_STATE_EDITED | LV_STATE_FOCUS_KEY);
|
lv_obj_clear_state(obj, LV_STATE_FOCUSED | LV_STATE_EDITED | LV_STATE_FOCUS_KEY);
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_SIZE_CHANGED) {
|
else if(code == LV_EVENT_SIZE_CHANGED) {
|
||||||
uint32_t i;
|
uint32_t i;
|
||||||
for(i = 0; i < lv_obj_get_child_cnt(obj); i++) {
|
for(i = 0; i < lv_obj_get_child_cnt(obj); i++) {
|
||||||
lv_obj_t * child = lv_obj_get_child(obj, i);
|
lv_obj_t * child = lv_obj_get_child(obj, i);
|
||||||
@@ -883,7 +897,7 @@ static void lv_obj_event_cb(lv_obj_t * obj, lv_event_t e)
|
|||||||
lv_obj_mark_layout_as_dirty(obj);
|
lv_obj_mark_layout_as_dirty(obj);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_CHILD_CHANGED) {
|
else if(code == LV_EVENT_CHILD_CHANGED) {
|
||||||
lv_coord_t w = lv_obj_get_style_width(obj, LV_PART_MAIN);
|
lv_coord_t w = lv_obj_get_style_width(obj, LV_PART_MAIN);
|
||||||
lv_coord_t h = lv_obj_get_style_height(obj, LV_PART_MAIN);
|
lv_coord_t h = lv_obj_get_style_height(obj, LV_PART_MAIN);
|
||||||
lv_coord_t align = lv_obj_get_style_align(obj, LV_PART_MAIN);
|
lv_coord_t align = lv_obj_get_style_align(obj, LV_PART_MAIN);
|
||||||
@@ -892,22 +906,22 @@ static void lv_obj_event_cb(lv_obj_t * obj, lv_event_t e)
|
|||||||
lv_obj_mark_layout_as_dirty(obj);
|
lv_obj_mark_layout_as_dirty(obj);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_BASE_DIR_CHANGED) {
|
else if(code == LV_EVENT_BASE_DIR_CHANGED) {
|
||||||
/*The layout might depend on the base dir.
|
/*The layout might depend on the base dir.
|
||||||
*E.g. the first is element is on the left or right*/
|
*E.g. the first is element is on the left or right*/
|
||||||
lv_obj_mark_layout_as_dirty(obj);
|
lv_obj_mark_layout_as_dirty(obj);
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_SCROLL_END) {
|
else if(code == LV_EVENT_SCROLL_END) {
|
||||||
if(lv_obj_get_scrollbar_mode(obj) == LV_SCROLLBAR_MODE_ACTIVE) {
|
if(lv_obj_get_scrollbar_mode(obj) == LV_SCROLLBAR_MODE_ACTIVE) {
|
||||||
lv_obj_invalidate(obj);
|
lv_obj_invalidate(obj);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_REFR_EXT_DRAW_SIZE) {
|
else if(code == LV_EVENT_REFR_EXT_DRAW_SIZE) {
|
||||||
lv_coord_t * s = lv_event_get_param();
|
lv_coord_t * s = lv_event_get_param(e);
|
||||||
lv_coord_t d = lv_obj_calculate_ext_draw_size(obj, LV_PART_MAIN);
|
lv_coord_t d = lv_obj_calculate_ext_draw_size(obj, LV_PART_MAIN);
|
||||||
*s = LV_MAX(*s, d);
|
*s = LV_MAX(*s, d);
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_STYLE_CHANGED) {
|
else if(code == LV_EVENT_STYLE_CHANGED) {
|
||||||
/*Padding might have changed so the layout should be recalculated*/
|
/*Padding might have changed so the layout should be recalculated*/
|
||||||
uint32_t i;
|
uint32_t i;
|
||||||
for(i = 0; i < lv_obj_get_child_cnt(obj); i++) {
|
for(i = 0; i < lv_obj_get_child_cnt(obj); i++) {
|
||||||
@@ -921,8 +935,8 @@ static void lv_obj_event_cb(lv_obj_t * obj, lv_event_t e)
|
|||||||
|
|
||||||
lv_obj_refresh_ext_draw_size(obj);
|
lv_obj_refresh_ext_draw_size(obj);
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_DRAW_MAIN || e == LV_EVENT_DRAW_POST || e == LV_EVENT_COVER_CHECK) {
|
else if(code == LV_EVENT_DRAW_MAIN || code == LV_EVENT_DRAW_POST || code == LV_EVENT_COVER_CHECK) {
|
||||||
lv_obj_draw(obj, e);
|
lv_obj_draw(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1033,9 +1047,9 @@ static bool obj_valid_child(const lv_obj_t * parent, const lv_obj_t * obj_to_fin
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
static lv_res_t event_send_core(lv_obj_t * obj, lv_event_t event, void * param)
|
static lv_res_t event_send_core(lv_obj_t * obj, lv_event_code_t event_code, void * param)
|
||||||
{
|
{
|
||||||
EVENT_TRACE("Sending event %d to %p with %p param", event, obj, param);
|
EVENT_TRACE("Sending event %d to %p with %p param", event_code, obj, param);
|
||||||
|
|
||||||
/*Build a simple linked list from the objects used in the events
|
/*Build a simple linked list from the objects used in the events
|
||||||
*It's important to know if an this object was deleted by a nested event
|
*It's important to know if an this object was deleted by a nested event
|
||||||
@@ -1058,12 +1072,17 @@ static lv_res_t event_send_core(lv_obj_t * obj, lv_event_t event, void * param)
|
|||||||
/*Call the input device's feedback callback if set*/
|
/*Call the input device's feedback callback if set*/
|
||||||
lv_indev_t * indev_act = lv_indev_get_act();
|
lv_indev_t * indev_act = lv_indev_get_act();
|
||||||
if(indev_act) {
|
if(indev_act) {
|
||||||
if(indev_act->driver->feedback_cb) indev_act->driver->feedback_cb(indev_act->driver, event);
|
if(indev_act->driver->feedback_cb) indev_act->driver->feedback_cb(indev_act->driver, event_code);
|
||||||
}
|
}
|
||||||
|
|
||||||
lv_event_dsc_t * event_dsc = lv_obj_get_event_dsc(obj, 0);
|
lv_event_dsc_t * event_dsc = lv_obj_get_event_dsc(obj, 0);
|
||||||
lv_res_t res = LV_RES_OK;
|
lv_res_t res = LV_RES_OK;
|
||||||
res = lv_obj_event_base(NULL, obj, event);
|
lv_event_t e;
|
||||||
|
e.code = event_code;
|
||||||
|
e.target = obj;
|
||||||
|
e.original_target = obj;
|
||||||
|
e.param = param;
|
||||||
|
res = lv_obj_event_base(NULL, &e);
|
||||||
|
|
||||||
uint32_t i = 0;
|
uint32_t i = 0;
|
||||||
while(event_dsc && res == LV_RES_OK) {
|
while(event_dsc && res == LV_RES_OK) {
|
||||||
@@ -1071,7 +1090,8 @@ static lv_res_t event_send_core(lv_obj_t * obj, lv_event_t event, void * param)
|
|||||||
void * event_act_user_data_cb_save = event_act_user_data_cb;
|
void * event_act_user_data_cb_save = event_act_user_data_cb;
|
||||||
event_act_user_data_cb = event_dsc->user_data;
|
event_act_user_data_cb = event_dsc->user_data;
|
||||||
|
|
||||||
event_dsc->cb(obj, event);
|
e.user_data = event_dsc->user_data;
|
||||||
|
event_dsc->cb(&e);
|
||||||
|
|
||||||
event_act_user_data_cb = event_act_user_data_cb_save;
|
event_act_user_data_cb = event_act_user_data_cb_save;
|
||||||
|
|
||||||
@@ -1086,23 +1106,23 @@ static lv_res_t event_send_core(lv_obj_t * obj, lv_event_t event, void * param)
|
|||||||
event_dsc = lv_obj_get_event_dsc(obj, i);
|
event_dsc = lv_obj_get_event_dsc(obj, i);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*Restore the event param*/
|
/*Restore the event_code param*/
|
||||||
event_act_param = event_act_param_save;
|
event_act_param = event_act_param_save;
|
||||||
|
|
||||||
/*Remove this element from the list*/
|
/*Remove this element from the list*/
|
||||||
event_temp_data_head = event_temp_data_head->prev;
|
event_temp_data_head = event_temp_data_head->prev;
|
||||||
|
|
||||||
if(res == LV_RES_OK && event_is_bubbled(event)) {
|
if(res == LV_RES_OK && event_is_bubbled(event_code)) {
|
||||||
if(lv_obj_has_flag(obj, LV_OBJ_FLAG_EVENT_BUBBLE) && obj->parent) {
|
if(lv_obj_has_flag(obj, LV_OBJ_FLAG_EVENT_BUBBLE) && obj->parent) {
|
||||||
res = event_send_core(obj->parent, event, param);
|
res = event_send_core(obj->parent, event_code, param);
|
||||||
if(res != LV_RES_OK) return LV_RES_INV;
|
if(res != LV_RES_OK) return LV_RES_INV;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return LV_RES_OK;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool event_is_bubbled(lv_event_t e)
|
static bool event_is_bubbled(lv_event_code_t e)
|
||||||
{
|
{
|
||||||
switch(e) {
|
switch(e) {
|
||||||
case LV_EVENT_HIT_TEST:
|
case LV_EVENT_HIT_TEST:
|
||||||
|
|||||||
@@ -91,6 +91,15 @@ typedef enum {
|
|||||||
LV_EVENT_GET_SELF_SIZE, /**< Get the internal size of a widget*/
|
LV_EVENT_GET_SELF_SIZE, /**< Get the internal size of a widget*/
|
||||||
|
|
||||||
_LV_EVENT_LAST /** Number of default events*/
|
_LV_EVENT_LAST /** Number of default events*/
|
||||||
|
}lv_event_code_t;
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
struct _lv_obj_t * target;
|
||||||
|
struct _lv_obj_t * original_target;
|
||||||
|
lv_event_code_t code;
|
||||||
|
void * user_data;
|
||||||
|
void * param;
|
||||||
}lv_event_t;
|
}lv_event_t;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -98,7 +107,7 @@ typedef enum {
|
|||||||
* Events are used to notify the user of some action being taken on the object.
|
* Events are used to notify the user of some action being taken on the object.
|
||||||
* For details, see ::lv_event_t.
|
* For details, see ::lv_event_t.
|
||||||
*/
|
*/
|
||||||
typedef void (*lv_event_cb_t)(struct _lv_obj_t * obj, lv_event_t event);
|
typedef void (*lv_event_cb_t)(lv_event_t * e);
|
||||||
|
|
||||||
/*---------------------
|
/*---------------------
|
||||||
* EVENTS
|
* EVENTS
|
||||||
@@ -301,21 +310,17 @@ lv_obj_t * lv_obj_create(lv_obj_t * parent);
|
|||||||
* @param param arbitrary data depending on the object type and the event. (Usually `NULL`)
|
* @param param arbitrary data depending on the object type and the event. (Usually `NULL`)
|
||||||
* @return LV_RES_OK: `obj` was not deleted in the event; LV_RES_INV: `obj` was deleted in the event
|
* @return LV_RES_OK: `obj` was not deleted in the event; LV_RES_INV: `obj` was deleted in the event
|
||||||
*/
|
*/
|
||||||
lv_res_t lv_event_send(lv_obj_t * obj, lv_event_t event, void * param);
|
lv_res_t lv_event_send(lv_obj_t * obj, lv_event_code_t event, void * param);
|
||||||
|
|
||||||
lv_res_t lv_obj_event_base(const lv_obj_class_t * class_p, struct _lv_obj_t * obj, lv_event_t e);
|
lv_res_t lv_obj_event_base(const lv_obj_class_t * class_p, lv_event_t * e);
|
||||||
|
|
||||||
/**
|
lv_obj_t * lv_event_get_target(lv_event_t * e);
|
||||||
* Get the `param` parameter of the current event
|
|
||||||
* @return the `param` parameter
|
|
||||||
*/
|
|
||||||
void * lv_event_get_param(void);
|
|
||||||
|
|
||||||
/**
|
lv_event_code_t lv_event_get_code(lv_event_t * e);
|
||||||
* Get the user data of the event callback. (Set when the callback is registered)
|
|
||||||
* @return the user data parameter
|
void * lv_event_get_param(lv_event_t * e);
|
||||||
*/
|
|
||||||
void * lv_event_get_user_data(void);
|
void * lv_event_get_user_data(lv_event_t * e);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the original target of the event. It's different than the "normal" target if the event is bubbled.
|
* Get the original target of the event. It's different than the "normal" target if the event is bubbled.
|
||||||
|
|||||||
@@ -24,7 +24,7 @@
|
|||||||
* STATIC PROTOTYPES
|
* STATIC PROTOTYPES
|
||||||
**********************/
|
**********************/
|
||||||
static void my_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj);
|
static void my_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj);
|
||||||
static void draw_event_cb(lv_obj_t * obj, lv_event_t e);
|
static void draw_event_cb(lv_event_t * e);
|
||||||
|
|
||||||
static uint8_t get_day_of_week(uint32_t year, uint32_t month, uint32_t day);
|
static uint8_t get_day_of_week(uint32_t year, uint32_t month, uint32_t day);
|
||||||
static uint8_t get_month_length(int32_t year, int32_t month);
|
static uint8_t get_month_length(int32_t year, int32_t month);
|
||||||
@@ -252,10 +252,12 @@ static void my_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void draw_event_cb(lv_obj_t * obj, lv_event_t e)
|
static void draw_event_cb(lv_event_t * e)
|
||||||
{
|
{
|
||||||
if(e == LV_EVENT_DRAW_PART_BEGIN) {
|
lv_event_code_t code = lv_event_get_code(e);
|
||||||
lv_obj_draw_dsc_t * dsc = lv_event_get_param();
|
lv_obj_t * obj = lv_event_get_target(e);
|
||||||
|
if(code == LV_EVENT_DRAW_PART_BEGIN) {
|
||||||
|
lv_obj_draw_dsc_t * dsc = lv_event_get_param(e);
|
||||||
if(dsc->part == LV_PART_ITEMS) {
|
if(dsc->part == LV_PART_ITEMS) {
|
||||||
/*Day name styles*/
|
/*Day name styles*/
|
||||||
if(dsc->id < 7) {
|
if(dsc->id < 7) {
|
||||||
|
|||||||
@@ -25,7 +25,7 @@
|
|||||||
/**********************
|
/**********************
|
||||||
* STATIC PROTOTYPES
|
* STATIC PROTOTYPES
|
||||||
**********************/
|
**********************/
|
||||||
static void month_event_cb(lv_obj_t * btn, lv_event_t e);
|
static void month_event_cb(lv_event_t * e);
|
||||||
|
|
||||||
/**********************
|
/**********************
|
||||||
* STATIC VARIABLES
|
* STATIC VARIABLES
|
||||||
@@ -86,12 +86,16 @@ lv_obj_t * lv_calendar_header_arrow_create(lv_obj_t * parent, lv_obj_t * calenda
|
|||||||
* STATIC FUNCTIONS
|
* STATIC FUNCTIONS
|
||||||
**********************/
|
**********************/
|
||||||
|
|
||||||
static void month_event_cb(lv_obj_t * btn, lv_event_t e)
|
static void month_event_cb(lv_event_t * e)
|
||||||
{
|
{
|
||||||
if(e != LV_EVENT_CLICKED) return;
|
lv_event_code_t code = lv_event_get_code(e);
|
||||||
|
lv_obj_t * btn = lv_event_get_target(e);
|
||||||
|
|
||||||
|
if(code != LV_EVENT_CLICKED) return;
|
||||||
|
|
||||||
|
|
||||||
lv_obj_t * header = lv_obj_get_parent(btn);
|
lv_obj_t * header = lv_obj_get_parent(btn);
|
||||||
lv_obj_t * calendar = lv_event_get_user_data();
|
lv_obj_t * calendar = lv_event_get_user_data(e);
|
||||||
|
|
||||||
const lv_calendar_date_t * d;
|
const lv_calendar_date_t * d;
|
||||||
d = lv_calendar_get_showed_date(calendar);
|
d = lv_calendar_get_showed_date(calendar);
|
||||||
|
|||||||
@@ -24,8 +24,8 @@
|
|||||||
/**********************
|
/**********************
|
||||||
* STATIC PROTOTYPES
|
* STATIC PROTOTYPES
|
||||||
**********************/
|
**********************/
|
||||||
static void year_event_cb(lv_obj_t * btn, lv_event_t e);
|
static void year_event_cb(lv_event_t * e);
|
||||||
static void month_event_cb(lv_obj_t * btn, lv_event_t e);
|
static void month_event_cb(lv_event_t * e);
|
||||||
|
|
||||||
/**********************
|
/**********************
|
||||||
* STATIC VARIABLES
|
* STATIC VARIABLES
|
||||||
@@ -89,11 +89,13 @@ lv_obj_t * lv_calendar_header_dropdown_create(lv_obj_t * parent, lv_obj_t * cale
|
|||||||
* STATIC FUNCTIONS
|
* STATIC FUNCTIONS
|
||||||
**********************/
|
**********************/
|
||||||
|
|
||||||
static void month_event_cb(lv_obj_t * dropdown, lv_event_t e)
|
static void month_event_cb(lv_event_t * e)
|
||||||
{
|
{
|
||||||
if(e != LV_EVENT_VALUE_CHANGED) return;
|
lv_event_code_t code = lv_event_get_code(e);
|
||||||
|
if(code != LV_EVENT_VALUE_CHANGED) return;
|
||||||
|
|
||||||
lv_obj_t * calendar = lv_event_get_user_data();
|
lv_obj_t * dropdown = lv_event_get_target(e);
|
||||||
|
lv_obj_t * calendar = lv_event_get_user_data(e);
|
||||||
|
|
||||||
uint16_t sel = lv_dropdown_get_selected(dropdown);
|
uint16_t sel = lv_dropdown_get_selected(dropdown);
|
||||||
|
|
||||||
@@ -104,11 +106,13 @@ static void month_event_cb(lv_obj_t * dropdown, lv_event_t e)
|
|||||||
|
|
||||||
lv_calendar_set_showed_date(calendar, newd.year, newd.month);
|
lv_calendar_set_showed_date(calendar, newd.year, newd.month);
|
||||||
}
|
}
|
||||||
static void year_event_cb(lv_obj_t * dropdown, lv_event_t e)
|
static void year_event_cb(lv_event_t * e)
|
||||||
{
|
{
|
||||||
if(e != LV_EVENT_VALUE_CHANGED) return;
|
lv_event_code_t code = lv_event_get_code(e);
|
||||||
|
if(code != LV_EVENT_VALUE_CHANGED) return;
|
||||||
|
|
||||||
lv_obj_t * calendar = lv_event_get_user_data();
|
lv_obj_t * dropdown = lv_event_get_target(e);
|
||||||
|
lv_obj_t * calendar = lv_event_get_user_data(e);
|
||||||
|
|
||||||
uint16_t sel = lv_dropdown_get_selected(dropdown);
|
uint16_t sel = lv_dropdown_get_selected(dropdown);
|
||||||
|
|
||||||
|
|||||||
@@ -33,10 +33,10 @@
|
|||||||
* STATIC PROTOTYPES
|
* STATIC PROTOTYPES
|
||||||
**********************/
|
**********************/
|
||||||
static void lv_colorwheel_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj);
|
static void lv_colorwheel_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj);
|
||||||
static void lv_colorwheel_event(lv_obj_t * obj, lv_event_t e);
|
static void lv_colorwheel_event(lv_event_t * e);
|
||||||
|
|
||||||
static void draw_disc_grad(lv_obj_t * obj);
|
static void draw_disc_grad(lv_event_t * e);
|
||||||
static void draw_knob(lv_obj_t * obj);
|
static void draw_knob(lv_event_t * e);
|
||||||
static void invalidate_knob(lv_obj_t * obj);
|
static void invalidate_knob(lv_obj_t * obj);
|
||||||
static lv_area_t get_knob_area(lv_obj_t * obj);
|
static lv_area_t get_knob_area(lv_obj_t * obj);
|
||||||
|
|
||||||
@@ -225,9 +225,10 @@ static void lv_colorwheel_constructor(const lv_obj_class_t * class_p, lv_obj_t *
|
|||||||
refr_knob_pos(obj);
|
refr_knob_pos(obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void draw_disc_grad(lv_obj_t * obj)
|
static void draw_disc_grad(lv_event_t * e)
|
||||||
{
|
{
|
||||||
const lv_area_t * clip_area = lv_event_get_param();
|
lv_obj_t * obj = lv_event_get_target(e);
|
||||||
|
const lv_area_t * clip_area = lv_event_get_param(e);
|
||||||
lv_coord_t w = lv_obj_get_width(obj);
|
lv_coord_t w = lv_obj_get_width(obj);
|
||||||
lv_coord_t h = lv_obj_get_height(obj);
|
lv_coord_t h = lv_obj_get_height(obj);
|
||||||
lv_coord_t cx = obj->coords.x1 + w / 2;
|
lv_coord_t cx = obj->coords.x1 + w / 2;
|
||||||
@@ -286,9 +287,10 @@ static void draw_disc_grad(lv_obj_t * obj)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static void draw_knob(lv_obj_t * obj)
|
static void draw_knob(lv_event_t * e)
|
||||||
{
|
{
|
||||||
const lv_area_t * clip_area = lv_event_get_param();
|
lv_obj_t * obj = lv_event_get_target(e);
|
||||||
|
const lv_area_t * clip_area = lv_event_get_param(e);
|
||||||
lv_colorwheel_t * colorwheel = (lv_colorwheel_t *)obj;
|
lv_colorwheel_t * colorwheel = (lv_colorwheel_t *)obj;
|
||||||
|
|
||||||
lv_draw_rect_dsc_t cir_dsc;
|
lv_draw_rect_dsc_t cir_dsc;
|
||||||
@@ -335,39 +337,41 @@ static lv_area_t get_knob_area(lv_obj_t * obj)
|
|||||||
return knob_area;
|
return knob_area;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void lv_colorwheel_event(lv_obj_t * obj, lv_event_t e)
|
static void lv_colorwheel_event(lv_event_t * e)
|
||||||
{
|
{
|
||||||
/*Call the ancestor's event handler*/
|
/*Call the ancestor's event handler*/
|
||||||
lv_res_t res = lv_obj_event_base(MY_CLASS, obj, e);
|
lv_res_t res = lv_obj_event_base(MY_CLASS, e);
|
||||||
|
|
||||||
if(res != LV_RES_OK) return;
|
if(res != LV_RES_OK) return;
|
||||||
|
|
||||||
|
lv_event_code_t code = lv_event_get_code(e);
|
||||||
|
lv_obj_t * obj = lv_event_get_target(e);
|
||||||
lv_colorwheel_t * colorwheel = (lv_colorwheel_t *)obj;
|
lv_colorwheel_t * colorwheel = (lv_colorwheel_t *)obj;
|
||||||
|
|
||||||
if(e == LV_EVENT_REFR_EXT_DRAW_SIZE) {
|
if(code == LV_EVENT_REFR_EXT_DRAW_SIZE) {
|
||||||
lv_coord_t left = lv_obj_get_style_pad_left(obj, LV_PART_KNOB);
|
lv_coord_t left = lv_obj_get_style_pad_left(obj, LV_PART_KNOB);
|
||||||
lv_coord_t right = lv_obj_get_style_pad_right(obj, LV_PART_KNOB);
|
lv_coord_t right = lv_obj_get_style_pad_right(obj, LV_PART_KNOB);
|
||||||
lv_coord_t top = lv_obj_get_style_pad_top(obj, LV_PART_KNOB);
|
lv_coord_t top = lv_obj_get_style_pad_top(obj, LV_PART_KNOB);
|
||||||
lv_coord_t bottom = lv_obj_get_style_pad_bottom(obj, LV_PART_KNOB);
|
lv_coord_t bottom = lv_obj_get_style_pad_bottom(obj, LV_PART_KNOB);
|
||||||
|
|
||||||
lv_coord_t knob_pad = LV_MAX4(left, right, top, bottom) + 2;
|
lv_coord_t knob_pad = LV_MAX4(left, right, top, bottom) + 2;
|
||||||
lv_coord_t * s = lv_event_get_param();
|
lv_coord_t * s = lv_event_get_param(e);
|
||||||
*s = LV_MAX(*s, knob_pad);
|
*s = LV_MAX(*s, knob_pad);
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_SIZE_CHANGED) {
|
else if(code == LV_EVENT_SIZE_CHANGED) {
|
||||||
void * param = lv_event_get_param();
|
void * param = lv_event_get_param(e);
|
||||||
/*Refresh extended draw area to make knob visible*/
|
/*Refresh extended draw area to make knob visible*/
|
||||||
if(lv_obj_get_width(obj) != lv_area_get_width(param) ||
|
if(lv_obj_get_width(obj) != lv_area_get_width(param) ||
|
||||||
lv_obj_get_height(obj) != lv_area_get_height(param)) {
|
lv_obj_get_height(obj) != lv_area_get_height(param)) {
|
||||||
refr_knob_pos(obj);
|
refr_knob_pos(obj);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_STYLE_CHANGED) {
|
else if(code == LV_EVENT_STYLE_CHANGED) {
|
||||||
/*Refresh extended draw area to make knob visible*/
|
/*Refresh extended draw area to make knob visible*/
|
||||||
refr_knob_pos(obj);
|
refr_knob_pos(obj);
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_KEY) {
|
else if(code == LV_EVENT_KEY) {
|
||||||
uint32_t c = *((uint32_t *)lv_event_get_param()); /*uint32_t because can be UTF-8*/
|
uint32_t c = *((uint32_t *)lv_event_get_param(e)); /*uint32_t because can be UTF-8*/
|
||||||
|
|
||||||
if(c == LV_KEY_RIGHT || c == LV_KEY_UP) {
|
if(c == LV_KEY_RIGHT || c == LV_KEY_UP) {
|
||||||
lv_color_hsv_t hsv_cur;
|
lv_color_hsv_t hsv_cur;
|
||||||
@@ -412,13 +416,13 @@ static void lv_colorwheel_event(lv_obj_t * obj, lv_event_t e)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_PRESSED) {
|
else if(code == LV_EVENT_PRESSED) {
|
||||||
colorwheel->last_change_time = lv_tick_get();
|
colorwheel->last_change_time = lv_tick_get();
|
||||||
lv_indev_get_point(lv_indev_get_act(), &colorwheel->last_press_point);
|
lv_indev_get_point(lv_indev_get_act(), &colorwheel->last_press_point);
|
||||||
res = double_click_reset(obj);
|
res = double_click_reset(obj);
|
||||||
if(res != LV_RES_OK) return;
|
if(res != LV_RES_OK) return;
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_PRESSING) {
|
else if(code == LV_EVENT_PRESSING) {
|
||||||
lv_indev_t * indev = lv_indev_get_act();
|
lv_indev_t * indev = lv_indev_get_act();
|
||||||
if(indev == NULL) return;
|
if(indev == NULL) return;
|
||||||
|
|
||||||
@@ -498,18 +502,18 @@ static void lv_colorwheel_event(lv_obj_t * obj, lv_event_t e)
|
|||||||
if(res != LV_RES_OK) return;
|
if(res != LV_RES_OK) return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_HIT_TEST) {
|
else if(code == LV_EVENT_HIT_TEST) {
|
||||||
lv_hit_test_info_t * info = lv_event_get_param();;
|
lv_hit_test_info_t * info = lv_event_get_param(e);;
|
||||||
|
|
||||||
/*Valid clicks can be only in the circle*/
|
/*Valid clicks can be only in the circle*/
|
||||||
info->result = _lv_area_is_point_on(&obj->coords, info->point, LV_RADIUS_CIRCLE);
|
info->result = _lv_area_is_point_on(&obj->coords, info->point, LV_RADIUS_CIRCLE);
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_DRAW_MAIN) {
|
else if(code == LV_EVENT_DRAW_MAIN) {
|
||||||
draw_disc_grad(obj);
|
draw_disc_grad(e);
|
||||||
draw_knob(obj);
|
draw_knob(e);
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_COVER_CHECK) {
|
else if(code == LV_EVENT_COVER_CHECK) {
|
||||||
lv_cover_check_info_t * info = lv_event_get_param();
|
lv_cover_check_info_t * info = lv_event_get_param(e);
|
||||||
if(info->res != LV_DRAW_RES_MASKED) info->res = LV_DRAW_RES_NOT_COVER;
|
if(info->res != LV_DRAW_RES_MASKED) info->res = LV_DRAW_RES_NOT_COVER;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,8 +24,8 @@
|
|||||||
* STATIC PROTOTYPES
|
* STATIC PROTOTYPES
|
||||||
**********************/
|
**********************/
|
||||||
static void lv_imgbtn_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj);
|
static void lv_imgbtn_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj);
|
||||||
static void draw_main(lv_obj_t * obj);
|
static void draw_main(lv_event_t * e);
|
||||||
static void lv_imgbtn_event(lv_obj_t * imgbtn, lv_event_t e);
|
static void lv_imgbtn_event(lv_event_t * e);
|
||||||
static void refr_img(lv_obj_t * imgbtn);
|
static void refr_img(lv_obj_t * imgbtn);
|
||||||
static lv_imgbtn_state_t suggest_state(lv_obj_t * imgbtn, lv_imgbtn_state_t state);
|
static lv_imgbtn_state_t suggest_state(lv_obj_t * imgbtn, lv_imgbtn_state_t state);
|
||||||
lv_imgbtn_state_t get_state(const lv_obj_t * imgbtn);
|
lv_imgbtn_state_t get_state(const lv_obj_t * imgbtn);
|
||||||
@@ -160,27 +160,30 @@ static void lv_imgbtn_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void lv_imgbtn_event(lv_obj_t * obj, lv_event_t e)
|
static void lv_imgbtn_event(lv_event_t * e)
|
||||||
{
|
{
|
||||||
lv_res_t res = lv_obj_event_base(&lv_imgbtn_class, obj, e);
|
lv_res_t res = lv_obj_event_base(&lv_imgbtn_class, e);
|
||||||
if(res != LV_RES_OK) return;
|
if(res != LV_RES_OK) return;
|
||||||
|
|
||||||
if(e == LV_EVENT_PRESSED || e == LV_EVENT_RELEASED || e == LV_EVENT_PRESS_LOST) {
|
lv_event_code_t code = lv_event_get_code(e);
|
||||||
|
lv_obj_t * obj = lv_event_get_target(e);
|
||||||
|
if(code == LV_EVENT_PRESSED || code == LV_EVENT_RELEASED || code == LV_EVENT_PRESS_LOST) {
|
||||||
refr_img(obj);
|
refr_img(obj);
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_DRAW_MAIN) {
|
else if(code == LV_EVENT_DRAW_MAIN) {
|
||||||
draw_main(obj);
|
draw_main(e);
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_COVER_CHECK) {
|
else if(code == LV_EVENT_COVER_CHECK) {
|
||||||
lv_cover_check_info_t * info = lv_event_get_param();
|
lv_cover_check_info_t * info = lv_event_get_param(e);
|
||||||
if(info->res != LV_DRAW_RES_MASKED) info->res = LV_DRAW_RES_NOT_COVER;
|
if(info->res != LV_DRAW_RES_MASKED) info->res = LV_DRAW_RES_NOT_COVER;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void draw_main(lv_obj_t * obj)
|
static void draw_main(lv_event_t * e)
|
||||||
{
|
{
|
||||||
|
lv_obj_t * obj = lv_event_get_target(e);
|
||||||
lv_imgbtn_t * imgbtn = (lv_imgbtn_t *)obj;
|
lv_imgbtn_t * imgbtn = (lv_imgbtn_t *)obj;
|
||||||
const lv_area_t * clip_area = lv_event_get_param();
|
const lv_area_t * clip_area = lv_event_get_param(e);
|
||||||
|
|
||||||
/*Just draw_main an image*/
|
/*Just draw_main an image*/
|
||||||
lv_imgbtn_state_t state = suggest_state(obj, get_state(obj));
|
lv_imgbtn_state_t state = suggest_state(obj, get_state(obj));
|
||||||
|
|||||||
@@ -220,15 +220,17 @@ lv_keyboard_mode_t lv_keyboard_get_mode(const lv_obj_t * obj)
|
|||||||
* @param kb pointer to a keyboard
|
* @param kb pointer to a keyboard
|
||||||
* @param event the triggering event
|
* @param event the triggering event
|
||||||
*/
|
*/
|
||||||
void lv_keyboard_def_event_cb(lv_obj_t * obj, lv_event_t event)
|
void lv_keyboard_def_event_cb(lv_event_t * e)
|
||||||
{
|
{
|
||||||
if(event != LV_EVENT_VALUE_CHANGED) return;
|
lv_event_code_t code = lv_event_get_code(e);
|
||||||
|
lv_obj_t * obj = lv_event_get_target(e);
|
||||||
|
if(code != LV_EVENT_VALUE_CHANGED) return;
|
||||||
|
|
||||||
lv_keyboard_t * keyboard = (lv_keyboard_t *)obj;
|
lv_keyboard_t * keyboard = (lv_keyboard_t *)obj;
|
||||||
uint16_t btn_id = lv_btnmatrix_get_selected_btn(obj);
|
uint16_t btn_id = lv_btnmatrix_get_selected_btn(obj);
|
||||||
if(btn_id == LV_BTNMATRIX_BTN_NONE) return;
|
if(btn_id == LV_BTNMATRIX_BTN_NONE) return;
|
||||||
if(lv_btnmatrix_has_btn_ctrl(obj, btn_id, LV_BTNMATRIX_CTRL_HIDDEN | LV_BTNMATRIX_CTRL_DISABLED)) return;
|
if(lv_btnmatrix_has_btn_ctrl(obj, btn_id, LV_BTNMATRIX_CTRL_HIDDEN | LV_BTNMATRIX_CTRL_DISABLED)) return;
|
||||||
if(lv_btnmatrix_has_btn_ctrl(obj, btn_id, LV_BTNMATRIX_CTRL_NO_REPEAT) && event == LV_EVENT_LONG_PRESSED_REPEAT) return;
|
if(lv_btnmatrix_has_btn_ctrl(obj, btn_id, LV_BTNMATRIX_CTRL_NO_REPEAT) && code == LV_EVENT_LONG_PRESSED_REPEAT) return;
|
||||||
|
|
||||||
const char * txt = lv_btnmatrix_get_btn_text(obj, lv_btnmatrix_get_selected_btn(obj));
|
const char * txt = lv_btnmatrix_get_btn_text(obj, lv_btnmatrix_get_selected_btn(obj));
|
||||||
if(txt == NULL) return;
|
if(txt == NULL) return;
|
||||||
|
|||||||
@@ -130,7 +130,7 @@ static inline const char ** lv_keyboard_get_map_array(const lv_obj_t * kb)
|
|||||||
* @param kb pointer to a keyboard
|
* @param kb pointer to a keyboard
|
||||||
* @param event the triggering event
|
* @param event the triggering event
|
||||||
*/
|
*/
|
||||||
void lv_keyboard_def_event_cb(lv_obj_t * kb, lv_event_t event);
|
void lv_keyboard_def_event_cb(lv_event_t * e);
|
||||||
|
|
||||||
/**********************
|
/**********************
|
||||||
* MACROS
|
* MACROS
|
||||||
|
|||||||
@@ -30,7 +30,7 @@
|
|||||||
* STATIC PROTOTYPES
|
* STATIC PROTOTYPES
|
||||||
**********************/
|
**********************/
|
||||||
static void lv_led_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj);
|
static void lv_led_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj);
|
||||||
static void lv_led_event(lv_obj_t * obj, lv_event_t e);
|
static void lv_led_event(lv_event_t * e);
|
||||||
|
|
||||||
/**********************
|
/**********************
|
||||||
* STATIC VARIABLES
|
* STATIC VARIABLES
|
||||||
@@ -156,15 +156,17 @@ static void lv_led_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj)
|
|||||||
led->bright = LV_LED_BRIGHT_MAX;
|
led->bright = LV_LED_BRIGHT_MAX;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void lv_led_event(lv_obj_t * obj, lv_event_t e)
|
static void lv_led_event(lv_event_t * e)
|
||||||
{
|
{
|
||||||
lv_res_t res;
|
lv_res_t res;
|
||||||
|
|
||||||
/* Call the ancestor's event handler */
|
/* Call the ancestor's event handler */
|
||||||
res = lv_obj_event_base(MY_CLASS, obj, e);
|
res = lv_obj_event_base(MY_CLASS, e);
|
||||||
if(res != LV_RES_OK) return;
|
if(res != LV_RES_OK) return;
|
||||||
|
|
||||||
if(e == LV_EVENT_DRAW_MAIN) {
|
lv_event_code_t code = lv_event_get_code(e);
|
||||||
|
lv_obj_t * obj = lv_event_get_target(e);
|
||||||
|
if(code == LV_EVENT_DRAW_MAIN) {
|
||||||
/*Make darker colors in a temporary style according to the brightness*/
|
/*Make darker colors in a temporary style according to the brightness*/
|
||||||
lv_led_t * led = (lv_led_t *)obj;
|
lv_led_t * led = (lv_led_t *)obj;
|
||||||
|
|
||||||
@@ -193,7 +195,7 @@ static void lv_led_event(lv_obj_t * obj, lv_event_t e)
|
|||||||
rect_dsc.shadow_spread = ((led->bright - LV_LED_BRIGHT_MIN) * rect_dsc.shadow_spread) /
|
rect_dsc.shadow_spread = ((led->bright - LV_LED_BRIGHT_MIN) * rect_dsc.shadow_spread) /
|
||||||
(LV_LED_BRIGHT_MAX - LV_LED_BRIGHT_MIN);
|
(LV_LED_BRIGHT_MAX - LV_LED_BRIGHT_MIN);
|
||||||
|
|
||||||
const lv_area_t * clip_area = lv_event_get_param();
|
const lv_area_t * clip_area = lv_event_get_param(e);
|
||||||
lv_draw_rect(&obj->coords, clip_area, &rect_dsc);
|
lv_draw_rect(&obj->coords, clip_area, &rect_dsc);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
/**********************
|
/**********************
|
||||||
* STATIC PROTOTYPES
|
* STATIC PROTOTYPES
|
||||||
**********************/
|
**********************/
|
||||||
static void msgbox_close_event_cb(lv_obj_t * btn, lv_event_t e);
|
static void msgbox_close_event_cb(lv_event_t * e);
|
||||||
|
|
||||||
/**********************
|
/**********************
|
||||||
* STATIC VARIABLES
|
* STATIC VARIABLES
|
||||||
@@ -138,9 +138,11 @@ void lv_msgbox_close(lv_obj_t * mbox)
|
|||||||
* STATIC FUNCTIONS
|
* STATIC FUNCTIONS
|
||||||
**********************/
|
**********************/
|
||||||
|
|
||||||
static void msgbox_close_event_cb(lv_obj_t * btn, lv_event_t e)
|
static void msgbox_close_event_cb(lv_event_t * e)
|
||||||
{
|
{
|
||||||
if(e == LV_EVENT_CLICKED) {
|
lv_event_code_t code = lv_event_get_code(e);
|
||||||
|
lv_obj_t * btn = lv_event_get_target(e);
|
||||||
|
if(code == LV_EVENT_CLICKED) {
|
||||||
lv_obj_t * mbox = lv_obj_get_parent(btn);
|
lv_obj_t * mbox = lv_obj_get_parent(btn);
|
||||||
lv_msgbox_close(mbox);
|
lv_msgbox_close(mbox);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
**********************/
|
**********************/
|
||||||
|
|
||||||
static void lv_spinbox_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj);
|
static void lv_spinbox_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj);
|
||||||
static void lv_spinbox_event(lv_obj_t * obj, lv_event_t e);
|
static void lv_spinbox_event(lv_event_t * e);
|
||||||
static void lv_spinbox_updatevalue(lv_obj_t * obj);
|
static void lv_spinbox_updatevalue(lv_obj_t * obj);
|
||||||
|
|
||||||
/**********************
|
/**********************
|
||||||
@@ -294,15 +294,17 @@ static void lv_spinbox_constructor(const lv_obj_class_t * class_p, lv_obj_t * ob
|
|||||||
LV_LOG_TRACE("Spinbox constructor finished");
|
LV_LOG_TRACE("Spinbox constructor finished");
|
||||||
}
|
}
|
||||||
|
|
||||||
static void lv_spinbox_event(lv_obj_t * obj, lv_event_t e)
|
static void lv_spinbox_event(lv_event_t * e)
|
||||||
{
|
{
|
||||||
/*Call the ancestor's event handler*/
|
/*Call the ancestor's event handler*/
|
||||||
lv_res_t res = LV_RES_OK;
|
lv_res_t res = LV_RES_OK;
|
||||||
res = lv_obj_event_base(MY_CLASS, obj, e);
|
res = lv_obj_event_base(MY_CLASS, e);
|
||||||
if(res != LV_RES_OK) return;
|
if(res != LV_RES_OK) return;
|
||||||
|
|
||||||
|
lv_event_code_t code = lv_event_get_code(e);
|
||||||
|
lv_obj_t * obj = lv_event_get_target(e);
|
||||||
lv_spinbox_t * spinbox = (lv_spinbox_t *)obj;
|
lv_spinbox_t * spinbox = (lv_spinbox_t *)obj;
|
||||||
if(e == LV_EVENT_RELEASED) {
|
if(code == LV_EVENT_RELEASED) {
|
||||||
/*If released with an ENCODER then move to the next digit*/
|
/*If released with an ENCODER then move to the next digit*/
|
||||||
lv_indev_t * indev = lv_indev_get_act();
|
lv_indev_t * indev = lv_indev_get_act();
|
||||||
if(lv_indev_get_type(indev) == LV_INDEV_TYPE_ENCODER) {
|
if(lv_indev_get_type(indev) == LV_INDEV_TYPE_ENCODER) {
|
||||||
@@ -352,10 +354,10 @@ static void lv_spinbox_event(lv_obj_t * obj, lv_event_t e)
|
|||||||
for(i = 0; i < pos; i++) spinbox->step *= 10;
|
for(i = 0; i < pos; i++) spinbox->step *= 10;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_KEY) {
|
else if(code == LV_EVENT_KEY) {
|
||||||
lv_indev_type_t indev_type = lv_indev_get_type(lv_indev_get_act());
|
lv_indev_type_t indev_type = lv_indev_get_type(lv_indev_get_act());
|
||||||
|
|
||||||
uint32_t c = *((uint32_t *)lv_event_get_param()); /*uint32_t because can be UTF-8*/
|
uint32_t c = *((uint32_t *)lv_event_get_param(e)); /*uint32_t because can be UTF-8*/
|
||||||
if(c == LV_KEY_RIGHT) {
|
if(c == LV_KEY_RIGHT) {
|
||||||
if(indev_type == LV_INDEV_TYPE_ENCODER)
|
if(indev_type == LV_INDEV_TYPE_ENCODER)
|
||||||
lv_spinbox_increment(obj);
|
lv_spinbox_increment(obj);
|
||||||
|
|||||||
@@ -22,8 +22,8 @@
|
|||||||
**********************/
|
**********************/
|
||||||
static void lv_tabview_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj);
|
static void lv_tabview_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj);
|
||||||
static void lv_tabview_destructor(const lv_obj_class_t * class_p, lv_obj_t * obj);
|
static void lv_tabview_destructor(const lv_obj_class_t * class_p, lv_obj_t * obj);
|
||||||
static void btns_event_cb(lv_obj_t * btns, lv_event_t e);
|
static void btns_event_cb(lv_event_t * e);
|
||||||
static void cont_event_cb(lv_obj_t * cont, lv_event_t e);
|
static void cont_event_cb(lv_event_t * e);
|
||||||
|
|
||||||
/**********************
|
/**********************
|
||||||
* STATIC VARIABLES
|
* STATIC VARIABLES
|
||||||
@@ -228,17 +228,23 @@ static void lv_tabview_destructor(const lv_obj_class_t * class_p, lv_obj_t * obj
|
|||||||
tabview->map = NULL;
|
tabview->map = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void btns_event_cb(lv_obj_t * btns, lv_event_t e)
|
static void btns_event_cb(lv_event_t * e)
|
||||||
{
|
{
|
||||||
if(e == LV_EVENT_VALUE_CHANGED) {
|
lv_event_code_t code = lv_event_get_code(e);
|
||||||
|
lv_obj_t * btns = lv_event_get_target(e);
|
||||||
|
|
||||||
|
if(code == LV_EVENT_VALUE_CHANGED) {
|
||||||
lv_obj_t * tv = lv_obj_get_parent(btns);
|
lv_obj_t * tv = lv_obj_get_parent(btns);
|
||||||
uint32_t id = lv_btnmatrix_get_selected_btn(btns);
|
uint32_t id = lv_btnmatrix_get_selected_btn(btns);
|
||||||
lv_tabview_set_act(tv, id, LV_ANIM_ON);
|
lv_tabview_set_act(tv, id, LV_ANIM_ON);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
static void cont_event_cb(lv_obj_t * cont, lv_event_t e)
|
static void cont_event_cb(lv_event_t * e)
|
||||||
{
|
{
|
||||||
if(e == LV_EVENT_SCROLL_END) {
|
lv_event_code_t code = lv_event_get_code(e);
|
||||||
|
lv_obj_t * cont = lv_event_get_target(e);
|
||||||
|
|
||||||
|
if(code == LV_EVENT_SCROLL_END) {
|
||||||
lv_obj_t * tv = lv_obj_get_parent(cont);
|
lv_obj_t * tv = lv_obj_get_parent(cont);
|
||||||
|
|
||||||
lv_point_t p;
|
lv_point_t p;
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
**********************/
|
**********************/
|
||||||
static void lv_tileview_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj);
|
static void lv_tileview_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj);
|
||||||
static void lv_tileview_tile_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj);
|
static void lv_tileview_tile_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj);
|
||||||
static void tileview_event_cb(lv_obj_t * tv, lv_event_t e);
|
static void tileview_event_cb(lv_event_t * e);
|
||||||
|
|
||||||
/**********************
|
/**********************
|
||||||
* STATIC VARIABLES
|
* STATIC VARIABLES
|
||||||
@@ -127,9 +127,11 @@ static void lv_tileview_tile_constructor(const lv_obj_class_t * class_p, lv_obj_
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void tileview_event_cb(lv_obj_t * tv, lv_event_t e)
|
static void tileview_event_cb(lv_event_t * e)
|
||||||
{
|
{
|
||||||
if(e == LV_EVENT_SCROLL_END) {
|
lv_event_code_t code = lv_event_get_code(e);
|
||||||
|
lv_obj_t * tv = lv_event_get_target(e);
|
||||||
|
if(code == LV_EVENT_SCROLL_END) {
|
||||||
lv_coord_t w = lv_obj_get_width_fit(tv);
|
lv_coord_t w = lv_obj_get_width_fit(tv);
|
||||||
lv_coord_t h = lv_obj_get_height_fit(tv);
|
lv_coord_t h = lv_obj_get_height_fit(tv);
|
||||||
|
|
||||||
|
|||||||
@@ -421,7 +421,7 @@ LV_ATTRIBUTE_FAST_MEM void lv_memset(void * dst, uint8_t v, size_t len)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t v32 = v + (v << 8) + (v << 16) + (v << 24);
|
uint32_t v32 = (uint32_t)v + ((uint32_t)v << 8) + ((uint32_t)v << 16) + ((uint32_t)v << 24);
|
||||||
|
|
||||||
uint32_t * d32 = (uint32_t *)d8;
|
uint32_t * d32 = (uint32_t *)d8;
|
||||||
|
|
||||||
|
|||||||
@@ -31,8 +31,8 @@
|
|||||||
**********************/
|
**********************/
|
||||||
|
|
||||||
static void lv_arc_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj);
|
static void lv_arc_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj);
|
||||||
static void lv_arc_draw(lv_obj_t * obj);
|
static void lv_arc_draw(lv_event_t * e);
|
||||||
static void lv_arc_event(lv_obj_t * obj, lv_event_t e);
|
static void lv_arc_event(lv_event_t * e);
|
||||||
static void inv_arc_area(lv_obj_t * arc, uint16_t start_angle, uint16_t end_angle, lv_part_t part);
|
static void inv_arc_area(lv_obj_t * arc, uint16_t start_angle, uint16_t end_angle, lv_part_t part);
|
||||||
static void get_center(lv_obj_t * obj, lv_point_t * center, lv_coord_t * arc_r);
|
static void get_center(lv_obj_t * obj, lv_point_t * center, lv_coord_t * arc_r);
|
||||||
static void get_knob_area(lv_obj_t * arc, const lv_point_t * center, lv_coord_t r, lv_area_t * knob_area);
|
static void get_knob_area(lv_obj_t * arc, const lv_point_t * center, lv_coord_t r, lv_area_t * knob_area);
|
||||||
@@ -509,16 +509,18 @@ static void lv_arc_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj)
|
|||||||
LV_TRACE_OBJ_CREATE("finished");
|
LV_TRACE_OBJ_CREATE("finished");
|
||||||
}
|
}
|
||||||
|
|
||||||
static void lv_arc_event(lv_obj_t * obj, lv_event_t e)
|
static void lv_arc_event(lv_event_t * e)
|
||||||
{
|
{
|
||||||
lv_res_t res;
|
lv_res_t res;
|
||||||
|
|
||||||
/*Call the ancestor's event handler*/
|
/*Call the ancestor's event handler*/
|
||||||
res = lv_obj_event_base(MY_CLASS, obj, e);
|
res = lv_obj_event_base(MY_CLASS, e);
|
||||||
if(res != LV_RES_OK) return;
|
if(res != LV_RES_OK) return;
|
||||||
|
|
||||||
lv_arc_t * arc = (lv_arc_t *)obj;
|
lv_event_code_t code = lv_event_get_code(e);
|
||||||
if(e == LV_EVENT_PRESSING) {
|
lv_obj_t * obj = lv_event_get_target(e);
|
||||||
|
lv_arc_t * arc = (lv_arc_t *)e->target;
|
||||||
|
if(code == LV_EVENT_PRESSING) {
|
||||||
lv_indev_t * indev = lv_indev_get_act();
|
lv_indev_t * indev = lv_indev_get_act();
|
||||||
if(indev == NULL) return;
|
if(indev == NULL) return;
|
||||||
|
|
||||||
@@ -622,7 +624,7 @@ static void lv_arc_event(lv_obj_t * obj, lv_event_t e)
|
|||||||
arc->last_tick = lv_tick_get(); /*Cache timestamp for the next iteration*/
|
arc->last_tick = lv_tick_get(); /*Cache timestamp for the next iteration*/
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_RELEASED || e == LV_EVENT_PRESS_LOST) {
|
else if(code == LV_EVENT_RELEASED || code == LV_EVENT_PRESS_LOST) {
|
||||||
arc->dragging = false;
|
arc->dragging = false;
|
||||||
|
|
||||||
/*Leave edit mode if released. (No need to wait for LONG_PRESS)*/
|
/*Leave edit mode if released. (No need to wait for LONG_PRESS)*/
|
||||||
@@ -634,8 +636,8 @@ static void lv_arc_event(lv_obj_t * obj, lv_event_t e)
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_KEY) {
|
else if(code == LV_EVENT_KEY) {
|
||||||
char c = *((char *)lv_event_get_param());
|
char c = *((char *)lv_event_get_param(e));
|
||||||
|
|
||||||
int16_t old_value =arc->value;
|
int16_t old_value =arc->value;
|
||||||
if(c == LV_KEY_RIGHT || c == LV_KEY_UP) {
|
if(c == LV_KEY_RIGHT || c == LV_KEY_UP) {
|
||||||
@@ -650,7 +652,7 @@ static void lv_arc_event(lv_obj_t * obj, lv_event_t e)
|
|||||||
if(res != LV_RES_OK) return;
|
if(res != LV_RES_OK) return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_REFR_EXT_DRAW_SIZE) {
|
else if(code == LV_EVENT_REFR_EXT_DRAW_SIZE) {
|
||||||
lv_coord_t bg_left = lv_obj_get_style_pad_left(obj, LV_PART_MAIN);
|
lv_coord_t bg_left = lv_obj_get_style_pad_left(obj, LV_PART_MAIN);
|
||||||
lv_coord_t bg_right = lv_obj_get_style_pad_right(obj, LV_PART_MAIN);
|
lv_coord_t bg_right = lv_obj_get_style_pad_right(obj, LV_PART_MAIN);
|
||||||
lv_coord_t bg_top = lv_obj_get_style_pad_top(obj, LV_PART_MAIN);
|
lv_coord_t bg_top = lv_obj_get_style_pad_top(obj, LV_PART_MAIN);
|
||||||
@@ -663,18 +665,19 @@ static void lv_arc_event(lv_obj_t * obj, lv_event_t e)
|
|||||||
lv_coord_t knob_bottom = lv_obj_get_style_pad_bottom(obj, LV_PART_KNOB);
|
lv_coord_t knob_bottom = lv_obj_get_style_pad_bottom(obj, LV_PART_KNOB);
|
||||||
lv_coord_t knob_pad = LV_MAX4(knob_left, knob_right, knob_top, knob_bottom) + 2;
|
lv_coord_t knob_pad = LV_MAX4(knob_left, knob_right, knob_top, knob_bottom) + 2;
|
||||||
|
|
||||||
lv_coord_t * s = lv_event_get_param();
|
lv_coord_t * s = lv_event_get_param(e);
|
||||||
*s = LV_MAX(*s, knob_pad - bg_pad);
|
*s = LV_MAX(*s, knob_pad - bg_pad);
|
||||||
} else if(e == LV_EVENT_DRAW_MAIN) {
|
} else if(code == LV_EVENT_DRAW_MAIN) {
|
||||||
lv_arc_draw(obj);
|
lv_arc_draw(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void lv_arc_draw(lv_obj_t * obj)
|
static void lv_arc_draw(lv_event_t * e)
|
||||||
{
|
{
|
||||||
|
lv_obj_t * obj = lv_event_get_target(e);
|
||||||
lv_arc_t * arc = (lv_arc_t *)obj;
|
lv_arc_t * arc = (lv_arc_t *)obj;
|
||||||
|
|
||||||
const lv_area_t * clip_area = lv_event_get_param();
|
const lv_area_t * clip_area = lv_event_get_param(e);
|
||||||
|
|
||||||
lv_point_t center;
|
lv_point_t center;
|
||||||
lv_coord_t arc_r;
|
lv_coord_t arc_r;
|
||||||
|
|||||||
@@ -47,8 +47,8 @@
|
|||||||
**********************/
|
**********************/
|
||||||
static void lv_bar_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj);
|
static void lv_bar_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj);
|
||||||
static void lv_bar_destructor(const lv_obj_class_t * class_p, lv_obj_t * obj);
|
static void lv_bar_destructor(const lv_obj_class_t * class_p, lv_obj_t * obj);
|
||||||
static void lv_bar_event(lv_obj_t * bar, lv_event_t e);
|
static void lv_bar_event(lv_event_t * e);
|
||||||
static void draw_indic(lv_obj_t * bar);
|
static void draw_indic(lv_event_t * e);
|
||||||
static void lv_bar_set_value_with_anim(lv_obj_t * obj, int16_t new_value, int16_t * value_ptr,
|
static void lv_bar_set_value_with_anim(lv_obj_t * obj, int16_t new_value, int16_t * value_ptr,
|
||||||
lv_bar_anim_t * anim_info, lv_anim_enable_t en);
|
lv_bar_anim_t * anim_info, lv_anim_enable_t en);
|
||||||
static void lv_bar_init_anim(lv_obj_t * bar, lv_bar_anim_t * bar_anim);
|
static void lv_bar_init_anim(lv_obj_t * bar, lv_bar_anim_t * bar_anim);
|
||||||
@@ -231,11 +231,12 @@ static void lv_bar_destructor(const lv_obj_class_t * class_p, lv_obj_t * obj)
|
|||||||
lv_anim_del(&bar->start_value_anim, NULL);
|
lv_anim_del(&bar->start_value_anim, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void draw_indic(lv_obj_t * obj)
|
static void draw_indic(lv_event_t * e)
|
||||||
{
|
{
|
||||||
|
lv_obj_t * obj = lv_event_get_target(e);
|
||||||
lv_bar_t * bar = (lv_bar_t *)obj;
|
lv_bar_t * bar = (lv_bar_t *)obj;
|
||||||
|
|
||||||
const lv_area_t * clip_area = lv_event_get_param();
|
const lv_area_t * clip_area = lv_event_get_param(e);
|
||||||
|
|
||||||
lv_area_t bar_coords;
|
lv_area_t bar_coords;
|
||||||
lv_obj_get_coords(obj, &bar_coords);
|
lv_obj_get_coords(obj, &bar_coords);
|
||||||
@@ -465,21 +466,24 @@ static void draw_indic(lv_obj_t * obj)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static void lv_bar_event(lv_obj_t * obj, lv_event_t e)
|
static void lv_bar_event(lv_event_t * e)
|
||||||
{
|
{
|
||||||
LV_ASSERT_OBJ(obj, MY_CLASS);
|
LV_ASSERT_OBJ(obj, MY_CLASS);
|
||||||
lv_res_t res;
|
lv_res_t res;
|
||||||
|
|
||||||
/*Call the ancestor's event handler*/
|
/*Call the ancestor's event handler*/
|
||||||
res = lv_obj_event_base(MY_CLASS, obj, e);
|
res = lv_obj_event_base(MY_CLASS, e);
|
||||||
if(res != LV_RES_OK) return;
|
if(res != LV_RES_OK) return;
|
||||||
|
|
||||||
if(e == LV_EVENT_REFR_EXT_DRAW_SIZE) {
|
lv_event_code_t code = lv_event_get_code(e);
|
||||||
|
lv_obj_t * obj = lv_event_get_target(e);
|
||||||
|
|
||||||
|
if(code == LV_EVENT_REFR_EXT_DRAW_SIZE) {
|
||||||
lv_coord_t indic_size;
|
lv_coord_t indic_size;
|
||||||
indic_size = lv_obj_calculate_ext_draw_size(obj, LV_PART_INDICATOR);
|
indic_size = lv_obj_calculate_ext_draw_size(obj, LV_PART_INDICATOR);
|
||||||
|
|
||||||
/*Bg size is handled by lv_obj*/
|
/*Bg size is handled by lv_obj*/
|
||||||
lv_coord_t * s = lv_event_get_param();
|
lv_coord_t * s = lv_event_get_param(e);
|
||||||
*s = LV_MAX(*s, indic_size);
|
*s = LV_MAX(*s, indic_size);
|
||||||
|
|
||||||
/*Calculate the indicator area*/
|
/*Calculate the indicator area*/
|
||||||
@@ -492,11 +496,11 @@ static void lv_bar_event(lv_obj_t * obj, lv_event_t e)
|
|||||||
if(pad < 0) {
|
if(pad < 0) {
|
||||||
*s = LV_MAX(*s, -pad);
|
*s = LV_MAX(*s, -pad);
|
||||||
}
|
}
|
||||||
} else if(e == LV_EVENT_PRESSED || e == LV_EVENT_RELEASED) {
|
} else if(code == LV_EVENT_PRESSED || code == LV_EVENT_RELEASED) {
|
||||||
lv_bar_t * bar = (lv_bar_t *)obj;
|
lv_bar_t * bar = (lv_bar_t *)obj;
|
||||||
lv_obj_invalidate_area(obj, &bar->indic_area);
|
lv_obj_invalidate_area(obj, &bar->indic_area);
|
||||||
} else if(e == LV_EVENT_DRAW_MAIN) {
|
} else if(code == LV_EVENT_DRAW_MAIN) {
|
||||||
draw_indic(obj);
|
draw_indic(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -34,8 +34,8 @@
|
|||||||
**********************/
|
**********************/
|
||||||
static void lv_btnmatrix_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj);
|
static void lv_btnmatrix_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj);
|
||||||
static void lv_btnmatrix_destructor(const lv_obj_class_t * class_p, lv_obj_t * obj);
|
static void lv_btnmatrix_destructor(const lv_obj_class_t * class_p, lv_obj_t * obj);
|
||||||
static void lv_btnmatrix_event(lv_obj_t * obj, lv_event_t e);
|
static void lv_btnmatrix_event(lv_event_t * e);
|
||||||
static void draw_main(lv_obj_t * obj);
|
static void draw_main(lv_event_t * e);
|
||||||
|
|
||||||
static uint8_t get_button_width(lv_btnmatrix_ctrl_t ctrl_bits);
|
static uint8_t get_button_width(lv_btnmatrix_ctrl_t ctrl_bits);
|
||||||
static bool button_is_hidden(lv_btnmatrix_ctrl_t ctrl_bits);
|
static bool button_is_hidden(lv_btnmatrix_ctrl_t ctrl_bits);
|
||||||
@@ -386,25 +386,27 @@ static void lv_btnmatrix_destructor(const lv_obj_class_t * class_p, lv_obj_t * o
|
|||||||
LV_TRACE_OBJ_CREATE("finshed");
|
LV_TRACE_OBJ_CREATE("finshed");
|
||||||
}
|
}
|
||||||
|
|
||||||
static void lv_btnmatrix_event(lv_obj_t * obj, lv_event_t e)
|
static void lv_btnmatrix_event(lv_event_t * e)
|
||||||
{
|
{
|
||||||
lv_res_t res;
|
lv_res_t res;
|
||||||
|
|
||||||
/*Call the ancestor's event handler*/
|
/*Call the ancestor's event handler*/
|
||||||
res = lv_obj_event_base(MY_CLASS, obj, e);
|
res = lv_obj_event_base(MY_CLASS, e);
|
||||||
if(res != LV_RES_OK) return;
|
if(res != LV_RES_OK) return;
|
||||||
|
|
||||||
|
lv_event_code_t code = lv_event_get_code(e);
|
||||||
|
lv_obj_t * obj = lv_event_get_target(e);
|
||||||
lv_btnmatrix_t * btnm = (lv_btnmatrix_t *)obj;
|
lv_btnmatrix_t * btnm = (lv_btnmatrix_t *)obj;
|
||||||
lv_point_t p;
|
lv_point_t p;
|
||||||
|
|
||||||
if(e == LV_EVENT_STYLE_CHANGED) {
|
if(code == LV_EVENT_STYLE_CHANGED) {
|
||||||
lv_btnmatrix_set_map(obj, btnm->map_p);
|
lv_btnmatrix_set_map(obj, btnm->map_p);
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_SIZE_CHANGED) {
|
else if(code == LV_EVENT_SIZE_CHANGED) {
|
||||||
lv_btnmatrix_set_map(obj, btnm->map_p);
|
lv_btnmatrix_set_map(obj, btnm->map_p);
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_PRESSED) {
|
else if(code == LV_EVENT_PRESSED) {
|
||||||
void * param = lv_event_get_param();
|
void * param = lv_event_get_param(e);
|
||||||
invalidate_button_area(obj, btnm->btn_id_sel);
|
invalidate_button_area(obj, btnm->btn_id_sel);
|
||||||
|
|
||||||
lv_indev_type_t indev_type = lv_indev_get_type(lv_indev_get_act());
|
lv_indev_type_t indev_type = lv_indev_get_type(lv_indev_get_act());
|
||||||
@@ -433,8 +435,8 @@ static void lv_btnmatrix_event(lv_obj_t * obj, lv_event_t e)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_PRESSING) {
|
else if(code == LV_EVENT_PRESSING) {
|
||||||
void * param = lv_event_get_param();
|
void * param = lv_event_get_param(e);
|
||||||
uint16_t btn_pr = LV_BTNMATRIX_BTN_NONE;
|
uint16_t btn_pr = LV_BTNMATRIX_BTN_NONE;
|
||||||
/*Search the pressed area*/
|
/*Search the pressed area*/
|
||||||
lv_indev_t * indev = lv_indev_get_act();
|
lv_indev_t * indev = lv_indev_get_act();
|
||||||
@@ -465,7 +467,7 @@ static void lv_btnmatrix_event(lv_obj_t * obj, lv_event_t e)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_RELEASED) {
|
else if(code == LV_EVENT_RELEASED) {
|
||||||
if(btnm->btn_id_sel != LV_BTNMATRIX_BTN_NONE) {
|
if(btnm->btn_id_sel != LV_BTNMATRIX_BTN_NONE) {
|
||||||
/*Toggle the button if enabled*/
|
/*Toggle the button if enabled*/
|
||||||
if(button_is_tgl_enabled(btnm->ctrl_bits[btnm->btn_id_sel]) &&
|
if(button_is_tgl_enabled(btnm->ctrl_bits[btnm->btn_id_sel]) &&
|
||||||
@@ -497,7 +499,7 @@ static void lv_btnmatrix_event(lv_obj_t * obj, lv_event_t e)
|
|||||||
btnm->btn_id_sel = LV_BTNMATRIX_BTN_NONE;
|
btnm->btn_id_sel = LV_BTNMATRIX_BTN_NONE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_LONG_PRESSED_REPEAT) {
|
else if(code == LV_EVENT_LONG_PRESSED_REPEAT) {
|
||||||
if(btnm->btn_id_sel != LV_BTNMATRIX_BTN_NONE) {
|
if(btnm->btn_id_sel != LV_BTNMATRIX_BTN_NONE) {
|
||||||
if(button_is_repeat_disabled(btnm->ctrl_bits[btnm->btn_id_sel]) == false &&
|
if(button_is_repeat_disabled(btnm->ctrl_bits[btnm->btn_id_sel]) == false &&
|
||||||
button_is_inactive(btnm->ctrl_bits[btnm->btn_id_sel]) == false &&
|
button_is_inactive(btnm->ctrl_bits[btnm->btn_id_sel]) == false &&
|
||||||
@@ -508,11 +510,11 @@ static void lv_btnmatrix_event(lv_obj_t * obj, lv_event_t e)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_PRESS_LOST) {
|
else if(code == LV_EVENT_PRESS_LOST) {
|
||||||
invalidate_button_area(obj, btnm->btn_id_sel);
|
invalidate_button_area(obj, btnm->btn_id_sel);
|
||||||
btnm->btn_id_sel = LV_BTNMATRIX_BTN_NONE;
|
btnm->btn_id_sel = LV_BTNMATRIX_BTN_NONE;
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_FOCUSED) {
|
else if(code == LV_EVENT_FOCUSED) {
|
||||||
lv_indev_t * indev = lv_indev_get_act();
|
lv_indev_t * indev = lv_indev_get_act();
|
||||||
lv_indev_type_t indev_type = lv_indev_get_type(indev);
|
lv_indev_type_t indev_type = lv_indev_get_type(indev);
|
||||||
|
|
||||||
@@ -541,15 +543,15 @@ static void lv_btnmatrix_event(lv_obj_t * obj, lv_event_t e)
|
|||||||
btnm->btn_id_sel = b;
|
btnm->btn_id_sel = b;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_DEFOCUSED || e == LV_EVENT_LEAVE) {
|
else if(code == LV_EVENT_DEFOCUSED || code == LV_EVENT_LEAVE) {
|
||||||
if(btnm->btn_id_sel != LV_BTNMATRIX_BTN_NONE) invalidate_button_area(obj, btnm->btn_id_sel);
|
if(btnm->btn_id_sel != LV_BTNMATRIX_BTN_NONE) invalidate_button_area(obj, btnm->btn_id_sel);
|
||||||
btnm->btn_id_sel = LV_BTNMATRIX_BTN_NONE;
|
btnm->btn_id_sel = LV_BTNMATRIX_BTN_NONE;
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_KEY) {
|
else if(code == LV_EVENT_KEY) {
|
||||||
|
|
||||||
invalidate_button_area(obj, btnm->btn_id_sel);
|
invalidate_button_area(obj, btnm->btn_id_sel);
|
||||||
|
|
||||||
char c = *((char *)lv_event_get_param());
|
char c = *((char *)lv_event_get_param(e));
|
||||||
if(c == LV_KEY_RIGHT) {
|
if(c == LV_KEY_RIGHT) {
|
||||||
if(btnm->btn_id_sel == LV_BTNMATRIX_BTN_NONE) btnm->btn_id_sel = 0;
|
if(btnm->btn_id_sel == LV_BTNMATRIX_BTN_NONE) btnm->btn_id_sel = 0;
|
||||||
else btnm->btn_id_sel++;
|
else btnm->btn_id_sel++;
|
||||||
@@ -626,18 +628,19 @@ static void lv_btnmatrix_event(lv_obj_t * obj, lv_event_t e)
|
|||||||
}
|
}
|
||||||
|
|
||||||
invalidate_button_area(obj, btnm->btn_id_sel);
|
invalidate_button_area(obj, btnm->btn_id_sel);
|
||||||
} else if(e == LV_EVENT_DRAW_MAIN) {
|
} else if(code == LV_EVENT_DRAW_MAIN) {
|
||||||
draw_main(obj);
|
draw_main(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void draw_main(lv_obj_t * obj)
|
static void draw_main(lv_event_t * e)
|
||||||
{
|
{
|
||||||
|
lv_obj_t * obj = lv_event_get_target(e);
|
||||||
lv_btnmatrix_t * btnm = (lv_btnmatrix_t *)obj;
|
lv_btnmatrix_t * btnm = (lv_btnmatrix_t *)obj;
|
||||||
if(btnm->btn_cnt == 0) return;
|
if(btnm->btn_cnt == 0) return;
|
||||||
|
|
||||||
const lv_area_t * clip_area = lv_event_get_param();
|
const lv_area_t * clip_area = lv_event_get_param(e);
|
||||||
obj->skip_trans = 1;
|
obj->skip_trans = 1;
|
||||||
|
|
||||||
lv_area_t area_obj;
|
lv_area_t area_obj;
|
||||||
|
|||||||
@@ -38,7 +38,7 @@
|
|||||||
**********************/
|
**********************/
|
||||||
static void lv_chart_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj);
|
static void lv_chart_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj);
|
||||||
static void lv_chart_destructor(const lv_obj_class_t * class_p, lv_obj_t * obj);
|
static void lv_chart_destructor(const lv_obj_class_t * class_p, lv_obj_t * obj);
|
||||||
static void lv_chart_event(lv_obj_t * obj, lv_event_t e);
|
static void lv_chart_event(lv_event_t * e);
|
||||||
|
|
||||||
static void draw_div_lines(lv_obj_t * obj , const lv_area_t * mask);
|
static void draw_div_lines(lv_obj_t * obj , const lv_area_t * mask);
|
||||||
static void draw_series_line(lv_obj_t * obj, const lv_area_t * clip_area);
|
static void draw_series_line(lv_obj_t * obj, const lv_area_t * clip_area);
|
||||||
@@ -611,16 +611,19 @@ static void lv_chart_destructor(const lv_obj_class_t * class_p, lv_obj_t * obj)
|
|||||||
LV_TRACE_OBJ_CREATE("finished");
|
LV_TRACE_OBJ_CREATE("finished");
|
||||||
}
|
}
|
||||||
|
|
||||||
static void lv_chart_event(lv_obj_t * obj, lv_event_t e)
|
static void lv_chart_event(lv_event_t * e)
|
||||||
{
|
{
|
||||||
/*Call the ancestor's event handler*/
|
/*Call the ancestor's event handler*/
|
||||||
lv_res_t res;
|
lv_res_t res;
|
||||||
|
|
||||||
res = lv_obj_event_base(MY_CLASS, obj, e);
|
res = lv_obj_event_base(MY_CLASS, e);
|
||||||
if(res != LV_RES_OK) return;
|
if(res != LV_RES_OK) return;
|
||||||
|
|
||||||
|
lv_event_code_t code = lv_event_get_code(e);
|
||||||
|
lv_obj_t * obj = lv_event_get_target(e);
|
||||||
|
|
||||||
lv_chart_t * chart = (lv_chart_t *)obj;
|
lv_chart_t * chart = (lv_chart_t *)obj;
|
||||||
if(e == LV_EVENT_PRESSED) {
|
if(code == LV_EVENT_PRESSED) {
|
||||||
lv_indev_t * indev = lv_indev_get_act();
|
lv_indev_t * indev = lv_indev_get_act();
|
||||||
lv_point_t p;
|
lv_point_t p;
|
||||||
lv_indev_get_point(indev, &p);
|
lv_indev_get_point(indev, &p);
|
||||||
@@ -633,19 +636,19 @@ static void lv_chart_event(lv_obj_t * obj, lv_event_t e)
|
|||||||
chart->pressed_point_id = id;
|
chart->pressed_point_id = id;
|
||||||
lv_event_send(obj, LV_EVENT_VALUE_CHANGED, NULL);
|
lv_event_send(obj, LV_EVENT_VALUE_CHANGED, NULL);
|
||||||
}
|
}
|
||||||
} else if(e == LV_EVENT_RELEASED) {
|
} else if(code == LV_EVENT_RELEASED) {
|
||||||
invalidate_point(obj, chart->pressed_point_id);
|
invalidate_point(obj, chart->pressed_point_id);
|
||||||
chart->pressed_point_id = LV_CHART_POINT_NONE;
|
chart->pressed_point_id = LV_CHART_POINT_NONE;
|
||||||
} else if(e == LV_EVENT_REFR_EXT_DRAW_SIZE) {
|
} else if(code == LV_EVENT_REFR_EXT_DRAW_SIZE) {
|
||||||
lv_coord_t * s = lv_event_get_param();
|
lv_coord_t * s = lv_event_get_param(e);
|
||||||
*s = LV_MAX4(*s, chart->tick[LV_CHART_AXIS_X].draw_size,
|
*s = LV_MAX4(*s, chart->tick[LV_CHART_AXIS_X].draw_size,
|
||||||
chart->tick[LV_CHART_AXIS_PRIMARY_Y].draw_size, chart->tick[LV_CHART_AXIS_SECONDARY_Y].draw_size);
|
chart->tick[LV_CHART_AXIS_PRIMARY_Y].draw_size, chart->tick[LV_CHART_AXIS_SECONDARY_Y].draw_size);
|
||||||
} else if(e == LV_EVENT_GET_SELF_SIZE) {
|
} else if(code == LV_EVENT_GET_SELF_SIZE) {
|
||||||
lv_point_t * p = lv_event_get_param();
|
lv_point_t * p = lv_event_get_param(e);
|
||||||
p->x = (lv_obj_get_width_fit(obj) * chart->zoom_x) >> 8;
|
p->x = (lv_obj_get_width_fit(obj) * chart->zoom_x) >> 8;
|
||||||
p->y = (lv_obj_get_height_fit(obj) * chart->zoom_y) >> 8;
|
p->y = (lv_obj_get_height_fit(obj) * chart->zoom_y) >> 8;
|
||||||
} else if(e == LV_EVENT_DRAW_MAIN) {
|
} else if(code == LV_EVENT_DRAW_MAIN) {
|
||||||
const lv_area_t * clip_area = lv_event_get_param();
|
const lv_area_t * clip_area = lv_event_get_param(e);
|
||||||
draw_div_lines(obj, clip_area);
|
draw_div_lines(obj, clip_area);
|
||||||
draw_axes(obj, clip_area);
|
draw_axes(obj, clip_area);
|
||||||
|
|
||||||
|
|||||||
@@ -28,8 +28,8 @@
|
|||||||
**********************/
|
**********************/
|
||||||
static void lv_checkbox_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj);
|
static void lv_checkbox_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj);
|
||||||
static void lv_checkbox_destructor(const lv_obj_class_t * class_p, lv_obj_t * obj);
|
static void lv_checkbox_destructor(const lv_obj_class_t * class_p, lv_obj_t * obj);
|
||||||
static void lv_checkbox_event(lv_obj_t * obj, lv_event_t e);
|
static void lv_checkbox_event(lv_event_t * e);
|
||||||
static void lv_checkbox_draw(lv_obj_t * obj);
|
static void lv_checkbox_draw(lv_event_t * e);
|
||||||
|
|
||||||
/**********************
|
/**********************
|
||||||
* STATIC VARIABLES
|
* STATIC VARIABLES
|
||||||
@@ -140,18 +140,21 @@ static void lv_checkbox_destructor(const lv_obj_class_t * class_p, lv_obj_t * ob
|
|||||||
LV_TRACE_OBJ_CREATE("finished");
|
LV_TRACE_OBJ_CREATE("finished");
|
||||||
}
|
}
|
||||||
|
|
||||||
static void lv_checkbox_event(lv_obj_t * obj, lv_event_t e)
|
static void lv_checkbox_event(lv_event_t * e)
|
||||||
{
|
{
|
||||||
lv_res_t res;
|
lv_res_t res;
|
||||||
/*Call the ancestor's event handler*/
|
/*Call the ancestor's event handler*/
|
||||||
res = lv_obj_event_base(MY_CLASS, obj, e);
|
res = lv_obj_event_base(MY_CLASS, e);
|
||||||
if(res != LV_RES_OK) return;
|
if(res != LV_RES_OK) return;
|
||||||
|
|
||||||
if (e == LV_EVENT_PRESSED || e == LV_EVENT_RELEASED) {
|
lv_event_code_t code = lv_event_get_code(e);
|
||||||
|
lv_obj_t * obj = lv_event_get_target(e);
|
||||||
|
|
||||||
|
if (code == LV_EVENT_PRESSED || code == LV_EVENT_RELEASED) {
|
||||||
lv_obj_invalidate(obj);
|
lv_obj_invalidate(obj);
|
||||||
}
|
}
|
||||||
else if (e == LV_EVENT_GET_SELF_SIZE) {
|
else if (code == LV_EVENT_GET_SELF_SIZE) {
|
||||||
lv_point_t * p = lv_event_get_param();
|
lv_point_t * p = lv_event_get_param(e);
|
||||||
lv_checkbox_t * cb = (lv_checkbox_t *)obj;
|
lv_checkbox_t * cb = (lv_checkbox_t *)obj;
|
||||||
|
|
||||||
const lv_font_t * font = lv_obj_get_style_text_font(obj, LV_PART_MAIN);
|
const lv_font_t * font = lv_obj_get_style_text_font(obj, LV_PART_MAIN);
|
||||||
@@ -175,27 +178,28 @@ static void lv_checkbox_event(lv_obj_t * obj, lv_event_t e)
|
|||||||
p->x = marker_size.x + txt_size.x + bg_colp;
|
p->x = marker_size.x + txt_size.x + bg_colp;
|
||||||
p->y = LV_MAX(marker_size.y, txt_size.y);
|
p->y = LV_MAX(marker_size.y, txt_size.y);
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_REFR_EXT_DRAW_SIZE) {
|
else if(code == LV_EVENT_REFR_EXT_DRAW_SIZE) {
|
||||||
lv_coord_t *s = lv_event_get_param();;
|
lv_coord_t *s = lv_event_get_param(e);;
|
||||||
lv_coord_t m = lv_obj_calculate_ext_draw_size(obj, LV_PART_INDICATOR);
|
lv_coord_t m = lv_obj_calculate_ext_draw_size(obj, LV_PART_INDICATOR);
|
||||||
*s = LV_MAX(*s, m);
|
*s = LV_MAX(*s, m);
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_RELEASED) {
|
else if(code == LV_EVENT_RELEASED) {
|
||||||
uint32_t v = lv_obj_get_state(obj) & LV_STATE_CHECKED ? 1 : 0;
|
uint32_t v = lv_obj_get_state(obj) & LV_STATE_CHECKED ? 1 : 0;
|
||||||
res = lv_event_send(obj, LV_EVENT_VALUE_CHANGED, &v);
|
res = lv_event_send(obj, LV_EVENT_VALUE_CHANGED, &v);
|
||||||
if(res != LV_RES_OK) return;
|
if(res != LV_RES_OK) return;
|
||||||
|
|
||||||
lv_obj_invalidate(obj);
|
lv_obj_invalidate(obj);
|
||||||
} else if(e == LV_EVENT_DRAW_MAIN) {
|
} else if(code == LV_EVENT_DRAW_MAIN) {
|
||||||
lv_checkbox_draw(obj);
|
lv_checkbox_draw(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void lv_checkbox_draw(lv_obj_t * obj)
|
static void lv_checkbox_draw(lv_event_t * e)
|
||||||
{
|
{
|
||||||
|
lv_obj_t * obj = lv_event_get_target(e);
|
||||||
lv_checkbox_t * cb = (lv_checkbox_t *)obj;
|
lv_checkbox_t * cb = (lv_checkbox_t *)obj;
|
||||||
|
|
||||||
const lv_area_t * clip_area = lv_event_get_param();
|
const lv_area_t * clip_area = lv_event_get_param(e);
|
||||||
const lv_font_t * font = lv_obj_get_style_text_font(obj, LV_PART_MAIN);
|
const lv_font_t * font = lv_obj_get_style_text_font(obj, LV_PART_MAIN);
|
||||||
lv_coord_t font_h = lv_font_get_line_height(font);
|
lv_coord_t font_h = lv_font_get_line_height(font);
|
||||||
|
|
||||||
|
|||||||
@@ -39,13 +39,13 @@
|
|||||||
static lv_obj_t * lv_dropdown_list_create(lv_obj_t * parent);
|
static lv_obj_t * lv_dropdown_list_create(lv_obj_t * parent);
|
||||||
static void lv_dropdown_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj);
|
static void lv_dropdown_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj);
|
||||||
static void lv_dropdown_destructor(const lv_obj_class_t * class_p, lv_obj_t * obj);
|
static void lv_dropdown_destructor(const lv_obj_class_t * class_p, lv_obj_t * obj);
|
||||||
static void lv_dropdown_event(lv_obj_t * obj, lv_event_t e);
|
static void lv_dropdown_event(lv_event_t * e);
|
||||||
static void draw_main(lv_obj_t * obj);
|
static void draw_main(lv_event_t * e);
|
||||||
|
|
||||||
static void lv_dropdownlist_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj);
|
static void lv_dropdownlist_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj);
|
||||||
static void lv_dropdownlist_destructor(const lv_obj_class_t * class_p, lv_obj_t * list_obj);
|
static void lv_dropdownlist_destructor(const lv_obj_class_t * class_p, lv_obj_t * list_obj);
|
||||||
static void lv_dropdown_list_event(lv_obj_t * list, lv_event_t e);
|
static void lv_dropdown_list_event(lv_event_t * e);
|
||||||
static void draw_list(lv_obj_t * obj);
|
static void draw_list(lv_event_t * e);
|
||||||
|
|
||||||
static void draw_box(lv_obj_t * dropdown_obj, const lv_area_t * clip_area, uint16_t id, lv_state_t state);
|
static void draw_box(lv_obj_t * dropdown_obj, const lv_area_t * clip_area, uint16_t id, lv_state_t state);
|
||||||
static void draw_box_label(lv_obj_t * dropdown_obj, const lv_area_t * clip_area, uint16_t id, lv_state_t state);
|
static void draw_box_label(lv_obj_t * dropdown_obj, const lv_area_t * clip_area, uint16_t id, lv_state_t state);
|
||||||
@@ -601,17 +601,19 @@ static void lv_dropdownlist_destructor(const lv_obj_class_t * class_p, lv_obj_t
|
|||||||
dropdown->list = NULL;
|
dropdown->list = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void lv_dropdown_event(lv_obj_t * obj, lv_event_t e)
|
static void lv_dropdown_event(lv_event_t * e)
|
||||||
{
|
{
|
||||||
lv_res_t res;
|
lv_res_t res;
|
||||||
|
|
||||||
/*Call the ancestor's event handler*/
|
/*Call the ancestor's event handler*/
|
||||||
res = lv_obj_event_base(MY_CLASS, obj, e);
|
res = lv_obj_event_base(MY_CLASS, e);
|
||||||
if(res != LV_RES_OK) return;
|
if(res != LV_RES_OK) return;
|
||||||
|
|
||||||
|
lv_event_code_t code = lv_event_get_code(e);
|
||||||
|
lv_obj_t * obj = lv_event_get_target(e);
|
||||||
lv_dropdown_t * dropdown = (lv_dropdown_t *)obj;
|
lv_dropdown_t * dropdown = (lv_dropdown_t *)obj;
|
||||||
|
|
||||||
if(e == LV_EVENT_FOCUSED) {
|
if(code == LV_EVENT_FOCUSED) {
|
||||||
lv_group_t * g = lv_obj_get_group(obj);
|
lv_group_t * g = lv_obj_get_group(obj);
|
||||||
bool editing = lv_group_get_editing(g);
|
bool editing = lv_group_get_editing(g);
|
||||||
lv_indev_type_t indev_type = lv_indev_get_type(lv_indev_get_act());
|
lv_indev_type_t indev_type = lv_indev_get_type(lv_indev_get_act());
|
||||||
@@ -625,10 +627,10 @@ static void lv_dropdown_event(lv_obj_t * obj, lv_event_t e)
|
|||||||
lv_dropdown_close(obj);
|
lv_dropdown_close(obj);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_DEFOCUSED || e == LV_EVENT_LEAVE) {
|
else if(code == LV_EVENT_DEFOCUSED || code == LV_EVENT_LEAVE) {
|
||||||
lv_dropdown_close(obj);
|
lv_dropdown_close(obj);
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_RELEASED) {
|
else if(code == LV_EVENT_RELEASED) {
|
||||||
lv_indev_t * indev = lv_indev_get_act();
|
lv_indev_t * indev = lv_indev_get_act();
|
||||||
if(lv_indev_get_scroll_obj(indev) == NULL) {
|
if(lv_indev_get_scroll_obj(indev) == NULL) {
|
||||||
if(dropdown->list) {
|
if(dropdown->list) {
|
||||||
@@ -654,16 +656,16 @@ static void lv_dropdown_event(lv_obj_t * obj, lv_event_t e)
|
|||||||
lv_obj_invalidate(obj);
|
lv_obj_invalidate(obj);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_SIZE_CHANGED) {
|
else if(code == LV_EVENT_SIZE_CHANGED) {
|
||||||
if(dropdown->list) lv_dropdown_close(obj);
|
if(dropdown->list) lv_dropdown_close(obj);
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_GET_SELF_SIZE) {
|
else if(code == LV_EVENT_GET_SELF_SIZE) {
|
||||||
lv_point_t * p = lv_event_get_param();
|
lv_point_t * p = lv_event_get_param(e);
|
||||||
const lv_font_t * font = lv_obj_get_style_text_font(obj, LV_PART_MAIN);
|
const lv_font_t * font = lv_obj_get_style_text_font(obj, LV_PART_MAIN);
|
||||||
p->y = lv_font_get_line_height(font);
|
p->y = lv_font_get_line_height(font);
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_KEY) {
|
else if(code == LV_EVENT_KEY) {
|
||||||
char c = *((char *)lv_event_get_param());
|
char c = *((char *)lv_event_get_param(e));
|
||||||
if(c == LV_KEY_RIGHT || c == LV_KEY_DOWN) {
|
if(c == LV_KEY_RIGHT || c == LV_KEY_DOWN) {
|
||||||
if(dropdown->list == NULL) {
|
if(dropdown->list == NULL) {
|
||||||
lv_dropdown_open(obj);
|
lv_dropdown_open(obj);
|
||||||
@@ -688,44 +690,47 @@ static void lv_dropdown_event(lv_obj_t * obj, lv_event_t e)
|
|||||||
lv_dropdown_close(obj);
|
lv_dropdown_close(obj);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_DRAW_MAIN) {
|
else if(code == LV_EVENT_DRAW_MAIN) {
|
||||||
draw_main(obj);
|
draw_main(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void lv_dropdown_list_event(lv_obj_t * list, lv_event_t e)
|
static void lv_dropdown_list_event(lv_event_t * e)
|
||||||
{
|
{
|
||||||
lv_res_t res;
|
lv_res_t res;
|
||||||
|
|
||||||
/*Call the ancestor's event handler*/
|
/*Call the ancestor's event handler*/
|
||||||
res = lv_obj_event_base(MY_CLASS_LIST, list, e);
|
res = lv_obj_event_base(MY_CLASS_LIST, e);
|
||||||
if(res != LV_RES_OK) return;
|
if(res != LV_RES_OK) return;
|
||||||
|
|
||||||
|
lv_event_code_t code = lv_event_get_code(e);
|
||||||
|
lv_obj_t * list = lv_event_get_target(e);
|
||||||
lv_obj_t * dropdown_obj = ((lv_dropdown_list_t *)list)->dropdown;
|
lv_obj_t * dropdown_obj = ((lv_dropdown_list_t *)list)->dropdown;
|
||||||
lv_dropdown_t * dropdown = (lv_dropdown_t *)dropdown_obj;
|
lv_dropdown_t * dropdown = (lv_dropdown_t *)dropdown_obj;
|
||||||
|
|
||||||
if(e == LV_EVENT_RELEASED) {
|
if(code == LV_EVENT_RELEASED) {
|
||||||
if(lv_indev_get_scroll_obj(lv_indev_get_act()) == NULL) {
|
if(lv_indev_get_scroll_obj(lv_indev_get_act()) == NULL) {
|
||||||
list_release_handler(list);
|
list_release_handler(list);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_PRESSED) {
|
else if(code == LV_EVENT_PRESSED) {
|
||||||
page_press_handler(list);
|
page_press_handler(list);
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_SCROLL_BEGIN) {
|
else if(code == LV_EVENT_SCROLL_BEGIN) {
|
||||||
dropdown->pr_opt_id = LV_DROPDOWN_PR_NONE;
|
dropdown->pr_opt_id = LV_DROPDOWN_PR_NONE;
|
||||||
lv_obj_invalidate(list);
|
lv_obj_invalidate(list);
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_DRAW_POST) {
|
else if(code == LV_EVENT_DRAW_POST) {
|
||||||
draw_list(list);
|
draw_list(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void draw_main(lv_obj_t * obj)
|
static void draw_main(lv_event_t * e)
|
||||||
{
|
{
|
||||||
|
lv_obj_t * obj = lv_event_get_target(e);
|
||||||
lv_dropdown_t * dropdown = (lv_dropdown_t *)obj;
|
lv_dropdown_t * dropdown = (lv_dropdown_t *)obj;
|
||||||
const lv_area_t * clip_area = lv_event_get_param();
|
const lv_area_t * clip_area = lv_event_get_param(e);
|
||||||
|
|
||||||
lv_coord_t left = lv_obj_get_style_pad_left(obj, LV_PART_MAIN);
|
lv_coord_t left = lv_obj_get_style_pad_left(obj, LV_PART_MAIN);
|
||||||
lv_coord_t right = lv_obj_get_style_pad_right(obj, LV_PART_MAIN);
|
lv_coord_t right = lv_obj_get_style_pad_right(obj, LV_PART_MAIN);
|
||||||
@@ -823,12 +828,13 @@ static void draw_main(lv_obj_t * obj)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void draw_list(lv_obj_t * list_obj)
|
static void draw_list(lv_event_t * e)
|
||||||
{
|
{
|
||||||
|
lv_obj_t * list_obj = lv_event_get_target(e);
|
||||||
lv_dropdown_list_t * list = (lv_dropdown_list_t *)list_obj;
|
lv_dropdown_list_t * list = (lv_dropdown_list_t *)list_obj;
|
||||||
lv_obj_t * dropdown_obj = list->dropdown;
|
lv_obj_t * dropdown_obj = list->dropdown;
|
||||||
lv_dropdown_t * dropdown = (lv_dropdown_t *)dropdown_obj;
|
lv_dropdown_t * dropdown = (lv_dropdown_t *)dropdown_obj;
|
||||||
const lv_area_t * clip_area = lv_event_get_param();
|
const lv_area_t * clip_area = lv_event_get_param(e);
|
||||||
|
|
||||||
/*Draw the box labels if the list is not being deleted*/
|
/*Draw the box labels if the list is not being deleted*/
|
||||||
if(dropdown->list) {
|
if(dropdown->list) {
|
||||||
|
|||||||
@@ -30,8 +30,8 @@
|
|||||||
**********************/
|
**********************/
|
||||||
static void lv_img_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj);
|
static void lv_img_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj);
|
||||||
static void lv_img_destructor(const lv_obj_class_t * class_p, lv_obj_t * obj);
|
static void lv_img_destructor(const lv_obj_class_t * class_p, lv_obj_t * obj);
|
||||||
static void lv_img_event(lv_obj_t * obj, lv_event_t e);
|
static void lv_img_event(lv_event_t * e);
|
||||||
static void draw_img(lv_obj_t * obj, lv_event_t e);
|
static void draw_img(lv_event_t * e);
|
||||||
|
|
||||||
/**********************
|
/**********************
|
||||||
* STATIC VARIABLES
|
* STATIC VARIABLES
|
||||||
@@ -397,26 +397,29 @@ static void lv_img_destructor(const lv_obj_class_t * class_p, lv_obj_t * obj)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void lv_img_event(lv_obj_t * obj, lv_event_t e)
|
static void lv_img_event(lv_event_t * e)
|
||||||
{
|
{
|
||||||
|
lv_event_code_t code = lv_event_get_code(e);
|
||||||
|
|
||||||
/*Ancestor events will be called during drawing*/
|
/*Ancestor events will be called during drawing*/
|
||||||
if(e != LV_EVENT_DRAW_MAIN && e != LV_EVENT_DRAW_POST) {
|
if(code != LV_EVENT_DRAW_MAIN && code != LV_EVENT_DRAW_POST) {
|
||||||
/*Call the ancestor's event handler*/
|
/*Call the ancestor's event handler*/
|
||||||
lv_res_t res = lv_obj_event_base(MY_CLASS, obj, e);
|
lv_res_t res = lv_obj_event_base(MY_CLASS, e);
|
||||||
if(res != LV_RES_OK) return;
|
if(res != LV_RES_OK) return;
|
||||||
}
|
}
|
||||||
|
|
||||||
lv_img_t * img = (lv_img_t *)obj;
|
lv_obj_t * obj = lv_event_get_target(e);
|
||||||
|
lv_img_t * img = (lv_img_t *)obj;
|
||||||
|
|
||||||
if(e == LV_EVENT_STYLE_CHANGED) {
|
if(code == LV_EVENT_STYLE_CHANGED) {
|
||||||
/*Refresh the file name to refresh the symbol text size*/
|
/*Refresh the file name to refresh the symbol text size*/
|
||||||
if(img->src_type == LV_IMG_SRC_SYMBOL) {
|
if(img->src_type == LV_IMG_SRC_SYMBOL) {
|
||||||
lv_img_set_src(obj, img->src);
|
lv_img_set_src(obj, img->src);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_REFR_EXT_DRAW_SIZE) {
|
else if(code == LV_EVENT_REFR_EXT_DRAW_SIZE) {
|
||||||
|
|
||||||
lv_coord_t * s = lv_event_get_param();
|
lv_coord_t * s = lv_event_get_param(e);
|
||||||
lv_coord_t transf_zoom = lv_obj_get_style_transform_zoom(obj, LV_PART_MAIN);
|
lv_coord_t transf_zoom = lv_obj_get_style_transform_zoom(obj, LV_PART_MAIN);
|
||||||
transf_zoom = (transf_zoom * img->zoom) >> 8;
|
transf_zoom = (transf_zoom * img->zoom) >> 8;
|
||||||
|
|
||||||
@@ -436,8 +439,8 @@ static void lv_img_event(lv_obj_t * obj, lv_event_t e)
|
|||||||
*s = LV_MAX(*s, pad_ori + a.y2 - h);
|
*s = LV_MAX(*s, pad_ori + a.y2 - h);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_HIT_TEST) {
|
else if(code == LV_EVENT_HIT_TEST) {
|
||||||
lv_hit_test_info_t * info = lv_event_get_param();
|
lv_hit_test_info_t * info = lv_event_get_param(e);
|
||||||
lv_coord_t zoom = lv_obj_get_style_transform_zoom(obj, LV_PART_MAIN);
|
lv_coord_t zoom = lv_obj_get_style_transform_zoom(obj, LV_PART_MAIN);
|
||||||
zoom = (zoom * img->zoom) >> 8;
|
zoom = (zoom * img->zoom) >> 8;
|
||||||
|
|
||||||
@@ -447,7 +450,7 @@ static void lv_img_event(lv_obj_t * obj, lv_event_t e)
|
|||||||
/*If the object is exactly image sized (not cropped, not mosaic) and transformed
|
/*If the object is exactly image sized (not cropped, not mosaic) and transformed
|
||||||
*perform hit test on it's transformed area*/
|
*perform hit test on it's transformed area*/
|
||||||
if(img->w == lv_obj_get_width(obj) && img->h == lv_obj_get_height(obj) &&
|
if(img->w == lv_obj_get_width(obj) && img->h == lv_obj_get_height(obj) &&
|
||||||
(zoom != LV_IMG_ZOOM_NONE || angle != 0 || img->pivot.x != img->w / 2 || img->pivot.y != img->h / 2)) {
|
(zoom != LV_IMG_ZOOM_NONE || angle != 0 || img->pivot.x != img->w / 2 || img->pivot.y != img->h / 2)) {
|
||||||
|
|
||||||
lv_coord_t w = lv_obj_get_width(obj);
|
lv_coord_t w = lv_obj_get_width(obj);
|
||||||
lv_coord_t h = lv_obj_get_height(obj);
|
lv_coord_t h = lv_obj_get_height(obj);
|
||||||
@@ -466,21 +469,23 @@ static void lv_img_event(lv_obj_t * obj, lv_event_t e)
|
|||||||
info->result = _lv_area_is_point_on(&a, info->point, 0);
|
info->result = _lv_area_is_point_on(&a, info->point, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_GET_SELF_SIZE) {
|
else if(code == LV_EVENT_GET_SELF_SIZE) {
|
||||||
lv_point_t * p = lv_event_get_param();;
|
lv_point_t * p = lv_event_get_param(e);;
|
||||||
p->x = img->w;
|
p->x = img->w;
|
||||||
p->y = img->h;
|
p->y = img->h;
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_DRAW_MAIN || e == LV_EVENT_DRAW_POST || e == LV_EVENT_COVER_CHECK) {
|
else if(code == LV_EVENT_DRAW_MAIN || code == LV_EVENT_DRAW_POST || code == LV_EVENT_COVER_CHECK) {
|
||||||
draw_img(obj, e);
|
draw_img(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void draw_img(lv_obj_t * obj, lv_event_t e)
|
static void draw_img(lv_event_t * e)
|
||||||
{
|
{
|
||||||
|
lv_event_code_t code = lv_event_get_code(e);
|
||||||
|
lv_obj_t * obj = lv_event_get_target(e);
|
||||||
lv_img_t * img = (lv_img_t *)obj;
|
lv_img_t * img = (lv_img_t *)obj;
|
||||||
if(e == LV_EVENT_COVER_CHECK) {
|
if(code == LV_EVENT_COVER_CHECK) {
|
||||||
lv_cover_check_info_t * info = lv_event_get_param();
|
lv_cover_check_info_t * info = lv_event_get_param(e);
|
||||||
if(info->res == LV_DRAW_RES_MASKED) return;
|
if(info->res == LV_DRAW_RES_MASKED) return;
|
||||||
if(img->src_type == LV_IMG_SRC_UNKNOWN || img->src_type == LV_IMG_SRC_SYMBOL) {
|
if(img->src_type == LV_IMG_SRC_UNKNOWN || img->src_type == LV_IMG_SRC_SYMBOL) {
|
||||||
info->res = LV_DRAW_RES_NOT_COVER;
|
info->res = LV_DRAW_RES_NOT_COVER;
|
||||||
@@ -511,7 +516,7 @@ static void draw_img(lv_obj_t * obj, lv_event_t e)
|
|||||||
zoom_final = (zoom_final * img->zoom) >> 8;
|
zoom_final = (zoom_final * img->zoom) >> 8;
|
||||||
|
|
||||||
|
|
||||||
const lv_area_t * clip_area = lv_event_get_param();
|
const lv_area_t * clip_area = lv_event_get_param(e);
|
||||||
if(zoom_final == LV_IMG_ZOOM_NONE) {
|
if(zoom_final == LV_IMG_ZOOM_NONE) {
|
||||||
if(_lv_area_is_in(clip_area, &obj->coords, 0) == false) {
|
if(_lv_area_is_in(clip_area, &obj->coords, 0) == false) {
|
||||||
info->res = LV_DRAW_RES_NOT_COVER;
|
info->res = LV_DRAW_RES_NOT_COVER;
|
||||||
@@ -532,7 +537,7 @@ static void draw_img(lv_obj_t * obj, lv_event_t e)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_DRAW_MAIN || e == LV_EVENT_DRAW_POST) {
|
else if(code == LV_EVENT_DRAW_MAIN || code == LV_EVENT_DRAW_POST) {
|
||||||
|
|
||||||
int32_t zoom_final = lv_obj_get_style_transform_zoom(obj, LV_PART_MAIN);
|
int32_t zoom_final = lv_obj_get_style_transform_zoom(obj, LV_PART_MAIN);
|
||||||
zoom_final = (zoom_final * img->zoom) >> 8;
|
zoom_final = (zoom_final * img->zoom) >> 8;
|
||||||
@@ -565,16 +570,16 @@ static void draw_img(lv_obj_t * obj, lv_event_t e)
|
|||||||
lv_area_copy(&ori_coords, &obj->coords);
|
lv_area_copy(&ori_coords, &obj->coords);
|
||||||
lv_area_copy(&obj->coords, &bg_coords);
|
lv_area_copy(&obj->coords, &bg_coords);
|
||||||
|
|
||||||
lv_res_t res = lv_obj_event_base(MY_CLASS, obj, e);
|
lv_res_t res = lv_obj_event_base(MY_CLASS, e);
|
||||||
if(res != LV_RES_OK) return;
|
if(res != LV_RES_OK) return;
|
||||||
|
|
||||||
lv_area_copy(&obj->coords, &ori_coords);
|
lv_area_copy(&obj->coords, &ori_coords);
|
||||||
|
|
||||||
if(e == LV_EVENT_DRAW_MAIN) {
|
if(code == LV_EVENT_DRAW_MAIN) {
|
||||||
if(img->h == 0 || img->w == 0) return;
|
if(img->h == 0 || img->w == 0) return;
|
||||||
if(zoom_final == 0) return;
|
if(zoom_final == 0) return;
|
||||||
|
|
||||||
const lv_area_t * clip_area = lv_event_get_param();
|
const lv_area_t * clip_area = lv_event_get_param(e);
|
||||||
|
|
||||||
lv_area_t img_max_area;
|
lv_area_t img_max_area;
|
||||||
lv_area_copy(&img_max_area, &obj->coords);
|
lv_area_copy(&img_max_area, &obj->coords);
|
||||||
|
|||||||
@@ -36,8 +36,8 @@
|
|||||||
**********************/
|
**********************/
|
||||||
static void lv_label_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj);
|
static void lv_label_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj);
|
||||||
static void lv_label_destructor(const lv_obj_class_t * class_p, lv_obj_t * obj);
|
static void lv_label_destructor(const lv_obj_class_t * class_p, lv_obj_t * obj);
|
||||||
static void lv_label_event_cb(lv_obj_t * obj, lv_event_t e);
|
static void lv_label_event_cb(lv_event_t * e);
|
||||||
static void draw_main(lv_obj_t * obj);
|
static void draw_main(lv_event_t * e);
|
||||||
|
|
||||||
static void lv_label_refr_text(lv_obj_t * obj);
|
static void lv_label_refr_text(lv_obj_t * obj);
|
||||||
static void lv_label_revert_dots(lv_obj_t * label);
|
static void lv_label_revert_dots(lv_obj_t * label);
|
||||||
@@ -738,39 +738,43 @@ static void lv_label_destructor(const lv_obj_class_t * class_p, lv_obj_t * obj)
|
|||||||
label->text = NULL;
|
label->text = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void lv_label_event_cb(lv_obj_t * obj, lv_event_t e)
|
static void lv_label_event_cb(lv_event_t * e)
|
||||||
{
|
{
|
||||||
lv_res_t res;
|
lv_res_t res;
|
||||||
|
|
||||||
/*Call the ancestor's event handler*/
|
/*Call the ancestor's event handler*/
|
||||||
res = lv_obj_event_base(MY_CLASS, obj, e);
|
res = lv_obj_event_base(MY_CLASS, e);
|
||||||
if(res != LV_RES_OK) return;
|
if(res != LV_RES_OK) return;
|
||||||
|
|
||||||
if(e == LV_EVENT_STYLE_CHANGED) {
|
lv_event_code_t code = lv_event_get_code(e);
|
||||||
|
lv_obj_t * obj = lv_event_get_target(e);
|
||||||
|
|
||||||
|
if(code == LV_EVENT_STYLE_CHANGED) {
|
||||||
/*Revert dots for proper refresh*/
|
/*Revert dots for proper refresh*/
|
||||||
lv_label_revert_dots(obj);
|
lv_label_revert_dots(obj);
|
||||||
lv_label_refr_text(obj);
|
lv_label_refr_text(obj);
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_SIZE_CHANGED) {
|
else if(code == LV_EVENT_SIZE_CHANGED) {
|
||||||
lv_label_revert_dots(obj);
|
lv_label_revert_dots(obj);
|
||||||
lv_label_refr_text(obj);
|
lv_label_refr_text(obj);
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_BASE_DIR_CHANGED) {
|
else if(code == LV_EVENT_BASE_DIR_CHANGED) {
|
||||||
#if LV_USE_BIDI
|
#if LV_USE_BIDI
|
||||||
lv_label_t * label = (lv_label_t *)obj;
|
lv_label_t * label = (lv_label_t *)obj;
|
||||||
if(label->static_txt == 0) lv_label_set_text(obj, NULL);
|
if(label->static_txt == 0) lv_label_set_text(obj, NULL);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_DRAW_MAIN) {
|
else if(code == LV_EVENT_DRAW_MAIN) {
|
||||||
draw_main(obj);
|
draw_main(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void draw_main(lv_obj_t * obj)
|
static void draw_main(lv_event_t * e)
|
||||||
{
|
{
|
||||||
|
lv_obj_t * obj = lv_event_get_target(e);
|
||||||
lv_label_t * label = (lv_label_t *)obj;
|
lv_label_t * label = (lv_label_t *)obj;
|
||||||
const lv_area_t * clip_area = lv_event_get_param();
|
const lv_area_t * clip_area = lv_event_get_param(e);
|
||||||
|
|
||||||
lv_area_t txt_coords;
|
lv_area_t txt_coords;
|
||||||
get_txt_coords(obj, &txt_coords);
|
get_txt_coords(obj, &txt_coords);
|
||||||
|
|||||||
@@ -29,7 +29,7 @@
|
|||||||
* STATIC PROTOTYPES
|
* STATIC PROTOTYPES
|
||||||
**********************/
|
**********************/
|
||||||
static void lv_line_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj);
|
static void lv_line_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj);
|
||||||
static void lv_line_event(lv_obj_t * obj, lv_event_t e);
|
static void lv_line_event(lv_event_t * e);
|
||||||
|
|
||||||
/**********************
|
/**********************
|
||||||
* STATIC VARIABLES
|
* STATIC VARIABLES
|
||||||
@@ -119,24 +119,27 @@ static void lv_line_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj)
|
|||||||
LV_TRACE_OBJ_CREATE("finished");
|
LV_TRACE_OBJ_CREATE("finished");
|
||||||
}
|
}
|
||||||
|
|
||||||
static void lv_line_event(lv_obj_t * obj, lv_event_t e)
|
static void lv_line_event(lv_event_t * e)
|
||||||
{
|
{
|
||||||
lv_res_t res;
|
lv_res_t res;
|
||||||
|
|
||||||
/*Call the ancestor's event handler*/
|
/*Call the ancestor's event handler*/
|
||||||
res = lv_obj_event_base(MY_CLASS, obj, e);
|
res = lv_obj_event_base(MY_CLASS, e);
|
||||||
if(res != LV_RES_OK) return;
|
if(res != LV_RES_OK) return;
|
||||||
|
|
||||||
if(e == LV_EVENT_REFR_EXT_DRAW_SIZE) {
|
lv_event_code_t code = lv_event_get_code(e);
|
||||||
|
lv_obj_t * obj = lv_event_get_target(e);
|
||||||
|
|
||||||
|
if(code == LV_EVENT_REFR_EXT_DRAW_SIZE) {
|
||||||
/*The corner of the skew lines is out of the intended area*/
|
/*The corner of the skew lines is out of the intended area*/
|
||||||
lv_coord_t line_width = lv_obj_get_style_line_width(obj, LV_PART_MAIN);
|
lv_coord_t line_width = lv_obj_get_style_line_width(obj, LV_PART_MAIN);
|
||||||
lv_coord_t * s = lv_event_get_param();
|
lv_coord_t * s = lv_event_get_param(e);
|
||||||
if(*s < line_width) *s = line_width;
|
if(*s < line_width) *s = line_width;
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_GET_SELF_SIZE) {
|
else if(code == LV_EVENT_GET_SELF_SIZE) {
|
||||||
lv_line_t * line = (lv_line_t *)obj;
|
lv_line_t * line = (lv_line_t *)obj;
|
||||||
|
|
||||||
lv_point_t * p = lv_event_get_param();
|
lv_point_t * p = lv_event_get_param(e);
|
||||||
lv_coord_t w = 0;
|
lv_coord_t w = 0;
|
||||||
lv_coord_t h = 0;
|
lv_coord_t h = 0;
|
||||||
if(line->point_num > 0) {
|
if(line->point_num > 0) {
|
||||||
@@ -152,9 +155,9 @@ static void lv_line_event(lv_obj_t * obj, lv_event_t e)
|
|||||||
p->x = w;
|
p->x = w;
|
||||||
p->y = h;
|
p->y = h;
|
||||||
}
|
}
|
||||||
} else if(e == LV_EVENT_DRAW_MAIN) {
|
} else if(code == LV_EVENT_DRAW_MAIN) {
|
||||||
lv_line_t * line = (lv_line_t *)obj;
|
lv_line_t * line = (lv_line_t *)obj;
|
||||||
const lv_area_t * clip_area = lv_event_get_param();
|
const lv_area_t * clip_area = lv_event_get_param(e);
|
||||||
|
|
||||||
if(line->point_num == 0 || line->point_array == NULL) return;
|
if(line->point_num == 0 || line->point_array == NULL) return;
|
||||||
|
|
||||||
|
|||||||
@@ -29,7 +29,7 @@
|
|||||||
**********************/
|
**********************/
|
||||||
static void lv_meter_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj);
|
static void lv_meter_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj);
|
||||||
static void lv_meter_destructor(const lv_obj_class_t * class_p, lv_obj_t * obj);
|
static void lv_meter_destructor(const lv_obj_class_t * class_p, lv_obj_t * obj);
|
||||||
static void lv_meter_event(lv_obj_t * obj, lv_event_t e);
|
static void lv_meter_event(lv_event_t * e);
|
||||||
static void draw_arcs(lv_obj_t * obj, const lv_area_t * clip_area, const lv_area_t * scale_area);
|
static void draw_arcs(lv_obj_t * obj, const lv_area_t * clip_area, const lv_area_t * scale_area);
|
||||||
static void draw_ticks_and_labels(lv_obj_t * obj, const lv_area_t * clip_area, const lv_area_t * scale_area);
|
static void draw_ticks_and_labels(lv_obj_t * obj, const lv_area_t * clip_area, const lv_area_t * scale_area);
|
||||||
static void draw_needles(lv_obj_t * obj, const lv_area_t * clip_area, const lv_area_t * scale_area);
|
static void draw_needles(lv_obj_t * obj, const lv_area_t * clip_area, const lv_area_t * scale_area);
|
||||||
@@ -278,13 +278,15 @@ static void lv_meter_destructor(const lv_obj_class_t * class_p, lv_obj_t * obj)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void lv_meter_event(lv_obj_t * obj, lv_event_t e)
|
static void lv_meter_event(lv_event_t * e)
|
||||||
{
|
{
|
||||||
lv_res_t res = lv_obj_event_base(MY_CLASS, obj, e);
|
lv_res_t res = lv_obj_event_base(MY_CLASS, e);
|
||||||
if(res != LV_RES_OK) return;
|
if(res != LV_RES_OK) return;
|
||||||
|
|
||||||
if(e == LV_EVENT_DRAW_MAIN) {
|
lv_event_code_t code = lv_event_get_code(e);
|
||||||
const lv_area_t * clip_area = lv_event_get_param();
|
lv_obj_t * obj = lv_event_get_target(e);
|
||||||
|
if(code == LV_EVENT_DRAW_MAIN) {
|
||||||
|
const lv_area_t * clip_area = lv_event_get_param(e);
|
||||||
lv_area_t scale_area;
|
lv_area_t scale_area;
|
||||||
lv_obj_get_coords_fit(obj, &scale_area);
|
lv_obj_get_coords_fit(obj, &scale_area);
|
||||||
|
|
||||||
|
|||||||
@@ -29,10 +29,10 @@
|
|||||||
* STATIC PROTOTYPES
|
* STATIC PROTOTYPES
|
||||||
**********************/
|
**********************/
|
||||||
static void lv_roller_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj);
|
static void lv_roller_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj);
|
||||||
static void lv_roller_event(lv_obj_t * obj, lv_event_t e);
|
static void lv_roller_event(lv_event_t * e);
|
||||||
static void lv_roller_label_event(lv_obj_t * label, lv_event_t e);
|
static void lv_roller_label_event(lv_event_t * e);
|
||||||
static void draw_main(lv_obj_t * obj, lv_event_t e);
|
static void draw_main(lv_event_t * e);
|
||||||
static void draw_label(lv_obj_t * label_obj);
|
static void draw_label(lv_event_t * e);
|
||||||
static void refr_position(lv_obj_t * obj, lv_anim_enable_t animen);
|
static void refr_position(lv_obj_t * obj, lv_anim_enable_t animen);
|
||||||
static lv_res_t release_handler(lv_obj_t * obj);
|
static lv_res_t release_handler(lv_obj_t * obj);
|
||||||
static void inf_normalize(lv_obj_t * obj_scrl);
|
static void inf_normalize(lv_obj_t * obj_scrl);
|
||||||
@@ -302,35 +302,37 @@ static void lv_roller_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj
|
|||||||
LV_LOG_TRACE("finshed");
|
LV_LOG_TRACE("finshed");
|
||||||
}
|
}
|
||||||
|
|
||||||
static void lv_roller_event(lv_obj_t * obj, lv_event_t e)
|
static void lv_roller_event(lv_event_t * e)
|
||||||
{
|
{
|
||||||
lv_res_t res;
|
lv_res_t res;
|
||||||
|
|
||||||
/*Call the ancestor's event handler*/
|
/*Call the ancestor's event handler*/
|
||||||
res = lv_obj_event_base(MY_CLASS, obj, e);
|
res = lv_obj_event_base(MY_CLASS, e);
|
||||||
if(res != LV_RES_OK) return;
|
if(res != LV_RES_OK) return;
|
||||||
|
|
||||||
|
lv_event_code_t code = lv_event_get_code(e);
|
||||||
|
lv_obj_t * obj = lv_event_get_target(e);
|
||||||
lv_roller_t * roller = (lv_roller_t*)obj;
|
lv_roller_t * roller = (lv_roller_t*)obj;
|
||||||
|
|
||||||
if(e == LV_EVENT_GET_SELF_SIZE) {
|
if(code == LV_EVENT_GET_SELF_SIZE) {
|
||||||
lv_point_t * p = lv_event_get_param();
|
lv_point_t * p = lv_event_get_param(e);
|
||||||
p->x = get_selected_label_width(obj);
|
p->x = get_selected_label_width(obj);
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_STYLE_CHANGED) {
|
else if(code == LV_EVENT_STYLE_CHANGED) {
|
||||||
lv_obj_t * label = get_label(obj);
|
lv_obj_t * label = get_label(obj);
|
||||||
/*Be sure the label's style is updated before processing the roller*/
|
/*Be sure the label's style is updated before processing the roller*/
|
||||||
if(label) lv_event_send(label, LV_EVENT_STYLE_CHANGED, NULL);
|
if(label) lv_event_send(label, LV_EVENT_STYLE_CHANGED, NULL);
|
||||||
lv_obj_handle_self_size_chg(obj);
|
lv_obj_handle_self_size_chg(obj);
|
||||||
refr_position(obj, false);
|
refr_position(obj, false);
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_SIZE_CHANGED) {
|
else if(code == LV_EVENT_SIZE_CHANGED) {
|
||||||
refr_position(obj, false);
|
refr_position(obj, false);
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_PRESSED) {
|
else if(code == LV_EVENT_PRESSED) {
|
||||||
roller->moved = 0;
|
roller->moved = 0;
|
||||||
lv_anim_del(get_label(obj), set_y_anim);
|
lv_anim_del(get_label(obj), set_y_anim);
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_PRESSING) {
|
else if(code == LV_EVENT_PRESSING) {
|
||||||
lv_indev_t * indev = lv_indev_get_act();
|
lv_indev_t * indev = lv_indev_get_act();
|
||||||
lv_point_t p;
|
lv_point_t p;
|
||||||
lv_indev_get_vect(indev, &p);
|
lv_indev_get_vect(indev, &p);
|
||||||
@@ -340,10 +342,10 @@ static void lv_roller_event(lv_obj_t * obj, lv_event_t e)
|
|||||||
roller->moved = 1;
|
roller->moved = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_RELEASED) {
|
else if(code == LV_EVENT_RELEASED) {
|
||||||
release_handler(obj);
|
release_handler(obj);
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_FOCUSED) {
|
else if(code == LV_EVENT_FOCUSED) {
|
||||||
lv_group_t * g = lv_obj_get_group(obj);
|
lv_group_t * g = lv_obj_get_group(obj);
|
||||||
bool editing = lv_group_get_editing(g);
|
bool editing = lv_group_get_editing(g);
|
||||||
lv_indev_type_t indev_type = lv_indev_get_type(lv_indev_get_act());
|
lv_indev_type_t indev_type = lv_indev_get_type(lv_indev_get_act());
|
||||||
@@ -367,15 +369,15 @@ static void lv_roller_event(lv_obj_t * obj, lv_event_t e)
|
|||||||
ENTER won't be pressed*/
|
ENTER won't be pressed*/
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_DEFOCUSED) {
|
else if(code == LV_EVENT_DEFOCUSED) {
|
||||||
/*Revert the original state*/
|
/*Revert the original state*/
|
||||||
if(roller->sel_opt_id != roller->sel_opt_id_ori) {
|
if(roller->sel_opt_id != roller->sel_opt_id_ori) {
|
||||||
roller->sel_opt_id = roller->sel_opt_id_ori;
|
roller->sel_opt_id = roller->sel_opt_id_ori;
|
||||||
refr_position(obj, true);
|
refr_position(obj, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_KEY) {
|
else if(code == LV_EVENT_KEY) {
|
||||||
char c = *((char *)lv_event_get_param());
|
char c = *((char *)lv_event_get_param(e));
|
||||||
if(c == LV_KEY_RIGHT || c == LV_KEY_DOWN) {
|
if(c == LV_KEY_RIGHT || c == LV_KEY_DOWN) {
|
||||||
if(roller->sel_opt_id + 1 < roller->option_cnt) {
|
if(roller->sel_opt_id + 1 < roller->option_cnt) {
|
||||||
uint16_t ori_id = roller->sel_opt_id_ori; /*lv_roller_set_selected will overwrite this*/
|
uint16_t ori_id = roller->sel_opt_id_ori; /*lv_roller_set_selected will overwrite this*/
|
||||||
@@ -392,44 +394,48 @@ static void lv_roller_event(lv_obj_t * obj, lv_event_t e)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_DRAW_MAIN || e == LV_EVENT_DRAW_POST) {
|
else if(code == LV_EVENT_DRAW_MAIN || code == LV_EVENT_DRAW_POST) {
|
||||||
draw_main(obj, e);
|
draw_main(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void lv_roller_label_event(lv_obj_t * label, lv_event_t e)
|
static void lv_roller_label_event(lv_event_t * e)
|
||||||
{
|
{
|
||||||
lv_res_t res;
|
lv_res_t res;
|
||||||
|
|
||||||
|
lv_event_code_t code = lv_event_get_code(e);
|
||||||
/*LV_EVENT_DRAW_MAIN will be called in the draw function*/
|
/*LV_EVENT_DRAW_MAIN will be called in the draw function*/
|
||||||
if(e != LV_EVENT_DRAW_MAIN) {
|
if(code != LV_EVENT_DRAW_MAIN) {
|
||||||
/* Call the ancestor's event handler */
|
/* Call the ancestor's event handler */
|
||||||
res = lv_obj_event_base(MY_CLASS_LABEL, label, e);
|
res = lv_obj_event_base(MY_CLASS_LABEL, e);
|
||||||
if(res != LV_RES_OK) return;
|
if(res != LV_RES_OK) return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(e == LV_EVENT_REFR_EXT_DRAW_SIZE) {
|
lv_obj_t * label = lv_event_get_target(e);
|
||||||
|
if(code == LV_EVENT_REFR_EXT_DRAW_SIZE) {
|
||||||
/*If the selected text has a larger font it needs some extra space to draw it*/
|
/*If the selected text has a larger font it needs some extra space to draw it*/
|
||||||
lv_coord_t * s = lv_event_get_param();
|
lv_coord_t * s = lv_event_get_param(e);
|
||||||
lv_obj_t * obj = lv_obj_get_parent(label);
|
lv_obj_t * obj = lv_obj_get_parent(label);
|
||||||
lv_coord_t sel_w = get_selected_label_width(obj);
|
lv_coord_t sel_w = get_selected_label_width(obj);
|
||||||
lv_coord_t label_w = lv_obj_get_width(label);
|
lv_coord_t label_w = lv_obj_get_width(label);
|
||||||
*s = LV_MAX(*s, sel_w - label_w);
|
*s = LV_MAX(*s, sel_w - label_w);
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_SIZE_CHANGED) {
|
else if(code == LV_EVENT_SIZE_CHANGED) {
|
||||||
refr_position(lv_obj_get_parent(label), LV_ANIM_OFF);
|
refr_position(lv_obj_get_parent(label), LV_ANIM_OFF);
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_DRAW_MAIN) {
|
else if(code == LV_EVENT_DRAW_MAIN) {
|
||||||
draw_label(label);
|
draw_label(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void draw_main(lv_obj_t * obj, lv_event_t e)
|
static void draw_main(lv_event_t * e)
|
||||||
{
|
{
|
||||||
if(e == LV_EVENT_DRAW_MAIN) {
|
lv_event_code_t code = lv_event_get_code(e);
|
||||||
|
lv_obj_t * obj = lv_event_get_target(e);
|
||||||
|
if(code == LV_EVENT_DRAW_MAIN) {
|
||||||
/*Draw the selected rectangle*/
|
/*Draw the selected rectangle*/
|
||||||
const lv_area_t * clip_area = lv_event_get_param();
|
const lv_area_t * clip_area = lv_event_get_param(e);
|
||||||
const lv_font_t * font = lv_obj_get_style_text_font(obj, LV_PART_MAIN);
|
const lv_font_t * font = lv_obj_get_style_text_font(obj, LV_PART_MAIN);
|
||||||
lv_coord_t line_space = lv_obj_get_style_text_line_space(obj, LV_PART_MAIN);
|
lv_coord_t line_space = lv_obj_get_style_text_line_space(obj, LV_PART_MAIN);
|
||||||
lv_coord_t font_h = lv_font_get_line_height(font);
|
lv_coord_t font_h = lv_font_get_line_height(font);
|
||||||
@@ -448,8 +454,8 @@ static void draw_main(lv_obj_t * obj, lv_event_t e)
|
|||||||
lv_draw_rect(&rect_area, clip_area, &sel_dsc);
|
lv_draw_rect(&rect_area, clip_area, &sel_dsc);
|
||||||
}
|
}
|
||||||
/*Post draw when the children are drawn*/
|
/*Post draw when the children are drawn*/
|
||||||
else if(e == LV_EVENT_DRAW_POST) {
|
else if(code == LV_EVENT_DRAW_POST) {
|
||||||
const lv_area_t * clip_area = lv_event_get_param();
|
const lv_area_t * clip_area = lv_event_get_param(e);
|
||||||
|
|
||||||
lv_draw_label_dsc_t label_dsc;
|
lv_draw_label_dsc_t label_dsc;
|
||||||
lv_draw_label_dsc_init(&label_dsc);
|
lv_draw_label_dsc_init(&label_dsc);
|
||||||
@@ -504,10 +510,11 @@ static void draw_main(lv_obj_t * obj, lv_event_t e)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void draw_label(lv_obj_t * label_obj)
|
static void draw_label(lv_event_t * e)
|
||||||
{
|
{
|
||||||
/* Split the drawing of the label into an upper (above the selected area)
|
/* Split the drawing of the label into an upper (above the selected area)
|
||||||
* and a lower (below the selected area)*/
|
* and a lower (below the selected area)*/
|
||||||
|
lv_obj_t * label_obj = lv_event_get_target(e);
|
||||||
lv_obj_t * roller = lv_obj_get_parent(label_obj);
|
lv_obj_t * roller = lv_obj_get_parent(label_obj);
|
||||||
lv_draw_label_dsc_t label_draw_dsc;
|
lv_draw_label_dsc_t label_draw_dsc;
|
||||||
lv_draw_label_dsc_init(&label_draw_dsc);
|
lv_draw_label_dsc_init(&label_draw_dsc);
|
||||||
@@ -515,7 +522,7 @@ static void draw_label(lv_obj_t * label_obj)
|
|||||||
const lv_font_t * font = label_draw_dsc.font;
|
const lv_font_t * font = label_draw_dsc.font;
|
||||||
lv_coord_t line_space = label_draw_dsc.line_space;
|
lv_coord_t line_space = label_draw_dsc.line_space;
|
||||||
lv_coord_t font_h = lv_font_get_line_height(font);
|
lv_coord_t font_h = lv_font_get_line_height(font);
|
||||||
const lv_area_t * clip_area = lv_event_get_param();
|
const lv_area_t * clip_area = lv_event_get_param(e);
|
||||||
|
|
||||||
lv_area_t rect_area;
|
lv_area_t rect_area;
|
||||||
rect_area.y1 = roller->coords.y1 + (lv_obj_get_height(roller) - font_h - line_space) / 2;
|
rect_area.y1 = roller->coords.y1 + (lv_obj_get_height(roller) - font_h - line_space) / 2;
|
||||||
|
|||||||
@@ -32,9 +32,9 @@
|
|||||||
* STATIC PROTOTYPES
|
* STATIC PROTOTYPES
|
||||||
**********************/
|
**********************/
|
||||||
static void lv_slider_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj);
|
static void lv_slider_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj);
|
||||||
static void lv_slider_event(lv_obj_t * obj, lv_event_t e);
|
static void lv_slider_event(lv_event_t * e);
|
||||||
static void position_knob(lv_obj_t * obj, lv_area_t * knob_area, lv_coord_t knob_size, bool hor);
|
static void position_knob(lv_obj_t * obj, lv_area_t * knob_area, lv_coord_t knob_size, bool hor);
|
||||||
static void draw_knob(lv_obj_t * obj);
|
static void draw_knob(lv_event_t * e);
|
||||||
|
|
||||||
/**********************
|
/**********************
|
||||||
* STATIC VARIABLES
|
* STATIC VARIABLES
|
||||||
@@ -90,20 +90,22 @@ static void lv_slider_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj
|
|||||||
lv_obj_set_height(obj, LV_DPX(10));
|
lv_obj_set_height(obj, LV_DPX(10));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void lv_slider_event(lv_obj_t * obj, lv_event_t e)
|
static void lv_slider_event(lv_event_t * e)
|
||||||
{
|
{
|
||||||
lv_res_t res;
|
lv_res_t res;
|
||||||
|
|
||||||
/*Call the ancestor's event handler*/
|
/*Call the ancestor's event handler*/
|
||||||
res = lv_obj_event_base(MY_CLASS, obj, e);
|
res = lv_obj_event_base(MY_CLASS, e);
|
||||||
if(res != LV_RES_OK) return;
|
if(res != LV_RES_OK) return;
|
||||||
|
|
||||||
|
lv_event_code_t code = lv_event_get_code(e);
|
||||||
|
lv_obj_t * obj = lv_event_get_target(e);
|
||||||
lv_slider_t * slider = (lv_slider_t *)obj;
|
lv_slider_t * slider = (lv_slider_t *)obj;
|
||||||
lv_slider_mode_t type = lv_slider_get_mode(obj);
|
lv_slider_mode_t type = lv_slider_get_mode(obj);
|
||||||
|
|
||||||
/*Advanced hit testing: react only on dragging the knob(s)*/
|
/*Advanced hit testing: react only on dragging the knob(s)*/
|
||||||
if(e == LV_EVENT_HIT_TEST) {
|
if(code == LV_EVENT_HIT_TEST) {
|
||||||
lv_hit_test_info_t * info = lv_event_get_param();
|
lv_hit_test_info_t * info = lv_event_get_param(e);
|
||||||
|
|
||||||
/*Ordinary slider: was the knob area hit?*/
|
/*Ordinary slider: was the knob area hit?*/
|
||||||
info->result = _lv_area_is_point_on(&slider->right_knob_area, info->point, 0);
|
info->result = _lv_area_is_point_on(&slider->right_knob_area, info->point, 0);
|
||||||
@@ -113,7 +115,7 @@ static void lv_slider_event(lv_obj_t * obj, lv_event_t e)
|
|||||||
info->result = _lv_area_is_point_on(&slider->left_knob_area, info->point, 0);
|
info->result = _lv_area_is_point_on(&slider->left_knob_area, info->point, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_PRESSED) {
|
else if(code == LV_EVENT_PRESSED) {
|
||||||
lv_point_t p;
|
lv_point_t p;
|
||||||
slider->dragging = true;
|
slider->dragging = true;
|
||||||
if(type == LV_SLIDER_MODE_NORMAL || type == LV_SLIDER_MODE_SYMMETRICAL) {
|
if(type == LV_SLIDER_MODE_NORMAL || type == LV_SLIDER_MODE_SYMMETRICAL) {
|
||||||
@@ -175,7 +177,7 @@ static void lv_slider_event(lv_obj_t * obj, lv_event_t e)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_PRESSING && slider->value_to_set != NULL) {
|
else if(code == LV_EVENT_PRESSING && slider->value_to_set != NULL) {
|
||||||
lv_indev_t * indev = lv_indev_get_act();
|
lv_indev_t * indev = lv_indev_get_act();
|
||||||
if(lv_indev_get_type(indev) != LV_INDEV_TYPE_POINTER) return;
|
if(lv_indev_get_type(indev) != LV_INDEV_TYPE_POINTER) return;
|
||||||
|
|
||||||
@@ -233,7 +235,7 @@ static void lv_slider_event(lv_obj_t * obj, lv_event_t e)
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_RELEASED || e == LV_EVENT_PRESS_LOST) {
|
else if(code == LV_EVENT_RELEASED || code == LV_EVENT_PRESS_LOST) {
|
||||||
slider->dragging = false;
|
slider->dragging = false;
|
||||||
slider->value_to_set = NULL;
|
slider->value_to_set = NULL;
|
||||||
|
|
||||||
@@ -257,16 +259,16 @@ static void lv_slider_event(lv_obj_t * obj, lv_event_t e)
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_FOCUSED) {
|
else if(code == LV_EVENT_FOCUSED) {
|
||||||
lv_indev_type_t indev_type = lv_indev_get_type(lv_indev_get_act());
|
lv_indev_type_t indev_type = lv_indev_get_type(lv_indev_get_act());
|
||||||
if(indev_type == LV_INDEV_TYPE_ENCODER || indev_type == LV_INDEV_TYPE_KEYPAD) {
|
if(indev_type == LV_INDEV_TYPE_ENCODER || indev_type == LV_INDEV_TYPE_KEYPAD) {
|
||||||
slider->left_knob_focus = 0;
|
slider->left_knob_focus = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_SIZE_CHANGED) {
|
else if(code == LV_EVENT_SIZE_CHANGED) {
|
||||||
lv_obj_refresh_ext_draw_size(obj);
|
lv_obj_refresh_ext_draw_size(obj);
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_REFR_EXT_DRAW_SIZE) {
|
else if(code == LV_EVENT_REFR_EXT_DRAW_SIZE) {
|
||||||
lv_coord_t knob_left = lv_obj_get_style_pad_left(obj, LV_PART_KNOB);
|
lv_coord_t knob_left = lv_obj_get_style_pad_left(obj, LV_PART_KNOB);
|
||||||
lv_coord_t knob_right = lv_obj_get_style_pad_right(obj,LV_PART_KNOB);
|
lv_coord_t knob_right = lv_obj_get_style_pad_right(obj,LV_PART_KNOB);
|
||||||
lv_coord_t knob_top = lv_obj_get_style_pad_top(obj, LV_PART_KNOB);
|
lv_coord_t knob_top = lv_obj_get_style_pad_top(obj, LV_PART_KNOB);
|
||||||
@@ -282,12 +284,12 @@ static void lv_slider_event(lv_obj_t * obj, lv_event_t e)
|
|||||||
knob_size += lv_obj_calculate_ext_draw_size(obj, LV_PART_KNOB);
|
knob_size += lv_obj_calculate_ext_draw_size(obj, LV_PART_KNOB);
|
||||||
|
|
||||||
/*Indic. size is handled by bar*/
|
/*Indic. size is handled by bar*/
|
||||||
lv_coord_t * s = lv_event_get_param();
|
lv_coord_t * s = lv_event_get_param(e);
|
||||||
*s = LV_MAX(*s, knob_size);
|
*s = LV_MAX(*s, knob_size);
|
||||||
|
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_KEY) {
|
else if(code == LV_EVENT_KEY) {
|
||||||
char c = *((char *)lv_event_get_param());
|
char c = *((char *)lv_event_get_param(e));
|
||||||
|
|
||||||
if(c == LV_KEY_RIGHT || c == LV_KEY_UP) {
|
if(c == LV_KEY_RIGHT || c == LV_KEY_UP) {
|
||||||
if(!slider->left_knob_focus) lv_slider_set_value(obj, lv_slider_get_value(obj) + 1, LV_ANIM_ON);
|
if(!slider->left_knob_focus) lv_slider_set_value(obj, lv_slider_get_value(obj) + 1, LV_ANIM_ON);
|
||||||
@@ -303,15 +305,16 @@ static void lv_slider_event(lv_obj_t * obj, lv_event_t e)
|
|||||||
res = lv_event_send(obj, LV_EVENT_VALUE_CHANGED, NULL);
|
res = lv_event_send(obj, LV_EVENT_VALUE_CHANGED, NULL);
|
||||||
if(res != LV_RES_OK) return;
|
if(res != LV_RES_OK) return;
|
||||||
}
|
}
|
||||||
} else if(e == LV_EVENT_DRAW_MAIN) {
|
} else if(code == LV_EVENT_DRAW_MAIN) {
|
||||||
draw_knob(obj);
|
draw_knob(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void draw_knob(lv_obj_t * obj)
|
static void draw_knob(lv_event_t * e)
|
||||||
{
|
{
|
||||||
|
lv_obj_t * obj = lv_event_get_target(e);
|
||||||
lv_slider_t * slider = (lv_slider_t *)obj;
|
lv_slider_t * slider = (lv_slider_t *)obj;
|
||||||
const lv_area_t * clip_area = lv_event_get_param();
|
const lv_area_t * clip_area = lv_event_get_param(e);
|
||||||
lv_bidi_dir_t base_dir = lv_obj_get_base_dir(obj);
|
lv_bidi_dir_t base_dir = lv_obj_get_base_dir(obj);
|
||||||
|
|
||||||
lv_coord_t objw = lv_obj_get_width(obj);
|
lv_coord_t objw = lv_obj_get_width(obj);
|
||||||
|
|||||||
@@ -34,8 +34,8 @@
|
|||||||
* STATIC PROTOTYPES
|
* STATIC PROTOTYPES
|
||||||
**********************/
|
**********************/
|
||||||
static void lv_switch_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj);
|
static void lv_switch_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj);
|
||||||
static void lv_switch_event(lv_obj_t * obj, lv_event_t e);
|
static void lv_switch_event(lv_event_t * e);
|
||||||
static void draw_main(lv_obj_t * obj);
|
static void draw_main(lv_event_t * e);
|
||||||
|
|
||||||
/**********************
|
/**********************
|
||||||
* STATIC VARIABLES
|
* STATIC VARIABLES
|
||||||
@@ -80,15 +80,18 @@ static void lv_switch_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void lv_switch_event(lv_obj_t * obj, lv_event_t e)
|
static void lv_switch_event(lv_event_t * e)
|
||||||
{
|
{
|
||||||
lv_res_t res;
|
lv_res_t res;
|
||||||
|
|
||||||
/*Call the ancestor's event handler*/
|
/*Call the ancestor's event handler*/
|
||||||
res = lv_obj_event_base(MY_CLASS, obj, e);
|
res = lv_obj_event_base(MY_CLASS, e);
|
||||||
if(res != LV_RES_OK) return;
|
if(res != LV_RES_OK) return;
|
||||||
|
|
||||||
if(e == LV_EVENT_REFR_EXT_DRAW_SIZE) {
|
lv_event_code_t code = lv_event_get_code(e);
|
||||||
|
lv_obj_t * obj = lv_event_get_target(e);
|
||||||
|
|
||||||
|
if(code == LV_EVENT_REFR_EXT_DRAW_SIZE) {
|
||||||
lv_coord_t knob_left = lv_obj_get_style_pad_left(obj, LV_PART_KNOB);
|
lv_coord_t knob_left = lv_obj_get_style_pad_left(obj, LV_PART_KNOB);
|
||||||
lv_coord_t knob_right = lv_obj_get_style_pad_right(obj, LV_PART_KNOB);
|
lv_coord_t knob_right = lv_obj_get_style_pad_right(obj, LV_PART_KNOB);
|
||||||
lv_coord_t knob_top = lv_obj_get_style_pad_top(obj, LV_PART_KNOB);
|
lv_coord_t knob_top = lv_obj_get_style_pad_top(obj, LV_PART_KNOB);
|
||||||
@@ -99,25 +102,26 @@ static void lv_switch_event(lv_obj_t * obj, lv_event_t e)
|
|||||||
knob_size += 2; /*For rounding error*/
|
knob_size += 2; /*For rounding error*/
|
||||||
knob_size += lv_obj_calculate_ext_draw_size(obj, LV_PART_KNOB);
|
knob_size += lv_obj_calculate_ext_draw_size(obj, LV_PART_KNOB);
|
||||||
|
|
||||||
lv_coord_t * s = lv_event_get_param();
|
lv_coord_t * s = lv_event_get_param(e);
|
||||||
*s = LV_MAX(*s, knob_size);
|
*s = LV_MAX(*s, knob_size);
|
||||||
*s = LV_MAX(*s, lv_obj_calculate_ext_draw_size(obj, LV_PART_INDICATOR));
|
*s = LV_MAX(*s, lv_obj_calculate_ext_draw_size(obj, LV_PART_INDICATOR));
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_CLICKED) {
|
else if(code == LV_EVENT_CLICKED) {
|
||||||
uint32_t v = lv_obj_get_state(obj) & LV_STATE_CHECKED ? 1 : 0;
|
uint32_t v = lv_obj_get_state(obj) & LV_STATE_CHECKED ? 1 : 0;
|
||||||
res = lv_event_send(obj, LV_EVENT_VALUE_CHANGED, &v);
|
res = lv_event_send(obj, LV_EVENT_VALUE_CHANGED, &v);
|
||||||
if(res != LV_RES_OK) return;
|
if(res != LV_RES_OK) return;
|
||||||
|
|
||||||
lv_obj_invalidate(obj);
|
lv_obj_invalidate(obj);
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_DRAW_MAIN) {
|
else if(code == LV_EVENT_DRAW_MAIN) {
|
||||||
draw_main(obj);
|
draw_main(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void draw_main(lv_obj_t * obj)
|
static void draw_main(lv_event_t * e)
|
||||||
{
|
{
|
||||||
const lv_area_t * clip_area = lv_event_get_param();
|
lv_obj_t * obj = lv_event_get_target(e);
|
||||||
|
const lv_area_t * clip_area = lv_event_get_param(e);
|
||||||
lv_bidi_dir_t base_dir = lv_obj_get_base_dir(obj);
|
lv_bidi_dir_t base_dir = lv_obj_get_base_dir(obj);
|
||||||
|
|
||||||
/*Calculate the indicator area*/
|
/*Calculate the indicator area*/
|
||||||
|
|||||||
@@ -31,8 +31,8 @@
|
|||||||
**********************/
|
**********************/
|
||||||
static void lv_table_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj);
|
static void lv_table_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj);
|
||||||
static void lv_table_destructor(const lv_obj_class_t * class_p, lv_obj_t * obj);
|
static void lv_table_destructor(const lv_obj_class_t * class_p, lv_obj_t * obj);
|
||||||
static void lv_table_event(lv_obj_t * obj, lv_event_t e);
|
static void lv_table_event(lv_event_t * e);
|
||||||
static void draw_main(lv_obj_t * obj);
|
static void draw_main(lv_event_t * e);
|
||||||
static lv_coord_t get_row_height(lv_obj_t * obj, uint16_t row_id, const lv_font_t * font,
|
static lv_coord_t get_row_height(lv_obj_t * obj, uint16_t row_id, const lv_font_t * font,
|
||||||
lv_coord_t letter_space, lv_coord_t line_space,
|
lv_coord_t letter_space, lv_coord_t line_space,
|
||||||
lv_coord_t cell_left, lv_coord_t cell_right, lv_coord_t cell_top, lv_coord_t cell_bottom);
|
lv_coord_t cell_left, lv_coord_t cell_right, lv_coord_t cell_top, lv_coord_t cell_bottom);
|
||||||
@@ -438,21 +438,23 @@ static void lv_table_destructor(const lv_obj_class_t * class_p, lv_obj_t * obj)
|
|||||||
if(table->row_h) lv_mem_free(table->row_h);
|
if(table->row_h) lv_mem_free(table->row_h);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void lv_table_event(lv_obj_t * obj, lv_event_t e)
|
static void lv_table_event(lv_event_t * e)
|
||||||
{
|
{
|
||||||
lv_res_t res;
|
lv_res_t res;
|
||||||
|
|
||||||
/*Call the ancestor's event handler*/
|
/*Call the ancestor's event handler*/
|
||||||
res = lv_obj_event_base(MY_CLASS, obj, e);
|
res = lv_obj_event_base(MY_CLASS, e);
|
||||||
if(res != LV_RES_OK) return;
|
if(res != LV_RES_OK) return;
|
||||||
|
|
||||||
|
lv_event_code_t code = lv_event_get_code(e);
|
||||||
|
lv_obj_t * obj = lv_event_get_target(e);
|
||||||
lv_table_t * table = (lv_table_t *)obj;
|
lv_table_t * table = (lv_table_t *)obj;
|
||||||
|
|
||||||
if(e == LV_EVENT_STYLE_CHANGED) {
|
if(code == LV_EVENT_STYLE_CHANGED) {
|
||||||
refr_size(obj, 0);
|
refr_size(obj, 0);
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_GET_SELF_SIZE) {
|
else if(code == LV_EVENT_GET_SELF_SIZE) {
|
||||||
lv_point_t * p = lv_event_get_param();
|
lv_point_t * p = lv_event_get_param(e);
|
||||||
uint32_t i;
|
uint32_t i;
|
||||||
lv_coord_t w = 0;
|
lv_coord_t w = 0;
|
||||||
for(i = 0; i < table->col_cnt; i++) w += table->col_w[i];
|
for(i = 0; i < table->col_cnt; i++) w += table->col_w[i];
|
||||||
@@ -463,7 +465,7 @@ static void lv_table_event(lv_obj_t * obj, lv_event_t e)
|
|||||||
p->x = w;
|
p->x = w;
|
||||||
p->y = h;
|
p->y = h;
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_PRESSED || e == LV_EVENT_PRESSING) {
|
else if(code == LV_EVENT_PRESSED || code == LV_EVENT_PRESSING) {
|
||||||
uint16_t col;
|
uint16_t col;
|
||||||
uint16_t row;
|
uint16_t row;
|
||||||
lv_res_t pr_res = get_pressed_cell(obj, &row, &col);
|
lv_res_t pr_res = get_pressed_cell(obj, &row, &col);
|
||||||
@@ -474,7 +476,7 @@ static void lv_table_event(lv_obj_t * obj, lv_event_t e)
|
|||||||
}
|
}
|
||||||
lv_obj_invalidate(obj);
|
lv_obj_invalidate(obj);
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_RELEASED) {
|
else if(code == LV_EVENT_RELEASED) {
|
||||||
lv_obj_invalidate(obj);
|
lv_obj_invalidate(obj);
|
||||||
lv_indev_t * indev = lv_indev_get_act();
|
lv_indev_t * indev = lv_indev_get_act();
|
||||||
lv_obj_t * scroll_obj = lv_indev_get_scroll_obj(indev);
|
lv_obj_t * scroll_obj = lv_indev_get_scroll_obj(indev);
|
||||||
@@ -489,10 +491,10 @@ static void lv_table_event(lv_obj_t * obj, lv_event_t e)
|
|||||||
table->row_act = LV_TABLE_CELL_NONE;
|
table->row_act = LV_TABLE_CELL_NONE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_FOCUSED) {
|
else if(code == LV_EVENT_FOCUSED) {
|
||||||
lv_obj_invalidate(obj);
|
lv_obj_invalidate(obj);
|
||||||
} else if(e == LV_EVENT_KEY) {
|
} else if(code == LV_EVENT_KEY) {
|
||||||
int32_t c = *((int32_t *)lv_event_get_param());
|
int32_t c = *((int32_t *)lv_event_get_param(e));
|
||||||
int32_t col = table->col_act;
|
int32_t col = table->col_act;
|
||||||
int32_t row = table->row_act;
|
int32_t row = table->row_act;
|
||||||
if(col == LV_TABLE_CELL_NONE || row == LV_TABLE_CELL_NONE) {
|
if(col == LV_TABLE_CELL_NONE || row == LV_TABLE_CELL_NONE) {
|
||||||
@@ -541,16 +543,17 @@ static void lv_table_event(lv_obj_t * obj, lv_event_t e)
|
|||||||
res = lv_event_send(obj, LV_EVENT_VALUE_CHANGED, NULL);
|
res = lv_event_send(obj, LV_EVENT_VALUE_CHANGED, NULL);
|
||||||
if(res != LV_RES_OK) return;
|
if(res != LV_RES_OK) return;
|
||||||
}
|
}
|
||||||
} else if(e == LV_EVENT_DRAW_MAIN) {
|
} else if(code == LV_EVENT_DRAW_MAIN) {
|
||||||
draw_main(obj);
|
draw_main(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void draw_main(lv_obj_t * obj)
|
static void draw_main(lv_event_t * e)
|
||||||
{
|
{
|
||||||
|
lv_obj_t * obj = lv_event_get_target(e);
|
||||||
lv_table_t * table = (lv_table_t *)obj;
|
lv_table_t * table = (lv_table_t *)obj;
|
||||||
const lv_area_t * clip_area = lv_event_get_param();
|
const lv_area_t * clip_area = lv_event_get_param(e);
|
||||||
|
|
||||||
lv_point_t txt_size;
|
lv_point_t txt_size;
|
||||||
lv_area_t cell_area;
|
lv_area_t cell_area;
|
||||||
|
|||||||
@@ -44,7 +44,7 @@
|
|||||||
**********************/
|
**********************/
|
||||||
static void lv_textarea_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj);
|
static void lv_textarea_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj);
|
||||||
static void lv_textarea_destructor(const lv_obj_class_t * class_p, lv_obj_t * obj);
|
static void lv_textarea_destructor(const lv_obj_class_t * class_p, lv_obj_t * obj);
|
||||||
static void lv_textarea_event(lv_obj_t * obj, lv_event_t e);
|
static void lv_textarea_event(lv_event_t * e);
|
||||||
static void cursor_blink_anim_cb(void * obj, int32_t show);
|
static void cursor_blink_anim_cb(void * obj, int32_t show);
|
||||||
static void pwd_char_hider_anim(void * obj, int32_t x);
|
static void pwd_char_hider_anim(void * obj, int32_t x);
|
||||||
static void pwd_char_hider_anim_ready(lv_anim_t * a);
|
static void pwd_char_hider_anim_ready(lv_anim_t * a);
|
||||||
@@ -52,10 +52,10 @@ static void pwd_char_hider(lv_obj_t * obj);
|
|||||||
static bool char_is_accepted(lv_obj_t * obj, uint32_t c);
|
static bool char_is_accepted(lv_obj_t * obj, uint32_t c);
|
||||||
static void start_cursor_blink(lv_obj_t * obj);
|
static void start_cursor_blink(lv_obj_t * obj);
|
||||||
static void refr_cursor_area(lv_obj_t * obj);
|
static void refr_cursor_area(lv_obj_t * obj);
|
||||||
static void update_cursor_position_on_click(lv_obj_t * obj, lv_event_t e);
|
static void update_cursor_position_on_click(lv_event_t * e);
|
||||||
static lv_res_t insert_handler(lv_obj_t * obj, const char * txt);
|
static lv_res_t insert_handler(lv_obj_t * obj, const char * txt);
|
||||||
static void draw_placeholder(lv_obj_t * obj);
|
static void draw_placeholder(lv_event_t * e);
|
||||||
static void draw_cursor(lv_obj_t * obj);
|
static void draw_cursor(lv_event_t * e);
|
||||||
|
|
||||||
/**********************
|
/**********************
|
||||||
* STATIC VARIABLES
|
* STATIC VARIABLES
|
||||||
@@ -843,26 +843,28 @@ static void lv_textarea_destructor(const lv_obj_class_t * class_p, lv_obj_t * ob
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void lv_textarea_event(lv_obj_t * obj, lv_event_t e)
|
static void lv_textarea_event(lv_event_t * e)
|
||||||
{
|
{
|
||||||
lv_res_t res;
|
lv_res_t res;
|
||||||
/*Call the ancestor's event handler*/
|
/*Call the ancestor's event handler*/
|
||||||
res = lv_obj_event_base(MY_CLASS, obj, e);
|
res = lv_obj_event_base(MY_CLASS, e);
|
||||||
if(res != LV_RES_OK) return;
|
if(res != LV_RES_OK) return;
|
||||||
|
|
||||||
|
lv_event_code_t code = lv_event_get_code(e);
|
||||||
|
lv_obj_t * obj = lv_event_get_target(e);
|
||||||
lv_textarea_t * ta = (lv_textarea_t *)obj;
|
lv_textarea_t * ta = (lv_textarea_t *)obj;
|
||||||
|
|
||||||
if(e == LV_EVENT_STYLE_CHANGED) {
|
if(code == LV_EVENT_STYLE_CHANGED) {
|
||||||
if(ta->label) {
|
if(ta->label) {
|
||||||
lv_label_set_text(ta->label, NULL);
|
lv_label_set_text(ta->label, NULL);
|
||||||
refr_cursor_area(obj);
|
refr_cursor_area(obj);
|
||||||
start_cursor_blink(obj);
|
start_cursor_blink(obj);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_FOCUSED) {
|
else if(code == LV_EVENT_FOCUSED) {
|
||||||
start_cursor_blink(obj);
|
start_cursor_blink(obj);
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_SIZE_CHANGED) {
|
else if(code == LV_EVENT_SIZE_CHANGED) {
|
||||||
/*Set the label width according to the text area width*/
|
/*Set the label width according to the text area width*/
|
||||||
if(ta->label) {
|
if(ta->label) {
|
||||||
lv_obj_set_width(ta->label, lv_obj_get_width_fit(obj));
|
lv_obj_set_width(ta->label, lv_obj_get_width_fit(obj));
|
||||||
@@ -872,8 +874,8 @@ static void lv_textarea_event(lv_obj_t * obj, lv_event_t e)
|
|||||||
refr_cursor_area(obj);
|
refr_cursor_area(obj);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_KEY) {
|
else if(code == LV_EVENT_KEY) {
|
||||||
uint32_t c = *((uint32_t *)lv_event_get_param()); /*uint32_t because can be UTF-8*/
|
uint32_t c = *((uint32_t *)lv_event_get_param(e)); /*uint32_t because can be UTF-8*/
|
||||||
if(c == LV_KEY_RIGHT)
|
if(c == LV_KEY_RIGHT)
|
||||||
lv_textarea_cursor_right(obj);
|
lv_textarea_cursor_right(obj);
|
||||||
else if(c == LV_KEY_LEFT)
|
else if(c == LV_KEY_LEFT)
|
||||||
@@ -896,15 +898,15 @@ static void lv_textarea_event(lv_obj_t * obj, lv_event_t e)
|
|||||||
lv_textarea_add_char(obj, c);
|
lv_textarea_add_char(obj, c);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_PRESSED || e == LV_EVENT_PRESSING || e == LV_EVENT_PRESS_LOST ||
|
else if(code == LV_EVENT_PRESSED || code == LV_EVENT_PRESSING || code == LV_EVENT_PRESS_LOST ||
|
||||||
e == LV_EVENT_RELEASED) {
|
code == LV_EVENT_RELEASED) {
|
||||||
update_cursor_position_on_click(obj, e);
|
update_cursor_position_on_click(e);
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_DRAW_MAIN) {
|
else if(code == LV_EVENT_DRAW_MAIN) {
|
||||||
draw_placeholder(obj);
|
draw_placeholder(e);
|
||||||
}
|
}
|
||||||
else if(e == LV_EVENT_DRAW_POST) {
|
else if(code == LV_EVENT_DRAW_POST) {
|
||||||
draw_cursor(obj);
|
draw_cursor(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1129,11 +1131,13 @@ static void refr_cursor_area(lv_obj_t * obj)
|
|||||||
lv_obj_invalidate_area(obj, &area_tmp);
|
lv_obj_invalidate_area(obj, &area_tmp);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void update_cursor_position_on_click(lv_obj_t * obj, lv_event_t e)
|
static void update_cursor_position_on_click(lv_event_t * e)
|
||||||
{
|
{
|
||||||
lv_indev_t * click_source = lv_indev_get_act();
|
lv_indev_t * click_source = lv_indev_get_act();
|
||||||
if(click_source == NULL) return;
|
if(click_source == NULL) return;
|
||||||
|
|
||||||
|
lv_event_code_t code = lv_event_get_code(e);
|
||||||
|
lv_obj_t * obj = lv_event_get_target(e);
|
||||||
lv_textarea_t * ta = (lv_textarea_t *)obj;
|
lv_textarea_t * ta = (lv_textarea_t *)obj;
|
||||||
if(ta->cursor.click_pos == 0) return;
|
if(ta->cursor.click_pos == 0) return;
|
||||||
|
|
||||||
@@ -1184,11 +1188,11 @@ static void update_cursor_position_on_click(lv_obj_t * obj, lv_event_t e)
|
|||||||
ta->text_sel_in_prog = 1;
|
ta->text_sel_in_prog = 1;
|
||||||
lv_obj_clear_flag(obj, LV_OBJ_FLAG_SCROLL_CHAIN);
|
lv_obj_clear_flag(obj, LV_OBJ_FLAG_SCROLL_CHAIN);
|
||||||
}
|
}
|
||||||
else if(ta->text_sel_in_prog && e == LV_EVENT_PRESSING) {
|
else if(ta->text_sel_in_prog && code == LV_EVENT_PRESSING) {
|
||||||
/*Input device may be moving. Store the end position*/
|
/*Input device may be moving. Store the end position*/
|
||||||
ta->sel_end = char_id_at_click;
|
ta->sel_end = char_id_at_click;
|
||||||
}
|
}
|
||||||
else if(ta->text_sel_in_prog && (e == LV_EVENT_PRESS_LOST || e == LV_EVENT_RELEASED)) {
|
else if(ta->text_sel_in_prog && (code == LV_EVENT_PRESS_LOST || code == LV_EVENT_RELEASED)) {
|
||||||
/*Input device is released. Check if anything was selected.*/
|
/*Input device is released. Check if anything was selected.*/
|
||||||
lv_obj_add_flag(obj, LV_OBJ_FLAG_SCROLL_CHAIN);
|
lv_obj_add_flag(obj, LV_OBJ_FLAG_SCROLL_CHAIN);
|
||||||
}
|
}
|
||||||
@@ -1222,7 +1226,7 @@ static void update_cursor_position_on_click(lv_obj_t * obj, lv_event_t e)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*Finish selection if necessary*/
|
/*Finish selection if necessary*/
|
||||||
if(e == LV_EVENT_PRESS_LOST || e == LV_EVENT_RELEASED) {
|
if(code == LV_EVENT_PRESS_LOST || code == LV_EVENT_RELEASED) {
|
||||||
ta->text_sel_in_prog = 0;
|
ta->text_sel_in_prog = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1239,7 +1243,7 @@ static void update_cursor_position_on_click(lv_obj_t * obj, lv_event_t e)
|
|||||||
char_id_at_click = lv_label_get_letter_on(ta->label, &rel_pos);
|
char_id_at_click = lv_label_get_letter_on(ta->label, &rel_pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(e == LV_EVENT_PRESSED) lv_textarea_set_cursor_pos(obj, char_id_at_click);
|
if(code == LV_EVENT_PRESSED) lv_textarea_set_cursor_pos(obj, char_id_at_click);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1260,10 +1264,11 @@ static lv_res_t insert_handler(lv_obj_t * obj, const char * txt)
|
|||||||
return LV_RES_OK;
|
return LV_RES_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void draw_placeholder(lv_obj_t * obj)
|
static void draw_placeholder(lv_event_t * e)
|
||||||
{
|
{
|
||||||
|
lv_obj_t * obj = lv_event_get_target(e);
|
||||||
lv_textarea_t * ta = (lv_textarea_t *)obj;
|
lv_textarea_t * ta = (lv_textarea_t *)obj;
|
||||||
const lv_area_t * clip_area = lv_event_get_param();
|
const lv_area_t * clip_area = lv_event_get_param(e);
|
||||||
const char * txt = lv_label_get_text(ta->label);
|
const char * txt = lv_label_get_text(ta->label);
|
||||||
|
|
||||||
/*Draw the place holder*/
|
/*Draw the place holder*/
|
||||||
@@ -1286,10 +1291,11 @@ static void draw_placeholder(lv_obj_t * obj)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void draw_cursor(lv_obj_t * obj)
|
static void draw_cursor(lv_event_t * e)
|
||||||
{
|
{
|
||||||
|
lv_obj_t * obj = lv_event_get_target(e);
|
||||||
lv_textarea_t * ta = (lv_textarea_t *)obj;
|
lv_textarea_t * ta = (lv_textarea_t *)obj;
|
||||||
const lv_area_t * clip_area = lv_event_get_param();
|
const lv_area_t * clip_area = lv_event_get_param(e);
|
||||||
const char * txt = lv_label_get_text(ta->label);
|
const char * txt = lv_label_get_text(ta->label);
|
||||||
|
|
||||||
if(ta->cursor.show == 0) return;
|
if(ta->cursor.show == 0) return;
|
||||||
|
|||||||
Reference in New Issue
Block a user