efl

Форк
0
/
test_focus_policy.c 
151 строка · 5.6 Кб
1
#ifdef HAVE_CONFIG_H
2
# include "elementary_config.h"
3
#endif
4
#include <Elementary.h>
5

6
static void
7
_rdg_changed_cb(void *data, Evas_Object *obj,
8
                void *event_info EINA_UNUSED)
9
{
10
   Evas_Object *bt = data;
11
   int value = elm_radio_value_get(obj);
12

13
   // set focus move policy to the test button
14
   switch (value)
15
     {
16
      case 0:
17
        elm_object_text_set(bt, "Test Button (MOUSE CLICK or KEY)");
18
        elm_object_focus_move_policy_set(bt, ELM_FOCUS_MOVE_POLICY_CLICK);
19
        break;
20
      case 1:
21
        elm_object_text_set(bt, "Test Button (MOUSE IN or KEY)");
22
        elm_object_focus_move_policy_set(bt, ELM_FOCUS_MOVE_POLICY_IN);
23
        break;
24
      case 2:
25
        elm_object_text_set(bt, "Test Button (KEY ONLY)");
26
        elm_object_focus_move_policy_set(bt, ELM_FOCUS_MOVE_POLICY_KEY_ONLY);
27
        break;
28
      default:
29
        break;
30
     }
31
}
32

33
void
34
test_focus_object_policy(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
35
{
36
   Evas_Object *win, *fr, *fr2, *bx, *fr_bx, *bt, *test_bt, *lbl, *rdg, *rd;
37

38
   win = elm_win_util_standard_add("focus-object-policy", "Focus Object Policy");
39
   elm_win_autodel_set(win, EINA_TRUE);
40
   elm_win_focus_highlight_enabled_set(win, EINA_TRUE);
41
   elm_win_focus_highlight_animate_set(win, EINA_TRUE);
42
   elm_win_focus_highlight_style_set(win, "glow");
43

44
   fr = elm_frame_add(win);
45
   evas_object_size_hint_weight_set(fr, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
46
   elm_win_resize_object_add(win, fr);
47
   elm_object_style_set(fr, "pad_large");
48
   evas_object_show(fr);
49

50
   bx = elm_box_add(fr);
51
   elm_object_content_set(fr, bx);
52
   evas_object_show(bx);
53

54
   /* frame 1 for normal buttons */
55
     {
56
        fr2 = elm_frame_add(bx);
57
        evas_object_size_hint_weight_set(fr2, EVAS_HINT_EXPAND, 0);
58
        evas_object_size_hint_align_set(fr2, EVAS_HINT_FILL, EVAS_HINT_FILL);
59
        elm_object_text_set(fr2, "Focusable Buttons");
60
        elm_box_pack_end(bx, fr2);
61
        evas_object_show(fr2);
62

63
        fr_bx = elm_box_add(fr2);
64
        elm_object_content_set(fr2, fr_bx);
65
        evas_object_show(fr_bx);
66

67
        bt = elm_button_add(fr_bx);
68
        elm_object_text_set(bt, "Button 1");
69
        evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
70
        evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
71
        elm_box_pack_end(fr_bx, bt);
72
        evas_object_show(bt);
73
        elm_object_focus_set(bt, EINA_TRUE);
74

75
        bt = elm_button_add(fr_bx);
76
        elm_object_text_set(bt, "Button 2");
77
        evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
78
        evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
79
        elm_box_pack_end(fr_bx, bt);
80
        evas_object_show(bt);
81

82
        // a button to test focus object policy
83
        test_bt = elm_button_add(fr_bx);
84
        elm_object_text_set(test_bt, "Test Button (MOUSE CLICK or KEY)");
85
        evas_object_size_hint_weight_set(test_bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
86
        evas_object_size_hint_align_set(test_bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
87
        elm_box_pack_end(fr_bx, test_bt);
88
        evas_object_show(test_bt);
89

90
        elm_object_focus_move_policy_set(bt, ELM_FOCUS_MOVE_POLICY_CLICK);
91
        bt = elm_button_add(fr_bx);
92
        elm_object_text_set(bt, "Button 4");
93
        evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
94
        evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
95
        elm_box_pack_end(fr_bx, bt);
96
        evas_object_show(bt);
97
     }
98

99
   /* a frame 2 for the test button */
100
     {
101
        fr2 = elm_frame_add(bx);
102
        evas_object_size_hint_weight_set(fr2, EVAS_HINT_EXPAND, 0);
103
        evas_object_size_hint_align_set(fr2, EVAS_HINT_FILL, EVAS_HINT_FILL);
104
        elm_object_text_set(fr2, "Focus Options for a TEST button");
105
        elm_box_pack_end(bx, fr2);
106
        evas_object_show(fr2);
107

108
        fr_bx = elm_box_add(fr2);
109
        elm_object_content_set(fr2, fr_bx);
110
        evas_object_show(fr_bx);
111

112
        lbl = elm_label_add(fr_bx);
113
        evas_object_size_hint_weight_set(lbl, EVAS_HINT_EXPAND, 0);
114
        elm_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.");
115
        elm_box_pack_end(fr_bx, lbl);
116
        evas_object_show(lbl);
117

118
        // radios to select focus object policy
119
        rd = elm_radio_add(fr_bx);
120
        elm_radio_state_value_set(rd, 0);
121
        evas_object_size_hint_align_set(rd, 0.0, 0.5);
122
        elm_object_text_set(rd, "Focus Move Pollicy Mouse Click");
123
        elm_box_pack_end(fr_bx, rd);
124
        evas_object_show(rd);
125
        evas_object_smart_callback_add(rd, "changed", _rdg_changed_cb, test_bt);
126

127
        rdg = rd;
128

129
        rd = elm_radio_add(fr_bx);
130
        elm_radio_state_value_set(rd, 1);
131
        elm_radio_group_add(rd, rdg);
132
        evas_object_size_hint_align_set(rd, 0.0, 0.5);
133
        elm_object_text_set(rd, "Focus Move Policy Mouse In");
134
        elm_box_pack_end(fr_bx, rd);
135
        evas_object_show(rd);
136
        evas_object_smart_callback_add(rd, "changed", _rdg_changed_cb, test_bt);
137

138
        rd = elm_radio_add(fr_bx);
139
        elm_radio_state_value_set(rd, 2);
140
        elm_radio_group_add(rd, rdg);
141
        evas_object_size_hint_align_set(rd, 0.0, 0.5);
142
        elm_object_text_set(rd, "Focus Move Pollicy Key Only");
143
        elm_box_pack_end(fr_bx, rd);
144
        evas_object_show(rd);
145
        evas_object_smart_callback_add(rd, "changed", _rdg_changed_cb, test_bt);
146
     }
147

148
   evas_object_resize(win, 320 * elm_config_scale_get(),
149
                           320 * elm_config_scale_get());
150
   evas_object_show(win);
151
}
152

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.