* Rewritten main window title handling
authorSergio Villar Senin <svillar@igalia.com>
Thu, 19 Apr 2007 12:28:15 +0000 (12:28 +0000)
committerSergio Villar Senin <svillar@igalia.com>
Thu, 19 Apr 2007 12:28:15 +0000 (12:28 +0000)
* Removed some unused fields
* Changed the signature of modest_folder_view_get_selected

pmo-trunk-r1595

src/gnome/modest-main-window.c
src/maemo/modest-main-window.c
src/modest-ui-actions.c
src/modest-ui-actions.h
src/widgets/modest-folder-view.c
src/widgets/modest-folder-view.h

index 9ecef89..6484eaf 100644 (file)
@@ -380,12 +380,12 @@ connect_signals (ModestMainWindow *self)
        account_store = modest_runtime_get_account_store ();
        
        /* folder view */
-       g_signal_connect (G_OBJECT(priv->folder_view), "folder_selection_changed",
-                         G_CALLBACK(modest_ui_actions_on_folder_selection_changed), self);
        g_signal_connect (G_OBJECT(priv->folder_view), "button-press-event",
                          G_CALLBACK (on_folder_view_button_press_event),self);
-/*     g_signal_connect (priv->folder_view, "popup-menu", */
-/*                       G_CALLBACK (on_folder_view_button_press_event),self); */
+       g_signal_connect (G_OBJECT(priv->folder_view), "folder_selection_changed",
+                         G_CALLBACK(modest_ui_actions_on_folder_selection_changed), self);
+       g_signal_connect (G_OBJECT(priv->folder_view), "folder-display-name-changed",
+                         G_CALLBACK(modest_ui_actions_on_folder_display_name_changed), self);
 
        /* header view */
        g_signal_connect (G_OBJECT(priv->header_view), "status_update",
index bbc9221..54b0437 100644 (file)
@@ -89,7 +89,7 @@ struct _ModestMainWindowPrivate {
        GtkWidget *msg_paned;
        GtkWidget *main_paned;
        GtkWidget *main_vbox;
-       GtkWidget *progress_bar;
+       GtkWidget *accounts_popup;
 
        ModestHeaderView *header_view;
        ModestFolderView *folder_view;
@@ -169,13 +169,8 @@ modest_main_window_init (ModestMainWindow *obj)
        priv->main_vbox    = NULL;
        priv->header_view  = NULL;
        priv->folder_view  = NULL;
+       priv->accounts_popup  = NULL;
        priv->style  = MODEST_MAIN_WINDOW_STYLE_SPLIT;
-
-       /* progress bar */
-       priv->progress_bar = gtk_progress_bar_new ();
-       gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR(priv->progress_bar), 1.0);
-       gtk_progress_bar_set_ellipsize (GTK_PROGRESS_BAR(priv->progress_bar),
-                                       PANGO_ELLIPSIZE_END);
 }
 
 static void
@@ -288,6 +283,8 @@ connect_signals (ModestMainWindow *self)
                          G_CALLBACK(on_inner_widgets_key_pressed), self);
        g_signal_connect (G_OBJECT(priv->folder_view), "folder_selection_changed",
                          G_CALLBACK(modest_ui_actions_on_folder_selection_changed), self);
+       g_signal_connect (G_OBJECT(priv->folder_view), "folder-display-name-changed",
+                         G_CALLBACK(modest_ui_actions_on_folder_display_name_changed), self);
 
        menu = gtk_ui_manager_get_widget (parent_priv->ui_manager, "/FolderViewContextMenu");
        gtk_widget_tap_and_hold_setup (GTK_WIDGET (priv->folder_view), menu, NULL, 0);
@@ -608,20 +605,25 @@ on_account_update (TnyAccountStore *account_store,
                   gpointer user_data)
 {
        ModestMainWindow *self;
+       ModestMainWindowPrivate *priv;
        ModestWindowPrivate *parent_priv;
        TnyList *account_list;
-       GtkWidget *popup = NULL, *item, *send_receive_button;
+       GtkWidget *item, *send_receive_button;
        TnyIterator *iter;
        ModestAccountMgr *mgr;
        gchar *default_account;
 
        self = MODEST_MAIN_WINDOW (user_data);
-       parent_priv = MODEST_WINDOW_GET_PRIVATE(self);
+       priv = MODEST_MAIN_WINDOW_GET_PRIVATE (self);
+       parent_priv = MODEST_WINDOW_GET_PRIVATE (self);
 
        /* If there is no toolbar then exit */
        if (!parent_priv->toolbar)
                return;
 
+       if (priv->accounts_popup)
+               gtk_menu_detach (GTK_MENU (priv->accounts_popup));
+
        /* Get accounts */
        account_list = tny_simple_list_new ();
        tny_account_store_get_accounts (account_store, 
@@ -637,11 +639,11 @@ on_account_update (TnyAccountStore *account_store,
                                                          "/ToolBar/ToolbarSendReceive");
 
        /* Create the menu */
-       popup = gtk_menu_new ();
-       item = gtk_menu_item_new_with_label (_("FIXME All"));
-       gtk_menu_shell_append (GTK_MENU_SHELL (popup), GTK_WIDGET (item));
+       priv->accounts_popup = gtk_menu_new ();
+       item = gtk_menu_item_new_with_label (_("mcen_me_toolbar_sendreceive_all"));
+       gtk_menu_shell_append (GTK_MENU_SHELL (priv->accounts_popup), GTK_WIDGET (item));
        item = gtk_separator_menu_item_new ();
-       gtk_menu_shell_append (GTK_MENU_SHELL (popup), GTK_WIDGET (item));
+       gtk_menu_shell_append (GTK_MENU_SHELL (priv->accounts_popup), GTK_WIDGET (item));
 
        iter = tny_list_create_iterator (account_list);
        mgr = modest_runtime_get_account_mgr ();
@@ -650,23 +652,26 @@ on_account_update (TnyAccountStore *account_store,
        do {
                TnyAccount *acc;
                const gchar *acc_name;
+               gchar *display_name;
 
                /* Create tool item */
                acc = TNY_ACCOUNT (tny_iterator_get_current (iter));
                acc_name = tny_account_get_name (acc);
 
-               if (!strcmp (default_account, acc_name)) {
-                       gchar *bold_name;
-                       bold_name = g_strdup_printf ("<b>%s</b>", acc_name);
-                       item = gtk_menu_item_new_with_label (bold_name);
-                       g_free (bold_name);
-               } else {
-                       item = gtk_menu_item_new_with_label (acc_name);
-               }
+               /* Create display name */
+               if (!strcmp (default_account, acc_name))
+                       display_name = g_strdup_printf (_("mcen_me_toolbar_sendreceive_default"), acc_name);
+               else
+                       display_name = g_strdup_printf (_("mcen_me_toolbar_sendreceive_mailbox_n"), acc_name);
+
+               item = gtk_menu_item_new_with_label (display_name);
+
+               /* Free */
+               g_free (display_name);
                g_object_unref (acc);
 
                /* Append item */
-               gtk_menu_shell_append (GTK_MENU_SHELL (popup), GTK_WIDGET (item));
+               gtk_menu_shell_append (GTK_MENU_SHELL (priv->accounts_popup), GTK_WIDGET (item));
 
                /* Go to next */
                tny_iterator_next (iter);
@@ -676,10 +681,10 @@ on_account_update (TnyAccountStore *account_store,
        g_object_unref (iter);
 
        /* Mandatory in order to view the menu contents */
-       gtk_widget_show_all (popup);
+       gtk_widget_show_all (priv->accounts_popup);
 
        /* Setup tap_and_hold */
-       gtk_widget_tap_and_hold_setup (send_receive_button, popup, NULL, 0);
+       gtk_widget_tap_and_hold_setup (send_receive_button, priv->accounts_popup, NULL, 0);
 
  free:
 
index f8889fe..3dad6f4 100644 (file)
@@ -773,29 +773,37 @@ get_msg_cb (TnyFolder *folder, TnyMsg *msg, GError **err, gpointer user_data)
 }
 
 void 
-modest_ui_actions_on_header_selected (ModestHeaderView *folder_view, 
+modest_ui_actions_on_header_selected (ModestHeaderView *header_view, 
                                      TnyHeader *header,
                                      ModestMainWindow *main_window)
 {
-       GtkWidget *msg_preview;
        TnyFolder *folder;
        GetMsgAsyncHelper *helper;
        TnyList *list;
 
        g_return_if_fail (MODEST_IS_MAIN_WINDOW(main_window));
-       
-       msg_preview = modest_main_window_get_child_widget(main_window,
-                                                         MODEST_WIDGET_TYPE_MSG_PREVIEW);
-       if (!msg_preview)
-               return;
-       
+
        /* when there's no header, clear the msgview */
        if (!header) {
-               modest_msg_view_set_message (MODEST_MSG_VIEW(msg_preview), NULL);
+               GtkWidget *msg_preview;
+
+               /* Clear msg preview if exists */
+               msg_preview = modest_main_window_get_child_widget(main_window,
+                                                                 MODEST_WIDGET_TYPE_MSG_PREVIEW);
+       
+               if (msg_preview)
+                       modest_msg_view_set_message (MODEST_MSG_VIEW(msg_preview), NULL);
                return;
        }
 
-       folder = tny_header_get_folder (TNY_HEADER(header));
+       /* Update Main window title */
+       if (GTK_WIDGET_HAS_FOCUS (header_view)) {
+               const gchar *subject = tny_header_get_subject (header);
+               if (subject && strcmp (subject, ""))
+                       gtk_window_set_title (GTK_WINDOW (main_window), subject);
+               else
+                       gtk_window_set_title (GTK_WINDOW (main_window), _("mail_va_no_subject"));
+       }
 
        /* Create list */
        list = tny_simple_list_new ();
@@ -807,6 +815,8 @@ modest_ui_actions_on_header_selected (ModestHeaderView *folder_view,
        helper->iter = tny_list_create_iterator (list);
        helper->func = read_msg_func;
 
+       folder = tny_header_get_folder (TNY_HEADER(header));
+
        tny_folder_get_msg_async (TNY_FOLDER(folder),
                                  header, get_msg_cb,
                                  helper);
@@ -889,34 +899,15 @@ modest_ui_actions_on_folder_selection_changed (ModestFolderView *folder_view,
        
        conf = modest_runtime_get_conf ();
 
-       if (!selected) { /* the folder was unselected; save it's settings  */
-               modest_widget_memory_save (conf, G_OBJECT (header_view), "header-view");
-               gtk_window_set_title (GTK_WINDOW(main_window), NULL);
-               modest_header_view_set_folder (MODEST_HEADER_VIEW(header_view), NULL);
-       } else {  /* the folder was selected */
-               if (folder) { /* folder may be NULL */
-                       guint unread;
-
-                       /* Change main window title */                  
-                       unread = tny_folder_get_unread_count (folder);
-
-                       if (unread == 0) {
-                               gtk_window_set_title (GTK_WINDOW(main_window), 
-                                                     tny_folder_get_name (folder));
-                       } else {
-                               gchar *txt = g_strdup_printf (_("%s (%d)"),
-                                                             tny_folder_get_name (folder),
-                                                             unread);
-                               gtk_window_set_title (GTK_WINDOW(main_window), txt);
-                               g_free (txt);
-                       }
+       if (TNY_IS_FOLDER (folder)) {
+               if (!selected) { /* the folder was unselected; save it's settings  */
+                       modest_widget_memory_save (conf, G_OBJECT (header_view), "header-view");
+                       modest_header_view_set_folder (MODEST_HEADER_VIEW(header_view), NULL);
                } else {
-                       gtk_window_set_title (GTK_WINDOW(main_window), NULL);
+                       modest_header_view_set_folder (MODEST_HEADER_VIEW(header_view), folder);
+                       modest_widget_memory_restore (conf, G_OBJECT(header_view),
+                                                     "header-view");
                }
-
-               modest_header_view_set_folder (MODEST_HEADER_VIEW(header_view), folder);
-               modest_widget_memory_restore (conf, G_OBJECT(header_view),
-                                             "header-view");
        }
 }
 
@@ -1240,7 +1231,7 @@ ask_for_folder_name (GtkWindow *parent_window,
 void 
 modest_ui_actions_on_new_folder (GtkAction *action, ModestMainWindow *main_window)
 {
-       TnyFolder *parent_folder;
+       TnyFolderStore *parent_folder;
        GtkWidget *folder_view;
        
        g_return_if_fail (MODEST_IS_MAIN_WINDOW(main_window));
@@ -1267,7 +1258,7 @@ modest_ui_actions_on_new_folder (GtkAction *action, ModestMainWindow *main_windo
                                                         mail_op);
 
                        new_folder = modest_mail_operation_create_folder (mail_op,
-                                                                         TNY_FOLDER_STORE (parent_folder),
+                                                                         parent_folder,
                                                                          (const gchar *) folder_name);
                        if (new_folder) 
                                g_object_unref (new_folder);
@@ -1282,7 +1273,7 @@ void
 modest_ui_actions_on_rename_folder (GtkAction *action,
                                     ModestMainWindow *main_window)
 {
-       TnyFolder *folder;
+       TnyFolderStore *folder;
        GtkWidget *folder_view;
        
        g_return_if_fail (MODEST_IS_MAIN_WINDOW(main_window));
@@ -1294,7 +1285,7 @@ modest_ui_actions_on_rename_folder (GtkAction *action,
        
        folder = modest_folder_view_get_selected (MODEST_FOLDER_VIEW(folder_view));
        
-       if (folder) {
+       if (folder && TNY_IS_FOLDER (folder)) {
                gchar *folder_name;
                folder_name = ask_for_folder_name (GTK_WINDOW (main_window),
                                                   _("Please enter a new name for the folder"));
@@ -1307,7 +1298,7 @@ modest_ui_actions_on_rename_folder (GtkAction *action,
                                                         mail_op);
 
                        modest_mail_operation_rename_folder (mail_op,
-                                                            folder,
+                                                            TNY_FOLDER (folder),
                                                             (const gchar *) folder_name);
 
                        g_object_unref (mail_op);
@@ -1320,7 +1311,7 @@ modest_ui_actions_on_rename_folder (GtkAction *action,
 static void
 delete_folder (ModestMainWindow *main_window, gboolean move_to_trash) 
 {
-       TnyFolder *folder;
+       TnyFolderStore *folder;
        ModestMailOperation *mail_op;
        GtkWidget *folder_view;
        
@@ -1336,7 +1327,7 @@ delete_folder (ModestMainWindow *main_window, gboolean move_to_trash)
        mail_op = modest_mail_operation_new ();
        modest_mail_operation_queue_add (modest_runtime_get_mail_operation_queue (),
                                         mail_op);
-       modest_mail_operation_remove_folder (mail_op, folder, move_to_trash);
+       modest_mail_operation_remove_folder (mail_op, TNY_FOLDER (folder), move_to_trash);
 
        g_object_unref (G_OBJECT (mail_op));
        g_object_unref (G_OBJECT (folder));
@@ -1680,3 +1671,20 @@ modest_ui_actions_on_toggle_toolbar (GtkToggleAction *toggle,
        mgr = modest_runtime_get_window_mgr ();
        modest_window_mgr_show_toolbars (mgr, active, fullscreen);
 }
+
+void
+modest_ui_actions_on_folder_display_name_changed (ModestFolderView *folder_view,
+                                                 const gchar *display_name,
+                                                 GtkWindow *window)
+{
+       /* Do not change the application name if the widget has not
+          the focus. This callback could be called even if the folder
+          view has not the focus, because the handled signal could be
+          emitted when the folder view is redrawn */
+       if (GTK_WIDGET_HAS_FOCUS (folder_view)) {
+               if (display_name)
+                       gtk_window_set_title (window, display_name);
+               else
+                       gtk_window_set_title (window, " ");
+       }
+}
index 6333cf8..c4f5e33 100644 (file)
@@ -222,5 +222,19 @@ void     modest_ui_actions_msg_edit_on_change_priority (GtkRadioAction *action,
 void     modest_ui_actions_on_toggle_toolbar           (GtkToggleAction *toggle, 
                                                        ModestWindow *window);
 
+/**
+ * modest_ui_actions_on_folder_display_name_changed:
+ * @folder_view: a #ModestFolderView
+ * @display_name: the new window title
+ * @window: a #GtkWindow
+ * 
+ * Sets the title of the window to the value specified by
+ * display_name. This function is used typically as a callback to the
+ * "folder-display-name-changed" signal from the #ModestFolderView
+ **/
+void     modest_ui_actions_on_folder_display_name_changed (ModestFolderView *folder_view,
+                                                          const gchar *display_name,
+                                                          GtkWindow *window);
+
 G_END_DECLS
 #endif /* __MODEST_UI_ACTIONS_H__ */
index 3b3ec91..ad68c6a 100644 (file)
@@ -117,14 +117,14 @@ static void         on_configuration_key_changed         (ModestConf* conf,
 
 enum {
        FOLDER_SELECTION_CHANGED_SIGNAL,
+       FOLDER_DISPLAY_NAME_CHANGED_SIGNAL,
        LAST_SIGNAL
 };
 
 typedef struct _ModestFolderViewPrivate ModestFolderViewPrivate;
 struct _ModestFolderViewPrivate {
        TnyAccountStore     *account_store;
-       TnyFolder           *cur_folder;
-       GtkTreeRowReference *cur_row;
+       TnyFolderStore      *cur_folder_store;
 
        gulong               account_update_signal;
        gulong               changed_signal;
@@ -202,6 +202,23 @@ modest_folder_view_class_init (ModestFolderViewClass *klass)
                              NULL, NULL,
                              modest_marshal_VOID__POINTER_BOOLEAN,
                              G_TYPE_NONE, 2, G_TYPE_POINTER, G_TYPE_BOOLEAN);
+
+       /*
+        * This signal is emitted whenever the currently selected
+        * folder display name is computed. Note that the name could
+        * be different to the folder name, because we could append
+        * the unread messages count to the folder name to build the
+        * folder display name
+        */
+       signals[FOLDER_DISPLAY_NAME_CHANGED_SIGNAL] = 
+               g_signal_new ("folder-display-name-changed",
+                             G_TYPE_FROM_CLASS (gobject_class),
+                             G_SIGNAL_RUN_FIRST,
+                             G_STRUCT_OFFSET (ModestFolderViewClass,
+                                              folder_display_name_changed),
+                             NULL, NULL,
+                             g_cclosure_marshal_VOID__STRING,
+                             G_TYPE_NONE, 1, G_TYPE_STRING);
 }
 
 
@@ -210,9 +227,10 @@ static void
 text_cell_data  (GtkTreeViewColumn *column,  GtkCellRenderer *renderer,
                 GtkTreeModel *tree_model,  GtkTreeIter *iter,  gpointer data)
 {
+       ModestFolderViewPrivate *priv;
        GObject *rendobj;
        gchar *fname = NULL;
-       gint unread;
+       gint unread, all;
        TnyFolderType type;
        GObject *instance = NULL;
        
@@ -221,6 +239,7 @@ text_cell_data  (GtkTreeViewColumn *column,  GtkCellRenderer *renderer,
 
        gtk_tree_model_get (tree_model, iter,
                            TNY_GTK_FOLDER_STORE_TREE_MODEL_NAME_COLUMN, &fname,
+                           TNY_GTK_FOLDER_STORE_TREE_MODEL_ALL_COLUMN, &all,
                            TNY_GTK_FOLDER_STORE_TREE_MODEL_UNREAD_COLUMN, &unread,
                            TNY_GTK_FOLDER_STORE_TREE_MODEL_TYPE_COLUMN, &type,
                            TNY_GTK_FOLDER_STORE_TREE_MODEL_INSTANCE_COLUMN, &instance,
@@ -234,8 +253,13 @@ text_cell_data  (GtkTreeViewColumn *column,  GtkCellRenderer *renderer,
                g_free (fname);
                return;
        }
+
+       
+       priv =  MODEST_FOLDER_VIEW_GET_PRIVATE (data);
        
        if (type != TNY_FOLDER_TYPE_ROOT) {
+               gint number;
+
                if (modest_tny_folder_is_local_folder (TNY_FOLDER (instance))) {
                        TnyFolderType type;
                        type = modest_tny_folder_get_local_folder_type (TNY_FOLDER (instance));
@@ -245,20 +269,32 @@ text_cell_data  (GtkTreeViewColumn *column,  GtkCellRenderer *renderer,
                        }
                }
 
+               /* Select the number to show */
+               if ((type == TNY_FOLDER_TYPE_DRAFTS) || (type == TNY_FOLDER_TYPE_OUTBOX))
+                       number = all;
+               else
+                       number = unread;
+
                /* Use bold font style if there are unread messages */                  
                if (unread > 0) {
                        gchar *folder_title = g_strdup_printf ("%s (%d)", fname, unread);
                        g_object_set (rendobj,"text", folder_title,  "weight", 800, NULL);
+                       if (G_OBJECT (priv->cur_folder_store) == instance)
+                               g_signal_emit (G_OBJECT(data), 
+                                              signals[FOLDER_DISPLAY_NAME_CHANGED_SIGNAL], 0,
+                                              folder_title);
                        g_free (folder_title);
-               } else 
+               } else {
                        g_object_set (rendobj,"text", fname, "weight", 400, NULL);
+                       if (G_OBJECT (priv->cur_folder_store) == instance)
+                               g_signal_emit (G_OBJECT(data), 
+                                              signals[FOLDER_DISPLAY_NAME_CHANGED_SIGNAL], 0,
+                                              fname);
+               }
 
        } else {
-               ModestFolderViewPrivate *priv;
                const gchar *account_name = NULL;
                const gchar *account_id = NULL;
-       
-               priv =  MODEST_FOLDER_VIEW_GET_PRIVATE (data);
 
                /* If it's a server account */
                account_id = tny_account_get_id (TNY_ACCOUNT (instance));
@@ -272,6 +308,12 @@ text_cell_data  (GtkTreeViewColumn *column,  GtkCellRenderer *renderer,
                        }
                }
 
+               /* Notify display name observers */
+               if (G_OBJECT (priv->cur_folder_store) == instance)
+                       g_signal_emit (G_OBJECT(data),
+                                      signals[FOLDER_DISPLAY_NAME_CHANGED_SIGNAL], 0,
+                                      account_name);
+
                /* Use bold font style */
                g_object_set (rendobj,"text", account_name, "weight", 800, NULL);
        }
@@ -368,8 +410,7 @@ modest_folder_view_init (ModestFolderView *obj)
        
        priv->timer_expander = 0;
        priv->account_store  = NULL;
-       priv->cur_folder     = NULL;
-       priv->cur_row        = NULL;
+       priv->cur_folder_store     = NULL;
        priv->query          = NULL;
 
        /* Initialize the local account name */
@@ -590,7 +631,7 @@ update_model (ModestFolderView *self, ModestTnyAccountStore *account_store)
 
        priv =  MODEST_FOLDER_VIEW_GET_PRIVATE(self);
        
-       /* Notify that there is no folder selected*/
+       /* Notify that there is no folder selected */
        g_signal_emit (G_OBJECT(self), 
                       signals[FOLDER_SELECTION_CHANGED_SIGNAL], 0,
                       NULL, TRUE);
@@ -627,9 +668,8 @@ static void
 on_selection_changed (GtkTreeSelection *sel, gpointer user_data)
 {
        GtkTreeModel            *model_sort, *model;
-       TnyFolder               *folder = NULL;
+       TnyFolderStore          *folder = NULL;
        GtkTreeIter             iter, iter_sort;
-       GtkTreePath            *path;
        ModestFolderView        *tree_view;
        ModestFolderViewPrivate *priv;
        gint                    type;
@@ -642,12 +682,14 @@ on_selection_changed (GtkTreeSelection *sel, gpointer user_data)
        
        /* folder was _un_selected if true */
        if (!gtk_tree_selection_get_selected (sel, &model_sort, &iter_sort)) {
-               if (priv->cur_folder)
-                       g_object_unref (priv->cur_folder);
-               if (priv->cur_row)
-                       gtk_tree_row_reference_free (priv->cur_row);
-               priv->cur_folder = NULL;
-               priv->cur_row = NULL;
+               if (priv->cur_folder_store)
+                       g_object_unref (priv->cur_folder_store);
+               priv->cur_folder_store = NULL;
+
+               /* Notify the display name observers */
+               g_signal_emit (G_OBJECT(user_data), 
+                              signals[FOLDER_DISPLAY_NAME_CHANGED_SIGNAL], 0,
+                              NULL);
                return; 
        }
 
@@ -664,28 +706,20 @@ on_selection_changed (GtkTreeSelection *sel, gpointer user_data)
                            -1);
 
        /* If the folder is the same do not notify */
-       if ((type == TNY_FOLDER_TYPE_ROOT) || (priv->cur_folder == folder)) {
+       if (priv->cur_folder_store == folder) {
                g_object_unref (folder);
                return;
        }
        
        /* Current folder was unselected */
-       if (priv->cur_folder) {
+       if (priv->cur_folder_store) {
                g_signal_emit (G_OBJECT(tree_view), signals[FOLDER_SELECTION_CHANGED_SIGNAL], 0,
-                              priv->cur_folder, FALSE);
-               g_object_unref (priv->cur_folder);
+                              priv->cur_folder_store, FALSE);
+               g_object_unref (priv->cur_folder_store);
        }
 
-       if (priv->cur_row)
-               gtk_tree_row_reference_free (priv->cur_row);
-
        /* New current references */
-       path = gtk_tree_model_get_path (model_sort, &iter_sort);
-       priv->cur_folder = folder;
-       priv->cur_row = gtk_tree_row_reference_new (model_sort, path);
-
-       /* Frees */
-       gtk_tree_path_free (path);
+       priv->cur_folder_store = folder;
 
        /* New folder has been selected */
        g_signal_emit (G_OBJECT(tree_view), 
@@ -693,7 +727,7 @@ on_selection_changed (GtkTreeSelection *sel, gpointer user_data)
                       0, folder, TRUE); 
 }
 
-TnyFolder *
+TnyFolderStore *
 modest_folder_view_get_selected (ModestFolderView *self)
 {
        ModestFolderViewPrivate *priv;
@@ -701,10 +735,10 @@ modest_folder_view_get_selected (ModestFolderView *self)
        g_return_val_if_fail (self, NULL);
        
        priv = MODEST_FOLDER_VIEW_GET_PRIVATE(self);
-       if (priv->cur_folder)
-               g_object_ref (priv->cur_folder);
+       if (priv->cur_folder_store)
+               g_object_ref (priv->cur_folder_store);
 
-       return priv->cur_folder;
+       return priv->cur_folder_store;
 }
 
 static gint
index 9650b28..ee38760 100644 (file)
@@ -61,6 +61,10 @@ struct _ModestFolderViewClass {
                                              TnyFolder *folder,
                                              gboolean selected,
                                              gpointer user_data);
+
+       void     (*folder_display_name_changed) (ModestFolderView* self,
+                                                const gchar *display_name,
+                                                gpointer user_data);
 };
 
 /**
@@ -100,11 +104,11 @@ void          modest_folder_view_set_title       (ModestFolderView *self,
  * modest_folder_view_get_selected:
  * @self: a #ModestFolderView
  * 
- * returns a new reference to the #TnyFolder that is already selected
+ * returns a new reference to the #TnyFolderStore that is already selected
  * 
- * Returns: the selected folder or NULL if none is selected
+ * Returns: the selected #TnyFolderStore or NULL if none is selected
  **/
-TnyFolder*    modest_folder_view_get_selected    (ModestFolderView *self);
+TnyFolderStore*    modest_folder_view_get_selected    (ModestFolderView *self);
 
 
 /**