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