From 94954ca4f13b0dec09adf6c7c19f5eb4a5bd5660 Mon Sep 17 00:00:00 2001 From: Jose Dapena Paz Date: Thu, 30 Oct 2008 16:40:34 +0000 Subject: [PATCH] * Now the account view in fremantle shows with the new style. * Removed default account column in fremantle account view. * Removed the edit button in account view window. * Added method for row activated to edit accounts. * Relayout of new button. * Last updated string in fremantle appears in small letters and two lines. * Now column headers now. pmo-trunk-r6206 --- src/hildon2/modest-account-view-window.c | 110 ++++++++++-------------------- src/widgets/modest-account-view.c | 72 +++++++++++++++++-- src/widgets/modest-account-view.h | 11 +++ 3 files changed, 113 insertions(+), 80 deletions(-) diff --git a/src/hildon2/modest-account-view-window.c b/src/hildon2/modest-account-view-window.c index ebd7743..8d0c6dd 100644 --- a/src/hildon2/modest-account-view-window.c +++ b/src/hildon2/modest-account-view-window.c @@ -126,23 +126,6 @@ modest_account_view_window_finalize (GObject *self) } -static void -on_selection_changed (GtkTreeSelection *sel, ModestAccountViewWindow *self) -{ - ModestAccountViewWindowPrivate *priv; - GtkTreeModel *model; - GtkTreeIter iter; - gboolean has_selection; - - priv = MODEST_ACCOUNT_VIEW_WINDOW_GET_PRIVATE(self); - - has_selection = - gtk_tree_selection_get_selected (sel, &model, &iter); - - /* Set the status of the buttons */ - gtk_widget_set_sensitive (priv->edit_button, has_selection); -} - /** Check whether any connections are active, and cancel them if * the user wishes. * Returns TRUE is there was no problem, @@ -258,11 +241,14 @@ on_account_settings_dialog_response (GtkDialog *dialog, } static void -on_edit_button_clicked (GtkWidget *button, ModestAccountViewWindow *self) +on_account_activated (GtkTreeView *account_view, + GtkTreePath *path, + GtkTreeViewColumn *column, + ModestAccountViewWindow *self) { ModestAccountViewWindowPrivate *priv = MODEST_ACCOUNT_VIEW_WINDOW_GET_PRIVATE (self); - gchar* account_name = modest_account_view_get_selected_account (priv->account_view); + gchar* account_name = modest_account_view_get_path_account (priv->account_view, path); if (!account_name) return; @@ -333,77 +319,57 @@ setup_button_box (ModestAccountViewWindow *self, GtkButtonBox *box) { ModestAccountViewWindowPrivate *priv = MODEST_ACCOUNT_VIEW_WINDOW_GET_PRIVATE(self); - gtk_button_box_set_spacing (GTK_BUTTON_BOX (box), 6); - gtk_button_box_set_layout (GTK_BUTTON_BOX (box), - GTK_BUTTONBOX_START); - priv->new_button = gtk_button_new_from_stock(_("mcen_bd_new")); - priv->edit_button = gtk_button_new_with_label(_("mcen_bd_edit")); g_signal_connect (G_OBJECT(priv->new_button), "clicked", G_CALLBACK(on_new_button_clicked), self); - g_signal_connect (G_OBJECT(priv->edit_button), "clicked", - G_CALLBACK(on_edit_button_clicked), - self); - - gtk_box_pack_start (GTK_BOX(box), priv->new_button, FALSE, FALSE,2); - gtk_box_pack_start (GTK_BOX(box), priv->edit_button, FALSE, FALSE,2); - - /* Should has been created by window_vbox_new */ - if (priv->account_view) { - GtkTreeSelection *sel; - sel = gtk_tree_view_get_selection (GTK_TREE_VIEW(priv->account_view)); - if (gtk_tree_selection_count_selected_rows (sel) == 0) { - gtk_widget_set_sensitive (priv->edit_button, FALSE); - } - } + gtk_box_pack_start (GTK_BOX(box), priv->new_button, FALSE, FALSE,0); gtk_widget_show_all (GTK_WIDGET (box)); } -static GtkWidget* +static void window_vbox_new (ModestAccountViewWindow *self) { - ModestAccountViewWindowPrivate *priv; - GtkWidget *main_vbox, *main_hbox, *pannable; - GtkTreeSelection *sel; +} - priv = MODEST_ACCOUNT_VIEW_WINDOW_GET_PRIVATE(self); - priv->account_view = modest_account_view_new (modest_runtime_get_account_mgr()); - main_vbox = gtk_vbox_new (FALSE, 6); - main_hbox = gtk_hbox_new (FALSE, 6); +static void +modest_account_view_window_init (ModestAccountViewWindow *self) +{ + ModestAccountViewWindowPrivate *priv; + GtkWidget *main_vbox, *pannable; - sel = gtk_tree_view_get_selection (GTK_TREE_VIEW(priv->account_view)); - g_signal_connect (G_OBJECT(sel), "changed", G_CALLBACK(on_selection_changed), - self); - - pannable = g_object_new (HILDON_TYPE_PANNABLE_AREA, "initial-hint", TRUE, NULL); - hildon_pannable_area_add_with_viewport (HILDON_PANNABLE_AREA (pannable), - GTK_WIDGET (priv->account_view)); - - /* Only force the height, the width of the widget will depend - on the size of the column titles */ - gtk_widget_set_size_request (pannable, -1, 320); + + /* Specify a default size */ + gtk_window_set_default_size (GTK_WINDOW (self), -1, 320); - gtk_box_pack_start (GTK_BOX(main_hbox), pannable, TRUE, TRUE, 2); - gtk_box_pack_start (GTK_BOX(main_vbox), main_hbox, TRUE, TRUE, 2); + /* This seems to be necessary to make the window show at the front with decoration. + * If we use property type=GTK_WINDOW_TOPLEVEL instead of the default GTK_WINDOW_POPUP+decoration, + * then the window will be below the others. */ + gtk_window_set_type_hint (GTK_WINDOW (self), + GDK_WINDOW_TYPE_HINT_DIALOG); + + priv = MODEST_ACCOUNT_VIEW_WINDOW_GET_PRIVATE(self); + priv->acc_removed_handler = 0; + priv->account_view = modest_account_view_new (modest_runtime_get_account_mgr()); - gtk_widget_show_all (pannable); - gtk_widget_show (main_hbox); - gtk_widget_show (main_vbox); + main_vbox = GTK_DIALOG (self)->vbox; - return main_vbox; -} + pannable = hildon_pannable_area_new (); + g_object_set (G_OBJECT (pannable), "initial-hint", TRUE, NULL); + gtk_container_set_border_width (GTK_CONTAINER (pannable), MODEST_MARGIN_DEFAULT); + gtk_widget_show (pannable); + gtk_container_add (GTK_CONTAINER (pannable), + GTK_WIDGET (priv->account_view)); + gtk_widget_show (GTK_WIDGET (priv->account_view)); + g_signal_connect (G_OBJECT (priv->account_view), "row-activated", + G_CALLBACK (on_account_activated), self); -static void -modest_account_view_window_init (ModestAccountViewWindow *self) -{ - ModestAccountViewWindowPrivate *priv = MODEST_ACCOUNT_VIEW_WINDOW_GET_PRIVATE(self); + gtk_box_pack_start (GTK_BOX(main_vbox), pannable, TRUE, TRUE, MODEST_MARGIN_HALF); - priv->acc_removed_handler = 0; } static void @@ -432,9 +398,7 @@ modest_account_view_window_new (void) ModestAccountMgr *account_mgr = modest_runtime_get_account_mgr (); /* Add widgets */ - gtk_box_pack_start (GTK_BOX((GTK_DIALOG (self)->vbox)), - window_vbox_new (MODEST_ACCOUNT_VIEW_WINDOW (self)), - TRUE, TRUE, 2); + window_vbox_new (MODEST_ACCOUNT_VIEW_WINDOW (self)); setup_button_box (MODEST_ACCOUNT_VIEW_WINDOW (self), GTK_BUTTON_BOX (GTK_DIALOG (self)->action_area)); diff --git a/src/widgets/modest-account-view.c b/src/widgets/modest-account-view.c index cf8fcb4..0245db5 100644 --- a/src/widgets/modest-account-view.c +++ b/src/widgets/modest-account-view.c @@ -132,6 +132,13 @@ modest_account_view_init (ModestAccountView *obj) priv = MODEST_ACCOUNT_VIEW_GET_PRIVATE(obj); priv->sig_handlers = NULL; +#ifdef MODEST_TOOLKIT_HILDON2 + gtk_rc_parse_string ("style \"fremantle-modest-account-view\" {\n" + " GtkWidget::hildon-mode = 1\n" + "} widget \"*.fremantle-modest-account-view\" style \"fremantle-modest-account-view\"" + "widget_class \"*.ModestAccountView\" style :highest \"fremantle-modest-account-view\""); + +#endif } static void @@ -233,7 +240,13 @@ update_account_view (ModestAccountMgr *account_mgr, ModestAccountView *view) ModestProtocolRegistry *protocol_registry; ModestProtocol *protocol; const gchar *proto_name; +#ifdef MODEST_TOOLKIT_HILDON2 + gchar *last_updated_hildon2; + last_updated_hildon2 = g_strconcat ("", _("mcen_ti_lastupdated"), "\n", + last_updated_string, "", + NULL); +#endif protocol_registry = modest_runtime_get_protocol_registry (); protocol_type = modest_server_account_settings_get_protocol (store_settings); protocol = modest_protocol_registry_get_protocol_by_type (protocol_registry, protocol_type); @@ -248,8 +261,15 @@ update_account_view (ModestAccountMgr *account_mgr, ModestAccountView *view) MODEST_ACCOUNT_VIEW_IS_DEFAULT_COLUMN, modest_account_settings_get_is_default (settings), MODEST_ACCOUNT_VIEW_PROTO_COLUMN, proto_name, +#ifdef MODEST_TOOLKIT_HILDON2 + MODEST_ACCOUNT_VIEW_LAST_UPDATED_COLUMN, last_updated_hildon2, +#else MODEST_ACCOUNT_VIEW_LAST_UPDATED_COLUMN, last_updated_string, +#endif -1); +#ifdef MODEST_TOOLKIT_HILDON2 + g_free (last_updated_hildon2); +#endif } } @@ -448,10 +468,14 @@ init_view (ModestAccountView *self) /* the is_default column */ g_object_set (G_OBJECT(toggle_renderer), "activatable", TRUE, "radio", TRUE, NULL); + column = gtk_tree_view_column_new_with_attributes + (_("mcen_ti_default"), toggle_renderer, + "active", MODEST_ACCOUNT_VIEW_IS_DEFAULT_COLUMN, NULL); gtk_tree_view_append_column (GTK_TREE_VIEW(self), - gtk_tree_view_column_new_with_attributes ( - _("mcen_ti_default"), toggle_renderer, - "active", MODEST_ACCOUNT_VIEW_IS_DEFAULT_COLUMN, NULL)); + column); +#ifdef MODEST_TOOLKIT_HILDON2 + gtk_tree_view_column_set_visible (column, FALSE); +#endif /* Disable the Maemo GtkTreeView::allow-checkbox-mode Maemo modification, * which causes the model column to be updated automatically when the row is clicked. @@ -481,17 +505,25 @@ init_view (ModestAccountView *self) NULL, NULL); /* last update for this account */ - column = gtk_tree_view_column_new_with_attributes (_("mcen_ti_lastupdated"), text_renderer,"text", + text_renderer = gtk_cell_renderer_text_new (); + g_object_set (G_OBJECT (text_renderer), + "alignment", PANGO_ALIGN_RIGHT, + "xalign", 1.0, + NULL); + + column = gtk_tree_view_column_new_with_attributes (_("mcen_ti_lastupdated"), text_renderer,"markup", MODEST_ACCOUNT_VIEW_LAST_UPDATED_COLUMN, NULL); gtk_tree_view_append_column (GTK_TREE_VIEW(self),column); - gtk_tree_view_column_set_expand (column, TRUE); + gtk_tree_view_column_set_expand (column, FALSE); gtk_tree_view_column_set_cell_data_func(column, text_renderer, bold_if_default_cell_data, NULL, NULL); /* Show the column headers, * which does not seem to be the default on Maemo. - */ + */ +#ifndef MODEST_TOOLKIT_HILDON2 gtk_tree_view_set_headers_visible (GTK_TREE_VIEW(self), TRUE); +#endif priv->sig_handlers = modest_signal_mgr_connect (priv->sig_handlers, @@ -540,7 +572,11 @@ modest_account_view_new (ModestAccountMgr *account_mgr) g_return_val_if_fail (account_mgr, NULL); - obj = g_object_new(MODEST_TYPE_ACCOUNT_VIEW, NULL); + obj = g_object_new(MODEST_TYPE_ACCOUNT_VIEW, +#ifdef MODEST_TOOLKIT_HILDON2 + "hildon-ui-mode", HILDON_UI_MODE_NORMAL, +#endif + NULL); priv = MODEST_ACCOUNT_VIEW_GET_PRIVATE(obj); g_object_ref (G_OBJECT (account_mgr)); @@ -572,6 +608,25 @@ modest_account_view_get_selected_account (ModestAccountView *self) return account_name; } +gchar * +modest_account_view_get_path_account (ModestAccountView *self, GtkTreePath *path) +{ + gchar *account_name = NULL; + GtkTreeModel *model; + GtkTreeIter iter; + + g_return_val_if_fail (MODEST_IS_ACCOUNT_VIEW (self), NULL); + + model = gtk_tree_view_get_model (GTK_TREE_VIEW (self)); + if (gtk_tree_model_get_iter (model, &iter, path)) { + gtk_tree_model_get (model, &iter, + MODEST_ACCOUNT_VIEW_NAME_COLUMN, + &account_name, -1); + } + + return account_name; +} + /* This allows us to pass more than one piece of data to the signal handler, * and get a result: */ typedef struct @@ -608,6 +663,9 @@ static void modest_account_view_select_account (ModestAccountView *account_view, const gchar* account_name) { +#ifdef MODEST_TOOLKIT_HILDON2 + return; +#endif /* Create a state instance so we can send two items of data to the signal handler: */ ForEachData *state = g_new0 (ForEachData, 1); state->self = account_view; diff --git a/src/widgets/modest-account-view.h b/src/widgets/modest-account-view.h index aa16dd2..6a5bb4a 100644 --- a/src/widgets/modest-account-view.h +++ b/src/widgets/modest-account-view.h @@ -87,6 +87,17 @@ ModestAccountView* modest_account_view_new (ModestAccountMgr *account_ **/ gchar* modest_account_view_get_selected_account (ModestAccountView *account_view); +/** + * modest_account_view_get_path_account: + * @account_view: a #ModestAccountView + * @path: a #GtkTreePath + * + * Gets the name of the account pointed by @path + * + * Returns: the name of the account or NULL if no account in path + **/ +gchar * modest_account_view_get_path_account (ModestAccountView *self, GtkTreePath *path); + G_END_DECLS #endif /* __MODEST_ACCOUNT_VIEW_H__ */ -- 1.7.9.5