[evolution-rss] move prototypes to header files part1



commit 8eeee66a8baf0f15605c9a6e8c14beee63ad1578
Author: Lucian Langa <lucilanga gnome org>
Date:   Tue May 5 19:16:02 2009 +0300

    move prototypes to header files part1
---
 ChangeLog                |   12 +++
 src/Makefile.am          |    4 +-
 src/Makefile.in          |    9 ++-
 src/fetch.c              |    4 +-
 src/misc.c               |   40 +++++++--
 src/network-soup.c       |   78 ++++++++++++++++-
 src/parser.c             |    2 +-
 src/parser.h             |    2 +-
 src/rss-config-factory.c |   36 +++++++-
 src/rss.c                |  220 ++++++++++++----------------------------------
 src/rss.h                |   18 ++---
 11 files changed, 230 insertions(+), 195 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index b7e49aa..1598a8b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2009-05-05  Lucian Langa  <lucilanga gnome org>
+
+	* src/Makefile.am: add misc.c and rss-config-factory.c to build list
+	* src/fetch.c (fetch_blocking), (fetch_unblocking): headers cleanup
+	* src/misc.c (check_if_match), (gen_crc):
+	* src/rss-config-factory.c (start_check_cb): move function here
+	* src/rss.c (browser_write), (browsercb),
+	(create_user_pass_dialog), (web_auth_dialog), (mycall),
+	(webkit_click), (gecko_click), (org_gnome_rss_browser),
+	(org_gnome_cooly_format_rss), (finish_website), (finish_comments),
+	(fetch_comments): fix wrongly defined headers
+
 2009-05-03  Lucian Langa  <lucilanga gnome org>
 
 	* src/gecko-utils.cpp:
diff --git a/src/Makefile.am b/src/Makefile.am
index 4f246c4..6038b27 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -69,7 +69,9 @@ plugin_DATA = org-gnome-evolution-rss.eplug \
 plugin_LTLIBRARIES = liborg-gnome-evolution-rss.la
 
 
-SOURCES = rss.c
+SOURCES = 	rss.c			\
+		rss-config-factory.c	\
+	  	misc.c
 if HAVE_GECKO
 SOURCES+= gecko-utils.cpp
 endif
diff --git a/src/Makefile.in b/src/Makefile.in
index 279471d..ba8d8e1 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -63,9 +63,10 @@ am__installdirs = "$(DESTDIR)$(plugindir)" "$(DESTDIR)$(bindir)" \
 pluginLTLIBRARIES_INSTALL = $(INSTALL)
 LTLIBRARIES = $(plugin_LTLIBRARIES)
 liborg_gnome_evolution_rss_la_LIBADD =
-am__liborg_gnome_evolution_rss_la_SOURCES_DIST = rss.c gecko-utils.cpp
+am__liborg_gnome_evolution_rss_la_SOURCES_DIST = rss.c \
+	rss-config-factory.c misc.c gecko-utils.cpp
 @HAVE_GECKO_TRUE am__objects_1 = gecko-utils.lo
-am__objects_2 = rss.lo $(am__objects_1)
+am__objects_2 = rss.lo rss-config-factory.lo misc.lo $(am__objects_1)
 am_liborg_gnome_evolution_rss_la_OBJECTS = $(am__objects_2)
 liborg_gnome_evolution_rss_la_OBJECTS =  \
 	$(am_liborg_gnome_evolution_rss_la_OBJECTS)
@@ -346,7 +347,7 @@ plugin_DATA = org-gnome-evolution-rss.eplug \
 	org-gnome-evolution-rss.xml
 
 plugin_LTLIBRARIES = liborg-gnome-evolution-rss.la
-SOURCES = rss.c $(am__append_2)
+SOURCES = rss.c rss-config-factory.c misc.c $(am__append_2)
 liborg_gnome_evolution_rss_la_SOURCES = $(SOURCES)
 liborg_gnome_evolution_rss_la_LDFLAGS = -module -avoid-version $(WEBKIT_LIBS) $(GECKO_LIBS) $(LIBSOUP_LIBS) $(NO_UNDEFINED_LIBS) $(NO_UNDEFINED)
 #$(GECKO_RPATH)
@@ -500,6 +501,8 @@ distclean-compile:
 
 @AMDEP_TRUE@@am__include@ @am__quote  /$(DEPDIR)/evolution-import-rss Po am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote  /$(DEPDIR)/gecko-utils Plo am__quote@
+ AMDEP_TRUE@@am__include@ @am__quote  /$(DEPDIR)/misc Plo am__quote@
+ AMDEP_TRUE@@am__include@ @am__quote  /$(DEPDIR)/rss-config-factory Plo am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote  /$(DEPDIR)/rss Plo am__quote@
 
 .c.o:
diff --git a/src/fetch.c b/src/fetch.c
index 11cc2db..12b4a11 100644
--- a/src/fetch.c
+++ b/src/fetch.c
@@ -23,7 +23,7 @@
 #include "file-gio.h"
 
 GString*
-fetch_blocking(const char *url, GSList *headers, GString *post,
+fetch_blocking(gchar *url, GSList *headers, GString *post,
                   NetStatusCallback cb, gpointer data,
                   GError **err) {
 
@@ -61,7 +61,7 @@ error:
 //FIXME gio callback hardcoded 
 
 gboolean
-fetch_unblocking(const char *url, NetStatusCallback cb, gpointer data, 
+fetch_unblocking(gchar *url, NetStatusCallback cb, gpointer data, 
 				gpointer cb2, gpointer cbdata2,
 				guint track,
 				GError **err)
diff --git a/src/misc.c b/src/misc.c
index 266737b..2cca23e 100644
--- a/src/misc.c
+++ b/src/misc.c
@@ -1,5 +1,5 @@
 /*  Evoution RSS Reader Plugin
- *  Copyright (C) 2007  Lucian Langa <cooly gnome eu org> 
+ *  Copyright (C) 2007-2009  Lucian Langa <cooly gnome eu org> 
  *  
  *  This program is free software; you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License as published by
@@ -19,7 +19,15 @@
 #ifndef __MISC_C_
 #define __MISC_C_
 
+#define d(x)
+
+#include <stdint.h>
+#include <string.h>
+#include <glib.h>
 #include <libedataserver/md5-utils.h>
+#include <camel/camel-mime-utils.h>
+
+#include "misc.h"
 
 int
 getNumericConfValue(gpointer a)
@@ -46,6 +54,20 @@ free_hash(gpointer key, gpointer value, gpointer user_data)
  //	xmlFreeDoc(key);
 }
 
+gboolean
+check_if_match (gpointer key, gpointer value, gpointer user_data)
+{
+        char *sf_href = (char *)value;
+        char *int_uri = (char *)user_data;
+
+        d(g_print("checking hay:%s for neddle:%s\n", sf_href, int_uri));
+
+        if (!strcmp (sf_href, int_uri))
+                return TRUE; /* Quit calling the callback */
+
+        return FALSE; /* Continue calling the callback till end of table */
+}
+
 gchar *
 strextr(gchar *text, gchar *substr)
 {
@@ -193,7 +215,7 @@ strplchr(gchar *source)
  	return string;
 } 
 
-static gchar *
+gchar *
 markup_decode (gchar *str)
 {
         char *iterator, *temp;
@@ -248,7 +270,7 @@ markup_decode (gchar *str)
         return temp;
 }
 
-uint32_t
+gchar *
 gen_crc(const char *msg)
 {
          register unsigned long crc, poly;
@@ -272,17 +294,17 @@ gen_crc(const char *msg)
          crc = 0xFFFFFFFF;
          for (i = 0; i < strlen(msg); i++)
                  crc = ((crc >> 8) & 0x00FFFFFF) ^ crc_tab[(crc ^ *msg++) & 0xFF];
-    return (crc ^ 0xFFFFFFFF);
+    return g_strdup_printf("%x", (crc ^ 0xFFFFFFFF));
 }
  
-static char *
+gchar *
 gen_md5(gchar *buffer)
 {
-         unsigned char md5sum[16], res[17], *f;
-         int i;
-         const char tohex[16] = "0123456789abcdef";
+        unsigned char md5sum[16], res[17], *f;
+        int i;
+        const char tohex[16] = "0123456789abcdef";
  
-         md5_get_digest (buffer, strlen(buffer), md5sum);
+        md5_get_digest (buffer, strlen(buffer), md5sum);
   	for (i=0, f = res; i<16;i++)
  	{
                 unsigned int c = md5sum[i];
diff --git a/src/network-soup.c b/src/network-soup.c
index c8254cd..67daa1d 100644
--- a/src/network-soup.c
+++ b/src/network-soup.c
@@ -24,7 +24,7 @@
 
 #include "network.h"
 #include "rss.h"
-#include "misc.c"
+#include "misc.h"
 
 #define USE_PROXY FALSE
 
@@ -456,7 +456,7 @@ out:
 }
 
 gboolean
-net_get_unblocking(const char *url, 
+net_get_unblocking(gchar *url, 
 				NetStatusCallback cb, gpointer data, 
 				gpointer cb2, gpointer cbdata2,
 				guint track,
@@ -554,7 +554,7 @@ soup_message_add_header_handler (msg,
 }
 
 GString*
-net_post_blocking(const char *url, GSList *headers, GString *post,
+net_post_blocking(gchar *url, GSList *headers, GString *post,
                   NetStatusCallback cb, gpointer data,
                   GError **err) {
 #if LIBSOUP_VERSION < 2003000
@@ -642,6 +642,78 @@ out:
 	return response;
 }
 
+gboolean
+cancel_soup_sess(gpointer key, gpointer value, gpointer user_data)
+{
+#if LIBSOUP_VERSION < 2003000
+        SoupUri *uri =  soup_message_get_uri((SoupMessage *)value);
+#else
+        SoupURI *uri =  soup_message_get_uri((SoupMessage *)value);
+#endif
+        d(g_print("cancel url:%s%s?%s\n", uri->host, uri->path, uri->query?uri->query:""));
+
+        if (SOUP_IS_SESSION(key))
+        {
+/*              if (SOUP_IS_MESSAGE(value))
+                {
+#if LIBSOUP_VERSION < 2003000
+                        soup_message_set_status(value,  SOUP_STATUS_CANCELLED);
+                        soup_session_cancel_message(key, value);
+#else
+                        soup_session_cancel_message(key, value, SOUP_STATUS_CANCELLED);
+#endif
+                }*/
+                soup_session_abort(key);
+                g_hash_table_find(rf->key_session,
+                        remove_if_match,
+                        user_data);
+        }
+        return TRUE;
+}
+
+void
+remove_weak(gpointer key, gpointer value, gpointer user_data)
+{
+        g_object_weak_unref(value, unblock_free, key);
+}
+
+void
+abort_all_soup(void)
+{
+        //abort all session
+        rf->cancel = 1;
+        rf->cancel_all = 1;
+        if (rf->abort_session)
+        {
+                g_hash_table_foreach(rf->abort_session, remove_weak, NULL);
+                g_hash_table_foreach_remove(rf->abort_session, cancel_soup_sess, NULL);
+//              g_hash_table_foreach(rf->abort_session, cancel_soup_sess, NULL);
+                g_hash_table_destroy(rf->session);
+                rf->session = g_hash_table_new(g_direct_hash, g_direct_equal);
+        }
+        if (rf->progress_bar)
+        {
+                gtk_progress_bar_set_fraction((GtkProgressBar *)rf->progress_bar, 1);
+                rf->progress_bar = NULL;        //there's no need to update bar once we canceled feeds
+        }
+        if (rf->b_session)
+        {
+/*              if (SOUP_IS_MESSAGE(rf->b_msg_session))
+                {
+#if LIBSOUP_VERSION < 2003000
+                        soup_message_set_status(rf->b_msg_session, SOUP_STATUS_CANCELLED);
+                        soup_session_cancel_message(rf->b_session, rf->b_msg_session);
+#else
+                        soup_session_cancel_message(rf->b_session, rf->b_msg_session, SOUP_STATUS_CANCELLED);
+#endif
+                }*/
+                soup_session_abort(rf->b_session);
+                rf->b_session = NULL;
+                rf->b_msg_session = NULL;
+        }
+        rf->cancel_all = 0;
+}
+
 void
 rss_soup_init(void)
 {
diff --git a/src/parser.c b/src/parser.c
index db5d8c4..d4f929a 100644
--- a/src/parser.c
+++ b/src/parser.c
@@ -365,7 +365,7 @@ g_print("parser error 3_4 -> return NULL!!!\n");
 
 /* returns node disregarding type
  */
-static char *
+char *
 layer_find (xmlNodePtr node, 
 	    char *match, 
 	    char *fail)
diff --git a/src/parser.h b/src/parser.h
index 22d83cf..c6617f1 100644
--- a/src/parser.h
+++ b/src/parser.h
@@ -21,7 +21,7 @@
 
 gchar *update_channel(RDF *r);
 
-static char *layer_find (xmlNodePtr node, char *match, char *fail);
+char *layer_find (xmlNodePtr node, char *match, char *fail);
 static char *layer_find_innerelement (xmlNodePtr node, char *match, char *el, char *fail);
 static gchar *layer_find_innerhtml (xmlNodePtr node, char *match, char *submatch, char *fail);
 xmlNodePtr layer_find_pos (xmlNodePtr node, char *match, char *submatch);
diff --git a/src/rss-config-factory.c b/src/rss-config-factory.c
index 74bd54d..43155bf 100644
--- a/src/rss-config-factory.c
+++ b/src/rss-config-factory.c
@@ -21,16 +21,42 @@
 #include "config.h"
 #endif
 
+#include <errno.h>
 #include <string.h>
 #include <stdio.h>
 #include <glib.h>
+#include <gtk/gtk.h>
+#include <glade/glade.h>
+#include <gconf/gconf-client.h>
+#include <gdk/gdkkeysyms.h>
+
+#include <camel/camel-folder.h>
+#include <camel/camel-store.h>
+#include <camel/camel-operation.h>
+#include <camel/camel-provider.h>
+
+#include <mail/em-event.h>
+#include <mail/em-config.h>
+
+#include <shell/evolution-config-control.h>
+#include <bonobo/bonobo-shlib-factory.h>
 
 #include "rss.h"
+#include "misc.h"
+#include "parser.h"
+
+#define d(x)
 
 static guint feed_enabled = 0;
 static guint feed_validate = 0;
 static guint feed_html = 0;
 
+extern rssfeed *rf;
+extern guint upgrade;
+extern guint count; 
+extern gchar *buffer;
+extern GSList *rss_list;
+
 #define RSS_CONTROL_ID  "OAFIID:GNOME_Evolution_RSS:" EVOLUTION_VERSION_STRING
 #define FACTORY_ID      "OAFIID:GNOME_Evolution_RSS_Factory:" EVOLUTION_VERSION_STRING
 #define MAX_TTL		10000
@@ -111,6 +137,14 @@ render_engine_changed (GtkComboBox *dropdown, GCallback *user_data)
 }
 
 static void
+start_check_cb (GtkWidget *widget, gpointer data)
+{
+    gboolean active = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget));
+    /* Save the new setting to gconf */
+    gconf_client_set_bool (rss_gconf, data, active, NULL);
+}
+
+static void
 enable_toggle_cb(GtkCellRendererToggle *cell,
                gchar *path_str,
                gpointer data)
@@ -240,6 +274,7 @@ details_cb (GtkWidget *widget, gpointer data)
         gtk_widget_show(details);
 }
 
+
 static void
 construct_list(gpointer key, gpointer value, gpointer user_data)
 {
@@ -740,7 +775,6 @@ delete_feed_folder_alloc(gchar *old_name)
                                 rf->reversed_feed_folders);
 }
 
-
 static void
 delete_response(GtkWidget *selector, guint response, gpointer user_data)
 {
diff --git a/src/rss.c b/src/rss.c
index 4f59f35..24fd2e4 100644
--- a/src/rss.c
+++ b/src/rss.c
@@ -57,9 +57,9 @@ int rss_verbose_debug = 0;
 
 #include <misc/e-activity-handler.h>
 
+#include <mail/em-format.h>
 #include <mail/em-format-html.h>
 
-#include <mail/em-format.h>
 #include <mail/em-format-hook.h>
 
 #include <sys/types.h>
@@ -76,15 +76,13 @@ int rss_verbose_debug = 0;
 #endif
 
 #include <glib.h>
-#include <gdk/gdkkeysyms.h>
 #include <gtk/gtk.h>
 #include <gdk-pixbuf/gdk-pixbuf.h>
 #include <bonobo/bonobo-shlib-factory.h>
 
 #include <glade/glade-xml.h>
 #include <glade/glade.h>
-#include <shell/evolution-config-control.h>
-#include <shell/e-component-view.h>///
+//#include <shell/e-component-view.h>///
 #include <shell/es-event.h>
 #include <camel/camel-data-cache.h>
 #include <camel/camel-file-utils.h>
@@ -137,11 +135,11 @@ int rss_verbose_debug = 0;
 #include "network-soup.c"
 #include "file-gio.c"
 #include "fetch.c"
-#include "misc.c"
+#include "misc.h"
 #if HAVE_DBUS
 #include "dbus.c"
 #endif
-#include "rss-config-factory.c"
+#include "rss-config-factory.h"
 #include "rss-icon-factory.c"
 #include "parser.c"
 
@@ -185,6 +183,11 @@ gsize pixfilelen;
 extern int xmlSubstituteEntitiesDefaultValue;
 
 rssfeed *rf = NULL;
+guint           upgrade = 0;                // set to 2 when initailization successfull
+guint count = 0;
+gchar *buffer = NULL;
+GSList *rss_list = NULL;
+
 gboolean inhibit_read = FALSE;	//prevent mail selection when deleting folder
 gboolean delete_op = FALSE;	//delete in progress
 gchar *commstream = NULL; 	//global comments stream
@@ -200,17 +203,12 @@ gboolean setup_feed(add_feed *feed);
 gchar *display_doc (RDF *r);
 gchar *display_comments (RDF *r);
 void check_folders(void);
-gchar *strplchr(gchar *source);
-static char *gen_md5(gchar *buffer);
 CamelMimePart *file_to_message(const char *name);
 void save_gconf_feed(void);
 void check_feed_age(void);
-static gboolean check_if_match (gpointer key, gpointer value, gpointer user_data);
 static void del_days_cb (GtkWidget *widget, add_feed *data);
 static void del_messages_cb (GtkWidget *widget, add_feed *data);
 void get_feed_age(gpointer key, gpointer value);
-gboolean cancel_soup_sess(gpointer key, gpointer value, gpointer user_data);
-void abort_all_soup(void);
 gchar *encode_html_entities(gchar *str);
 static void
 #if LIBSOUP_VERSION < 2003000
@@ -225,33 +223,8 @@ finish_create_image (SoupMessage *msg, gchar *user_data);
 finish_create_image (SoupSession *soup_sess, SoupMessage *msg, gchar *user_data);
 #endif
 gchar *get_main_folder(void);
-void fetch_comments(gchar *url, CamelStream *stream);
-
-struct _MailComponentPrivate {
-        GMutex *lock;
-
-        /* states/data used during shutdown */
-        enum { MC_QUIT_START, MC_QUIT_SYNC, MC_QUIT_THREADS } quit_state;
-        int quit_count;
-        int quit_expunge;       /* expunge on quit this time around? */
-
-        char *base_directory;
+void fetch_comments(gchar *url, EMFormatHTML *stream);
 
-        EMFolderTreeModel *model;
-
-//        EActivityHandler *activity_handler;
-
-        MailAsyncEvent *async_event;
-        GHashTable *store_hash; /* stores store_info objects by store */
-
-//        RuleContext *search_context;
-
-        char *context_path;     /* current path for right-click menu */
-
-        CamelStore *local_store;
-
-        EComponentView *component_view;
-};
 static void
 dialog_key_destroy (GtkWidget *widget, gpointer data);
 guint fallback_engine(void);
@@ -493,7 +466,7 @@ statuscb(NetStatusType status, gpointer statusdata, gpointer data)
     }
 }
 
-static void
+void
 browser_write(gchar *string, gint length, gchar *base)
 {
 	gchar *str = string;
@@ -517,14 +490,14 @@ browser_write(gchar *string, gint length, gchar *base)
 	break;
 	case 1:
 		webkit_web_view_load_html_string(WEBKIT_WEB_VIEW(rf->mozembed),
-                                                         string,
+                                                         str,
                                                          base);
 		break;
 	}
 }
 
 static void
-browsercb(NetStatusType status, gpointer statusdata, gint data)
+browsercb(NetStatusType status, gpointer statusdata, gpointer data)
 {
     NetStatusProgress *progress = (NetStatusProgress*)statusdata;
     switch (status) {
@@ -533,7 +506,7 @@ browsercb(NetStatusType status, gpointer statusdata, gint data)
 		g_print("total:%d\n", progress->total);
 		g_print("curent:%d\n", progress->current);
 		g_print("--------------\n chunk: %d \n=============\n", progress->chunksize);
-//		browser_write(progress->chunk, progress->chunksize);
+		//browser_write(progress->chunk, progress->chunksize, data);
 //		browser_fill+=progress->chunksize;
         break;
     default:
@@ -591,8 +564,8 @@ create_user_pass_dialog(RSS_AUTH *auth)
         gtk_container_set_border_width (GTK_CONTAINER (widget), 12);
         GtkWidget *password_dialog = GTK_DIALOG (widget);
 
-        action_area = gtk_dialog_get_action_area (password_dialog);
-        content_area = gtk_dialog_get_content_area (password_dialog);
+        action_area = gtk_dialog_get_action_area (GTK_DIALOG(password_dialog));
+        content_area = gtk_dialog_get_content_area (GTK_DIALOG(password_dialog));
 
         /* Override GtkDialog defaults */
         gtk_box_set_spacing (GTK_BOX (action_area), 12);
@@ -746,11 +719,11 @@ web_auth_dialog(gchar *url)
 		else
 			del_up(url);
 	
-        	gtk_widget_destroy (dialog);
+        	gtk_widget_destroy (GTK_WIDGET(dialog));
 		resp = 0;
         	break;
     	default:
-        	gtk_widget_destroy (dialog);
+        	gtk_widget_destroy (GTK_WIDGET(dialog));
 		resp = 1;
         	break;
 	}
@@ -772,40 +745,6 @@ proxy_auth_dialog(gchar *title, gchar *user, gchar *pass)
 }
 
 gboolean
-cancel_soup_sess(gpointer key, gpointer value, gpointer user_data)
-{
-#if LIBSOUP_VERSION < 2003000
-	SoupUri *uri =  soup_message_get_uri((SoupMessage *)value);
-#else
-	SoupURI *uri =  soup_message_get_uri((SoupMessage *)value);
-#endif
-	d(g_print("cancel url:%s%s?%s\n", uri->host, uri->path, uri->query?uri->query:""));
-
-	if (SOUP_IS_SESSION(key))
-	{
-/*		if (SOUP_IS_MESSAGE(value))
-		{
-#if LIBSOUP_VERSION < 2003000
-			soup_message_set_status(value,  SOUP_STATUS_CANCELLED);
-			soup_session_cancel_message(key, value);
-#else
-			soup_session_cancel_message(key, value, SOUP_STATUS_CANCELLED);
-#endif
-		}*/
-		soup_session_abort(key);
-		g_hash_table_find(rf->key_session,
-                	remove_if_match,
-                	user_data);
-	}
-	return TRUE;
-}
-void
-remove_weak(gpointer key, gpointer value, gpointer user_data)
-{
-	g_object_weak_unref(value, unblock_free, key);
-}
-
-gboolean
 timeout_soup(void)
 {
 	g_print("Network timeout occured. Cancel active operations.\n");
@@ -830,43 +769,6 @@ network_timeout(void)
                            	0);
 }
 
-void
-abort_all_soup(void)
-{
-	//abort all session
-	rf->cancel = 1;
-	rf->cancel_all = 1;
-	if (rf->abort_session)
-	{
-		g_hash_table_foreach(rf->abort_session, remove_weak, NULL);
-		g_hash_table_foreach_remove(rf->abort_session, cancel_soup_sess, NULL);
-//		g_hash_table_foreach(rf->abort_session, cancel_soup_sess, NULL);
-		g_hash_table_destroy(rf->session);
-                rf->session = g_hash_table_new(g_direct_hash, g_direct_equal);
-	}
-	if (rf->progress_bar)
-	{
-		gtk_progress_bar_set_fraction((GtkProgressBar *)rf->progress_bar, 1);
-		rf->progress_bar = NULL;	//there's no need to update bar once we canceled feeds
-	}
-	if (rf->b_session)
-	{
-/*		if (SOUP_IS_MESSAGE(rf->b_msg_session))
-		{
-#if LIBSOUP_VERSION < 2003000
-			soup_message_set_status(rf->b_msg_session, SOUP_STATUS_CANCELLED);
-			soup_session_cancel_message(rf->b_session, rf->b_msg_session);
-#else
-			soup_session_cancel_message(rf->b_session, rf->b_msg_session, SOUP_STATUS_CANCELLED);
-#endif
-		}*/
-		soup_session_abort(rf->b_session);
-		rf->b_session = NULL;
-		rf->b_msg_session = NULL;
-	}
-	rf->cancel_all = 0;
-}
-
 static void
 readrss_dialog_cb (GtkWidget *widget, gpointer data)
 {
@@ -986,20 +888,6 @@ save_gconf_feed(void)
         gconf_client_suggest_sync (rss_gconf, NULL);
 }
 
-static gboolean
-check_if_match (gpointer key, gpointer value, gpointer user_data)
-{
-        char *sf_href = (char *)value;
-        char *int_uri = (char *)user_data;
-
-	d(g_print("checking hay:%s for neddle:%s\n", sf_href, int_uri));
-
-        if (!strcmp (sf_href, int_uri))
-                return TRUE; /* Quit calling the callback */
-
-        return FALSE; /* Continue calling the callback till end of table */
-}
-
 void
 rss_select_folder(gchar *folder_name)
 {
@@ -1095,14 +983,6 @@ tree_cb (GtkWidget *widget, gpointer data)
 }*/
 
 static void
-start_check_cb (GtkWidget *widget, gpointer data)
-{
-    gboolean active = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget));
-    /* Save the new setting to gconf */
-    gconf_client_set_bool (rss_gconf, data, active, NULL);
-}
-
-static void
 dialog_key_destroy (GtkWidget *widget, gpointer data)
 {
 	if (data)
@@ -1522,7 +1402,7 @@ mycall (GtkWidget *widget, GtkAllocation *event, gpointer data)
 					fetch_unblocking(
 						po->website,
 						browsercb,
-						1,
+						po->website,
 						(gpointer)finish_website,
 						g_strdup(po->website),	// we need to dupe key here
 						1,
@@ -1643,16 +1523,19 @@ rss_menu_items_free(EPopup *ep, GSList *items, void *data)
 }
 
 static gboolean
-webkit_click (WebKitWebView *view, WebKitWebFrame *frame, WebKitNetworkRequest *request)
+webkit_click (GtkEntry *entry,
+                         GtkMenu *menu,
+                         gpointer user_data)
 {
-        const gchar *uri;
-
-        g_return_if_fail (WEBKIT_IS_WEB_VIEW (view));
-//        g_return_if_fail (WEBKIT_IS_NETWORK_REQUEST (request));
-
-        uri = webkit_network_request_get_uri (request);
-        g_print("uri:%s\n", uri);
-        return TRUE;
+	g_print("click\n");
+	GtkWidget *separator, *redo_menuitem;
+	redo_menuitem = gtk_image_menu_item_new_from_stock (GTK_STOCK_REDO, NULL);
+        gtk_widget_set_sensitive (redo_menuitem, TRUE);
+        gtk_widget_show (redo_menuitem);
+        gtk_menu_shell_insert (GTK_MENU_SHELL (menu), redo_menuitem, 1);
+	separator = gtk_separator_menu_item_new ();
+        gtk_widget_show (separator);
+        gtk_menu_shell_insert (GTK_MENU_SHELL (menu), separator, 2);
 }
 
 gboolean
@@ -1695,7 +1578,7 @@ gecko_click(GtkMozEmbed *mozembed, gpointer dom_event, gpointer user_data)
 		gtk_menu_popup(menu, NULL, NULL, NULL, NULL, button, gtk_get_current_event_time());
 	/*normal click let event pass normally*/
 	if (button == 0)
-		gtk_moz_embed_load_url(rf->mozembed, link);
+		gtk_moz_embed_load_url(GTK_MOZ_EMBED(rf->mozembed), link);
 	g_print("button:%d\n", button);
 }
 
@@ -1721,7 +1604,7 @@ org_gnome_rss_browser (EMFormatHTML *efh, void *eb, EMFormatHTMLPObject *pobject
 	if (engine == 1) {
 		rf->mozembed = (GtkWidget *)webkit_web_view_new();
 		gtk_container_add(GTK_CONTAINER(moz), GTK_WIDGET(rf->mozembed));
-		g_signal_connect (rf->mozembed, "navigation-requested", G_CALLBACK (webkit_click), moz);
+		g_signal_connect (rf->mozembed, "populate-popup", G_CALLBACK (webkit_click), moz);
 	//	gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(moz), GTK_WIDGET(rf->mozembed));
 	//	gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW(moz), GTK_SHADOW_ETCHED_OUT);
 	}
@@ -2156,7 +2039,7 @@ render_body:    if (category)
 				commstream = NULL;
 			}
 			else {
-				fetch_comments(comments, (CamelStream *)t->format);
+				fetch_comments(comments, (EMFormatHTML *)t->format);
 			}
 			camel_stream_printf (fstream, "</div>");
 		}	
@@ -2626,6 +2509,13 @@ gio_finish_feed (GObject *object, GAsyncResult *res, gpointer user_data)
 	g_free(rfmsg);
 }
 
+struct _MailComponentPrivate {
+        GMutex *lock;
+
+        /* states/data used during shutdown */
+        enum { MC_QUIT_START, MC_QUIT_SYNC, MC_QUIT_THREADS } quit_state;
+};
+
 void
 generic_finish_feed(rfMessage *msg, gpointer user_data)
 {
@@ -2896,9 +2786,9 @@ fetch_feed(gpointer key, gpointer value, gpointer user_data)
 
 void
 #if LIBSOUP_VERSION < 2003000
-finish_website (SoupMessage *msg, gint user_data)
+finish_website (SoupMessage *msg, gpointer user_data)
 #else
-finish_website (SoupSession *soup_sess, SoupMessage *msg, gint user_data)
+finish_website (SoupSession *soup_sess, SoupMessage *msg, gpointer user_data)
 #endif
 {
 	GString *response = g_string_new_len(msg->response_body->data, msg->response_body->length);
@@ -2924,9 +2814,9 @@ finish_website (SoupSession *soup_sess, SoupMessage *msg, gint user_data)
 
 void
 #if LIBSOUP_VERSION < 2003000
-finish_comments (SoupMessage *msg, gpointer user_data)
+finish_comments (SoupMessage *msg, EMFormatHTML *user_data)
 #else
-finish_comments (SoupSession *soup_sess, SoupMessage *msg, gpointer user_data)
+finish_comments (SoupSession *soup_sess, SoupMessage *msg, EMFormatHTML *user_data)
 #endif
 {
 	guint reload=0;
@@ -2947,6 +2837,7 @@ finish_comments (SoupSession *soup_sess, SoupMessage *msg, gpointer user_data)
 		reload = 1;
 
 	commstream = response->str; 
+
 	if (reload)
 		em_format_redraw((EMFormat *)user_data);
 	
@@ -2986,11 +2877,12 @@ print_comments(gchar *url, gchar *stream)
 
 
 void
-fetch_comments(gchar *url, CamelStream *stream)
+fetch_comments(gchar *url, EMFormatHTML *stream)
 {
 	GError *err = NULL;
 	g_print("\nFetching comments from: %s\n", 
 		url);
+	g_object_ref(stream);
 
 	fetch_unblocking(
 				url,
@@ -3609,7 +3501,7 @@ update_status_icon(const char *channel, gchar *title)
 	}
 }
 
-static void
+void
 custom_feed_timeout(void)
 {
 	g_hash_table_foreach(rf->hrname, custom_fetch_feed, statuscb);
@@ -4601,16 +4493,18 @@ fetch_image(gchar *url, gchar *link)
 void
 migrate_crc_md5(const char *name, gchar *url)
 {
-	uint32_t crc = gen_crc(name);
-	uint32_t crc2 = gen_crc(url);
+	gchar *crc = gen_crc(name);
+	gchar *crc2 = gen_crc(url);
 	gchar *md5 = gen_md5(url);
 
 	gchar *feed_dir = rss_component_peek_base_directory(mail_component_peek());
 	if (!g_file_test(feed_dir, G_FILE_TEST_EXISTS))
 	    g_mkdir_with_parents (feed_dir, 0755);
 
-	gchar *md5_name = g_strdup_printf("%s/%s", feed_dir, md5);
-	gchar *feed_name = g_strdup_printf("%s/%x", feed_dir, crc);
+	gchar *md5_name = g_build_path("/", feed_dir, md5, NULL);
+	gchar *feed_name = g_build_path("/", feed_dir, crc, NULL);
+	g_free(crc);
+	g_free(md5);
 
 	if (g_file_test(feed_name, G_FILE_TEST_EXISTS))
 	{
@@ -4633,7 +4527,8 @@ migrate_crc_md5(const char *name, gchar *url)
 
 	}
 	g_free(feed_name);
-	feed_name = g_strdup_printf("%s/%x", feed_dir, crc2);
+	feed_name = g_build_path("/", feed_dir, crc2, NULL);
+	g_free(crc2);
 	if (g_file_test(feed_name, G_FILE_TEST_EXISTS))
 	{
 		FILE *fr = fopen(feed_name, "r");
@@ -4658,7 +4553,6 @@ migrate_crc_md5(const char *name, gchar *url)
 	g_free(feed_name);
 	g_free(feed_dir);
 	g_free(md5_name);
-	g_free(md5);
 }
 
 gchar *
diff --git a/src/rss.h b/src/rss.h
index a9eaee5..03dddb0 100644
--- a/src/rss.h
+++ b/src/rss.h
@@ -25,6 +25,9 @@
 #ifndef __RSS_H_
 #define __RSS_H_
 
+#include <libsoup/soup.h>
+#include <mail/mail-component.h>
+
 #define PLUGIN_INSTALL_DIR @PLUGIN_INSTALL_DIR@
 #define DEFAULT_FEEDS_FOLDER "News&Blogs"
 #define DEFAULT_NO_CHANNEL "Untitled channel"
@@ -40,7 +43,6 @@
 #define HTTP_CACHE_PATH "http"
 
 GConfClient *rss_gconf;
-GSList *rss_list = NULL;
 
 typedef struct _RDF {
         char 		*uri;
@@ -289,23 +291,17 @@ typedef struct rss_auth {
 	GtkWidget *rememberpass;
 } RSS_AUTH;
 
-guint           upgrade = 0;                // set to 2 when initailization successfull
-guint count = 0;
-gchar *buffer = NULL;
 guint ftotal;
 guint farticle;
 
-uint32_t gen_crc(const char *msg);
 GtkDialog* create_user_pass_dialog(RSS_AUTH *auth);
-static void start_check_cb (GtkWidget *widget, gpointer data);
 static void err_destroy (GtkWidget *widget, guint response, gpointer data);
-static gboolean check_if_match (gpointer key, gpointer value, gpointer user_data);
 void save_gconf_feed(void);
 void rss_error(gpointer key, gchar *name, gchar *error, gchar *emsg);
 void rss_select_folder(gchar *folder_name);
 gpointer lookup_chn_name_by_url(gchar *url);
 gboolean update_articles(gboolean disabler);
-static xmlNode *html_find (xmlNode *node, char *match);
+xmlNode *html_find (xmlNode *node, char *match);
 gchar *lookup_main_folder(void);
 gchar *lookup_feed_folder(gchar *folder);
 gchar *decode_utf8_entities(gchar *str);
@@ -322,9 +318,9 @@ void update_feed_image(gchar *image, gchar *key);
 static void update_status_icon(const char *channel, gchar *title);
 static void
 #if LIBSOUP_VERSION < 2003000
-finish_website (SoupMessage *msg, gint user_data);
+finish_website (SoupMessage *msg, gpointer user_data);
 #else
-finish_website (SoupSession *soup_sess, SoupMessage *msg, gint user_data);
+finish_website (SoupSession *soup_sess, SoupMessage *msg, gpointer user_data);
 #endif
 static void
 #if LIBSOUP_VERSION < 2003000
@@ -344,7 +340,7 @@ void taskbar_pop_message(void);
 void write_feeds_folder_line(gpointer key, gpointer value, FILE *file);
 void populate_reversed(gpointer key, gpointer value, GHashTable *hash);
 gchar *rss_component_peek_base_directory(MailComponent *component);
-static void custom_feed_timeout(void);
+void custom_feed_timeout(void);
 void gio_finish_feed (GObject *object, GAsyncResult *res, gpointer user_data);
 gchar *encode_rfc2047(gchar *str);
 CamelFolder *check_feed_folder(gchar *folder_name);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]