* Enable sending mails again.
[modest] / src / gtk-glade / modest-ui.c
index 71e1276..c313f1b 100644 (file)
@@ -68,6 +68,8 @@ static void on_forward_clicked (GtkWidget *widget, ModestUI *modest_ui);
 
 static void on_delete_clicked (GtkWidget *widget, ModestUI *modest_ui);
 
+static void on_view_attachments_toggled(GtkWidget *widget, ModestUI *modest_ui);
+
 #if 1
 static void on_send_button_clicked (GtkWidget *widget, ModestEditorWindow *modest_editwin);
 #else
@@ -161,6 +163,8 @@ modest_ui_init (ModestUI *obj)
        priv->modest_conf       = NULL;
        priv->modest_window_mgr = NULL;
        priv->glade_xml         = NULL;
+       priv->folder_view       = NULL;
+       priv->header_view       = NULL;
 
 }
 
@@ -196,6 +200,8 @@ modest_ui_new (ModestConf *modest_conf)
        ModestAccountMgr *modest_acc_mgr;
        ModestIdentityMgr *modest_id_mgr;
        TnyAccountStoreIface *account_store_iface;
+       GSList *account_names_list;
+       GSList *identities_list;
 
        g_return_val_if_fail (modest_conf, NULL);
 
@@ -250,6 +256,14 @@ modest_ui_new (ModestConf *modest_conf)
        g_signal_connect (priv->modest_window_mgr, "last_window_closed",
                          G_CALLBACK(modest_ui_last_window_closed),
                          NULL);
+
+       account_names_list=modest_account_mgr_server_account_names(modest_acc_mgr, NULL, MODEST_PROTO_TYPE_ANY, NULL, FALSE);
+       identities_list=modest_identity_mgr_identity_names(modest_id_mgr, NULL);
+       if (!(account_names_list!=NULL || identities_list!=NULL))
+               wizard_account_dialog(MODEST_UI(obj));
+       g_slist_free(account_names_list);
+       g_slist_free(identities_list);
+
        return obj;
 }
 
@@ -264,7 +278,8 @@ modest_ui_show_main_window (ModestUI *modest_ui)
        GtkWidget     *message_view;
        GtkWidget     *account_settings_item;
        GtkWidget     *new_account_item;
-        GtkWidget     *delete_item;
+       GtkWidget     *delete_item;
+       GtkWidget     *view_attachments_item;
 
        GtkWidget  *folder_view_holder,
                *header_view_holder,
@@ -286,6 +301,7 @@ modest_ui_show_main_window (ModestUI *modest_ui)
        folder_view =
                GTK_WIDGET(modest_main_window_folder_tree(priv->modest_acc_mgr,
                                                          priv->account_store));
+       priv->folder_view = folder_view;
        folder_view_holder = glade_xml_get_widget (priv->glade_xml, "folders");
        if (!folder_view||!folder_view_holder) {
                g_warning ("failed to create folder tree");
@@ -294,6 +310,7 @@ modest_ui_show_main_window (ModestUI *modest_ui)
        gtk_container_add (GTK_CONTAINER(folder_view_holder), folder_view);
 
        header_view  =  GTK_WIDGET(modest_main_window_header_tree (NULL));
+       priv->header_view = header_view;
        header_view_holder = glade_xml_get_widget (priv->glade_xml, "mail_list");
        if (!header_view) {
                g_warning ("failed to create header tree");
@@ -304,7 +321,7 @@ modest_ui_show_main_window (ModestUI *modest_ui)
        g_signal_connect (G_OBJECT(folder_view), "folder_selected",
                          G_CALLBACK(on_folder_clicked), modest_ui);
 
-       message_view  = GTK_WIDGET(modest_tny_msg_view_new (NULL));
+       message_view  = GTK_WIDGET(modest_tny_msg_view_new (NULL, priv->modest_conf));
        if (!message_view) {
                g_warning ("failed to create message view");
                return FALSE;
@@ -349,6 +366,24 @@ modest_ui_show_main_window (ModestUI *modest_ui)
        g_signal_connect (delete_item, "activate", G_CALLBACK(on_delete_clicked),
                          modest_ui);
 
+       view_attachments_item = glade_xml_get_widget (priv->glade_xml, "menu_view_attachments");
+       if (!view_attachments_item)
+       {
+               g_warning ("The view_attachments_item isn't available!");
+               return FALSE;
+       }
+
+       gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(view_attachments_item),
+                                                                  modest_conf_get_bool(priv->modest_conf,
+                                                                                                               MODEST_CONF_MSG_VIEW_SHOW_ATTACHMENTS_INLINE,
+                                                                                                               NULL)
+                                                                  );
+
+       g_signal_connect (view_attachments_item,
+                                         "toggled",
+                                         G_CALLBACK(on_view_attachments_toggled),
+                                         modest_ui);
+
        register_toolbar_callbacks (modest_ui);
 
        modest_window_mgr_register (priv->modest_window_mgr,
@@ -435,6 +470,27 @@ hide_edit_window (GtkWidget *win, GdkEvent *event, gpointer data)
 }
 #endif
 
+
+static gboolean close_edit_confirm_dialog(ModestEditorWindow *edit_win)
+{
+       GtkWidget *mdialog;
+       gint res;
+
+       mdialog = gtk_message_dialog_new(GTK_WINDOW(edit_win),
+                       GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
+                       GTK_MESSAGE_QUESTION,
+                       GTK_BUTTONS_YES_NO,
+                       _("Message was modified.\nDiscard Changes?"));
+       gtk_widget_show_all (mdialog);
+
+       res=gtk_dialog_run(GTK_DIALOG(mdialog));
+       gtk_widget_destroy (mdialog);
+       if (res == GTK_RESPONSE_YES)
+               return TRUE;
+       else
+               return FALSE;
+}
+
 static void
 close_edit_window (GtkWidget *win, GdkEvent *event, gpointer data)
 {
@@ -446,11 +502,18 @@ close_edit_window (GtkWidget *win, GdkEvent *event, gpointer data)
        win_data = modest_editor_window_get_data(edit_win);
        priv = MODEST_UI_GET_PRIVATE(win_data->modest_ui);
 
-       g_message("window was %s modified", modest_editor_window_get_modified(edit_win) ? "" : "not");
+       // g_message("window was %s modified", modest_editor_window_get_modified(edit_win) ? "" : "not");
 
-       gtk_widget_hide (GTK_WIDGET(edit_win));
-       modest_window_mgr_unregister(priv->modest_window_mgr, G_OBJECT(edit_win));
-       gtk_widget_destroy(GTK_WIDGET(edit_win));
+       if (modest_editor_window_get_modified(edit_win)) {
+               if (close_edit_confirm_dialog(edit_win)) {
+                       gtk_widget_hide (GTK_WIDGET(edit_win));
+                       modest_window_mgr_unregister(priv->modest_window_mgr, G_OBJECT(edit_win));
+                       gtk_widget_destroy(GTK_WIDGET(edit_win));
+                       g_message("closing window");
+               } else {
+                       g_message("not closing window");
+               }
+       }
 }
 
 
@@ -936,7 +999,7 @@ static void on_editor_entry_changed(GtkEditable *editable,
        GtkWidget *edit_win;
        EditWinData *windata;
 
-       edit_win = gtk_widget_get_toplevel(GTK_WIDGET(editable));
+       edit_win = (GtkWidget *)user_data;
        windata = (EditWinData *)modest_editor_window_get_data(MODEST_EDITOR_WINDOW(edit_win));
 
        modest_editor_window_set_modified(MODEST_EDITOR_WINDOW(edit_win), TRUE);
@@ -948,7 +1011,7 @@ static void on_editor_buffer_changed (GtkTextBuffer *textbuffer,
        GtkWidget *edit_win;
        EditWinData *windata;
 
-       edit_win = gtk_widget_get_toplevel(GTK_WIDGET(textbuffer));
+       edit_win = (GtkWidget *)user_data;
        windata = (EditWinData *)modest_editor_window_get_data(MODEST_EDITOR_WINDOW(edit_win));
 
        modest_editor_window_set_modified(MODEST_EDITOR_WINDOW(edit_win), TRUE);
@@ -984,6 +1047,7 @@ on_new_mail_clicked (GtkWidget *widget, ModestUI *modest_ui)
        g_signal_connect(w, "changed", G_CALLBACK(on_editor_entry_changed), edit_win);
        w = glade_xml_get_widget (glade_xml, "body_view");
        buf = gtk_text_view_get_buffer(GTK_TEXT_VIEW(w));
+       gtk_text_buffer_set_text(buf, "", -1);
        g_signal_connect(buf, "changed", G_CALLBACK(on_editor_buffer_changed), edit_win);
 
        g_signal_connect (edit_win, "destroy-event", G_CALLBACK(close_edit_window),
@@ -1013,7 +1077,8 @@ new_editor_with_presets (ModestUI *modest_ui, const gchar *to_header,
 {
        GtkWidget *edit_win;
        GladeXML *glade_xml;
-       GtkWidget *btn;
+       GtkWidget *btn, *w;
+       GtkTextBuffer *buf;
        EditWinData *windata;
        ModestUIPrivate *priv;
        gint height, width;
@@ -1029,6 +1094,14 @@ new_editor_with_presets (ModestUI *modest_ui, const gchar *to_header,
        g_signal_connect (btn, "clicked", G_CALLBACK(on_send_button_clicked),
                          edit_win);
 
+       w = glade_xml_get_widget (glade_xml, "to_entry");
+       g_signal_connect(w, "changed", G_CALLBACK(on_editor_entry_changed), edit_win);
+       w = glade_xml_get_widget (glade_xml, "subject_entry");
+       g_signal_connect(w, "changed", G_CALLBACK(on_editor_entry_changed), edit_win);
+       w = glade_xml_get_widget (glade_xml, "body_view");
+       buf = gtk_text_view_get_buffer(GTK_TEXT_VIEW(w));
+       g_signal_connect(buf, "changed", G_CALLBACK(on_editor_buffer_changed), edit_win);
+
        g_signal_connect (edit_win, "destroy-event", G_CALLBACK(close_edit_window),
                          edit_win);
        g_signal_connect (edit_win, "delete-event", G_CALLBACK(close_edit_window),
@@ -1177,10 +1250,10 @@ on_send_button_clicked (GtkWidget *widget, ModestEditorWindow *modest_editwin)
        gchar *body;
        GtkTextIter start, end;
        GtkTextBuffer *buf;
-       /* TnyAccountStoreIface *account_store;
+       TnyAccountStoreIface *account_store;
        const GList *transport_accounts;
        TnyTransportAccountIface *transport_account;
-       ModestConf       *conf; */
+       ModestConf       *conf;
        ModestIdentityMgr *id_mgr;
        EditWinData *win_data;
 
@@ -1194,7 +1267,7 @@ on_send_button_clicked (GtkWidget *widget, ModestEditorWindow *modest_editwin)
                (modest_tny_transport_actions_new ());
 
        priv = MODEST_UI_GET_PRIVATE(modest_ui);
-#if 0
+
        account_store = priv->account_store;
        transport_accounts =
                tny_account_store_iface_get_transport_accounts (account_store);
@@ -1204,7 +1277,7 @@ on_send_button_clicked (GtkWidget *widget, ModestEditorWindow *modest_editwin)
        } else /* take the first one! */
                transport_account =
                        TNY_TRANSPORT_ACCOUNT_IFACE(transport_accounts->data);
-#endif
+
        to_entry      = glade_xml_get_widget (win_data->glade_xml, "to_entry");
        subject_entry = glade_xml_get_widget (win_data->glade_xml, "subject_entry");
        body_view     = glade_xml_get_widget (win_data->glade_xml, "body_view");
@@ -1221,14 +1294,17 @@ on_send_button_clicked (GtkWidget *widget, ModestEditorWindow *modest_editwin)
                                                             MODEST_IDENTITY_DEFAULT_IDENTITY,
                                                             MODEST_IDENTITY_EMAIL, NULL);
 
+       if (!email_from)
+               email_from = "";
+       
        g_message("sending \"%s\" %s ==> %s", subject, email_from, to);
-/*
+
        modest_tny_transport_actions_send_message (actions,
                                                   transport_account,
                                                   email_from,
                                                   to, "", "", subject,
                                                   body);
-*/
+
        g_free (body);
        g_object_unref (G_OBJECT(actions));
 
@@ -1240,7 +1316,27 @@ on_send_button_clicked (GtkWidget *widget, ModestEditorWindow *modest_editwin)
                g_warning("editor window has vanished!");
 }
 
+static void
+on_view_attachments_toggled(GtkWidget *widget, ModestUI *modest_ui)
+{
+       GtkWidget *view_attachments_item, *paned;
+       ModestTnyMsgView *msg_view;
+       ModestUIPrivate *priv;
+
+       priv = MODEST_UI_GET_PRIVATE(modest_ui);
+       view_attachments_item = glade_xml_get_widget (priv->glade_xml, "menu_view_attachments");
+       g_return_if_fail(view_attachments_item);
+
+       modest_conf_set_bool(priv->modest_conf,
+                                                        MODEST_CONF_MSG_VIEW_SHOW_ATTACHMENTS_INLINE,
+                                                        gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(view_attachments_item)),
+                                                        NULL);
 
+       /* refresh message view */
+       paned = glade_xml_get_widget (priv->glade_xml,"mail_paned");
+       msg_view = MODEST_TNY_MSG_VIEW(gtk_paned_get_child2 (GTK_PANED(paned)));
+       modest_tny_msg_view_redraw(MODEST_TNY_MSG_VIEW(msg_view));
+}
 static void
 on_delete_clicked (GtkWidget *widget, ModestUI *modest_ui)
 {
@@ -1324,11 +1420,11 @@ on_sendreceive_button_clicked (GtkWidget *widget, ModestUI *modest_ui)
                tny_account_store_iface_get_store_accounts (account_store);
 
        for (iter = store_accounts; iter; iter = iter->next)
+       {
                modest_tny_store_actions_update_folders (store_actions,
                                                                                                 TNY_STORE_ACCOUNT_IFACE (iter->data));
 
-       /* TODO, lock, refresh display */
-
+       }
        g_object_unref (store_actions);
 
 }