X-Git-Url: http://git.maemo.org/git/?p=modest;a=blobdiff_plain;f=src%2Fhildon2%2Fmodest-accounts-window.c;h=e4190c55b2479e11a05dd4b845d69953e1a823a9;hp=ab3671c629edfe90cbc69690ada85589b377feee;hb=d03da5793e761e7fe927c3f24642052f9259fcea;hpb=acca9cd9c2046b5712042221d2fe2095454a7b34 diff --git a/src/hildon2/modest-accounts-window.c b/src/hildon2/modest-accounts-window.c index ab3671c..e4190c5 100644 --- a/src/hildon2/modest-accounts-window.c +++ b/src/hildon2/modest-accounts-window.c @@ -38,6 +38,7 @@ #include #include #include +#include #include #include #include @@ -80,6 +81,7 @@ struct _ModestAccountsWindowPrivate { GtkWidget *account_view; GtkWidget *no_accounts_label; + GtkWidget *new_message_button; /* signals */ GSList *sighandlers; @@ -209,6 +211,12 @@ connect_signals (ModestAccountsWindow *self) "row-deleted", G_CALLBACK (on_row_deleted), self); + priv->sighandlers = + modest_signal_mgr_connect (priv->sighandlers, + G_OBJECT (priv->new_message_button), + "clicked", + G_CALLBACK (modest_ui_actions_on_new_msg), self); + /* we don't register this in sighandlers, as it should be run * after disconnecting all signals, in destroy stage */ } @@ -222,6 +230,8 @@ modest_accounts_window_new (void) GdkPixbuf *window_icon; GtkWidget *pannable; GtkWidget *box; + GdkPixbuf *new_message_pixbuf; + GtkWidget *action_area_box; self = MODEST_ACCOUNTS_WINDOW(g_object_new(MODEST_TYPE_ACCOUNTS_WINDOW, NULL)); priv = MODEST_ACCOUNTS_WINDOW_GET_PRIVATE(self); @@ -235,6 +245,19 @@ modest_accounts_window_new (void) pannable = hildon_pannable_area_new (); priv->account_view = GTK_WIDGET (modest_account_view_new (modest_runtime_get_account_mgr ())); + action_area_box = hildon_tree_view_get_action_area_box (GTK_TREE_VIEW (priv->account_view)); + priv->new_message_button = hildon_button_new (0, HILDON_BUTTON_ARRANGEMENT_HORIZONTAL); + + hildon_button_set_title (HILDON_BUTTON (priv->new_message_button), _("mcen_ti_new_message")); + new_message_pixbuf = modest_platform_get_icon ("general_add", MODEST_ICON_SIZE_BIG); + hildon_button_set_image (HILDON_BUTTON (priv->new_message_button), gtk_image_new_from_pixbuf (new_message_pixbuf)); + g_object_unref (new_message_pixbuf); + + gtk_box_pack_start (GTK_BOX (action_area_box), priv->new_message_button, TRUE, TRUE, 0); + gtk_widget_show_all (priv->new_message_button); + hildon_tree_view_set_action_area_visible (GTK_TREE_VIEW (priv->account_view), TRUE); + + setup_menu (self); gtk_container_add (GTK_CONTAINER (pannable), priv->account_view); @@ -304,22 +327,22 @@ setup_menu (ModestAccountsWindow *self) NULL); modest_hildon2_window_add_to_menu (MODEST_HILDON2_WINDOW (self), _("mcen_me_edit_accounts"), NULL, APP_MENU_CALLBACK (modest_ui_actions_on_accounts), - NULL); - modest_hildon2_window_add_to_menu (MODEST_HILDON2_WINDOW (self), _("mcen_me_inbox_options"), NULL, - APP_MENU_CALLBACK (modest_ui_actions_on_settings), - NULL); + MODEST_DIMMING_CALLBACK (modest_ui_dimming_rules_on_edit_accounts)); modest_hildon2_window_add_to_menu (MODEST_HILDON2_WINDOW (self), _("mcen_me_inbox_globalsmtpservers"), NULL, APP_MENU_CALLBACK (modest_ui_actions_on_smtp_servers), MODEST_DIMMING_CALLBACK (modest_ui_dimming_rules_on_tools_smtp_servers)); - modest_hildon2_window_add_to_menu (MODEST_HILDON2_WINDOW (self), _("mcen_me_new_message"), "n", - APP_MENU_CALLBACK (modest_ui_actions_on_new_msg), - MODEST_DIMMING_CALLBACK (modest_ui_dimming_rules_on_new_msg)); modest_hildon2_window_add_to_menu (MODEST_HILDON2_WINDOW (self), _("mcen_me_inbox_sendandreceive"), NULL, APP_MENU_CALLBACK (modest_ui_actions_on_send_receive), MODEST_DIMMING_CALLBACK (modest_ui_dimming_rules_on_send_receive_all)); modest_hildon2_window_add_to_menu (MODEST_HILDON2_WINDOW (self), _("mcen_me_outbox_cancelsend"), NULL, APP_MENU_CALLBACK (modest_ui_actions_cancel_send), MODEST_DIMMING_CALLBACK (modest_ui_dimming_rules_on_cancel_sending_all)); + modest_hildon2_window_add_to_menu (MODEST_HILDON2_WINDOW (self), _("mcen_me_inbox_options"), NULL, + APP_MENU_CALLBACK (modest_ui_actions_on_settings), + NULL); + modest_hildon2_window_add_to_menu (MODEST_HILDON2_WINDOW (self), _("mcen_me_new_message"), "n", + APP_MENU_CALLBACK (modest_ui_actions_on_new_msg), + MODEST_DIMMING_CALLBACK (modest_ui_dimming_rules_on_new_msg)); } @@ -332,6 +355,7 @@ on_account_activated (GtkTreeView *account_view, ModestAccountsWindowPrivate *priv; gchar* account_name; GtkWidget *folder_window; + gboolean registered; priv = MODEST_ACCOUNTS_WINDOW_GET_PRIVATE (self); @@ -340,16 +364,21 @@ on_account_activated (GtkTreeView *account_view, return; folder_window = GTK_WIDGET (modest_folder_window_new (NULL)); - modest_window_mgr_register_window (modest_runtime_get_window_mgr (), - MODEST_WINDOW (folder_window), - MODEST_WINDOW (self)); - modest_folder_window_set_account (MODEST_FOLDER_WINDOW (folder_window), account_name); - gtk_widget_show (folder_window); - g_free (account_name); + registered = modest_window_mgr_register_window (modest_runtime_get_window_mgr (), + MODEST_WINDOW (folder_window), + MODEST_WINDOW (self)); + if (!registered) { + gtk_widget_destroy (folder_window); + folder_window = NULL; + } else { + modest_folder_window_set_account (MODEST_FOLDER_WINDOW (folder_window), account_name); + gtk_widget_show (folder_window); + } + g_free (account_name); } -static gboolean +static gboolean _modest_accounts_window_map_event (GtkWidget *widget, GdkEvent *event, gpointer userdata) @@ -420,10 +449,8 @@ static void row_count_changed (ModestAccountsWindow *self) count = gtk_tree_model_iter_n_children (model, NULL); if (count == 0) { - gtk_widget_hide (priv->account_view); gtk_widget_show (priv->no_accounts_label); } else { gtk_widget_hide (priv->no_accounts_label); - gtk_widget_show (priv->account_view); } }