X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=src%2Fhildon2%2Fmodest-accounts-window.c;h=dd8a5b964f54d8db4f3a3ee18547a021c9523a58;hb=a026bc5d9c12b113534de401d042c6d80a2344df;hp=b05e8dcc7e94d3378833e2b179cff2bd43475f5a;hpb=8ef67be83b1b65ad112585d7e1ecefd8beb46b69;p=modest diff --git a/src/hildon2/modest-accounts-window.c b/src/hildon2/modest-accounts-window.c index b05e8dc..dd8a5b9 100644 --- a/src/hildon2/modest-accounts-window.c +++ b/src/hildon2/modest-accounts-window.c @@ -28,9 +28,7 @@ */ #include -#include -#include -#include +#include #include #include #include @@ -83,12 +81,18 @@ static void on_row_deleted (GtkTreeModel *tree_model, GtkTreePath *path, gpointer user_data); static void row_count_changed (ModestAccountsWindow *self); +static gboolean on_key_press(GtkWidget *widget, + GdkEventKey *event, + gpointer user_data); +static gboolean on_delete_event (GtkWidget *widget, + GdkEvent *event, + gpointer userdata); typedef struct _ModestAccountsWindowPrivate ModestAccountsWindowPrivate; struct _ModestAccountsWindowPrivate { GtkWidget *box; - GtkWidget *pannable; + GtkWidget *scrollable; GtkWidget *account_view; GtkWidget *no_accounts_container; GtkWidget *new_message_button; @@ -236,6 +240,10 @@ connect_signals (ModestAccountsWindow *self) /* we don't register this in sighandlers, as it should be run * after disconnecting all signals, in destroy stage */ + + + g_signal_connect(G_OBJECT(self), "key-press-event", + G_CALLBACK(on_key_press), self); } static ModestWindow * @@ -259,7 +267,7 @@ modest_accounts_window_new_real (void) box_alignment = gtk_alignment_new (0, 0, 1.0, 1.0); gtk_alignment_set_padding (GTK_ALIGNMENT (box_alignment), - 0, 0, + HILDON_MARGIN_HALF, 0, HILDON_MARGIN_DOUBLE, HILDON_MARGIN_DOUBLE); priv->box = gtk_vbox_new (FALSE, 0); @@ -284,7 +292,7 @@ modest_accounts_window_new_real (void) "clicked", G_CALLBACK (modest_ui_actions_on_new_msg), self); - priv->pannable = hildon_pannable_area_new (); + priv->scrollable = modest_toolkit_factory_create_scrollable (modest_runtime_get_toolkit_factory ()); priv->queue_change_handler = g_signal_connect (G_OBJECT (modest_runtime_get_mail_operation_queue ()), @@ -292,7 +300,8 @@ modest_accounts_window_new_real (void) G_CALLBACK (on_queue_changed), self); - priv->new_message_button = hildon_button_new (0, HILDON_BUTTON_ARRANGEMENT_HORIZONTAL); + priv->new_message_button = hildon_button_new (MODEST_EDITABLE_SIZE, + HILDON_BUTTON_ARRANGEMENT_HORIZONTAL); hildon_button_set_title (HILDON_BUTTON (priv->new_message_button), _("mcen_ti_new_message")); hildon_button_set_image (HILDON_BUTTON (priv->new_message_button), gtk_image_new_from_pixbuf (new_message_pixbuf)); @@ -302,11 +311,11 @@ modest_accounts_window_new_real (void) g_object_unref (new_message_pixbuf); setup_menu (self); - gtk_box_pack_start (GTK_BOX (priv->box), priv->pannable, TRUE, TRUE, 0); + gtk_box_pack_start (GTK_BOX (priv->box), priv->scrollable, TRUE, TRUE, 0); gtk_container_add (GTK_CONTAINER (box_alignment), priv->box); gtk_container_add (GTK_CONTAINER (self), box_alignment); - gtk_widget_show (priv->pannable); + gtk_widget_show (priv->scrollable); gtk_widget_show (priv->box); gtk_widget_show (box_alignment); @@ -349,14 +358,10 @@ modest_accounts_window_new (void) action_area_box = hildon_tree_view_get_action_area_box (GTK_TREE_VIEW (priv->account_view)); gtk_box_pack_start (GTK_BOX (action_area_box), priv->new_message_button, TRUE, TRUE, 0); hildon_tree_view_set_action_area_visible (GTK_TREE_VIEW (priv->account_view), TRUE); - gtk_container_add (GTK_CONTAINER (priv->pannable), priv->account_view); + gtk_container_add (GTK_CONTAINER (priv->scrollable), priv->account_view); connect_signals (MODEST_ACCOUNTS_WINDOW (self)); - /* Load previous osso state, for instance if we are being restored from - * hibernation: */ - modest_osso_load_state (); - app = hildon_program_get_instance (); hildon_program_add_window (app, HILDON_WINDOW (self)); @@ -369,10 +374,14 @@ modest_accounts_window_new (void) g_signal_connect (G_OBJECT (self), "map-event", G_CALLBACK (_modest_accounts_window_map_event), G_OBJECT (self)); + g_signal_connect (G_OBJECT (self), "delete-event", + G_CALLBACK (on_delete_event), self); update_progress_hint (MODEST_ACCOUNTS_WINDOW (self)); row_count_changed (MODEST_ACCOUNTS_WINDOW (self)); + modest_window_set_title (MODEST_WINDOW (self), _("mcen_ap_name")); + return self; } @@ -395,24 +404,29 @@ setup_menu (ModestAccountsWindow *self) g_return_if_fail (MODEST_IS_ACCOUNTS_WINDOW(self)); /* Settings menu buttons */ - modest_hildon2_window_add_to_menu (MODEST_HILDON2_WINDOW (self), _("mcen_me_new_account"), NULL, - APP_MENU_CALLBACK (modest_ui_actions_on_new_account), - NULL); - modest_hildon2_window_add_to_menu (MODEST_HILDON2_WINDOW (self), _("mcen_me_edit_accounts"), NULL, - APP_MENU_CALLBACK (modest_ui_actions_on_accounts), - 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_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_window_add_to_menu (MODEST_WINDOW (self), _("mcen_me_new_account"), NULL, + MODEST_WINDOW_MENU_CALLBACK (modest_ui_actions_on_new_account), + NULL); + modest_window_add_to_menu (MODEST_WINDOW (self), + dngettext(GETTEXT_PACKAGE, + "mcen_me_edit_account", + "mcen_me_edit_accounts", + 2), + NULL, + MODEST_WINDOW_MENU_CALLBACK (modest_ui_actions_on_accounts), + MODEST_DIMMING_CALLBACK (modest_ui_dimming_rules_on_edit_accounts)); + modest_window_add_to_menu (MODEST_WINDOW (self), _("mcen_me_inbox_globalsmtpservers"), NULL, + MODEST_WINDOW_MENU_CALLBACK (modest_ui_actions_on_smtp_servers), + MODEST_DIMMING_CALLBACK (modest_ui_dimming_rules_on_tools_smtp_servers)); + modest_window_add_to_menu (MODEST_WINDOW (self), _("mcen_me_inbox_sendandreceive"), NULL, + MODEST_WINDOW_MENU_CALLBACK (modest_ui_actions_on_send_receive), + MODEST_DIMMING_CALLBACK (modest_ui_dimming_rules_on_send_receive_all)); + modest_window_add_to_menu (MODEST_WINDOW (self), _("mcen_me_outbox_cancelsend"), NULL, + MODEST_WINDOW_MENU_CALLBACK (modest_ui_actions_cancel_send), + MODEST_DIMMING_CALLBACK (modest_ui_dimming_rules_on_cancel_sending_all)); + modest_window_add_to_menu (MODEST_WINDOW (self), _("mcen_me_inbox_options"), NULL, + MODEST_WINDOW_MENU_CALLBACK (modest_ui_actions_on_settings), + NULL); } @@ -578,7 +592,7 @@ row_count_changed (ModestAccountsWindow *self) gtk_widget_show (priv->account_view); g_debug ("%s: showing accounts view", __FUNCTION__); } - gtk_container_child_set (GTK_CONTAINER(priv->box), priv->pannable, + gtk_container_child_set (GTK_CONTAINER(priv->box), priv->scrollable, "expand", count > 0, "fill", count > 0, NULL); @@ -660,3 +674,53 @@ modest_accounts_window_pre_create (void) pre_created_accounts_window = GTK_WIDGET (modest_accounts_window_new_real ()); } } + + +static gboolean +on_key_press(GtkWidget *widget, GdkEventKey *event, gpointer user_data) +{ + ModestAccountsWindowPrivate *priv; + ModestScrollable *scrollable; + + if (event->type == GDK_KEY_RELEASE) + return FALSE; + + priv = MODEST_ACCOUNTS_WINDOW_GET_PRIVATE(user_data); + + scrollable = MODEST_SCROLLABLE (priv->scrollable); + + switch (event->keyval) { + + case GDK_Up: + modest_scrollable_scroll (scrollable, 0, -1); + break; + + case GDK_Down: + modest_scrollable_scroll (scrollable, 0, 1); + break; + } + + return FALSE; +} + +static gboolean +on_delete_event (GtkWidget *widget, + GdkEvent *event, + gpointer userdata) +{ + ModestAccountsWindowPrivate *priv; + + priv = MODEST_ACCOUNTS_WINDOW_GET_PRIVATE (widget); + + modest_account_view_set_show_last_update (MODEST_ACCOUNT_VIEW (priv->account_view), FALSE); + + gtk_widget_queue_resize (widget); + + gdk_window_process_updates (priv->account_view->window, TRUE); + hildon_gtk_window_take_screenshot (GTK_WINDOW (widget), TRUE); + + modest_account_view_set_show_last_update (MODEST_ACCOUNT_VIEW (priv->account_view), TRUE); + + return FALSE; + +}