svn update: 48945 (latest:48959)
[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("default", d->icon, 48);
28    if (!path)
29      {
30         path = efreet_icon_path_find("hicolor", d->icon, 48);
31         if (!path)
32           {
33              path = efreet_icon_path_find("gnome", d->icon, 48);
34              if (!path)
35                {
36                   path = efreet_icon_path_find("Human", d->icon, 48);
37                }
38           }
39      }
40    if (path)
41      {
42         elm_icon_file_set(ic, path, NULL);
43         free(path);
44         return ic;
45      }
46    return ic;
47 #else
48    return NULL;
49 #endif   
50 }
51 static void
52 desk_gl_del(const void *data, Evas_Object *obj)
53 {
54 #ifdef ELM_EFREET   
55    Efreet_Desktop *d = (Efreet_Desktop *)data;
56    efreet_desktop_free(d);
57 #endif   
58 }
59
60 static void
61 desktop_sel(void *data, Evas_Object *obj, void *event_info)
62 {
63    printf("sel\n");
64 }
65
66 void
67 test_icon_desktops(void *data, Evas_Object *obj, void *event_info)
68 {
69    Evas_Object *win, *bg, *gl;
70    Eina_List *desktops;
71
72    win = elm_win_add(NULL, "icon_desktops", ELM_WIN_BASIC);
73    elm_win_title_set(win, "Icon Desktops");
74    elm_win_autodel_set(win, 1);
75
76    bg = elm_bg_add(win);
77    evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
78    elm_win_resize_object_add(win, bg);
79    evas_object_show(bg);
80
81    it_desk.item_style     = "default";
82    it_desk.func.label_get = desk_gl_label_get;
83    it_desk.func.icon_get  = desk_gl_icon_get;
84    it_desk.func.state_get = NULL;
85    it_desk.func.del       = desk_gl_del;
86
87    gl = elm_genlist_add(win);
88    evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
89    elm_win_resize_object_add(win, gl);
90    evas_object_show(gl);
91
92 #ifdef ELM_EFREET
93    elm_need_efreet();
94    desktops = efreet_util_desktop_name_glob_list("*");
95    if (desktops)
96      {
97         Efreet_Desktop *d;
98
99         EINA_LIST_FREE(desktops, d)
100           elm_genlist_item_append(gl, &it_desk, d,
101                                   NULL, ELM_GENLIST_ITEM_NONE,
102                                   desktop_sel, NULL);
103      }
104 #endif
105
106    evas_object_resize(win, 320, 480);
107    evas_object_show(win);
108 }
109 #endif