[evolution-exchange] Bug #597123 - Composer's Send Options doesn't work
- From: Milan Crha <mcrha src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [evolution-exchange] Bug #597123 - Composer's Send Options doesn't work
- Date: Tue, 13 Oct 2009 16:53:19 +0000 (UTC)
commit 0824fc932170d8b1172addcf6d0ac429cd2675b4
Author: Milan Crha <mcrha redhat com>
Date: Tue Oct 13 18:52:48 2009 +0200
Bug #597123 - Composer's Send Options doesn't work
eplugin/exchange-mail-send-options.c | 82 ++++++++++++++++++-----
eplugin/org-gnome-exchange-operations.eplug.xml | 14 +++-
2 files changed, 78 insertions(+), 18 deletions(-)
---
diff --git a/eplugin/exchange-mail-send-options.c b/eplugin/exchange-mail-send-options.c
index 04065e4..8c8d1c3 100644
--- a/eplugin/exchange-mail-send-options.c
+++ b/eplugin/exchange-mail-send-options.c
@@ -31,11 +31,12 @@
#include "mail/em-event.h"
#include "composer/e-msg-composer.h"
+#include "composer/e-composer-from-header.h"
#include "libedataserver/e-account.h"
#include "exchange-send-options.h"
-void org_gnome_exchange_send_options (EPlugin *ep, EMEventTargetComposer *t);
+gboolean eex_ui_composer_actions (GtkUIManager *manager, EMsgComposer *composer);
static ExchangeSendOptionsDialog *dialog=NULL;
@@ -164,33 +165,82 @@ send_options_commit (EMsgComposer *comp, gpointer user_data)
}
}
-void
-org_gnome_exchange_send_options (EPlugin *ep, EMEventTargetComposer *target)
+static gboolean
+account_is_exchange (EAccount *account)
{
- EMsgComposer *composer = target->composer;
- EComposerHeaderTable *table;
- EAccount *account = NULL;
- gchar *temp = NULL;
+ const gchar *url;
- table = e_msg_composer_get_header_table (composer);
- account = e_composer_header_table_get_account (table);
if (!account)
- return;
+ return FALSE;
+
+ url = e_account_get_string (account, E_ACCOUNT_TRANSPORT_URL);
+ return url && g_str_has_prefix (url, "exchange://");
+}
+
+static void
+from_changed_cb (EComposerFromHeader *header, EMsgComposer *composer)
+{
+ GtkActionGroup *group;
+ GtkAction *action;
+
+ g_return_if_fail (header != NULL);
+ g_return_if_fail (composer != NULL);
+
+ group = gtkhtml_editor_get_action_group (GTKHTML_EDITOR (composer), "composer");
+ g_return_if_fail (group != NULL);
+
+ action = gtk_action_group_get_action (group, "eex-send-options");
+ g_return_if_fail (action != NULL);
+
+ gtk_action_set_visible (action, account_is_exchange (e_composer_from_header_get_active (header)));
+}
+
+static void
+action_send_options_cb (GtkAction *action, EMsgComposer *composer)
+{
+ g_return_if_fail (action != NULL);
+ g_return_if_fail (composer != NULL);
- temp = strstr (account->transport->url, "exchange");
- if (!temp) {
- return;
- }
- e_msg_composer_set_send_options (composer, TRUE);
/*disply the send options dialog*/
if (!dialog) {
- g_print ("New dialog\n\n");
dialog = exchange_sendoptions_dialog_new ();
}
+
exchange_sendoptions_dialog_run (dialog, GTK_WIDGET (composer));
g_signal_connect (dialog, "sod_response", G_CALLBACK (append_to_header), GTK_WIDGET (composer));
g_signal_connect (GTK_WIDGET (composer), "destroy",
G_CALLBACK (send_options_commit), dialog);
+}
+
+gboolean
+eex_ui_composer_actions (GtkUIManager *manager, EMsgComposer *composer)
+{
+ static GtkActionEntry entries[] = {
+ { "eex-send-options",
+ NULL,
+ N_("_Send Options"),
+ NULL,
+ N_("Insert Send options"),
+ G_CALLBACK (action_send_options_cb) }
+ };
+
+ GtkhtmlEditor *editor;
+ EComposerHeaderTable *headers;
+ EComposerHeader *header;
+
+ editor = GTKHTML_EDITOR (composer);
+
+ /* Add actions to the "composer" action group. */
+ gtk_action_group_add_actions (
+ gtkhtml_editor_get_action_group (editor, "composer"),
+ entries, G_N_ELEMENTS (entries), composer);
+
+ headers = e_msg_composer_get_header_table (composer);
+ header = e_composer_header_table_get_header (headers, E_COMPOSER_HEADER_FROM);
+
+ from_changed_cb (E_COMPOSER_FROM_HEADER (header), composer);
+ g_signal_connect (G_OBJECT (header), "changed", G_CALLBACK (from_changed_cb), composer);
+ return TRUE;
}
diff --git a/eplugin/org-gnome-exchange-operations.eplug.xml b/eplugin/org-gnome-exchange-operations.eplug.xml
index fcd6ff0..9069908 100644
--- a/eplugin/org-gnome-exchange-operations.eplug.xml
+++ b/eplugin/org-gnome-exchange-operations.eplug.xml
@@ -46,8 +46,18 @@
</group>
</hook>
- <hook class="org.gnome.evolution.mail.events:1.0">
- <event id="composer.selectsendoption" handle="org_gnome_exchange_send_options" target="composer" enable="sendoption"/>
+ <hook class="org.gnome.evolution.ui:1.0">
+ <ui-manager id="org.gnome.evolution.composer" callback="eex_ui_composer_actions">
+ <menubar name="main-menu">
+ <menu action="insert-menu">
+ <placeholder name="insert-menu-top">
+ <placeholder name="send-options">
+ <menuitem action="eex-send-options"/>
+ </placeholder>
+ </placeholder>
+ </menu>
+ </menubar>
+ </ui-manager>
</hook>
<hook class="org.gnome.evolution.ui:1.0">
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]