X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=src%2Fgtk%2Fmodest-account-view-window.c;h=bc915f01135c73c8131c3f8b1cfeebf27732a0d1;hb=fc9e22262b3ec375140b1cdf954b4660f03b9e36;hp=d66187f59f242313400b47c80f2c011b7977b787;hpb=1f01526060a46ef283c748f34c6a650b16f6d176;p=modest diff --git a/src/gtk/modest-account-view-window.c b/src/gtk/modest-account-view-window.c index d66187f..bc915f0 100644 --- a/src/gtk/modest-account-view-window.c +++ b/src/gtk/modest-account-view-window.c @@ -28,7 +28,14 @@ */ #include -#include "modest-account-view-window.h" +#include + +#include +#include + +#include +#include +#include #include "modest-account-assistant.h" #include "modest-tny-platform-factory.h" @@ -44,12 +51,12 @@ enum { LAST_SIGNAL }; - typedef struct _ModestAccountViewWindowPrivate ModestAccountViewWindowPrivate; struct _ModestAccountViewWindowPrivate { - ModestWidgetFactory *widget_factory; + GtkWidget *add_button; GtkWidget *edit_button; GtkWidget *remove_button; + GtkWidget *default_button; ModestAccountView *account_view; }; #define MODEST_ACCOUNT_VIEW_WINDOW_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE((o), \ @@ -95,37 +102,17 @@ modest_account_view_window_class_init (ModestAccountViewWindowClass *klass) gobject_class->finalize = modest_account_view_window_finalize; g_type_class_add_private (gobject_class, sizeof(ModestAccountViewWindowPrivate)); - - /* signal definitions go here, e.g.: */ -/* signals[MY_SIGNAL_1] = */ -/* g_signal_new ("my_signal_1",....); */ -/* signals[MY_SIGNAL_2] = */ -/* g_signal_new ("my_signal_2",....); */ -/* etc. */ } static void modest_account_view_window_init (ModestAccountViewWindow *obj) { - ModestAccountViewWindowPrivate *priv; - - priv = MODEST_ACCOUNT_VIEW_WINDOW_GET_PRIVATE(obj); - - priv->widget_factory = NULL; + /* empty */ } static void modest_account_view_window_finalize (GObject *obj) { - ModestAccountViewWindowPrivate *priv; - - priv = MODEST_ACCOUNT_VIEW_WINDOW_GET_PRIVATE(obj); - - if (priv->widget_factory) { - g_object_unref (G_OBJECT(priv->widget_factory)); - priv->widget_factory = NULL; - } - G_OBJECT_CLASS(parent_class)->finalize (obj); } @@ -137,7 +124,9 @@ on_selection_changed (GtkTreeSelection *sel, ModestAccountViewWindow *self) GtkTreeModel *model; GtkTreeIter iter; gboolean has_selection; - + gchar *account_name; + gchar *default_account_name; + priv = MODEST_ACCOUNT_VIEW_WINDOW_GET_PRIVATE(self); has_selection = @@ -145,25 +134,31 @@ on_selection_changed (GtkTreeSelection *sel, ModestAccountViewWindow *self) gtk_widget_set_sensitive (priv->edit_button, has_selection); gtk_widget_set_sensitive (priv->remove_button, has_selection); + + account_name = modest_account_view_get_selected_account (priv->account_view); + default_account_name = modest_account_mgr_get_default_account( + modest_runtime_get_account_mgr()); + gtk_widget_set_sensitive (priv->default_button, + default_account_name == NULL || account_name == NULL || + strcmp (default_account_name, account_name) != 0); + g_free (account_name); + g_free (default_account_name); } static void on_remove_button_clicked (GtkWidget *button, ModestAccountViewWindow *self) { - TnyPlatformFactory *fact; ModestAccountViewWindowPrivate *priv; ModestAccountMgr *account_mgr; - const gchar *account_name; + gchar *account_name; priv = MODEST_ACCOUNT_VIEW_WINDOW_GET_PRIVATE(self); - fact = modest_tny_platform_factory_get_instance (); - account_mgr = modest_tny_platform_factory_get_modest_account_mgr_instance (fact); + account_mgr = modest_runtime_get_account_mgr(); account_name = modest_account_view_get_selected_account (priv->account_view); if (account_name) { gboolean removed; - GError *err = NULL; GtkWidget *dialog; gchar *txt; @@ -178,7 +173,7 @@ on_remove_button_clicked (GtkWidget *button, ModestAccountViewWindow *self) txt = g_strdup_printf (_("Do you really want to delete the account %s?"), account_name); gtk_box_pack_start (GTK_BOX(GTK_DIALOG(dialog)->vbox), gtk_label_new (txt), FALSE, FALSE, 0); - gtk_widget_show_all (GTK_WIDGET(GTK_DIALOG(dialog)->vbox)); +/* gtk_widget_show_all (GTK_WIDGET(GTK_DIALOG(dialog)->vbox)); */ g_free (txt); if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT) { @@ -186,17 +181,16 @@ on_remove_button_clicked (GtkWidget *button, ModestAccountViewWindow *self) the account from the ModestAccountView */ removed = modest_account_mgr_remove_account (account_mgr, account_name, - FALSE, - &err); + FALSE); if (removed) { /* Show confirmation dialog ??? */ } else { /* Show error dialog ??? */ - if (err) - g_error_free (err); + g_warning ("Error removing account %s", account_name); } } gtk_widget_destroy (dialog); + g_free (account_name); } } @@ -211,15 +205,9 @@ on_add_button_clicked (GtkWidget *button, ModestAccountViewWindow *self) { GtkWidget *assistant; ModestAccountViewWindowPrivate *priv; - TnyPlatformFactory *fact; - ModestAccountMgr *account_mgr; priv = MODEST_ACCOUNT_VIEW_WINDOW_GET_PRIVATE(self); - fact = modest_tny_platform_factory_get_instance (); - account_mgr = modest_tny_platform_factory_get_modest_account_mgr_instance (fact); - - assistant = modest_account_assistant_new (account_mgr, - priv->widget_factory); + assistant = modest_account_assistant_new (modest_runtime_get_account_mgr()); gtk_window_set_transient_for (GTK_WINDOW(assistant), GTK_WINDOW(self)); @@ -228,6 +216,25 @@ on_add_button_clicked (GtkWidget *button, ModestAccountViewWindow *self) static void +on_default_button_clicked (GtkWidget *button, ModestAccountViewWindow *self) +{ + ModestAccountViewWindowPrivate *priv; + ModestAccountMgr *account_mgr; + gchar *account_name; + + priv = MODEST_ACCOUNT_VIEW_WINDOW_GET_PRIVATE(self); + + account_mgr = modest_runtime_get_account_mgr(); + account_name = modest_account_view_get_selected_account (priv->account_view); + + modest_account_mgr_set_default_account (account_mgr, account_name); + + g_free (account_name); +} + + + +static void on_close_button_clicked (GtkWidget *button, ModestAccountViewWindow *self) { gtk_widget_destroy (GTK_WIDGET(self)); @@ -240,38 +247,41 @@ button_box_new (ModestAccountViewWindow *self) { GtkWidget *button_box; - GtkWidget *add_button, *remove_button, *edit_button; ModestAccountViewWindowPrivate *priv; priv = MODEST_ACCOUNT_VIEW_WINDOW_GET_PRIVATE(self); button_box = gtk_vbutton_box_new (); - - add_button = gtk_button_new_from_stock(GTK_STOCK_ADD); - remove_button = gtk_button_new_from_stock(GTK_STOCK_REMOVE); - edit_button = gtk_button_new_from_stock(GTK_STOCK_EDIT); - - g_signal_connect (G_OBJECT(add_button), "clicked", + gtk_button_box_set_spacing (GTK_BUTTON_BOX (button_box), 6); + gtk_button_box_set_layout (GTK_BUTTON_BOX (button_box), + GTK_BUTTONBOX_START); + + priv->add_button = gtk_button_new_from_stock(GTK_STOCK_ADD); + priv->default_button = gtk_button_new_with_label(_("Make default")); + priv->remove_button = gtk_button_new_from_stock(GTK_STOCK_REMOVE); + priv->edit_button = gtk_button_new_from_stock(GTK_STOCK_EDIT); + + g_signal_connect (G_OBJECT(priv->add_button), "clicked", G_CALLBACK(on_add_button_clicked), self); - g_signal_connect (G_OBJECT(remove_button), "clicked", + g_signal_connect (G_OBJECT(priv->remove_button), "clicked", G_CALLBACK(on_remove_button_clicked), self); - g_signal_connect (G_OBJECT(edit_button), "clicked", + g_signal_connect (G_OBJECT(priv->edit_button), "clicked", G_CALLBACK(on_edit_button_clicked), self); - - gtk_box_pack_start (GTK_BOX(button_box), add_button, FALSE, FALSE,2); - gtk_box_pack_start (GTK_BOX(button_box), remove_button, FALSE, FALSE,2); - gtk_box_pack_start (GTK_BOX(button_box), edit_button, FALSE, FALSE,2); - - gtk_widget_set_sensitive (edit_button, FALSE); - gtk_widget_set_sensitive (remove_button, FALSE); - - /* remember these, so we can deactivate them when nothing is - * selected */ - priv->remove_button = remove_button; - priv->edit_button = edit_button; + g_signal_connect (G_OBJECT(priv->default_button), "clicked", + G_CALLBACK(on_default_button_clicked), + self); + + gtk_box_pack_start (GTK_BOX(button_box), priv->add_button, FALSE, FALSE,2); + gtk_box_pack_start (GTK_BOX(button_box), priv->default_button, FALSE, FALSE,2); + gtk_box_pack_start (GTK_BOX(button_box), priv->remove_button, FALSE, FALSE,2); + gtk_box_pack_start (GTK_BOX(button_box), priv->edit_button, FALSE, FALSE,2); + + gtk_widget_set_sensitive (priv->edit_button, FALSE); + gtk_widget_set_sensitive (priv->remove_button, FALSE); + gtk_widget_set_sensitive (priv->default_button, FALSE); return button_box; } @@ -285,29 +295,26 @@ window_vbox_new (ModestAccountViewWindow *self) GtkWidget *main_hbox, *main_vbox, *button_box; GtkWidget *close_button; GtkWidget *close_hbox; - ModestAccountView *account_view; priv = MODEST_ACCOUNT_VIEW_WINDOW_GET_PRIVATE(self); main_vbox = gtk_vbox_new (FALSE, 6); main_hbox = gtk_hbox_new (FALSE, 6); - account_view = modest_widget_factory_get_account_view (priv->widget_factory); - priv->account_view = account_view; - gtk_widget_set_size_request (GTK_WIDGET(account_view), 300, 400); + priv->account_view = modest_account_view_new (modest_runtime_get_account_mgr()); + gtk_widget_set_size_request (GTK_WIDGET(priv->account_view), 300, 400); - sel = gtk_tree_view_get_selection (GTK_TREE_VIEW(account_view)); + 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); button_box = button_box_new (self); - gtk_box_pack_start (GTK_BOX(main_hbox), GTK_WIDGET(account_view), TRUE, TRUE, 2); + gtk_box_pack_start (GTK_BOX(main_hbox), GTK_WIDGET(priv->account_view), TRUE, TRUE, 2); gtk_box_pack_start (GTK_BOX(main_hbox), button_box, FALSE, FALSE,2); gtk_box_pack_start (GTK_BOX(main_vbox), main_hbox, TRUE, TRUE, 2); - close_button = gtk_button_new_from_stock(GTK_STOCK_CLOSE); g_signal_connect (G_OBJECT(close_button), "clicked", G_CALLBACK(on_close_button_clicked), @@ -324,21 +331,15 @@ window_vbox_new (ModestAccountViewWindow *self) GtkWidget* -modest_account_view_window_new (ModestWidgetFactory *factory) +modest_account_view_window_new (void) { GObject *obj; ModestAccountViewWindowPrivate *priv; - - g_return_val_if_fail (factory, NULL); obj = g_object_new(MODEST_TYPE_ACCOUNT_VIEW_WINDOW, NULL); priv = MODEST_ACCOUNT_VIEW_WINDOW_GET_PRIVATE(obj); - g_object_ref (G_OBJECT(factory)); - priv->widget_factory = factory; - gtk_window_set_resizable (GTK_WINDOW(obj), FALSE); - gtk_window_set_title (GTK_WINDOW(obj), _("Accounts")); gtk_window_set_type_hint (GTK_WINDOW(obj), GDK_WINDOW_TYPE_HINT_DIALOG);