aboutsummaryrefslogtreecommitdiffstats
path: root/plugins/exchange-operations/exchange-folder-permission.c
diff options
context:
space:
mode:
authorMilan Crha <mcrha@redhat.com>2009-10-02 21:04:36 +0800
committerMilan Crha <mcrha@redhat.com>2009-10-02 21:07:03 +0800
commitcdd5f2c71152dcbc13c98f67914d30918b5791ee (patch)
treed5202d3a98f385f4d47b2744190f1f27dacf8cbf /plugins/exchange-operations/exchange-folder-permission.c
parent5172227bb59db4afdafc02e6249a199d1d8a4595 (diff)
downloadgsoc2013-evolution-cdd5f2c71152dcbc13c98f67914d30918b5791ee.tar
gsoc2013-evolution-cdd5f2c71152dcbc13c98f67914d30918b5791ee.tar.gz
gsoc2013-evolution-cdd5f2c71152dcbc13c98f67914d30918b5791ee.tar.bz2
gsoc2013-evolution-cdd5f2c71152dcbc13c98f67914d30918b5791ee.tar.lz
gsoc2013-evolution-cdd5f2c71152dcbc13c98f67914d30918b5791ee.tar.xz
gsoc2013-evolution-cdd5f2c71152dcbc13c98f67914d30918b5791ee.tar.zst
gsoc2013-evolution-cdd5f2c71152dcbc13c98f67914d30918b5791ee.zip
Bug #456240 - Move exchange plugin to exchange package
Also added gtkhtml-editor and libgnomecanvas-2.0 to evolution-plugin.pc
Diffstat (limited to 'plugins/exchange-operations/exchange-folder-permission.c')
-rw-r--r--plugins/exchange-operations/exchange-folder-permission.c527
1 files changed, 0 insertions, 527 deletions
diff --git a/plugins/exchange-operations/exchange-folder-permission.c b/plugins/exchange-operations/exchange-folder-permission.c
deleted file mode 100644
index 200eea8cdb..0000000000
--- a/plugins/exchange-operations/exchange-folder-permission.c
+++ /dev/null
@@ -1,527 +0,0 @@
-/*
- *
- * 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:
- * Shakti Sen <shprasad@novell.com>
- *
- * Copyright (C) 1999-2008 Novell, Inc. (www.novell.com)
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <glib/gi18n.h>
-#include <gtk/gtk.h>
-#include <gconf/gconf-client.h>
-
-#include <libedataserverui/e-source-selector.h>
-#include <libebook/e-book.h>
-#include <camel/camel-url.h>
-
-#include <exchange-account.h>
-
-#include <e-util/e-dialog-utils.h>
-#include <calendar/gui/e-cal-model.h>
-
-#include <shell/e-shell-view.h>
-#include <shell/e-shell-window.h>
-
-#include <mail/em-folder-tree.h>
-#include <mail/em-folder-tree-model.h>
-
-#include "exchange-config-listener.h"
-#include "exchange-folder-subscription.h"
-#include "exchange-operations.h"
-#include "exchange-permissions-dialog.h"
-
-#define d(x)
-
-gboolean eex_ui_mail_init (GtkUIManager *ui_manager, EShellView *shell_view);
-gboolean eex_ui_calendar_permissions (GtkUIManager *ui_manager, EShellView *shell_view);
-gboolean eex_ui_tasks_permissions (GtkUIManager *ui_manager, EShellView *shell_view);
-gboolean eex_ui_addressbook_permissions (GtkUIManager *ui_manager, EShellView *shell_view);
-
-static gboolean
-is_subscribed_folder (const gchar *uri)
-{
- const gchar *path;
- ExchangeAccount *account;
- gint offset;
-
- g_return_val_if_fail (uri != NULL, FALSE);
-
- account = exchange_operations_get_exchange_account ();
- g_return_val_if_fail (account != NULL, FALSE);
- g_return_val_if_fail (account->account_filename != NULL, FALSE);
-
- offset = strlen ("exchange://") + strlen (account->account_filename) + strlen ("/;");
- g_return_val_if_fail (strlen (uri) >= offset, FALSE);
-
- path = uri + offset;
-
- return strchr (path, '@') != NULL;
-}
-
-static void
-call_folder_permissions (const gchar *uri)
-{
- ExchangeAccount *account = NULL;
- EFolder *folder = NULL;
-
- g_return_if_fail (uri != NULL);
-
- account = exchange_operations_get_exchange_account ();
- if (!account)
- return;
-
- folder = exchange_account_get_folder (account, uri);
- if (folder)
- exchange_permissions_dialog_new (account, folder, NULL);
-}
-
-static gboolean
-is_eex_folder_selected (EShellView *shell_view, gchar **puri)
-{
- ExchangeAccount *account = NULL;
- gint mode;
- EShellSidebar *shell_sidebar;
- EMFolderTree *folder_tree = NULL;
- GtkTreeSelection *selection;
- GtkTreeModel *model = NULL;
- GtkTreeIter iter;
- gboolean is_store = FALSE, res;
- gchar *uri = NULL;
-
- g_return_val_if_fail (shell_view != NULL, FALSE);
-
- account = exchange_operations_get_exchange_account ();
- if (!account)
- return FALSE;
-
- exchange_account_is_offline (account, &mode);
- if (mode == OFFLINE_MODE)
- return FALSE;
-
- shell_sidebar = e_shell_view_get_shell_sidebar (shell_view);
- g_object_get (shell_sidebar, "folder-tree", &folder_tree, NULL);
- g_return_val_if_fail (folder_tree != NULL, FALSE);
-
- selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (folder_tree));
- g_return_val_if_fail (selection != NULL, FALSE);
-
- if (!gtk_tree_selection_get_selected (selection, &model, &iter))
- return FALSE;
-
- gtk_tree_model_get (model, &iter,
- COL_STRING_URI, &uri,
- COL_BOOL_IS_STORE, &is_store,
- -1);
-
- res = !is_store && uri && g_ascii_strncasecmp (uri, "exchange://", 11) == 0;
-
- if (res) {
- const gchar *path;
-
- path = uri + strlen ("exchange://") + strlen (account->account_filename);
- res = path && *path;
-
- if (res) {
- if (puri)
- *puri = g_strdup (uri);
- }
- }
-
- g_free (uri);
-
- return res;
-}
-
-static void
-eex_mail_folder_permissions_cb (GtkAction *action, EShellView *shell_view)
-{
- gchar *uri = NULL;
-
- if (is_eex_folder_selected (shell_view, &uri))
- call_folder_permissions (uri);
-
- g_free (uri);
-}
-
-static void
-eex_folder_subscribe_cb (GtkAction *action, EShellView *shell_view)
-{
- const gchar *name;
-
- name = gtk_action_get_name (action);
- g_return_if_fail (name != NULL);
-
- name = strrchr (name, '-');
- g_return_if_fail (name != NULL && *name == '-');
-
- call_folder_subscribe (name + 1);
-}
-
-static void
-eex_mail_folder_inbox_unsubscribe_cb (GtkAction *action, EShellView *shell_view)
-{
- gchar *uri = NULL;
-
- if (is_eex_folder_selected (shell_view, &uri))
- call_folder_unsubscribe ("Inbox", uri, NULL);
-
- g_free (uri);
-}
-
-/* Beware, depends on the order */
-static GtkActionEntry mail_entries[] = {
- { "eex-mail-folder-permissions",
- "folder-new",
- N_("Permissions..."),
- NULL,
- N_("Check folder permissions"),
- G_CALLBACK (eex_mail_folder_permissions_cb) },
-
- { "eex-folder-subscribe-Inbox",
- NULL,
- N_("Subscribe to Other User's Folder..."),
- NULL,
- N_("Subscribe to Other User's Folder"),
- G_CALLBACK (eex_folder_subscribe_cb) },
-
- { "eex-mail-folder-inbox-unsubscribe",
- "folder-new",
- N_("Unsubscribe Folder..."),
- NULL,
- NULL,
- G_CALLBACK (eex_mail_folder_inbox_unsubscribe_cb) }
-};
-
-static void
-update_mail_entries_cb (EShellView *shell_view, gpointer user_data)
-{
- GtkActionGroup *action_group;
- EShellWindow *shell_window;
- GtkAction *action;
- gboolean is_eex;
- gchar *uri = NULL;
- gint i;
-
- g_return_if_fail (E_IS_SHELL_VIEW (shell_view));
-
- is_eex = is_eex_folder_selected (shell_view, &uri);
- shell_window = e_shell_view_get_shell_window (shell_view);
- action_group = e_shell_window_get_action_group (shell_window, "mail");
-
- for (i = 0; i < G_N_ELEMENTS (mail_entries); i++) {
- gboolean visible = is_eex;
-
- action = gtk_action_group_get_action (action_group, mail_entries[i].name);
- g_return_if_fail (action != NULL);
-
- if (visible && i == 2) {
- /* it's an unsubscribe, check if this is public and show/hide based on that */
- visible = uri && is_subscribed_folder (uri);
- }
-
- gtk_action_set_visible (action, visible);
- }
-
- g_free (uri);
-}
-
-gboolean
-eex_ui_mail_init (GtkUIManager *ui_manager, EShellView *shell_view)
-{
- EShellWindow *shell_window;
-
- shell_window = e_shell_view_get_shell_window (shell_view);
-
- gtk_action_group_add_actions (
- e_shell_window_get_action_group (shell_window, "mail"),
- mail_entries, G_N_ELEMENTS (mail_entries), shell_view);
-
- g_signal_connect (shell_view, "update-actions", G_CALLBACK (update_mail_entries_cb), NULL);
-
- return TRUE;
-}
-
-static gboolean
-is_eex_source_selected (EShellView *shell_view, gchar **puri)
-{
- gint mode;
- ExchangeAccount *account = NULL;
- ESource *source = NULL;
- gchar *uri = NULL;
- EShellSidebar *shell_sidebar;
- ESourceSelector *selector = NULL;
-
- shell_sidebar = e_shell_view_get_shell_sidebar (shell_view);
- g_return_val_if_fail (shell_sidebar != NULL, FALSE);
-
- g_object_get (shell_sidebar, "selector", &selector, NULL);
- g_return_val_if_fail (selector != NULL, FALSE);
-
- source = e_source_selector_peek_primary_selection (selector);
- uri = e_source_get_uri (source);
-
- g_object_unref (selector);
-
- if (uri && !g_strrstr (uri, "exchange://")) {
- g_free (uri);
- return FALSE;
- }
-
- account = exchange_operations_get_exchange_account ();
- if (!account) {
- g_free (uri);
- return FALSE;
- }
-
- exchange_account_is_offline (account, &mode);
- if (mode == OFFLINE_MODE) {
- g_free (uri);
- return FALSE;
- }
-
- if (!exchange_account_get_folder (account, uri)) {
- g_free (uri);
- return FALSE;
- }
-
- if (puri)
- *puri = uri;
- else
- g_free (uri);
-
- return TRUE;
-}
-
-#define NUM_ENTRIES 3
-
-static void
-update_source_entries_cb (EShellView *shell_view, GtkActionEntry *entries)
-{
- GtkActionGroup *action_group;
- EShellWindow *shell_window;
- GtkAction *action;
- const gchar *group;
- gchar *uri = NULL;
- gboolean is_eex;
- gint i;
-
- g_return_if_fail (E_IS_SHELL_VIEW (shell_view));
- g_return_if_fail (entries != NULL);
-
- if (strstr (entries->name, "calendar"))
- group = "calendar";
- else if (strstr (entries->name, "tasks"))
- group = "tasks";
- else
- group = "addressbook";
-
- is_eex = is_eex_source_selected (shell_view, &uri);
- shell_window = e_shell_view_get_shell_window (shell_view);
- action_group = e_shell_window_get_action_group (shell_window, group);
-
- for (i = 0; i < NUM_ENTRIES; i++) {
- gboolean visible = is_eex;
-
- action = gtk_action_group_get_action (action_group, entries->name);
- g_return_if_fail (action != NULL);
-
- if (visible && i == 2) {
- /* it's an unsubscribe, check if this is public and show/hide based on that */
- visible = uri && is_subscribed_folder (uri);
- }
-
- gtk_action_set_visible (action, visible);
-
- }
-
- g_free (uri);
-}
-
-static void
-setup_source_actions (EShellView *shell_view, GtkActionEntry *entries)
-{
- EShellWindow *shell_window;
- const gchar *group;
-
- g_return_if_fail (shell_view != NULL);
- g_return_if_fail (entries != NULL);
-
- if (strstr (entries->name, "calendar"))
- group = "calendar";
- else if (strstr (entries->name, "tasks"))
- group = "tasks";
- else
- group = "addressbook";
-
- shell_window = e_shell_view_get_shell_window (shell_view);
-
- gtk_action_group_add_actions (
- e_shell_window_get_action_group (shell_window, group),
- entries, NUM_ENTRIES, shell_view);
-
- g_signal_connect (shell_view, "update-actions", G_CALLBACK (update_source_entries_cb), entries);
-}
-
-static void
-source_permissions_cb (GtkAction *action, EShellView *shell_view)
-{
- gchar *uri = NULL;
-
- g_return_if_fail (shell_view != NULL);
-
- if (is_eex_source_selected (shell_view, &uri))
- call_folder_permissions (uri);
-
- g_free (uri);
-}
-
-static void
-eex_folder_unsubscribe_cb (GtkAction *action, EShellView *shell_view)
-{
- gchar *uri = NULL;
- const gchar *name;
-
- g_return_if_fail (shell_view != NULL);
-
- name = gtk_action_get_name (action);
- g_return_if_fail (name != NULL);
-
- name = strrchr (name, '-');
- g_return_if_fail (name != NULL && *name == '-');
-
- if (is_eex_source_selected (shell_view, &uri)) {
- EShellSidebar *shell_sidebar;
- ESourceSelector *selector = NULL;
-
- shell_sidebar = e_shell_view_get_shell_sidebar (shell_view);
- g_return_if_fail (shell_sidebar != NULL);
-
- g_object_get (shell_sidebar, "selector", &selector, NULL);
- g_return_if_fail (selector != NULL);
-
- call_folder_unsubscribe (name + 1, uri, e_source_selector_peek_primary_selection (selector));
- }
-
- g_free (uri);
-}
-
-/* Beware, depends on count and order */
-static GtkActionEntry calendar_entries[] = {
- { "eex-calendar-permissions",
- "folder-new",
- N_("Permissions..."),
- NULL,
- N_("Check calendar permissions"),
- G_CALLBACK (source_permissions_cb) },
-
- { "eex-folder-subscribe-Calendar",
- NULL,
- N_("Subscribe to Other User's Folder..."),
- NULL,
- N_("Subscribe to Other User's Folder"),
- G_CALLBACK (eex_folder_subscribe_cb) },
-
- { "eex-folder-unsubscribe-Calendar",
- "folder-new",
- N_("Unsubscribe Folder..."),
- NULL,
- NULL,
- G_CALLBACK (eex_folder_unsubscribe_cb) }
-};
-
-gboolean
-eex_ui_calendar_permissions (GtkUIManager *ui_manager, EShellView *shell_view)
-{
- g_return_val_if_fail (G_N_ELEMENTS (calendar_entries) != NUM_ENTRIES, FALSE);
-
- setup_source_actions (shell_view, calendar_entries);
-
- return TRUE;
-}
-
-/* Beware, depends on count and order */
-static GtkActionEntry tasks_entries[] = {
- { "eex-tasks-permissions",
- "folder-new",
- N_("Permissions..."),
- NULL,
- N_("Check tasks permissions"),
- G_CALLBACK (source_permissions_cb) },
-
- { "eex-folder-subscribe-Tasks",
- NULL,
- N_("Subscribe to Other User's Folder..."),
- NULL,
- N_("Subscribe to Other User's Folder"),
- G_CALLBACK (eex_folder_subscribe_cb) },
-
- { "eex-folder-unsubscribe-Tasks",
- "folder-new",
- N_("Unsubscribe Folder..."),
- NULL,
- NULL,
- G_CALLBACK (eex_folder_unsubscribe_cb) }
-};
-
-gboolean
-eex_ui_tasks_permissions (GtkUIManager *ui_manager, EShellView *shell_view)
-{
- g_return_val_if_fail (G_N_ELEMENTS (tasks_entries) != NUM_ENTRIES, FALSE);
-
- setup_source_actions (shell_view, tasks_entries);
-
- return TRUE;
-}
-
-/* Beware, depends on count and order */
-static GtkActionEntry addressbook_entries[] = {
- { "eex-addressbook-permissions",
- "folder-new",
- N_("Permissions..."),
- NULL,
- N_("Check addressbook permissions"),
- G_CALLBACK (source_permissions_cb) },
-
- { "eex-folder-subscribe-Contacts",
- NULL,
- N_("Subscribe to Other User's Folder..."),
- NULL,
- N_("Subscribe to Other User's Folder"),
- G_CALLBACK (eex_folder_subscribe_cb) },
-
- { "eex-folder-unsubscribe-Contacts",
- "folder-new",
- N_("Unsubscribe Folder..."),
- NULL,
- NULL,
- G_CALLBACK (eex_folder_unsubscribe_cb) }
-};
-
-gboolean
-eex_ui_addressbook_permissions (GtkUIManager *ui_manager, EShellView *shell_view)
-{
- g_return_val_if_fail (G_N_ELEMENTS (addressbook_entries) != NUM_ENTRIES, FALSE);
-
- setup_source_actions (shell_view, addressbook_entries);
-
- return TRUE;
-}