aboutsummaryrefslogtreecommitdiffstats
path: root/widgets/e-msg-composer.c
diff options
context:
space:
mode:
Diffstat (limited to 'widgets/e-msg-composer.c')
-rw-r--r--widgets/e-msg-composer.c59
1 files changed, 58 insertions, 1 deletions
diff --git a/widgets/e-msg-composer.c b/widgets/e-msg-composer.c
index 70602c0018..6654ddfd17 100644
--- a/widgets/e-msg-composer.c
+++ b/widgets/e-msg-composer.c
@@ -39,6 +39,7 @@
#include <camel/camel.h>
#include "e-msg-composer.h"
+#include "e-msg-composer-address-dialog.h"
#include "e-msg-composer-attachment-bar.h"
#include "e-msg-composer-hdrs.h"
@@ -121,7 +122,20 @@ show_attachments (EMsgComposer *composer,
}
-/* Callbacks. */
+/* Address dialog callbacks. */
+
+static void
+address_dialog_destroy_cb (GtkWidget *widget,
+ gpointer data)
+{
+ EMsgComposer *composer;
+
+ composer = E_MSG_COMPOSER (data);
+ composer->address_dialog = NULL;
+}
+
+
+/* Message composer window callbacks. */
static void
send_cb (GtkWidget *widget,
@@ -164,6 +178,24 @@ add_attachment_cb (GtkWidget *widget,
}
static void
+address_dialog_cb (GtkWidget *widget,
+ gpointer data)
+{
+ EMsgComposer *composer;
+
+ composer = E_MSG_COMPOSER (data);
+ if (composer->address_dialog == NULL) {
+ composer->address_dialog = e_msg_composer_address_dialog_new ();
+ gtk_signal_connect (GTK_OBJECT (composer->address_dialog),
+ "destroy", address_dialog_destroy_cb,
+ composer);
+ }
+
+ gtk_widget_show (composer->address_dialog);
+ gdk_window_show (composer->address_dialog->window);
+}
+
+static void
glade_connect (GladeXML *gui,
const gchar *widget_name,
const gchar *signal_name,
@@ -218,6 +250,13 @@ setup_signals (EMsgComposer *composer)
"clicked",
GTK_SIGNAL_FUNC (add_attachment_cb), composer);
+ glade_connect (composer->menubar_gui, "menubar_address_dialog",
+ "activate",
+ GTK_SIGNAL_FUNC (address_dialog_cb), composer);
+ glade_connect (composer->toolbar_gui, "toolbar_address_dialog",
+ "clicked",
+ GTK_SIGNAL_FUNC (address_dialog_cb), composer);
+
gtk_signal_connect (GTK_OBJECT (composer->attachment_bar),
"changed",
GTK_SIGNAL_FUNC (attachment_bar_changed),
@@ -238,6 +277,9 @@ destroy (GtkObject *object)
gtk_object_unref (GTK_OBJECT (composer->toolbar_gui));
gtk_object_unref (GTK_OBJECT (composer->appbar_gui));
+ if (composer->address_dialog != NULL)
+ gtk_widget_destroy (composer->address_dialog);
+
if (GTK_OBJECT_CLASS (parent_class)->destroy != NULL)
(* GTK_OBJECT_CLASS (parent_class)->destroy) (object);
}
@@ -285,6 +327,8 @@ init (EMsgComposer *composer)
composer->text = NULL;
composer->text_scrolled_window = NULL;
+ composer->address_dialog = NULL;
+
composer->attachment_bar = NULL;
composer->attachment_scrolled_window = NULL;
}
@@ -314,6 +358,12 @@ e_msg_composer_get_type (void)
}
+/**
+ * e_msg_composer_construct:
+ * @composer: A message composer widget
+ *
+ * Construct @composer.
+ **/
void
e_msg_composer_construct (EMsgComposer *composer)
{
@@ -390,6 +440,13 @@ e_msg_composer_construct (EMsgComposer *composer)
setup_signals (composer);
}
+/**
+ * e_msg_composer_new:
+ *
+ * Create a new message composer widget.
+ *
+ * Return value: A pointer to the newly created widget
+ **/
GtkWidget *
e_msg_composer_new (void)
{