* added first steps toward widget memory for GtkTreeView widgets
[modest] / src / modest-widget-memory.c
index 43c52d1..b9c9894 100644 (file)
 
 #include "modest-widget-memory.h"
 
-
 #define PARAM_X           "x"
 #define PARAM_Y           "y"
 #define PARAM_HEIGHT      "height"
 #define PARAM_WIDTH       "width"
-
 #define PARAM_POS         "pos"
 
-
 static gchar*
 get_keyname (ModestConf *conf, const gchar *name, const gchar *param)
 {
@@ -52,12 +49,55 @@ get_keyname (ModestConf *conf, const gchar *name, const gchar *param)
 }
 
 
+
 static gboolean
-save_settings_window (ModestConf *conf, GtkWindow *win, const gchar *name)
+save_settings_widget (ModestConf *conf, GtkWidget *widget, const gchar *name)
 {
        gchar *key;
 
-       int x,y;
+       key = get_keyname (conf, name, PARAM_HEIGHT);
+       modest_conf_set_int (conf, key, GTK_WIDGET(widget)->allocation.height, NULL);
+       g_free (key);
+       
+       key = get_keyname (conf, name, PARAM_WIDTH);
+       modest_conf_set_int (conf, key, GTK_WIDGET(widget)->allocation.width, NULL);
+       g_free (key);
+
+       return TRUE;
+}
+
+
+static gboolean
+restore_settings_widget (ModestConf *conf, GtkWidget *widget, const gchar *name)
+{
+       GtkRequisition req;
+       gchar *key;
+
+       key = get_keyname (conf, name, PARAM_HEIGHT);
+       
+       if (modest_conf_key_exists (conf, key, NULL))
+               req.height = modest_conf_get_int (conf, key, NULL);
+
+       g_free (key);
+       
+       key = get_keyname (conf, name, PARAM_WIDTH);
+       if (modest_conf_key_exists (conf, key, NULL))
+               req.width = modest_conf_get_int (conf, key, NULL);
+       g_free (key);
+
+       if (req.height && req.width) 
+               gtk_widget_size_request (widget, &req);
+
+       return TRUE;
+
+}
+
+
+
+static gboolean
+save_settings_window (ModestConf *conf, GtkWindow *win, const gchar *name)
+{
+       gchar *key;
        int height, width;
        
        gtk_window_get_size (win, &width, &height);
@@ -69,7 +109,7 @@ save_settings_window (ModestConf *conf, GtkWindow *win, const gchar *name)
        key = get_keyname (conf, name, PARAM_WIDTH);
        modest_conf_set_int (conf, key, width, NULL);
        g_free (key);
-
+       
        return TRUE;
 }
 
@@ -134,6 +174,36 @@ restore_settings_paned (ModestConf *conf, GtkPaned *paned, const gchar *name)
 }
 
 
+static gboolean
+modest_widget_memory_save_settings_treeview (ModestConf *conf, GtkTreeView *treeview,
+                                            const gchar *name)
+{
+       GList *cols;
+
+       cols = gtk_tree_view_get_columns (treeview);
+       /* FIXME: implement this */
+       while (cols) {
+               gint size = gtk_tree_view_column_get_width (GTK_TREE_VIEW_COLUMN(cols->data));
+               cols = g_list_next (cols);
+       }
+       
+       
+       g_list_free (cols);
+       
+       return TRUE;
+}
+
+
+
+static gboolean
+modest_widget_memory_restore_settings_treeview (ModestConf *conf, GtkTreeView *treeview,
+                                               const gchar *name)
+{
+       /* FIXME */
+       return TRUE;
+}
+
+
 gboolean
 modest_widget_memory_save_settings (ModestConf *conf, GtkWidget *widget,
                                    const gchar *name)
@@ -143,14 +213,17 @@ modest_widget_memory_save_settings (ModestConf *conf, GtkWidget *widget,
        g_return_val_if_fail (name, FALSE);
 
        if (GTK_IS_WINDOW(widget))
-               save_settings_window (conf, (GtkWindow*)widget, name);
-       if (GTK_IS_PANED(widget))
-               save_settings_paned (conf, (GtkPaned*)widget, name);
-       
+               return save_settings_window (conf, (GtkWindow*)widget, name);
+       else if (GTK_IS_PANED(widget))
+               return save_settings_paned (conf, (GtkPaned*)widget, name);
+       else if (GTK_IS_WIDGET(widget))
+               return save_settings_widget (conf, widget, name);
 
-       
+       return TRUE;
 }
 
+
+
 gboolean
 modest_widget_memory_restore_settings (ModestConf *conf, GtkWidget *widget,
                                       const gchar *name)
@@ -160,9 +233,11 @@ modest_widget_memory_restore_settings (ModestConf *conf, GtkWidget *widget,
        g_return_val_if_fail (name, FALSE);
        
        if (GTK_IS_WINDOW(widget))
-               restore_settings_window (conf, (GtkWindow*)widget, name);
-       if (GTK_IS_PANED(widget))
-               restore_settings_paned (conf, (GtkPaned*)widget, name);
+               return restore_settings_window (conf, (GtkWindow*)widget, name);
+       else if (GTK_IS_PANED(widget))
+               return restore_settings_paned (conf, (GtkPaned*)widget, name);
+       else if (GTK_IS_WIDGET(widget))
+               return restore_settings_widget (conf, widget, name);
        
        return TRUE;
 }