static gchar* ask_for_folder_name (GtkWindow *parent_window,
const gchar *title);
+static void _modest_ui_actions_on_connection_changed (TnyDevice *device,
+ gboolean online,
+ ModestUI *modest_ui);
+
+
+static void _modest_ui_actions_on_accounts_reloaded (TnyAccountStore *store,
+ gpointer user_data);
+
GType
modest_ui_get_type (void)
{
connect_signals (ModestUI *self)
{
TnyDevice *device;
+ TnyAccountStore *account_store;
ModestUIPrivate *priv;
ModestFolderView *folder_view;
ModestHeaderView *header_view;
widget_factory = modest_runtime_get_widget_factory ();
- folder_view = modest_widget_factory_get_folder_view (widget_factory);
- header_view = modest_widget_factory_get_header_view (widget_factory);
- msg_view = modest_widget_factory_get_msg_preview (widget_factory);
- toggle = modest_widget_factory_get_online_toggle (widget_factory);
- device = tny_account_store_get_device
- (TNY_ACCOUNT_STORE(modest_runtime_get_account_store()));
+ folder_view = modest_widget_factory_get_folder_view (widget_factory);
+ header_view = modest_widget_factory_get_header_view (widget_factory);
+ msg_view = modest_widget_factory_get_msg_preview (widget_factory);
+ toggle = modest_widget_factory_get_online_toggle (widget_factory);
+ account_store = TNY_ACCOUNT_STORE(modest_runtime_get_account_store());
+ device = tny_account_store_get_device (account_store);
/* folder view */
g_signal_connect (G_OBJECT(folder_view), "folder_selection_changed",
G_CALLBACK(_modest_ui_actions_on_msg_attachment_clicked),
priv->main_window);
+ /* Account store */
+ g_signal_connect (G_OBJECT (account_store), "accounts_reloaded",
+ G_CALLBACK (_modest_ui_actions_on_accounts_reloaded),
+ priv->main_window);
+
/* Device */
g_signal_connect (G_OBJECT(device), "connection_changed",
G_CALLBACK(_modest_ui_actions_on_connection_changed),
- priv->main_window);
- g_signal_connect (G_OBJECT(toggle), "toggled",
- G_CALLBACK(_modest_ui_actions_on_online_toggle_toggled),
- priv->main_window);
+ self);
+
+ priv->toggle_button_signal=
+ g_signal_connect (G_OBJECT(toggle), "toggled",
+ G_CALLBACK(_modest_ui_actions_on_online_toggle_toggled),
+ priv->main_window);
/* Destroy window */
g_signal_connect (G_OBJECT(priv->main_window),
G_CALLBACK(on_main_window_destroy),
NULL);
-
/* Init toggle in correct state */
_modest_ui_actions_on_connection_changed (device,
tny_device_is_online (device),
- MODEST_MAIN_WINDOW (priv->main_window));
+ self);
}
tny_folder_get_msg_async (folder, header, get_msg_cb, helper);
/* Clean */
+ g_object_unref (G_OBJECT (header));
g_object_unref (G_OBJECT (folder));
}
g_object_unref (G_OBJECT (headers));
g_object_unref (G_OBJECT (helper->iter));
g_slice_free (GetMsgAsyncHelper, helper);
- } else
- tny_folder_get_msg_async (folder,
- TNY_HEADER (tny_iterator_get_current (helper->iter)),
+ } else {
+ TnyHeader *header;
+ header = TNY_HEADER (tny_iterator_get_current (helper->iter));
+ tny_folder_get_msg_async (folder, header,
get_msg_cb, helper);
+ g_object_unref (G_OBJECT(header));
+ }
}
void
}
/****************************************************************************/
-void
-_modest_ui_actions_on_connection_changed (TnyDevice *device, gboolean online,
- ModestMainWindow *main_window)
+static void
+_modest_ui_actions_on_connection_changed (TnyDevice *device,
+ gboolean online,
+ ModestUI *self)
{
GtkWidget *online_toggle;
ModestHeaderView *header_view;
ModestWidgetFactory *widget_factory;
+ ModestUIPrivate *priv;
+ GtkWidget *icon;
+ const gchar *icon_name;
+
+ g_return_if_fail (device);
+ g_return_if_fail (self);
+
+ priv = MODEST_UI_GET_PRIVATE (self);
+
+ icon_name = online ? GTK_STOCK_CONNECT : GTK_STOCK_DISCONNECT;
+ icon = gtk_image_new_from_icon_name (icon_name, GTK_ICON_SIZE_BUTTON);
- g_return_if_fail (main_window);
-
widget_factory = modest_runtime_get_widget_factory ();
header_view = modest_widget_factory_get_header_view (widget_factory);
online_toggle = modest_widget_factory_get_online_toggle (widget_factory);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(online_toggle),
- online);
- gtk_button_set_label (GTK_BUTTON(online_toggle),
- online ? _("Online") : _("Offline"));
+ /* Block handlers in order to avoid unnecessary calls */
+ g_signal_handler_block (G_OBJECT (online_toggle), priv->toggle_button_signal);
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(online_toggle), online);
+ g_signal_handler_unblock (G_OBJECT (online_toggle), priv->toggle_button_signal);
+ gtk_button_set_image (GTK_BUTTON(online_toggle), icon);
statusbar_push (widget_factory, 0,
online ? _("Modest went online") : _("Modest went offline"));
/* If Modest has became online and the header view has a
header selected then show it */
- if (online) {
- GtkTreeSelection *selected;
+ /* FIXME: there is a race condition if some account needs to
+ ask the user for a password */
- selected = gtk_tree_view_get_selection (GTK_TREE_VIEW (header_view));
- _modest_header_view_change_selection (selected, header_view);
- }
+/* if (online) { */
+/* GtkTreeSelection *selected; */
+
+/* selected = gtk_tree_view_get_selection (GTK_TREE_VIEW (header_view)); */
+/* _modest_header_view_change_selection (selected, header_view); */
+/* } */
}
void
gchar *txt, *item;
gboolean online;
TnyDevice *device;
- TnyPlatformFactory *factory;
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 */
- factory = modest_tny_platform_factory_get_instance ();
- account_store = tny_platform_factory_new_account_store (factory);
+ account_store = TNY_ACCOUNT_STORE (modest_runtime_get_account_store ());
device = tny_account_store_get_device (account_store);
if (g_main_depth > 0)
TnyTransportAccount *transport_account;
ModestMailOperation *mail_operation;
MsgData *data;
-
+ gchar *account_name, *from;
+ ModestAccountMgr *account_mgr;
+
+
data = modest_edit_msg_window_get_msg_data (edit_window);
/* FIXME: Code added just for testing. The final version will
use the send queue provided by tinymail and some
classifier */
- {
- TnyList *accounts;
- TnyIterator *iter;
-
- accounts = TNY_LIST(tny_simple_list_new ());
- tny_account_store_get_accounts (TNY_ACCOUNT_STORE(modest_runtime_get_account_store()),
- accounts,
- TNY_ACCOUNT_STORE_TRANSPORT_ACCOUNTS);
-
- iter = tny_list_create_iterator(accounts);
- tny_iterator_first (iter);
- if (tny_iterator_is_done (iter)) {
- /* FIXME: Add error handling through mail operation */
- g_printerr("modest: no transport accounts defined\n");
- modest_edit_msg_window_free_msg_data (edit_window, data);
- return;
- }
- transport_account = TNY_TRANSPORT_ACCOUNT (tny_iterator_get_current(iter));
- g_object_ref (transport_account);
-
- tny_list_foreach (accounts, (GFunc) g_object_unref, NULL);
- g_object_unref (G_OBJECT (accounts));
- g_object_unref (G_OBJECT (iter));
+ account_mgr = modest_runtime_get_account_mgr();
+ account_name = modest_account_mgr_get_default_account (account_mgr);
+ if (!account_name) {
+ g_printerr ("modest: no default account found\n");
+ modest_edit_msg_window_free_msg_data (edit_window, data);
+ return;
}
-
+ transport_account =
+ TNY_TRANSPORT_ACCOUNT(modest_account_mgr_get_tny_account (account_mgr,
+ account_name,
+ TNY_ACCOUNT_TYPE_TRANSPORT));
+ if (!transport_account) {
+ g_printerr ("modest: no transport account found\n");
+ g_free (account_name);
+ modest_edit_msg_window_free_msg_data (edit_window, data);
+ return;
+ }
+ from = modest_account_mgr_get_from_string (account_mgr, account_name);
+
mail_operation = modest_mail_operation_new ();
-
modest_mail_operation_send_new_mail (mail_operation,
transport_account,
- data->from,
+ from,
data->to,
data->cc,
data->bcc,
data->body,
NULL);
/* Frees */
+ g_free (from);
+ g_free (account_name);
g_object_unref (G_OBJECT (mail_operation));
g_object_unref (G_OBJECT (transport_account));
modest_edit_msg_window_free_msg_data (edit_window, data);
{
delete_folder (main_window, TRUE);
}
+
+static void
+_modest_ui_actions_on_accounts_reloaded (TnyAccountStore *store, gpointer user_data)
+{
+ ModestFolderView *folder_view;
+
+ folder_view = modest_widget_factory_get_folder_view (modest_runtime_get_widget_factory());
+ modest_folder_view_update_model (folder_view, store);
+}