[anjal] Add some UI to pop out composer from inline. Not fully done.



commit a23118509097cabe903cd52576b65e4bfe4903de
Author: Srinivasa Ragavan <sragavan novell com>
Date:   Fri May 8 15:07:44 2009 +0530

    Add some UI to pop out composer from inline. Not fully done.
---
 src/mail-message-view.c |   32 ++++++++++++++++++++++++++++++--
 src/mail-message-view.h |    3 ++-
 src/mail-shell.c        |    9 +++++++++
 src/mail-shell.h        |    3 +++
 4 files changed, 44 insertions(+), 3 deletions(-)

diff --git a/src/mail-message-view.c b/src/mail-message-view.c
index 08b2f9c..0a2041b 100644
--- a/src/mail-message-view.c
+++ b/src/mail-message-view.c
@@ -212,6 +212,7 @@ mmv_show (MailMessageView *mmv)
 	gtk_widget_show (mmv->body);
 	gtk_widget_show_all (mmv->footer);
 	gtk_widget_hide (mmv->discard);
+	gtk_widget_hide (mmv->pop_out);
 	gtk_arrow_set (mmv->priv->arrow, GTK_ARROW_DOWN, GTK_SHADOW_NONE);				
 }
 
@@ -342,6 +343,20 @@ discard_composer_cb (GtkWidget *w, MailMessageView *mmv)
 	gtk_widget_hide (mmv->frame);
 	gtk_widget_hide (mmv->comp_view);
 	gtk_widget_hide (mmv->discard);
+	gtk_widget_hide (mmv->pop_out);
+	/* FIXME: Destroy the composer in here */
+}
+
+static void
+popout_composer_cb (GtkWidget *w, MailMessageView *mmv)
+{
+	MailComposerView *mcv;
+
+	gtk_widget_hide (mmv->frame);
+	gtk_widget_hide (mmv->comp_view);
+	gtk_widget_hide (mmv->discard);
+	gtk_widget_hide (mmv->pop_out);
+	mcv = mail_shell_create_composer ();
 	/* FIXME: Destroy the composer in here */
 }
 
@@ -388,6 +403,7 @@ construct_reply_composer (MailMessageView *mmv, int mode)
 		gtk_box_pack_start (mmv, mmv->frame, FALSE, FALSE, 6);
 	}
 	gtk_widget_show (mmv->discard);
+	gtk_widget_show (mmv->pop_out);
 	gtk_widget_show (mmv->frame);
 	gtk_widget_show (mmv->comp_view);
 
@@ -1144,11 +1160,23 @@ mail_message_view_set_message (MailMessageView *mmview, CamelFolder *folder, con
 
 	mmview->discard = gtk_button_new_with_label (_("Discard"));
 	g_signal_connect (mmview->discard, "clicked", G_CALLBACK (discard_composer_cb), mmview);
-//	EXPOSE(discard, bgcolor);
-	/* Hide this one be default */
 	gtk_widget_hide (mmview->discard);
 	gtk_box_pack_end (mmview->footer, mmview->discard, FALSE, FALSE, 12);
 
+	box = gtk_hbox_new (FALSE, 0);
+	img = e_icon_factory_get_icon ("tab-new", E_ICON_SIZE_BUTTON);
+	tmp = gtk_image_new_from_pixbuf (img);
+	gtk_box_pack_start(box, tmp, FALSE, FALSE, 0);
+	mmview->pop_out = gtk_button_new ();
+	g_signal_connect (mmview->pop_out, "clicked", G_CALLBACK (popout_composer_cb), mmview);
+	gtk_container_add(mmview->pop_out, box);
+	gtk_widget_show_all(mmview->pop_out);
+	gtk_widget_hide (mmview->pop_out);
+	gtk_box_pack_end (mmview->footer, mmview->pop_out, FALSE, FALSE, 12);
+
+//	EXPOSE(discard, bgcolor);
+	/* Hide this one be default */
+
 	mmview->frame = gtk_frame_new (NULL);
 	gtk_frame_set_shadow_type (mmview->frame, GTK_SHADOW_IN);
 
diff --git a/src/mail-message-view.h b/src/mail-message-view.h
index c9e930b..6ce2923 100644
--- a/src/mail-message-view.h
+++ b/src/mail-message-view.h
@@ -55,7 +55,8 @@ typedef struct _MailMessageView {
 	GtkWidget *frame;
 	GtkWidget *comp_view;
 	GtkWidget *discard;
-	
+	GtkWidget *pop_out;
+
 	MailMessageViewPrivate *priv;
 	EMFormatWebKitDisplay *efwd;
 } MailMessageView;
diff --git a/src/mail-shell.c b/src/mail-shell.c
index 9a509b9..154b034 100644
--- a/src/mail-shell.c
+++ b/src/mail-shell.c
@@ -174,6 +174,15 @@ new_email_btn_clicked (GtkButton *button, gpointer data)
 	mail_view_add_page (view, MAIL_VIEW_COMPOSER);
 }
 
+MailViewChild *
+mail_shell_create_composer (void)
+{
+	MailComponent *mc = mail_component_peek ();
+	MailView *view = mc->mail_view;
+
+	return mail_view_add_page (view, MAIL_VIEW_COMPOSER);
+}
+
 static void
 ms_check_mail  (GtkButton *button, gpointer data)
 {
diff --git a/src/mail-shell.h b/src/mail-shell.h
index 6589046..c82ba07 100644
--- a/src/mail-shell.h
+++ b/src/mail-shell.h
@@ -25,6 +25,7 @@
 
 #include <gtk/gtk.h>
 #include "mail-component.h"
+#include "mail-view.h"
 
 #define MAIL_SHELL_TYPE        (mail_shell_get_type ())
 #define MAIL_SHELL(o)          (G_TYPE_CHECK_INSTANCE_CAST ((o), MAIL_SHELL_TYPE, MailShell))
@@ -50,6 +51,8 @@ typedef struct _MailShellClass {
 } MailShellClass;
 
 MailShell * mail_shell_new (void);
+MailViewChild *mail_shell_create_composer (void);
+
 #endif
 
 



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