efl
109 строк · 3.1 Кб
1//Compile with:
2//gcc -o prefs_example_01 prefs_example_01.c -g `pkg-config --cflags --libs elementary`
3
4#include <Elementary.h>5
6//testing ui reflection on prefs data changes
7static Eina_Bool8_elm_prefs_data_change(void *data)9{
10Evas_Object *notify = data;11Elm_Prefs_Data *prefs_data;12Elm_Prefs_Item_Type type;13Eina_Value value;14
15prefs_data = evas_object_data_get(notify, "prefs_data");16
17if (elm_prefs_data_value_get(prefs_data, "main:universe", &type, &value))18{19eina_value_set(&value, 42);20elm_prefs_data_value_set(prefs_data, "main:universe", type, &value);21}22
23if (elm_prefs_data_value_get(prefs_data, "main:text", &type, &value))24{25eina_value_set(&value, "This is a text field (:");26elm_prefs_data_value_set(prefs_data, "main:text", type, &value);27}28
29evas_object_show(notify);30
31return ECORE_CALLBACK_RENEW;32}
33
34static void35_page_saved_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info)36{
37const char *page = event_info;38
39printf("page %s was saved!\n", page);40}
41
42static void43_page_loaded_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info)44{
45const char *page = event_info;46
47printf("page %s was loaded!\n", page);48}
49
50static void51_item_changed_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info)52{
53const char *item = event_info;54
55printf("item %s was changed!\n", item);56}
57
58EAPI_MAIN int59elm_main(int argc EINA_UNUSED, char **argv EINA_UNUSED)60{
61Evas_Object *win, *prefs, *notify, *label;62Elm_Prefs_Data *prefs_data;63
64win = elm_win_util_standard_add("prefs", "Prefs Example 01");65elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED);66elm_win_autodel_set(win, EINA_TRUE);67
68prefs = elm_prefs_add(win);69evas_object_size_hint_weight_set(prefs, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);70elm_win_resize_object_add(win, prefs);71evas_object_show(prefs);72
73evas_object_smart_callback_add(prefs, "page,saved", _page_saved_cb, NULL);74evas_object_smart_callback_add(prefs, "page,loaded", _page_loaded_cb, NULL);75evas_object_smart_callback_add(prefs, "item,changed", _item_changed_cb, win);76
77elm_prefs_autosave_set(prefs, EINA_TRUE);78
79prefs_data = elm_prefs_data_new("./prefs_example_01.cfg", NULL,80EET_FILE_MODE_READ_WRITE);81
82elm_prefs_file_set(prefs, "prefs_example_01.epb", NULL);83elm_prefs_data_set(prefs, prefs_data);84
85label = elm_label_add(win);86elm_object_text_set(label, "Setting Values Programmatically");87evas_object_size_hint_align_set(label, 0.5, 0.5);88
89notify = elm_notify_add(win);90elm_notify_align_set(notify, 0.5, 1);91elm_notify_timeout_set(notify, 2);92elm_object_content_set(notify, label);93evas_object_size_hint_weight_set(notify, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);94evas_object_show(notify);95
96evas_object_data_set(notify, "prefs_data", prefs_data);97
98evas_object_resize(win, 320, 320);99evas_object_show(win);100
101ecore_timer_add(5.0, _elm_prefs_data_change, notify);102
103elm_run();104
105elm_prefs_data_unref(prefs_data);106
107return 0;108}
109ELM_MAIN()110