aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorShreyas Srinivasan <sshreyas@novell.com>2005-07-10 17:51:29 +0800
committerShreyas Srinivasan <shres@src.gnome.org>2005-07-10 17:51:29 +0800
commitb239860999f0f90ed7e070111a106434fb4c22d6 (patch)
treee4154b2c95e9e614e24058ce5f7596e7432bb0d2
parent602194392e6d060832b5d7634ab2ce5dbc1a9b23 (diff)
downloadgsoc2013-evolution-b239860999f0f90ed7e070111a106434fb4c22d6.tar.gz
gsoc2013-evolution-b239860999f0f90ed7e070111a106434fb4c22d6.tar.zst
gsoc2013-evolution-b239860999f0f90ed7e070111a106434fb4c22d6.zip
Plugin to add Disable/ Proxy Logout to a store menu on right click.
2005-07-10 Shreyas Srinivasan <sshreyas@novell.com> * plugins/mail-account-disable/*: Plugin to add Disable/ Proxy Logout to a store menu on right click. svn path=/trunk/; revision=29696
-rw-r--r--plugins/mail-account-disable/Makefile.am15
-rw-r--r--plugins/mail-account-disable/mail-account-disable.c103
-rw-r--r--plugins/mail-account-disable/org-gnome-mail-account-disable.eplug.xml14
3 files changed, 132 insertions, 0 deletions
diff --git a/plugins/mail-account-disable/Makefile.am b/plugins/mail-account-disable/Makefile.am
new file mode 100644
index 0000000000..9cb5f390ac
--- /dev/null
+++ b/plugins/mail-account-disable/Makefile.am
@@ -0,0 +1,15 @@
+INCLUDES = \
+ -I$(top_srcdir) \
+ $(EVOLUTION_MAIL_CFLAGS) \
+ $(EVOLUTION_MAIL_CFLAGS) \
+ -DEVOLUTION_GLADEDIR=\""$(gladedir)"\"
+
+@EVO_PLUGIN_RULE@
+
+plugin_DATA = org-gnome-mail-account-disable.eplug
+plugin_LTLIBRARIES = libmail-account-disable.la
+
+libmail_account_disable_la_SOURCES = mail-account-disable.c
+libmail_account_disable_la_LDFLAGS = -module -avoid-version
+
+EXTRA_DIST = org-gnome-mail-account-disable.eplug.xml
diff --git a/plugins/mail-account-disable/mail-account-disable.c b/plugins/mail-account-disable/mail-account-disable.c
new file mode 100644
index 0000000000..134bb44b45
--- /dev/null
+++ b/plugins/mail-account-disable/mail-account-disable.c
@@ -0,0 +1,103 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Authors: Shreyas Srinivasan <sshreyas@novell.com>
+ *
+ * Copyright 2004 Novell, Inc. (www.novell.com)
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * 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 Street #330, Boston, MA 02111-1307, USA.
+ *
+ */
+
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <glib.h>
+#include <glib/gi18n.h>
+#include <string.h>
+#include <mail/mail-component.h>
+#include <mail/em-folder-selector.h>
+#include <mail/em-popup.h>
+#include <mail/em-account-editor.h>
+#include <mail/mail-config.h>
+#include <e-util/e-account.h>
+#include <e-util/e-account-list.h>
+
+#define ACCOUNT_DISABLE 0
+#define PROXY_LOGOUT 1
+
+void mail_account_disable (EPopup *ep, EPopupItem *p, char *uri);
+void org_gnome_create_mail_account_disable (EPlugin *ep, EMPopupTargetFolder *t);
+
+static EPopupItem popup_items[] = {
+ { E_POPUP_ITEM, "20.emc.04", N_("_Disable"), mail_account_disable, NULL, NULL, 0, EM_POPUP_FOLDER_STORE },
+ { E_POPUP_ITEM, "20.emc.04", N_("Proxy _Logout"), mail_account_disable, NULL, NULL, 0, EM_POPUP_FOLDER_STORE }
+};
+
+static void
+popup_free (EPopup *ep, GSList *items, void *data)
+{
+g_slist_free (items);
+}
+
+void
+mail_account_disable (EPopup *ep, EPopupItem *p, char *uri)
+{
+ EAccount *account;
+
+ account = mail_config_get_account_by_source_url (uri);
+
+ if (account) {
+ MailComponent *component = mail_component_peek ();
+
+ if (mail_config_has_proxies(account))
+ mail_config_remove_account_proxies (account);
+
+ account->enabled = !account->enabled;
+ e_account_list_change(mail_config_get_accounts(), account);
+ mail_component_remove_store_by_uri (component, account->source->url);
+
+ if (account->parent_uid)
+ mail_config_remove_account (account);
+
+ mail_config_save_accounts();
+ }
+
+ return ;
+}
+
+void
+org_gnome_create_mail_account_disable (EPlugin *ep, EMPopupTargetFolder *t)
+{
+ EAccount *account;
+ GSList *menus = NULL;
+
+ account = mail_config_get_account_by_source_url (t->uri);
+
+ if (g_strrstr (t->uri,"groupwise://") && account->parent_uid) {
+ popup_items[PROXY_LOGOUT].label = _(popup_items [PROXY_LOGOUT].label);
+ menus = g_slist_prepend (menus, &popup_items [PROXY_LOGOUT]);
+ }
+ else {
+ popup_items[ACCOUNT_DISABLE].label = _(popup_items [ACCOUNT_DISABLE].label);
+ menus = g_slist_prepend (menus, &popup_items [ACCOUNT_DISABLE]);
+ }
+
+ e_popup_add_items (t->target.popup, menus, NULL, popup_free, t->uri);
+
+ return;
+}
+
diff --git a/plugins/mail-account-disable/org-gnome-mail-account-disable.eplug.xml b/plugins/mail-account-disable/org-gnome-mail-account-disable.eplug.xml
new file mode 100644
index 0000000000..a21bfaabf3
--- /dev/null
+++ b/plugins/mail-account-disable/org-gnome-mail-account-disable.eplug.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<e-plugin-list>
+ <e-plugin id="org.gnome.mail.account.disable"
+ type="shlib" domain="evolution" _name="Disable Account"
+ location="@PLUGINDIR@/libmail-account-disable.so">
+ <_description>Allows disabling of accounts.</_description>
+ <author name="Shreyas Srinivasan" email="sshreyas@novell.com"/>
+ <hook class="org.gnome.evolution.mail.popup:1.0">
+ <menu id="org.gnome.evolution.mail.foldertree.popup" target="folder"
+factory = "org_gnome_create_mail_account_disable">
+ </menu>
+ </hook>
+ </e-plugin>
+</e-plugin-list>