aboutsummaryrefslogtreecommitdiffstats
path: root/plugins/exchange-operations/exchange-send-options.c
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/exchange-operations/exchange-send-options.c')
-rw-r--r--plugins/exchange-operations/exchange-send-options.c348
1 files changed, 348 insertions, 0 deletions
diff --git a/plugins/exchange-operations/exchange-send-options.c b/plugins/exchange-operations/exchange-send-options.c
new file mode 100644
index 0000000000..9215c42e8c
--- /dev/null
+++ b/plugins/exchange-operations/exchange-send-options.c
@@ -0,0 +1,348 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
+ *
+ * Authors: R.Raghavendran <raghavguru7@gmail.com>
+ *
+ * Copyright (C) 2004 Novell, Inc.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Bangalore, MA 02111-1307, India.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <string.h>
+#include <glib.h>
+#include <gtk/gtksignal.h>
+#include <gtk/gtktogglebutton.h>
+#include <gtk/gtk.h>
+#include <libgnome/libgnome.h>
+#include <libgnome/gnome-i18n.h>
+#include <glade/glade.h>
+
+#include "e-util/e-util-private.h"
+
+#include "exchange-send-options.h"
+
+struct _ExchangeSendOptionsDialogPrivate {
+ /* Glade XML data */
+ GladeXML *xml;
+
+ /*Widgets*/
+
+ GtkWidget *main;
+
+ /*Importance*/
+ GtkWidget *importance;
+
+ /*Sensitivity*/
+ GtkWidget *sensitivity;
+
+ /*Read Receipt*/
+ GtkWidget *read_receipt;
+
+ /*Delivery Receipt*/
+ GtkWidget *delivery_receipt;
+
+ /*Label Widgets*/
+ GtkWidget *importance_label;
+ GtkWidget *sensitivity_label;
+ char *help_section;
+};
+
+static void exchange_sendoptions_dialog_class_init (GObjectClass *object_class);
+static void exchange_sendoptions_dialog_finalize (GObject *object);
+static void exchange_sendoptions_dialog_init (GObject *object);
+static void exchange_sendoptions_dialog_dispose (GObject *object);
+
+static GObjectClass *parent_class = NULL;
+enum {
+ SOD_RESPONSE,
+ LAST_SIGNAL
+};
+
+static guint signals[LAST_SIGNAL] = {0};
+
+
+static void
+exchange_send_options_get_widgets_data (ExchangeSendOptionsDialog *sod)
+{
+ ExchangeSendOptionsDialogPrivate *priv;
+ ExchangeSendOptions *options;
+
+ priv = sod->priv;
+ options = sod->options;
+
+ options->importance = gtk_combo_box_get_active ((GtkComboBox *)priv->importance);
+ options->sensitivity = gtk_combo_box_get_active ((GtkComboBox *)priv->sensitivity);
+
+ options->delivery_enabled = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (priv->delivery_receipt));
+ options->read_enabled = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (priv->read_receipt));
+
+}
+
+static gboolean
+get_widgets (ExchangeSendOptionsDialog *sod)
+{
+ ExchangeSendOptionsDialogPrivate *priv;
+
+ priv = sod->priv;
+
+#define EXCHANGE(name) glade_xml_get_widget (priv->xml, name)
+
+ priv->main = EXCHANGE ("send_options");
+ if (!priv->main)
+ return FALSE;
+
+ priv->importance = EXCHANGE ("imp_combo_box");
+ priv->sensitivity = EXCHANGE ("sensitivity_combo_box");
+ priv->read_receipt = EXCHANGE ("read_check_button");
+ priv->delivery_receipt = EXCHANGE ("delivery_check_button");
+ priv->importance_label = EXCHANGE ("Importance_label");
+ priv->sensitivity_label = EXCHANGE ("Sensitivity_label");
+
+#undef EXCHANGE
+
+ return (priv->importance
+ &&priv->sensitivity
+ &&priv->read_receipt
+ &&priv->delivery_receipt
+ &&priv->importance_label
+ &&priv->sensitivity_label);
+}
+
+static void
+exchange_send_options_fill_widgets_with_data (ExchangeSendOptionsDialog *sod)
+{
+ ExchangeSendOptionsDialogPrivate *priv;
+ ExchangeSendOptions *options;
+ priv = sod->priv;
+ options = sod->options;
+
+ priv->help_section = g_strdup ("usage-mail");
+
+ gtk_label_set_mnemonic_widget (GTK_LABEL (priv->importance_label), priv->importance);
+ gtk_label_set_mnemonic_widget (GTK_LABEL (priv->sensitivity_label), priv->sensitivity);
+
+ gtk_combo_box_set_active ((GtkComboBox *) priv->importance, options->importance);
+ gtk_combo_box_set_active ((GtkComboBox *) priv->sensitivity, options->sensitivity);
+
+ if (options->read_enabled)
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->read_receipt), TRUE);
+ else
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->read_receipt), FALSE);
+ if (options->delivery_enabled)
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->delivery_receipt), TRUE);
+ else
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->delivery_receipt), FALSE);
+}
+
+ExchangeSendOptionsDialog *
+exchange_sendoptions_dialog_new (void) {
+ ExchangeSendOptionsDialog *sod;
+
+ sod = g_object_new (EXCHANGE_TYPE_SENDOPTIONS_DIALOG, NULL);
+
+ return sod;
+}
+
+GType exchange_sendoptions_dialog_get_type (void)
+{
+ static GType type = 0;
+ if (type == 0) {
+ static const GTypeInfo info = {
+ sizeof (ExchangeSendOptionsDialogClass),
+ NULL, /* base_init */
+ NULL, /* base_finalize */
+ (GClassInitFunc) exchange_sendoptions_dialog_class_init, /* class_init */
+ NULL, /* class_finalize */
+ NULL, /* class_data */
+ sizeof (ExchangeSendOptionsDialog),
+ 0, /* n_preallocs */
+ (GInstanceInitFunc) exchange_sendoptions_dialog_init,
+ NULL /* instance_init */
+ };
+ type = g_type_register_static (G_TYPE_OBJECT,
+ "ExchangeSendOptionsDialogType",
+ &info, 0);
+ }
+ return type;
+}
+
+static void exchange_send_options_cb (GtkDialog *dialog, gint state, gpointer func_data)
+{
+ ExchangeSendOptionsDialogPrivate *priv;
+ ExchangeSendOptionsDialog *sod;
+ GError *error = NULL;
+
+ sod = func_data;
+ priv = sod->priv;
+
+ switch (state) {
+ case GTK_RESPONSE_OK:
+ exchange_send_options_get_widgets_data (sod);
+ case GTK_RESPONSE_CANCEL:
+ gtk_widget_hide (priv->main);
+ gtk_widget_destroy (priv->main);
+ g_object_unref (priv->xml);
+ break;
+ case GTK_RESPONSE_HELP:
+ gnome_help_display_desktop (NULL,
+ "evolution-" BASE_VERSION,
+ "evolution-" BASE_VERSION ".xml",
+ priv->help_section,
+ &error);
+ if (error != NULL)
+ g_warning ("%s", error->message);
+ break;
+ }
+ g_signal_emit (G_OBJECT (func_data), signals[SOD_RESPONSE], 0, state);
+
+}
+
+gboolean
+exchange_sendoptions_dialog_run (ExchangeSendOptionsDialog *sod, GtkWidget *parent)
+{
+ ExchangeSendOptionsDialogPrivate *priv;
+ GtkWidget *toplevel;
+ gchar *filename;
+
+ g_return_val_if_fail (sod != NULL || EXCHANGE_IS_SENDOPTIONS_DIALOG (sod), FALSE);
+
+ priv = sod->priv;
+
+ filename = g_build_filename (EVOLUTION_GLADEDIR,
+ "exchange-send-options.glade",
+ NULL);
+ priv->xml = glade_xml_new (filename, NULL, NULL);
+ g_free (filename);
+
+ if (!priv->xml) {
+ g_message ( G_STRLOC ": Could not load the Glade XML file ");
+ return FALSE;
+ }
+
+ if (!get_widgets(sod)) {
+ g_object_unref (priv->xml);
+ g_message (G_STRLOC ": Could not get the Widgets \n");
+ return FALSE;
+ }
+
+ toplevel = gtk_widget_get_toplevel (priv->main);
+ if (parent)
+ gtk_window_set_transient_for (GTK_WINDOW (toplevel),
+ GTK_WINDOW (parent));
+
+ exchange_send_options_fill_widgets_with_data (sod);
+
+ g_signal_connect (GTK_DIALOG (priv->main), "response", G_CALLBACK(exchange_send_options_cb), sod);
+
+ gtk_window_set_modal ((GtkWindow *)priv->main, TRUE);
+ gtk_widget_show (priv->main);
+
+ return TRUE;
+}
+
+static void
+exchange_sendoptions_dialog_class_init (GObjectClass *object)
+{
+ ExchangeSendOptionsDialogClass *klass;
+ GObjectClass *object_class;
+
+ klass = EXCHANGE_SENDOPTIONS_DIALOG_CLASS (object);
+ parent_class = g_type_class_peek_parent (klass);
+ object_class = G_OBJECT_CLASS (klass);
+
+ object_class->finalize = exchange_sendoptions_dialog_finalize;
+ object_class->dispose = exchange_sendoptions_dialog_dispose;
+ signals[SOD_RESPONSE] = g_signal_new ("sod_response",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_FIRST,
+ G_STRUCT_OFFSET (ExchangeSendOptionsDialogClass, esod_response),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__INT,
+ G_TYPE_NONE, 1,
+ G_TYPE_INT);
+
+}
+
+static void
+exchange_sendoptions_dialog_init (GObject *object)
+{
+
+ ExchangeSendOptionsDialog *sod;
+ ExchangeSendOptionsDialogPrivate *priv;
+ ExchangeSendOptions *new;
+
+ sod = EXCHANGE_SENDOPTIONS_DIALOG (object);
+ new = g_new0 (ExchangeSendOptions, 1);
+
+ priv = g_new0 (ExchangeSendOptionsDialogPrivate, 1);
+
+ sod->priv = priv;
+ sod->options = new;
+ sod->options->delivery_enabled = FALSE;
+ sod->options->read_enabled = FALSE;
+ sod->options->importance = E_IMP_NORMAL;
+ sod->options->sensitivity = E_SENSITIVITY_NORMAL;
+
+ priv->xml = NULL;
+ priv->main = NULL;
+ priv->importance = NULL;
+ priv->sensitivity = NULL;
+ priv->sensitivity_label = NULL;
+ priv->importance_label = NULL;
+ priv->read_receipt = NULL;
+ priv->delivery_receipt = NULL;
+
+}
+
+static void
+exchange_sendoptions_dialog_finalize (GObject *object)
+{
+ ExchangeSendOptionsDialog *sod = (ExchangeSendOptionsDialog *)object;
+ ExchangeSendOptionsDialogPrivate *priv;
+
+ g_return_if_fail (EXCHANGE_IS_SENDOPTIONS_DIALOG (sod));
+ priv = sod->priv;
+
+ g_free (priv->help_section);
+
+ if (sod->options) {
+ g_free (sod->options);
+ sod->options = NULL;
+ }
+
+ if (sod->priv) {
+ g_free (sod->priv);
+ sod->priv = NULL;
+ }
+
+ if (parent_class->finalize)
+ (* parent_class->finalize) (object);
+
+}
+
+static void
+exchange_sendoptions_dialog_dispose (GObject *object)
+{
+ ExchangeSendOptionsDialog *sod = (ExchangeSendOptionsDialog *) object;
+
+ g_return_if_fail (EXCHANGE_IS_SENDOPTIONS_DIALOG (sod));
+
+ if (parent_class->dispose)
+ (* parent_class->dispose) (object);
+
+}
+