* [parse] better handle for html chars (not finished)
* [parse] speed optimisations * [dialog] feeds/feed: better ui * [dialog] feeds: fix moving feeds up and down * [dialog] item: fix po problem * [dialog/viewer] fix reselect item on ilist refresh SVN revision: 30050
This commit is contained in:
parent
7f90441a22
commit
293bae0b7e
20
TODO
20
TODO
|
@ -4,13 +4,31 @@ make install CFLAGS="-g -Wall -Werror -DDEBUG -DDEBUG_MAIN -DDEBUG_CONFIG -DDEBU
|
|||
BUGS
|
||||
----------------------------------------------------
|
||||
|
||||
- X - ? rarely, on viewer open, it crashes in news_viewer_refresh, on e_icon_file_set (in evas engine loader func)
|
||||
the evas object seems ok, the string passed to the loader too ...
|
||||
|
||||
----------------------------------------------------
|
||||
FEEDS TO ADD
|
||||
----------------------------------------------------
|
||||
|
||||
<skyghis> sinon pur les feeds humour : http://www.lelombrik.net/ http://www.bashfr.org/
|
||||
<skyghis> pour les feeds info tech: clubic pcimpact
|
||||
|
||||
mails juan
|
||||
mails ludger
|
||||
|
||||
----------------------------------------------------
|
||||
NEEDED (to do more or less in this order)
|
||||
----------------------------------------------------
|
||||
|
||||
- parse html chars (in _item_clean ?)
|
||||
- debug html chars parse with test.rss
|
||||
-> add support for & alone in evas_textblock
|
||||
|
||||
- ? merge news_parse_rss.c/h to news_parse.c/h ?
|
||||
- atom feeds
|
||||
|
||||
- viewer: a way to set vcontent bg color ?
|
||||
|
||||
- feed icons (new file ?)
|
||||
Evas_Object *news_feed_icon_add(News_Feed *feed)
|
||||
void news_feed_icon_del(Evas_Object *obj)
|
||||
|
|
|
@ -203,7 +203,7 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf
|
|||
|
||||
of = e_widget_frametable_add(evas, _("Feeds"), 0);
|
||||
|
||||
ob = e_widget_check_add(evas, _("Sort lists by name"), &(cfdata->feed.sort_name));
|
||||
ob = e_widget_check_add(evas, _("Sort lists by name (disable Move action)"), &(cfdata->feed.sort_name));
|
||||
e_widget_frametable_object_append(of, ob, 0, 1, 2, 1, 1, 1, 1, 0);
|
||||
|
||||
e_widget_list_object_append(o, of, 1, 1, 0.5);
|
||||
|
|
|
@ -11,8 +11,6 @@ struct _E_Config_Dialog_Data
|
|||
|
||||
Evas_Object *icon_sel;
|
||||
E_Dialog *icon_sel_dia;
|
||||
|
||||
int in_advanced;
|
||||
} gui;
|
||||
|
||||
char *name;
|
||||
|
@ -26,7 +24,7 @@ struct _E_Config_Dialog_Data
|
|||
char *url_feed;
|
||||
char *icon;
|
||||
int icon_ovrw;
|
||||
int urgent;
|
||||
int urgent;
|
||||
News_Feed_Category *category;
|
||||
|
||||
News_Feed *feed;
|
||||
|
@ -111,7 +109,6 @@ news_config_dialog_feed_refresh_categories(News_Feed *feed)
|
|||
if (!news->config_dialog_feed_new) return;
|
||||
cfdata = news->config_dialog_feed_new->cfdata;
|
||||
}
|
||||
if (cfdata->gui.in_advanced) return;
|
||||
|
||||
ilist = cfdata->gui.ilist_categories;
|
||||
e_widget_ilist_freeze(ilist);
|
||||
|
@ -144,6 +141,7 @@ news_config_dialog_feed_refresh_categories(News_Feed *feed)
|
|||
pos++;
|
||||
}
|
||||
e_widget_ilist_go(ilist);
|
||||
e_widget_ilist_thaw(ilist);
|
||||
|
||||
if (pos_to_select != -1)
|
||||
{
|
||||
|
@ -153,8 +151,6 @@ news_config_dialog_feed_refresh_categories(News_Feed *feed)
|
|||
|
||||
e_widget_min_size_get(ilist, &w, NULL);
|
||||
e_widget_min_size_set(ilist, w, 110);
|
||||
|
||||
e_widget_ilist_thaw(ilist);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -177,7 +173,6 @@ news_config_dialog_feed_refresh_langs(News_Feed *feed)
|
|||
if (!news->config_dialog_feed_new) return;
|
||||
cfdata = news->config_dialog_feed_new->cfdata;
|
||||
}
|
||||
if (cfdata->gui.in_advanced) return;
|
||||
|
||||
ilist = cfdata->gui.ilist_langs;
|
||||
e_widget_ilist_freeze(ilist);
|
||||
|
@ -199,6 +194,7 @@ news_config_dialog_feed_refresh_langs(News_Feed *feed)
|
|||
pos++;
|
||||
}
|
||||
e_widget_ilist_go(ilist);
|
||||
e_widget_ilist_thaw(ilist);
|
||||
|
||||
if (pos_to_select != -1)
|
||||
e_widget_ilist_selected_set(ilist, pos_to_select);
|
||||
|
@ -209,8 +205,6 @@ news_config_dialog_feed_refresh_langs(News_Feed *feed)
|
|||
|
||||
e_widget_min_size_get(ilist, &w, NULL);
|
||||
e_widget_min_size_set(ilist, w, 110);
|
||||
|
||||
e_widget_ilist_thaw(ilist);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -311,35 +305,11 @@ static Evas_Object *
|
|||
_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata)
|
||||
{
|
||||
Evas_Object *o;
|
||||
Evas_Object *of, *ob;
|
||||
|
||||
cfdata->gui.in_advanced = 0;
|
||||
|
||||
o = e_widget_table_add(evas, 0);
|
||||
|
||||
_common_create_widgets(cfd, evas, cfdata, o);
|
||||
|
||||
of = e_widget_framelist_add(evas, _("Category"), 0);
|
||||
|
||||
ob = e_widget_ilist_add(evas, 16, 16, NULL);
|
||||
e_widget_ilist_selector_set(ob, 1);
|
||||
cfdata->gui.ilist_categories = ob;
|
||||
news_config_dialog_feed_refresh_categories(cfdata->feed);
|
||||
e_widget_framelist_object_append(of, ob);
|
||||
|
||||
e_widget_table_object_append(o, of, 0, 1, 1, 1, 1, 1, 1, 1);
|
||||
|
||||
of = e_widget_framelist_add(evas, _("Language"), 0);
|
||||
|
||||
ob = e_widget_ilist_add(evas, 16, 16, NULL);
|
||||
e_widget_ilist_selector_set(ob, 1);
|
||||
e_widget_on_change_hook_set(ob, _cb_lang_change, cfdata);
|
||||
cfdata->gui.ilist_langs = ob;
|
||||
news_config_dialog_feed_refresh_langs(cfdata->feed);
|
||||
e_widget_framelist_object_append(of, ob);
|
||||
|
||||
e_widget_table_object_append(o, of, 1, 1, 1, 1, 1, 1, 1, 1);
|
||||
|
||||
e_dialog_resizable_set(cfd->dia, 1);
|
||||
|
||||
return o;
|
||||
|
@ -350,7 +320,7 @@ _common_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *c
|
|||
{
|
||||
Evas_Object *of, *ob;
|
||||
|
||||
of = e_widget_frametable_add(evas, _("Icon"), 0);
|
||||
of = e_widget_frametable_add(evas, _("Basic informations"), 0);
|
||||
|
||||
ob = e_widget_button_add(evas, "", NULL,
|
||||
_icon_select, cfdata, NULL);
|
||||
|
@ -358,34 +328,49 @@ _common_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *c
|
|||
if (cfdata->icon)
|
||||
_icon_select_changed(cfdata);
|
||||
e_widget_min_size_set(ob, 48, 48);
|
||||
e_widget_frametable_object_append(of, ob, 0, 0, 1, 1, 1, 0, 1, 0);
|
||||
e_widget_frametable_object_append(of, ob, 0, 0, 1, 1, 0, 0, 0, 0);
|
||||
|
||||
ob = e_widget_check_add(evas, _("Get from the server"), &(cfdata->icon_ovrw));
|
||||
//ob = e_widget_check_add(evas, _("Get from the server"), &(cfdata->icon_ovrw));
|
||||
//TODO: NOT IMPLEMENTED YET
|
||||
e_widget_check_checked_set(ob, 0);
|
||||
e_widget_disabled_set(ob, 1);
|
||||
e_widget_frametable_object_append(of, ob, 0, 1, 1, 1, 1, 1, 1, 1);
|
||||
|
||||
e_widget_table_object_append(o, of, 0, 0, 1, 1, 1, 1, 1, 0);
|
||||
|
||||
|
||||
of = e_widget_framelist_add(evas, _("Basic informations"), 0);
|
||||
//e_widget_check_checked_set(ob, 0);
|
||||
//e_widget_disabled_set(ob, 1);
|
||||
// e_widget_list_object_append(o2, of, 1, 1, 0.5);
|
||||
|
||||
ob = e_widget_label_add(evas, _("Name :"));
|
||||
e_widget_framelist_object_append(of, ob);
|
||||
e_widget_frametable_object_append(of, ob, 0, 1, 1, 1, 1, 0, 1, 0);
|
||||
ob = e_widget_entry_add(evas, &(cfdata->name));
|
||||
e_widget_framelist_object_append(of, ob);
|
||||
e_widget_frametable_object_append(of, ob, 0, 2, 1, 1, 1, 0, 1, 0);
|
||||
ob = e_widget_label_add(evas, _("Feed url :"));
|
||||
e_widget_framelist_object_append(of, ob);
|
||||
e_widget_frametable_object_append(of, ob, 0, 3, 1, 1, 1, 0, 1, 0);
|
||||
ob = e_widget_entry_add(evas, &(cfdata->url_feed));
|
||||
e_widget_framelist_object_append(of, ob);
|
||||
|
||||
e_widget_frametable_object_append(of, ob, 0, 4, 1, 1, 1, 0, 1, 0);
|
||||
ob = e_widget_check_add(evas, _("Mark as important feed"), &(cfdata->urgent));
|
||||
//TODO: NOT IMPLEMENTED YET
|
||||
e_widget_disabled_set(ob, 1);
|
||||
e_widget_frametable_object_append(of, ob, 0, 5, 1, 1, 1, 0, 1, 0);
|
||||
|
||||
e_widget_table_object_append(o, of, 0, 0, 2, 1, 1, 1, 1, 1);
|
||||
|
||||
of = e_widget_framelist_add(evas, _("Category"), 0);
|
||||
|
||||
ob = e_widget_ilist_add(evas, 16, 16, NULL);
|
||||
e_widget_ilist_selector_set(ob, 1);
|
||||
cfdata->gui.ilist_categories = ob;
|
||||
news_config_dialog_feed_refresh_categories(cfdata->feed);
|
||||
e_widget_framelist_object_append(of, ob);
|
||||
|
||||
e_widget_table_object_append(o, of, 1, 0, 1, 1, 1, 1, 1, 0);
|
||||
e_widget_table_object_append(o, of, 2, 0, 2, 1, 1, 1, 1, 1);
|
||||
|
||||
of = e_widget_framelist_add(evas, _("Language"), 0);
|
||||
|
||||
ob = e_widget_ilist_add(evas, 16, 16, NULL);
|
||||
e_widget_ilist_selector_set(ob, 1);
|
||||
e_widget_on_change_hook_set(ob, _cb_lang_change, cfdata);
|
||||
cfdata->gui.ilist_langs = ob;
|
||||
news_config_dialog_feed_refresh_langs(cfdata->feed);
|
||||
e_widget_framelist_object_append(of, ob);
|
||||
|
||||
e_widget_table_object_append(o, of, 4, 0, 2, 1, 1, 1, 1, 1);
|
||||
}
|
||||
|
||||
static Evas_Object *
|
||||
|
@ -394,8 +379,6 @@ _advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data
|
|||
Evas_Object *o;
|
||||
Evas_Object *of, *ob;
|
||||
|
||||
cfdata->gui.in_advanced = 1;
|
||||
|
||||
o = e_widget_table_add(evas, 0);
|
||||
|
||||
_common_create_widgets(cfd, evas, cfdata, o);
|
||||
|
@ -412,7 +395,7 @@ _advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data
|
|||
ob = e_widget_entry_add(evas, &(cfdata->url_home));
|
||||
e_widget_framelist_object_append(of, ob);
|
||||
|
||||
e_widget_table_object_append(o, of, 0, 2, 2, 1, 1, 1, 1, 1);
|
||||
e_widget_table_object_append(o, of, 0, 1, 3, 1, 1, 0, 1, 0);
|
||||
|
||||
|
||||
of = e_widget_framelist_add(evas, _("Server informations"), 0);
|
||||
|
@ -429,7 +412,9 @@ _advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data
|
|||
ob = e_widget_check_add(evas, _("Home url"), &(cfdata->url_home_ovrw));
|
||||
e_widget_framelist_object_append(of, ob);
|
||||
|
||||
e_widget_table_object_append(o, of, 0, 4, 2, 1, 1, 1, 1, 1);
|
||||
e_widget_table_object_append(o, of, 3, 1, 3, 1, 1, 0, 1, 0);
|
||||
|
||||
e_dialog_resizable_set(cfd->dia, 1);
|
||||
|
||||
return o;
|
||||
}
|
||||
|
|
|
@ -159,6 +159,7 @@ news_config_dialog_feeds_refresh_feeds(void)
|
|||
}
|
||||
}
|
||||
e_widget_ilist_go(ilist);
|
||||
e_widget_ilist_thaw(ilist);
|
||||
|
||||
/* select a feed */
|
||||
if (pos_to_select != -1)
|
||||
|
@ -176,8 +177,6 @@ news_config_dialog_feeds_refresh_feeds(void)
|
|||
e_widget_min_size_get(ilist, &wmw, &wmh);
|
||||
e_widget_min_size_set(ilist, wmw, 180);
|
||||
}
|
||||
|
||||
e_widget_ilist_thaw(ilist);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -225,11 +224,13 @@ news_config_dialog_feeds_refresh_categories(void)
|
|||
if (cfdata->selected_category == fc)
|
||||
pos_to_select = pos;
|
||||
}
|
||||
e_widget_ilist_go(ilist);
|
||||
e_widget_ilist_thaw(ilist);
|
||||
|
||||
if (pos_to_select != -1)
|
||||
{
|
||||
e_widget_ilist_selected_set(ilist, pos_to_select);
|
||||
_cb_category_list(cfdata->selected_category);
|
||||
//_cb_category_list(cfdata->selected_category);
|
||||
}
|
||||
|
||||
if (pos == -1)
|
||||
|
@ -240,9 +241,6 @@ news_config_dialog_feeds_refresh_categories(void)
|
|||
e_widget_min_size_get(ilist, &wmw, &wmh);
|
||||
e_widget_min_size_set(ilist, wmw, 120);
|
||||
}
|
||||
|
||||
e_widget_ilist_go(ilist);
|
||||
e_widget_ilist_thaw(ilist);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -300,29 +298,32 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf
|
|||
e_widget_ilist_selector_set(ob, 1);
|
||||
cfdata->ilist_categories = ob;
|
||||
news_config_dialog_feeds_refresh_categories();
|
||||
e_widget_frametable_object_append(of, ob, 1, 0, 3, 4, 1, 1, 1, 1);
|
||||
e_widget_frametable_object_append(of, ob, 0, 0, 6, 1, 1, 1, 1, 1);
|
||||
|
||||
if (!news->config->feed.sort_name)
|
||||
{
|
||||
ob = e_widget_button_add(evas, "", "widget/up_arrow", _cb_category_up, cfdata, NULL);
|
||||
e_widget_frametable_object_append(of, ob, 4, 1, 1, 1, 0, 0, 0, 0);
|
||||
ob = e_widget_button_add(evas, "", "widget/down_arrow", _cb_category_down, cfdata, NULL);
|
||||
e_widget_frametable_object_append(of, ob, 4, 2, 1, 1, 0, 0, 0, 0);
|
||||
ob = e_widget_button_add(evas, "Move", "widget/up_arrow", _cb_category_up, cfdata, NULL);
|
||||
e_widget_frametable_object_append(of, ob, 0, 1, 3, 1, 1, 0, 1, 0);
|
||||
ob = e_widget_button_add(evas, "Move", "widget/down_arrow", _cb_category_down, cfdata, NULL);
|
||||
e_widget_frametable_object_append(of, ob, 3, 1, 3, 1, 1, 0, 1, 0);
|
||||
}
|
||||
|
||||
ob = e_widget_button_add(evas, _("Add"), NULL, _cb_category_add, cfdata, NULL);
|
||||
e_widget_frametable_object_append(of, ob, 1, 4, 1, 1, 1, 0, 1, 0);
|
||||
e_widget_frametable_object_append(of, ob, 0, 2, 2, 1, 1, 0, 1, 0);
|
||||
ob = e_widget_button_add(evas, _("Delete"), NULL, _cb_category_del, cfdata, NULL);
|
||||
e_widget_disabled_set(ob, 1);
|
||||
cfdata->button_cat_del = ob;
|
||||
e_widget_frametable_object_append(of, ob, 2, 4, 1, 1, 1, 0, 1, 0);
|
||||
e_widget_frametable_object_append(of, ob, 2, 2, 2, 1, 1, 0, 1, 0);
|
||||
ob = e_widget_button_add(evas, _("Configure"), NULL, _cb_category_config, cfdata, NULL);
|
||||
e_widget_disabled_set(ob, 1);
|
||||
cfdata->button_cat_conf = ob;
|
||||
e_widget_frametable_object_append(of, ob, 3, 4, 1, 1, 1, 0, 1, 0);
|
||||
e_widget_frametable_object_append(of, ob, 4, 2, 2, 1, 1, 0, 1, 0);
|
||||
|
||||
e_widget_list_object_append(o2, of, 1, 1, 0.5);
|
||||
|
||||
ob = e_widget_label_add(evas, "");
|
||||
e_widget_list_object_append(o2, ob, 0, 0, 0.5);
|
||||
|
||||
o3 = e_widget_list_add(evas, 0, 1);
|
||||
|
||||
of = e_widget_framelist_add(evas, _("Languages"), 1);
|
||||
|
@ -358,34 +359,34 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf
|
|||
cfdata->textblock_feed_infos = ob;
|
||||
e_widget_min_size_get(ob, &wmw, &wmh);
|
||||
e_widget_min_size_set(ob, wmw, 40);
|
||||
e_widget_frametable_object_append(of, ob, 0, 0, 4, 1, 1, 1, 0, 0);
|
||||
e_widget_frametable_object_append(of, ob, 0, 0, 6, 1, 1, 1, 0, 0);
|
||||
|
||||
cfdata->selected_feed = NULL;
|
||||
ob = e_widget_ilist_add(evas, 16, 16, NULL);
|
||||
e_widget_ilist_selector_set(ob, 1);
|
||||
cfdata->ilist_feeds = ob;
|
||||
news_config_dialog_feeds_refresh_feeds();
|
||||
e_widget_frametable_object_append(of, ob, 0, 1, 3, 4, 1, 1, 1, 1);
|
||||
|
||||
ob = e_widget_button_add(evas, _("Add"), NULL, _cb_feed_add, cfdata, NULL);
|
||||
e_widget_frametable_object_append(of, ob, 0, 5, 1, 1, 1, 0, 1, 0);
|
||||
ob = e_widget_button_add(evas, _("Delete"), NULL, _cb_feed_del, cfdata, NULL);
|
||||
e_widget_disabled_set(ob, 1);
|
||||
cfdata->button_feed_del = ob;
|
||||
e_widget_frametable_object_append(of, ob, 1, 5, 1, 1, 1, 0, 1, 0);
|
||||
ob = e_widget_button_add(evas, _("Configure"), NULL, _cb_feed_config, cfdata, NULL);
|
||||
e_widget_disabled_set(ob, 1);
|
||||
cfdata->button_feed_conf = ob;
|
||||
e_widget_frametable_object_append(of, ob, 2, 5, 1, 1, 1, 0, 1, 0);
|
||||
e_widget_frametable_object_append(of, ob, 0, 1, 6, 1, 1, 1, 1, 1);
|
||||
|
||||
if (!news->config->feed.sort_name)
|
||||
{
|
||||
ob = e_widget_button_add(evas, "", "widget/up_arrow", _cb_feed_up, cfdata, NULL);
|
||||
e_widget_frametable_object_append(of, ob, 3, 2, 1, 1, 0, 0, 0, 0);
|
||||
ob = e_widget_button_add(evas, "", "widget/down_arrow", _cb_feed_down, cfdata, NULL);
|
||||
e_widget_frametable_object_append(of, ob, 3, 3, 1, 1, 0, 0, 0, 0);
|
||||
ob = e_widget_button_add(evas, "Move", "widget/up_arrow", _cb_feed_up, cfdata, NULL);
|
||||
e_widget_frametable_object_append(of, ob, 0, 2, 3, 1, 1, 0, 1, 0);
|
||||
ob = e_widget_button_add(evas, "Move", "widget/down_arrow", _cb_feed_down, cfdata, NULL);
|
||||
e_widget_frametable_object_append(of, ob, 3, 2, 3, 1, 1, 0, 1, 0);
|
||||
}
|
||||
|
||||
ob = e_widget_button_add(evas, _("Add"), NULL, _cb_feed_add, cfdata, NULL);
|
||||
e_widget_frametable_object_append(of, ob, 0, 3, 2, 1, 1, 0, 1, 0);
|
||||
ob = e_widget_button_add(evas, _("Delete"), NULL, _cb_feed_del, cfdata, NULL);
|
||||
e_widget_disabled_set(ob, 1);
|
||||
cfdata->button_feed_del = ob;
|
||||
e_widget_frametable_object_append(of, ob, 2, 3, 2, 1, 1, 0, 1, 0);
|
||||
ob = e_widget_button_add(evas, _("Configure"), NULL, _cb_feed_config, cfdata, NULL);
|
||||
e_widget_disabled_set(ob, 1);
|
||||
cfdata->button_feed_conf = ob;
|
||||
e_widget_frametable_object_append(of, ob, 4, 3, 2, 1, 1, 0, 1, 0);
|
||||
|
||||
e_widget_list_object_append(o, of, 1, 1, 0.5);
|
||||
|
||||
e_dialog_resizable_set(cfd->dia, 1);
|
||||
|
@ -595,26 +596,29 @@ _cb_category_list(void *data)
|
|||
if (cfdata->button_cat_conf)
|
||||
e_widget_disabled_set(cfdata->button_cat_conf, 0);
|
||||
|
||||
cfdata->selected_category = c;
|
||||
|
||||
/* select the first feed in this category */
|
||||
if (c->feeds_visible)
|
||||
if (cfdata->selected_category != c)
|
||||
{
|
||||
pos = 0;
|
||||
while ((label = e_widget_ilist_nth_label_get(cfdata->ilist_feeds, pos)))
|
||||
cfdata->selected_category = c;
|
||||
|
||||
/* select the first feed in this category */
|
||||
if (c->feeds_visible)
|
||||
{
|
||||
if (e_widget_ilist_nth_is_header(cfdata->ilist_feeds, pos))
|
||||
pos = 0;
|
||||
while ((label = e_widget_ilist_nth_label_get(cfdata->ilist_feeds, pos)))
|
||||
{
|
||||
if (!strcmp(label, c->name))
|
||||
if (e_widget_ilist_nth_is_header(cfdata->ilist_feeds, pos))
|
||||
{
|
||||
/* trick to call the callback in selected_set */
|
||||
e_widget_ilist_selector_set(cfdata->ilist_feeds, 0);
|
||||
e_widget_ilist_selected_set(cfdata->ilist_feeds, pos+1);
|
||||
e_widget_ilist_selector_set(cfdata->ilist_feeds, 1);
|
||||
break;
|
||||
if (!strcmp(label, c->name))
|
||||
{
|
||||
/* trick to call the callback in selected_set */
|
||||
e_widget_ilist_selector_set(cfdata->ilist_feeds, 0);
|
||||
e_widget_ilist_selected_set(cfdata->ilist_feeds, pos+1);
|
||||
e_widget_ilist_selector_set(cfdata->ilist_feeds, 1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
pos++;
|
||||
}
|
||||
pos++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -127,7 +127,7 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf
|
|||
|
||||
e_widget_list_object_append(o, of, 1, 1, 0.0);
|
||||
|
||||
ob = e_widget_label_add(evas, _(""));
|
||||
ob = e_widget_label_add(evas, "");
|
||||
e_widget_list_object_append(o, ob, 1, 1, 0.0);
|
||||
ob = e_widget_check_add(evas, _("Apply this to all News gadgets"), &(cfdata->apply_to_all));
|
||||
e_widget_list_object_append(o, ob, 1, 1, 0.0);
|
||||
|
|
|
@ -134,6 +134,7 @@ news_config_dialog_item_content_refresh_feeds(News_Item *ni)
|
|||
e_widget_ilist_multi_select(ilist, pos);
|
||||
}
|
||||
}
|
||||
e_widget_ilist_thaw(ilist);
|
||||
|
||||
e_widget_min_size_get(ilist, &iw, &ih);
|
||||
if (iw < 200) iw = 200;
|
||||
|
@ -141,7 +142,6 @@ news_config_dialog_item_content_refresh_feeds(News_Item *ni)
|
|||
|
||||
e_widget_ilist_go(ilist);
|
||||
_cb_feed_change(cfdata, NULL);
|
||||
e_widget_ilist_thaw(ilist);
|
||||
/* restore the callback */
|
||||
e_widget_on_change_hook_set(ilist, _cb_feed_change, cfdata);
|
||||
}
|
||||
|
@ -195,8 +195,8 @@ news_config_dialog_item_content_refresh_selected_feeds(News_Item *ni)
|
|||
e_widget_min_size_set(ilist, iw, 250);
|
||||
|
||||
e_widget_ilist_go(ilist);
|
||||
_cb_selected_feed_change(cfdata, NULL);
|
||||
e_widget_ilist_thaw(ilist);
|
||||
_cb_selected_feed_change(cfdata, NULL);
|
||||
/* restore the callback */
|
||||
e_widget_on_change_hook_set(ilist, _cb_selected_feed_change, cfdata);
|
||||
}
|
||||
|
|
|
@ -124,7 +124,7 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf
|
|||
e_widget_list_object_append(o, ob, 1, 1, 0.5);
|
||||
ob = e_widget_label_add(evas, _("Please select the languages that you are able to read"));
|
||||
e_widget_list_object_append(o, ob, 1, 1, 0.0);
|
||||
ob = e_widget_label_add(evas, _(""));
|
||||
ob = e_widget_label_add(evas, "");
|
||||
e_widget_list_object_append(o, ob, 1, 1, 0.0);
|
||||
}
|
||||
|
||||
|
|
|
@ -255,7 +255,7 @@ struct _News_Feed_Document
|
|||
News_Popup_Warn *popw;
|
||||
Evas_List *articles;
|
||||
int unread_count;
|
||||
int ui_needrefresh : 1;
|
||||
unsigned char ui_needrefresh : 1;
|
||||
|
||||
struct
|
||||
{
|
||||
|
@ -264,10 +264,10 @@ struct _News_Feed_Document
|
|||
Ecore_Event_Handler *handler_del;
|
||||
Ecore_Event_Handler *handler_data;
|
||||
|
||||
int waiting_reply : 1;
|
||||
int nb_tries;
|
||||
char *buffer;
|
||||
int buffer_size;
|
||||
unsigned char waiting_reply : 1;
|
||||
int nb_tries;
|
||||
char *buffer;
|
||||
int buffer_size;
|
||||
} server;
|
||||
|
||||
struct
|
||||
|
@ -280,7 +280,7 @@ struct _News_Feed_Document
|
|||
const char *charset;
|
||||
|
||||
News_Parse *parser;
|
||||
int got_infos : 1;
|
||||
unsigned char got_infos : 1;
|
||||
time_t last_time;
|
||||
News_Parse_Error error;
|
||||
} parse;
|
||||
|
@ -290,8 +290,8 @@ struct _News_Feed_Article
|
|||
{
|
||||
News_Feed_Document *doc;
|
||||
|
||||
int unread : 1;
|
||||
int reused : 1;
|
||||
unsigned char unread : 1;
|
||||
unsigned char reused : 1;
|
||||
|
||||
char *title;
|
||||
char *url;
|
||||
|
|
|
@ -261,7 +261,7 @@ _parse_type(News_Feed_Document *doc)
|
|||
|
||||
buf = doc->server.buffer;
|
||||
|
||||
p = strstr(buf, "<rss"); // FIXME: valgrind says "Invalid read of size 1" ... ??? maybe valgrind is lost
|
||||
p = strstr(buf, "<rss");
|
||||
if (p)
|
||||
{
|
||||
p = strstr(p, "version");
|
||||
|
|
|
@ -38,8 +38,8 @@ struct _News_Parse
|
|||
Evas_List *articles;
|
||||
Ecore_Idler *idler;
|
||||
News_Parse_Article *art;
|
||||
int error;
|
||||
int changes : 1;
|
||||
int error;
|
||||
unsigned char changes : 1;
|
||||
};
|
||||
|
||||
struct _News_Parse_Article
|
||||
|
|
|
@ -103,7 +103,7 @@ _idler(void *data)
|
|||
}
|
||||
|
||||
/* error returned */
|
||||
if (err) //FIXME: != NEWS_PARSE_ERROR_TYPE_NO
|
||||
if (err != NEWS_PARSE_ERROR_NO)
|
||||
{
|
||||
parser->error = err;
|
||||
parser->oc.action = NEWS_PARSE_OC_END;
|
||||
|
@ -246,7 +246,7 @@ _parse_article_init(News_Parse *parser)
|
|||
return NEWS_PARSE_ERROR_NO;
|
||||
}
|
||||
|
||||
p1 = strstr(pos, parser->doc->parse.meta_article); // FIXME: valgrind says "Invalid read of size 1" ... ??? maybe valgrind is lost
|
||||
p1 = strstr(pos, parser->doc->parse.meta_article);
|
||||
if (!p1)
|
||||
{
|
||||
if (evas_list_count(parser->articles))
|
||||
|
@ -506,11 +506,11 @@ _parse_item_clean(News_Parse *parser)
|
|||
size = strlen(buf) + 1;
|
||||
new_size = size;
|
||||
|
||||
//FIXME use macros for nicer code
|
||||
while (*p)
|
||||
{
|
||||
//DPARSE(("%d %d ------\n%30.30s", size, new_size, p));
|
||||
/* skip metas inside text */
|
||||
if (*p == '<')
|
||||
if (*p == '<') /* meta open, we are going to skip metas inside text */
|
||||
{
|
||||
char *p2;
|
||||
|
||||
|
@ -519,11 +519,11 @@ _parse_item_clean(News_Parse *parser)
|
|||
{
|
||||
if (!strncmp(p, "<![CDATA[", 9))
|
||||
{
|
||||
memmove(p, p + 9, strlen(p + 9) + 1);
|
||||
memmove(p, p + 9, (buf + new_size) - (p + 9));
|
||||
new_size -= 9;
|
||||
}
|
||||
else
|
||||
p++; /* next char */
|
||||
p++; /* next char */
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -545,7 +545,7 @@ _parse_item_clean(News_Parse *parser)
|
|||
while (*p2 && (*p2 != '>'));
|
||||
if (*p2)
|
||||
{
|
||||
memmove(p, p2 + 1, strlen(p2 + 1) + 1);
|
||||
memmove(p, p2 + 1, (buf + new_size) - (p2 + 1));
|
||||
new_size -= ((p2 + 1) - p);
|
||||
}
|
||||
else
|
||||
|
@ -555,21 +555,22 @@ _parse_item_clean(News_Parse *parser)
|
|||
}
|
||||
}
|
||||
}
|
||||
else if (*p == ']') /* skip end cfdata */
|
||||
else if (*p == ']') /* skip end cfdata */
|
||||
{
|
||||
if (!strncmp(p + 1, "]>", 2))
|
||||
{
|
||||
memmove(p, p + 3, strlen(p + 3) + 1);
|
||||
memmove(p, p + 3, (buf + new_size) - (p + 3));
|
||||
new_size -= 3;
|
||||
}
|
||||
else
|
||||
p++; /* next char */
|
||||
}
|
||||
else if (*p == 0xa) /* \n */
|
||||
else if (*p == 0xa) /* \n */
|
||||
{
|
||||
if (parser->oc.action == NEWS_PARSE_OC_ITEM_TITLE)
|
||||
if (parser->oc.action == NEWS_PARSE_OC_ITEM_TITLE_CLEAN)
|
||||
{
|
||||
memmove(p, p + 1, strlen(p + 1) + 1);
|
||||
/* remove \n when in title */
|
||||
memmove(p, p + 1, (buf + new_size) - (p + 1));
|
||||
new_size -= 1;
|
||||
}
|
||||
else
|
||||
|
@ -584,8 +585,8 @@ _parse_item_clean(News_Parse *parser)
|
|||
buf = realloc(buf, size);
|
||||
p = buf + diff;
|
||||
}
|
||||
DPARSE(("buf %p p %p new_size %d strlen(buf) %d strlen(p) %d\np :\n%30.30s\n", buf, p, new_size, (int)strlen(buf), (int)strlen(p), p ));
|
||||
memmove(p + 3, p, strlen(p) + 1);
|
||||
DPARSE(("buf %p p %p new_size %d strlen(buf) %d strlen(p) %d\np :\n%30.30s\n", buf, p, new_size, (int)strlen(buf), (int)strlen(p), p));
|
||||
memmove(p + 3, p, (buf + (new_size - 3)) - (p));
|
||||
*p = '<';
|
||||
*(p + 1) = 'b';
|
||||
*(p + 2) = 'r';
|
||||
|
@ -593,11 +594,12 @@ _parse_item_clean(News_Parse *parser)
|
|||
p = p + 4;
|
||||
}
|
||||
}
|
||||
else if (*p == 0x9) /* \t */
|
||||
else if (*p == 0x9) /* \t */
|
||||
{
|
||||
if (parser->oc.action == NEWS_PARSE_OC_ITEM_TITLE)
|
||||
if (parser->oc.action == NEWS_PARSE_OC_ITEM_TITLE_CLEAN)
|
||||
{
|
||||
memmove(p, p + 1, strlen(p + 1) + 1); //FIXME : strlen(p) ? EVERYWHERE ?
|
||||
/* remove \t when in title */
|
||||
memmove(p, p + 1, (buf + new_size) - (p + 1));
|
||||
new_size -= 1;
|
||||
}
|
||||
else
|
||||
|
@ -612,7 +614,7 @@ _parse_item_clean(News_Parse *parser)
|
|||
buf = realloc(buf, size);
|
||||
p = buf + diff;
|
||||
}
|
||||
memmove(p + 4, p, strlen(p) + 1);
|
||||
memmove(p + 4, p, (buf + (new_size - 4)) - (p));
|
||||
*p = '<';
|
||||
*(p + 1) = 't';
|
||||
*(p + 2) = 'a';
|
||||
|
@ -621,58 +623,95 @@ _parse_item_clean(News_Parse *parser)
|
|||
p = p + 5;
|
||||
}
|
||||
}
|
||||
else if (*p == 0xd) /* \??? (newline) to nothing */
|
||||
else if (*p == 0xd) /* \<???> (newline) to nothing */
|
||||
{
|
||||
memmove(p, p + 1, strlen(p + 1) + 1);
|
||||
memmove(p, p + 1, (buf + new_size) - (p + 1));
|
||||
new_size -= 1;
|
||||
}
|
||||
else if (*p == '&') /* html codes */
|
||||
else if (*p == '&') /* html codes */
|
||||
{
|
||||
/* < convertion to <
|
||||
* > is checked when skipping meta */
|
||||
if (!strncmp(p + 1, "lt;", 3))
|
||||
{
|
||||
memmove(p + 1, p + 4, strlen(p + 4) + 1);
|
||||
new_size -= 3;
|
||||
*p = '<';
|
||||
}
|
||||
else if (0) /* TODO: add html chars convertion */
|
||||
{
|
||||
char *p_inc;
|
||||
|
||||
}
|
||||
else if (*(p + 1) == '#') /* ascii hexadecimal char */
|
||||
p_inc = p + 1;
|
||||
if (*p_inc == '#') /* html numbers = ascii hexadecimal char */
|
||||
{
|
||||
char b[4];
|
||||
unsigned int i;
|
||||
int len;
|
||||
char *p2 = p + 2;
|
||||
|
||||
/* dec->hex */
|
||||
//TODO: FIX !
|
||||
while (*p2 != ';')
|
||||
while (*p2 && (*p2 != ';'))
|
||||
p2++;
|
||||
p2++;
|
||||
if (((p2 - p) == 3) || (p2 - p) > 6)
|
||||
p = p2; /* next char */
|
||||
else //TODO: STOPPED HERE
|
||||
len = p2 - p;
|
||||
if ((len <= 3) || (len > 7) || !sscanf(p + 2, "%d", &i))
|
||||
p = p_inc; /* next char (invalid html char number) */
|
||||
else if ((i == 8216) || (i == 8217)) /* html num ' */
|
||||
{
|
||||
if (!sscanf(p + 2, "%d", &i))
|
||||
p = p2 + 1; /* next char */
|
||||
else
|
||||
{
|
||||
snprintf(b, sizeof(b), "%c", i);
|
||||
len = strlen(b);
|
||||
memmove(p + 1, p2, strlen(p2) + 1);
|
||||
new_size -= (p2 - p - 1);
|
||||
memcpy(p, b, len);
|
||||
}
|
||||
memmove(p_inc, p + 7, (buf + new_size) - (p + 7));
|
||||
new_size -= 6;
|
||||
*p = '\'';
|
||||
p = p_inc; /* next char */
|
||||
}
|
||||
else if ((i == 171) || (i == 187)) /* html num " */
|
||||
{
|
||||
memmove(p_inc, p + 6, (buf + new_size) - (p + 6));
|
||||
new_size -= 5;
|
||||
*p = '"';
|
||||
p = p_inc; /* next char */
|
||||
}
|
||||
else /* html code convertion dec->hex */
|
||||
{
|
||||
snprintf(b, sizeof(b), "%c", i);
|
||||
memmove(p_inc, p2, (buf + new_size) - (p2));
|
||||
new_size -= (p2 - p - 1);
|
||||
*p = b[0];
|
||||
/* stay on the same char, could be the start of meta/html char */
|
||||
}
|
||||
}
|
||||
else if (!strncmp(p_inc, "lt;", 3)) /* html < */
|
||||
{
|
||||
memmove(p_inc, p + 4, (buf + new_size) - (p + 4));
|
||||
new_size -= 3;
|
||||
*p = '<';
|
||||
/* stay on the same char, could be start of a meta */
|
||||
} /* > is checked when skipping meta */
|
||||
else if ( !strncmp(p_inc, "amp;", 4) && /* html & */
|
||||
( (parser->oc.action != NEWS_PARSE_OC_ITEM_DESCRIPTION_CLEAN) ||
|
||||
(*(p_inc+4) == '#') ) ) /* but if we are going to write on a tb, we must not convert, except if the next char is an html num char (cause we need to parse it next) */
|
||||
//FIXME thats a quick fix, must fix evas_object_textblock so it supports & alone
|
||||
{
|
||||
memmove(p_inc, p + 5, (buf + new_size) - (p + 5));
|
||||
new_size -= 4;
|
||||
*p = '&';
|
||||
/* stay on the same char, could be start of an html char */
|
||||
}
|
||||
else if (!strncmp(p_inc, "quot;", 5)) /* html " */
|
||||
{
|
||||
memmove(p_inc, p + 6, (buf + new_size) - (p + 6));
|
||||
new_size -= 5;
|
||||
*p = '"';
|
||||
p = p_inc; /* next char */
|
||||
}
|
||||
else if (!strncmp(p_inc, "apos;", 5)) /* html ' */
|
||||
{
|
||||
memmove(p_inc, p + 6, (buf + new_size) - (p + 6));
|
||||
new_size -= 5;
|
||||
*p = '\'';
|
||||
p = p_inc; /* next char */
|
||||
}
|
||||
else if (!strncmp(p_inc, "nbsp;", 5)) /* html space */
|
||||
{
|
||||
memmove(p_inc, p + 6, (buf + new_size) - (p + 6));
|
||||
new_size -= 5;
|
||||
*p = ' ';
|
||||
p = p_inc; /* next char */
|
||||
}
|
||||
else
|
||||
p++; /* next char */
|
||||
p = p_inc; /* next char */
|
||||
}
|
||||
else
|
||||
p++; /* nothing interesting :) next char */
|
||||
p++; /* nothing interesting :) next char */
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -198,6 +198,7 @@ news_viewer_refresh(News_Viewer *nv)
|
|||
}
|
||||
NEWS_ITEM_FEEDS_FOREACH_END();
|
||||
e_widget_ilist_go(ilist);
|
||||
e_widget_ilist_thaw(ilist);
|
||||
|
||||
/* select a feed */
|
||||
if (toselect_pos != -1)
|
||||
|
@ -230,8 +231,6 @@ news_viewer_refresh(News_Viewer *nv)
|
|||
nv->vfeeds.list_own = feed_refs_own;
|
||||
|
||||
_vfeeds_buttons_state_refresh(nv);
|
||||
|
||||
e_widget_ilist_thaw(ilist);
|
||||
}
|
||||
|
||||
int
|
||||
|
@ -767,6 +766,7 @@ _varticles_refresh(News_Viewer *nv)
|
|||
}
|
||||
}
|
||||
e_widget_ilist_go(ilist);
|
||||
e_widget_ilist_thaw(ilist);
|
||||
|
||||
/* select a feed,
|
||||
of if no articles are selected
|
||||
|
@ -788,7 +788,6 @@ _varticles_refresh(News_Viewer *nv)
|
|||
nv->varticles.list = articles;
|
||||
nv->varticles.list_own = articles_own;
|
||||
|
||||
e_widget_ilist_thaw(ilist);
|
||||
feed->doc->ui_needrefresh = 0;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue