lv_fragment.h

Public header for Fragment

Typedefs

typedef struct _lv_fragment_manager_t lv_fragment_manager_t
typedef struct _lv_fragment_t lv_fragment_t
typedef struct _lv_fragment_class_t lv_fragment_class_t
typedef struct _lv_fragment_managed_states_t lv_fragment_managed_states_t

Functions

lv_fragment_manager_t *lv_fragment_manager_create(lv_fragment_t *parent)

Create fragment manager instance

Parameters:

parent -- Parent fragment if this manager is placed inside another fragment, can be null.

Returns:

Fragment manager instance

void lv_fragment_manager_delete(lv_fragment_manager_t *manager)

Destroy fragment manager instance

Parameters:

manager -- Fragment manager instance

void lv_fragment_manager_create_obj(lv_fragment_manager_t *manager)

Create object of all fragments managed by this manager.

Parameters:

manager -- Fragment manager instance

void lv_fragment_manager_delete_obj(lv_fragment_manager_t *manager)

Delete object created by all fragments managed by this manager. Instance of fragments will not be deleted.

Parameters:

manager -- Fragment manager instance

void lv_fragment_manager_add(lv_fragment_manager_t *manager, lv_fragment_t *fragment, lv_obj_t *const *container)

Attach fragment to manager, and add to container.

Parameters:
  • manager -- Fragment manager instance

  • fragment -- Fragment instance

  • container -- Pointer to container object for manager to add objects to

void lv_fragment_manager_remove(lv_fragment_manager_t *manager, lv_fragment_t *fragment)

Detach and destroy fragment. If fragment is in navigation stack, remove from it.

Parameters:
  • manager -- Fragment manager instance

  • fragment -- Fragment instance

void lv_fragment_manager_push(lv_fragment_manager_t *manager, lv_fragment_t *fragment, lv_obj_t *const *container)

Attach fragment to manager and add to navigation stack.

Parameters:
  • manager -- Fragment manager instance

  • fragment -- Fragment instance

  • container -- Pointer to container object for manager to add objects to

bool lv_fragment_manager_pop(lv_fragment_manager_t *manager)

Remove the top-most fragment for stack

Parameters:

manager -- Fragment manager instance

Returns:

true if there is fragment to pop

void lv_fragment_manager_replace(lv_fragment_manager_t *manager, lv_fragment_t *fragment, lv_obj_t *const *container)

Replace fragment. Old item in the stack will be removed.

Parameters:
  • manager -- Fragment manager instance

  • fragment -- Fragment instance

  • container -- Pointer to container object for manager to add objects to

bool lv_fragment_manager_send_event(lv_fragment_manager_t *manager, int code, void *userdata)

Send event to top-most fragment

Parameters:
  • manager -- Fragment manager instance

  • code -- User-defined ID of event

  • userdata -- User-defined data

Returns:

true if fragment returned true

size_t lv_fragment_manager_get_stack_size(lv_fragment_manager_t *manager)

Get stack size of this fragment manager

Parameters:

manager -- Fragment manager instance

Returns:

Stack size of this fragment manager

lv_fragment_t *lv_fragment_manager_get_top(lv_fragment_manager_t *manager)

Get top most fragment instance

Parameters:

manager -- Fragment manager instance

Returns:

Top most fragment instance

lv_fragment_t *lv_fragment_manager_find_by_container(lv_fragment_manager_t *manager, const lv_obj_t *container)

Find first fragment instance in the container

Parameters:
  • manager -- Fragment manager instance

  • container -- Container which target fragment added to

Returns:

First fragment instance in the container

lv_fragment_t *lv_fragment_manager_get_parent_fragment(lv_fragment_manager_t *manager)

Get parent fragment

Parameters:

manager -- Fragment manager instance

Returns:

Parent fragment instance

lv_fragment_t *lv_fragment_create(const lv_fragment_class_t *cls, void *args)

Create a fragment instance.

Parameters:
  • cls -- Fragment class. This fragment must return non null object.

  • args -- Arguments assigned by fragment manager

Returns:

Fragment instance

void lv_fragment_delete(lv_fragment_t *fragment)

Destroy a fragment.

Parameters:

fragment -- Fragment instance.

lv_fragment_manager_t *lv_fragment_get_manager(lv_fragment_t *fragment)

Get associated manager of this fragment

Parameters:

fragment -- Fragment instance

Returns:

Fragment manager instance

lv_obj_t *const *lv_fragment_get_container(lv_fragment_t *fragment)

Get container object of this fragment

Parameters:

fragment -- Fragment instance

Returns:

Reference to container object

lv_fragment_t *lv_fragment_get_parent(lv_fragment_t *fragment)

Get parent fragment of this fragment

Parameters:

fragment -- Fragment instance

Returns:

Parent fragment

lv_obj_t *lv_fragment_create_obj(lv_fragment_t *fragment, lv_obj_t *container)

Create object by fragment.

Parameters:
  • fragment -- Fragment instance.

  • container -- Container of the objects should be created upon.

Returns:

Created object

void lv_fragment_delete_obj(lv_fragment_t *fragment)

Delete created object of a fragment

Parameters:

fragment -- Fragment instance.

void lv_fragment_recreate_obj(lv_fragment_t *fragment)

Destroy obj in fragment, and recreate them.

Parameters:

fragment -- Fragment instance

struct _lv_fragment_t

Public Members

const lv_fragment_class_t *cls

Class of this fragment

lv_fragment_managed_states_t *managed

Managed fragment states. If not null, then this fragment is managed.

Warning

Don't modify values inside this struct!

lv_fragment_manager_t *child_manager

Child fragment manager

lv_obj_t *obj

lv_obj returned by create_obj_cb

struct _lv_fragment_class_t

Public Members

void (*constructor_cb)(lv_fragment_t *self, void *args)

Constructor function for fragment class

Param self:

Fragment instance

Param args:

Arguments assigned by fragment manager

void (*destructor_cb)(lv_fragment_t *self)

Destructor function for fragment class

Param self:

Fragment instance, will be freed after this call

void (*attached_cb)(lv_fragment_t *self)

Fragment attached to manager

Param self:

Fragment instance

void (*detached_cb)(lv_fragment_t *self)

Fragment detached from manager

Param self:

Fragment instance

lv_obj_t *(*create_obj_cb)(lv_fragment_t *self, lv_obj_t *container)

Create objects

Param self:

Fragment instance

Param container:

Container of the objects should be created upon

Return:

Created object, NULL if multiple objects has been created

void (*obj_created_cb)(lv_fragment_t *self, lv_obj_t *obj)
Param self:

Fragment instance

Param obj:

lv_obj returned by create_obj_cb

void (*obj_will_delete_cb)(lv_fragment_t *self, lv_obj_t *obj)

Called before objects in the fragment will be deleted.

Param self:

Fragment instance

Param obj:

object with this fragment

void (*obj_deleted_cb)(lv_fragment_t *self, lv_obj_t *obj)

Called when the object created by fragment received LV_EVENT_DELETE event

Param self:

Fragment instance

Param obj:

object with this fragment

bool (*event_cb)(lv_fragment_t *self, int code, void *userdata)

Handle event

Param self:

Fragment instance

Param which:

User-defined ID of event

Param data1:

User-defined data

Param data2:

User-defined data

size_t instance_size

REQUIRED: Allocation size of fragment

struct _lv_fragment_managed_states_t
#include <lv_fragment.h>

Fragment states

Public Members

const lv_fragment_class_t *cls

Class of the fragment

lv_fragment_manager_t *manager

Manager the fragment attached to

lv_obj_t *const *container

Container object the fragment adding view to

lv_fragment_t *instance

Fragment instance

bool obj_created

true between create_obj_cb and obj_deleted_cb

bool destroying_obj

true before lv_fragment_delete_obj is called. Don't touch any object if this is true

bool in_stack

true if this fragment is in navigation stack that can be popped