svn update: 51469 (latest:51480)
[framework/uifw/elementary.git] / src / bin / test_icon_desktops.c
1 #include <Elementary.h>
2 #ifndef ELM_LIB_QUICKLAUNCH
3 static Elm_Genlist_Item_Class it_desk;
4
5 static char *
6 desk_gl_label_get(const void *data, Evas_Object *obj, const char *part)
7 {
8 #ifdef ELM_EFREET   
9    Efreet_Desktop *d = (Efreet_Desktop *)data;
10    return strdup(d->name);
11 #else
12    return NULL;
13 #endif   
14 }
15 static Evas_Object *
16 desk_gl_icon_get(const void *data, Evas_Object *obj, const char *part)
17 {
18    // FIXME: elm_icon should grok this
19 #ifdef ELM_EFREET   
20    Efreet_Desktop *d = (Efreet_Desktop *)data;
21    char *path;
22    Evas_Object *ic;
23    ic = elm_icon_add(obj);
24    evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
25    if (!(!strcmp(part, "elm.swallow.icon"))) return ic;
26    if (!d->icon) return ic;
27    path = efreet_icon_path_find(getenv("E_ICON_THEME"), d->icon, 48);
28    if (!path) 
29      {
30         path = efreet_icon_path_find("default", d->icon, 48);
31         if (!path)
32           {
33              path = efreet_icon_path_find("hicolor", d->icon, 48);
34              if (!path)
35                {
36                   path = efreet_icon_path_find("gnome", d->icon, 48);
37                   if (!path)
38                     {
39                        path = efreet_icon_path_find("Human", d->icon, 48);
40                     }
41                }
42           }
43      }
44    if (path)
45      {
46         elm_icon_file_set(ic, path, NULL);
47         free(path);
48         return ic;
49      }
50    return ic;
51 #else
52    return NULL;
53 #endif   
54 }
55 static void
56 desk_gl_del(const void *data, Evas_Object *obj)
57 {
58 #ifdef ELM_EFREET   
59    Efreet_Desktop *d = (Efreet_Desktop *)data;
60    efreet_desktop_free(d);
61 #endif   
62 }
63
64 static void
65 desktop_sel(void *data, Evas_Object *obj, void *event_info)
66 {
67    printf("sel\n");
68 }
69
70 void
71 test_icon_desktops(void *data, Evas_Object *obj, void *event_info)
72 {
73    Evas_Object *win, *bg, *gl;
74    Eina_List *desktops;
75
76    win = elm_win_add(NULL, "icon_desktops", ELM_WIN_BASIC);
77    elm_win_title_set(win, "Icon Desktops");
78    elm_win_autodel_set(win, 1);
79
80    bg = elm_bg_add(win);
81    evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
82    elm_win_resize_object_add(win, bg);
83    evas_object_show(bg);
84
85    it_desk.item_style     = "default";
86    it_desk.func.label_get = desk_gl_label_get;
87    it_desk.func.icon_get  = desk_gl_icon_get;
88    it_desk.func.state_get = NULL;
89    it_desk.func.del       = desk_gl_del;
90
91    gl = elm_genlist_add(win);
92    evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
93    elm_win_resize_object_add(win, gl);
94    evas_object_show(gl);
95
96 #ifdef ELM_EFREET
97    elm_need_efreet();
98    desktops = efreet_util_desktop_name_glob_list("*");
99    if (desktops)
100      {
101         Efreet_Desktop *d;
102
103         EINA_LIST_FREE(desktops, d)
104           elm_genlist_item_append(gl, &it_desk, d,
105                                   NULL, ELM_GENLIST_ITEM_NONE,
106                                   desktop_sel, NULL);
107      }
108 #endif
109
110    evas_object_resize(win, 320, 480);
111    evas_object_show(win);
112 }
113 #endif