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