Get the calendar-weather plugin working.

This commit is contained in:
Matthew Barnes
2009-08-11 23:19:03 -04:00
parent 5e31896863
commit e68456f60f
7 changed files with 26 additions and 33 deletions

View File

@ -43,8 +43,8 @@ static void
ece_target_free (EEvent *ev, EEventTarget *t)
{
switch (t->type) {
case E_CAL_EVENT_TARGET_MODULE: {
ECalEventTargetModule *s = (ECalEventTargetModule *) t;
case E_CAL_EVENT_TARGET_BACKEND: {
ECalEventTargetBackend *s = (ECalEventTargetBackend *) t;
if (s->shell_backend)
g_object_unref (s->shell_backend);
if (s->source_list)
@ -94,10 +94,10 @@ e_cal_event_peek (void)
return e_cal_event;
}
ECalEventTargetModule *
ECalEventTargetBackend *
e_cal_event_target_new_module (ECalEvent *ece, EShellBackend *shell_backend, ESourceList *source_list, guint32 flags)
{
ECalEventTargetModule *t = e_event_target_new (&ece->event, E_CAL_EVENT_TARGET_MODULE, sizeof (*t));
ECalEventTargetBackend *t = e_event_target_new (&ece->event, E_CAL_EVENT_TARGET_BACKEND, sizeof (*t));
t->shell_backend = g_object_ref (shell_backend);
t->source_list = g_object_ref (source_list);
@ -116,7 +116,7 @@ static const EEventHookTargetMask eceh_module_masks[] = {
};
static const EEventHookTargetMap eceh_targets[] = {
{ "module", E_CAL_EVENT_TARGET_MODULE, eceh_module_masks },
{ "module", E_CAL_EVENT_TARGET_BACKEND, eceh_module_masks },
{ NULL },
};

View File

@ -36,17 +36,17 @@ typedef struct _ECalEvent ECalEvent;
typedef struct _ECalEventClass ECalEventClass;
enum _e_cal_event_target_t {
E_CAL_EVENT_TARGET_MODULE,
E_CAL_EVENT_TARGET_BACKEND,
};
/* Flags that describe TARGET_MODULE */
/* Flags that describe TARGET_BACKEND */
enum {
E_CAL_EVENT_MODULE_MIGRATION = 1 << 0,
};
typedef struct _ECalEventTargetModule ECalEventTargetModule;
typedef struct _ECalEventTargetBackend ECalEventTargetBackend;
struct _ECalEventTargetModule {
struct _ECalEventTargetBackend {
EEventTarget target;
EShellBackend *shell_backend;
ESourceList *source_list;
@ -64,7 +64,7 @@ struct _ECalEventClass {
GType e_cal_event_get_type (void);
ECalEvent* e_cal_event_peek (void);
ECalEventTargetModule* e_cal_event_target_new_module (ECalEvent *ece, EShellBackend *shell_backend, ESourceList *source_list, guint32 flags);
ECalEventTargetBackend* e_cal_event_target_new_module (ECalEvent *ece, EShellBackend *shell_backend, ESourceList *source_list, guint32 flags);
/* ********************************************************************** */

View File

@ -1735,12 +1735,11 @@ 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 bbdb bogo-junk-plugin caldav calendar-file calendar-http default-mailer default-source email-custom-header external-editor face google-account-setup hula-account-setup imap-features 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 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 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"
dnl PLUGINS NOT BUILDING YET
dnl ------------------------
dnl backup-restore
dnl calendar-weather
dnl exchange-operations
dnl groupwise-features
dnl ipod-sync

View File

@ -623,7 +623,7 @@ e_cal_shell_backend_migrate (EShellBackend *shell_backend,
ESource *personal_source = NULL;
ESourceList *source_list;
ECalEvent *ece;
ECalEventTargetModule *target;
ECalEventTargetBackend *target;
gboolean retval = FALSE;
source_list = g_object_get_data (

View File

@ -1,12 +1,12 @@
eds_datadir = `pkg-config --variable=privdatadir evolution-data-server-1.2`
AM_CPPFLAGS = \
-I$(top_srcdir) \
-I$(top_builddir)/shell \
$(EVOLUTION_CALENDAR_CFLAGS) \
$(SOURCE_SEL_CFLAGS) \
-DWEATHER_DATADIR=\""$(weatherdatadir)"\" \
-DWEATHER_EDS_DATADIR=\""$(eds_datadir)/weather"\" \
AM_CPPFLAGS = \
-I$(top_srcdir) \
-I$(top_srcdir)/widgets \
$(EVOLUTION_CALENDAR_CFLAGS) \
$(SOURCE_SEL_CFLAGS) \
-DWEATHER_DATADIR=\""$(weatherdatadir)"\" \
-DWEATHER_EDS_DATADIR=\""$(eds_datadir)/weather"\" \
$(LIBGWEATHER_CFLAGS)
@EVO_PLUGIN_RULE@

View File

@ -24,7 +24,6 @@
#include "e-util/e-icon-factory.h"
#include <calendar/gui/e-cal-config.h>
#include <calendar/gui/e-cal-event.h>
#include <calendar/gui/calendar-component.h>
#include <libedataserver/e-source.h>
#include <libedataserver/e-url.h>
#include <libedataserver/e-categories.h>
@ -42,7 +41,7 @@ GtkWidget *e_calendar_weather_location (EPlugin *epl, EConfigHookItemFactoryData
GtkWidget *e_calendar_weather_refresh (EPlugin *epl, EConfigHookItemFactoryData *data);
GtkWidget *e_calendar_weather_units (EPlugin *epl, EConfigHookItemFactoryData *data);
gboolean e_calendar_weather_check (EPlugin *epl, EConfigHookPageCheckData *data);
void e_calendar_weather_migrate (EPlugin *epl, ECalEventTargetComponent *data);
void e_calendar_weather_migrate (EPlugin *epl, ECalEventTargetBackend *data);
gint e_plugin_lib_enable (EPluginLib *epl, gint enable);
#define WEATHER_BASE_URI "weather://"
@ -93,21 +92,16 @@ exit:
}
void
e_calendar_weather_migrate (EPlugin *epl, ECalEventTargetComponent *data)
e_calendar_weather_migrate (EPlugin *epl, ECalEventTargetBackend *data)
{
/* Perform a migration step here. This allows us to keep the weather calendar completely
* separate from evolution. If the plugin isn't built, the weather source group won't
* show up in the user's evolution. If it is, this will create it if it doesn't exist */
CalendarComponent *component;
ESourceList *source_list;
ESourceGroup *group;
GSList *groups;
ESourceGroup *weather = NULL;
component = data->component;
source_list = calendar_component_peek_source_list (component);
groups = e_source_list_peek_groups (source_list);
groups = e_source_list_peek_groups (data->source_list);
if (groups) {
/* groups are already there, we need to search */
GSList *g;
@ -121,7 +115,7 @@ e_calendar_weather_migrate (EPlugin *epl, ECalEventTargetComponent *data)
if (!weather) {
group = e_source_group_new (_("Weather"), WEATHER_BASE_URI);
e_source_list_add_group (source_list, group, -1);
e_source_list_add_group (data->source_list, group, -1);
weather = group;
}
@ -129,7 +123,7 @@ e_calendar_weather_migrate (EPlugin *epl, ECalEventTargetComponent *data)
if (weather)
g_object_unref (weather);
e_source_list_sync (source_list, NULL);
e_source_list_sync (data->source_list, NULL);
}
static void

View File

@ -62,7 +62,7 @@
/* prototypes */
gint e_plugin_lib_enable (EPluginLib *ep, gint enable);
GtkWidget *plugin_google (EPlugin *epl, EConfigHookItemFactoryData *data);
void e_calendar_google_migrate (EPlugin *epl, ECalEventTargetModule *data);
void e_calendar_google_migrate (EPlugin *epl, ECalEventTargetBackend *data);
/*****************************************************************************/
/* plugin intialization */
@ -784,7 +784,7 @@ plugin_google (EPlugin *epl,
}
void
e_calendar_google_migrate (EPlugin *epl, ECalEventTargetModule *data)
e_calendar_google_migrate (EPlugin *epl, ECalEventTargetBackend *data)
{
ESourceList *source_list;
ESourceGroup *google = NULL;