/** * @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