efl
151 строка · 5.6 Кб
1#ifdef HAVE_CONFIG_H2# include "elementary_config.h"3#endif4#include <Elementary.h>5
6static void7_rdg_changed_cb(void *data, Evas_Object *obj,8void *event_info EINA_UNUSED)9{
10Evas_Object *bt = data;11int value = elm_radio_value_get(obj);12
13// set focus move policy to the test button14switch (value)15{16case 0:17elm_object_text_set(bt, "Test Button (MOUSE CLICK or KEY)");18elm_object_focus_move_policy_set(bt, ELM_FOCUS_MOVE_POLICY_CLICK);19break;20case 1:21elm_object_text_set(bt, "Test Button (MOUSE IN or KEY)");22elm_object_focus_move_policy_set(bt, ELM_FOCUS_MOVE_POLICY_IN);23break;24case 2:25elm_object_text_set(bt, "Test Button (KEY ONLY)");26elm_object_focus_move_policy_set(bt, ELM_FOCUS_MOVE_POLICY_KEY_ONLY);27break;28default:29break;30}31}
32
33void
34test_focus_object_policy(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)35{
36Evas_Object *win, *fr, *fr2, *bx, *fr_bx, *bt, *test_bt, *lbl, *rdg, *rd;37
38win = elm_win_util_standard_add("focus-object-policy", "Focus Object Policy");39elm_win_autodel_set(win, EINA_TRUE);40elm_win_focus_highlight_enabled_set(win, EINA_TRUE);41elm_win_focus_highlight_animate_set(win, EINA_TRUE);42elm_win_focus_highlight_style_set(win, "glow");43
44fr = elm_frame_add(win);45evas_object_size_hint_weight_set(fr, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);46elm_win_resize_object_add(win, fr);47elm_object_style_set(fr, "pad_large");48evas_object_show(fr);49
50bx = elm_box_add(fr);51elm_object_content_set(fr, bx);52evas_object_show(bx);53
54/* frame 1 for normal buttons */55{56fr2 = elm_frame_add(bx);57evas_object_size_hint_weight_set(fr2, EVAS_HINT_EXPAND, 0);58evas_object_size_hint_align_set(fr2, EVAS_HINT_FILL, EVAS_HINT_FILL);59elm_object_text_set(fr2, "Focusable Buttons");60elm_box_pack_end(bx, fr2);61evas_object_show(fr2);62
63fr_bx = elm_box_add(fr2);64elm_object_content_set(fr2, fr_bx);65evas_object_show(fr_bx);66
67bt = elm_button_add(fr_bx);68elm_object_text_set(bt, "Button 1");69evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);70evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);71elm_box_pack_end(fr_bx, bt);72evas_object_show(bt);73elm_object_focus_set(bt, EINA_TRUE);74
75bt = elm_button_add(fr_bx);76elm_object_text_set(bt, "Button 2");77evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);78evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);79elm_box_pack_end(fr_bx, bt);80evas_object_show(bt);81
82// a button to test focus object policy83test_bt = elm_button_add(fr_bx);84elm_object_text_set(test_bt, "Test Button (MOUSE CLICK or KEY)");85evas_object_size_hint_weight_set(test_bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);86evas_object_size_hint_align_set(test_bt, EVAS_HINT_FILL, EVAS_HINT_FILL);87elm_box_pack_end(fr_bx, test_bt);88evas_object_show(test_bt);89
90elm_object_focus_move_policy_set(bt, ELM_FOCUS_MOVE_POLICY_CLICK);91bt = elm_button_add(fr_bx);92elm_object_text_set(bt, "Button 4");93evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);94evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);95elm_box_pack_end(fr_bx, bt);96evas_object_show(bt);97}98
99/* a frame 2 for the test button */100{101fr2 = elm_frame_add(bx);102evas_object_size_hint_weight_set(fr2, EVAS_HINT_EXPAND, 0);103evas_object_size_hint_align_set(fr2, EVAS_HINT_FILL, EVAS_HINT_FILL);104elm_object_text_set(fr2, "Focus Options for a TEST button");105elm_box_pack_end(bx, fr2);106evas_object_show(fr2);107
108fr_bx = elm_box_add(fr2);109elm_object_content_set(fr2, fr_bx);110evas_object_show(fr_bx);111
112lbl = elm_label_add(fr_bx);113evas_object_size_hint_weight_set(lbl, EVAS_HINT_EXPAND, 0);114elm_object_text_set(lbl, "This focus option will be applied only for a TEST button. <br/>The focus policies of other buttons will be remain in MOUSE CLICK status.");115elm_box_pack_end(fr_bx, lbl);116evas_object_show(lbl);117
118// radios to select focus object policy119rd = elm_radio_add(fr_bx);120elm_radio_state_value_set(rd, 0);121evas_object_size_hint_align_set(rd, 0.0, 0.5);122elm_object_text_set(rd, "Focus Move Pollicy Mouse Click");123elm_box_pack_end(fr_bx, rd);124evas_object_show(rd);125evas_object_smart_callback_add(rd, "changed", _rdg_changed_cb, test_bt);126
127rdg = rd;128
129rd = elm_radio_add(fr_bx);130elm_radio_state_value_set(rd, 1);131elm_radio_group_add(rd, rdg);132evas_object_size_hint_align_set(rd, 0.0, 0.5);133elm_object_text_set(rd, "Focus Move Policy Mouse In");134elm_box_pack_end(fr_bx, rd);135evas_object_show(rd);136evas_object_smart_callback_add(rd, "changed", _rdg_changed_cb, test_bt);137
138rd = elm_radio_add(fr_bx);139elm_radio_state_value_set(rd, 2);140elm_radio_group_add(rd, rdg);141evas_object_size_hint_align_set(rd, 0.0, 0.5);142elm_object_text_set(rd, "Focus Move Pollicy Key Only");143elm_box_pack_end(fr_bx, rd);144evas_object_show(rd);145evas_object_smart_callback_add(rd, "changed", _rdg_changed_cb, test_bt);146}147
148evas_object_resize(win, 320 * elm_config_scale_get(),149320 * elm_config_scale_get());150evas_object_show(win);151}
152