aboutsummaryrefslogtreecommitdiffstats
path: root/capplet/anjal-settings-main.c
diff options
context:
space:
mode:
authorSrinivasa Ragavan <sragavan@gnome.org>2010-02-26 17:16:21 +0800
committerMatthew Barnes <mbarnes@redhat.com>2010-03-14 09:49:49 +0800
commitc38f7da6ed1eb22494fb989aacbff36414fcdd97 (patch)
tree4d7cdf325110072f15fa3ffebf256c82209cee5a /capplet/anjal-settings-main.c
parent304777ae4cd03026fcee98c0863e9e43f483c97a (diff)
downloadgsoc2013-evolution-c38f7da6ed1eb22494fb989aacbff36414fcdd97.tar
gsoc2013-evolution-c38f7da6ed1eb22494fb989aacbff36414fcdd97.tar.gz
gsoc2013-evolution-c38f7da6ed1eb22494fb989aacbff36414fcdd97.tar.bz2
gsoc2013-evolution-c38f7da6ed1eb22494fb989aacbff36414fcdd97.tar.lz
gsoc2013-evolution-c38f7da6ed1eb22494fb989aacbff36414fcdd97.tar.xz
gsoc2013-evolution-c38f7da6ed1eb22494fb989aacbff36414fcdd97.tar.zst
gsoc2013-evolution-c38f7da6ed1eb22494fb989aacbff36414fcdd97.zip
Add control center capplet from anjal to evolution. Name it
evolution-settings.
Diffstat (limited to 'capplet/anjal-settings-main.c')
-rw-r--r--capplet/anjal-settings-main.c319
1 files changed, 319 insertions, 0 deletions
diff --git a/capplet/anjal-settings-main.c b/capplet/anjal-settings-main.c
new file mode 100644
index 0000000000..80943f533f
--- /dev/null
+++ b/capplet/anjal-settings-main.c
@@ -0,0 +1,319 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+
+/*
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) version 3.
+ *
+ * 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the program; if not, see <http://www.gnu.org/licenses/>
+ *
+ *
+ * Authors:
+ * Srinivasa Ragavan <sragavan@novell.com>
+ *
+ * Copyright (C) 2009 Intel Corporation (www.intel.com)
+ *
+ */
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#include <string.h>
+#include <stdio.h>
+
+#include <config.h>
+
+#include <gtk/gtk.h>
+#include <glib/gi18n.h>
+#include <libedataserverui/e-passwords.h>
+#include <mail/mail-mt.h>
+#include "mail-capplet-shell.h"
+#include <gconf/gconf-client.h>
+#include <libedataserver/e-categories.h>
+#include <dbus/dbus-glib.h>
+
+#ifdef G_OS_WIN32
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+#endif
+
+#include <unique/unique.h>
+
+gboolean windowed = FALSE;
+gboolean anjal_icon_decoration = FALSE;
+gboolean default_app = FALSE;
+guint32 socket_id = 0;
+MailCappletShell *main_window;
+static gchar **remaining_args;
+extern char *shell_moduledir;
+
+#define GCONF_KEY_MAILTO_ENABLED "/desktop/gnome/url-handlers/mailto/enabled"
+#define GCONF_KEY_MAILTO_COMMAND "/desktop/gnome/url-handlers/mailto/command"
+#define ANJAL_MAILTO_COMMAND "anjal %s"
+
+static UniqueResponse
+mail_message_received_cb (UniqueApp *app G_GNUC_UNUSED,
+ gint command,
+ UniqueMessageData *message_data,
+ guint time_ G_GNUC_UNUSED,
+ gpointer user_data)
+{
+ gchar *url;
+ GtkWindow *window = (GtkWindow *) user_data;
+ char *args[2];
+
+ switch (command) {
+ case UNIQUE_ACTIVATE :
+ gtk_window_deiconify (window);
+ gtk_window_present (window);
+ return UNIQUE_RESPONSE_OK;
+
+ case UNIQUE_NEW :
+ return UNIQUE_RESPONSE_OK;
+
+ case UNIQUE_OPEN :
+ url = unique_message_data_get_text (message_data);
+ args[0] = url;
+ args[1] = NULL;
+ //mail_shell_set_cmdline_args ((MailShell *)window, args);
+ //mail_shell_handle_cmdline ((MailShell *)window);
+ g_free (url);
+ gdk_window_raise (((GtkWidget *)window)->window);
+ gtk_window_deiconify (window);
+ gtk_window_present (window);
+
+ return UNIQUE_RESPONSE_OK;
+ }
+
+ return UNIQUE_RESPONSE_PASSTHROUGH;
+}
+
+static void
+categories_icon_theme_hack (void)
+{
+ GtkIconTheme *icon_theme;
+ const gchar *category_name;
+ const gchar *filename;
+ gchar *dirname;
+
+ /* XXX Allow the category icons to be referenced as named
+ * icons, since GtkAction does not support GdkPixbufs. */
+
+ /* Get the icon file for some default category. Doesn't matter
+ * which, so long as it has an icon. We're just interested in
+ * the directory components. */
+ category_name = _("Birthday");
+ filename = e_categories_get_icon_file_for (category_name);
+ g_return_if_fail (filename != NULL && *filename != '\0');
+
+ /* Extract the directory components. */
+ dirname = g_path_get_dirname (filename);
+
+ /* Add it to the icon theme's search path. This relies on
+ * GtkIconTheme's legacy feature of using image files found
+ * directly in the search path. */
+ icon_theme = gtk_icon_theme_get_default ();
+ gtk_icon_theme_append_search_path (icon_theme, dirname);
+
+ g_free (dirname);
+}
+
+static void
+check_and_set_default_mail (void)
+{
+ GConfClient *client = gconf_client_get_default ();
+ gchar *mailer;
+
+ mailer = gconf_client_get_string(client, GCONF_KEY_MAILTO_COMMAND, NULL);
+ if (mailer && *mailer && (strcmp (mailer, ANJAL_MAILTO_COMMAND) == 0)) {
+ g_object_unref (client);
+ return; /* Anjal is the default mailer */
+ }
+
+ gconf_client_set_bool(client, GCONF_KEY_MAILTO_ENABLED, TRUE, NULL);
+ gconf_client_set_string(client, GCONF_KEY_MAILTO_COMMAND, ANJAL_MAILTO_COMMAND, NULL);
+ g_object_unref (client);
+}
+
+static gboolean
+idle_cb (MailCappletShell *mshell G_GNUC_UNUSED)
+{
+
+ if (default_app) {
+ check_and_set_default_mail ();
+ }
+
+
+
+ return FALSE;
+}
+
+static void
+create_default_shell (void)
+{
+ main_window = mail_capplet_shell_new(socket_id);
+ if (!socket_id)
+ gtk_widget_show (main_window);
+ g_idle_add ((GSourceFunc) idle_cb, remaining_args);
+}
+
+int
+main (int argc, char *argv[])
+{
+ GError *error = NULL;
+ EShell *default_shell;
+ GConfClient *client;
+
+ UniqueApp *app;
+
+#ifdef G_OS_WIN32
+ extern void link_shutdown (void);
+ set_paths ();
+#endif
+
+ static GOptionEntry entries[] = {
+ { "windowed", 'w', G_OPTION_FLAG_NO_ARG, G_OPTION_ARG_NONE, &windowed,N_("Run Anjal in a window"), NULL },
+ { "default-mailer", 'd', G_OPTION_FLAG_NO_ARG, G_OPTION_ARG_NONE, &default_app,N_("Make Anjal the default email client"), NULL },
+ { "socket",
+ 's',
+ G_OPTION_FLAG_IN_MAIN,
+ G_OPTION_ARG_INT,
+ &socket_id,
+ /* TRANSLATORS: don't translate the terms in brackets */
+ N_("ID of the socket to embed in"),
+ N_("socket") },
+ { G_OPTION_REMAINING, 0, 0, G_OPTION_ARG_STRING_ARRAY, &remaining_args, NULL, NULL },
+ { NULL, 0, 0, 0, NULL, NULL, NULL }
+ };
+
+#ifdef ENABLE_NLS
+ bindtextdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR);
+ bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+ textdomain (GETTEXT_PACKAGE);
+#endif
+
+
+ gtk_set_locale ();
+
+ if (!gtk_init_with_args (&argc, &argv, _("Anjal email client"), entries, NULL, &error)) {
+ g_error ("Unable to start Anjal: %s\n", error->message);
+ g_error_free(error);
+ }
+
+ if (!g_thread_get_initialized ())
+ g_thread_init (NULL);
+ dbus_g_thread_init ();
+
+ client = gconf_client_get_default();
+
+ e_passwords_init();
+ gtk_icon_theme_append_search_path (gtk_icon_theme_get_default(), PACKAGE_DATA_DIR G_DIR_SEPARATOR_S "anjal" G_DIR_SEPARATOR_S "icons");
+ categories_icon_theme_hack ();
+
+ gconf_client_set_bool (client, "/apps/evolution/mail/display/enable_vfolders", FALSE, NULL);
+ g_object_unref (client);
+
+ app = unique_app_new ("org.gnome.AnjalSettings", NULL);
+ if (unique_app_is_running (app) && !socket_id) {
+ gboolean cmd_line = (remaining_args && remaining_args[0] != NULL);
+
+ if (!cmd_line)
+ unique_app_send_message (app, UNIQUE_ACTIVATE, NULL);
+ else {
+ UniqueMessageData *data = unique_message_data_new ();
+ unique_message_data_set_text (data, remaining_args[0], -1);
+ unique_app_send_message (app, UNIQUE_OPEN, data);
+ unique_message_data_free (data);
+ }
+
+ return 0;
+ }
+
+ create_default_shell ();
+
+ g_signal_connect (UNIQUE_APP(app), "message-received",
+ G_CALLBACK (mail_message_received_cb), main_window);
+
+ if (windowed)
+ anjal_icon_decoration = TRUE;
+
+ gtk_main ();
+
+
+#ifdef G_OS_WIN32
+ link_shutdown ();
+#endif
+ return 0;
+}
+
+#ifndef HACK
+gpointer em_format_html_print_new(gpointer p1 G_GNUC_UNUSED,
+ int i G_GNUC_UNUSED)
+{
+ return NULL;
+}
+
+void em_format_html_print_raw_message (gpointer p1 G_GNUC_UNUSED,
+ gpointer p2 G_GNUC_UNUSED)
+{
+ return ;
+}
+
+void
+eab_merging_book_commit_contact ()
+{
+}
+
+void
+e_searching_tokenizer_set_primary_case_sensitivity ()
+{
+}
+
+void
+eab_prompt_save_dialog ()
+{
+}
+
+void
+eab_merging_book_add_contact ()
+{
+}
+
+void
+e_searching_tokenizer_match_count ()
+{
+}
+
+void
+addressbook_load_cancel()
+{
+}
+
+void
+e_searching_tokenizer_new ()
+{
+}
+
+void
+e_searching_tokenizer_set_primary_search_string()
+{
+}
+
+void
+addressbook_load()
+{
+}
+
+void
+eab_load_error_dialog()
+{
+}
+
+#endif