[anjal] BUGFIX: GNOME #589384 - Unique settings page.



commit 4e1acf8ed2866f835ec9ecc9815379c53fc53b69
Author: Srinivasa Ragavan <sragavan novell com>
Date:   Wed Jul 22 20:53:16 2009 +0530

    BUGFIX: GNOME #589384 - Unique settings page.

 src/mail-account-view.c |    2 +-
 src/mail-shell.c        |   24 ++++++++++++++++++++++--
 src/mail-view.c         |   11 +++++++++++
 src/mail-view.h         |    1 +
 4 files changed, 35 insertions(+), 3 deletions(-)
---
diff --git a/src/mail-account-view.c b/src/mail-account-view.c
index 2c6e963..a488b0b 100644
--- a/src/mail-account-view.c
+++ b/src/mail-account-view.c
@@ -415,7 +415,7 @@ mav_next_pressed (GtkButton *button, MailAccountView *mav)
 	}
 
 	if (mav->current_page == MAV_LAST - 1) {
-		char *uri = e_account_get_string(mav->edit->account, E_ACCOUNT_SOURCE_URL);
+		char *uri = (char *)e_account_get_string(mav->edit->account, E_ACCOUNT_SOURCE_URL);
 		CamelURL *url;
 
 		e_account_set_string (mav->edit->account, E_ACCOUNT_NAME, e_account_get_string(mav->edit->account, E_ACCOUNT_ID_ADDRESS));
diff --git a/src/mail-shell.c b/src/mail-shell.c
index 069ae76..b5c7746 100644
--- a/src/mail-shell.c
+++ b/src/mail-shell.c
@@ -83,6 +83,8 @@ struct  _MailShellPrivate {
 	GtkWidget *slider;
 	
 	MailViewChild *people;
+	MailViewChild *settings_view;
+
 	char **args;
 };
 
@@ -93,6 +95,7 @@ mail_shell_init (MailShell  *shell)
 {
 	shell->priv = g_new0(MailShellPrivate, 1);
 	shell->priv->people = NULL;
+	shell->priv->settings_view = NULL;
 }
 
 static void
@@ -213,12 +216,23 @@ ms_check_mail  (GtkButton *button, gpointer data)
 }
 
 static void
+ms_remove_settings  (MailViewChild *mvc, MailShell *shell)
+{
+	shell->priv->settings_view = NULL;
+}
+
+static void
 settings_btn_clicked (GtkButton *button, gpointer data)
 {
 	MailShell *shell = (MailShell *) data;
 	MailView *view = (MailView *)shell->mail_component->mail_view;
 
-	mail_view_add_page ((MailView *)view, MAIL_VIEW_SETTINGS, NULL);
+	if (shell->priv->settings_view) {
+		mail_view_switch_to_settings ((MailView *)view, (MailViewChild *)shell->priv->settings_view);
+	} else {
+		shell->priv->settings_view = mail_view_add_page ((MailView *)view, MAIL_VIEW_SETTINGS, NULL);
+		g_signal_connect (shell->priv->settings_view, "view-close", G_CALLBACK(ms_remove_settings), shell);
+	}
 }
 
 static void
@@ -304,7 +318,13 @@ static void
 ms_show_post_druid (MailViewChild *mfv, MailShell *shell)
 {
 	gtk_widget_show (((MailView *) shell->mail_component->mail_view)->folder_tree);
-	mail_view_add_page ((MailView *)shell->mail_component->mail_view, MAIL_VIEW_SETTINGS, NULL);
+	if (shell->priv->settings_view)
+		mail_view_switch_to_settings ((MailView *)shell->mail_component->mail_view, (MailViewChild *)shell->priv->settings_view);
+	else {
+		shell->priv->settings_view = mail_view_add_page ((MailView *)shell->mail_component->mail_view, MAIL_VIEW_SETTINGS, NULL);
+		g_signal_connect (shell->priv->settings_view, "view-close", G_CALLBACK(ms_remove_settings), shell);
+	}
+
 }
 
 #define PACK_IN_TOOL(wid,icon)	{ GtkWidget *tbox; tbox = gtk_hbox_new (FALSE, 0); gtk_box_pack_start ((GtkBox *)tbox, gtk_image_new_from_icon_name(icon, GTK_ICON_SIZE_BUTTON), FALSE, FALSE, 0); wid = (GtkWidget *)gtk_tool_button_new (tbox, NULL); }
diff --git a/src/mail-view.c b/src/mail-view.c
index 1a32105..b7bd11b 100644
--- a/src/mail-view.c
+++ b/src/mail-view.c
@@ -445,6 +445,17 @@ mail_view_switch_to_people (MailView* mv, MailViewChild *mpv)
 	mail_people_view_activate ((MailPeopleView *)mpv, mv->tree, mv->folder_tree, mv->check_mail, mv->sort_by, mv->slider, FALSE);
 }
 
+void
+mail_view_switch_to_settings (MailView* mv, MailViewChild *mpv)
+{
+	GList *tmp = mv->priv->children;
+	int position = 0;
+
+	position = g_list_index (tmp, mpv);
+	gtk_notebook_set_current_page ((GtkNotebook *)mv, position);
+	mail_settings_view_activate ((MailSettingsView *)mpv, mv->tree, mv->folder_tree, mv->check_mail, mv->sort_by, mv->slider, FALSE);
+}
+ 
 static MailViewChild *
 mail_view_add_people (MailView *mv, gpointer data, gboolean block)
 {
diff --git a/src/mail-view.h b/src/mail-view.h
index 820709d..bf4dd7f 100644
--- a/src/mail-view.h
+++ b/src/mail-view.h
@@ -86,5 +86,6 @@ void mail_view_set_search (MailView *view, const char *search, char *state, char
 void mail_view_set_slider (MailView *mv, GtkWidget *slider);
 void mail_view_init_search (MailView *mv, GtkWidget *search);
 void mail_view_switch_to_people (MailView* mv, MailViewChild *mpv);
+void mail_view_switch_to_settings (MailView* mv, MailViewChild *mpv);
 
 #endif



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