* some fixes towards fixing the right-hand-pane-empty problem
authorDirk-Jan C. Binnema <dirk-jan.binnema@nokia.com>
Wed, 13 Jun 2007 16:18:22 +0000 (16:18 +0000)
committerDirk-Jan C. Binnema <dirk-jan.binnema@nokia.com>
Wed, 13 Jun 2007 16:18:22 +0000 (16:18 +0000)
  - save/restore header before/after changing folder
  - special casing for guessing the local-folder-type; this makes outbox/sent now show the correct headers (ie. To:, Sent: instead of From:,Received:)
  - fix some weirdness in modest-widget-memory (reading -1 into a guint...)

pmo-trunk-r2215

src/maemo/modest-main-window.c
src/maemo/modest-platform.c
src/modest-tny-folder.c
src/modest-ui-actions.c
src/modest-widget-memory.c

index 8523cdf..391e526 100644 (file)
@@ -364,6 +364,7 @@ restore_settings (ModestMainWindow *self, gboolean do_folder_view_too)
 
        modest_widget_memory_restore (conf, G_OBJECT(self),
                                      MODEST_CONF_MAIN_WINDOW_KEY);
 
        modest_widget_memory_restore (conf, G_OBJECT(self),
                                      MODEST_CONF_MAIN_WINDOW_KEY);
+
        modest_widget_memory_restore (conf, G_OBJECT(priv->header_view),
                                      MODEST_CONF_HEADER_VIEW_KEY);
 
        modest_widget_memory_restore (conf, G_OBJECT(priv->header_view),
                                      MODEST_CONF_HEADER_VIEW_KEY);
 
@@ -393,8 +394,8 @@ save_state (ModestWindow *window)
                                   MODEST_CONF_MAIN_WINDOW_KEY);
        modest_widget_memory_save (conf, G_OBJECT(priv->main_paned), 
                                   MODEST_CONF_MAIN_PANED_KEY);
                                   MODEST_CONF_MAIN_WINDOW_KEY);
        modest_widget_memory_save (conf, G_OBJECT(priv->main_paned), 
                                   MODEST_CONF_MAIN_PANED_KEY);
-/*     modest_widget_memory_save (conf, G_OBJECT(priv->header_view),  */
-/*                                MODEST_CONF_HEADER_VIEW_KEY); */
+       //      modest_widget_memory_save (conf, G_OBJECT(priv->header_view), 
+       //                         MODEST_CONF_HEADER_VIEW_KEY);
        modest_widget_memory_save (conf, G_OBJECT(priv->folder_view), 
                                   MODEST_CONF_FOLDER_VIEW_KEY);
 }
        modest_widget_memory_save (conf, G_OBJECT(priv->folder_view), 
                                   MODEST_CONF_FOLDER_VIEW_KEY);
 }
@@ -622,7 +623,7 @@ modest_main_window_on_show (GtkWidget *self, gpointer user_data)
 {
        GtkWidget *folder_win = (GtkWidget *) user_data;
        ModestMainWindowPrivate *priv = MODEST_MAIN_WINDOW_GET_PRIVATE(self);
 {
        GtkWidget *folder_win = (GtkWidget *) user_data;
        ModestMainWindowPrivate *priv = MODEST_MAIN_WINDOW_GET_PRIVATE(self);
-
+       
        priv->folder_view = MODEST_FOLDER_VIEW(modest_folder_view_new (NULL));
        if (!priv->folder_view)
                g_printerr ("modest: cannot instantiate folder view\n");
        priv->folder_view = MODEST_FOLDER_VIEW(modest_folder_view_new (NULL));
        if (!priv->folder_view)
                g_printerr ("modest: cannot instantiate folder view\n");
@@ -774,6 +775,8 @@ modest_main_window_new (void)
        if (!priv->header_view)
                g_printerr ("modest: cannot instantiate header view\n");
        modest_header_view_set_style (priv->header_view, MODEST_HEADER_VIEW_STYLE_TWOLINES);
        if (!priv->header_view)
                g_printerr ("modest: cannot instantiate header view\n");
        modest_header_view_set_style (priv->header_view, MODEST_HEADER_VIEW_STYLE_TWOLINES);
+       modest_widget_memory_restore (modest_runtime_get_conf (), G_OBJECT(priv->header_view),
+                                     MODEST_CONF_HEADER_VIEW_KEY);
 
        /* Empty view */ 
        priv->empty_view = create_empty_view ();
 
        /* Empty view */ 
        priv->empty_view = create_empty_view ();
index f2f8745..e8c15aa 100644 (file)
@@ -825,7 +825,7 @@ modest_platform_on_new_msg (void)
           could be called from a thread */
        if (!notify_notification_show (NOTIFY_NOTIFICATION (not), NULL))
                g_error ("Failed to send notification");
           could be called from a thread */
        if (!notify_notification_show (NOTIFY_NOTIFICATION (not), NULL))
                g_error ("Failed to send notification");
-
+               
        g_object_unref (not);
 }
 
        g_object_unref (not);
 }
 
index 4b9c0d7..daef301 100644 (file)
@@ -92,14 +92,16 @@ TnyFolderType
 modest_tny_folder_guess_folder_type (const TnyFolder *folder)
 {
        TnyFolderType type;
 modest_tny_folder_guess_folder_type (const TnyFolder *folder)
 {
        TnyFolderType type;
+       
+       g_return_val_if_fail (TNY_IS_FOLDER(folder), TNY_FOLDER_TYPE_UNKNOWN);
 
 
-       g_return_val_if_fail (folder, TNY_FOLDER_TYPE_UNKNOWN);
-
-       type = tny_folder_get_folder_type (TNY_FOLDER (folder));
+       if (modest_tny_folder_is_local_folder ((TnyFolder*)folder))
+               type = modest_tny_folder_get_local_folder_type ((TnyFolder*)folder);
+       else
+               type = tny_folder_get_folder_type (TNY_FOLDER (folder));
        
        if (type == TNY_FOLDER_TYPE_UNKNOWN) {
                const gchar *folder_name;
        
        if (type == TNY_FOLDER_TYPE_UNKNOWN) {
                const gchar *folder_name;
-
                folder_name = tny_folder_get_name (TNY_FOLDER (folder));
                type =  modest_tny_folder_guess_folder_type_from_name (folder_name);
        }
                folder_name = tny_folder_get_name (TNY_FOLDER (folder));
                type =  modest_tny_folder_guess_folder_type_from_name (folder_name);
        }
index 2976f09..a215936 100644 (file)
@@ -1290,19 +1290,31 @@ modest_ui_actions_on_folder_selection_changed (ModestFolderView *folder_view,
                                set_active_account_from_tny_account (account, MODEST_WINDOW (main_window));
                                g_object_unref (account);
                        }
                                set_active_account_from_tny_account (account, MODEST_WINDOW (main_window));
                                g_object_unref (account);
                        }
-                                               
+
+                       if (tny_folder_get_all_count (TNY_FOLDER(folder_store)) == 0) 
+                               modest_main_window_set_contents_style (main_window, MODEST_MAIN_WINDOW_CONTENTS_STYLE_EMPTY);
+                       else
+                               modest_main_window_set_contents_style (main_window, MODEST_MAIN_WINDOW_CONTENTS_STYLE_HEADERS);
+
+                       
+                       modest_widget_memory_save (modest_runtime_get_conf(),
+                                                  G_OBJECT(header_view),
+                                                  MODEST_CONF_HEADER_VIEW_KEY);
                        /* Set folder on header view */
                        modest_header_view_set_folder (MODEST_HEADER_VIEW(header_view),
                                                       TNY_FOLDER (folder_store),
                                                       folder_refreshed_cb,
                        /* Set folder on header view */
                        modest_header_view_set_folder (MODEST_HEADER_VIEW(header_view),
                                                       TNY_FOLDER (folder_store),
                                                       folder_refreshed_cb,
-                                                      main_window);                            
+                                                      main_window);
+                       modest_widget_memory_restore (modest_runtime_get_conf(),
+                                                     G_OBJECT(header_view),
+                                                     MODEST_CONF_HEADER_VIEW_KEY);
                } else {
                        /* Update the active account */
                        modest_window_set_active_account (MODEST_WINDOW (main_window), NULL);
                        /* Do not show folder */
                        modest_widget_memory_save (conf, G_OBJECT (header_view), MODEST_CONF_HEADER_VIEW_KEY);
                        modest_header_view_clear (MODEST_HEADER_VIEW(header_view));
                } else {
                        /* Update the active account */
                        modest_window_set_active_account (MODEST_WINDOW (main_window), NULL);
                        /* Do not show folder */
                        modest_widget_memory_save (conf, G_OBJECT (header_view), MODEST_CONF_HEADER_VIEW_KEY);
                        modest_header_view_clear (MODEST_HEADER_VIEW(header_view));
-               }
+               }                       
        }
 
        /* Update toolbar dimming state */
        }
 
        /* Update toolbar dimming state */
index 6b4b13b..1607ab7 100644 (file)
@@ -293,8 +293,8 @@ save_settings_header_view (ModestConf *conf, ModestHeaderView *header_view,
                width = gtk_tree_view_column_get_width (col);
                sort = 0;
                if (sort_colid == col_id)
                width = gtk_tree_view_column_get_width (col);
                sort = 0;
                if (sort_colid == col_id)
-                       sort = (sort_type == GTK_SORT_ASCENDING) ? 1:-1;
-                       
+                       sort = (sort_type == GTK_SORT_ASCENDING) ? 1:0;
+               
                g_string_append_printf (str, "%d:%d:%d ", col_id, width, sort);
                cursor = g_list_next (cursor);
        }
                g_string_append_printf (str, "%d:%d:%d ", col_id, width, sort);
                cursor = g_list_next (cursor);
        }
@@ -320,13 +320,12 @@ restore_settings_header_view (ModestConf *conf, ModestHeaderView *header_view,
        TnyFolder *folder;
        TnyFolderType type;
        ModestHeaderViewStyle style;
        TnyFolder *folder;
        TnyFolderType type;
        ModestHeaderViewStyle style;
-
+       
        folder = modest_header_view_get_folder (header_view);
        if (!folder || modest_header_view_is_empty (header_view))
                return TRUE; /* no non-empty folder: no settings */
        
        folder = modest_header_view_get_folder (header_view);
        if (!folder || modest_header_view_is_empty (header_view))
                return TRUE; /* no non-empty folder: no settings */
        
-       type = modest_tny_folder_guess_folder_type (folder);
-       style = modest_header_view_get_style   (header_view);
+       type = modest_tny_folder_guess_folder_type (folder);    style = modest_header_view_get_style   (header_view);
 
        key = _modest_widget_memory_get_keyname_with_double_type (name, type, style,
                                                                  MODEST_WIDGET_MEMORY_PARAM_COLUMN_WIDTH);
 
        key = _modest_widget_memory_get_keyname_with_double_type (name, type, style,
                                                                  MODEST_WIDGET_MEMORY_PARAM_COLUMN_WIDTH);
@@ -340,6 +339,7 @@ restore_settings_header_view (ModestConf *conf, ModestHeaderView *header_view,
 
                cursor = data = modest_conf_get_string (conf, key, NULL);
                while (cursor && sscanf (cursor, "%d:%d:%d ", &col, &width, &sort) == 3) {
 
                cursor = data = modest_conf_get_string (conf, key, NULL);
                while (cursor && sscanf (cursor, "%d:%d:%d ", &col, &width, &sort) == 3) {
+
                        cols      = g_list_append (cols, GINT_TO_POINTER(col));
                        colwidths = g_list_append (colwidths, GINT_TO_POINTER(width));
                        colsortables = g_list_append (colsortables, GINT_TO_POINTER(sort));
                        cols      = g_list_append (cols, GINT_TO_POINTER(col));
                        colwidths = g_list_append (colwidths, GINT_TO_POINTER(width));
                        colsortables = g_list_append (colsortables, GINT_TO_POINTER(sort));