From e1f363783d16a04c69c39fafd90868bed283f4eb Mon Sep 17 00:00:00 2001 From: Andy Williams Date: Fri, 14 Mar 2014 10:30:36 +0000 Subject: [PATCH] Add a simple content type picker if the mime is not recognised --- src/bin/edi_mainview.c | 63 ++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 60 insertions(+), 3 deletions(-) diff --git a/src/bin/edi_mainview.c b/src/bin/edi_mainview.c index ff516b0..e7f8c75 100644 --- a/src/bin/edi_mainview.c +++ b/src/bin/edi_mainview.c @@ -12,6 +12,8 @@ #include "edi_private.h" static Evas_Object *nf, *tb; +static Evas_Object *_edi_mainview_choose_popup; +static const char *_edi_mainview_choose_path; static Eina_List *_edi_mainview_items = NULL; @@ -184,6 +186,62 @@ _edi_mainview_item_win_add(const char *path, const char *type) evas_object_show(win); } +static void +_edi_mainview_choose_type_tab_cb(void *data, + Evas_Object *obj EINA_UNUSED, + void *event_info EINA_UNUSED) +{ + evas_object_del(_edi_mainview_choose_popup); + edi_mainview_open_path(_edi_mainview_choose_path, (const char *) data); + +} + +static void +_edi_mainview_choose_type_win_cb(void *data, + Evas_Object *obj EINA_UNUSED, + void *event_info EINA_UNUSED) +{ + evas_object_del(_edi_mainview_choose_popup); + edi_mainview_open_window_path(_edi_mainview_choose_path, (const char *) data); + +} + +static void +_edi_mainview_choose_type_close_cb(void *data EINA_UNUSED, + Evas_Object *obj EINA_UNUSED, + void *event_info EINA_UNUSED) +{ + evas_object_del(_edi_mainview_choose_popup); +} + +static void +_edi_mainview_choose_type(Evas_Object *parent, const char *path, void *cb) +{ + Evas_Object *popup, *cancel; + + popup = elm_popup_add(parent); + _edi_mainview_choose_popup = popup; + _edi_mainview_choose_path = path; + + // popup title + elm_object_part_text_set(popup, "title,text", + "Unrecognied file type"); + + elm_popup_item_append(popup, "text", NULL, cb, "text"); + elm_popup_item_append(popup, "image", NULL, cb, "image"); + + + cancel = elm_button_add(popup); + elm_object_text_set(cancel, "cancel"); + elm_object_part_content_set(popup, "button1", cancel); + evas_object_smart_callback_add(cancel, "clicked", + _edi_mainview_choose_type_close_cb, NULL); + + // popup show should be called after adding all the contents and the buttons + // of popup to set the focus into popup's contents correctly. + evas_object_show(popup); +} + static void _edi_mainview_tab_stat_done(void *data, Eio_File *handler EINA_UNUSED, const Eina_Stat *stat) { @@ -200,13 +258,12 @@ _edi_mainview_tab_stat_done(void *data, Eio_File *handler EINA_UNUSED, const Ein else if (!strncasecmp(mime, "image/", 6)) _edi_mainview_item_tab_add(path, "image"); else - printf("Unknown mime %s\n", mime); + _edi_mainview_choose_type(nf, path, _edi_mainview_choose_type_tab_cb); } eina_stringshare_del(path); } - static void _edi_mainview_win_stat_done(void *data, Eio_File *handler EINA_UNUSED, const Eina_Stat *stat) { @@ -223,7 +280,7 @@ _edi_mainview_win_stat_done(void *data, Eio_File *handler EINA_UNUSED, const Ein else if (!strncasecmp(mime, "image/", 6)) _edi_mainview_item_win_add(path, "image"); else - printf("Unknown mime %s\n", mime); + _edi_mainview_choose_type(nf, path, _edi_mainview_choose_type_win_cb); } eina_stringshare_del(path);