4 #include "xcnphandler.h"
5 #include "clipdrawer.h"
7 #define IM "/mnt/ums/Images/Photo/"
8 static const char *g_images_path[] = {
18 typedef struct tag_imgitem
20 Elm_Gengrid_Item *item;
26 Elm_Gengrid_Item_Class gic;
27 imgitem_t oneimg[N_IMAGES];
30 _image_click(void *data, Evas_Object *obj, void *event_info)
32 struct appdata *ad = data;
35 file = evas_object_data_get(obj, "URI");
38 snprintf(p,len+10,"file:///%s",file);
40 elm_selection_set(/*secondary*/1,obj,/*ELM_SEL_FORMAT_IMAGE*/4,p);
42 clipdrawer_lower_view(ad);
45 static void _list_click( void *data, Evas_Object *obj, void *event_info )
47 struct appdata *ad = data;
48 Elm_List_Item *it = (Elm_List_Item *) elm_list_selected_item_get(obj);
52 elm_list_item_selected_set(it, 0);
58 cpdata = elm_list_item_label_get(it);
61 cplen = strlen(cpdata);
62 p = malloc(cplen + 1);
63 snprintf(p, cplen+1, "%s", cpdata);
64 elm_selection_set(1, obj, /*ELM_SEL_FORMAT_TEXT*/1, p);
65 // elm_selection_set(1, obj, /*ELM_SEL_FORMAT_MARKUP*/2, p);
67 clipdrawer_lower_view(ad);
70 int clipdrawer_update_contents(void *data)
72 struct appdata *ad = data;
75 elm_list_clear(ad->txtlist);
76 for (i = 0; i < HISTORY_QUEUE_NUMBER; i++)
78 pos = get_current_history_position()+i;
79 if (pos > HISTORY_QUEUE_NUMBER-1)
80 pos = pos-HISTORY_QUEUE_NUMBER;
81 if (get_item_contents_by_pos(pos) != NULL && strlen(get_item_contents_by_pos(pos)) > 0)
83 elm_list_item_append(ad->txtlist, get_item_contents_by_pos(pos), NULL, NULL, NULL, ad);
86 elm_list_go(ad->txtlist);
88 /* FIXME : sometimes when list update, screen isn't updated */
93 const char* clipdrawer_get_plain_string_from_escaped(char *escstr)
95 /* TODO : is it should be here? besides, remove dependency for entry */
96 /* NOTE : return string should be freed */
97 return elm_entry_markup_to_utf8(escstr);
100 Evas_Object* grid_icon_get(const void *data, Evas_Object *obj, const char *part)
102 imgitem_t *ti = (imgitem_t *)data;
103 if (!strcmp(part, "elm.swallow.icon"))
105 Evas_Object *icon = elm_icon_add(obj);
106 elm_icon_file_set(icon, ti->path, NULL);
107 evas_object_size_hint_aspect_set(icon, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
108 evas_object_show(icon);
114 int clipdrawer_init(void *data)
116 struct appdata *ad = data;
118 evas_object_resize(ad->win_main, 480, 360);
119 evas_object_move(ad->win_main, 0, 440);
120 evas_object_resize(ad->ly_main, 480, 360);
121 evas_object_move(ad->ly_main, 0, 440);
124 ad->imglist = elm_gengrid_add(ad->win_main);
125 elm_layout_content_set(ad->ly_main, "cbhmdrawer/imglist", ad->imglist);
126 elm_gengrid_item_size_set(ad->imglist, 125, 135);
127 elm_gengrid_align_set(ad->imglist, 0.5, 0.0);
128 elm_gengrid_horizontal_set(ad->imglist, EINA_TRUE);
129 elm_gengrid_bounce_set(ad->imglist, EINA_TRUE, EINA_FALSE);
130 elm_gengrid_multi_select_set(ad->imglist, EINA_FALSE);
131 evas_object_size_hint_weight_set(ad->imglist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
133 elm_gengrid_clear(ad->imglist);
135 gic.item_style = "default_grid";
136 gic.func.label_get = NULL;
137 gic.func.icon_get = grid_icon_get;
138 gic.func.state_get = NULL;
142 for (i = 0; i < N_IMAGES; i++)
144 oneimg[i].path = eina_stringshare_add(g_images_path[i]);
145 oneimg[i].item = elm_gengrid_item_append(ad->imglist, &gic, &(oneimg[i]), NULL, NULL);
148 evas_object_show (ad->imglist);
150 ad->txtlist = elm_list_add(ad->win_main);
151 elm_layout_content_set(ad->ly_main, "cbhmdrawer/txtlist", ad->txtlist);
152 elm_list_horizontal_mode_set(ad->txtlist, ELM_LIST_COMPRESS);
153 evas_object_smart_callback_add(ad->txtlist, "selected", _list_click, ad);
154 elm_list_item_append(ad->txtlist, "default", NULL, NULL, NULL, ad);
156 elm_list_go(ad->txtlist);
158 if (get_item_counts() != 0)
159 clipdrawer_update_contents(ad);
164 int clipdrawer_create_view(void *data)
166 struct appdata *ad = data;
171 // at starting, showing app view
172 //clipdrawer_activate_view(ad);
177 void clipdrawer_activate_view(void *data)
179 struct appdata *ad = data;
183 evas_object_show(ad->win_main);
184 elm_win_activate(ad->win_main);
188 void clipdrawer_lower_view(void *data)
190 struct appdata *ad = data;
194 evas_object_hide(ad->win_main);
195 elm_win_lower(ad->win_main);