[maemo-commits] [maemo-commits] r12918 - projects/haf/trunk/hildon-fm/hildon-fm

From: subversion at stage.maemo.org subversion at stage.maemo.org
Date: Mon Jul 30 17:39:47 EEST 2007
Author: marivoll
Date: 2007-07-30 17:39:45 +0300 (Mon, 30 Jul 2007)
New Revision: 12918

Modified:
   projects/haf/trunk/hildon-fm/hildon-fm/hildon-file-chooser-dialog.c
Log:
	* hildon-fm/hildon-file-chooser-dialog.c
	(get_global_pane_position, set_global_pane_position): New.
	(hildon_file_chooser_dialog_constructor,
	hildon_file_chooser_dialog_destroy): Use them to set and store the
	pane position permanently.


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	2007-07-30 14:38:33 UTC (rev 12917)
+++ projects/haf/trunk/hildon-fm/hildon-fm/hildon-file-chooser-dialog.c	2007-07-30 14:39:45 UTC (rev 12918)
@@ -59,6 +59,7 @@
 #include <libintl.h>
 #include <gdk/gdkx.h>
 #include <stdlib.h>
+#include <glib.h>
 
 #include "hildon-file-common-private.h"
 #define HILDON_RESPONSE_FOLDER_BUTTON 12345
@@ -283,7 +284,40 @@
   return len;
 }
 
+static gint
+get_global_pane_position ()
+{
+  GError *error = NULL;
+  GKeyFile *keys;
+  gint pos;
+
+  keys = hildon_file_system_open_user_settings ();
+  pos = g_key_file_get_integer (keys, "default", "pane_position", &error);
+  if (error)
+    {
+      pos = 250;
+      if (!g_error_matches (error, G_KEY_FILE_ERROR,
+			    G_KEY_FILE_ERROR_KEY_NOT_FOUND)
+	  && !g_error_matches (error, G_KEY_FILE_ERROR,
+			       G_KEY_FILE_ERROR_GROUP_NOT_FOUND))
+	fprintf (stderr, "%s\n", error->message);
+      g_error_free (error);
+    }
+
+  g_key_file_free (keys);
+  return pos;
+}
+
 static void
+set_global_pane_position (gint pos)
+{
+  GKeyFile *keys = hildon_file_system_open_user_settings ();
+  g_key_file_set_integer (keys, "default", "pane_position", pos);
+  hildon_file_system_write_user_settings (keys);
+  g_key_file_free (keys);
+}
+
+static void
 hildon_file_chooser_dialog_set_limit(HildonFileChooserDialog *self)
 {
   /* The full pathname is limited to MAX_FULL_PATH_LENGTH characters,
@@ -1572,10 +1606,21 @@
 static void hildon_file_chooser_dialog_destroy(GtkObject * obj)
 {
     HildonFileChooserDialog *dialog;
+    gint pos;
 
     ULOG_DEBUG_F("entered");
 
     dialog = HILDON_FILE_CHOOSER_DIALOG(obj);
+    
+    if (dialog->priv->filetree)
+      {
+	pos = -1;
+	g_object_get (dialog->priv->filetree,
+		      "pane-position", &pos,
+		      NULL);
+	if (pos >= 0)
+	  set_global_pane_position (pos);
+      }
 
     /* We need sometimes to break cyclic references */
 
@@ -1589,6 +1634,8 @@
         dialog->priv->model = NULL;
     }
 
+    dialog->priv->filetree = NULL;
+
     GTK_OBJECT_CLASS(hildon_file_chooser_dialog_parent_class)->
         destroy(obj);
 }
@@ -1962,9 +2009,12 @@
     priv = HILDON_FILE_CHOOSER_DIALOG(obj)->priv;
 
     g_assert(priv->model);
-    priv->filetree = g_object_new(HILDON_TYPE_FILE_SELECTION,
-      "model", priv->model, "visible-columns",
-      HILDON_FILE_SELECTION_SHOW_NAME | HILDON_FILE_SELECTION_SHOW_MODIFIED,
+    priv->filetree = g_object_new
+      (HILDON_TYPE_FILE_SELECTION,
+       "model", priv->model,
+       "visible-columns", (HILDON_FILE_SELECTION_SHOW_NAME
+			   | HILDON_FILE_SELECTION_SHOW_MODIFIED),
+       "pane-position", get_global_pane_position (),
       NULL);
 
     gtk_box_pack_start(GTK_BOX(GTK_DIALOG(obj)->vbox),


More information about the maemo-commits mailing list