[maemo-commits] [maemo-commits] r8729 - in projects/haf/trunk/hildon-fm: . debian hildon-fm

From: subversion at stage.maemo.org subversion at stage.maemo.org
Date: Tue Dec 12 16:13:33 EET 2006
Author: marivoll
Date: 2006-12-12 16:13:31 +0200 (Tue, 12 Dec 2006)
New Revision: 8729

Modified:
   projects/haf/trunk/hildon-fm/ChangeLog
   projects/haf/trunk/hildon-fm/debian/changelog
   projects/haf/trunk/hildon-fm/hildon-fm/hildon-file-chooser-dialog.c
   projects/haf/trunk/hildon-fm/hildon-fm/hildon-file-system-model.c
   projects/haf/trunk/hildon-fm/hildon-fm/hildon-file-system-obex.c
   projects/haf/trunk/hildon-fm/hildon-fm/hildon-file-system-obex.h
   projects/haf/trunk/hildon-fm/hildon-fm/hildon-file-system-private.c
   projects/haf/trunk/hildon-fm/hildon-fm/hildon-file-system-settings.c
   projects/haf/trunk/hildon-fm/hildon-fm/hildon-file-system-special-location.c
   projects/haf/trunk/hildon-fm/hildon-fm/hildon-file-system-special-location.h
   projects/haf/trunk/hildon-fm/hildon-fm/hildon-file-system-upnp.c
Log:
2006-12-12  Marius Vollmer  <marius.vollmer at nokia.com>

	Merged changes from 1.16 to 1.19.


Modified: projects/haf/trunk/hildon-fm/ChangeLog
===================================================================
--- projects/haf/trunk/hildon-fm/ChangeLog	2006-12-12 14:08:43 UTC (rev 8728)
+++ projects/haf/trunk/hildon-fm/ChangeLog	2006-12-12 14:13:31 UTC (rev 8729)
@@ -1,5 +1,81 @@
-2006-12-11  Marius Vollmer  <marius.vollmer at nokia.com>
+2006-12-12  Marius Vollmer  <marius.vollmer at nokia.com>
 
+	Merged changes from 1.16 to 1.19.
+
+>    2006-12-08  Marius Vollmer  <marius.vollmer at nokia.com>
+>
+>	    Released 1.19.
+>
+>	    * hildon-fm/hildon-file-system-private.c (hex_digit_to_int,
+>	    unescape_string): New.
+>	    (_hildon_file_system_create_file_name): Use them to unescape the
+>	    fallback display name that is directly extracted from the URI.
+>	    (N47877)
+>
+>    2006-11-30  Marius Vollmer  <marius.vollmer at nokia.com>
+>
+>	    Released 1.18.
+>
+>	    Make it possible for special locations to request a rescan, and
+>	    use it to keep the obex root folder uptodate.  (N40395)
+>
+>	    * hildon-fm/hildon-file-system-model.c (location_rescan): New.
+>	    (setup_node_for_location): Connect it.
+>	    (hildon_file_system_model_destroy_model_node): Expect three
+>	    signals to be disconnected.
+>	    (hildon_file_system_model_queue_node_reload): Refactored out of
+>	    _hildon_file_system_model_queue_reload in order to be able to
+>	    reload nodes directly without having to construct a iter first.
+>
+>	    * hildon-fm/hildon-file-system-obex.h (struct
+>	    _HildonFileSystemObex): Added binding_id member.
+>	    * hildon-fm/hildon-file-system-obex.c (bonding_changed): New, for
+>	    triggering a rescan.
+>	    (hildon_file_system_obex_init): Connect it to the file system
+>	    settings.
+>	    (hildon_file_system_obex_finalize): Disconnect it.
+>
+>	    * hildon-fm/hildon-file-system-settings.c
+>	    (hildon_file_system_settings_get_property,
+>	    hildon_file_system_settings_class_init): Added "bonding-changed"
+>	    property.
+>	    (hildon_file_system_settings_setup_dbus): Catch bonding signals
+>	    from Bluez.
+>	    (hildon_file_system_settings_handle_dbus_signal): Handle them.
+>
+>	    * hildon-fm/hildon-file-system-special-location.h (struct
+>	    _HildonFileSystemSpecialLocationClass): Added 'rescan' signal.
+>	    * hildon-fm/hildon-file-system-special-location.c (enum
+>	    HildonFileSystemSpecialLocationSignals,
+>	    hildon_file_system_special_location_class_init): Register it.
+>
+>    2006-11-29  Marius Vollmer  <marius.vollmer at nokia.com>
+>
+>	    * hildon-fm/hildon-file-system-upnp.c
+>	    (hildon_file_system_upnp_init): Use 'device' directly instead of
+>	    casting it; it is already the right type.
+>
+>	    * hildon-fm/hildon-file-chooser-dialog.c (set_stub_and_ext): Do
+>	    not set entry widget, that was confusing the internal state
+>	    related to autonaming somehow. (N48902)
+>	    (hildon_file_chooser_dialog_set_current_folder): Terminate
+>	    g_strconcat argument list with NULL, stupid. (N48903)
+>
+>    2006-11-21  Marius Vollmer  <marius.vollmer at nokia.com>
+>
+>	    Released 1.17
+>
+>	    * hildon-fm/hildon-file-system-obex.c
+>	    (_obex_addr_to_display_name): Do not call
+>	    dbus_connection_disconnect.
+>
+>	    * hildon-fm/hildon-file-system-upnp.c
+>	    (hildon_file_system_upnp_create_child_location): Use
+>	    qgn_list_filesys_mediaserver icon instead of
+>	    qgn_list_filesys_divc_cls. (N45114)
+
+2006-12-08  Marius Vollmer  <marius.vollmer at nokia.com>
+
 	* hildon-fm/Makefile.am (libhildonfm_la_SOURCES): Added
 	hildon-file-common-private.h so that it gets distributed. (N49099)
 

Modified: projects/haf/trunk/hildon-fm/debian/changelog
===================================================================
--- projects/haf/trunk/hildon-fm/debian/changelog	2006-12-12 14:08:43 UTC (rev 8728)
+++ projects/haf/trunk/hildon-fm/debian/changelog	2006-12-12 14:13:31 UTC (rev 8729)
@@ -1,7 +1,10 @@
 hildon-fm (2.1-0unreleased1) unstable; urgency=low
+
+  * Merged changes from 1.16-1 to 1.19-1.
+    Fixes: NB#48902, NB#48903, NB#40395.
+    Fixes: NB#45114, NB#36627, NB#47133, NB#44985, NB#46601.
+  * Fixes: MB#469, MB#874.
   
-  * Fixes: NB#45114, MB#469, MB#874.
-
  -- Marius Vollmer <marius.vollmer at nokia.com>  Mon, 20 Nov 2006 19:40:56 +0200
 
 hildon-fm (2.0-1) unstable; urgency=low

Modified: projects/haf/trunk/hildon-fm/hildon-fm/hildon-file-chooser-dialog.c
===================================================================
--- projects/haf/trunk/hildon-fm/hildon-fm/hildon-file-chooser-dialog.c	2006-12-12 14:08:43 UTC (rev 8728)
+++ projects/haf/trunk/hildon-fm/hildon-fm/hildon-file-chooser-dialog.c	2006-12-12 14:13:31 UTC (rev 8729)
@@ -25,6 +25,9 @@
   * HildonFileChooserDialog widget
   */
 
+#define _GNU_SOURCE  /* To get the GNU version of basename. */
+#include <string.h>
+
 #include "hildon-file-selection.h"
 #include "hildon-file-chooser-dialog.h"
 #include "hildon-file-system-private.h"
@@ -320,7 +323,6 @@
      length when the user hits "Ok".
   */
 
-  ULOG_DEBUG ("Setting maximum length to %d", max_length);
   gtk_entry_set_max_length (GTK_ENTRY (self->priv->entry_name),
 			    self->priv->max_filename_length);
 }
@@ -479,8 +481,6 @@
     priv->ext_name = g_strdup(dot);
     *dot = '\0';
   }
-
-  set_entry (priv->entry_name, priv->stub_name, priv->ext_name);
 }
 
 static void
@@ -530,7 +530,7 @@
             gtk_editable_set_position(GTK_EDITABLE(priv->entry_name), pos);
         }
         else
-          set_entry (priv->entry_name, priv->stub_name, priv->ext_name);
+	  set_entry (priv->entry_name, priv->stub_name, priv->ext_name);
 
         g_signal_handler_unblock(priv->entry_name, priv->changed_handler);
     }
@@ -621,11 +621,11 @@
     hildon_file_chooser_dialog_set_limit(self);
 
     /* Now resplit the name into stub and ext parts since now the
-       situation might have as to whether it is a folder or not.
+       situation might have changed as to whether it is a folder or
+       not.
     */
     if (self->priv->ext_name)
-      name = g_strconcat (self->priv->stub_name,
-			  self->priv->ext_name);
+      name = g_strconcat (self->priv->stub_name, self->priv->ext_name, NULL);
     else
       name = g_strdup (self->priv->stub_name);
 
@@ -651,7 +651,7 @@
 {
     HildonFileChooserDialogPrivate *priv =
         HILDON_FILE_CHOOSER_DIALOG(chooser)->priv;
-
+    
     set_stub_and_ext (priv, name);
 
     /* If we have autonaming enabled, we try to remove possible

Modified: projects/haf/trunk/hildon-fm/hildon-fm/hildon-file-system-model.c
===================================================================
--- projects/haf/trunk/hildon-fm/hildon-fm/hildon-file-system-model.c	2006-12-12 14:08:43 UTC (rev 8728)
+++ projects/haf/trunk/hildon-fm/hildon-fm/hildon-file-system-model.c	2006-12-12 14:13:31 UTC (rev 8729)
@@ -176,7 +176,13 @@
 static void 
 location_connection_state_changed(HildonFileSystemSpecialLocation *location,
     GNode *node);
+static void 
+location_rescan (HildonFileSystemSpecialLocation *location, GNode *node);
 static void setup_node_for_location(GNode *node);
+static void
+hildon_file_system_model_queue_node_reload (HildonFileSystemModel *model,
+					    GNode *node,
+					    gboolean force);
 
 static GtkTreePath *hildon_file_system_model_get_path(GtkTreeModel * model,
                                                       GtkTreeIter * iter);
@@ -1616,7 +1622,7 @@
              Ensure that all expected handlers were disconnected. */
           gint check = g_signal_handlers_disconnect_matched(
             model_node->location, G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, node);
-          g_assert(check == 2);
+          g_assert(check == 3);
           g_object_unref(model_node->location);
       }
 
@@ -2325,6 +2331,24 @@
     }
 }
 
+static void 
+location_rescan(HildonFileSystemSpecialLocation *location, GNode *node)
+{
+    HildonFileSystemModelNode *model_node;
+    HildonFileSystemModel *model;
+
+    g_assert(HILDON_IS_FILE_SYSTEM_SPECIAL_LOCATION(location));
+    g_assert(node != NULL && node->data != NULL);
+
+    ULOG_INFO("LOCATION RESCAN: %s", location->basepath);
+
+    model_node = node->data;
+    model = model_node->model;
+
+    hildon_file_system_model_queue_node_reload
+      (HILDON_FILE_SYSTEM_MODEL(model), node, TRUE);
+}
+
 static HildonFileSystemModelNode * 
 create_model_node_for_location(HildonFileSystemModel *self,
     HildonFileSystemSpecialLocation *location)
@@ -2385,6 +2409,8 @@
                 G_CALLBACK(location_changed), node);
             g_signal_connect(location, "connection-state",
                 G_CALLBACK(location_connection_state_changed), node);    
+            g_signal_connect(location, "rescan",
+                G_CALLBACK(location_rescan), node);
         }
         else
             (void) link_file_folder(node, model_node->path, &error);
@@ -2789,17 +2815,13 @@
     return FALSE;
 }
 
-void _hildon_file_system_model_queue_reload(HildonFileSystemModel *model,
-  GtkTreeIter *parent_iter, gboolean force)
+static void
+hildon_file_system_model_queue_node_reload (HildonFileSystemModel *model,
+					    GNode *node,
+					    gboolean force)
 {
-  GNode *node;
-
   g_return_if_fail(HILDON_IS_FILE_SYSTEM_MODEL(model));
-  g_return_if_fail(parent_iter != NULL);
-  g_return_if_fail(parent_iter->stamp == model->priv->stamp);
 
-  node = parent_iter->user_data;
-
   if (!node_needs_reload (model, node, force))
     return;
 
@@ -2810,6 +2832,20 @@
     }
 }
 
+void _hildon_file_system_model_queue_reload(HildonFileSystemModel *model,
+  GtkTreeIter *parent_iter, gboolean force)
+{
+  GNode *node;
+
+  g_return_if_fail(HILDON_IS_FILE_SYSTEM_MODEL(model));
+  g_return_if_fail(parent_iter != NULL);
+  g_return_if_fail(parent_iter->stamp == model->priv->stamp);
+
+  node = parent_iter->user_data;
+
+  hildon_file_system_model_queue_node_reload (model, node, force);
+}
+
 static void
 _hildon_file_system_model_load_children(HildonFileSystemModel *model,
                                         GtkTreeIter *parent_iter)

Modified: projects/haf/trunk/hildon-fm/hildon-fm/hildon-file-system-obex.c
===================================================================
--- projects/haf/trunk/hildon-fm/hildon-fm/hildon-file-system-obex.c	2006-12-12 14:08:43 UTC (rev 8728)
+++ projects/haf/trunk/hildon-fm/hildon-fm/hildon-file-system-obex.c	2006-12-12 14:13:31 UTC (rev 8729)
@@ -82,10 +82,22 @@
 }
 
 static void
+bonding_changed (GObject *settings, GParamSpec *param, gpointer data)
+{
+  HildonFileSystemObex *obex = HILDON_FILE_SYSTEM_OBEX (data);
+
+  obex->has_children = FALSE;
+  g_signal_emit_by_name (data, "rescan");
+}
+
+static void
 hildon_file_system_obex_init (HildonFileSystemObex *device)
 {
+    HildonFileSystemSettings *fs_settings;
     HildonFileSystemSpecialLocation *location;
 
+    fs_settings = _hildon_file_system_settings_get_instance ();
+
     location = HILDON_FILE_SYSTEM_SPECIAL_LOCATION (device);
     location->compatibility_type = HILDON_FILE_SYSTEM_MODEL_GATEWAY;
     location->fixed_icon = g_strdup ("qgn_list_filesys_divc_cls");
@@ -93,11 +105,29 @@
     location->failed_access_message = NULL;
     
     device->has_children = FALSE;
+
+    device->bonding_handler_id =
+      g_signal_connect (fs_settings,
+			"notify::bonding-changed",
+			G_CALLBACK (bonding_changed),
+			device);
 }
 
 static void
 hildon_file_system_obex_finalize (GObject *obj)
 {
+    HildonFileSystemObex *obex;
+    HildonFileSystemSettings *fs_settings;
+    
+    obex = HILDON_FILE_SYSTEM_OBEX (obj);
+    fs_settings = _hildon_file_system_settings_get_instance ();
+    if (g_signal_handler_is_connected (fs_settings,
+				       obex->bonding_handler_id))
+      {
+        g_signal_handler_disconnect (fs_settings, 
+				     obex->bonding_handler_id);
+      }
+
     G_OBJECT_CLASS (hildon_file_system_obex_parent_class)->finalize (obj);
 }
 
@@ -287,13 +317,14 @@
 
     dbus_error_init(&error);
     conn = dbus_bus_get_private (DBUS_BUS_SYSTEM, &error);
-
+    
     if (!conn) {
         dbus_error_free(&error);
 
         return NULL;
     }
 
+    dbus_connection_set_exit_on_disconnect (conn, FALSE);
 
     msg = dbus_message_new_method_call ("org.bluez", "/org/bluez/hci0",
                                         "org.bluez.Adapter", "GetRemoteName");
@@ -334,8 +365,8 @@
 
     escape:
 
+    dbus_connection_close (conn);
     dbus_connection_unref (conn);
 
-
     return ret_str;
 }

Modified: projects/haf/trunk/hildon-fm/hildon-fm/hildon-file-system-obex.h
===================================================================
--- projects/haf/trunk/hildon-fm/hildon-fm/hildon-file-system-obex.h	2006-12-12 14:08:43 UTC (rev 8728)
+++ projects/haf/trunk/hildon-fm/hildon-fm/hildon-file-system-obex.h	2006-12-12 14:13:31 UTC (rev 8729)
@@ -52,6 +52,7 @@
 {
     HildonFileSystemRemoteDevice parent_instance;
     gboolean has_children;
+    gint bonding_handler_id;
 };
 
 struct _HildonFileSystemObexClass

Modified: projects/haf/trunk/hildon-fm/hildon-fm/hildon-file-system-private.c
===================================================================
--- projects/haf/trunk/hildon-fm/hildon-fm/hildon-file-system-private.c	2006-12-12 14:08:43 UTC (rev 8728)
+++ projects/haf/trunk/hildon-fm/hildon-fm/hildon-file-system-private.c	2006-12-12 14:13:31 UTC (rev 8729)
@@ -447,10 +447,52 @@
   }
 }
 
+static int
+hex_digit_to_int (char d)
+{
+  if (d >= '0' && d <= '9')
+    return d - '0';
+  if (d >= 'a' && d <= 'f')
+    return d - 'a' + 10;
+  if (d >= 'A' && d <= 'F')
+    return d - 'A' + 10;
+  return -1;
+}
+ 
+static char *
+unescape_string (const char *escaped)
+{
+  char *result = g_strdup (escaped);
+  char *a, *b;
+  
+  a = b = result;
+  while (*a)
+    {
+      if (a[0] == '%' && a[1] != '\0' && a[2] != '\0')
+	{
+	  int d1 = hex_digit_to_int (a[1]), d2 = hex_digit_to_int (a[2]);
+	  int c = 16*d1 + d2;
+
+	  if (d1 >= 0 && d2 >= 0 && c != 0)
+	    {
+	      a += 3;
+	      *b++ = c;
+	      continue;
+	    }
+	}
+
+      *b++ = *a++;
+    }
+  *b = '\0';
+
+  return result;
+}
+
 gchar *
-_hildon_file_system_create_file_name(GtkFileSystem *fs,
-  const GtkFilePath *path, HildonFileSystemSpecialLocation *location, 
-  GtkFileInfo *info)
+_hildon_file_system_create_file_name (GtkFileSystem *fs,
+				      const GtkFilePath *path,
+				      HildonFileSystemSpecialLocation *location, 
+				      GtkFileInfo *info)
 {
   if (location) {
     char *name;
@@ -461,7 +503,7 @@
   if (info)  
     return g_strdup(gtk_file_info_get_display_name(info));
 
-  return g_strdup(get_custom_root_name(path));
+  return unescape_string (get_custom_root_name (path));
 }
 
 gchar *

Modified: projects/haf/trunk/hildon-fm/hildon-fm/hildon-file-system-settings.c
===================================================================
--- projects/haf/trunk/hildon-fm/hildon-fm/hildon-file-system-settings.c	2006-12-12 14:08:43 UTC (rev 8728)
+++ projects/haf/trunk/hildon-fm/hildon-fm/hildon-file-system-settings.c	2006-12-12 14:13:31 UTC (rev 8729)
@@ -62,7 +62,8 @@
   PROP_MMC_USED,
   PROP_MMC_CORRUPTED,
   PROP_INTERNAL_MMC_CORRUPTED,
-  PROP_IAP_CONNECTED
+  PROP_IAP_CONNECTED,
+  PROP_BONDING_CHANGED
 };
 
 #define PRIVATE(obj) HILDON_FILE_SYSTEM_SETTINGS(obj)->priv
@@ -83,6 +84,14 @@
 #define ICD_MATCH_RULE "type='signal',interface='" ICD_DBUS_INTERFACE \
                        "',member='" ICD_STATUS_CHANGED_SIG "'"
 
+#define BT_BONDING_CREATED_RULE "type='signal',"                 \
+                                "interface='org.bluez.Adapter'," \
+                                "member='BondingCreated'"
+
+#define BT_BONDING_REMOVED_RULE "type='signal',"                 \
+                                "interface='org.bluez.Adapter'," \
+                                "member='BondingRemoved'"
+
 /* For getting and tracking the Bluetooth name
  */
 #define BTNAME_SERVICE                  "org.bluez"
@@ -163,6 +172,9 @@
     case PROP_IAP_CONNECTED:
       g_value_set_boolean(value, priv->iap_connected);
       break;
+    case PROP_BONDING_CHANGED:
+      g_value_set_boolean(value, TRUE);
+      break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
       break;
@@ -370,18 +382,24 @@
   g_assert(HILDON_IS_FILE_SYSTEM_SETTINGS(data));
 
   if (dbus_message_is_signal(msg, MCE_SIGNAL_IF, MCE_DEVICE_MODE_SIG))
-  {
-    set_flight_mode_from_message(HILDON_FILE_SYSTEM_SETTINGS(data), msg);
-  }
+    {
+      set_flight_mode_from_message(HILDON_FILE_SYSTEM_SETTINGS(data), msg);
+    }
   else if (dbus_message_is_signal(msg, BTNAME_SIGNAL_IF, BTNAME_SIG_CHANGED))
-  {
-    set_bt_name_from_message(HILDON_FILE_SYSTEM_SETTINGS(data), msg);
-  }
+    {
+      set_bt_name_from_message(HILDON_FILE_SYSTEM_SETTINGS(data), msg);
+    }
+  else if (dbus_message_is_signal(msg, "org.bluez.Adapter", "BondingCreated")
+	   || dbus_message_is_signal(msg, "org.bluez.Adapter",
+				     "BondingRemoved"))
+    {
+      g_object_notify (data, "bonding-changed");
+    }
   else if (dbus_message_is_signal (msg, ICD_DBUS_INTERFACE,
 				   ICD_STATUS_CHANGED_SIG))
-  {
-    set_icd_status_from_message (HILDON_FILE_SYSTEM_SETTINGS (data), msg);
-  }
+    {
+      set_icd_status_from_message (HILDON_FILE_SYSTEM_SETTINGS (data), msg);
+    }
 				   
   return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
 }
@@ -465,7 +483,7 @@
     dbus_error_free(&error);
     return;
   }
-  dbus_connection_ref(self->priv->dbus_conn);
+  dbus_connection_set_exit_on_disconnect (self->priv->dbus_conn, FALSE);
 
   /* Let's query initial state. These calls are async, so they do not
      consume too much startup time */
@@ -529,6 +547,22 @@
       dbus_error_free (&error);
     }
 
+  dbus_error_init (&error);
+  dbus_bus_add_match (conn, BT_BONDING_CREATED_RULE, &error);
+  if (dbus_error_is_set(&error))
+    {
+      ULOG_ERR_F("dbus_bus_add_match failed: %s\n", error.message);
+      dbus_error_free (&error);
+    }
+
+  dbus_error_init (&error);
+  dbus_bus_add_match (conn, BT_BONDING_REMOVED_RULE, &error);
+  if (dbus_error_is_set(&error))
+    {
+      ULOG_ERR_F("dbus_bus_add_match failed: %s\n", error.message);
+      dbus_error_free (&error);
+    }
+
   if (!dbus_connection_add_filter(conn,
       hildon_file_system_settings_handle_dbus_signal, self, NULL))
   {
@@ -599,6 +633,7 @@
     dbus_bus_remove_match(priv->dbus_conn, ICD_MATCH_RULE, NULL);
     dbus_connection_remove_filter(priv->dbus_conn,
       hildon_file_system_settings_handle_dbus_signal, obj);
+    dbus_connection_close(priv->dbus_conn);
     dbus_connection_unref(priv->dbus_conn);
   }
   
@@ -658,6 +693,10 @@
     g_param_spec_boolean("iap-connected", "IAP Connected",
 	                 "Whether or not we have a internet connection",
 			 FALSE, G_PARAM_READABLE));
+  g_object_class_install_property(object_class, PROP_BONDING_CHANGED,
+    g_param_spec_boolean("bonding-changed", "Bluetooth bondings changed",
+	                 "Hack: only used for notify signals...",
+			 FALSE, G_PARAM_READABLE));
 }
 
 static gboolean delayed_init(gpointer data)

Modified: projects/haf/trunk/hildon-fm/hildon-fm/hildon-file-system-special-location.c
===================================================================
--- projects/haf/trunk/hildon-fm/hildon-fm/hildon-file-system-special-location.c	2006-12-12 14:08:43 UTC (rev 8728)
+++ projects/haf/trunk/hildon-fm/hildon-fm/hildon-file-system-special-location.c	2006-12-12 14:13:31 UTC (rev 8729)
@@ -29,6 +29,7 @@
 {
     SIGNAL_CHANGED,
     SIGNAL_CONNECTION_STATE,
+    SIGNAL_RESCAN,
     LAST_SIGNAL
 };
 
@@ -77,6 +78,16 @@
                 NULL, NULL,
                 g_cclosure_marshal_VOID__VOID,
                 G_TYPE_NONE, 0);
+
+    special_location_signals[SIGNAL_RESCAN] =
+                g_signal_new ("rescan",
+                G_TYPE_FROM_CLASS (gobject_class),
+                G_SIGNAL_RUN_FIRST,
+                G_STRUCT_OFFSET (HildonFileSystemSpecialLocationClass,
+                    rescan),
+                NULL, NULL,
+                g_cclosure_marshal_VOID__VOID,
+                G_TYPE_NONE, 0);
 }
 
 static void

Modified: projects/haf/trunk/hildon-fm/hildon-fm/hildon-file-system-special-location.h
===================================================================
--- projects/haf/trunk/hildon-fm/hildon-fm/hildon-file-system-special-location.h	2006-12-12 14:08:43 UTC (rev 8728)
+++ projects/haf/trunk/hildon-fm/hildon-fm/hildon-file-system-special-location.h	2006-12-12 14:13:31 UTC (rev 8729)
@@ -89,6 +89,7 @@
     /* signals */
     void (*changed) (GObject *obj);
     void (*connection_state) (GObject *obj);
+    void (*rescan) (GObject *obj);
 };
 
 GType hildon_file_system_special_location_get_type (void) G_GNUC_CONST;

Modified: projects/haf/trunk/hildon-fm/hildon-fm/hildon-file-system-upnp.c
===================================================================
--- projects/haf/trunk/hildon-fm/hildon-fm/hildon-file-system-upnp.c	2006-12-12 14:08:43 UTC (rev 8728)
+++ projects/haf/trunk/hildon-fm/hildon-fm/hildon-file-system-upnp.c	2006-12-12 14:13:31 UTC (rev 8729)
@@ -79,7 +79,6 @@
 {
     HildonFileSystemSettings *fs_settings;
     HildonFileSystemSpecialLocation *location;
-    HildonFileSystemUpnp *upnp;
 
     fs_settings = _hildon_file_system_settings_get_instance ();
 
@@ -89,12 +88,13 @@
     location->fixed_title = g_strdup (_("sfil_li_shared_media"));
     location->failed_access_message = NULL;
 
-    upnp = HILDON_FILE_SYSTEM_UPNP (location);
-    upnp->connected_handler_id =
+    device->has_children = FALSE;
+
+    device->connected_handler_id =
       g_signal_connect (fs_settings,
 			"notify::iap-connected",
 			G_CALLBACK (iap_connected_changed),
-			upnp);
+			device);
 }
 
 static void
@@ -137,7 +137,7 @@
       child = g_object_new(HILDON_TYPE_FILE_SYSTEM_DYNAMIC_DEVICE, NULL);
       HILDON_FILE_SYSTEM_REMOTE_DEVICE (child)->accessible =
           HILDON_FILE_SYSTEM_REMOTE_DEVICE (location)->accessible;
-      hildon_file_system_special_location_set_icon 
+      hildon_file_system_special_location_set_icon
 	(child, "qgn_list_filesys_mediaserver");
       child->failed_access_message = _("sfil_ib_cannot_connect_device");
 


More information about the maemo-commits mailing list