Correctly handle urls wrt to url encoding

If the file is a real url (with urlencoded chars) then use
efreet_uri_decode to decode the uri and use the decoded
string in place of the raw file in window title and playlist items
This commit is contained in:
Davide Andreoli 2015-01-27 22:52:58 +01:00
parent 6265d0dd71
commit bfa96f2e08
5 changed files with 9 additions and 2 deletions

View File

@ -121,6 +121,7 @@ elm_main(int argc, char **argv)
{ {
if (vid->file) eina_stringshare_del(vid->file); if (vid->file) eina_stringshare_del(vid->file);
if (vid->sub) eina_stringshare_del(vid->sub); if (vid->sub) eina_stringshare_del(vid->sub);
if (vid->uri) efreet_uri_free(vid->uri);
free(vid); free(vid);
} }

View File

@ -42,6 +42,7 @@ _cb_win_del(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj, void
{ {
if (vid->file) eina_stringshare_del(vid->file); if (vid->file) eina_stringshare_del(vid->file);
if (vid->sub) eina_stringshare_del(vid->sub); if (vid->sub) eina_stringshare_del(vid->sub);
if (vid->uri) efreet_uri_free(vid->uri);
free(vid); free(vid);
} }
evas_object_data_del(obj, "inf"); evas_object_data_del(obj, "inf");
@ -280,6 +281,7 @@ win_video_delete(Evas_Object *win)
{ {
if (vid->file) eina_stringshare_del(vid->file); if (vid->file) eina_stringshare_del(vid->file);
if (vid->sub) eina_stringshare_del(vid->sub); if (vid->sub) eina_stringshare_del(vid->sub);
if (vid->uri) efreet_uri_free(vid->uri);
free(vid); free(vid);
inf->file_list = eina_list_remove_list(inf->file_list, l); inf->file_list = eina_list_remove_list(inf->file_list, l);
direction = (l_next == NULL ? -1 : 1); direction = (l_next == NULL ? -1 : 1);
@ -425,7 +427,7 @@ win_title_update(Evas_Object *win)
} }
else else
{ {
s = ecore_file_file_get(file); s = ecore_file_file_get(vid->uri ? vid->uri->path : file);
if ((s) && (s[0] != 0)) if ((s) && (s[0] != 0))
snprintf(buf, sizeof(buf), "Rage: %s", s); snprintf(buf, sizeof(buf), "Rage: %s", s);
else else

View File

@ -174,7 +174,7 @@ _fill_box(Evas_Object *win)
elm_layout_signal_callback_add(o, "rage,selected", "rage", _cb_selected, win); elm_layout_signal_callback_add(o, "rage,selected", "rage", _cb_selected, win);
evas_object_data_set(o, "list", l); evas_object_data_set(o, "list", l);
s = ecore_file_file_get(vid->file); s = ecore_file_file_get(vid->uri ? vid->uri->path : vid->file);
if ((s) && (s[0] != 0)) elm_object_part_text_set(o, "rage.title", s); if ((s) && (s[0] != 0)) elm_object_part_text_set(o, "rage.title", s);
else elm_object_part_text_set(o, "rage.title", vid->file); else elm_object_part_text_set(o, "rage.title", vid->file);

View File

@ -219,6 +219,7 @@ win_video_file_list_set(Evas_Object *win, Eina_List *list)
{ {
if (vid->file) vid2->file = eina_stringshare_add(vid->file); if (vid->file) vid2->file = eina_stringshare_add(vid->file);
if (vid->sub) vid2->sub = eina_stringshare_add(vid->sub); if (vid->sub) vid2->sub = eina_stringshare_add(vid->sub);
vid2->uri = efreet_uri_decode(vid->file);
list2 = eina_list_append(list2, vid2); list2 = eina_list_append(list2, vid2);
} }
} }
@ -234,6 +235,7 @@ win_video_insert(Evas_Object *win, const char *file)
vid = calloc(1, sizeof(Winvid_Entry)); vid = calloc(1, sizeof(Winvid_Entry));
vid->file = eina_stringshare_add(file); vid->file = eina_stringshare_add(file);
vid->uri = efreet_uri_decode(vid->file);
inf->file_list = eina_list_append_relative_list(inf->file_list, vid, inf->file_list = eina_list_append_relative_list(inf->file_list, vid,
inf->file_cur); inf->file_cur);
evas_object_data_set(win, "file_list", inf->file_list); evas_object_data_set(win, "file_list", inf->file_list);
@ -255,6 +257,7 @@ win_video_free(Evas_Object *win)
printf("[%p] Free %s\n", vid, vid->file); printf("[%p] Free %s\n", vid, vid->file);
if (vid->file) eina_stringshare_del(vid->file); if (vid->file) eina_stringshare_del(vid->file);
if (vid->sub) eina_stringshare_del(vid->sub); if (vid->sub) eina_stringshare_del(vid->sub);
if (vid->uri) efreet_uri_free(vid->uri);
free(vid); free(vid);
} }

View File

@ -4,6 +4,7 @@
typedef struct _Winvid_Entry typedef struct _Winvid_Entry
{ {
const char *file; const char *file;
Efreet_Uri *uri;
const char *sub; const char *sub;
} Winvid_Entry; } Winvid_Entry;