X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=src%2Fwidgets%2Fmodest-account-view.c;h=7a828fb789938dc849c2011d9ea7d70f4bb1af8e;hb=3ddc19113ea89a4ec61a855f4856bde2143c4694;hp=2f2ba5da1a221876366fe04c3869fe63a8ac87bd;hpb=04fa8f60ad3ce55f41e650558c56f210e0d87143;p=modest diff --git a/src/widgets/modest-account-view.c b/src/widgets/modest-account-view.c index 2f2ba5d..7a828fb 100644 --- a/src/widgets/modest-account-view.c +++ b/src/widgets/modest-account-view.c @@ -32,6 +32,7 @@ #include #include +#include #include #include @@ -114,7 +115,7 @@ static void modest_account_view_init (ModestAccountView *obj) { ModestAccountViewPrivate *priv; - + priv = MODEST_ACCOUNT_VIEW_GET_PRIVATE(obj); priv->account_mgr = NULL; @@ -141,11 +142,15 @@ modest_account_view_finalize (GObject *obj) priv->acc_removed_handler)) g_signal_handler_disconnect (modest_runtime_get_account_store (), priv->acc_removed_handler); - + + if (g_signal_handler_is_connected (modest_runtime_get_account_store (), + priv->acc_changed_handler)) + g_signal_handler_disconnect (modest_runtime_get_account_store (), + priv->acc_changed_handler); + if (priv->acc_busy_changed_handler) g_signal_handler_disconnect (priv->account_mgr, priv->acc_busy_changed_handler); - if (priv->acc_changed_handler) - g_signal_handler_disconnect (priv->account_mgr, priv->acc_changed_handler); + g_object_unref (G_OBJECT(priv->account_mgr)); priv->account_mgr = NULL; @@ -251,9 +256,9 @@ update_account_view (ModestAccountMgr *account_mgr, ModestAccountView *view) static void on_account_busy_changed(ModestAccountMgr *account_mgr, - const gchar *account_name, - gboolean busy, - ModestAccountView *self) + const gchar *account_name, + gboolean busy, + ModestAccountView *self) { GtkListStore *model = GTK_LIST_STORE(gtk_tree_view_get_model (GTK_TREE_VIEW(self))); GtkTreeIter iter; @@ -291,6 +296,8 @@ on_account_inserted (TnyAccountStore *account_store, ModestAccountView *self; ModestAccountViewPrivate *priv; + g_return_if_fail (MODEST_IS_ACCOUNT_VIEW (user_data)); + self = MODEST_ACCOUNT_VIEW (user_data); priv = MODEST_ACCOUNT_VIEW_GET_PRIVATE (self); @@ -305,6 +312,8 @@ on_account_removed (TnyAccountStore *account_store, ModestAccountView *self; ModestAccountViewPrivate *priv; + g_return_if_fail (MODEST_IS_ACCOUNT_VIEW (user_data)); + self = MODEST_ACCOUNT_VIEW (user_data); priv = MODEST_ACCOUNT_VIEW_GET_PRIVATE (self); @@ -317,15 +326,41 @@ on_account_changed (TnyAccountStore *account_store, TnyAccount *account, gpointer user_data) { - ModestAccountView *self; - ModestAccountViewPrivate *priv; + ModestAccountView *self = NULL; + ModestAccountViewPrivate *priv = NULL; + TnyTransportAccount *transport_account = NULL; + ModestTnySendQueue *send_queue = NULL; + + g_return_if_fail (MODEST_IS_ACCOUNT_VIEW (user_data)); + g_return_if_fail (account); + g_return_if_fail (TNY_IS_ACCOUNT (account)); self = MODEST_ACCOUNT_VIEW (user_data); priv = MODEST_ACCOUNT_VIEW_GET_PRIVATE (self); - + g_warning ("account changed: %s", tny_account_get_id(account)); + /* Update account view */ update_account_view (priv->account_mgr, self); + + /* Get transport account */ + const gchar *modest_account_name = + modest_tny_account_get_parent_modest_account_name_for_server_account (account); + g_return_if_fail (modest_account_name); + + transport_account = (TnyTransportAccount*) + modest_tny_account_store_get_transport_account_for_open_connection (modest_runtime_get_account_store(), + modest_account_name); + + /* Restart send queue */ + if (transport_account) { + g_return_if_fail (TNY_IS_TRANSPORT_ACCOUNT(transport_account)); + send_queue = modest_runtime_get_send_queue (transport_account); + g_return_if_fail (MODEST_IS_TNY_SEND_QUEUE(send_queue)); + modest_tny_send_queue_try_to_send (send_queue); + + g_object_unref (transport_account); + } } @@ -351,6 +386,9 @@ static void on_account_default_toggled (GtkCellRendererToggle *cell_renderer, gchar *path, ModestAccountView *self) { + + g_return_if_fail (MODEST_IS_ACCOUNT_VIEW (self)); + gboolean is_default = gtk_cell_renderer_toggle_get_active (cell_renderer); if (is_default) { /* Do not allow an account to be marked non-default. @@ -411,6 +449,7 @@ init_view (ModestAccountView *self) GtkListStore *model; GtkTreeViewColumn *column; + g_return_if_fail (MODEST_IS_ACCOUNT_VIEW (self)); priv = MODEST_ACCOUNT_VIEW_GET_PRIVATE(self); model = gtk_list_store_new (6, @@ -446,10 +485,11 @@ init_view (ModestAccountView *self) * * djcb: indeed, they have been removed for post-bora, i added the ifdefs... */ -#ifdef MODEST_HILDON_VERSION_0 +#ifdef MODEST_HAVE_HILDON0_WIDGETS g_object_set(G_OBJECT(self), "allow-checkbox-mode", FALSE, NULL); g_object_set(G_OBJECT(toggle_renderer), "checkbox-mode", FALSE, NULL); -#endif /*MODEST_HILDON_VERSION_0 */ +#endif /* MODEST_HAVE_HILDON0_WIDGETS */ + g_signal_connect (G_OBJECT(toggle_renderer), "toggled", G_CALLBACK(on_account_default_toggled), self); @@ -479,18 +519,17 @@ init_view (ModestAccountView *self) priv->acc_inserted_handler = g_signal_connect (G_OBJECT (modest_runtime_get_account_store ()), "account_inserted", G_CALLBACK(on_account_inserted), self); - + + priv->acc_inserted_handler = g_signal_connect (G_OBJECT (modest_runtime_get_account_store ()), + "account_changed", + G_CALLBACK(on_account_changed), self); + priv->acc_busy_changed_handler = g_signal_connect (G_OBJECT(priv->account_mgr), "account_busy_changed", G_CALLBACK(on_account_busy_changed), self); - - priv->acc_changed_handler = g_signal_connect (G_OBJECT(priv->account_mgr), - "account_changed", - G_CALLBACK(on_account_changed), self); } - ModestAccountView* modest_account_view_new (ModestAccountMgr *account_mgr) {