[anjal] Give extra options for view to create pages.



commit d22c2afe08ebd4ef7f1abd4a166c81c2b7c73475
Author: Srinivasa Ragavan <sragavan novell com>
Date:   Fri May 29 23:43:55 2009 +0530

    Give extra options for view to create pages.
---
 src/mail-shell.c |   42 +++++++++++++++++++++++++++++++++++++-----
 src/mail-shell.h |    3 ++-
 2 files changed, 39 insertions(+), 6 deletions(-)

diff --git a/src/mail-shell.c b/src/mail-shell.c
index 3460b00..8c5d3fe 100644
--- a/src/mail-shell.c
+++ b/src/mail-shell.c
@@ -32,6 +32,8 @@
 #include <gdk/gdkkeysyms.h>
 #include <misc/e-spinner.h>
 #include "mail-decoration.h"
+#include <mail/em-utils.h>
+#include <mail/em-composer-utils.h>
 
 enum {
 	BACKSPACE_PRESSED,
@@ -77,6 +79,8 @@ struct  _MailShellPrivate {
 	GtkWidget *settings;
 	GtkWidget *quit;	
 	GtkWidget *slider;
+
+	char **args;
 };
 
 G_DEFINE_TYPE (MailShell, mail_shell, GTK_TYPE_WINDOW)
@@ -175,7 +179,7 @@ new_email_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_COMPOSER);
+	mail_view_add_page ((MailView *)view, MAIL_VIEW_COMPOSER, NULL);
 }
 
 MailViewChild *
@@ -184,7 +188,7 @@ mail_shell_create_composer (void)
 	MailComponent *mc = mail_component_peek ();
 	MailView *view = (MailView *)mc->mail_view;
 
-	return mail_view_add_page ((MailView *)view, MAIL_VIEW_COMPOSER);
+	return mail_view_add_page ((MailView *)view, MAIL_VIEW_COMPOSER, NULL);
 }
 
 static void
@@ -202,7 +206,7 @@ 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);
+	mail_view_add_page ((MailView *)view, MAIL_VIEW_SETTINGS, NULL);
 }
 
 static void
@@ -271,7 +275,7 @@ 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);
+	mail_view_add_page ((MailView *)shell->mail_component->mail_view, MAIL_VIEW_SETTINGS, NULL);
 }
 
 void
@@ -442,7 +446,7 @@ mail_shell_construct (MailShell *shell)
 		MailViewChild *mc;
 
 		gtk_widget_hide (((MailView *) shell->mail_component->mail_view)->folder_tree);
-		mc = mail_view_add_page ((MailView *)shell->mail_component->mail_view, MAIL_VIEW_ACCOUNT);
+		mc = mail_view_add_page ((MailView *)shell->mail_component->mail_view, MAIL_VIEW_ACCOUNT, NULL);
 		g_signal_connect (mc, "view-close", G_CALLBACK(ms_show_post_druid), shell);
 	}
 }
@@ -455,3 +459,31 @@ mail_shell_new ()
 
 	return shell;
 }
+
+void 
+mail_shell_set_cmdline_args (MailShell *shell, char **args)
+{
+	shell->priv->args = args;
+}
+
+void e_msg_composer_set_lite (void);
+
+void
+mail_shell_handle_cmdline (MailShell *shell)
+{
+	int i;
+
+	e_msg_composer_set_lite ();
+	for (i=0; shell->priv->args[i]; i++) {
+		if (strncmp (shell->priv->args[i], "mailto:";, 7) == 0) {
+			/* Handle mailto:// */
+			if (em_utils_check_user_can_send_mail(NULL)) {
+				GtkWidget *composer = (GtkWidget *) em_utils_compose_new_message_with_mailto ((const char *)shell->priv->args[i], NULL);
+				mail_view_add_page ((MailView *)shell->mail_component->mail_view, MAIL_VIEW_COMPOSER, (gpointer)composer);
+			
+			} else {
+				g_message ("Please configure an account before anything else");
+			}
+		}
+	}
+}
diff --git a/src/mail-shell.h b/src/mail-shell.h
index c82ba07..34d0ce1 100644
--- a/src/mail-shell.h
+++ b/src/mail-shell.h
@@ -52,7 +52,8 @@ typedef struct _MailShellClass {
 
 MailShell * mail_shell_new (void);
 MailViewChild *mail_shell_create_composer (void);
-
+void mail_shell_set_cmdline_args (MailShell *shell, char **args);
+void mail_shell_handle_cmdline (MailShell *shell);
 #endif
 
 



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