diff --git a/TODO b/TODO index f89f2c9..c6036c0 100644 --- a/TODO +++ b/TODO @@ -34,7 +34,6 @@ science : http://www.eurekalert.org/rss.xml NEEDED (to do more or less in this order) ---------------------------------------------------- - - ? make a difference in item ui, depending on the gadon gadget inset/freee appearance ? - debug html chars parse with test.rss @@ -42,6 +41,10 @@ NEEDED (to do more or less in this order) - atom feeds + - save unread articles on shutdown + + - if the shelf is hidden, show it on news + - viewer: a way to set vcontent bg color ? - clean config_dialog_data (use sub structs ...) diff --git a/data/theme/images/icon_article_read.png b/data/theme/images/icon_article_read.png index b64ebe7..a9bb9b3 100644 Binary files a/data/theme/images/icon_article_read.png and b/data/theme/images/icon_article_read.png differ diff --git a/data/theme/images/icon_article_unread.png b/data/theme/images/icon_article_unread.png index a631205..21b8969 100644 Binary files a/data/theme/images/icon_article_unread.png and b/data/theme/images/icon_article_unread.png differ diff --git a/data/theme/images/icon_logo.png b/data/theme/images/icon_logo.png index a3cda13..71ceda3 100644 Binary files a/data/theme/images/icon_logo.png and b/data/theme/images/icon_logo.png differ diff --git a/src/module/e_mod_main.c b/src/module/e_mod_main.c index d253b5c..f4d54ab 100644 --- a/src/module/e_mod_main.c +++ b/src/module/e_mod_main.c @@ -43,7 +43,6 @@ e_modapi_init(E_Module *m) DMAIN(("Initialisation ...")); if (!news_config_init()) E_MOD_INIT_FAIL(m, _("Config init failed")); - if (!news_theme_init()) E_MOD_INIT_FAIL(m, _("Theme init failed")); if (!news_parse_init()) E_MOD_INIT_FAIL(m, _("Parser init failed")); if (!news_feed_init()) E_MOD_INIT_FAIL(m, _("Feeds init failed")); if (!news_viewer_init()) E_MOD_INIT_FAIL(m, _("Viewer init failed")); @@ -80,7 +79,6 @@ e_modapi_shutdown(E_Module *m) news_viewer_shutdown(); news_feed_shutdown(); news_parse_shutdown(); - news_theme_shutdown(); news_config_shutdown(); free(news); @@ -242,6 +240,6 @@ _gc_icon(Evas *evas) Evas_Object *o; o = edje_object_add(evas); - edje_object_file_set(o, news->theme, "icon"); + edje_object_file_set(o, news_theme_file_get(NULL), "icon"); return o; } diff --git a/src/module/e_mod_main.h b/src/module/e_mod_main.h index 3cd0c86..f7f4c0c 100644 --- a/src/module/e_mod_main.h +++ b/src/module/e_mod_main.h @@ -10,7 +10,6 @@ typedef struct _News News; struct _News { E_Module *module; - char *theme; News_Config *config; E_Config_Dialog *config_dialog; diff --git a/src/module/news_config_dialog.c b/src/module/news_config_dialog.c index 744f197..a0c86b8 100644 --- a/src/module/news_config_dialog.c +++ b/src/module/news_config_dialog.c @@ -95,7 +95,7 @@ news_config_dialog_show(void) cfd = e_config_dialog_new(e_container_current_get(e_manager_current_get()), _("News Main Configuration"), "E", DIALOG_CLASS, - news->theme, 0, v, NULL); + news_theme_file_get(NEWS_THEME_CAT_ICON), 0, v, NULL); return 1; } diff --git a/src/module/news_config_dialog_category.c b/src/module/news_config_dialog_category.c index c638cda..8b78194 100644 --- a/src/module/news_config_dialog_category.c +++ b/src/module/news_config_dialog_category.c @@ -49,7 +49,7 @@ news_config_dialog_category_show(News_Feed_Category *fcat) cfd = e_config_dialog_new(e_container_current_get(e_manager_current_get()), _("News Category Configuration"), "E", "_e_mod_news_config_dialog_category", - news->theme, 0, v, fcat); + news_theme_file_get(NEWS_THEME_CAT_ICON), 0, v, fcat); return 1; } diff --git a/src/module/news_config_dialog_feed.c b/src/module/news_config_dialog_feed.c index 8cec550..4163554 100644 --- a/src/module/news_config_dialog_feed.c +++ b/src/module/news_config_dialog_feed.c @@ -76,7 +76,7 @@ news_config_dialog_feed_show(News_Feed *feed) cfd = e_config_dialog_new(e_container_current_get(e_manager_current_get()), _("News Feed Configuration"), "E", "_e_mod_news_config_dialog_feed", - news->theme, 0, v, feed); + news_theme_file_get(NEWS_THEME_CAT_ICON), 0, v, feed); return 1; } diff --git a/src/module/news_config_dialog_feeds.c b/src/module/news_config_dialog_feeds.c index 0e5b4e0..2a8f655 100644 --- a/src/module/news_config_dialog_feeds.c +++ b/src/module/news_config_dialog_feeds.c @@ -81,7 +81,7 @@ news_config_dialog_feeds_show(void) cfd = e_config_dialog_new(e_container_current_get(e_manager_current_get()), _("News Feeds Configuration"), "E", DIALOG_CLASS, - news->theme, 0, v, NULL); + news_theme_file_get(NEWS_THEME_CAT_ICON), 0, v, NULL); if (news->config->feed.langs_notset) { diff --git a/src/module/news_config_dialog_item.c b/src/module/news_config_dialog_item.c index dc3193c..d19d618 100644 --- a/src/module/news_config_dialog_item.c +++ b/src/module/news_config_dialog_item.c @@ -39,7 +39,7 @@ news_config_dialog_item_show(News_Item *ni) cfd = e_config_dialog_new(e_container_current_get(e_manager_current_get()), _("News Gadget Configuration"), "E", DIALOG_CLASS, - news->theme, 0, v, ni); + news_theme_file_get(NEWS_THEME_CAT_ICON), 0, v, ni); return 1; } diff --git a/src/module/news_config_dialog_item_content.c b/src/module/news_config_dialog_item_content.c index 8d3c1b5..f380de3 100644 --- a/src/module/news_config_dialog_item_content.c +++ b/src/module/news_config_dialog_item_content.c @@ -52,7 +52,7 @@ news_config_dialog_item_content_show(News_Item *ni) cfd = e_config_dialog_new(e_container_current_get(e_manager_current_get()), _("News Gadget Content Configuration"), "E", DIALOG_CLASS, - news->theme, 0, v, ni); + news_theme_file_get(NEWS_THEME_CAT_ICON), 0, v, ni); if (news->config->feed.langs_notset) { diff --git a/src/module/news_config_dialog_langs.c b/src/module/news_config_dialog_langs.c index 5c0bcc3..019bad3 100644 --- a/src/module/news_config_dialog_langs.c +++ b/src/module/news_config_dialog_langs.c @@ -44,7 +44,7 @@ news_config_dialog_langs_show(void) cfd = e_config_dialog_new(e_container_current_get(e_manager_current_get()), _("News Feeds Language Configuration"), "E", DIALOG_CLASS, - news->theme, 0, v, NULL); + news_theme_file_get(NEWS_THEME_CAT_ICON), 0, v, NULL); return 1; } diff --git a/src/module/news_theme.c b/src/module/news_theme.c index b6bed85..ac7aadb 100644 --- a/src/module/news_theme.c +++ b/src/module/news_theme.c @@ -1,59 +1,39 @@ #include "News.h" +static char _theme[4096]; /* * Public functions */ -int -news_theme_init(void) +const char * +news_theme_file_get(char *category) { - const char *path; - char buf[4096]; - - path = e_theme_edje_file_get(NEWS_THEME_IN_E, NEWS_THEME_ITEM); - if (path && path[0]) - news->theme = NULL; - else - { - snprintf(buf, sizeof(buf), "%s/e-module-news.edj", e_module_dir_get(news->module)); - news->theme = strdup(buf); - } - - return 1; -} - -void -news_theme_shutdown(void) -{ - E_FREE(news->theme); + if (category && e_theme_category_find(category)) + return NULL; + snprintf(_theme, sizeof(_theme), "%s/e-module-news.edj", e_module_dir_get(news->module)); + return _theme; } void news_theme_edje_set(Evas_Object *obj, char *key) { - if (!news->theme) - e_theme_edje_object_set(obj, NEWS_THEME_IN_E, key); - else - edje_object_file_set(obj, news->theme, key); + if (!e_theme_edje_object_set(obj, NEWS_THEME_IN_E, key)) + edje_object_file_set(obj, news_theme_file_get(NULL), key); } void news_theme_icon_set(Evas_Object *ic, char *key) { - if (!news->theme) - e_util_edje_icon_set(ic, key); - else - e_icon_file_edje_set(ic, news->theme, key); + if (!e_util_edje_icon_set(ic, key)) + e_icon_file_edje_set(ic, news_theme_file_get(NULL), key); } void news_theme_menu_icon_set(E_Menu_Item *mi, char *key) { - if (!news->theme) - e_util_menu_item_edje_icon_set(mi, key); - else - e_menu_item_icon_edje_set(mi, news->theme, key); + if (!e_util_menu_item_edje_icon_set(mi, key)) + e_menu_item_icon_edje_set(mi, news_theme_file_get(NULL), key); } /* diff --git a/src/module/news_theme.h b/src/module/news_theme.h index 2251cf9..1e4a568 100644 --- a/src/module/news_theme.h +++ b/src/module/news_theme.h @@ -7,6 +7,8 @@ #define NEWS_THEME_IN_E "base/theme/modules/news" +#define NEWS_THEME_CAT_ICON "modules/news/icon" + #define NEWS_THEME_ITEM "modules/news/item" #define NEWS_THEME_FEED "modules/news/feed" #define NEWS_THEME_FEEDONE "modules/news/feedone" @@ -21,10 +23,7 @@ #define NEWS_THEME_ICON_UPDATE "modules/news/icon/update" #define NEWS_THEME_ICON_SETASREAD "modules/news/icon/setasread" - -int news_theme_init(void); -void news_theme_shutdown(void); - +const char * news_theme_file_get(char *category); void news_theme_edje_set(Evas_Object *obj, char *key); void news_theme_icon_set(Evas_Object *ic, char *key); void news_theme_menu_icon_set(E_Menu_Item *mi, char *key); diff --git a/src/module/news_viewer.c b/src/module/news_viewer.c index b20ae32..a95a5f7 100644 --- a/src/module/news_viewer.c +++ b/src/module/news_viewer.c @@ -200,20 +200,19 @@ news_viewer_refresh(News_Viewer *nv) /* select a feed */ if (toselect_pos != -1) - { - e_widget_ilist_selected_set(ilist, toselect_pos); - if ((nv->vfeeds.selected->doc && nv->vfeeds.selected->doc->ui_needrefresh) || - !nv->varticles.selected) - _dialog_cb_feed_selected(nv->vfeeds.selected); - } - else if (!nv->vfeeds.selected && pos) - { - NEWS_ITEM_FEEDS_FOREACH_BEG_LIST(feed_refs); - e_widget_ilist_selected_set(ilist, 0); - _dialog_cb_feed_selected(_feed); - break; - NEWS_ITEM_FEEDS_FOREACH_END(); - } + { + e_widget_ilist_selected_set(ilist, toselect_pos); + } + + /* ilist size */ + if (pos == -1) + e_widget_min_size_set(ilist, 100, 70); + else + { + int wmw; + e_widget_min_size_get(ilist, &wmw, NULL); + e_widget_min_size_set(ilist, wmw, 110); + } if (nv->vfeeds.list_own) { @@ -353,7 +352,7 @@ _dialog_geometry_update(News_Viewer *nv) nv->dialog.x = dia_x; nv->dialog.y = dia_y; e_dialog_show(nv->dialog.dia); - e_dialog_border_icon_set(nv->dialog.dia, news->theme); + e_dialog_border_icon_set(nv->dialog.dia, news_theme_file_get(NEWS_THEME_CAT_ICON)); } static int @@ -361,14 +360,15 @@ _dialog_content_create(News_Viewer *nv) { Evas_Textblock_Style *tb_style; Evas *evas; - Evas_Object *o, *ob, *of, *icon; + Evas_Object *o, *o2, *ob, *of, *icon; char buf[4096]; char buf2[1024] = ""; int w, h; evas = evas_object_evas_get(nv->dialog.dia->bg_object); - o = e_widget_table_add(evas, 0); + o = e_widget_list_add(evas, 0, 0); + o2 = e_widget_list_add(evas, 0, 1); nv->dialog.tab = o; of = e_widget_frametable_add(evas, _("Feeds in this gadget"), 0); @@ -397,24 +397,13 @@ _dialog_content_create(News_Viewer *nv) ob = e_widget_ilist_add(evas, 16, 16, NULL); e_widget_ilist_selector_set(ob, 1); - e_widget_min_size_set(ob, 100, 70); nv->vfeeds.ilist = ob; + news_viewer_refresh(nv); e_widget_frametable_object_append(of, ob, 0, 2, 2, 1, 1, 1, 1, 1); - e_widget_table_object_append(o, of, 0, 0, 1, 1, 1, 1, 1, 0); + e_widget_list_object_append(o2, of, 1, 0, 0.0); - of = e_widget_framelist_add(evas, _("Articles in selected feed"), 0); - nv->dialog.ftab_articles = of; - - ob = e_widget_ilist_add(evas, 16, 16, NULL); - e_widget_ilist_selector_set(ob, 1); - e_widget_min_size_set(ob, 250, 140); - nv->varticles.ilist = ob; - e_widget_framelist_object_append(of, ob); - - e_widget_table_object_append(o, of, 0, 1, 2, 1, 1, 1, 1, 1); - - ob = evas_object_textblock_add(evas_object_evas_get(nv->dialog.dia->bg_object)); + ob = evas_object_textblock_add(evas_object_evas_get(nv->dialog.dia->bg_object)); tb_style = evas_textblock_style_new(); if (news->config->viewer.vcontent.font_shadow) { @@ -445,8 +434,20 @@ _dialog_content_create(News_Viewer *nv) _vcontent_cb_mouse_down, nv); nv->vcontent.scrollframe = ob; - e_widget_table_object_append(o, ob, 1, 0, 1, 1, 1, 1, 1, 1); + e_widget_list_object_append(o2, ob, 1, 1, 0.5); + e_widget_list_object_append(o, o2, 1, 1, 0.5); + of = e_widget_framelist_add(evas, _("Articles in selected feed"), 0); + nv->dialog.ftab_articles = of; + + ob = e_widget_ilist_add(evas, 16, 16, NULL); + e_widget_ilist_selector_set(ob, 1); + e_widget_min_size_set(ob, 250, 140); + nv->varticles.ilist = ob; + e_widget_framelist_object_append(of, ob); + + e_widget_list_object_append(o, of, 1, 1, 1.0); + /* apply */ e_widget_min_size_get(o, &w, &h); e_dialog_content_set(nv->dialog.dia, o, w, h);