* all:
authorDirk-Jan C. Binnema <dirk-jan.binnema@nokia.com>
Fri, 9 Feb 2007 13:23:00 +0000 (13:23 +0000)
committerDirk-Jan C. Binnema <dirk-jan.binnema@nokia.com>
Fri, 9 Feb 2007 13:23:00 +0000 (13:23 +0000)
  - update for combo box changes
  - update for account changes

pmo-trunk-r809

src/gtk/modest-account-assistant.c
src/gtk/modest-main-window.c
src/gtk/modest-msg-edit-window.c
src/gtk/modest-msg-view-window.c
src/gtk/modest-store-widget.c
src/gtk/modest-transport-widget.c

index 41704e5..9d2a2d0 100644 (file)
@@ -309,7 +309,7 @@ add_receiving_page (ModestAccountAssistant *self)
                            FALSE,FALSE,6);
 
        protos = modest_protocol_info_get_protocol_pair_list (MODEST_PROTOCOL_TYPE_STORE);
-       combo = modest_combo_box_new (protos);
+       combo = modest_combo_box_new (protos, g_str_equal);
        modest_pair_list_free (protos);
        
        g_signal_connect (G_OBJECT(combo), "changed",
@@ -385,7 +385,7 @@ add_sending_page (ModestAccountAssistant *self)
                            FALSE,FALSE,0);
        
        protos = modest_protocol_info_get_protocol_pair_list (MODEST_PROTOCOL_TYPE_TRANSPORT);
-       combo = modest_combo_box_new (protos);
+       combo = modest_combo_box_new (protos, g_str_equal);
        modest_pair_list_free (protos);
 
        g_signal_connect (G_OBJECT(combo), "changed",
index d702295..dda8fdc 100644 (file)
@@ -149,6 +149,9 @@ modest_main_window_init (ModestMainWindow *obj)
 {
        ModestMainWindowPrivate *priv;
        TnyFolderStoreQuery     *query;
+       TnyDevice               *device;
+       GtkWidget               *icon;
+       gboolean                online;
        
        priv = MODEST_MAIN_WINDOW_GET_PRIVATE(obj);
        
@@ -181,6 +184,12 @@ modest_main_window_init (ModestMainWindow *obj)
 
        /* online/offline combo */
        priv->online_toggle = gtk_toggle_button_new ();
+       device  = tny_account_store_get_device(TNY_ACCOUNT_STORE(modest_runtime_get_account_store()));;
+       online  = tny_device_is_online (device);
+       icon    = gtk_image_new_from_icon_name (online ? GTK_STOCK_CONNECT : GTK_STOCK_DISCONNECT,
+                                               GTK_ICON_SIZE_BUTTON);
+       gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(priv->online_toggle), online);
+       gtk_button_set_image (GTK_BUTTON(priv->online_toggle),icon);
 
        /* label with number of items, unread items for 
           the current folder */
index f8df86e..8411cf7 100644 (file)
@@ -175,9 +175,17 @@ get_transports (void)
 }
 
 
+static void
+on_from_combo_changed (ModestComboBox *combo, ModestWindow *win)
+{
+       modest_window_set_active_account (
+               win, modest_combo_box_get_active_id(combo));
+}
+
+
 
 static void
-init_window (ModestMsgEditWindow *obj)
+init_window (ModestMsgEditWindow *obj, const gchar* account)
 {
        GtkWidget *to_button, *cc_button, *bcc_button; 
        GtkWidget *header_table;
@@ -192,11 +200,17 @@ init_window (ModestMsgEditWindow *obj)
        to_button     = gtk_button_new_with_label (_("To..."));
        cc_button     = gtk_button_new_with_label (_("Cc..."));
        bcc_button    = gtk_button_new_with_label (_("Bcc..."));
-
        
        protos = get_transports ();
-       priv->from_field    = modest_combo_box_new (protos);
+       priv->from_field    = modest_combo_box_new (protos, g_str_equal);
        modest_pair_list_free (protos);
+       if (account) {
+               modest_combo_box_set_active_id (MODEST_COMBO_BOX(priv->from_field),
+                                               (gpointer)account);
+               modest_window_set_active_account (MODEST_WINDOW(obj), account);
+       }
+       /* auto-update the active account */
+       g_signal_connect (G_OBJECT(priv->from_field), "changed", G_CALLBACK(on_from_combo_changed), obj);
        
        priv->to_field      = gtk_entry_new_with_max_length (80);
        priv->cc_field      = gtk_entry_new_with_max_length (80);
@@ -249,20 +263,58 @@ on_delete_event (GtkWidget *widget, GdkEvent *event, ModestMsgEditWindow *self)
 }
 
 
+static void
+set_msg (ModestMsgEditWindow *self, TnyMsg *msg)
+{
+       TnyHeader *header;
+       GtkTextBuffer *buf;
+       const gchar *to, *cc, *bcc, *subject;
+       ModestMsgEditWindowPrivate *priv;
+       gchar *body;
+       
+       g_return_if_fail (MODEST_IS_MSG_EDIT_WINDOW (self));
+       g_return_if_fail (TNY_IS_MSG (msg));
+
+       priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (self);
+
+       header  = tny_msg_get_header (msg);
+       to      = tny_header_get_to (header);
+       cc      = tny_header_get_cc (header);
+       bcc     = tny_header_get_bcc (header);
+       subject = tny_header_get_subject (header);
+
+       if (to)
+               gtk_entry_set_text (GTK_ENTRY(priv->to_field), to);
+       if (cc)
+               gtk_entry_set_text (GTK_ENTRY(priv->cc_field), cc);
+       if (bcc)
+               gtk_entry_set_text (GTK_ENTRY(priv->bcc_field),  bcc);
+       if (subject)
+               gtk_entry_set_text (GTK_ENTRY(priv->subject_field), subject);
+
+       
+       buf  = gtk_text_view_get_buffer (GTK_TEXT_VIEW(priv->msg_body));
+       body = modest_tny_msg_get_body (msg, FALSE);
+       if (body) 
+               gtk_text_buffer_set_text (buf, body, -1);
+       g_free (body);
+}
+
+
 ModestWindow *
-modest_msg_edit_window_new (ModestEditType type)
+modest_msg_edit_window_new (TnyMsg *msg, const gchar *account)
 {
-       GObject *obj;
+       ModestMsgEditWindow *self;
        ModestMsgEditWindowPrivate *priv;
        ModestWindowPrivate *parent_priv;
        GtkActionGroup *action_group;
        GError *error = NULL;
 
-       g_return_val_if_fail (type < MODEST_EDIT_TYPE_NUM, NULL);
+       g_return_val_if_fail (msg, NULL);
        
-       obj = g_object_new(MODEST_TYPE_MSG_EDIT_WINDOW, NULL);
-       priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE(obj);
-       parent_priv = MODEST_WINDOW_GET_PRIVATE(obj);
+       self = MODEST_MSG_EDIT_WINDOW(g_object_new(MODEST_TYPE_MSG_EDIT_WINDOW, NULL));
+       priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE(self);
+       parent_priv = MODEST_WINDOW_GET_PRIVATE(self);
        
        parent_priv->ui_manager = gtk_ui_manager_new();
        action_group = gtk_action_group_new ("ModestMsgEditWindowActions");
@@ -271,11 +323,11 @@ modest_msg_edit_window_new (ModestEditType type)
        gtk_action_group_add_actions (action_group,
                                      modest_msg_edit_action_entries,
                                      G_N_ELEMENTS (modest_msg_edit_action_entries),
-                                     obj);
+                                     self);
        gtk_action_group_add_toggle_actions (action_group,
                                             modest_msg_edit_toggle_action_entries,
                                             G_N_ELEMENTS (modest_msg_edit_toggle_action_entries),
-                                            obj);
+                                            self);
        gtk_ui_manager_insert_action_group (parent_priv->ui_manager, action_group, 0);
        g_object_unref (action_group);
 
@@ -291,10 +343,9 @@ modest_msg_edit_window_new (ModestEditType type)
        /* ****** */
 
        /* Add accelerators */
-       gtk_window_add_accel_group (GTK_WINDOW (obj), 
+       gtk_window_add_accel_group (GTK_WINDOW (self), 
                                    gtk_ui_manager_get_accel_group (parent_priv->ui_manager));
 
-
        /* Toolbar / Menubar */
        priv->toolbar = gtk_ui_manager_get_widget (parent_priv->ui_manager, "/ToolBar");
        priv->menubar = gtk_ui_manager_get_widget (parent_priv->ui_manager, "/MenuBar");
@@ -302,61 +353,22 @@ modest_msg_edit_window_new (ModestEditType type)
        gtk_toolbar_set_tooltips (GTK_TOOLBAR (priv->toolbar), TRUE);
 
        /* Init window */
-       init_window (MODEST_MSG_EDIT_WINDOW(obj));
+       init_window (MODEST_MSG_EDIT_WINDOW(self), account);
 
-       restore_settings (MODEST_MSG_EDIT_WINDOW(obj));
+       restore_settings (MODEST_MSG_EDIT_WINDOW(self));
        
-       gtk_window_set_title (GTK_WINDOW(obj), "Modest");
-       gtk_window_set_icon_from_file (GTK_WINDOW(obj), MODEST_APP_ICON, NULL);
-
-       g_signal_connect (G_OBJECT(obj), "delete-event",
-                         G_CALLBACK(on_delete_event), obj);
+       gtk_window_set_title (GTK_WINDOW(self), "Modest");
+       gtk_window_set_icon_from_file (GTK_WINDOW(self), MODEST_APP_ICON, NULL);
 
-       return (ModestWindow *) (obj);
-}
-
-void
-modest_msg_edit_window_set_msg (ModestMsgEditWindow *self, TnyMsg *msg)
-{
-       TnyHeader *header;
-       GtkTextBuffer *buf;
-       const gchar *to, *cc, *bcc, *subject;
-       ModestMsgEditWindowPrivate *priv;
-       gchar *body;
+       g_signal_connect (G_OBJECT(self), "delete-event",
+                         G_CALLBACK(on_delete_event), self);
        
-       g_return_if_fail (MODEST_IS_MSG_EDIT_WINDOW (self));
-       g_return_if_fail (TNY_IS_MSG (msg));
-
-       priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (self);
-
-       header  = tny_msg_get_header (msg);
-       to      = tny_header_get_to (header);
-       cc      = tny_header_get_cc (header);
-       bcc     = tny_header_get_bcc (header);
-       subject = tny_header_get_subject (header);
-
-       if (to)
-               gtk_entry_set_text (GTK_ENTRY(priv->to_field), to);
-       if (cc)
-               gtk_entry_set_text (GTK_ENTRY(priv->cc_field), cc);
-       if (bcc)
-               gtk_entry_set_text (GTK_ENTRY(priv->bcc_field),  bcc);
-       if (subject)
-               gtk_entry_set_text (GTK_ENTRY(priv->subject_field), subject);
-       
-       buf  = gtk_text_view_get_buffer (GTK_TEXT_VIEW(priv->msg_body));
-       body = modest_tny_msg_get_body (msg, FALSE);
-       if (body) 
-               gtk_text_buffer_set_text (buf, body, -1);
-       g_free (body);
+       set_msg (self, msg);
        
-       /* TODO: lower priority, select in the From: combo to the
-          value that comes from msg <- not sure, should it be
-          allowed? */
-       
-       /* TODO: set attachments */
+       return MODEST_WINDOW(self);
 }
 
+
 MsgData * 
 modest_msg_edit_window_get_msg_data (ModestMsgEditWindow *edit_window)
 {
index b60e762..df143c2 100644 (file)
@@ -52,7 +52,6 @@ enum {
 
 typedef struct _ModestMsgViewWindowPrivate ModestMsgViewWindowPrivate;
 struct _ModestMsgViewWindowPrivate {
-
        GtkWidget   *toolbar;
        GtkWidget   *menubar;
        GtkWidget   *msg_view;
@@ -154,7 +153,7 @@ init_window (ModestMsgViewWindow *obj, TnyMsg *msg)
 
 static void
 modest_msg_view_window_finalize (GObject *obj)
-{
+{      
        G_OBJECT_CLASS(parent_class)->finalize (obj);
 }
 
@@ -169,7 +168,7 @@ on_delete_event (GtkWidget *widget, GdkEvent *event, ModestMsgViewWindow *self)
 
 
 ModestWindow *
-modest_msg_view_window_new (TnyMsg *msg)
+modest_msg_view_window_new (TnyMsg *msg, const gchar *account)
 {
        GObject *obj;
        ModestMsgViewWindowPrivate *priv;
@@ -178,10 +177,13 @@ modest_msg_view_window_new (TnyMsg *msg)
        GError *error = NULL;
 
        g_return_val_if_fail (msg, NULL);
+       g_return_val_if_fail (msg, NULL);
        
        obj = g_object_new(MODEST_TYPE_MSG_VIEW_WINDOW, NULL);
        priv = MODEST_MSG_VIEW_WINDOW_GET_PRIVATE(obj);
        parent_priv = MODEST_WINDOW_GET_PRIVATE(obj);
+
+       modest_window_set_active_account (MODEST_WINDOW(obj), account);
        
        parent_priv->ui_manager = gtk_ui_manager_new();
        action_group = gtk_action_group_new ("ModestMsgViewWindowActions");
@@ -193,6 +195,7 @@ modest_msg_view_window_new (TnyMsg *msg)
                                      obj);
        gtk_ui_manager_insert_action_group (parent_priv->ui_manager, action_group, 0);
        g_object_unref (action_group);
+
        
        /* Load the UI definition */
        gtk_ui_manager_add_ui_from_file (parent_priv->ui_manager,
@@ -224,5 +227,5 @@ modest_msg_view_window_new (TnyMsg *msg)
 
        g_signal_connect (G_OBJECT(obj), "delete-event", G_CALLBACK(on_delete_event), obj);
 
-       return (ModestWindow *) (obj);
+       return MODEST_WINDOW(obj);
 }
index dc97264..e6d38a8 100644 (file)
@@ -229,7 +229,7 @@ imap_pop_configuration (ModestStoreWidget *self)
        gtk_box_pack_start (GTK_BOX(box), label, FALSE, FALSE, 0);
 
        protos = modest_protocol_info_get_protocol_pair_list (MODEST_PROTOCOL_TYPE_SECURITY);
-       priv->security = modest_combo_box_new (protos);
+       priv->security = modest_combo_box_new (protos, g_str_equal);
        modest_pair_list_free (protos);
        
        hbox = gtk_hbox_new (FALSE, 6);
@@ -246,7 +246,7 @@ imap_pop_configuration (ModestStoreWidget *self)
        gtk_box_pack_start (GTK_BOX(hbox), label, FALSE, FALSE, 6);
        
        protos = modest_protocol_info_get_protocol_pair_list (MODEST_PROTOCOL_TYPE_AUTH);
-       combo =  modest_combo_box_new (protos);
+       combo =  modest_combo_box_new (protos, g_str_equal);
        modest_pair_list_free (protos);
 
        gtk_box_pack_start (GTK_BOX(hbox), combo, FALSE, FALSE, 0);
index b9cc626..69e900e 100644 (file)
@@ -161,7 +161,7 @@ smtp_configuration (ModestTransportWidget *self)
        gtk_box_pack_start (GTK_BOX(hbox), label, FALSE, FALSE, 0);
 
        protos = modest_protocol_info_get_protocol_pair_list (MODEST_PROTOCOL_TYPE_AUTH);
-       combo  = modest_combo_box_new (protos);
+       combo  = modest_combo_box_new (protos, g_str_equal);
        modest_pair_list_free (protos);
        
        gtk_box_pack_start (GTK_BOX(hbox), combo, FALSE, FALSE,0);
@@ -174,7 +174,7 @@ smtp_configuration (ModestTransportWidget *self)
        gtk_box_pack_start (GTK_BOX(hbox), label, FALSE, FALSE, 6);
 
        protos = modest_protocol_info_get_protocol_pair_list (MODEST_PROTOCOL_TYPE_AUTH);
-       combo  = modest_combo_box_new (protos);
+       combo  = modest_combo_box_new (protos, g_str_equal);
        modest_pair_list_free (protos);
        
        gtk_box_pack_start (GTK_BOX(hbox), combo, FALSE, FALSE, 0);