[anjal] Support edit account from Settings.



commit 825bfbaffbe3e76e9ca6c05d9784e40059359ea5
Author: Srinivasa Ragavan <sragavan novell com>
Date:   Tue May 5 15:47:28 2009 +0530

    Support edit account from Settings.
---
 src/mail-settings-view.c |   44 ++++++++++++++++++++++++++++++++++++++++++++
 src/mail-settings-view.h |    2 +-
 src/mail-view.c          |    7 +++++++
 3 files changed, 52 insertions(+), 1 deletions(-)

diff --git a/src/mail-settings-view.c b/src/mail-settings-view.c
index a8d2015..1e50a47 100644
--- a/src/mail-settings-view.c
+++ b/src/mail-settings-view.c
@@ -27,6 +27,7 @@
 #include <glib/gi18n.h>
 #include "mail-settings-view.h"
 #include "mail-component.h"
+#include <libedataserver/e-account-list.h>
 #include "mail-view.h"
 #include "e-util/e-icon-factory.h"
 
@@ -38,6 +39,7 @@ G_DEFINE_TYPE (MailSettingsView, mail_settings_view, GTK_TYPE_VBOX)
 
 enum {
 	VIEW_CLOSE,
+	SHOW_ACCOUNT,
 	LAST_SIGNAL
 };
 
@@ -75,12 +77,54 @@ mail_settings_view_class_init (MailSettingsViewClass *klass)
 			      NULL, NULL,
 			      g_cclosure_marshal_VOID__VOID,
 			      G_TYPE_NONE, 0);
+	signals[SHOW_ACCOUNT] =
+		g_signal_new ("show-account",
+			      G_OBJECT_CLASS_TYPE (object_class),
+			      G_SIGNAL_RUN_FIRST,
+			      G_STRUCT_OFFSET (MailSettingsViewClass , show_account),
+			      NULL, NULL,
+			      g_cclosure_marshal_VOID__VOID,
+			      G_TYPE_NONE, 0);
 	
 }
 
+static void
+msv_edit_account(GtkButton *button, MailSettingsView *msv)
+{
+	g_signal_emit (msv, signals[SHOW_ACCOUNT], 0);
+}
+
+#define PACK_BOX(w,s) box = gtk_hbox_new(FALSE, 0); gtk_box_pack_start(box, w, FALSE, FALSE, s); gtk_widget_show(box); gtk_widget_show(w); gtk_box_pack_start(acview, box, FALSE, FALSE, 3);
+
 void
 mail_settings_view_construct (MailSettingsView *acview)
 {
+	GtkWidget *box, *label, *tbox, *tlabel;
+	struct _EAccount *account = mail_config_get_default_account();
+	char *tmp;
+
+	label = gtk_label_new (NULL);
+	gtk_label_set_markup (label, _("<span size=\"large\" weight=\"bold\">Accounts</span>"));
+	PACK_BOX(label,12);
+
+	label = gtk_button_new ();
+	tbox = gtk_hbox_new (FALSE, 0);
+
+	tlabel = gtk_image_new_from_stock ("gtk-edit", GTK_ICON_SIZE_BUTTON);
+	gtk_widget_show(tlabel);
+	gtk_box_pack_start(tbox, tlabel, FALSE, FALSE, 6);
+
+	tmp = g_strdup_printf("%s %s...", _("Edit"), e_account_get_string(account, E_ACCOUNT_ID_ADDRESS));
+	tlabel = gtk_label_new(tmp);
+	g_free(tmp);
+	gtk_widget_show(tlabel);
+	gtk_box_pack_start(tbox, tlabel, FALSE, FALSE, 0);
+	gtk_widget_show(tbox);
+	gtk_container_add(label, tbox);
+	PACK_BOX(label,24);
+	g_signal_connect(label, "clicked", G_CALLBACK(msv_edit_account), acview);
+	gtk_widget_show(acview);
+
 }
 
 MailSettingsView *
diff --git a/src/mail-settings-view.h b/src/mail-settings-view.h
index 5043691..569e16f 100644
--- a/src/mail-settings-view.h
+++ b/src/mail-settings-view.h
@@ -49,7 +49,7 @@ typedef struct _MailSettingsViewClass {
 	GtkVBoxClass parent_class;
 
 	void (* view_close) (MailSettingsView *);	
-
+	void (* show_account) (MailSettingsView *);
 } MailSettingsViewClass;
 
 MailSettingsView *mail_settings_view_new (void);
diff --git a/src/mail-view.c b/src/mail-view.c
index 6b589c5..cf94f02 100644
--- a/src/mail-view.c
+++ b/src/mail-view.c
@@ -311,6 +311,12 @@ mail_view_add_message (MailView *mv)
 	return mcv;
 }
 
+static void
+mv_show_acc_mcv (MailFolderView *mfv, MailView *mv)
+{
+	mail_view_add_page(mv, MAIL_VIEW_ACCOUNT);
+}
+
 static MailViewChild *
 mail_view_add_settings (MailView *mv)
 {
@@ -322,6 +328,7 @@ mail_view_add_settings (MailView *mv)
 	mv->priv->children = g_list_append (mv->priv->children,  msv);
 	position = gtk_notebook_append_page (mv, msv, mail_settings_view_get_tab_widget(msv));
 	g_signal_connect (msv, "view-close", G_CALLBACK(mv_close_mcv), mv);
+	g_signal_connect (msv, "show-account", G_CALLBACK(mv_show_acc_mcv), mv);
 	gtk_notebook_set_tab_reorderable (mv, msv, TRUE);
 	gtk_notebook_set_current_page (mv, position);
 	gtk_notebook_set_tab_label_packing (mv, msv, FALSE, FALSE, 0);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]