#include <glib/gi18n.h>
#include <string.h>
#include <modest-runtime.h>
+#include <modest-tny-msg.h>
+#include <modest-tny-account.h>
+
#include "modest-ui-actions.h"
+
#include "modest-tny-platform-factory.h"
#include <widgets/modest-main-window.h>
-#include "modest-account-view-window.h"
#include <widgets/modest-msg-view-window.h>
+#include <widgets/modest-account-view-window.h>
#include "modest-account-mgr-helpers.h"
#include "modest-mail-operation.h"
typedef struct _GetMsgAsyncHelper {
- ModestMainWindow *main_window;
+ ModestWindow *window;
TnyIterator *iter;
GFunc func;
gpointer user_data;
typedef struct _ReplyForwardHelper {
guint reply_forward_type;
ReplyForwardAction action;
- gchar *from;
+ gchar *account_name;
} ReplyForwardHelper;
static void read_msg_func (gpointer data, gpointer user_data);
static void get_msg_cb (TnyFolder *folder, TnyMsg *msg, GError **err,
gpointer user_data);
-
static void reply_forward (GtkWidget *widget, ReplyForwardAction action,
- ModestMainWindow *main_window);
-
+ ModestWindow *win);
static gchar* ask_for_folder_name (GtkWindow *parent_window, const gchar *title);
gtk_widget_destroy(about);
}
+
+static TnyList *
+get_selected_headers (ModestWindow *win)
+{
+ if (MODEST_IS_MAIN_WINDOW(win)) {
+ GtkWidget *header_view;
+
+ header_view = modest_main_window_get_child_widget (MODEST_MAIN_WINDOW(win),
+ MODEST_WIDGET_TYPE_HEADER_VIEW);
+ return modest_header_view_get_selected_headers (MODEST_HEADER_VIEW(header_view));
+
+ } else if (MODEST_IS_MSG_VIEW_WINDOW (win)) {
+ /* for MsgViewWindows, we simply return a list with one element */
+ TnyMsg *msg;
+ TnyHeader *header;
+ TnyList *list = NULL;
+
+ msg = modest_msg_view_window_get_message (MODEST_MSG_VIEW_WINDOW(win));
+ if (msg) {
+ header = tny_msg_get_header (msg);
+ list = tny_simple_list_new ();
+ tny_list_prepend (list, G_OBJECT(header));
+ g_object_unref (G_OBJECT(header));
+ }
+ return list;
+
+ } else
+ return NULL;
+}
+
void
-modest_ui_actions_on_delete (GtkWidget *widget, ModestMainWindow *main_window)
+modest_ui_actions_on_delete (GtkWidget *widget, ModestWindow *win)
{
TnyList *header_list;
TnyIterator *iter;
- GtkTreeModel *model;
+// GtkTreeModel *model;
- g_return_if_fail (MODEST_IS_MAIN_WINDOW(main_window));
-
- if (!main_window->header_view)
- return;
-
- header_list = modest_header_view_get_selected_headers (main_window->header_view);
+ g_return_if_fail (MODEST_IS_WINDOW(win));
+
+ header_list = get_selected_headers (win);
if (header_list) {
iter = tny_list_create_iterator (header_list);
- model = gtk_tree_view_get_model (GTK_TREE_VIEW (main_window->header_view));
- if (GTK_IS_TREE_MODEL_SORT (model))
- model = gtk_tree_model_sort_get_model (GTK_TREE_MODEL_SORT (model));
+/* model = gtk_tree_view_get_model (GTK_TREE_VIEW (header_view)); */
+/* if (GTK_IS_TREE_MODEL_SORT (model)) */
+/* model = gtk_tree_model_sort_get_model (GTK_TREE_MODEL_SORT (model)); */
do {
TnyHeader *header;
ModestMailOperation *mail_op;
modest_mail_operation_remove_msg (mail_op, header, TRUE);
/* Remove from tree model */
- if (modest_mail_operation_get_status (mail_op) ==
- MODEST_MAIL_OPERATION_STATUS_SUCCESS)
- tny_list_remove (TNY_LIST (model), G_OBJECT (header));
- else {
+ if (modest_mail_operation_get_status (mail_op) ==
+ MODEST_MAIL_OPERATION_STATUS_SUCCESS) {
+/* tny_list_remove (TNY_LIST (model), G_OBJECT (header)); */
+ } else {
/* TODO: error handling management */
const GError *error;
error = modest_mail_operation_get_error (mail_op);
- g_warning (error->message);
+ if (error)
+ g_warning (error->message);
}
g_object_unref (G_OBJECT (mail_op));
modest_ui_actions_on_new_msg (GtkWidget *widget, ModestWindow *win)
{
ModestWindow *msg_win;
- msg_win = modest_msg_edit_window_new (MODEST_EDIT_TYPE_NEW);
+ TnyMsg *msg = NULL;
+ TnyFolder *folder = NULL;
+ gchar *account_name = NULL;
+ gchar *from_str = NULL;
+ GError *err = NULL;
+ TnyAccount *account;
+
+ account_name = g_strdup(modest_window_get_active_account (win));
+ if (!account_name)
+ account_name = modest_account_mgr_get_default_account (modest_runtime_get_account_mgr());
+
+ account = modest_tny_account_store_get_tny_account_by_account (modest_runtime_get_account_store(),
+ account_name,
+ TNY_ACCOUNT_TYPE_STORE);
+ if (!account) {
+ g_printerr ("modest: failed to get tnyaccount for '%s'\n", account_name);
+ goto cleanup;
+ }
+
+ from_str = modest_account_mgr_get_from_string (modest_runtime_get_account_mgr(), account_name);
+
+ msg = modest_tny_msg_new ("", from_str, "", "", "", "", NULL);
+ if (!msg) {
+ g_printerr ("modest: failed to create new msg\n");
+ goto cleanup;
+ }
+
+ folder = modest_tny_account_get_special_folder (account, TNY_FOLDER_TYPE_DRAFTS);
+ if (!folder) {
+ g_printerr ("modest: failed to find Drafts folder\n");
+ goto cleanup;
+ }
+
+ tny_folder_add_msg (folder, msg, &err);
+ if (err) {
+ g_printerr ("modest: error adding msg to Drafts folder: %s",
+ err->message);
+ g_error_free (err);
+ goto cleanup;
+ }
+
+ msg_win = modest_msg_edit_window_new (msg, account_name);
if (win)
gtk_window_set_transient_for (GTK_WINDOW (msg_win),
- GTK_WINDOW (win));
-
+ GTK_WINDOW (win));
gtk_widget_show_all (GTK_WIDGET (msg_win));
+
+cleanup:
+ g_free (account_name);
+ g_free (from_str);
+ if (account)
+ g_object_unref (G_OBJECT(account));
+ if (msg)
+ g_object_unref (G_OBJECT(msg));
+ if (folder)
+ g_object_unref (G_OBJECT(folder));
}
void
modest_ui_actions_on_open (GtkWidget *widget, ModestWindow *win)
{
- /* FIXME */
-
+ modest_runtime_not_implemented (GTK_WINDOW(win)); /* FIXME */
}
+
static void
reply_forward_func (gpointer data, gpointer user_data)
{
ReplyForwardHelper *rf_helper;
ModestWindow *msg_win;
ModestEditType edit_type;
-
+ gchar *from;
+ GError *err = NULL;
+ TnyFolder *folder = NULL;
+ TnyAccount *account = NULL;
+
msg = TNY_MSG (data);
helper = (GetMsgAsyncHelper *) user_data;
rf_helper = (ReplyForwardHelper *) helper->user_data;
+ from = modest_account_mgr_get_from_string (modest_runtime_get_account_mgr(),
+ rf_helper->account_name);
/* Create reply mail */
switch (rf_helper->action) {
case ACTION_REPLY:
new_msg =
- modest_mail_operation_create_reply_mail (msg,
- rf_helper->from,
+ modest_mail_operation_create_reply_mail (msg, from,
rf_helper->reply_forward_type,
MODEST_MAIL_OPERATION_REPLY_MODE_SENDER);
break;
case ACTION_REPLY_TO_ALL:
new_msg =
- modest_mail_operation_create_reply_mail (msg, rf_helper->from, rf_helper->reply_forward_type,
+ modest_mail_operation_create_reply_mail (msg, from, rf_helper->reply_forward_type,
MODEST_MAIL_OPERATION_REPLY_MODE_ALL);
edit_type = MODEST_EDIT_TYPE_REPLY;
break;
case ACTION_FORWARD:
new_msg =
- modest_mail_operation_create_forward_mail (msg, rf_helper->from, rf_helper->reply_forward_type);
+ modest_mail_operation_create_forward_mail (msg, from, rf_helper->reply_forward_type);
edit_type = MODEST_EDIT_TYPE_FORWARD;
break;
default:
g_return_if_reached ();
+ return;
}
if (!new_msg) {
- g_warning ("Unable to create a message");
+ g_printerr ("modest: failed to create message\n");
goto cleanup;
}
-
+
+ account = modest_tny_account_store_get_tny_account_by_account (modest_runtime_get_account_store(),
+ rf_helper->account_name,
+ TNY_ACCOUNT_TYPE_STORE);
+ if (!account) {
+ g_printerr ("modest: failed to get tnyaccount for '%s'\n", rf_helper->account_name);
+ goto cleanup;
+ }
+
+ folder = modest_tny_account_get_special_folder (account, TNY_FOLDER_TYPE_DRAFTS);
+ if (!folder) {
+ g_printerr ("modest: failed to find Drafts folder\n");
+ goto cleanup;
+ }
+
+ tny_folder_add_msg (folder, msg, &err);
+ if (err) {
+ g_printerr ("modest: error adding msg to Drafts folder: %s",
+ err->message);
+ g_error_free (err);
+ goto cleanup;
+ }
+
/* Show edit window */
- msg_win = modest_msg_edit_window_new (MODEST_EDIT_TYPE_NEW);
- modest_msg_edit_window_set_msg (MODEST_MSG_EDIT_WINDOW (msg_win),
- new_msg);
+ msg_win = modest_msg_edit_window_new (new_msg, rf_helper->account_name);
gtk_widget_show_all (GTK_WIDGET (msg_win));
-
- /* Clean */
- g_object_unref (G_OBJECT (new_msg));
- cleanup:
- g_free (rf_helper->from);
+cleanup:
+ if (new_msg)
+ g_object_unref (G_OBJECT (new_msg));
+ if (folder)
+ g_object_unref (G_OBJECT (folder));
+ if (account)
+ g_object_unref (G_OBJECT (account));
+
+ g_free (rf_helper->account_name);
g_slice_free (ReplyForwardHelper, rf_helper);
}
-
/*
* Common code for the reply and forward actions
*/
static void
-reply_forward (GtkWidget *widget, ReplyForwardAction action,
- ModestMainWindow *main_window)
+reply_forward (GtkWidget *widget, ReplyForwardAction action, ModestWindow *win)
{
- ModestAccountMgr *account_mgr;
TnyList *header_list;
guint reply_forward_type;
- ModestConf *conf;
- ModestAccountData *default_account_data;
TnyHeader *header;
TnyFolder *folder;
- gchar *from, *key, *default_account_name;
GetMsgAsyncHelper *helper;
ReplyForwardHelper *rf_helper;
+
+ g_return_if_fail (MODEST_IS_WINDOW(win));
- if (!main_window->header_view)
- return;
-
- header_list = modest_header_view_get_selected_headers (main_window->header_view);
+ header_list = get_selected_headers (win);
if (!header_list)
return;
-
- conf = modest_runtime_get_conf ();
- /* Get reply or forward type */
- key = g_strdup_printf ("%s/%s", MODEST_CONF_NAMESPACE,
- (action == ACTION_FORWARD) ? MODEST_CONF_FORWARD_TYPE : MODEST_CONF_REPLY_TYPE);
- reply_forward_type = modest_conf_get_int (conf, key, NULL);
- g_free (key);
-
+ reply_forward_type = modest_conf_get_int (modest_runtime_get_conf (),
+ (action == ACTION_FORWARD) ? MODEST_CONF_FORWARD_TYPE : MODEST_CONF_REPLY_TYPE,
+ NULL);
/* We assume that we can only select messages of the
same folder and that we reply all of them from the
same account. In fact the interface currently only
allows single selection */
- account_mgr = modest_runtime_get_account_mgr();
- default_account_name = modest_account_mgr_get_default_account (account_mgr);
- default_account_data =
- modest_account_mgr_get_account_data (account_mgr,
- (const gchar*) default_account_name);
- from = g_strdup (default_account_data->email);
- modest_account_mgr_free_account_data (account_mgr, default_account_data);
- g_free (default_account_name);
/* Fill helpers */
rf_helper = g_slice_new0 (ReplyForwardHelper);
rf_helper->reply_forward_type = reply_forward_type;
rf_helper->action = action;
- rf_helper->from = from;
-
+
+ rf_helper->account_name = g_strdup (modest_window_get_active_account (win));
+ if (!rf_helper->account_name)
+ rf_helper->account_name =
+ modest_account_mgr_get_default_account (modest_runtime_get_account_mgr());
+
helper = g_slice_new0 (GetMsgAsyncHelper);
- helper->main_window = main_window;
+ helper->window = win;
helper->func = reply_forward_func;
helper->iter = tny_list_create_iterator (header_list);
helper->user_data = rf_helper;
-
- header = TNY_HEADER (tny_iterator_get_current (helper->iter));
- folder = tny_header_get_folder (header);
-
- /* The callback will call it per each header */
- tny_folder_get_msg_async (folder, header, get_msg_cb, helper);
-
- /* Clean */
- g_object_unref (G_OBJECT (header));
- g_object_unref (G_OBJECT (folder));
+
+ if (MODEST_IS_MSG_VIEW_WINDOW(win)) {
+ TnyMsg *msg;
+ msg = modest_msg_view_window_get_message(MODEST_MSG_VIEW_WINDOW(win));
+ if (!msg) {
+ g_printerr ("modest: no message found\n");
+ return;
+ } else
+ reply_forward_func (msg, helper);
+ } else {
+ header = TNY_HEADER (tny_iterator_get_current (helper->iter));
+ folder = tny_header_get_folder (header);
+ if (folder) {
+ /* The callback will call it per each header */
+ tny_folder_get_msg_async (folder, header, get_msg_cb, helper);
+ g_object_unref (G_OBJECT (folder));
+ } else
+ g_printerr ("modest: no folder for header\n");
+
+ /* Clean */
+ g_object_unref (G_OBJECT (header));
+ }
}
+
void
-modest_ui_actions_on_reply (GtkWidget *widget, ModestMainWindow *main_window)
+modest_ui_actions_on_reply (GtkWidget *widget, ModestWindow *win)
{
- g_return_if_fail (MODEST_IS_MAIN_WINDOW(main_window));
+ g_return_if_fail (MODEST_IS_WINDOW(win));
- reply_forward (widget, ACTION_REPLY, main_window);
+ reply_forward (widget, ACTION_REPLY, win);
}
void
-modest_ui_actions_on_forward (GtkWidget *widget, ModestMainWindow *main_window)
+modest_ui_actions_on_forward (GtkWidget *widget, ModestWindow *win)
{
- g_return_if_fail (MODEST_IS_MAIN_WINDOW(main_window));
+ g_return_if_fail (MODEST_IS_WINDOW(win));
- reply_forward (widget, ACTION_FORWARD, main_window);
+ reply_forward (widget, ACTION_FORWARD, win);
}
void
-modest_ui_actions_on_reply_all (GtkWidget *widget,ModestMainWindow *main_window)
+modest_ui_actions_on_reply_all (GtkWidget *widget,ModestWindow *win)
{
- g_return_if_fail (MODEST_IS_MAIN_WINDOW(main_window));
+ g_return_if_fail (MODEST_IS_WINDOW(win));
- reply_forward (widget, ACTION_REPLY_TO_ALL, main_window);
+ reply_forward (widget, ACTION_REPLY_TO_ALL, win);
}
void
modest_ui_actions_on_next (GtkWidget *widget,
ModestMainWindow *main_window)
{
+ GtkWidget *header_view;
g_return_if_fail (MODEST_IS_MAIN_WINDOW(main_window));
- if (main_window->header_view)
- modest_header_view_select_next (main_window->header_view);
+ header_view = modest_main_window_get_child_widget (main_window,
+ MODEST_WIDGET_TYPE_HEADER_VIEW);
+ if (!header_view)
+ return;
+
+ modest_header_view_select_next (MODEST_HEADER_VIEW(header_view));
}
+void
+modest_ui_actions_on_prev (GtkWidget *widget,
+ ModestMainWindow *main_window)
+{
+ GtkWidget *header_view;
+ g_return_if_fail (MODEST_IS_MAIN_WINDOW(main_window));
+
+ header_view = modest_main_window_get_child_widget (main_window,
+ MODEST_WIDGET_TYPE_HEADER_VIEW);
+ if (!header_view)
+ return;
+
+ modest_header_view_select_prev (MODEST_HEADER_VIEW(header_view));
+}
+
+
+void
+modest_ui_actions_on_send_receive (GtkWidget *widget, ModestWindow *win)
+{
+ gchar *account_name;
+ TnyAccount *tny_account;
+ ModestTnySendQueue *send_queue;
+
+ account_name =
+ g_strdup(modest_window_get_active_account(MODEST_WINDOW(win)));
+ if (!account_name)
+ account_name = modest_account_mgr_get_default_account (modest_runtime_get_account_mgr());
+ if (!account_name) {
+ g_printerr ("modest: cannot get account\n");
+ return;
+ }
+
+ tny_account =
+ modest_tny_account_store_get_tny_account_by_account (modest_runtime_get_account_store(),
+ account_name,
+ TNY_ACCOUNT_TYPE_TRANSPORT);
+ if (!tny_account) {
+ g_printerr ("modest: cannot get tny transport account\n");
+ return;
+ }
+
+ send_queue = modest_tny_send_queue_new (TNY_CAMEL_TRANSPORT_ACCOUNT(tny_account));
+ modest_tny_send_queue_flush (send_queue);
+
+ g_object_unref (G_OBJECT(send_queue));
+ g_object_unref (G_OBJECT(tny_account));
+}
+
+
+
void
modest_ui_actions_toggle_view (GtkWidget *widget, ModestMainWindow *main_window)
{
ModestConf *conf;
+ GtkWidget *header_view;
g_return_if_fail (MODEST_IS_MAIN_WINDOW(main_window));
-
- if (!main_window->header_view)
+
+ header_view = modest_main_window_get_child_widget (main_window,
+ MODEST_WIDGET_TYPE_HEADER_VIEW);
+ if (!header_view)
return;
+
conf = modest_runtime_get_conf ();
/* what is saved/restored is depending on the style; thus; we save with
* old style, then update the style, and restore for this new style*/
- modest_widget_memory_save (conf, G_OBJECT(main_window->header_view), "header-view");
+ modest_widget_memory_save (conf, G_OBJECT(header_view), "header-view");
- if (modest_header_view_get_style (main_window->header_view) == MODEST_HEADER_VIEW_STYLE_DETAILS)
- modest_header_view_set_style (main_window->header_view,
+ if (modest_header_view_get_style
+ (MODEST_HEADER_VIEW(header_view)) == MODEST_HEADER_VIEW_STYLE_DETAILS)
+ modest_header_view_set_style (MODEST_HEADER_VIEW(header_view),
MODEST_HEADER_VIEW_STYLE_TWOLINES);
else
- modest_header_view_set_style (main_window->header_view,
+ modest_header_view_set_style (MODEST_HEADER_VIEW(header_view),
MODEST_HEADER_VIEW_STYLE_DETAILS);
- modest_widget_memory_restore (conf, G_OBJECT(main_window->header_view),
+ modest_widget_memory_restore (conf, G_OBJECT(header_view),
"header-view");
}
TnyHeader *header;
GetMsgAsyncHelper *helper;
TnyHeaderFlags header_flags;
-
+ GtkWidget *msg_preview;
+
msg = TNY_MSG (data);
helper = (GetMsgAsyncHelper *) user_data;
- if (!helper->main_window->msg_preview)
+ msg_preview = modest_main_window_get_child_widget (MODEST_MAIN_WINDOW (helper->window),
+ MODEST_WIDGET_TYPE_MSG_PREVIEW);
+ if (!msg_preview)
return;
/* mark message as seen; _set_flags crashes, bug in tinymail? */
g_object_unref (G_OBJECT (header));
/* Set message on msg view */
- modest_msg_view_set_message (helper->main_window->msg_preview,
- msg);
+ modest_msg_view_set_message (MODEST_MSG_VIEW(msg_preview), msg);
}
/*
helper = (GetMsgAsyncHelper *) user_data;
if ((*err && ((*err)->code == TNY_FOLDER_ERROR_GET_MSG)) || !msg) {
- ModestHeaderView *header_view =
- helper->main_window->header_view;
- if (header_view)
- modest_ui_actions_on_item_not_found (header_view,
- MODEST_ITEM_TYPE_MESSAGE,
- MODEST_WINDOW(helper->main_window));
+ modest_ui_actions_on_item_not_found (NULL,
+ MODEST_ITEM_TYPE_MESSAGE,
+ helper->window);
return;
}
}
void
-modest_ui_actions_on_header_selected (ModestHeaderView *folder_view, TnyHeader *header,
+modest_ui_actions_on_header_selected (ModestHeaderView *folder_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));
-
- if (!main_window->msg_preview)
+
+ 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 (main_window->msg_preview, NULL);
+ modest_msg_view_set_message (MODEST_MSG_VIEW(msg_preview), NULL);
return;
}
/* Fill helper data */
helper = g_slice_new0 (GetMsgAsyncHelper);
- helper->main_window = main_window;
+ helper->window = MODEST_WINDOW (main_window);
helper->iter = tny_list_create_iterator (list);
helper->func = read_msg_func;
void
modest_ui_actions_on_header_activated (ModestHeaderView *folder_view, TnyHeader *header,
- ModestMainWindow *main_window)
+ ModestMainWindow *main_window)
{
ModestWindow *win;
TnyFolder *folder = NULL;
TnyMsg *msg = NULL;
-
+ gchar *account = NULL;
+
g_return_if_fail (MODEST_IS_MAIN_WINDOW(main_window));
if (!header)
goto cleanup;
}
- win = modest_msg_view_window_new (msg);
+ account = g_strdup(modest_window_get_active_account(MODEST_WINDOW(main_window)));
+ if (!account)
+ account = modest_account_mgr_get_default_account (modest_runtime_get_account_mgr());
+
+ win = modest_msg_view_window_new (msg, account);
gtk_window_set_transient_for (GTK_WINDOW (win),
GTK_WINDOW (main_window));
gtk_widget_show_all (GTK_WIDGET(win));
cleanup:
+ g_free (account);
+
if (folder)
g_object_unref (G_OBJECT (folder));
if (msg)
- g_object_unref (G_OBJECT (folder));
+ g_object_unref (G_OBJECT (msg));
}
-
-
-
-
void
modest_ui_actions_on_folder_selection_changed (ModestFolderView *folder_view,
TnyFolder *folder,
// GtkLabel *folder_info_label;
gchar *txt;
ModestConf *conf;
-
+ GtkWidget *header_view;
+
/* folder_info_label = */
/* GTK_LABEL (modest_widget_factory_get_folder_info_label */
/* (modest_runtime_get_widget_factory())); */
/* } */
g_return_if_fail (MODEST_IS_MAIN_WINDOW(main_window));
-
- if (!main_window->header_view)
- return;
+ header_view = modest_main_window_get_child_widget(main_window,
+ MODEST_WIDGET_TYPE_HEADER_VIEW);
+ if (!header_view)
+ return;
+
conf = modest_runtime_get_conf ();
if (!selected) { /* the folder was unselected; save it's settings */
- modest_widget_memory_save (conf, G_OBJECT (main_window->header_view),
- "header-view");
+ modest_widget_memory_save (conf, G_OBJECT (header_view), "header-view");
gtk_window_set_title (GTK_WINDOW(main_window), "Modest");
- modest_header_view_set_folder (main_window->header_view, NULL);
+ modest_header_view_set_folder (MODEST_HEADER_VIEW(header_view), NULL);
} else { /* the folder was selected */
if (folder) { /* folder may be NULL */
guint num, unread;
//gtk_label_set_label (GTK_LABEL(folder_info_label), txt);
g_free (txt);
}
- modest_header_view_set_folder (main_window->header_view, folder);
- modest_widget_memory_restore (conf, G_OBJECT(main_window->header_view),
+ modest_header_view_set_folder (MODEST_HEADER_VIEW(header_view), folder);
+ modest_widget_memory_restore (conf, G_OBJECT(header_view),
"header-view");
}
}
if (!msg)
return;
- if (main_window->progress_bar) {
- gtk_widget_show (main_window->progress_bar);
- g_timeout_add (3000, (GSourceFunc)progress_bar_clean,
- main_window->progress_bar);
+ GtkWidget *progress_bar, *status_bar;
+
+ progress_bar = modest_main_window_get_child_widget (main_window,
+ MODEST_WIDGET_TYPE_PROGRESS_BAR);
+ status_bar = modest_main_window_get_child_widget (main_window,
+ MODEST_WIDGET_TYPE_STATUS_BAR);
+ if (progress_bar) {
+ gtk_widget_show (progress_bar);
+ g_timeout_add (3000, (GSourceFunc)progress_bar_clean, progress_bar);
}
- if (main_window->status_bar) {
- gtk_widget_show (main_window->status_bar);
- gtk_statusbar_push (GTK_STATUSBAR(main_window->status_bar), 0, msg);
- g_timeout_add (1500, (GSourceFunc)statusbar_clean, main_window->status_bar);
+ if (status_bar) {
+ gtk_widget_show (status_bar);
+ gtk_statusbar_push (GTK_STATUSBAR(status_bar), 0, msg);
+ g_timeout_add (2500, (GSourceFunc)statusbar_clean, status_bar);
}
}
GtkWidget *dialog;
gchar *txt, *item;
gboolean online;
- TnyDevice *device;
- TnyAccountStore *account_store;
item = (type == MODEST_ITEM_TYPE_FOLDER) ? "folder" : "message";
- /* Get device. Do not ask the platform factory for it, because
- it returns always a new one */
- account_store = TNY_ACCOUNT_STORE (modest_runtime_get_account_store ());
- device = tny_account_store_get_device (account_store);
-
if (g_main_depth > 0)
gdk_threads_enter ();
- online = tny_device_is_online (device);
+ online = tny_device_is_online (modest_runtime_get_device());
if (online) {
/* already online -- the item is simply not there... */
item);
gtk_dialog_run (GTK_DIALOG(dialog));
} else {
-
dialog = gtk_dialog_new_with_buttons (_("Connection requested"),
GTK_WINDOW (win),
GTK_DIALOG_MODAL,
GTK_STOCK_OK,
GTK_RESPONSE_ACCEPT,
NULL);
-
txt = g_strdup_printf (_("This %s is not available in offline mode.\n"
"Do you want to get online?"), item);
gtk_box_pack_start (GTK_BOX(GTK_DIALOG(dialog)->vbox),
gtk_window_set_default_size (GTK_WINDOW(dialog), 300, 300);
if (gtk_dialog_run (GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) {
- tny_device_force_online (device);
+ tny_device_force_online (modest_runtime_get_device());
}
}
gtk_widget_destroy (dialog);
gint total, ModestMainWindow *main_window)
{
char* txt;
+ GtkWidget *progress_bar;
g_return_if_fail (MODEST_IS_MAIN_WINDOW(main_window));
-
- if (!main_window->progress_bar)
- return;
+ progress_bar = modest_main_window_get_child_widget (main_window,
+ MODEST_WIDGET_TYPE_PROGRESS_BAR);
+ if (!progress_bar)
+ return;
+
if (total != 0)
- gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR(main_window->progress_bar),
+ gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR(progress_bar),
(gdouble)num/(gdouble)total);
else
- gtk_progress_bar_pulse (GTK_PROGRESS_BAR(main_window->progress_bar));
+ gtk_progress_bar_pulse (GTK_PROGRESS_BAR(progress_bar));
txt = g_strdup_printf (_("Downloading %d of %d"), num, total);
- gtk_progress_bar_set_text (GTK_PROGRESS_BAR(main_window->progress_bar), txt);
+ gtk_progress_bar_set_text (GTK_PROGRESS_BAR(progress_bar), txt);
g_free (txt);
statusbar_push (main_window, 0, msg);
modest_ui_actions_on_msg_link_hover (ModestMsgView *msgview, const gchar* link,
ModestWindow *win)
{
- g_warning (__FUNCTION__);
+ g_message (__FUNCTION__);
}
modest_ui_actions_on_msg_link_clicked (ModestMsgView *msgview, const gchar* link,
ModestWindow *win)
{
- g_warning (__FUNCTION__);
+ g_message (__FUNCTION__);
}
void
modest_ui_actions_on_msg_attachment_clicked (ModestMsgView *msgview, int index,
ModestWindow *win)
{
- g_warning (__FUNCTION__);
+ g_message (__FUNCTION__);
}
use the send queue provided by tinymail and some
classifier */
account_mgr = modest_runtime_get_account_mgr();
- account_name = modest_account_mgr_get_default_account (account_mgr);
+ account_name = g_strdup(modest_window_get_active_account (MODEST_WINDOW(edit_window)));
+ if (!account_name)
+ account_name = modest_account_mgr_get_default_account (account_mgr);
if (!account_name) {
- g_printerr ("modest: no default account found\n");
+ g_printerr ("modest: no account found\n");
modest_msg_edit_window_free_msg_data (edit_window, data);
return;
}
return folder_name;
}
-
+
void
modest_ui_actions_on_new_folder (GtkWidget *widget, ModestMainWindow *main_window)
{
TnyFolder *parent_folder;
-
- g_return_if_fail (MODEST_IS_MAIN_WINDOW(main_window));
+ GtkWidget *folder_view;
- if (!main_window->folder_view)
+ g_return_if_fail (MODEST_IS_MAIN_WINDOW(main_window));
+
+ folder_view = modest_main_window_get_child_widget (main_window,
+ MODEST_WIDGET_TYPE_FOLDER_VIEW);
+ if (!folder_view)
return;
- parent_folder = modest_folder_view_get_selected (main_window->folder_view);
+ parent_folder = modest_folder_view_get_selected (MODEST_FOLDER_VIEW(folder_view));
if (parent_folder) {
gchar *folder_name;
TNY_FOLDER_STORE (parent_folder),
(const gchar *) folder_name);
if (new_folder) {
- /* TODO: tinymail should do this.
- Update view */
- modest_folder_view_add_subfolder (main_window->folder_view, new_folder);
-
- /* Free new folder */
g_object_unref (new_folder);
+ } else {
+ const GError *error;
+ error = modest_mail_operation_get_error (mail_op);
+ if (error)
+ g_warning ("Error adding a subfolder: %s\n", error->message);
}
g_object_unref (mail_op);
}
ModestMainWindow *main_window)
{
TnyFolder *folder;
-
+ GtkWidget *folder_view;
+
g_return_if_fail (MODEST_IS_MAIN_WINDOW(main_window));
- if (!main_window->folder_view)
+ folder_view = modest_main_window_get_child_widget (main_window,
+ MODEST_WIDGET_TYPE_FOLDER_VIEW);
+ if (!folder_view)
return;
- folder = modest_folder_view_get_selected (main_window->folder_view);
-
+ folder = modest_folder_view_get_selected (MODEST_FOLDER_VIEW(folder_view));
+
if (folder) {
gchar *folder_name;
-
folder_name = ask_for_folder_name (GTK_WINDOW (main_window),
_("Please enter a new name for the folder"));
(const gchar *) folder_name);
error = modest_mail_operation_get_error (mail_op);
- if (!error)
- /* TODO: tinymail should do this.
- Update view */
- modest_folder_view_rename (main_window->folder_view);
-
- /* TODO: else ? notify error ? */
+ if (error)
+ /* TODO: notify error ? */
+ g_warning ("Could not rename a folder: %s\n", error->message);
g_object_unref (mail_op);
}
{
TnyFolder *folder;
ModestMailOperation *mail_op;
+ GtkWidget *folder_view;
+ const GError *error;
- if (!main_window->folder_view)
- return;
+ g_return_if_fail (MODEST_IS_MAIN_WINDOW(main_window));
- folder = modest_folder_view_get_selected (main_window->folder_view);
+ folder_view = modest_main_window_get_child_widget (main_window,
+ MODEST_WIDGET_TYPE_FOLDER_VIEW);
+ if (!folder_view)
+ return;
+ folder = modest_folder_view_get_selected (MODEST_FOLDER_VIEW(folder_view));
+
mail_op = modest_mail_operation_new ();
modest_mail_operation_remove_folder (mail_op, folder, move_to_trash);
+
+ error = modest_mail_operation_get_error (mail_op);
+ if (error)
+ g_warning ("%s\n", error->message);
+
g_object_unref (mail_op);
}
}
void
-modest_ui_actions_on_accounts_reloaded (TnyAccountStore *store, gpointer user_data)
+modest_ui_actions_on_password_requested (TnyAccountStore *account_store,
+ const gchar* account_name,
+ gchar **password,
+ gboolean *cancel,
+ gboolean *remember,
+ ModestMainWindow *main_window)
{
- /* FIXME */
- /* ModestFolderView *folder_view; */
+ gchar *txt;
+ GtkWidget *dialog, *entry, *remember_pass_check;
+
+ dialog = gtk_dialog_new_with_buttons (_("Password requested"),
+ NULL,
+ GTK_DIALOG_MODAL,
+ GTK_STOCK_CANCEL,
+ GTK_RESPONSE_REJECT,
+ GTK_STOCK_OK,
+ GTK_RESPONSE_ACCEPT,
+ NULL);
+ gtk_window_set_transient_for (GTK_WINDOW(dialog), GTK_WINDOW(main_window));
-/* folder_view = modest_widget_factory_get_folder_view (modest_runtime_get_widget_factory()); */
-/* modest_folder_view_update_model (folder_view, store); */
-}
+ txt = g_strdup_printf (_("Please enter your password for %s"), account_name);
+ gtk_box_pack_start (GTK_BOX(GTK_DIALOG(dialog)->vbox), gtk_label_new(txt),
+ FALSE, FALSE, 0);
+ g_free (txt);
-void
-modest_ui_actions_on_folder_moved (ModestFolderView *folder_view, TnyFolder *folder,
- TnyFolderStore *parent, gboolean *done,
- gpointer user_data)
-{
- ModestMailOperation *mail_op;
- const GError *error;
+ entry = gtk_entry_new_with_max_length (40);
+ gtk_entry_set_visibility (GTK_ENTRY(entry), FALSE);
+ gtk_entry_set_invisible_char (GTK_ENTRY(entry), 0x2022); /* bullet unichar */
+
+ gtk_box_pack_start (GTK_BOX(GTK_DIALOG(dialog)->vbox), entry,
+ TRUE, FALSE, 0);
- *done = TRUE;
+ remember_pass_check = gtk_check_button_new_with_label (_("Remember password"));
+ gtk_box_pack_start (GTK_BOX(GTK_DIALOG(dialog)->vbox), remember_pass_check,
+ TRUE, FALSE, 0);
- /* Try to move the folder */
- mail_op = modest_mail_operation_new ();
- modest_mail_operation_move_folder (mail_op, folder, parent);
+ gtk_widget_show_all (GTK_WIDGET(GTK_DIALOG(dialog)->vbox));
+
+ if (gtk_dialog_run (GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) {
+ *password = g_strdup (gtk_entry_get_text (GTK_ENTRY(entry)));
+ *cancel = FALSE;
+ } else {
+ *password = NULL;
+ *cancel = TRUE;
+ }
- error = modest_mail_operation_get_error (mail_op);
- if (error)
- *done = FALSE;
+ if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (remember_pass_check)))
+ *remember = TRUE;
+ else
+ *remember = FALSE;
- g_object_unref (G_OBJECT (mail_op));
+ gtk_widget_destroy (dialog);
}