aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src/extantz/files.c
diff options
context:
space:
mode:
authorDavid Walter Seikel2014-05-04 19:47:26 +1000
committerDavid Walter Seikel2014-05-04 19:47:26 +1000
commit678db28766fb6bcc7bcdc8e598f8aab3bda5f148 (patch)
treea1e107ce4632ee97fb3028d3a68f1a72467b5813 /src/extantz/files.c
parentMajor clean up of the file selector. (diff)
downloadSledjHamr-678db28766fb6bcc7bcdc8e598f8aab3bda5f148.zip
SledjHamr-678db28766fb6bcc7bcdc8e598f8aab3bda5f148.tar.gz
SledjHamr-678db28766fb6bcc7bcdc8e598f8aab3bda5f148.tar.bz2
SledjHamr-678db28766fb6bcc7bcdc8e598f8aab3bda5f148.tar.xz
Make the file selector actually useful.
Diffstat (limited to 'src/extantz/files.c')
-rw-r--r--src/extantz/files.c45
1 files changed, 32 insertions, 13 deletions
diff --git a/src/extantz/files.c b/src/extantz/files.c
index b705e21..024e2df 100644
--- a/src/extantz/files.c
+++ b/src/extantz/files.c
@@ -58,9 +58,10 @@ static void _big_icon_clicked(void *data, Evas_Object *obj EINA_UNUSED, void *ev
58 elm_fileselector_thumbnail_size_set(fs, 128, 128); 58 elm_fileselector_thumbnail_size_set(fs, 128, 128);
59} 59}
60 60
61static void _OK_clicked(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) 61static void my_fileselector_activated(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
62{ 62{
63 Evas_Object *fs = data; 63 fangWin *me = data;
64 Evas_Object *fs = me->data;
64 65
65 if (elm_fileselector_multi_select_get(fs)) 66 if (elm_fileselector_multi_select_get(fs))
66 { 67 {
@@ -79,16 +80,19 @@ static void _OK_clicked(void *data, Evas_Object *obj EINA_UNUSED, void *event_in
79 80
80 printf("SELECTED file : %s\n", file); 81 printf("SELECTED file : %s\n", file);
81 } 82 }
83 evas_object_hide(me->win);
82} 84}
83 85
84static void _CANCEL_clicked(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) 86static void _CANCEL_clicked(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
85{ 87{
86// Evas_Object *fs = data; 88 fangWin *me = data;
89
90 evas_object_hide(me->win);
87} 91}
88 92
89static void my_fileselector_activated(void *data, Evas_Object *obj, void *event_info) 93static void _OK_clicked(void *data, Evas_Object *obj, void *event_info)
90{ 94{
91 _OK_clicked(data, obj, event_info); 95 my_fileselector_activated(data, obj, event_info);
92} 96}
93 97
94#if 0 98#if 0
@@ -136,7 +140,7 @@ void _on_fs_del(void *data, Evas_Object *obj, void *event_info)
136 elm_entry_editable_set(obj, EINA_FALSE); 140 elm_entry_editable_set(obj, EINA_FALSE);
137} 141}
138 142
139fangWin *files_add(globals *ourGlobals) 143fangWin *filesAdd(globals *ourGlobals, char *path, Eina_Bool multi, Eina_Bool save)
140{ 144{
141 fangWin *me; 145 fangWin *me;
142 Widget *wid; 146 Widget *wid;
@@ -153,8 +157,10 @@ fangWin *files_add(globals *ourGlobals)
153 elm_win_resize_object_add(me->win, bx); 157 elm_win_resize_object_add(me->win, bx);
154 158
155 fs = eo_add(ELM_OBJ_FILESELECTOR_CLASS, bx); 159 fs = eo_add(ELM_OBJ_FILESELECTOR_CLASS, bx);
160 me->data = fs;
156 wid = widgetAdd(me); 161 wid = widgetAdd(me);
157 wid->obj = fs; 162 wid->obj = fs;
163 wid->data = ourGlobals;
158 wid->on_del = _on_fs_del; 164 wid->on_del = _on_fs_del;
159 eo_do(fs, 165 eo_do(fs,
160 evas_obj_size_hint_weight_set(EVAS_HINT_EXPAND, EVAS_HINT_EXPAND), 166 evas_obj_size_hint_weight_set(EVAS_HINT_EXPAND, EVAS_HINT_EXPAND),
@@ -166,10 +172,9 @@ fangWin *files_add(globals *ourGlobals)
166 ); 172 );
167 elm_box_pack_end(bx, fs); 173 elm_box_pack_end(bx, fs);
168 174
169 // TODO - Should allow these to be set from the caller. 175 elm_fileselector_path_set(fs, path);
170 elm_fileselector_path_set(fs, elm_app_data_dir_get()); 176 elm_fileselector_is_save_set(fs, save);
171 elm_fileselector_is_save_set(fs, EINA_FALSE); 177 elm_fileselector_multi_select_set(fs, multi);
172 elm_fileselector_multi_select_set(fs, EINA_TRUE);
173 178
174 // TODO - Should allow these to be set from the caller. 179 // TODO - Should allow these to be set from the caller.
175 // TODO - Don't do these, it adds a horribly out of place button. 180 // TODO - Don't do these, it adds a horribly out of place button.
@@ -182,7 +187,7 @@ fangWin *files_add(globals *ourGlobals)
182// elm_fileselector_mime_types_filter_append(fs, "text/*", "text files"); 187// elm_fileselector_mime_types_filter_append(fs, "text/*", "text files");
183 188
184 // Call back for double click or Enter pressed on file. 189 // Call back for double click or Enter pressed on file.
185 evas_object_smart_callback_add(fs, "activated", my_fileselector_activated, fs); 190 evas_object_smart_callback_add(fs, "activated", my_fileselector_activated, me);
186 191
187 vbox = eo_add(ELM_OBJ_BOX_CLASS, me->win); 192 vbox = eo_add(ELM_OBJ_BOX_CLASS, me->win);
188 eo_do(vbox, 193 eo_do(vbox,
@@ -264,14 +269,14 @@ fangWin *files_add(globals *ourGlobals)
264 bt = eo_add(ELM_OBJ_BUTTON_CLASS, me->win); 269 bt = eo_add(ELM_OBJ_BUTTON_CLASS, me->win);
265 elm_object_text_set(bt, "OK"); 270 elm_object_text_set(bt, "OK");
266 eo_do(bt, evas_obj_visibility_set(EINA_TRUE)); 271 eo_do(bt, evas_obj_visibility_set(EINA_TRUE));
267 evas_object_smart_callback_add(bt, "clicked", _OK_clicked, fs); 272 evas_object_smart_callback_add(bt, "clicked", _OK_clicked, me);
268 elm_box_pack_end(vbox, bt); 273 elm_box_pack_end(vbox, bt);
269 eo_unref(bt); 274 eo_unref(bt);
270 275
271 bt = eo_add(ELM_OBJ_BUTTON_CLASS, me->win); 276 bt = eo_add(ELM_OBJ_BUTTON_CLASS, me->win);
272 elm_object_text_set(bt, "CANCEL"); 277 elm_object_text_set(bt, "CANCEL");
273 eo_do(bt, evas_obj_visibility_set(EINA_TRUE)); 278 eo_do(bt, evas_obj_visibility_set(EINA_TRUE));
274 evas_object_smart_callback_add(bt, "clicked", _CANCEL_clicked, fs); 279 evas_object_smart_callback_add(bt, "clicked", _CANCEL_clicked, me);
275 elm_box_pack_end(vbox, bt); 280 elm_box_pack_end(vbox, bt);
276 eo_unref(bt); 281 eo_unref(bt);
277 282
@@ -282,5 +287,19 @@ fangWin *files_add(globals *ourGlobals)
282 eo_unref(bx); 287 eo_unref(bx);
283 288
284 fang_win_complete(ourGlobals, me, ourGlobals->win_w - 380, ourGlobals->win_w - 530, 350, 500); 289 fang_win_complete(ourGlobals, me, ourGlobals->win_w - 380, ourGlobals->win_w - 530, 350, 500);
290 evas_object_hide(me->win);
285 return me; 291 return me;
286} 292}
293
294void filesShow(fangWin *me, Evas_Smart_Cb func, void *data)
295{
296 Evas_Object *fs = me->data;
297
298 if (!data) data = me;
299
300 if (func)
301 evas_object_smart_callback_add(fs, "activated", func, data);
302 else
303 evas_object_smart_callback_add(fs, "activated", my_fileselector_activated, me);
304 evas_object_show(me->win);
305}