add translate from escape to unescape string to save storage
[framework/uifw/cbhm.git] / src / clipdrawer.c
1 #include "common.h"
2 #include "cbhm_main.h"
3 #include "storage.h"
4 #include "xcnphandler.h"
5 #include "clipdrawer.h"
6
7 #define IM      "/mnt/ums/Images/Photo/"
8 static const char *images[] = {
9         IM"1_photo.jpg",
10         IM"2_photo.jpg",
11         IM"3_photo.jpg",
12         IM"4_photo.jpg",
13         IM"5_photo.jpg",
14         IM"6_photo.jpg",
15 };
16 #define N_IMAGES (6)
17
18 static void
19 _image_click(void *data, Evas_Object *obj, void *event_info)
20 {
21         struct appdata *ad = data;
22         char *p,*file;
23         int len;
24         file = evas_object_data_get(obj, "URI");
25         len = strlen(file);
26         p = malloc(len + 10);
27         snprintf(p,len+10,"file:///%s",file);
28
29         elm_selection_set(/*secondary*/1,obj,/*ELM_SEL_FORMAT_IMAGE*/4,p);
30
31         clipdrawer_lower_view(ad);
32 }
33
34 static void _list_click( void *data, Evas_Object *obj, void *event_info )
35 {
36         struct appdata *ad = data;
37     Elm_List_Item *it = (Elm_List_Item *) elm_list_selected_item_get(obj);
38         if (it == NULL)
39                 return;
40
41     elm_list_item_selected_set(it, 0);
42
43         char *p = NULL;
44         int cplen;
45
46         char *cpdata = NULL;
47         cpdata = elm_list_item_label_get(it);
48         if (cpdata == NULL)
49                 return;
50         cplen = strlen(cpdata);
51         p = malloc(cplen + 1);
52         snprintf(p, cplen+1, "%s", cpdata);
53         elm_selection_set(1, obj, /*ELM_SEL_FORMAT_TEXT*/1, p);
54 //      elm_selection_set(1, obj, /*ELM_SEL_FORMAT_MARKUP*/2, p);
55
56         clipdrawer_lower_view(ad);
57 }
58
59 int clipdrawer_update_contents(void *data)
60 {
61         struct appdata *ad = data;
62         int i, pos;
63
64         elm_list_clear(ad->txtlist);
65         for (i = 0; i < HISTORY_QUEUE_NUMBER; i++)
66         {
67                 pos = get_current_history_position()+i;
68                 if (pos > HISTORY_QUEUE_NUMBER-1)
69                         pos = pos-HISTORY_QUEUE_NUMBER;
70                 if (get_item_contents_by_pos(pos) != NULL && strlen(get_item_contents_by_pos(pos)) > 0)
71                 {
72                         elm_list_item_append(ad->txtlist, get_item_contents_by_pos(pos), NULL, NULL, NULL, ad);
73                 }
74         }
75         elm_list_go(ad->txtlist);
76
77         /* FIXME : sometimes when list update, screen isn't updated */
78
79         return 0;
80 }
81
82 const char* clipdrawer_get_plain_string_from_escaped(char *escstr)
83 {
84         /* TODO : is it should be here? besides, remove dependency for entry */
85         /* NOTE : return string should be freed */
86         return elm_entry_markup_to_utf8(escstr);
87 }
88
89 int clipdrawer_init(void *data)
90 {
91         struct appdata *ad = data;
92
93         evas_object_resize(ad->win_main, 480, 360);
94         evas_object_move(ad->win_main, 0, 440);
95         evas_object_resize(ad->ly_main, 480, 360);
96         evas_object_move(ad->ly_main, 0, 440);
97
98         ad->scrl = elm_scroller_add(ad->win_main);
99         edje_object_part_swallow(_EDJ(ad->ly_main), "cbhmdrawer/imglist", ad->scrl);
100         evas_object_size_hint_weight_set(ad->scrl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
101         elm_scroller_bounce_set(ad->scrl, EINA_TRUE, EINA_FALSE);
102         elm_scroller_policy_set(ad->scrl, ELM_SCROLLER_POLICY_AUTO, ELM_SCROLLER_POLICY_OFF);
103         elm_win_resize_object_add(ad->win_main, ad->scrl);
104         evas_object_show(ad->scrl);
105
106         evas_object_resize(ad->scrl,480,95);
107  
108         ad->imgbox = elm_box_add(ad->win_main);
109         elm_box_horizontal_set(ad->imgbox, TRUE);
110         evas_object_size_hint_weight_set(ad->imgbox, EVAS_HINT_EXPAND, 0);
111         evas_object_size_hint_align_set(ad->imgbox, EVAS_HINT_FILL, EVAS_HINT_FILL);
112         elm_scroller_content_set(ad->scrl, ad->imgbox);
113         evas_object_show(ad->imgbox);
114
115         Evas_Object *pt;
116         int i;
117         for (i = 0 ; i < N_IMAGES ; i ++)
118         {
119                 pt = elm_photo_add(ad->win_main);
120                 elm_photo_file_set(pt, images[i]);
121                 evas_object_size_hint_weight_set(pt, EVAS_HINT_EXPAND,
122                                 EVAS_HINT_EXPAND);
123                 evas_object_size_hint_align_set(pt, EVAS_HINT_FILL,
124                                 EVAS_HINT_FILL);
125                 elm_photo_size_set(pt, 125);
126                 elm_box_pack_end(ad->imgbox, pt);
127                 evas_object_show(pt);
128                 evas_object_data_set(pt,"URI",images[i]);
129
130                 evas_object_smart_callback_add(pt, "clicked", _image_click, ad);
131         }
132
133         ad->txtlist = elm_list_add(ad->win_main);
134         elm_layout_content_set(ad->ly_main, "cbhmdrawer/txtlist", ad->txtlist);
135         elm_list_horizontal_mode_set(ad->txtlist, ELM_LIST_COMPRESS);
136         evas_object_smart_callback_add(ad->txtlist, "selected", _list_click, ad);
137         elm_list_item_append(ad->txtlist, "default", NULL, NULL, NULL, ad);
138
139         elm_list_go(ad->txtlist);
140
141         if (get_item_counts() != 0)
142                 clipdrawer_update_contents(ad);
143
144         return 0;
145 }
146
147 int clipdrawer_create_view(void *data)
148 {
149         struct appdata *ad = data;
150
151         clipdrawer_init(ad);
152
153         return 0;
154 }
155
156 void clipdrawer_activate_view(void *data)
157 {
158         struct appdata *ad = data;
159         
160         if (ad->win_main)
161         {
162                 evas_object_show(ad->win_main);
163                 elm_win_activate(ad->win_main);
164         }
165 }
166
167 void clipdrawer_lower_view(void *data)
168 {
169         struct appdata *ad = data;
170         
171         if (ad->win_main)
172         {
173                 evas_object_hide(ad->win_main);
174                 elm_win_lower(ad->win_main);
175         }
176 }