Initialize Tizen 2.3
[framework/uifw/elementary.git] / src / bin / test_win_aux_hint.c
1 #ifdef HAVE_CONFIG_H
2 # include "elementary_config.h"
3 #endif
4 #include <Elementary.h>
5 #ifndef ELM_LIB_QUICKLAUNCH
6
7 typedef struct _App_Data App_Data;
8
9 struct _App_Data
10 {
11    int          id;
12    Evas_Object *lb;
13 };
14
15 static void
16 _win_del_cb(void *data __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
17 {
18    App_Data *ad = evas_object_data_get(obj, "ad");
19    free(ad);
20 }
21
22 static void
23 _win_aux_hint_allowed_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info)
24 {
25    Evas_Object *win = (Evas_Object *)(data);
26    App_Data *ad = evas_object_data_get(win, "ad");
27    const char *str;
28
29    if ((long)event_info == ad->id)
30      {
31         str = eina_stringshare_printf("aux_hint_allowed_cb. ID:%ld", (long)event_info);
32         elm_object_text_set(ad->lb, str);
33         eina_stringshare_del(str);
34
35         /* do something */
36         ;;
37      }
38 }
39
40 void
41 test_win_aux_hint(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
42 {
43    Evas_Object *win, *bx, *lb;
44    App_Data *ad;
45
46    if (!(ad = calloc(1, sizeof(App_Data)))) return;
47
48    win = elm_win_util_standard_add("auxhint", "AuxHint");
49    elm_win_autodel_set(win, EINA_TRUE);
50    evas_object_data_set(win, "ad", ad);
51
52    bx = elm_box_add(win);
53    evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
54    elm_win_resize_object_add(win, bx);
55
56    lb = elm_label_add(win);
57    elm_object_text_set(lb, "<b>Window auxiliary hint test</b>");
58    evas_object_size_hint_weight_set(lb, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
59    elm_box_pack_end(bx, lb);
60    evas_object_show(lb);
61
62    lb = elm_label_add(win);
63    elm_object_text_set(lb, "Supported auxiliary hints");
64    evas_object_size_hint_weight_set(lb, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
65    elm_box_pack_end(bx, lb);
66    evas_object_show(lb);
67
68    if (elm_win_wm_rotation_supported_get(win))
69      {
70         int rots[] = { 0, 90, 280, 270 };
71         elm_win_wm_rotation_available_rotations_set(win, rots, (sizeof(rots) / sizeof(int)));
72      }
73
74    const Eina_List *l, *ll;
75    int id = -1, i = 0;
76    char *hint;
77
78    l = elm_win_aux_hints_supported_get(win);
79    EINA_LIST_FOREACH(l, ll, hint)
80      {
81         Eina_Strbuf *buf = eina_strbuf_new();
82         eina_strbuf_append_printf(buf, "%02d %s", i++, hint);
83
84         if (!strncmp(hint, "wm.comp.win.effect.enable", strlen("wm.comp.win.effect.enable")))
85           {
86              id = elm_win_aux_hint_add(win, "wm.comp.win.effect.enable", "0");
87              if (id != -1)
88                {
89                   eina_strbuf_append(buf, "<- Added");
90                   ad->id = id;
91                }
92           }
93
94         lb = elm_label_add(win);
95         elm_object_text_set(lb, eina_strbuf_string_get(buf));
96         evas_object_size_hint_weight_set(lb, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
97         elm_box_pack_end(bx, lb);
98         evas_object_show(lb);
99
100         eina_strbuf_free(buf);
101      }
102
103    evas_object_smart_callback_add(win, "aux,hint,allowed", _win_aux_hint_allowed_cb, win);
104
105
106    lb = elm_label_add(win);
107    elm_object_text_set(lb, "N/A");
108    evas_object_size_hint_weight_set(lb, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
109    elm_box_pack_end(bx, lb);
110    evas_object_show(lb);
111    ad->lb = lb;
112
113    evas_object_smart_callback_add(win, "delete,request", _win_del_cb, NULL);
114
115    evas_object_resize(win, 480, 400);
116    evas_object_show(bx);
117    evas_object_show(win);
118 }
119 #endif