You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
1.7 KiB
C
61 lines
1.7 KiB
C
/**
|
|
* @file lv_example_fragment_1.c
|
|
* @brief Basic usage of obj fragment
|
|
*/
|
|
#include "../../lv_examples.h"
|
|
|
|
#if LV_USE_FRAGMENT && LV_BUILD_EXAMPLES
|
|
|
|
static void sample_fragment_ctor(lv_fragment_t * self, void * args);
|
|
|
|
static lv_obj_t * sample_fragment_create_obj(lv_fragment_t * self, lv_obj_t * parent);
|
|
|
|
static void sample_container_del(lv_event_t * e);
|
|
|
|
static lv_obj_t * root = NULL;
|
|
|
|
struct sample_fragment_t {
|
|
lv_fragment_t base;
|
|
const char * name;
|
|
};
|
|
|
|
static const lv_fragment_class_t sample_cls = {
|
|
.constructor_cb = sample_fragment_ctor,
|
|
.create_obj_cb = sample_fragment_create_obj,
|
|
.instance_size = sizeof(struct sample_fragment_t)
|
|
};
|
|
|
|
void lv_example_fragment_1(void)
|
|
{
|
|
root = lv_obj_create(lv_scr_act());
|
|
lv_obj_set_size(root, LV_PCT(100), LV_PCT(100));
|
|
lv_fragment_manager_t * manager = lv_fragment_manager_create(NULL);
|
|
/* Clean up the fragment manager before objects in containers got deleted */
|
|
lv_obj_add_event_cb(root, sample_container_del, LV_EVENT_DELETE, manager);
|
|
|
|
lv_fragment_t * fragment = lv_fragment_create(&sample_cls, "Fragment");
|
|
lv_fragment_manager_replace(manager, fragment, &root);
|
|
}
|
|
|
|
|
|
static void sample_fragment_ctor(lv_fragment_t * self, void * args)
|
|
{
|
|
((struct sample_fragment_t *) self)->name = args;
|
|
}
|
|
|
|
static lv_obj_t * sample_fragment_create_obj(lv_fragment_t * self, lv_obj_t * parent)
|
|
{
|
|
lv_obj_t * label = lv_label_create(parent);
|
|
lv_obj_set_style_bg_opa(label, LV_OPA_COVER, 0);;
|
|
lv_label_set_text_fmt(label, "Hello, %s!", ((struct sample_fragment_t *) self)->name);
|
|
return label;
|
|
}
|
|
|
|
static void sample_container_del(lv_event_t * e)
|
|
{
|
|
lv_fragment_manager_t * manager = (lv_fragment_manager_t *) lv_event_get_user_data(e);
|
|
lv_fragment_manager_del(manager);
|
|
}
|
|
|
|
#endif
|