[maemo-commits] [maemo-commits] r14672 - in projects/haf/trunk/hildon-desktop: . src

From: subversion at stage.maemo.org subversion at stage.maemo.org
Date: Mon Oct 29 19:30:44 EET 2007
Author: jobi
Date: 2007-10-29 19:30:43 +0200 (Mon, 29 Oct 2007)
New Revision: 14672

Modified:
   projects/haf/trunk/hildon-desktop/ChangeLog
   projects/haf/trunk/hildon-desktop/src/hd-home-window.c
Log:

2007-10-29  Johan Bilien  <johan.bilien at nokia.com>

	* src/hd-home-window.c (hd_home_window_constructor): if the background
	file has disappeared, revert to default. Fixes: NB#72925



Modified: projects/haf/trunk/hildon-desktop/ChangeLog
===================================================================
--- projects/haf/trunk/hildon-desktop/ChangeLog	2007-10-29 14:43:51 UTC (rev 14671)
+++ projects/haf/trunk/hildon-desktop/ChangeLog	2007-10-29 17:30:43 UTC (rev 14672)
@@ -1,3 +1,8 @@
+2007-10-29  Johan Bilien  <johan.bilien at nokia.com>
+
+	* src/hd-home-window.c (hd_home_window_constructor): if the background
+	file has disappeared, revert to default. Fixes: NB#72925
+
 2007-10-29  Lucas Rocha  <lucas.rocha at nokia.com>
 
 	* src/hd-switcher-menu.c (hd_switcher_menu_fullscreen_cb): only reset

Modified: projects/haf/trunk/hildon-desktop/src/hd-home-window.c
===================================================================
--- projects/haf/trunk/hildon-desktop/src/hd-home-window.c	2007-10-29 14:43:51 UTC (rev 14671)
+++ projects/haf/trunk/hildon-desktop/src/hd-home-window.c	2007-10-29 17:30:43 UTC (rev 14672)
@@ -366,6 +366,7 @@
   HildonDesktopBackground      *background = NULL;
   GError                       *error = NULL;
   gchar                        *conffile;
+  gboolean                      revert_to_default = FALSE;
 
   retval = G_OBJECT_CLASS (hd_home_window_parent_class)->constructor (gtype,
                                                                       n_params,
@@ -413,60 +414,87 @@
                                   conffile,
                                   &error);
 
+  if (!error)
+  {
+    /* Here we test, if the filename is local, whether the file still
+     * exists. We don't test for non-local filesystems as it would be
+     * too costly */
+    const gchar *uri = hildon_desktop_background_get_filename (background);
+    gchar *filename = NULL;
 
-  if (error)
+    if (uri[0] == '/')
+      filename = g_strdup (uri);
+    else if (g_str_has_prefix (uri, "file://"))
+      filename = g_filename_from_uri (uri, NULL, NULL);
+
+    if (filename)
     {
-      GKeyFile         *keyfile;
-      const GdkColor    default_color = {0, 0, 0, 0};
-      gchar            *filename = NULL;
+      if (!g_file_test (filename, G_FILE_TEST_IS_REGULAR))
+        revert_to_default = TRUE;
 
-      g_clear_error (&error);
+      g_free (filename);
+    }
+  }
+  else
+  {
+    g_clear_error (&error);
+    revert_to_default = TRUE;
+  }
 
+  if (revert_to_default)
+  {
+    GKeyFile         *keyfile;
+    const GdkColor    default_color = {0, 0, 0, 0};
+    gchar            *filename = NULL;
+
 #ifdef DEBUG
-      g_debug ("Got an error when loading background configuration, "
-               "reverting to default background.");
+    g_debug ("Got an error when loading background configuration, "
+             "reverting to default background.");
 #endif
-      
-      /* Revert to the default background file */
-      keyfile = g_key_file_new ();
-      g_key_file_load_from_file (keyfile,
-                                 HD_HOME_BACKGROUND_DEFAULT,
-                                 G_KEY_FILE_NONE,
-                                 &error);
-      if (error) goto error;
 
-      filename = g_key_file_get_string (keyfile,
-                                        BG_DESKTOP_GROUP,
-                                        BG_DESKTOP_IMAGE_FILENAME,
-                                        &error);
+    /* Revert to the default background file */
+    keyfile = g_key_file_new ();
+    g_key_file_load_from_file (keyfile,
+                               HD_HOME_BACKGROUND_DEFAULT,
+                               G_KEY_FILE_NONE,
+                               &error);
+    if (error) goto error;
 
-      if (error) goto error;
+    filename = g_key_file_get_string (keyfile,
+                                      BG_DESKTOP_GROUP,
+                                      BG_DESKTOP_IMAGE_FILENAME,
+                                      &error);
 
+    if (error) goto error;
+
+    if (background)
+      g_object_unref (background);
+
+    background = g_object_new (HD_TYPE_HOME_BACKGROUND,
+                               "filename", filename,
+                               "color", &default_color,
+                               NULL);
+
+    hildon_desktop_background_save (background,
+                                    conffile,
+                                    NULL);
+
+error:
+    if (error)
+    {
+      g_warning ("Could not load default background: %s",
+                 error->message);
+      g_clear_error (&error);
       background = g_object_new (HD_TYPE_HOME_BACKGROUND,
-                                 "filename", filename,
+                                 "filename", HD_HOME_BACKGROUND_NO_IMAGE,
                                  "color", &default_color,
                                  NULL);
+    }
 
-      hildon_desktop_background_save (background,
-                                      conffile,
-                                      NULL);
+    g_free (filename);
 
-error:
-      if (error)
-        {
-          g_warning ("Could not load default background: %s",
-                     error->message);
-          g_clear_error (&error);
-          background = g_object_new (HD_TYPE_HOME_BACKGROUND,
-                                     "filename", HD_HOME_BACKGROUND_NO_IMAGE,
-                                     "color", &default_color,
-                                     NULL);
-        }
+  }
 
-      g_free (filename);
-
-    }
-
   g_free (conffile);
 
 


More information about the maemo-commits mailing list