2008-03-04 22:03:49 -08:00
|
|
|
/*
|
|
|
|
* vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
|
|
|
|
*/
|
|
|
|
|
2008-04-11 16:03:08 -07:00
|
|
|
/* TODO
|
|
|
|
* notify user if the Flickr query doesn't return any result
|
|
|
|
*/
|
2008-03-04 22:03:49 -08:00
|
|
|
|
|
|
|
#include "e.h"
|
|
|
|
#include "e_mod_main.h"
|
2008-03-15 00:42:18 -07:00
|
|
|
|
2008-03-04 22:03:49 -08:00
|
|
|
#define D(x) do {printf("### DBG line %d ### ", __LINE__); printf x; fflush(stdout);} while (0)
|
|
|
|
|
2008-03-15 00:42:18 -07:00
|
|
|
#define MAGIC_IMPORT 0x427781cb
|
|
|
|
#define TEMPLATE "/tmp/wallpXXXXXX"
|
2008-04-11 16:03:08 -07:00
|
|
|
#define FLICKR_QUERY "http://api.flickr.com/services/feeds/photos_public.gne?tags=%s&format=rss_200_enc"
|
2008-03-09 09:43:58 -07:00
|
|
|
|
2008-03-04 22:03:49 -08:00
|
|
|
typedef struct _Import Import;
|
|
|
|
|
2008-03-12 13:40:24 -07:00
|
|
|
struct _Import
|
|
|
|
{
|
|
|
|
int magic;
|
2008-03-09 09:43:58 -07:00
|
|
|
|
|
|
|
E_Config_Dialog *parent;
|
2008-03-04 22:03:49 -08:00
|
|
|
E_Config_Dialog_Data *cfdata;
|
2008-03-09 09:43:58 -07:00
|
|
|
E_Dialog *dia;
|
2008-03-04 22:03:49 -08:00
|
|
|
};
|
|
|
|
|
|
|
|
struct _E_Config_Dialog_Data
|
|
|
|
{
|
2008-03-15 00:42:18 -07:00
|
|
|
Evas_Object *ofm, *o, *osfm, *ol;
|
2008-03-27 01:03:27 -07:00
|
|
|
Ecore_List *thumbs, *names, *medias;
|
2008-03-04 22:03:49 -08:00
|
|
|
Ecore_Con_Url *ecu;
|
2008-03-15 00:42:18 -07:00
|
|
|
Ecore_Event_Handler *hdata, *hcomplete;
|
2008-03-04 22:03:49 -08:00
|
|
|
FILE *feed;
|
2008-04-11 16:03:08 -07:00
|
|
|
int ready_for_media, pending_downloads, busy;
|
|
|
|
char *media, *ol_val, *tmpdir, *flickr_query;
|
2008-03-04 22:03:49 -08:00
|
|
|
const char *source;
|
|
|
|
};
|
|
|
|
|
2008-04-11 16:03:08 -07:00
|
|
|
enum parser_states
|
|
|
|
{
|
|
|
|
PS_QUIET = -1,
|
|
|
|
PS_RSS_TAG_START,
|
|
|
|
PS_RSS_TAG_END,
|
|
|
|
PS_RSS_TAG_FOUND,
|
|
|
|
PS_GENERATOR_FOUND,
|
|
|
|
PS_ITEM_FOUND,
|
|
|
|
PS_XSM_LINK_FOUND,
|
|
|
|
PS_XSM_ENCLOSURE_FOUND,
|
|
|
|
PS_MEDIA_CONTENT_FOUND,
|
|
|
|
PS_MEDIA_THUMB_FOUND
|
|
|
|
};
|
|
|
|
|
2008-03-12 03:16:01 -07:00
|
|
|
static void _file_double_click_cb(void *data, Evas_Object *obj, void *ev_info);
|
|
|
|
static void _file_click_cb(void *data, Evas_Object *obj, void *ev_info);
|
|
|
|
static int _feed_complete(void *data, int type, void *event);
|
|
|
|
static int _feed_data(void *data, int type, void *event);
|
|
|
|
static void _get_feed(char *url, void *data);
|
|
|
|
static void _parse_feed(void *data);
|
|
|
|
static void _get_thumbs(void *data);
|
2008-03-15 00:42:18 -07:00
|
|
|
static void _get_thumb_complete(void *data, const char *file, int status);
|
2008-03-12 03:16:01 -07:00
|
|
|
static void _source_sel_cb(void *data);
|
|
|
|
static void _reset(void *data);
|
|
|
|
static int _list_find(const char *str1, const char *str2);
|
|
|
|
static void _dia_del_cb(void *obj);
|
|
|
|
static void _dia_close_cb(void *data, E_Dialog *dia);
|
|
|
|
static void _dia_ok_cb(void *data, E_Dialog *dia);
|
|
|
|
static void _download_media(Import *import);
|
2008-03-15 00:42:18 -07:00
|
|
|
static int _download_media_progress_cb(void *data, const char *file, long int dltotal, long int dlnow, long int ultotal, long int ulnow);
|
|
|
|
static void _download_media_complete_cb(void *data, const char *file, int status);
|
2008-04-11 16:03:08 -07:00
|
|
|
static void _get_flickr_images(void *data, void *data2);
|
2008-03-04 22:03:49 -08:00
|
|
|
|
|
|
|
EAPI E_Dialog *
|
2008-03-12 03:16:01 -07:00
|
|
|
e_int_config_wallpaper_web(E_Config_Dialog *parent)
|
2008-03-04 22:03:49 -08:00
|
|
|
{
|
|
|
|
Evas *evas;
|
|
|
|
E_Dialog *dia;
|
|
|
|
Import *import;
|
|
|
|
E_Config_Dialog_Data *cfdata;
|
2008-04-11 16:03:08 -07:00
|
|
|
Evas_Object *o, *ol, *of, *ofm, *osfm, *ee, *b;
|
2008-03-04 22:03:49 -08:00
|
|
|
Evas_Coord mw, mh;
|
|
|
|
E_Fm2_Config fmc;
|
|
|
|
|
2008-03-12 03:16:01 -07:00
|
|
|
import = E_NEW(Import, 1);
|
2008-03-12 13:40:24 -07:00
|
|
|
if (!import) return NULL;
|
2008-03-04 22:03:49 -08:00
|
|
|
|
2008-03-09 09:43:58 -07:00
|
|
|
import->magic = MAGIC_IMPORT;
|
|
|
|
|
2008-03-12 03:16:01 -07:00
|
|
|
dia = e_dialog_new(parent->con, "E", "_wallpaper_web_dialog");
|
2008-03-04 22:03:49 -08:00
|
|
|
if (!dia)
|
2008-03-12 03:16:01 -07:00
|
|
|
{
|
|
|
|
E_FREE(import);
|
|
|
|
return NULL;
|
|
|
|
}
|
2008-03-04 22:03:49 -08:00
|
|
|
|
|
|
|
dia->data = import;
|
2008-03-12 03:16:01 -07:00
|
|
|
e_object_del_attach_func_set(E_OBJECT(dia), _dia_del_cb);
|
|
|
|
e_win_centered_set(dia->win, 1);
|
2008-03-04 22:03:49 -08:00
|
|
|
|
2008-03-12 03:16:01 -07:00
|
|
|
evas = e_win_evas_get(dia->win);
|
2008-03-04 22:03:49 -08:00
|
|
|
|
2008-03-12 03:16:01 -07:00
|
|
|
cfdata = E_NEW(E_Config_Dialog_Data, 1);
|
2008-03-04 22:03:49 -08:00
|
|
|
|
2008-03-12 03:16:01 -07:00
|
|
|
cfdata->ecu = ecore_con_url_new("http://fake.url");
|
2008-03-04 22:03:49 -08:00
|
|
|
|
2008-04-11 16:03:08 -07:00
|
|
|
cfdata->ready_for_media = 0;
|
2008-03-04 22:03:49 -08:00
|
|
|
cfdata->pending_downloads = 0;
|
|
|
|
cfdata->busy = 0;
|
|
|
|
import->cfdata = cfdata;
|
|
|
|
import->dia = dia;
|
|
|
|
|
|
|
|
import->parent = parent;
|
|
|
|
|
2008-03-12 03:16:01 -07:00
|
|
|
e_dialog_title_set(dia, _("Choose a website from list..."));
|
2008-03-04 22:03:49 -08:00
|
|
|
|
2008-03-12 03:16:01 -07:00
|
|
|
o = e_widget_list_add(evas, 0, 1);
|
2008-03-04 22:03:49 -08:00
|
|
|
cfdata->o = o;
|
2008-03-12 03:16:01 -07:00
|
|
|
cfdata->thumbs = ecore_list_new();
|
2008-03-12 14:13:21 -07:00
|
|
|
ecore_list_free_cb_set(cfdata->thumbs, free);
|
2008-03-27 01:03:27 -07:00
|
|
|
cfdata->names = ecore_list_new();
|
|
|
|
ecore_list_free_cb_set(cfdata->names, free);
|
2008-03-12 03:16:01 -07:00
|
|
|
cfdata->medias = ecore_list_new();
|
2008-03-12 14:13:21 -07:00
|
|
|
ecore_list_free_cb_set(cfdata->medias, free);
|
2008-04-11 16:03:08 -07:00
|
|
|
//of = e_widget_framelist_add(evas, "Sources", 1);
|
|
|
|
of = e_widget_frametable_add(evas, _("Sources"), 0);
|
2008-03-12 03:16:01 -07:00
|
|
|
ol = e_widget_ilist_add(evas, 24, 24, &cfdata->ol_val);
|
2008-03-04 22:03:49 -08:00
|
|
|
cfdata->ol = ol;
|
2008-03-12 03:16:01 -07:00
|
|
|
e_widget_ilist_append(ol, NULL, _("get-e.org - Static"),
|
2008-03-04 22:03:49 -08:00
|
|
|
_source_sel_cb, import,
|
|
|
|
"http://www.get-e.org/Backgrounds/Static/feed.xml");
|
2008-03-12 03:16:01 -07:00
|
|
|
e_widget_ilist_append(ol, NULL, _("get-e.org - Animated"),
|
2008-03-04 22:03:49 -08:00
|
|
|
_source_sel_cb, import,
|
|
|
|
"http://www.get-e.org/Backgrounds/Animated/feed.xml");
|
2008-03-12 03:16:01 -07:00
|
|
|
/*e_widget_ilist_append(ol, NULL, _("get-e.org - Local copy"),
|
2008-03-04 22:03:49 -08:00
|
|
|
_source_sel_cb, import,
|
|
|
|
"http://localhost/get_e_feed.xml");*/
|
2008-04-11 16:03:08 -07:00
|
|
|
/*e_widget_ilist_append(ol, NULL, "Raster on Flickr",
|
2008-03-04 22:03:49 -08:00
|
|
|
_source_sel_cb, import,
|
2008-04-11 16:03:08 -07:00
|
|
|
"http://api.flickr.com/services/feeds/photos_public.gne?tags=rasterman&lang=it-it&format=rss_200_enc");*/
|
2008-03-12 03:16:01 -07:00
|
|
|
e_widget_ilist_go(ol);
|
2008-04-11 16:03:08 -07:00
|
|
|
|
2008-03-15 00:42:18 -07:00
|
|
|
e_widget_min_size_get(ol, &mw, NULL);
|
|
|
|
e_widget_min_size_set(ol, mw, 320);
|
2008-04-11 16:03:08 -07:00
|
|
|
|
|
|
|
//e_widget_framelist_object_append(of, ol);
|
|
|
|
e_widget_frametable_object_append(of, ol, 0, 0, 3, 1, 1, 1, 1, 1);
|
|
|
|
|
|
|
|
cfdata->flickr_query = strdup(_("Enter text here"));
|
|
|
|
ee = e_widget_entry_add(evas, &(cfdata->flickr_query), NULL, NULL, NULL);
|
|
|
|
b = e_widget_button_add(evas, _("Query Flickr"), NULL, _get_flickr_images, import, NULL);
|
|
|
|
e_widget_frametable_object_append(of, ee, 0, 1, 2, 1, 1, 1, 1, 0);
|
|
|
|
e_widget_frametable_object_append(of, b, 2, 1, 1, 1, 0, 1, 0, 0);
|
|
|
|
|
|
|
|
e_widget_list_object_append(o, of, 1, 1, 0.5);
|
2008-03-04 22:03:49 -08:00
|
|
|
|
2008-03-12 03:16:01 -07:00
|
|
|
ofm = e_fm2_add(evas);
|
|
|
|
memset(&fmc, 0, sizeof(E_Fm2_Config));
|
2008-03-04 22:03:49 -08:00
|
|
|
cfdata->ofm = ofm;
|
|
|
|
fmc.view.mode = E_FM2_VIEW_MODE_GRID_ICONS;
|
|
|
|
fmc.view.open_dirs_in_place = 1;
|
|
|
|
fmc.view.selector = 1;
|
|
|
|
fmc.view.single_click = 0;
|
|
|
|
fmc.view.no_subdir_jump = 0;
|
|
|
|
fmc.icon.list.w = 48;
|
|
|
|
fmc.icon.list.h = 48;
|
|
|
|
fmc.icon.icon.w = 96;
|
|
|
|
fmc.icon.icon.h = 96;
|
|
|
|
fmc.icon.fixed.w = 0;
|
|
|
|
fmc.icon.fixed.h = 0;
|
|
|
|
fmc.icon.extension.show = 0;
|
|
|
|
fmc.icon.key_hint = NULL;
|
|
|
|
fmc.list.sort.no_case = 1;
|
|
|
|
fmc.list.sort.dirs.first = 0;
|
|
|
|
fmc.list.sort.dirs.last = 1;
|
|
|
|
fmc.selection.single = 1;
|
|
|
|
fmc.selection.windows_modifiers = 0;
|
2008-03-12 03:16:01 -07:00
|
|
|
e_fm2_config_set(ofm, &fmc);
|
|
|
|
e_fm2_icon_menu_flags_set(ofm, E_FM2_MENU_NO_SHOW_HIDDEN);
|
|
|
|
|
2008-03-15 00:42:18 -07:00
|
|
|
evas_object_smart_callback_add(ofm, "selected",
|
|
|
|
_file_double_click_cb, import);
|
|
|
|
evas_object_smart_callback_add(ofm, "selection_change",
|
|
|
|
_file_click_cb, import);
|
2008-03-12 03:16:01 -07:00
|
|
|
|
|
|
|
osfm = e_widget_scrollframe_pan_add(evas, ofm,
|
2008-03-12 13:40:24 -07:00
|
|
|
e_fm2_pan_set,
|
|
|
|
e_fm2_pan_get,
|
|
|
|
e_fm2_pan_max_get,
|
|
|
|
e_fm2_pan_child_size_get);
|
2008-03-04 22:03:49 -08:00
|
|
|
cfdata->osfm = osfm;
|
2008-03-12 03:16:01 -07:00
|
|
|
e_widget_list_object_append(cfdata->o, cfdata->osfm, 1, 1, 0.5);
|
|
|
|
e_widget_min_size_set(osfm, 320, 320);
|
2008-03-04 22:03:49 -08:00
|
|
|
|
2008-03-15 00:42:18 -07:00
|
|
|
e_widget_min_size_get(o, NULL, &mh);
|
|
|
|
e_dialog_content_set(dia, o, 480, mh);
|
2008-03-04 22:03:49 -08:00
|
|
|
|
2008-03-12 03:16:01 -07:00
|
|
|
e_dialog_button_add(dia, _("OK"), NULL, _dia_ok_cb, import);
|
|
|
|
e_dialog_button_add(dia, _("Cancel"), NULL, _dia_close_cb, import);
|
|
|
|
e_dialog_button_disable_num_set(dia, 0, 1);
|
2008-03-04 22:03:49 -08:00
|
|
|
|
2008-03-12 03:16:01 -07:00
|
|
|
e_dialog_resizable_set(dia, 1);
|
|
|
|
e_dialog_show(dia);
|
2008-03-04 22:03:49 -08:00
|
|
|
|
2008-03-12 03:16:01 -07:00
|
|
|
e_dialog_border_icon_set(dia, "enlightenment/background");
|
2008-03-04 22:03:49 -08:00
|
|
|
|
|
|
|
return dia;
|
|
|
|
}
|
|
|
|
|
|
|
|
void
|
2008-03-12 03:16:01 -07:00
|
|
|
e_int_config_wallpaper_web_del(E_Dialog *dia)
|
2008-03-04 22:03:49 -08:00
|
|
|
{
|
|
|
|
Import *import;
|
|
|
|
E_Config_Dialog_Data *cfdata;
|
|
|
|
|
|
|
|
import = dia->data;
|
|
|
|
cfdata = import->cfdata;
|
|
|
|
|
|
|
|
if (cfdata->pending_downloads == 1)
|
2008-03-12 13:40:24 -07:00
|
|
|
ecore_file_download_abort_all();
|
2008-03-21 07:23:16 -07:00
|
|
|
if (cfdata->ecu)
|
|
|
|
ecore_con_url_destroy(cfdata->ecu);
|
2008-03-04 22:03:49 -08:00
|
|
|
|
|
|
|
if (cfdata->hdata)
|
2008-03-12 13:40:24 -07:00
|
|
|
ecore_event_handler_del(cfdata->hdata);
|
2008-03-04 22:03:49 -08:00
|
|
|
if (cfdata->hcomplete)
|
2008-03-12 13:40:24 -07:00
|
|
|
ecore_event_handler_del(cfdata->hcomplete);
|
2008-03-04 22:03:49 -08:00
|
|
|
|
|
|
|
if (cfdata->tmpdir)
|
2008-03-12 13:40:24 -07:00
|
|
|
{
|
|
|
|
if (ecore_file_is_dir(cfdata->tmpdir))
|
|
|
|
{
|
|
|
|
ecore_file_recursive_rm(cfdata->tmpdir);
|
|
|
|
ecore_file_rmdir(cfdata->tmpdir);
|
|
|
|
}
|
2008-03-12 14:13:21 -07:00
|
|
|
free(cfdata->tmpdir);
|
2008-03-12 13:40:24 -07:00
|
|
|
}
|
2008-03-12 14:13:21 -07:00
|
|
|
ecore_list_destroy(cfdata->thumbs);
|
2008-03-27 01:03:27 -07:00
|
|
|
ecore_list_destroy(cfdata->names);
|
2008-03-12 14:13:21 -07:00
|
|
|
ecore_list_destroy(cfdata->medias);
|
2008-03-04 22:03:49 -08:00
|
|
|
|
2008-03-12 03:16:01 -07:00
|
|
|
e_int_config_wallpaper_web_done(import->parent);
|
|
|
|
E_FREE(import->cfdata);
|
|
|
|
E_FREE(import);
|
|
|
|
e_object_unref(E_OBJECT(dia));
|
2008-03-04 22:03:49 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
static int
|
2008-03-12 03:16:01 -07:00
|
|
|
_feed_complete(void *data, int type, void *event)
|
2008-03-04 22:03:49 -08:00
|
|
|
{
|
|
|
|
Ecore_Con_Event_Url_Complete *euc;
|
|
|
|
E_Config_Dialog_Data *cfdata;
|
|
|
|
Import *import;
|
|
|
|
char *title;
|
|
|
|
|
|
|
|
euc = (Ecore_Con_Event_Url_Complete *)event;
|
|
|
|
import = data;
|
2008-03-09 09:43:58 -07:00
|
|
|
if (import->magic != MAGIC_IMPORT) return 1;
|
|
|
|
|
2008-03-04 22:03:49 -08:00
|
|
|
cfdata = import->cfdata;
|
2008-03-09 09:43:58 -07:00
|
|
|
if (cfdata->ecu != euc->url_con) return 1;
|
|
|
|
|
2008-03-12 03:16:01 -07:00
|
|
|
fclose(cfdata->feed);
|
2008-03-09 09:43:58 -07:00
|
|
|
cfdata->feed = NULL;
|
2008-03-12 03:16:01 -07:00
|
|
|
ecore_event_handler_del(cfdata->hdata);
|
|
|
|
ecore_event_handler_del(cfdata->hcomplete);
|
2008-03-04 22:03:49 -08:00
|
|
|
cfdata->hdata = NULL;
|
|
|
|
cfdata->hcomplete = NULL;
|
2008-03-12 13:40:24 -07:00
|
|
|
if (euc->status == 200)
|
|
|
|
{
|
|
|
|
asprintf(&title, _("[%s] Getting feed... DONE!"), cfdata->source);
|
|
|
|
e_dialog_title_set(import->dia, title);
|
|
|
|
_parse_feed(data);
|
|
|
|
return 0;
|
|
|
|
}
|
2008-03-04 22:03:49 -08:00
|
|
|
else
|
2008-03-12 13:40:24 -07:00
|
|
|
{
|
|
|
|
asprintf(&title, _("[%s] Getting feed... FAILED!"), cfdata->source);
|
|
|
|
e_dialog_title_set(import->dia, title);
|
2008-04-11 16:03:08 -07:00
|
|
|
cfdata->busy = 0;
|
2008-03-12 13:40:24 -07:00
|
|
|
}
|
2008-03-04 22:03:49 -08:00
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
static int
|
2008-03-12 03:16:01 -07:00
|
|
|
_feed_data(void *data, int type, void *event)
|
2008-03-04 22:03:49 -08:00
|
|
|
{
|
|
|
|
Ecore_Con_Event_Url_Data *eud;
|
|
|
|
E_Config_Dialog_Data *cfdata;
|
|
|
|
Import *import;
|
|
|
|
|
|
|
|
eud = (Ecore_Con_Event_Url_Data *)event;
|
|
|
|
import = data;
|
2008-03-09 09:43:58 -07:00
|
|
|
if (import->magic != MAGIC_IMPORT) return 1;
|
|
|
|
|
2008-03-04 22:03:49 -08:00
|
|
|
cfdata = import->cfdata;
|
2008-03-09 09:43:58 -07:00
|
|
|
|
|
|
|
if (cfdata->ecu != eud->url_con) return 1;
|
|
|
|
|
2008-03-12 03:16:01 -07:00
|
|
|
fwrite(eud->data, sizeof(unsigned char), eud->size, cfdata->feed);
|
2008-03-04 22:03:49 -08:00
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
2008-03-12 03:16:01 -07:00
|
|
|
_source_sel_cb(void *data)
|
2008-03-04 22:03:49 -08:00
|
|
|
{
|
|
|
|
Import *import;
|
|
|
|
E_Config_Dialog_Data *cfdata;
|
|
|
|
|
|
|
|
import = data;
|
|
|
|
cfdata = import->cfdata;
|
|
|
|
if ((cfdata->busy == 0) && (cfdata->pending_downloads == 0))
|
2008-03-12 13:40:24 -07:00
|
|
|
{
|
|
|
|
cfdata->source = e_widget_ilist_selected_label_get(cfdata->ol);
|
|
|
|
_reset(import);
|
2008-03-13 12:28:12 -07:00
|
|
|
cfdata->busy = 1;
|
2008-03-12 13:40:24 -07:00
|
|
|
_get_feed(cfdata->ol_val, import);
|
|
|
|
}
|
2008-03-04 22:03:49 -08:00
|
|
|
else
|
2008-04-11 16:03:08 -07:00
|
|
|
e_widget_ilist_unselect(cfdata->ol);
|
2008-03-04 22:03:49 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
2008-03-12 03:16:01 -07:00
|
|
|
_parse_feed(void *data)
|
2008-03-04 22:03:49 -08:00
|
|
|
{
|
|
|
|
Import *import;
|
|
|
|
E_Config_Dialog_Data *cfdata;
|
|
|
|
FILE *fh;
|
2008-03-12 14:13:21 -07:00
|
|
|
char instr[1024];
|
2008-04-11 16:03:08 -07:00
|
|
|
char *media, *img, *title, *tbuf, *ttbuf;
|
|
|
|
int state = PS_QUIET;
|
|
|
|
int have_ns_media, xsm_generator;
|
2008-03-04 22:03:49 -08:00
|
|
|
|
|
|
|
import = data;
|
|
|
|
cfdata = import->cfdata;
|
|
|
|
|
|
|
|
cfdata->pending_downloads = 0;
|
2008-03-12 03:16:01 -07:00
|
|
|
fh = fopen("/tmp/feed.xml", "r");
|
2008-03-12 14:13:21 -07:00
|
|
|
while (fgets(instr, sizeof(instr), fh) != NULL)
|
2008-04-11 16:03:08 -07:00
|
|
|
{
|
|
|
|
switch(state)
|
|
|
|
{
|
|
|
|
case PS_QUIET:
|
|
|
|
{
|
|
|
|
if (strstr(instr, "<rss ") != NULL)
|
|
|
|
{
|
|
|
|
if (strstr(instr, "xmlns:media") != NULL)
|
|
|
|
have_ns_media = 1;
|
|
|
|
if (strstr(instr, ">") != NULL)
|
|
|
|
state = PS_RSS_TAG_FOUND;
|
|
|
|
else
|
|
|
|
{
|
|
|
|
tbuf = strdup(instr);
|
|
|
|
state = PS_RSS_TAG_START;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case PS_RSS_TAG_START:
|
|
|
|
{
|
|
|
|
ttbuf = strdup(tbuf);
|
|
|
|
free(tbuf);
|
|
|
|
asprintf(&tbuf, "%s%s", ttbuf, instr);
|
|
|
|
free(ttbuf);
|
|
|
|
if (strstr(tbuf, ">") != NULL)
|
|
|
|
{
|
|
|
|
if (strstr(tbuf, "xmlns:media") != NULL)
|
|
|
|
have_ns_media = 1;
|
|
|
|
else
|
|
|
|
have_ns_media = 0;
|
|
|
|
state = PS_RSS_TAG_FOUND;
|
|
|
|
free(tbuf);
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case PS_RSS_TAG_FOUND:
|
|
|
|
{
|
|
|
|
if ((strstr(instr, "<generator>") != NULL))
|
|
|
|
{
|
|
|
|
if ((strstr(instr, "XSM") != NULL))
|
|
|
|
xsm_generator = 1;
|
|
|
|
else
|
|
|
|
xsm_generator = 0;
|
|
|
|
state = PS_GENERATOR_FOUND;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
|
|
|
|
}
|
|
|
|
case PS_GENERATOR_FOUND:
|
|
|
|
{
|
|
|
|
if (strstr(instr, "<item>") != NULL)
|
|
|
|
{
|
|
|
|
state = PS_ITEM_FOUND;
|
|
|
|
media = NULL;
|
|
|
|
img = NULL;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case PS_ITEM_FOUND:
|
|
|
|
{
|
|
|
|
if (xsm_generator)
|
|
|
|
{
|
|
|
|
if (strstr(instr, "<link>") != NULL)
|
|
|
|
{
|
|
|
|
char *p;
|
|
|
|
media = strchr(instr, '>');
|
|
|
|
media++;
|
|
|
|
p = strchr(media, '<');
|
|
|
|
*p = 0;
|
|
|
|
p = strrchr(media, '.');
|
|
|
|
if (!strcmp(p, ".edj"))
|
|
|
|
{
|
|
|
|
media = strdup(media);
|
|
|
|
state = PS_XSM_LINK_FOUND;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (have_ns_media)
|
|
|
|
{
|
|
|
|
if (strstr(instr, "media:content") != NULL)
|
|
|
|
{
|
|
|
|
char *p;
|
|
|
|
media = strchr(instr, '"');
|
|
|
|
media++;
|
|
|
|
p = strchr(media, '"');
|
|
|
|
*p = 0;
|
|
|
|
media = strdup(media);
|
|
|
|
state = PS_MEDIA_CONTENT_FOUND;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case PS_XSM_LINK_FOUND:
|
|
|
|
{
|
|
|
|
if (strstr(instr, "<enclosure") != NULL)
|
|
|
|
{
|
|
|
|
char *p;
|
|
|
|
img = strstr(instr, "url=");
|
|
|
|
img = 5;
|
|
|
|
p = strchr(img, '"');
|
|
|
|
*p = 0;
|
|
|
|
img = strdup(img);
|
|
|
|
state = PS_XSM_ENCLOSURE_FOUND;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case PS_MEDIA_THUMB_FOUND:
|
|
|
|
case PS_XSM_ENCLOSURE_FOUND:
|
|
|
|
{
|
|
|
|
if (strstr(instr, "</item>") != NULL)
|
|
|
|
{
|
|
|
|
ecore_list_append(cfdata->thumbs,img);
|
|
|
|
ecore_list_append(cfdata->medias, media);
|
|
|
|
state = PS_GENERATOR_FOUND;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case PS_MEDIA_CONTENT_FOUND:
|
|
|
|
{
|
|
|
|
if (strstr(instr, "media:thumbnail") != NULL)
|
|
|
|
{
|
|
|
|
char *p;
|
|
|
|
img = strchr(instr, '"');
|
|
|
|
img++;
|
|
|
|
p = strchr(img, '"');
|
|
|
|
*p = 0;
|
|
|
|
img = strdup(img);
|
|
|
|
state = PS_MEDIA_THUMB_FOUND;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
default:
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2008-03-04 22:03:49 -08:00
|
|
|
fclose(fh);
|
|
|
|
|
2008-04-11 16:03:08 -07:00
|
|
|
if (state == PS_GENERATOR_FOUND)
|
2008-03-12 13:40:24 -07:00
|
|
|
{
|
|
|
|
asprintf(&title, _("[%s] Parsing feed... DONE!"), cfdata->source);
|
|
|
|
e_dialog_title_set(import->dia, title);
|
|
|
|
e_fm2_path_set(cfdata->ofm, cfdata->tmpdir, "/");
|
|
|
|
_get_thumbs(import);
|
2008-04-11 16:03:08 -07:00
|
|
|
}
|
2008-03-04 22:03:49 -08:00
|
|
|
else
|
2008-03-12 13:40:24 -07:00
|
|
|
{
|
|
|
|
asprintf(&title, _("[%s] Parsing feed... FAILED!"), cfdata->source);
|
|
|
|
cfdata->busy = 0;
|
|
|
|
e_dialog_title_set(import->dia, title);
|
|
|
|
}
|
2008-03-04 22:03:49 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
2008-03-12 03:16:01 -07:00
|
|
|
_get_thumbs(void *data)
|
2008-03-04 22:03:49 -08:00
|
|
|
{
|
|
|
|
Import *import;
|
|
|
|
E_Config_Dialog_Data *cfdata;
|
2008-03-27 01:03:27 -07:00
|
|
|
char *src, *dest, *dtmp, *name, *ext;
|
2008-03-04 22:03:49 -08:00
|
|
|
|
|
|
|
import = data;
|
|
|
|
cfdata = import->cfdata;
|
|
|
|
cfdata->pending_downloads = 1;
|
|
|
|
asprintf(&dtmp, "%s/.tmp", cfdata->tmpdir);
|
|
|
|
ecore_file_mkdir(dtmp);
|
|
|
|
ecore_list_first_goto(cfdata->thumbs);
|
2008-03-27 01:03:27 -07:00
|
|
|
ecore_list_first_goto(cfdata->names);
|
2008-03-13 12:19:10 -07:00
|
|
|
while ((src = ecore_list_next(cfdata->thumbs)))
|
2008-03-12 13:40:24 -07:00
|
|
|
{
|
2008-03-27 01:03:27 -07:00
|
|
|
name = ecore_list_next(cfdata->names);
|
|
|
|
ext = strrchr(src, '.');
|
|
|
|
asprintf(&dest, "%s/%s%s", dtmp, name, ext);
|
2008-03-12 13:40:24 -07:00
|
|
|
ecore_file_download(src, dest, _get_thumb_complete, NULL, import);
|
|
|
|
}
|
2008-03-04 22:03:49 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
2008-03-12 03:16:01 -07:00
|
|
|
_dia_del_cb(void *obj)
|
2008-03-04 22:03:49 -08:00
|
|
|
{
|
|
|
|
E_Dialog *dia = obj;
|
|
|
|
|
2008-03-12 03:16:01 -07:00
|
|
|
e_int_config_wallpaper_web_del(dia);
|
2008-03-04 22:03:49 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
2008-03-12 03:16:01 -07:00
|
|
|
_file_double_click_cb(void *data, Evas_Object *obj, void *ev_info)
|
2008-03-04 22:03:49 -08:00
|
|
|
{
|
|
|
|
/*E_Config_Dialog_Data *cfdata;
|
|
|
|
Evas_List *sels;
|
|
|
|
E_Fm2_Icon_Info *icon_info;
|
|
|
|
|
|
|
|
cfdata = data;
|
|
|
|
sels = e_fm2_selected_list_get(cfdata->ofm);
|
|
|
|
if (!sels)
|
|
|
|
return;
|
|
|
|
icon_info = sels->data;
|
|
|
|
printf("[double click] %s\n", icon_info->file);*/
|
|
|
|
|
|
|
|
// Unused atm, interesting to simulate click on Ok button
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
2008-03-12 03:16:01 -07:00
|
|
|
_file_click_cb(void *data, Evas_Object *obj, void *ev_info)
|
2008-03-04 22:03:49 -08:00
|
|
|
{
|
|
|
|
Import *import;
|
|
|
|
E_Config_Dialog_Data *cfdata;
|
|
|
|
Evas_List *sels;
|
|
|
|
E_Fm2_Icon_Info *icon_info;
|
|
|
|
|
|
|
|
import = data;
|
|
|
|
cfdata = import->cfdata;
|
2008-03-12 03:16:01 -07:00
|
|
|
sels = e_fm2_selected_list_get(cfdata->ofm);
|
2008-03-12 13:40:24 -07:00
|
|
|
if (!sels) return;
|
2008-04-11 16:03:08 -07:00
|
|
|
if (cfdata->ready_for_media == 0) return;
|
|
|
|
|
2008-03-04 22:03:49 -08:00
|
|
|
icon_info = sels->data;
|
2008-03-27 01:03:27 -07:00
|
|
|
if (ecore_list_find(cfdata->names, ECORE_COMPARE_CB(_list_find), icon_info->file))
|
2008-04-11 16:03:08 -07:00
|
|
|
cfdata->media = ecore_list_index_goto(cfdata->medias, ecore_list_index(cfdata->thumbs));
|
2008-03-04 22:03:49 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
static int
|
2008-03-12 03:16:01 -07:00
|
|
|
_list_find(const char *str1, const char *str2)
|
2008-03-04 22:03:49 -08:00
|
|
|
{
|
2008-03-27 01:03:27 -07:00
|
|
|
return strcmp(str1, ecore_file_strip_ext(str2));
|
2008-03-04 22:03:49 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
2008-03-12 03:16:01 -07:00
|
|
|
_dia_close_cb(void *data, E_Dialog *dia)
|
2008-03-04 22:03:49 -08:00
|
|
|
{
|
2008-03-12 03:16:01 -07:00
|
|
|
e_int_config_wallpaper_web_del(dia);
|
2008-03-04 22:03:49 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
2008-03-12 03:16:01 -07:00
|
|
|
_dia_ok_cb(void *data, E_Dialog *dia)
|
2008-03-04 22:03:49 -08:00
|
|
|
{
|
|
|
|
Import *import;
|
|
|
|
E_Config_Dialog_Data *cfdata;
|
|
|
|
Evas_List *sels;
|
|
|
|
|
|
|
|
import = data;
|
|
|
|
cfdata = import->cfdata;
|
2008-03-12 03:16:01 -07:00
|
|
|
sels = e_fm2_selected_list_get(cfdata->ofm);
|
2008-03-04 22:03:49 -08:00
|
|
|
if (sels)
|
2008-03-12 14:13:21 -07:00
|
|
|
_download_media(import);
|
2008-03-12 13:40:24 -07:00
|
|
|
else
|
|
|
|
e_int_config_wallpaper_web_del(dia);
|
2008-03-04 22:03:49 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
2008-03-12 03:16:01 -07:00
|
|
|
_download_media(Import *import)
|
2008-03-04 22:03:49 -08:00
|
|
|
{
|
|
|
|
Import *i;
|
|
|
|
E_Config_Dialog_Data *cfdata;
|
|
|
|
const char *file;
|
2008-03-15 00:42:18 -07:00
|
|
|
char *buf, *title;
|
2008-03-04 22:03:49 -08:00
|
|
|
|
|
|
|
i = import;
|
|
|
|
cfdata = i->cfdata;
|
|
|
|
|
|
|
|
cfdata->pending_downloads = 1;
|
2008-04-11 16:03:08 -07:00
|
|
|
file = ecore_file_file_get(cfdata->media);
|
2008-03-12 14:13:21 -07:00
|
|
|
asprintf(&buf, "%s/.e/e/backgrounds/%s", e_user_homedir_get(), file);
|
2008-04-11 16:03:08 -07:00
|
|
|
asprintf(&title, _("[%s] Downloading of media file..."), cfdata->source);
|
2008-03-12 03:16:01 -07:00
|
|
|
e_dialog_title_set(i->dia, title);
|
2008-04-11 16:03:08 -07:00
|
|
|
ecore_file_download(cfdata->media, buf,
|
2008-03-04 22:03:49 -08:00
|
|
|
_download_media_complete_cb,
|
2008-03-15 00:42:18 -07:00
|
|
|
_download_media_progress_cb, i);
|
2008-03-04 22:03:49 -08:00
|
|
|
}
|
|
|
|
|
2008-03-15 00:42:18 -07:00
|
|
|
static void
|
2008-03-12 03:16:01 -07:00
|
|
|
_download_media_complete_cb(void *data, const char *file, int status)
|
2008-03-04 22:03:49 -08:00
|
|
|
{
|
|
|
|
Import *import;
|
|
|
|
char *dest;
|
|
|
|
|
|
|
|
import = data;
|
|
|
|
import->cfdata->pending_downloads = 0;
|
2008-03-15 00:42:18 -07:00
|
|
|
asprintf(&dest, "%s/.e/e/backgrounds/%s", e_user_homedir_get(),
|
2008-04-11 16:03:08 -07:00
|
|
|
ecore_file_file_get(import->cfdata->media));
|
|
|
|
if (!strstr(ecore_file_file_get(import->cfdata->media), "edj"))
|
|
|
|
{
|
|
|
|
e_config->wallpaper_import_last_dev = evas_stringshare_add(ecore_file_dir_get(dest));
|
|
|
|
e_config->wallpaper_import_last_path = evas_stringshare_add("/");
|
|
|
|
e_int_config_wallpaper_import(NULL);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
e_int_config_wallpaper_update(import->parent, dest);
|
2008-03-12 03:16:01 -07:00
|
|
|
e_int_config_wallpaper_web_del(import->dia);
|
2008-03-04 22:03:49 -08:00
|
|
|
}
|
|
|
|
|
2008-03-15 00:42:18 -07:00
|
|
|
static void
|
2008-03-12 03:16:01 -07:00
|
|
|
_get_thumb_complete(void *data, const char *file, int status)
|
2008-03-04 22:03:49 -08:00
|
|
|
{
|
|
|
|
Import *import;
|
|
|
|
E_Config_Dialog_Data *cfdata;
|
2008-03-15 00:42:18 -07:00
|
|
|
char *title, *dst;
|
2008-03-04 22:03:49 -08:00
|
|
|
static int got = 1;
|
|
|
|
|
|
|
|
import = data;
|
|
|
|
cfdata = import->cfdata;
|
2008-03-12 03:16:01 -07:00
|
|
|
if (got != ecore_list_count(cfdata->thumbs))
|
2008-03-12 13:40:24 -07:00
|
|
|
{
|
|
|
|
asprintf(&title, _("[%s] Download %d images of %d"),
|
|
|
|
cfdata->source, got, ecore_list_index(cfdata->thumbs));
|
|
|
|
e_dialog_title_set(import->dia, title);
|
2008-04-11 16:03:08 -07:00
|
|
|
cfdata->ready_for_media = 0;
|
2008-03-12 13:40:24 -07:00
|
|
|
asprintf(&dst, "%s/%s", cfdata->tmpdir, ecore_file_file_get(file));
|
|
|
|
ecore_file_mv(file, dst);
|
|
|
|
got++;
|
|
|
|
}
|
2008-03-04 22:03:49 -08:00
|
|
|
else
|
2008-03-12 13:40:24 -07:00
|
|
|
{
|
|
|
|
got = 1;
|
|
|
|
cfdata->busy = 0;
|
2008-04-11 16:03:08 -07:00
|
|
|
cfdata->ready_for_media = 1;
|
2008-03-12 13:40:24 -07:00
|
|
|
asprintf(&title, _("[%s] Choose an image from list"), cfdata->source);
|
|
|
|
e_dialog_title_set(import->dia, title);
|
|
|
|
e_dialog_button_disable_num_set(import->dia, 0, 0);
|
|
|
|
cfdata->pending_downloads = 0;
|
|
|
|
}
|
2008-03-04 22:03:49 -08:00
|
|
|
}
|
|
|
|
|
2008-03-15 00:42:18 -07:00
|
|
|
static int
|
2008-03-12 13:40:24 -07:00
|
|
|
_download_media_progress_cb(void *data, const char *file, long int dltotal,
|
|
|
|
long int dlnow, long int ultotal, long int ulnow)
|
2008-03-04 22:03:49 -08:00
|
|
|
{
|
|
|
|
Import *import;
|
|
|
|
double status;
|
|
|
|
char *title;
|
|
|
|
static long int last;
|
|
|
|
|
|
|
|
import = data;
|
|
|
|
|
2008-03-15 00:42:18 -07:00
|
|
|
if ((dlnow == 0) || (dltotal == 0)) return 0;
|
2008-03-04 22:03:49 -08:00
|
|
|
|
|
|
|
if (last)
|
2008-03-12 13:40:24 -07:00
|
|
|
{
|
|
|
|
status = (double) ((double) dlnow) / ((double) dltotal);
|
2008-04-11 16:03:08 -07:00
|
|
|
asprintf(&title, _("[%s] Downloading of media file... %d%% done"),
|
2008-03-12 13:40:24 -07:00
|
|
|
import->cfdata->source, (int) (status * 100.0));
|
|
|
|
e_dialog_title_set(import->dia, title);
|
|
|
|
}
|
2008-03-04 22:03:49 -08:00
|
|
|
|
|
|
|
last = dlnow;
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
2008-03-12 03:16:01 -07:00
|
|
|
_get_feed(char *url, void *data)
|
2008-03-04 22:03:49 -08:00
|
|
|
{
|
|
|
|
Import *import;
|
|
|
|
E_Config_Dialog_Data *cfdata;
|
|
|
|
extern int errno;
|
|
|
|
char *title;
|
|
|
|
|
|
|
|
import = data;
|
|
|
|
cfdata = import->cfdata;
|
|
|
|
|
2008-03-12 14:13:21 -07:00
|
|
|
cfdata->tmpdir = mkdtemp(strdup(TEMPLATE));
|
2008-03-04 22:03:49 -08:00
|
|
|
|
2008-03-12 03:16:01 -07:00
|
|
|
ecore_con_url_url_set(cfdata->ecu, url);
|
|
|
|
ecore_file_download_abort_all();
|
|
|
|
if (cfdata->hdata) ecore_event_handler_del(cfdata->hdata);
|
|
|
|
if (cfdata->hcomplete) ecore_event_handler_del(cfdata->hcomplete);
|
|
|
|
if (cfdata->feed) fclose(cfdata->feed);
|
2008-03-04 22:03:49 -08:00
|
|
|
|
2008-03-15 00:42:18 -07:00
|
|
|
cfdata->hdata =
|
|
|
|
ecore_event_handler_add(ECORE_CON_EVENT_URL_DATA, _feed_data, import);
|
|
|
|
cfdata->hcomplete =
|
|
|
|
ecore_event_handler_add(ECORE_CON_EVENT_URL_COMPLETE,
|
|
|
|
_feed_complete, import);
|
2008-03-04 22:03:49 -08:00
|
|
|
|
|
|
|
asprintf(&title, _("[%s] Getting feed..."), cfdata->source);
|
2008-03-12 03:16:01 -07:00
|
|
|
e_dialog_title_set(import->dia, title); //
|
|
|
|
cfdata->feed = fopen("/tmp/feed.xml", "w+");
|
|
|
|
ecore_con_url_send(cfdata->ecu, NULL, 0, NULL);
|
2008-03-04 22:03:49 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
2008-03-12 03:16:01 -07:00
|
|
|
_reset(void *data)
|
2008-03-04 22:03:49 -08:00
|
|
|
{
|
|
|
|
Import *import;
|
|
|
|
E_Config_Dialog_Data *cfdata;
|
|
|
|
|
|
|
|
import = data;
|
|
|
|
cfdata = import->cfdata;
|
|
|
|
|
|
|
|
// If there's pending downloads, stop it
|
|
|
|
if (cfdata->pending_downloads == 1)
|
2008-03-12 13:40:24 -07:00
|
|
|
{
|
|
|
|
ecore_file_download_abort_all();
|
|
|
|
//ecore_file_download_shutdown();
|
|
|
|
}
|
2008-03-04 22:03:49 -08:00
|
|
|
cfdata->pending_downloads = 0;
|
|
|
|
|
|
|
|
// Reset busy state
|
|
|
|
cfdata->busy = 0;
|
|
|
|
|
|
|
|
// Clean lists
|
2008-03-12 03:16:01 -07:00
|
|
|
if (!ecore_list_empty_is(cfdata->thumbs))
|
2008-03-12 13:40:24 -07:00
|
|
|
ecore_list_clear(cfdata->thumbs);
|
2008-03-27 01:03:27 -07:00
|
|
|
if (!ecore_list_empty_is(cfdata->names))
|
|
|
|
ecore_list_clear(cfdata->names);
|
2008-03-12 03:16:01 -07:00
|
|
|
if (!ecore_list_empty_is(cfdata->medias))
|
2008-03-12 13:40:24 -07:00
|
|
|
ecore_list_clear(cfdata->medias);
|
2008-03-04 22:03:49 -08:00
|
|
|
|
|
|
|
// Clean existing data
|
2008-03-15 00:42:18 -07:00
|
|
|
if (ecore_file_exists("/tmp/feed.xml")) ecore_file_unlink("/tmp/feed.xml");
|
2008-03-04 22:03:49 -08:00
|
|
|
|
|
|
|
// Remove temporary data
|
|
|
|
if (cfdata->tmpdir)
|
2008-03-12 13:40:24 -07:00
|
|
|
{
|
|
|
|
if (ecore_file_is_dir(cfdata->tmpdir))
|
|
|
|
{
|
|
|
|
ecore_file_recursive_rm(cfdata->tmpdir);
|
|
|
|
ecore_file_rmdir(cfdata->tmpdir);
|
|
|
|
}
|
|
|
|
}
|
2008-03-04 22:03:49 -08:00
|
|
|
|
|
|
|
// Disable OK button
|
2008-03-12 03:16:01 -07:00
|
|
|
e_dialog_button_disable_num_set(import->dia, 0, 1);
|
2008-03-04 22:03:49 -08:00
|
|
|
}
|
2008-04-11 16:03:08 -07:00
|
|
|
|
|
|
|
static void
|
|
|
|
_get_flickr_images(void *data, void *data2)
|
|
|
|
{
|
|
|
|
Import *import;
|
|
|
|
E_Config_Dialog_Data *cfdata;
|
|
|
|
char *querystring;
|
|
|
|
|
|
|
|
import = data;
|
|
|
|
cfdata = import->cfdata;
|
|
|
|
|
|
|
|
if ((cfdata->busy == 0) && (cfdata->pending_downloads == 0))
|
|
|
|
{
|
|
|
|
cfdata->source = "Flickr";
|
|
|
|
_reset(import);
|
|
|
|
cfdata->busy = 1;
|
|
|
|
asprintf(&querystring, FLICKR_QUERY, cfdata->flickr_query);
|
|
|
|
_get_feed(querystring, import);
|
|
|
|
}
|
|
|
|
}
|