[maemo-commits] [maemo-commits] r12728 - in projects/haf/trunk/hildon-plugins-settings: . debian src

From: subversion at stage.maemo.org subversion at stage.maemo.org
Date: Thu Jul 12 15:02:29 EEST 2007
Author: moimart
Date: 2007-07-12 15:02:21 +0300 (Thu, 12 Jul 2007)
New Revision: 12728

Added:
   projects/haf/trunk/hildon-plugins-settings/src/hd-marshalers.list
Modified:
   projects/haf/trunk/hildon-plugins-settings/ChangeLog
   projects/haf/trunk/hildon-plugins-settings/configure.ac
   projects/haf/trunk/hildon-plugins-settings/debian/changelog
   projects/haf/trunk/hildon-plugins-settings/debian/control
   projects/haf/trunk/hildon-plugins-settings/src/Makefile.am
   projects/haf/trunk/hildon-plugins-settings/src/hildon-plugin-config-parser.c
   projects/haf/trunk/hildon-plugins-settings/src/hildon-plugin-settings-dialog.c
   projects/haf/trunk/hildon-plugins-settings/src/hildon-plugin-settings-dialog.h
   projects/haf/trunk/hildon-plugins-settings/src/hildon-plugin-settings.c
Log:
2007-07-12  Moises Martinez  <moises.martinez at nokia.com>

        * debian/control:
        * configure.ac:
        - Added dbus-1-glib
        * src/Makefile.am:
        - added marshalers creation
        * src/hd-marshalers.list:
        - new file with marshalers needed
        * src/hildon-plugin-config-parser.c:
        (hildon_plugin_config_parser_desktop_file):
        - FLAG set by default to FALSE
        * src/hildon-plugin-settings-dialog.[ch]:
        (hildon_plugin_settings_dialog_get_model_by_name):
        - new method
        * src/hildon-plugin-settings.c: (_sb_visibility_filter),
        (_sb_cell_condition_data_func), (_sb_update_status),
        (_sb_update_flag), (execute):
        - Implemented visibility and dimmed of different statusbar plugins
        conditional, temporal and permanent.
	* ChangeLog updated.



Modified: projects/haf/trunk/hildon-plugins-settings/ChangeLog
===================================================================
--- projects/haf/trunk/hildon-plugins-settings/ChangeLog	2007-07-12 12:00:12 UTC (rev 12727)
+++ projects/haf/trunk/hildon-plugins-settings/ChangeLog	2007-07-12 12:02:21 UTC (rev 12728)
@@ -1,3 +1,24 @@
+2007-07-12  Moises Martinez  <moises.martinez at nokia.com>
+	
+	* debian/control:
+	* configure.ac:
+	- Added dbus-1-glib
+	* src/Makefile.am:
+	- added marshalers creation
+	* src/hd-marshalers.list:
+	- new file with marshalers needed
+	* src/hildon-plugin-config-parser.c:
+	(hildon_plugin_config_parser_desktop_file):
+	- FLAG set by default to FALSE
+	* src/hildon-plugin-settings-dialog.[ch]:
+	(hildon_plugin_settings_dialog_get_model_by_name):
+	- new method
+	* src/hildon-plugin-settings.c: (_sb_visibility_filter),
+	(_sb_cell_condition_data_func), (_sb_update_status),
+	(_sb_update_flag), (execute):
+	- Implemented visibility and dimmed of different statusbar plugins
+	conditional, temporal and permanent.
+
 2007-07-06  Johan Bilien  <johan.bilien at nokia.com>
 
 	* src/hildon-plugin-module-settings.c:

Modified: projects/haf/trunk/hildon-plugins-settings/configure.ac
===================================================================
--- projects/haf/trunk/hildon-plugins-settings/configure.ac	2007-07-12 12:00:12 UTC (rev 12727)
+++ projects/haf/trunk/hildon-plugins-settings/configure.ac	2007-07-12 12:02:21 UTC (rev 12728)
@@ -1,5 +1,5 @@
 AC_INIT(Makefile.am)
-AM_INIT_AUTOMAKE(hildon-plugins-settings, 0.0.3)
+AM_INIT_AUTOMAKE(hildon-plugins-settings, 0.0.4)
 AM_CONFIG_HEADER(config.h)
 
 AC_ARG_ENABLE(debug, [AC_HELP_STRING([--enable-debug],[Debug (default=no)])],
@@ -38,6 +38,8 @@
 AM_GLIB_GNU_GETTEXT
 AC_DEFINE(GETTEXT_PACKAGE, ["osso-applet-tasknavigator"], [Package name for gettext])
 
+AC_PATH_PROG(GLIB_GENMARSHAL, glib-genmarshal)
+
 if test foobar${hildon_use_debug} = foobaryes 
 then
     CFLAGS="$CFLAGS -ggdb -O0 -DDEBUG"
@@ -81,6 +83,10 @@
 AC_SUBST(LIBHILDON_LIBS)
 AC_SUBST(LIBHILDON_CFLAGS)
 
+PKG_CHECK_MODULES(DBUS_GLIB, dbus-glib-1)
+AC_SUBST(DBUS_GLIB_LIBS)
+AC_SUBST(DBUS_GLIB_CFLAGS)
+_
 pluginlibdir=`pkg-config hildon-control-panel --variable=pluginlibdir`
 AC_SUBST(pluginlibdir)
 desktopentrydir=`pkg-config hildon-control-panel --variable=plugindesktopentrydir`

Modified: projects/haf/trunk/hildon-plugins-settings/debian/changelog
===================================================================
--- projects/haf/trunk/hildon-plugins-settings/debian/changelog	2007-07-12 12:00:12 UTC (rev 12727)
+++ projects/haf/trunk/hildon-plugins-settings/debian/changelog	2007-07-12 12:02:21 UTC (rev 12728)
@@ -1,3 +1,31 @@
+hildon-plugins-settings (0.0.4-1) unstable; urgency=low
+
+  * debian/control:
+  * configure.ac:
+  - Added dbus-1-glib
+  * src/Makefile.am:
+  - added marshalers creation
+  * src/hd-marshalers.list:
+  - new file with marshalers needed
+  * src/hildon-plugin-config-parser.c:
+  (hildon_plugin_config_parser_desktop_file):
+  - FLAG set by default to FALSE
+  * src/hildon-plugin-settings-dialog.[ch]:
+  (hildon_plugin_settings_dialog_get_model_by_name):
+  - new method
+  * src/hildon-plugin-settings.c: (_sb_visibility_filter),
+  (_sb_cell_condition_data_func), (_sb_update_status),
+  (_sb_update_flag), (execute):
+  - Implemented visibility and dimmed of different statusbar plugins
+  conditional, temporal and permanent.
+
+  * src/hildon-plugin-module-settings.c:
+  - pass the GModule to the callback so one can use GTypeModule
+  * data/hildon-plugins-settings.desktop.in:
+  - added X-Text-Domain key. Fixes: NB#62315
+
+ -- Moises Martinez <moises.martinez at nokia.com>  Thu, 12 Jul 2007 14:57:59 +0300
+
 hildon-plugins-settings (0.0.3-1) unstable; urgency=low
 
   * src/hildon-plugin-settings-dialog.c:

Modified: projects/haf/trunk/hildon-plugins-settings/debian/control
===================================================================
--- projects/haf/trunk/hildon-plugins-settings/debian/control	2007-07-12 12:00:12 UTC (rev 12727)
+++ projects/haf/trunk/hildon-plugins-settings/debian/control	2007-07-12 12:02:21 UTC (rev 12728)
@@ -2,7 +2,7 @@
 Section: x11
 Priority: optional
 Maintainer: Moises Martinez <moises.martinez at nokia.com>
-Build-Depends: debhelper (>= 4.0.0), libosso-dev (>= 0.9.19), osso-af-settings, hildon-control-panel-dev, hildon-desktop-dev (>= 0.0.16), libhildondesktop-dev (>= 0.0.16), libhildon1-dev
+Build-Depends: debhelper (>= 4.0.0), libosso-dev (>= 0.9.19), osso-af-settings, hildon-control-panel-dev, hildon-desktop-dev (>= 0.0.16), libhildondesktop-dev (>= 0.0.16), libhildon1-dev, libdbus-glib-1-dev
 Standards-Version: 3.6.1
 
 Package: hildon-plugins-settings-cpa

Modified: projects/haf/trunk/hildon-plugins-settings/src/Makefile.am
===================================================================
--- projects/haf/trunk/hildon-plugins-settings/src/Makefile.am	2007-07-12 12:00:12 UTC (rev 12727)
+++ projects/haf/trunk/hildon-plugins-settings/src/Makefile.am	2007-07-12 12:02:21 UTC (rev 12728)
@@ -21,11 +21,16 @@
         hildon-plugin-cell-renderer-button.h \
         hildon-plugin-cell-renderer-button.c \
         hildon-plugin-settings-dialog.h \
-        hildon-plugin-settings-dialog.c	
+        hildon-plugin-settings-dialog.c
 
 pluginlib_LTLIBRARIES = libhildonpluginsettings.la
 
+hd-marshalers.c:
+	$(LIBTOOL) --mode=execute $(GLIB_GENMARSHAL) hd-marshalers.list --body --header >> hd-marshalers.c
 
+hd-marshalers.h:
+	$(LIBTOOL) --mode=execute $(GLIB_GENMARSHAL) hd-marshalers.list --header >| hd-marshalers.h
+
 libhildonpluginsettings_la_CPPFLAGS = $(INCLUDES) $(LIBHILDON_CFLAGS)
 
 libhildonpluginsettings_la_LIBADD = \
@@ -34,6 +39,8 @@
 
 libhildonpluginsettings_la_SOURCES = \
 	$(HILDON_PLUGIN_SOURCES) \
+	hd-marshalers.h \
+	hd-marshalers.c \
 	hildon-plugin-settings.c
 
 bin_PROGRAMS = hildon-plugin-settings

Added: projects/haf/trunk/hildon-plugins-settings/src/hd-marshalers.list
===================================================================
--- projects/haf/trunk/hildon-plugins-settings/src/hd-marshalers.list	2007-07-12 12:00:12 UTC (rev 12727)
+++ projects/haf/trunk/hildon-plugins-settings/src/hd-marshalers.list	2007-07-12 12:02:21 UTC (rev 12728)
@@ -0,0 +1 @@
+VOID:STRING,BOOLEAN

Modified: projects/haf/trunk/hildon-plugins-settings/src/hildon-plugin-config-parser.c
===================================================================
--- projects/haf/trunk/hildon-plugins-settings/src/hildon-plugin-config-parser.c	2007-07-12 12:00:12 UTC (rev 12727)
+++ projects/haf/trunk/hildon-plugins-settings/src/hildon-plugin-config-parser.c	2007-07-12 12:02:21 UTC (rev 12728)
@@ -312,7 +312,7 @@
 		      HP_COL_DESKTOP_FILE, filename,
 		      HP_COL_CHECKBOX, FALSE,
 		      HP_COL_POSITION,0,
-		      HP_COL_FLAG, FALSE,
+		      HP_COL_FLAG, TRUE,
 		      -1);
 
   HPCPData *data = hildon_plugin_config_parser_new_data (0,FALSE);

Modified: projects/haf/trunk/hildon-plugins-settings/src/hildon-plugin-settings-dialog.c
===================================================================
--- projects/haf/trunk/hildon-plugins-settings/src/hildon-plugin-settings-dialog.c	2007-07-12 12:00:12 UTC (rev 12727)
+++ projects/haf/trunk/hildon-plugins-settings/src/hildon-plugin-settings-dialog.c	2007-07-12 12:02:21 UTC (rev 12728)
@@ -983,6 +983,33 @@
   return names;
 }
 
+GtkTreeModel *
+hildon_plugin_settings_dialog_get_model_by_name (HildonPluginSettingsDialog *settings,
+						 const gchar *name,
+						 gboolean filter)
+{
+  GList *container_tab = NULL;
+
+
+  container_tab =
+    g_list_find_custom (settings->priv->tabs,
+                        name,
+                        (GCompareFunc)hildon_plugin_settings_dialog_compare_tab);
+
+  if (!container_tab)
+    return NULL;
+
+  HPSDTab *tab = (HPSDTab *)container_tab->data;
+
+  if (filter && tab->filter)
+    return tab->filter;
+  else
+  if (tab->filter)
+    return gtk_tree_model_filter_get_model (GTK_TREE_MODEL_FILTER (tab->filter));
+  else
+    return gtk_tree_view_get_model (GTK_TREE_VIEW (tab->tw));	  
+}
+	
 void
 hildon_plugin_settings_dialog_set_choosing_limit (HildonPluginSettingsDialog *settings,
                                                   const gchar *container_name,

Modified: projects/haf/trunk/hildon-plugins-settings/src/hildon-plugin-settings-dialog.h
===================================================================
--- projects/haf/trunk/hildon-plugins-settings/src/hildon-plugin-settings-dialog.h	2007-07-12 12:00:12 UTC (rev 12727)
+++ projects/haf/trunk/hildon-plugins-settings/src/hildon-plugin-settings-dialog.h	2007-07-12 12:02:21 UTC (rev 12728)
@@ -94,6 +94,10 @@
 GList *
 hildon_plugin_settings_dialog_get_container_names (HildonPluginSettingsDialog *settings);
 
+GtkTreeModel *
+hildon_plugin_settings_dialog_get_model_by_name (HildonPluginSettingsDialog *settings,
+						 const gchar *name,
+						 gboolean filter);
 
 void 
 hildon_plugin_settings_dialog_set_choosing_limit (HildonPluginSettingsDialog *settings,

Modified: projects/haf/trunk/hildon-plugins-settings/src/hildon-plugin-settings.c
===================================================================
--- projects/haf/trunk/hildon-plugins-settings/src/hildon-plugin-settings.c	2007-07-12 12:00:12 UTC (rev 12727)
+++ projects/haf/trunk/hildon-plugins-settings/src/hildon-plugin-settings.c	2007-07-12 12:02:21 UTC (rev 12728)
@@ -26,8 +26,21 @@
 #include <hildon-cp-plugin/hildon-cp-plugin-interface.h>
 #include <gtk/gtk.h>
 
+#include <dbus/dbus-glib.h>
+#include <dbus/dbus-glib-bindings.h>
+
+#include "hd-marshalers.h"
+
 #include "hildon-plugin-settings-dialog.h"
 
+#define SB_STATUS_NAME "org.hildon.Statusbar"
+#define SB_STATUS_PATH "/org/hildon/Statusbar"
+#define SB_STATUS_INTERFACE "org.hildon.Statusbar"
+#define SB_STATUS_METHOD "RefreshItemsStatus"
+
+#define SB_CATEGORY_TEMPORAL "temporal"
+#define SB_CATEGORY_CONDITIONAL "conditional"
+
 #include <libintl.h>
 #define _(a) dgettext(PACKAGE, a)
 
@@ -66,6 +79,31 @@
   return TRUE;
 }
 
+static gboolean
+_sb_visibility_filter (GtkTreeModel *model,
+                       GtkTreeIter *iter,
+                       gpointer data)
+{
+  if (!model || !iter)
+    return TRUE;
+
+  gboolean flag = TRUE;
+  gchar *category = NULL;
+
+  gtk_tree_model_get (model,iter,
+		      HP_COL_FLAG, &flag,
+		      HP_COL_CATEGORY, &category,
+		      -1);
+
+  if (!category)
+    return TRUE;
+  
+  if (g_str_equal (category, SB_CATEGORY_CONDITIONAL) && !flag)		  
+    return FALSE;
+
+  return TRUE;  
+}
+
 static void 
 _cell_mandatory_data_func (GtkTreeViewColumn *tc,
                            GtkCellRenderer *cell,
@@ -92,15 +130,105 @@
                     	      GtkTreeIter *iter,
                     	      gpointer data)
 {
+  gchar *category = NULL;
+  gboolean status = TRUE, cb = TRUE;
+	
+  gtk_tree_model_get (tm, iter,
+		      HP_COL_CATEGORY, &category,
+		      HP_COL_FLAG, &status,
+		      HP_COL_CHECKBOX, &cb,
+		      -1);
 
+  if (!category)
+    return;
+
+  if (g_str_equal (category, SB_CATEGORY_TEMPORAL) || 
+      g_str_equal (category, SB_CATEGORY_CONDITIONAL))
+    g_object_set (G_OBJECT (cell), "sensitive", status, NULL);
+  else
+  if (cb)	  
+    g_object_set (G_OBJECT (cell), "sensitive", TRUE, NULL);	  
 }
 
+static void 
+_sb_update_status (DBusGProxy *proxy,
+		   gchar *name,
+		   gboolean status,
+		   GtkTreeModel *tm)
+{
+  GtkTreeIter iter;
+  
+  gtk_tree_model_get_iter_first (tm, &iter);
+
+  do
+  {
+    gboolean old_status = TRUE;
+    gchar *iter_name = NULL, *iter_category = NULL;
+
+    gtk_tree_model_get (tm, &iter,
+		        HP_COL_DESKTOP_FILE, &iter_name,
+			HP_COL_FLAG, &old_status,
+			HP_COL_CATEGORY, &iter_category,
+			-1);
+
+    if (!iter_name && !iter_category)
+      continue;	    
+
+    if (g_str_equal (name, iter_name))
+    {	    
+      if (old_status != status)
+        gtk_list_store_set (GTK_LIST_STORE (tm), &iter,
+	  		    HP_COL_FLAG, status,
+		 	    -1);		   
+    }		        
+
+    g_free (iter_name);
+    g_free (iter_category);    
+  }
+  while (gtk_tree_model_iter_next (tm, &iter));  
+}
+
+static void 
+_sb_update_flag (GtkTreeModel *tm)
+{
+  GtkTreeIter iter;
+
+  gtk_tree_model_get_iter_first (tm, &iter);
+
+  do
+  {
+    gchar *iter_category = NULL;
+
+    gtk_tree_model_get (tm, &iter,
+                        HP_COL_CATEGORY, &iter_category,
+                        -1);
+
+    if (!iter_category)
+      continue;
+    
+    if (g_str_equal (SB_CATEGORY_TEMPORAL, iter_category) ||
+        g_str_equal (SB_CATEGORY_CONDITIONAL, iter_category))
+    {
+      gtk_list_store_set (GTK_LIST_STORE (tm), &iter,
+                          HP_COL_FLAG, FALSE,
+                          -1);
+    }
+
+    g_free (iter_category);
+  }
+  while (gtk_tree_model_iter_next (tm, &iter));
+}
+	
+
 osso_return_t 
 execute (osso_context_t *osso,
 	 gpointer user_data,
 	 gboolean user_activated)
 {
   gint ret;
+  DBusGConnection *conn = NULL;
+  GError *error = NULL;
+  GtkTreeModel *sbtm = NULL;
 
   GtkWidget *dialog = hildon_plugin_settings_dialog_new ();
 
@@ -111,6 +239,13 @@
     NULL,
     NULL);    
 
+  hildon_plugin_settings_dialog_set_visibility_filter
+    (HILDON_PLUGIN_SETTINGS_DIALOG (dialog),
+     "Statusbar",
+    _sb_visibility_filter,
+    NULL,
+    NULL);    
+
   hildon_plugin_settings_dialog_set_cell_data_func
     (HILDON_PLUGIN_SETTINGS_DIALOG (dialog),
      HPSD_COLUMN_TOGGLE,
@@ -140,6 +275,58 @@
      "Tasknavigator",
      3);
 
+  sbtm = hildon_plugin_settings_dialog_get_model_by_name
+          (HILDON_PLUGIN_SETTINGS_DIALOG (dialog),
+           "Statusbar",
+           FALSE);
+
+  _sb_update_flag (sbtm);
+
+  conn = dbus_g_bus_get (DBUS_BUS_SESSION, &error);
+
+  if (!error)
+  {
+    DBusGProxy *proxy = dbus_g_proxy_new_for_name (conn,
+		    				   SB_STATUS_NAME,
+						   SB_STATUS_PATH,
+						   SB_STATUS_INTERFACE);
+
+    dbus_g_object_register_marshaller (g_cclosure_user_marshal_VOID__STRING_BOOLEAN,
+                                        G_TYPE_NONE,
+                                        G_TYPE_STRING,
+                                        G_TYPE_BOOLEAN,
+                                        G_TYPE_INVALID);
+
+    dbus_g_proxy_add_signal (proxy,
+		    	     "UpdateStatus",
+			     G_TYPE_STRING,
+			     G_TYPE_BOOLEAN,
+			     G_TYPE_INVALID);
+
+    dbus_g_proxy_connect_signal (proxy,
+				 "UpdateStatus",
+				 G_CALLBACK (_sb_update_status),
+				 sbtm,
+				 NULL);
+
+    dbus_g_proxy_call (proxy,
+		       "RefreshItemsStatus",
+		       &error,
+		       G_TYPE_INVALID);
+    
+    if (error)
+    {
+      g_warning ("Oops: %s", error->message);
+      g_error_free (error);
+    }		    
+  }
+  else
+  {
+    g_warning ("%s: I couldn't connect to the bus: %s",__FILE__,error->message);
+    g_error_free (error);
+  }
+  	  
+
   gtk_widget_show (dialog);
 
   ret = gtk_dialog_run (GTK_DIALOG (dialog));


More information about the maemo-commits mailing list