diff options
-rw-r--r-- | calendar/gui/Makefile.am | 3 | ||||
-rw-r--r-- | calendar/gui/dialogs/task-page.c | 1 | ||||
-rw-r--r-- | calendar/gui/e-cal-popup.c | 501 | ||||
-rw-r--r-- | calendar/gui/e-cal-popup.h | 214 | ||||
-rw-r--r-- | configure.ac | 3 |
5 files changed, 2 insertions, 720 deletions
diff --git a/calendar/gui/Makefile.am b/calendar/gui/Makefile.am index a8993bce0d..b7bf7f557f 100644 --- a/calendar/gui/Makefile.am +++ b/calendar/gui/Makefile.am @@ -19,7 +19,6 @@ ecalendarinclude_HEADERS = \ e-cal-event.h \ e-cal-model-calendar.h \ e-cal-model.h \ - e-cal-popup.h \ e-calendar-view.h \ e-cell-date-edit-text.h \ e-comp-editor-registry.h \ @@ -109,8 +108,6 @@ libevolution_calendar_la_SOURCES = \ e-cal-model-calendar.h \ e-cal-model.c \ e-cal-model.h \ - e-cal-popup.h \ - e-cal-popup.c \ e-cal-list-view.c \ e-cal-list-view.h \ e-cal-model-memos.c \ diff --git a/calendar/gui/dialogs/task-page.c b/calendar/gui/dialogs/task-page.c index 7498f9825b..632cc52e2f 100644 --- a/calendar/gui/dialogs/task-page.c +++ b/calendar/gui/dialogs/task-page.c @@ -53,7 +53,6 @@ #include "../e-meeting-attendee.h" #include "../e-meeting-store.h" #include "../e-meeting-list-view.h" -#include "../e-cal-popup.h" #define TASK_PAGE_GET_PRIVATE(obj) \ (G_TYPE_INSTANCE_GET_PRIVATE \ diff --git a/calendar/gui/e-cal-popup.c b/calendar/gui/e-cal-popup.c deleted file mode 100644 index cdbce07ac7..0000000000 --- a/calendar/gui/e-cal-popup.c +++ /dev/null @@ -1,501 +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: - * Michael Zucchi <notzed@ximian.com> - * - * Copyright (C) 1999-2008 Novell, Inc. (www.novell.com) - * - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -#include <string.h> -#include <fcntl.h> -#include <stdlib.h> - -#include <glib.h> -#include <gio/gio.h> - -#include "e-cal-popup.h" -#include <libedataserver/e-data-server-util.h> -#include <libedataserverui/e-source-selector.h> - -#include <camel/camel-mime-part.h> -#include <camel/camel-stream-vfs.h> -#include "e-util/e-util.h" -#include <glib/gi18n.h> -#include "e-util/e-mktemp.h" -#include "e-util/e-dialog-utils.h" - -#include "gui/e-calendar-view.h" -#include "gui/e-cal-model.h" -#include "itip-utils.h" -#include "e-attachment.h" - -static GObjectClass *ecalp_parent; - -static void -ecalp_init(GObject *o) -{ - /*ECalPopup *eabp = (ECalPopup *)o; */ -} - -static void -ecalp_finalise(GObject *o) -{ - ((GObjectClass *)ecalp_parent)->finalize(o); -} - -static void -ecalp_target_free(EPopup *ep, EPopupTarget *t) -{ - switch (t->type) { - case E_CAL_POPUP_TARGET_SELECT: { - ECalPopupTargetSelect *s = (ECalPopupTargetSelect *)t; - gint i; - - for (i=0;i<s->events->len;i++) - e_cal_model_free_component_data(s->events->pdata[i]); - g_ptr_array_free(s->events, TRUE); - g_object_unref(s->model); - break; } - case E_CAL_POPUP_TARGET_SOURCE: { - ECalPopupTargetSource *s = (ECalPopupTargetSource *)t; - - g_object_unref(s->selector); - break; } - } - - ((EPopupClass *)ecalp_parent)->target_free(ep, t); -} - -/* Standard menu code */ - -static void -ecalp_class_init(GObjectClass *klass) -{ - klass->finalize = ecalp_finalise; - ((EPopupClass *)klass)->target_free = ecalp_target_free; -} - -GType -e_cal_popup_get_type(void) -{ - static GType type = 0; - - if (type == 0) { - static const GTypeInfo info = { - sizeof(ECalPopupClass), - NULL, NULL, - (GClassInitFunc)ecalp_class_init, - NULL, NULL, - sizeof(ECalPopup), 0, - (GInstanceInitFunc)ecalp_init - }; - ecalp_parent = g_type_class_ref(e_popup_get_type()); - type = g_type_register_static(e_popup_get_type(), "ECalPopup", &info, 0); - } - - return type; -} - -ECalPopup *e_cal_popup_new(const gchar *menuid) -{ - ECalPopup *eabp = g_object_new(e_cal_popup_get_type(), NULL); - - e_popup_construct(&eabp->popup, menuid); - - return eabp; -} - -static icalproperty * -get_attendee_prop (icalcomponent *icalcomp, const gchar *address) -{ - - icalproperty *prop; - - if (!(address && *address)) - return NULL; - - for (prop = icalcomponent_get_first_property (icalcomp, ICAL_ATTENDEE_PROPERTY); - prop; - prop = icalcomponent_get_next_property (icalcomp, ICAL_ATTENDEE_PROPERTY)) { - const gchar *attendee = icalproperty_get_attendee (prop); - - if (g_str_equal (itip_strip_mailto (attendee), address)) { - return prop; - } - } - return NULL; -} - -static gboolean -is_delegated (icalcomponent *icalcomp, gchar *user_email) -{ - icalproperty *prop; - icalparameter *param; - const gchar *delto = NULL; - - prop = get_attendee_prop (icalcomp, user_email); - - if (prop) { - param = icalproperty_get_first_parameter (prop, ICAL_DELEGATEDTO_PARAMETER); - if (param) - delto = icalparameter_get_delegatedto (param); - } else - return FALSE; - - prop = get_attendee_prop (icalcomp, itip_strip_mailto (delto)); - - if (prop) { - const gchar *delfrom = NULL; - icalparameter_partstat status = ICAL_PARTSTAT_NONE; - - param = icalproperty_get_first_parameter (prop, ICAL_DELEGATEDFROM_PARAMETER); - if (param) - delfrom = icalparameter_get_delegatedfrom (param); - param = icalproperty_get_first_parameter (prop, ICAL_PARTSTAT_PARAMETER); - if (param) - status = icalparameter_get_partstat (param); - if ((delfrom && *delfrom) && g_str_equal (itip_strip_mailto (delfrom), user_email) - && status != ICAL_PARTSTAT_DECLINED) - return TRUE; - } - - return FALSE; -} - -static gboolean -needs_to_accept (icalcomponent *icalcomp, gchar *user_email) -{ - icalproperty *prop; - icalparameter *param; - icalparameter_partstat status = ICAL_PARTSTAT_NONE; - - prop = get_attendee_prop (icalcomp, user_email); - - /* It might be a mailing list */ - if (!prop) - return TRUE; - param = icalproperty_get_first_parameter (prop, ICAL_PARTSTAT_PARAMETER); - if (param) - status = icalparameter_get_partstat (param); - - if (status == ICAL_PARTSTAT_ACCEPTED || status == ICAL_PARTSTAT_TENTATIVE) - return FALSE; - - return TRUE; -} - -/** - * e_cal_popup_target_new_select: - * @eabp: - * @model: The calendar model. - * @events: An array of pointers to ECalModelComponent items. These - * items must be copied. They, and the @events array will be freed by - * the popup menu automatically. - * - * Create a new selection popup target. - * - * Return value: - **/ -ECalPopupTargetSelect * -e_cal_popup_target_new_select(ECalPopup *eabp, struct _ECalModel *model, GPtrArray *events) -{ - ECalPopupTargetSelect *t = e_popup_target_new(&eabp->popup, E_CAL_POPUP_TARGET_SELECT, sizeof(*t)); - guint32 mask = ~0; - ECal *client; - gboolean read_only, user_org = FALSE; - - /* FIXME: This is duplicated in e-cal-menu */ - - t->model = model; - g_object_ref(t->model); - t->events = events; - - if (t->events->len == 0) { - client = e_cal_model_get_default_client(t->model); - } else { - ECalModelComponent *comp_data = (ECalModelComponent *)t->events->pdata[0]; - ECalComponent *comp; - gchar *user_email = NULL; - - comp = e_cal_component_new (); - e_cal_component_set_icalcomponent (comp, icalcomponent_new_clone (comp_data->icalcomp)); - user_email = itip_get_comp_attendee (comp, comp_data->client); - - mask &= ~E_CAL_POPUP_SELECT_ANY; - if (t->events->len == 1) - mask &= ~E_CAL_POPUP_SELECT_ONE; - else { - gint i=0; - - mask &= ~E_CAL_POPUP_SELECT_MANY; - /* Now check for any incomplete tasks and set the flags*/ - for (; i < t->events->len; i++) { - ECalModelComponent *comp_data = (ECalModelComponent *)t->events->pdata[i]; - if (!icalcomponent_get_first_property (comp_data->icalcomp, ICAL_COMPLETED_PROPERTY)) - mask &= ~E_CAL_POPUP_SELECT_NOTCOMPLETE; - else - mask &= ~E_CAL_POPUP_SELECT_COMPLETE; - } - } - - if (icalcomponent_get_first_property (comp_data->icalcomp, ICAL_URL_PROPERTY)) - mask &= ~E_CAL_POPUP_SELECT_HASURL; - - if (e_cal_util_component_has_recurrences (comp_data->icalcomp)) - mask &= ~E_CAL_POPUP_SELECT_RECURRING; - else if (e_cal_util_component_is_instance (comp_data->icalcomp)) - mask &= ~E_CAL_POPUP_SELECT_RECURRING; - else - mask &= ~E_CAL_POPUP_SELECT_NONRECURRING; - - if (e_cal_util_component_is_instance (comp_data->icalcomp)) - mask &= ~E_CAL_POPUP_SELECT_INSTANCE; - - if (e_cal_util_component_has_attendee (comp_data->icalcomp)) - mask &= ~E_CAL_POPUP_SELECT_MEETING; - - if (!e_cal_get_save_schedules (comp_data->client)) - mask &= ~E_CAL_POPUP_SELECT_NOSAVESCHEDULES; - - if (e_cal_util_component_has_organizer (comp_data->icalcomp)) { - - if (itip_organizer_is_user (comp, comp_data->client)) { - mask &= ~E_CAL_POPUP_SELECT_ORGANIZER; - user_org = TRUE; - } - - } else { - /* organiser is synonym for owner in this case */ - mask &= ~(E_CAL_POPUP_SELECT_ORGANIZER|E_CAL_POPUP_SELECT_NOTMEETING); - } - - client = comp_data->client; - - if (e_cal_get_static_capability (client, CAL_STATIC_CAPABILITY_DELEGATE_SUPPORTED)) { - - if (e_cal_get_static_capability (client, CAL_STATIC_CAPABILITY_DELEGATE_TO_MANY)) - mask &= ~E_CAL_POPUP_SELECT_DELEGATABLE; - else if (!user_org && !is_delegated (comp_data->icalcomp, user_email)) - mask &= ~E_CAL_POPUP_SELECT_DELEGATABLE; - } - - if (e_cal_get_static_capability (client, CAL_STATIC_CAPABILITY_HAS_UNACCEPTED_MEETING) && - needs_to_accept (comp_data->icalcomp, user_email)) - mask &= ~E_CAL_POPUP_SELECT_ACCEPTABLE; - - if (!icalcomponent_get_first_property (comp_data->icalcomp, ICAL_COMPLETED_PROPERTY)) - mask &= ~E_CAL_POPUP_SELECT_NOTCOMPLETE; - - if (icalcomponent_get_first_property (comp_data->icalcomp, ICAL_COMPLETED_PROPERTY)) - mask &= ~E_CAL_POPUP_SELECT_COMPLETE; - - g_object_unref (comp); - g_free (user_email); - } - - e_cal_is_read_only(client, &read_only, NULL); - if (!read_only) - mask &= ~E_CAL_POPUP_SELECT_EDITABLE; - - if (!e_cal_get_static_capability (client, CAL_STATIC_CAPABILITY_NO_TASK_ASSIGNMENT) - && !e_cal_get_static_capability (client, CAL_STATIC_CAPABILITY_NO_CONV_TO_ASSIGN_TASK)) - mask &= ~E_CAL_POPUP_SELECT_ASSIGNABLE; - - /* This bit isn't implemented ... */ - mask &= ~E_CAL_POPUP_SELECT_NOTEDITING; - - t->target.mask = mask; - - return t; -} - -ECalPopupTargetSource * -e_cal_popup_target_new_source(ECalPopup *eabp, ESourceSelector *selector) -{ - ECalPopupTargetSource *t = e_popup_target_new(&eabp->popup, E_CAL_POPUP_TARGET_SOURCE, sizeof(*t)); - guint32 mask = ~0; - const gchar *relative_uri; - gchar *uri; - ESource *source; - const gchar *offline = NULL; - const gchar *delete = NULL; - - /* TODO: this is duplicated for addressbook too */ - - t->selector = selector; - g_object_ref(selector); - - /* TODO: perhaps we need to copy this so it doesn't change during the lifecycle */ - source = e_source_selector_peek_primary_selection(selector); - if (source) - mask &= ~E_CAL_POPUP_SOURCE_PRIMARY; - - /* FIXME Gross hack, should have a property or something */ - relative_uri = e_source_peek_relative_uri(source); - if (relative_uri && !strcmp("system", relative_uri)) - mask &= ~E_CAL_POPUP_SOURCE_SYSTEM; - else - mask &= ~E_CAL_POPUP_SOURCE_USER; - - uri = e_source_get_uri (source); - if (!uri || (g_ascii_strncasecmp (uri, "file://", 7) && g_ascii_strncasecmp (uri, "contacts://", 11))) { - /* check for e_target_selector's offline_status property here */ - offline = e_source_get_property (source, "offline_sync"); - if (offline && strcmp (offline, "1") == 0) - mask &= ~E_CAL_POPUP_SOURCE_NO_OFFLINE; /* set the menu item to Mark Offline */ - else - mask &= ~E_CAL_POPUP_SOURCE_OFFLINE; - } else { - mask |= E_CAL_POPUP_SOURCE_NO_OFFLINE; - mask |= E_CAL_POPUP_SOURCE_OFFLINE; - } - g_free (uri); - - /* check for delete_status property here */ - delete = e_source_get_property (source, "delete"); - if (delete && strcmp (delete, "no") == 0) - mask &= ~E_CAL_POPUP_SOURCE_NO_DELETE; /* set the menu item to non deletable */ - else - mask &= ~E_CAL_POPUP_SOURCE_DELETE; - - t->target.mask = mask; - - return t; -} - -/* ********************************************************************** */ -/* Popup menu plugin handler */ - -/* -<e-plugin - class="org.gnome.mail.plugin.popup:1.0" - id="org.gnome.mail.plugin.popup.iteab:1.0" - type="shlib" - location="/opt/gnome2/lib/camel/1.0/libcamelimap.so" - name="imap" - description="IMAP4 and IMAP4v1 mail store"> - <hook class="org.gnome.mail.popupMenu:1.0" - handler="HandlePopup"> - <menu id="any" target="select"> - <iteab - type="iteab|toggle|radio|image|submenu|bar" - active - path="foo/bar" - label="label" - icon="foo" - mask="select_one" - activate="ecalp_view_eabacs"/> - </menu> - </extension> - -*/ - -static gpointer ecalph_parent_class; -#define ecalph ((ECalPopupHook *)eph) - -static const EPopupHookTargetMask ecalph_select_masks[] = { - { "one", E_CAL_POPUP_SELECT_ONE }, - { "many", E_CAL_POPUP_SELECT_MANY }, - { "editable", E_CAL_POPUP_SELECT_EDITABLE }, - { "recurring", E_CAL_POPUP_SELECT_RECURRING }, - { "non-recurring", E_CAL_POPUP_SELECT_NONRECURRING }, - { "instance", E_CAL_POPUP_SELECT_INSTANCE }, - { "organizer", E_CAL_POPUP_SELECT_ORGANIZER }, - { "not-editing", E_CAL_POPUP_SELECT_NOTEDITING }, - { "not-meeting", E_CAL_POPUP_SELECT_NOTMEETING }, - { "meeting", E_CAL_POPUP_SELECT_MEETING }, - { "assignable", E_CAL_POPUP_SELECT_ASSIGNABLE }, - { "hasurl", E_CAL_POPUP_SELECT_HASURL }, - { "delegate", E_CAL_POPUP_SELECT_DELEGATABLE }, - { "accept", E_CAL_POPUP_SELECT_ACCEPTABLE }, - { "not-complete", E_CAL_POPUP_SELECT_NOTCOMPLETE }, - { "no-save-schedules", E_CAL_POPUP_SELECT_NOSAVESCHEDULES }, - { "complete" , E_CAL_POPUP_SELECT_COMPLETE}, - { NULL } -}; - -static const EPopupHookTargetMask ecalph_source_masks[] = { - { "primary", E_CAL_POPUP_SOURCE_PRIMARY }, - { "system", E_CAL_POPUP_SOURCE_SYSTEM }, - { "user", E_CAL_POPUP_SOURCE_USER }, - { "offline", E_CAL_POPUP_SOURCE_OFFLINE}, - { "no-offline", E_CAL_POPUP_SOURCE_NO_OFFLINE}, - { "delete", E_CAL_POPUP_SOURCE_DELETE}, - { "no-delete", E_CAL_POPUP_SOURCE_NO_DELETE}, - - { NULL } -}; - -static const EPopupHookTargetMask ecalph_attachments_masks[] = { - { "one", E_CAL_POPUP_ATTACHMENTS_ONE }, - { "many", E_CAL_POPUP_ATTACHMENTS_MANY }, - { "modify", E_CAL_POPUP_ATTACHMENTS_MODIFY }, - { "multiple", E_CAL_POPUP_ATTACHMENTS_MULTIPLE }, - { "image", E_CAL_POPUP_ATTACHMENTS_IMAGE }, - { NULL } -}; - -static const EPopupHookTargetMap ecalph_targets[] = { - { "select", E_CAL_POPUP_TARGET_SELECT, ecalph_select_masks }, - { "source", E_CAL_POPUP_TARGET_SOURCE, ecalph_source_masks }, - { "attachments", E_CAL_POPUP_TARGET_ATTACHMENTS, ecalph_attachments_masks }, - { NULL } -}; - -static void -ecalph_finalise(GObject *o) -{ - /*EPluginHook *eph = (EPluginHook *)o;*/ - - ((GObjectClass *)ecalph_parent_class)->finalize(o); -} - -static void -ecalph_class_init(EPluginHookClass *klass) -{ - gint i; - - ((GObjectClass *)klass)->finalize = ecalph_finalise; - ((EPluginHookClass *)klass)->id = "org.gnome.evolution.calendar.popup:1.0"; - - for (i=0;ecalph_targets[i].type;i++) - e_popup_hook_class_add_target_map((EPopupHookClass *)klass, &ecalph_targets[i]); - - ((EPopupHookClass *)klass)->popup_class = g_type_class_ref(e_cal_popup_get_type()); -} - -GType -e_cal_popup_hook_get_type(void) -{ - static GType type = 0; - - if (!type) { - static const GTypeInfo info = { - sizeof(ECalPopupHookClass), NULL, NULL, (GClassInitFunc) ecalph_class_init, NULL, NULL, - sizeof(ECalPopupHook), 0, (GInstanceInitFunc) NULL, - }; - - ecalph_parent_class = g_type_class_ref(e_popup_hook_get_type()); - type = g_type_register_static(e_popup_hook_get_type(), "ECalPopupHook", &info, 0); - } - - return type; -} diff --git a/calendar/gui/e-cal-popup.h b/calendar/gui/e-cal-popup.h deleted file mode 100644 index 2cd20ebd9d..0000000000 --- a/calendar/gui/e-cal-popup.h +++ /dev/null @@ -1,214 +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: - * Michael Zucchi <notzed@ximian.com> - * - * Copyright (C) 1999-2008 Novell, Inc. (www.novell.com) - * - */ - -#ifndef __E_CAL_POPUP_H__ -#define __E_CAL_POPUP_H__ - -#include <glib-object.h> -#include <libedataserverui/e-source-selector.h> - -#include <e-util/e-popup.h> -#include "dialogs/comp-editor.h" -#include "e-cal-model.h" - -G_BEGIN_DECLS - -/** - * enum _e_cal_popup_target_t - A list of mail popup target types. - * - * @E_CAL_POPUP_TARGET_SELECT: A selection of cards - * @E_CAL_POPUP_TARGET_SOURCE: A source selection. - * - * Defines the value of the targetid for all ECalPopup target types. - **/ -enum _e_cal_popup_target_t { - E_CAL_POPUP_TARGET_SELECT, - E_CAL_POPUP_TARGET_SOURCE, - E_CAL_POPUP_TARGET_ATTACHMENTS -}; - -/** - * enum _e_cal_popup_target_select_t - ECalPopupTargetSelect qualifiers. - * - * @E_CAL_POPUP_SELECT_ONE: Only one item is selected. - * @E_CAL_POPUP_SELECT_MANY: More than one item selected. - * @E_CAL_POPUP_SELECT_ANY: One ore more items are selected. - * @E_CAL_POPUP_SELECT_EDITABLE: The selection is editable. - * @E_CAL_POPUP_SELECT_RECURRING: Is a recurring event. - * @E_CAL_POPUP_SELECT_NONRECURRING: Is not a recurring event. - * @E_CAL_POPUP_SELECT_INSTANCE: This is an instance event. - * @E_CAL_POPUP_SELECT_ORGANIZER: The user is the organiser of the event. - * @E_CAL_POPUP_SELECT_NOTEDITING: The event is not being edited already. Not implemented. - * @E_CAL_POPUP_SELECT_NOTMEETING: The event is not a meeting. - * @E_CAL_POPUP_SELECT_ASSIGNABLE: An assignable task. - * @E_CAL_POPUP_SELECT_HASURL: A task that contains a URL. - **/ -enum _e_cal_popup_target_select_t { - E_CAL_POPUP_SELECT_ONE = 1<<0, - E_CAL_POPUP_SELECT_MANY = 1<<1, - E_CAL_POPUP_SELECT_ANY = 1<<2, - E_CAL_POPUP_SELECT_EDITABLE = 1<<3, - E_CAL_POPUP_SELECT_RECURRING = 1<<4, - E_CAL_POPUP_SELECT_NONRECURRING = 1<<5, - E_CAL_POPUP_SELECT_INSTANCE = 1<<6, - - E_CAL_POPUP_SELECT_ORGANIZER = 1<<7, - E_CAL_POPUP_SELECT_NOTEDITING = 1<<8, - E_CAL_POPUP_SELECT_NOTMEETING = 1<<9, - - E_CAL_POPUP_SELECT_ASSIGNABLE = 1<<10, - E_CAL_POPUP_SELECT_HASURL = 1<<11, - E_CAL_POPUP_SELECT_MEETING = 1 <<12, - E_CAL_POPUP_SELECT_DELEGATABLE = 1<<13, - E_CAL_POPUP_SELECT_ACCEPTABLE = 1<<14, - E_CAL_POPUP_SELECT_NOTCOMPLETE = 1<<15, - E_CAL_POPUP_SELECT_NOSAVESCHEDULES = 1<<16, - E_CAL_POPUP_SELECT_COMPLETE = 1<<17 -}; - -/** - * enum _e_cal_popup_target_source_t - ECalPopupTargetSource qualifiers. - * - * @E_CAL_POPUP_SOURCE_PRIMARY: Has a primary selection. - * @E_CAL_POPUP_SOURCE_SYSTEM: Is a 'system' folder. - * - **/ -enum _e_cal_popup_target_source_t { - E_CAL_POPUP_SOURCE_PRIMARY = 1<<0, - E_CAL_POPUP_SOURCE_SYSTEM = 1<<1, /* system folder */ - E_CAL_POPUP_SOURCE_USER = 1<<2, /* user folder (!system) */ - E_CAL_POPUP_SOURCE_OFFLINE = 1 <<3, - E_CAL_POPUP_SOURCE_NO_OFFLINE = 1 <<4, - E_CAL_POPUP_SOURCE_DELETE = 1<<5, - E_CAL_POPUP_SOURCE_NO_DELETE = 1<<6 -}; - -/** - * enum _e_cal_popup_target_attachments_t - ECalPopupTargetAttachments qualifiers. - * - * @E_CAL_POPUP_ATTACHMENTS_ONE: There is one and only one attachment selected. - * @E_CAL_POPUP_ATTACHMENTS_MANY: There is one or more attachments selected. - * - **/ -enum _e_cal_popup_target_attachments_t { - E_CAL_POPUP_ATTACHMENTS_ONE = 1<<0, /* only 1 selected */ - E_CAL_POPUP_ATTACHMENTS_MANY = 1<<1, /* one or more selected */ - E_CAL_POPUP_ATTACHMENTS_MODIFY = 1<<2, /* check for modify operation */ - E_CAL_POPUP_ATTACHMENTS_MULTIPLE = 1<<3, - E_CAL_POPUP_ATTACHMENTS_IMAGE = 1<<4 -}; - -typedef struct _ECalPopupTargetSelect ECalPopupTargetSelect; -typedef struct _ECalPopupTargetSource ECalPopupTargetSource; -typedef struct _ECalPopupTargetAttachments ECalPopupTargetAttachments; - -/** - * struct _ECalPopupTargetSelect - A list of address cards. - * - * @target: Superclass. target.widget is an ECalendarView. - * @model: The ECalModel. - * @events: The selected events. These are ECalModelComponent's. - * - * Used to represent a selection of appointments as context for a popup - * menu. - * - * TODO: For maximum re-usability references to the view could be removed - * from this structure. - **/ -struct _ECalPopupTargetSelect { - EPopupTarget target; - - ECalModel *model; - GPtrArray *events; -}; - -/** - * struct _ECalPopupTargetSource - A source target. - * - * @target: Superclass. - * @selector: Selector holding the source selection. - * - * This target is used to represent a source selection. - **/ -struct _ECalPopupTargetSource { - EPopupTarget target; - - ESourceSelector *selector; -}; - -/** - * struct _ECalPopupTargetAttachments - A list of calendar attachments. - * - * @target: Superclass. - * @attachments: A GSList list of CalAttachments. - * - * This target is used to represent a selected list of attachments in - * the calendar attachment area. - **/ -struct _ECalPopupTargetAttachments { - EPopupTarget target; - GSList *attachments; -}; - -typedef struct _EPopupItem ECalPopupItem; - -typedef struct _ECalPopup ECalPopup; -typedef struct _ECalPopupClass ECalPopupClass; -typedef struct _ECalPopupPrivate ECalPopupPrivate; - -/* The object */ -struct _ECalPopup { - EPopup popup; - - ECalPopupPrivate *priv; -}; - -struct _ECalPopupClass { - EPopupClass popup_class; -}; - -GType e_cal_popup_get_type(void); - -ECalPopup *e_cal_popup_new(const gchar *menuid); - -ECalPopupTargetSelect *e_cal_popup_target_new_select(ECalPopup *eabp, ECalModel *model, GPtrArray *events); -ECalPopupTargetSource *e_cal_popup_target_new_source(ECalPopup *eabp, ESourceSelector *selector); - -/* ********************************************************************** */ - -typedef struct _ECalPopupHook ECalPopupHook; -typedef struct _ECalPopupHookClass ECalPopupHookClass; - -struct _ECalPopupHook { - EPopupHook hook; -}; - -struct _ECalPopupHookClass { - EPopupHookClass hook_class; -}; - -GType e_cal_popup_hook_get_type(void); - -G_END_DECLS - -#endif /* __E_CAL_POPUP_H__ */ diff --git a/configure.ac b/configure.ac index d78715cb90..41ea74d6a9 100644 --- a/configure.ac +++ b/configure.ac @@ -1814,7 +1814,7 @@ plugins_experimental="$plugins_experimental_always $IPOD_SYNC $TNEF_ATTACHMENTS all_plugins_experimental="$plugins_experimental_always ipod-sync tnef-attachments" dnl Temporary KILL-BONOBO hack -enable_plugins="attachment-reminder addressbook-file audio-inline backup-restore bbdb bogo-junk-plugin caldav calendar-file calendar-http calendar-weather default-mailer default-source email-custom-header external-editor face google-account-setup hula-account-setup imap-features itip-formatter mail-notification mail-to-task mark-all-read plugin-manager prefer-plain profiler pst-import sa-junk-plugin save-calendar startup-wizard subject-thread templates $TNEF_ATTACHMENTS vcard-inline webdav-account-setup" +enable_plugins="attachment-reminder addressbook-file audio-inline backup-restore bbdb bogo-junk-plugin caldav calendar-file calendar-http calendar-weather default-mailer default-source email-custom-header external-editor face google-account-setup hula-account-setup imap-features itip-formatter mail-notification mail-to-task mark-all-read plugin-manager prefer-plain profiler pst-import sa-junk-plugin startup-wizard subject-thread templates $TNEF_ATTACHMENTS vcard-inline webdav-account-setup" dnl PLUGINS NOT BUILDING YET dnl ------------------------ @@ -1825,6 +1825,7 @@ dnl mailing-list-actions dnl mono dnl publish-calendar dnl python +dnl save-calendar case x"$enable_plugins" in xno) |