evolution-rss r332 - in trunk: . src



Author: lucilanga
Date: Fri Jul  4 14:39:22 2008
New Revision: 332
URL: http://svn.gnome.org/viewvc/evolution-rss?rev=332&view=rev

Log:
2008-07-04  Lucian Langa  <lucilanga gnome org>

* support for importing FOAF type files
* migrate to xulrunner standalone Glue
Thanks to Pedro Fragoso for providing
necessary patches

Modified:
   trunk/ChangeLog
   trunk/TODO
   trunk/configure.ac
   trunk/evolution-rss.spec.in
   trunk/src/Makefile.am
   trunk/src/Makefile.in
   trunk/src/gecko-utils.cpp
   trunk/src/rss-config-factory.c
   trunk/src/rss.c

Modified: trunk/TODO
==============================================================================
--- trunk/TODO	(original)
+++ trunk/TODO	Fri Jul  4 14:39:22 2008
@@ -33,3 +33,5 @@
 	* strip html tags from title
 	* implement foaf and other possible blogrolls type file
 	* if necessary implement config code for evo 2.12
+	* notify in status bar, no of feeds
+	* fix recursivity on layer_find_pos

Modified: trunk/configure.ac
==============================================================================
--- trunk/configure.ac	(original)
+++ trunk/configure.ac	Fri Jul  4 14:39:22 2008
@@ -214,6 +214,21 @@
 			AC_SUBST(HAVE_GECKO_1_9)
 			fi
 		#fi
+		_SAVE_CPPFLAGS="$CPPFLAGS"
+               	CPPFLAGS="$CPPFLAGS $GECKO_CFLAGS"
+               	AC_MSG_CHECKING([[whether we have a xpcom glue]])
+               	AC_COMPILE_IFELSE(
+                       [AC_LANG_SOURCE(
+                               [[
+                                 #ifndef XPCOM_GLUE
+                                 #error "no xpcom glue found"
+                                 #endif]]
+                       )],
+                       [gecko_cv_have_xpcom_glue=yes],
+                       [gecko_cv_have_xpcom_glue=no])
+               	AC_MSG_RESULT([$gecko_cv_have_xpcom_glue])
+               	CPPFLAGS="$_SAVE_CPPFLAGS"
+               	AM_CONDITIONAL([HAVE_XPCOM_GLUE], [test "$gecko_cv_have_xpcom_glue" = "yes"])
 		AC_ARG_WITH([primary-render],
         		AS_HELP_STRING([--with-primary-render],[Forces Gecko to be the primary html renderer  @<:@=gecko|webkit@:>@ (default:gtkHTML)]),
         			[RENDER=$with_primary_render], [RENDER=gtkhtml])

Modified: trunk/evolution-rss.spec.in
==============================================================================
--- trunk/evolution-rss.spec.in	(original)
+++ trunk/evolution-rss.spec.in	Fri Jul  4 14:39:22 2008
@@ -28,8 +28,7 @@
 %setup -q -n evolution-rss-%{version}
 
 %build
-autoreconf -i -f
-%configure --disable-webkit --disable-gecko
+%configure
 make %{?_smp_mflags}
 
 %install
@@ -71,8 +70,8 @@
 %{_bindir}/evolution-import-rss
 %{_sysconfdir}/gconf/schemas/%{name}.schemas
 %{_datadir}/evolution/*/errors/org-gnome-evolution-rss.error
-%{_datadir}/evolution/*/glade/rss-ui.glade
-%{_datadir}/evolution/*/images/rss.png
+%{_datadir}/evolution/*/glade/*.glade
+%{_datadir}/evolution/*/images/*.png
 %{_libdir}/evolution/*/plugins/org-gnome-evolution-rss.eplug
 %{_libdir}/evolution/*/plugins/org-gnome-evolution-rss.xml
 %{_libdir}/evolution/*/plugins/liborg-gnome-evolution-rss.so
@@ -86,6 +85,9 @@
 %doc TODO
 
 %changelog
+* Wed Jul  2 2008 Lucian Langa <lucilanga gnome org> - 0.1.0-1
+- update to 0.1.0 release
+
 * Sat Mar  1 2008 Lucian Langa <lucilanga gnome org> - 0.0.8-1
 - Misc cleanup
 

Modified: trunk/src/Makefile.am
==============================================================================
--- trunk/src/Makefile.am	(original)
+++ trunk/src/Makefile.am	Fri Jul  4 14:39:22 2008
@@ -12,13 +12,17 @@
 	-DEVOLUTION_ICONDIR=\""$(ICON_DIR)"\"            	\
 	-DGTK_VERSION="$(GTK_VERSION)"	          	  	\
 	-DLIBSOUP_VERSION="$(SOUP_VERSION)"	            	\
-	-DGECKO_HOME=\""$(GECKO_HOME)"\"			\
 	-DRENDER=\""$(RENDER)"\"				\
 	-DRENDER_N=$(RENDER_N)					\
 	-DHAVE_DBUS=$(DBD)					\
 	-DDBUS_API_SUBJECT_TO_CHANGE				\
 	$(EVOLUTION_RSS_EPLUGIN_CFLAGS)
 
+ 
+if ! HAVE_XPCOM_GLUE
+INCLUDES += -DGECKO_HOME=\""$(GECKO_HOME)"\"
+endif
+
 RSS_MENU = \
 	<hook class=\"org.gnome.evolution.mail.bonobomenu:1.0\">\n		\
       		<menu target=\"select\" id=\"org.gnome.evolution.mail.browser\">\n	\

Modified: trunk/src/Makefile.in
==============================================================================
--- trunk/src/Makefile.in	(original)
+++ trunk/src/Makefile.in	Fri Jul  4 14:39:22 2008
@@ -34,6 +34,7 @@
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
+ HAVE_XPCOM_GLUE_FALSE@am__append_1 = -DGECKO_HOME=\""$(GECKO_HOME)"\"
 @HAVE_DBUS_TRUE bin_PROGRAMS = evolution-import-rss$(EXEEXT)
 subdir = src
 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
@@ -316,26 +317,18 @@
 target_alias = @target_alias@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
-INCLUDES = \
-	-I$(EVOLUTION_SOURCE)					\
-	-I$(top_srcdir)						\
-	$(RENDER_CFLAGS)					\
-	$(DBUS_CFLAGS)						\
-	-DGETTEXT_PACKAGE="\"$(GETTEXT_PACKAGE)\""		\
-	-DLOCALEDIR="\"$(LOCALEDIR)\""				\
-	-DEVOLUTION_VERSION_STRING=\"$(EVOLUTION_EXEC_VERSION)\"\
-	-DEVOLUTION_VERSION=$(evolution_exec_int)		\
-	-DEVOLUTION_GLADEDIR=\""$(gladedir)"\"            	\
-	-DEVOLUTION_ICONDIR=\""$(ICON_DIR)"\"            	\
-	-DGTK_VERSION="$(GTK_VERSION)"	          	  	\
-	-DLIBSOUP_VERSION="$(SOUP_VERSION)"	            	\
-	-DGECKO_HOME=\""$(GECKO_HOME)"\"			\
-	-DRENDER=\""$(RENDER)"\"				\
-	-DRENDER_N=$(RENDER_N)					\
-	-DHAVE_DBUS=$(DBD)					\
-	-DDBUS_API_SUBJECT_TO_CHANGE				\
-	$(EVOLUTION_RSS_EPLUGIN_CFLAGS)
-
+INCLUDES = -I$(EVOLUTION_SOURCE) -I$(top_srcdir) $(RENDER_CFLAGS) \
+	$(DBUS_CFLAGS) -DGETTEXT_PACKAGE="\"$(GETTEXT_PACKAGE)\"" \
+	-DLOCALEDIR="\"$(LOCALEDIR)\"" \
+	-DEVOLUTION_VERSION_STRING=\"$(EVOLUTION_EXEC_VERSION)\" \
+	-DEVOLUTION_VERSION=$(evolution_exec_int) \
+	-DEVOLUTION_GLADEDIR=\""$(gladedir)"\" \
+	-DEVOLUTION_ICONDIR=\""$(ICON_DIR)"\" \
+	-DGTK_VERSION="$(GTK_VERSION)" \
+	-DLIBSOUP_VERSION="$(SOUP_VERSION)" -DRENDER=\""$(RENDER)"\" \
+	-DRENDER_N=$(RENDER_N) -DHAVE_DBUS=$(DBD) \
+	-DDBUS_API_SUBJECT_TO_CHANGE $(EVOLUTION_RSS_EPLUGIN_CFLAGS) \
+	$(am__append_1)
 RSS_MENU = \
 	<hook class=\"org.gnome.evolution.mail.bonobomenu:1.0\">\n		\
       		<menu target=\"select\" id=\"org.gnome.evolution.mail.browser\">\n	\

Modified: trunk/src/gecko-utils.cpp
==============================================================================
--- trunk/src/gecko-utils.cpp	(original)
+++ trunk/src/gecko-utils.cpp	Fri Jul  4 14:39:22 2008
@@ -26,6 +26,11 @@
 #include <stdlib.h>
 
 #include <nsStringAPI.h>
+ 
+#ifdef XPCOM_GLUE
+#include <nsXPCOMGlue.h>
+#include <gtkmozembed_glue.cpp>
+#endif
 
 #ifdef HAVE_GECKO_1_9
 #include <gtkmozembed.h>
@@ -69,19 +74,70 @@
 extern "C" gboolean
 gecko_init (void)
 {
+       nsresult rv;
 #ifdef HAVE_GECKO_1_9
 	NS_LogInit ();
 #endif
-	
+
+#ifdef XPCOM_GLUE
+       static const GREVersionRange greVersion = {
+         "1.9a", PR_TRUE,
+         "1.9.*", PR_TRUE
+       };
+       char xpcomLocation[4096];
+       rv = GRE_GetGREPathWithProperties(&greVersion, 1, nsnull, 0, xpcomLocation, 4096);
+       if (NS_FAILED (rv))
+       {
+         g_warning ("Could not determine locale!\n");
+         return FALSE;
+       }
+
+       // Startup the XPCOM Glue that links us up with XPCOM.
+       rv = XPCOMGlueStartup(xpcomLocation);
+       if (NS_FAILED (rv))
+       {
+         g_warning ("Could not determine locale!\n");
+         return FALSE;
+       }
+
+       rv = GTKEmbedGlueStartup();
+       if (NS_FAILED (rv))
+       {
+         g_warning ("Could not startup glue!\n");
+         return FALSE;
+       }
+
+       rv = GTKEmbedGlueStartupInternal();
+       if (NS_FAILED (rv))
+       {
+         g_warning ("Could not startup internal glue!\n");
+         return FALSE;
+       }
+
+       char *lastSlash = strrchr(xpcomLocation, '/');
+       if (lastSlash)
+         *lastSlash = '\0';
+
+       gtk_moz_embed_set_path(xpcomLocation);
+#else
 #ifdef HAVE_GECKO_1_9
 	gtk_moz_embed_set_path (GECKO_HOME);
 #else
 	gtk_moz_embed_set_comp_path (GECKO_HOME);
 #endif
+#endif /* XPCOM_GLUE */
+
+	gchar *profile_dir = g_build_filename (g_get_home_dir (),
+					       ".evolution",
+					       "mail",
+					       "rss",
+					       NULL);
+
+	gtk_moz_embed_set_profile_path (profile_dir, "mozembed-rss");
+	g_free (profile_dir);
 
 	gtk_moz_embed_push_startup ();
 
-	nsresult rv;
 	nsCOMPtr<nsIPrefService> prefService (do_GetService (NS_PREFSERVICE_CONTRACTID, &rv));
 	NS_ENSURE_SUCCESS (rv, FALSE);
 

Modified: trunk/src/rss-config-factory.c
==============================================================================
--- trunk/src/rss-config-factory.c	(original)
+++ trunk/src/rss-config-factory.c	Fri Jul  4 14:39:22 2008
@@ -290,7 +290,7 @@
 
         GtkWidget *dialog1 = (GtkWidget *)glade_xml_get_widget (gui, "feed_dialog");
 	gtk_widget_show(dialog1);
-  	gtk_window_set_keep_above(GTK_WINDOW(dialog1), TRUE);
+  	gtk_window_set_keep_above(GTK_WINDOW(dialog1), FALSE);
  	if (text != NULL)
         	gtk_window_set_title (GTK_WINDOW (dialog1), _("Edit Feed"));
   	else
@@ -994,13 +994,36 @@
                 rf->cancel = 1;
 }
 
+gboolean
+import_one_feed(gchar *url, gchar *title)
+{
+        add_feed *feed = g_new0(add_feed, 1);
+        feed->changed=0;
+        feed->add=1;
+	feed->feed_url = g_strdup(url);
+	feed->feed_name = decode_html_entities(title);
+	/* we'll get rid of this as soon as we fetch unblocking */
+        if (g_hash_table_find(rf->hr,
+                                     check_if_match,
+                                     feed->feed_url))
+        {
+               rss_error(NULL, feed->feed_name, _("Error adding feed."),
+                                _("Feed already exists!"));
+               return FALSE;
+        }
+        guint res = setup_feed(feed);
+        d(g_print("feed imported:%d\n", res));
+        g_free(feed->feed_url);
+        g_free(feed->feed_name);
+	g_free(feed);
+	return res;
+}
+
 void
 import_opml(gchar *file, add_feed *feed)
 {
+	gchar *url;
         xmlChar *buff = NULL;
-        //some defaults
-        feed->changed=0;
-        feed->add=1;
         guint total = 0;
         guint current = 0;
         gchar *what = NULL;
@@ -1028,31 +1051,50 @@
                 0);
         gtk_widget_show_all(import_dialog);
         g_free(msg);
-        xmlNode *wlk = src;
-	while (wlk->next)
+	if (src=src->children)
 	{
-		g_print("juj:%s\n", layer_find_innerelement(wlk, "Group", "name", NULL));
-	printf ("%p, %s\n", wlk, wlk->name);	
-		wlk = wlk->next;
-	}
-        while (src = html_find(src, "outline"))
-        {
-                feed->feed_url = xmlGetProp((xmlNode *)src, "xmlUrl");
-                if (feed->feed_url)
-                {
-                        total++;
-                        xmlFree(feed->feed_url);
-                }
-        }
+		g_print("found %s\n", src->name);
+		if (!g_ascii_strcasecmp(src->name, "rdf")) {
+			while (src) {
+				g_print("my cont:%s\n", src->content);
+				src=src->children;
+				src = src->next;
+				g_print("found %s\n", src->name);
+				g_print("my cont:%s\n", src->content);
+				src=src->children;
+				src = src->next;
+				xmlNode *my = src;
+				while (src = html_find(src, "member")) {
+					my = layer_find_pos(src, "member", "Agent");
+					g_print("my:%s\n", layer_find(my, "name", NULL));
+					my =  html_find(my, "Document");
+					g_print("my:%s\n", xmlGetProp(my, "about"));
+				}
+			}
+		}
+		else if (!g_ascii_strcasecmp(src->name, "opml")) {
+			
+        		while (src = html_find(src, "outline")) {
+                		url = xmlGetProp((xmlNode *)src, "xmlUrl");
+                		if (url) {
+                        		total++;
+                        		xmlFree(url);
+                		}
+        		}
+			g_print("total:%d\n", total);
+		}
+	}	
         src = doc;
+	//force out for now
+	goto out;
         //we'll be safer this way
         rf->import = 1;
         while (gtk_events_pending ())
                 gtk_main_iteration ();
         while (src = html_find(src, "outline"))
         {
-                feed->feed_url = xmlGetProp((xmlNode *)src, "xmlUrl");
-                if (feed->feed_url && strlen(feed->feed_url))
+                url = xmlGetProp((xmlNode *)src, "xmlUrl");
+                if (url && strlen(url))
                 {
                         if (rf->cancel)
                         {
@@ -1061,30 +1103,16 @@
                                 goto out;
                         }
                         gchar *name = xmlGetProp((xmlNode *)src, "title");
-                        gchar *safe_name = decode_html_entities(name);
-                        xmlFree(name);
-                        name = safe_name;
-
                         gtk_label_set_text(GTK_LABEL(import_label), name);
 #if GTK_2_6
                         gtk_label_set_ellipsize (GTK_LABEL (import_label), PANGO_ELLIPSIZE_START);
 #endif
                         gtk_label_set_justify(GTK_LABEL(import_label), GTK_JUSTIFY_CENTER);
-                        feed->feed_name = name;
-                        /* we'll get rid of this as soon as we fetch unblocking */
-                        if (g_hash_table_find(rf->hr,
-                                        check_if_match,
-                                        feed->feed_url))
-                        {
-                           rss_error(NULL, feed->feed_name, _("Error adding feed."),
-                                           _("Feed already exists!"));
-                           continue;
-                        }
-                        guint res = setup_feed(feed);
+			import_one_feed(url, name);
+                        xmlFree(name);
 
                         while (gtk_events_pending ())
                                 gtk_main_iteration ();
-                        d(g_print("feed imported:%d\n", res));
                         current++;
                         float fr = ((current*100)/total);
                         gtk_progress_bar_set_fraction((GtkProgressBar *)import_progress, fr/100);
@@ -1097,7 +1125,6 @@
                         gtk_list_store_clear(GTK_LIST_STORE(model));
                         g_hash_table_foreach(rf->hrname, construct_list, model);
                         save_gconf_feed();
-                        g_free(feed->feed_url);
                         if (src)
                                 xmlFree(src);
                 }
@@ -1110,8 +1137,6 @@
 out:    rf->import = 0;
         xmlFree(doc);
         gtk_widget_destroy(import_dialog);
-//how the hell should I free this ?
-////      g_free(feed);
 }
 
 static void

Modified: trunk/src/rss.c
==============================================================================
--- trunk/src/rss.c	(original)
+++ trunk/src/rss.c	Fri Jul  4 14:39:22 2008
@@ -1574,17 +1574,12 @@
 rss_mozilla_init(void)
 {
 	GError *err = NULL;
-       	g_setenv("MOZILLA_FIVE_HOME", GECKO_HOME, 1);
-	g_unsetenv("MOZILLA_FIVE_HOME");
-
+/*#ifdef GECKO_HOME
+	g_setenv("MOZILLA_FIVE_HOME", GECKO_HOME, 1);
+#endif
+	g_unsetenv("MOZILLA_FIVE_HOME");*/
 
-	gchar *profile_dir = g_build_filename (g_get_home_dir (),
-                                              ".evolution",
-                                              "mail",
-                                              "rss", NULL);
 
-        gtk_moz_embed_set_profile_path (profile_dir, "mozembed-rss");
-        g_free (profile_dir);
 	gecko_init();
 }
 #endif
@@ -3670,16 +3665,19 @@
 layer_find_pos (xmlNodePtr node,
             char *match, char *submatch)
 {
+	xmlNodePtr subnode;
         while (node!=NULL) {
 #ifdef RDF_DEBUG
                 xmlDebugDumpNode (stdout, node, 32);
                 printf("%s.\n", node->name);
 #endif
                 if (strcasecmp (node->name, match)==0 && node->children) {
-			xmlNodePtr subnode = node->children;
+			subnode = node->children;
 			while (subnode!=NULL) {
                 		if (strcasecmp (subnode->name, submatch)==0 && subnode->children)
-                        		return subnode->children->next;
+				{
+                        			return subnode->children->next;
+				}
 				subnode = subnode->next;
 			}
                 }



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