X-Git-Url: http://vcs.maemo.org/git/?a=blobdiff_plain;f=src%2Fgnome%2Fmodest-main-window.c;h=5d07395017a7bf78af2b3a1f68311d303defe175;hb=8376cf7ef539a483f17fc1e4d88a5ac91acaa24a;hp=3be825c5f63a22735c3dcb721bbc9dcce48e7bf9;hpb=656cea17fbbe300964b6b9748600c82bf1e1f24e;p=modest diff --git a/src/gnome/modest-main-window.c b/src/gnome/modest-main-window.c index 3be825c..5d07395 100644 --- a/src/gnome/modest-main-window.c +++ b/src/gnome/modest-main-window.c @@ -30,6 +30,8 @@ #include #include #include +#include +#include #include #include @@ -81,6 +83,10 @@ static void on_header_status_update (ModestHeaderView *head gint total, ModestMainWindow *main_window); +static void on_header_selected (ModestHeaderView *header_view, + TnyHeader *header, + ModestMainWindow *main_window); + /* list my signals */ enum { /* MY_SIGNAL_1, */ @@ -114,15 +120,6 @@ struct _ModestMainWindowPrivate { MODEST_TYPE_MAIN_WINDOW, \ ModestMainWindowPrivate)) -typedef struct _GetMsgAsyncHelper { - ModestMainWindowPrivate *main_window_private; - guint action; - ModestTnyMsgReplyType reply_type; - ModestTnyMsgForwardType forward_type; - gchar *from; - TnyIterator *iter; -} GetMsgAsyncHelper; - /* globals */ static GtkWindowClass *parent_class = NULL; @@ -273,13 +270,15 @@ restore_sizes (ModestMainWindow *self) conf = modest_runtime_get_conf (); modest_widget_memory_restore (conf, G_OBJECT(priv->folder_paned), - "modest-folder-paned"); + MODEST_CONF_FOLDER_PANED_KEY); modest_widget_memory_restore (conf, G_OBJECT(priv->msg_paned), - "modest-msg-paned"); + MODEST_CONF_MSG_PANED_KEY); modest_widget_memory_restore (conf, G_OBJECT(priv->main_paned), - "modest-main-paned"); - modest_widget_memory_restore (conf, G_OBJECT(priv->header_view),"header-view"); - modest_widget_memory_restore (conf,G_OBJECT(self), "modest-main-window"); + MODEST_CONF_MAIN_PANED_KEY); + modest_widget_memory_restore (conf, G_OBJECT(priv->header_view), + MODEST_CONF_HEADER_VIEW_KEY); + modest_widget_memory_restore (conf, G_OBJECT(self), + MODEST_CONF_MAIN_WINDOW_KEY); } @@ -295,20 +294,24 @@ save_sizes (ModestMainWindow *self) conf = modest_runtime_get_conf (); - modest_widget_memory_save (conf,G_OBJECT(self), "modest-main-window"); modest_widget_memory_save (conf, G_OBJECT(priv->folder_paned), - "modest-folder-paned"); + MODEST_CONF_FOLDER_PANED_KEY); modest_widget_memory_save (conf, G_OBJECT(priv->msg_paned), - "modest-msg-paned"); + MODEST_CONF_MSG_PANED_KEY); modest_widget_memory_save (conf, G_OBJECT(priv->main_paned), - "modest-main-paned"); - modest_widget_memory_save (conf, G_OBJECT(priv->header_view), "header-view"); + 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(self), + MODEST_CONF_MAIN_WINDOW_KEY); } static void -on_connection_changed (TnyDevice *device, gboolean online, ModestMainWindow *self) +on_account_store_connecting_finished (TnyAccountStore *store, ModestMainWindow *self) { + const gboolean online = TRUE; + GtkWidget *icon; const gchar *icon_name; ModestMainWindowPrivate *priv; @@ -331,7 +334,7 @@ on_connection_changed (TnyDevice *device, gboolean online, ModestMainWindow *sel /* If Modest has became online and the header view has a header selected then show it */ - /* FIXME: there is a race condition if some account needs to + /* TODO: FIXME: there is a race condition if some account needs to ask the user for a password */ /* if (online) { */ @@ -354,8 +357,10 @@ on_online_toggle_toggled (GtkToggleButton *toggle, ModestMainWindow *self) device = modest_runtime_get_device (); online = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (priv->online_toggle)); - if (online) + if (online) { + /* TODO: Just attempt to go online, instead of forcing the online status: */ tny_device_force_online (device); + } else tny_device_force_offline (device); } @@ -380,18 +385,20 @@ 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", G_CALLBACK(on_header_status_update), self); g_signal_connect (G_OBJECT(priv->header_view), "header_selected", G_CALLBACK(modest_ui_actions_on_header_selected), self); + g_signal_connect (G_OBJECT(priv->header_view), "header_selected", + G_CALLBACK(on_header_selected), self); g_signal_connect (G_OBJECT(priv->header_view), "header_activated", G_CALLBACK(modest_ui_actions_on_header_activated), self); g_signal_connect (G_OBJECT(priv->header_view), "item_not_found", @@ -412,12 +419,14 @@ connect_signals (ModestMainWindow *self) G_CALLBACK(modest_ui_actions_on_msg_recpt_activated), self); /* Account store */ + /* Emmitted by our TnyAccountStore::get_password_func() implementation, + * This is not a normal part of tinymail: */ g_signal_connect (G_OBJECT (modest_runtime_get_account_store()), "password_requested", G_CALLBACK (modest_ui_actions_on_password_requested), self); /* Device */ - g_signal_connect (G_OBJECT(modest_runtime_get_device()), "connection_changed", - G_CALLBACK(on_connection_changed), self); + g_signal_connect (G_OBJECT(modest_runtime_get_account_store()), "connecting-finished", + G_CALLBACK(on_account_store_connecting_finished), self); g_signal_connect (G_OBJECT(priv->online_toggle), "toggled", G_CALLBACK(on_online_toggle_toggled), self); @@ -561,7 +570,7 @@ on_header_view_button_press_event (ModestHeaderView *header_view, ModestWindowPrivate *parent_priv; parent_priv = MODEST_WINDOW_GET_PRIVATE (self); - menu = gtk_ui_manager_get_widget (parent_priv->ui_manager, "/HeaderViewContextMenu"); + menu = gtk_ui_manager_get_widget (parent_priv->ui_manager, "/HeaderViewCSM"); return show_context_popup_menu (self, GTK_TREE_VIEW (header_view), @@ -582,7 +591,7 @@ on_folder_view_button_press_event (ModestFolderView *folder_view, ModestWindowPrivate *parent_priv; parent_priv = MODEST_WINDOW_GET_PRIVATE (self); - menu = gtk_ui_manager_get_widget (parent_priv->ui_manager, "/FolderViewContextMenu"); + menu = gtk_ui_manager_get_widget (parent_priv->ui_manager, "/FolderViewCSM"); return show_context_popup_menu (self, GTK_TREE_VIEW (folder_view), @@ -698,9 +707,67 @@ modest_main_window_set_style (ModestMainWindow *self, /* TODO */ } + ModestMainWindowStyle modest_main_window_get_style (ModestMainWindow *self) { /* TODO */ - return MODEST_MAIN_WINDOW_STYLE_SPLITTED; + return MODEST_MAIN_WINDOW_STYLE_SPLIT; +} + +void +modest_main_window_set_contents_style (ModestMainWindow *self, + ModestMainWindowContentsStyle style) +{ + /* TODO */ +} + +ModestMainWindowContentsStyle +modest_main_window_get_contents_style (ModestMainWindow *self) +{ + /* TODO */ + return MODEST_MAIN_WINDOW_CONTENTS_STYLE_HEADERS; +} + + +static void +get_msg_callback (TnyFolder *folder, + gboolean cancelled, + TnyMsg *msg, + GError **err, + gpointer user_data) +{ + if (!(*err)) { + ModestMsgView *msg_preview; + + msg_preview = MODEST_MSG_VIEW (user_data); + modest_msg_view_set_message (msg_preview, msg); + } + + /* Frees */ + g_object_unref (folder); +} + +static void +on_header_selected (ModestHeaderView *header_view, + TnyHeader *header, + ModestMainWindow *main_window) +{ + TnyFolder *folder; + ModestMainWindowPrivate *priv; + + priv = MODEST_MAIN_WINDOW_GET_PRIVATE (main_window); + + if (!header) + return; + + folder = tny_header_get_folder (header); + + /* FIXME: do not use this directly. Use a mail operation + instead in order to get progress info */ + tny_folder_get_msg_async (folder, + header, + get_msg_callback, + NULL, + priv->msg_preview); }