Enlightenment CVS committal

Author  : kiwi
Project : e_modules
Module  : news

Dir     : e_modules/news/src/module


Modified Files:
        news_config_dialog.c news_config_dialog_feed.c 
        news_config_dialog_feeds.c news_config_dialog_item.c 
        news_config_dialog_item_content.c news_config_dialog_langs.c 
        news_feed.h news_parse.c news_parse_private.h news_parse_rss.c 
        news_viewer.c 


Log Message:
 * [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

===================================================================
RCS file: /cvs/e/e_modules/news/src/module/news_config_dialog.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- news_config_dialog.c        16 May 2007 12:06:03 -0000      1.1
+++ news_config_dialog.c        21 May 2007 12:30:41 -0000      1.2
@@ -203,7 +203,7 @@
 
    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);
===================================================================
RCS file: /cvs/e/e_modules/news/src/module/news_config_dialog_feed.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -3 -r1.2 -r1.3
--- news_config_dialog_feed.c   17 May 2007 14:21:29 -0000      1.2
+++ news_config_dialog_feed.c   21 May 2007 12:30:41 -0000      1.3
@@ -11,8 +11,6 @@
 
       Evas_Object *icon_sel;
       E_Dialog    *icon_sel_dia;
-
-      int in_advanced;
    } gui;
 
    char *name;
@@ -26,7 +24,7 @@
    char *url_feed;
    char *icon;
    int   icon_ovrw;
-   int urgent;
+   int   urgent;
    News_Feed_Category *category;
 
    News_Feed *feed;
@@ -111,7 +109,6 @@
         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 @@
        pos++;
      }
    e_widget_ilist_go(ilist);
+   e_widget_ilist_thaw(ilist);
 
    if (pos_to_select != -1)
      {
@@ -153,8 +151,6 @@
 
    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 @@
         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 @@
         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 @@
 
    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 @@
 _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 @@
 {
    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 @@
    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, 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, 1, 0, 1, 1, 1, 1, 1, 0);
+   e_widget_table_object_append(o, of, 4, 0, 2, 1, 1, 1, 1, 1);
 }
 
 static Evas_Object *
@@ -394,8 +379,6 @@
    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 @@
    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 @@
    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;
 }
===================================================================
RCS file: /cvs/e/e_modules/news/src/module/news_config_dialog_feeds.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- news_config_dialog_feeds.c  16 May 2007 12:06:03 -0000      1.1
+++ news_config_dialog_feeds.c  21 May 2007 12:30:41 -0000      1.2
@@ -159,6 +159,7 @@
           }
      }
    e_widget_ilist_go(ilist);
+   e_widget_ilist_thaw(ilist);
 
    /* select a feed */
    if (pos_to_select != -1)
@@ -176,8 +177,6 @@
         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 @@
        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 @@
         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 @@
    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,33 +359,33 @@
    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);
+   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, "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, 5, 1, 1, 1, 0, 1, 0);
+   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, 1, 5, 1, 1, 1, 0, 1, 0);
+   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, 2, 5, 1, 1, 1, 0, 1, 0);
-
-   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);
-     }
+   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);
 
@@ -595,26 +596,29 @@
    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++;
           }
      }
 }
===================================================================
RCS file: /cvs/e/e_modules/news/src/module/news_config_dialog_item.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- news_config_dialog_item.c   16 May 2007 12:06:03 -0000      1.1
+++ news_config_dialog_item.c   21 May 2007 12:30:41 -0000      1.2
@@ -127,7 +127,7 @@
 
    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);
===================================================================
RCS file: /cvs/e/e_modules/news/src/module/news_config_dialog_item_content.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- news_config_dialog_item_content.c   16 May 2007 12:06:03 -0000      1.1
+++ news_config_dialog_item_content.c   21 May 2007 12:30:41 -0000      1.2
@@ -134,6 +134,7 @@
                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 @@
    
    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 @@
    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);
 }
===================================================================
RCS file: /cvs/e/e_modules/news/src/module/news_config_dialog_langs.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -3 -r1.2 -r1.3
--- news_config_dialog_langs.c  17 May 2007 14:21:29 -0000      1.2
+++ news_config_dialog_langs.c  21 May 2007 12:30:41 -0000      1.3
@@ -124,7 +124,7 @@
         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);
      }
 
===================================================================
RCS file: /cvs/e/e_modules/news/src/module/news_feed.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -3 -r1.2 -r1.3
--- news_feed.h 17 May 2007 14:21:29 -0000      1.2
+++ news_feed.h 21 May 2007 12:30:41 -0000      1.3
@@ -255,7 +255,7 @@
    News_Popup_Warn *popw;
    Evas_List       *articles;
    int              unread_count;
-   int              ui_needrefresh : 1;
+   unsigned char    ui_needrefresh : 1;
 
    struct
    {
@@ -264,10 +264,10 @@
       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 @@
       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 @@
 {
    News_Feed_Document  *doc;
 
-   int          unread : 1;
-   int          reused : 1;
+   unsigned char unread : 1;
+   unsigned char reused : 1;
 
    char        *title;
    char        *url;
===================================================================
RCS file: /cvs/e/e_modules/news/src/module/news_parse.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -3 -r1.2 -r1.3
--- news_parse.c        17 May 2007 14:21:29 -0000      1.2
+++ news_parse.c        21 May 2007 12:30:41 -0000      1.3
@@ -261,7 +261,7 @@
 
    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");
===================================================================
RCS file: /cvs/e/e_modules/news/src/module/news_parse_private.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- news_parse_private.h        16 May 2007 12:06:03 -0000      1.1
+++ news_parse_private.h        21 May 2007 12:30:41 -0000      1.2
@@ -38,8 +38,8 @@
    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
===================================================================
RCS file: /cvs/e/e_modules/news/src/module/news_parse_rss.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -3 -r1.2 -r1.3
--- news_parse_rss.c    17 May 2007 14:21:29 -0000      1.2
+++ news_parse_rss.c    21 May 2007 12:30:41 -0000      1.3
@@ -103,7 +103,7 @@
      }
 
    /* 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 @@
         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 @@
    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 @@
                {
                   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 @@
                   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 @@
                     }
                }
           }
-        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 @@
                        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 @@
                   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 @@
                        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 @@
                   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 */
           {
-             /* &lt convertion to <
-              * &gt 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 */
-               {
-                  
-               }
-             else if (*(p + 1) == '#') /* ascii hexadecimal char */
+             char *p_inc;
+
+             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 */
+               } /* &gt 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 */
      }
 
 
===================================================================
RCS file: /cvs/e/e_modules/news/src/module/news_viewer.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -3 -r1.2 -r1.3
--- news_viewer.c       17 May 2007 14:21:29 -0000      1.2
+++ news_viewer.c       21 May 2007 12:30:41 -0000      1.3
@@ -198,6 +198,7 @@
    }
    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 @@
    nv->vfeeds.list_own = feed_refs_own;
 
    _vfeeds_buttons_state_refresh(nv);
-
-   e_widget_ilist_thaw(ilist);
 }
 
 int
@@ -767,6 +766,7 @@
           }
      }
    e_widget_ilist_go(ilist);
+   e_widget_ilist_thaw(ilist);
 
    /* select a feed,
       of if no articles are selected
@@ -788,7 +788,6 @@
    nv->varticles.list = articles;
    nv->varticles.list_own = articles_own;
 
-   e_widget_ilist_thaw(ilist);
    feed->doc->ui_needrefresh = 0;
 }
 



-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to