|
Packit |
4b6dd7 |
/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
|
|
Packit |
4b6dd7 |
/*
|
|
Packit |
4b6dd7 |
* GData Client
|
|
Packit |
4b6dd7 |
* Copyright (C) Philip Withnall 2009, 2010, 2014, 2015 <philip@tecnocode.co.uk>
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* GData Client is free software; you can redistribute it and/or
|
|
Packit |
4b6dd7 |
* modify it under the terms of the GNU Lesser General Public
|
|
Packit |
4b6dd7 |
* License as published by the Free Software Foundation; either
|
|
Packit |
4b6dd7 |
* version 2.1 of the License, or (at your option) any later version.
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* GData Client is distributed in the hope that it will be useful,
|
|
Packit |
4b6dd7 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Packit |
4b6dd7 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Packit |
4b6dd7 |
* Lesser General Public License for more details.
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* You should have received a copy of the GNU Lesser General Public
|
|
Packit |
4b6dd7 |
* License along with GData Client. If not, see <http://www.gnu.org/licenses/>.
|
|
Packit |
4b6dd7 |
*/
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/**
|
|
Packit |
4b6dd7 |
* SECTION:gdata-calendar-calendar
|
|
Packit |
4b6dd7 |
* @short_description: GData Calendar calendar object
|
|
Packit |
4b6dd7 |
* @stability: Stable
|
|
Packit |
4b6dd7 |
* @include: gdata/services/calendar/gdata-calendar-calendar.h
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* #GDataCalendarCalendar is a subclass of #GDataEntry to represent a calendar from Google Calendar.
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* #GDataCalendarCalendar implements #GDataAccessHandler, meaning the access rules to it can be modified using that interface. As well as the
|
|
Packit |
4b6dd7 |
* access roles defined for the base #GDataAccessRule (e.g. %GDATA_ACCESS_ROLE_NONE), #GDataCalendarCalendar has its own, such as
|
|
Packit |
4b6dd7 |
* %GDATA_CALENDAR_ACCESS_ROLE_EDITOR and %GDATA_CALENDAR_ACCESS_ROLE_FREE_BUSY.
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* For more details of Google Calendar's GData API, see the <ulink type="http" url="https://developers.google.com/google-apps/calendar/v3/reference/">
|
|
Packit |
4b6dd7 |
* online documentation</ulink>.
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* <example>
|
|
Packit |
4b6dd7 |
* <title>Listing Calendars</title>
|
|
Packit |
4b6dd7 |
* <programlisting>
|
|
Packit |
4b6dd7 |
* GDataCalendarService *service;
|
|
Packit |
4b6dd7 |
* GDataFeed *feed;
|
|
Packit |
4b6dd7 |
* GList *i;
|
|
Packit |
4b6dd7 |
* GError *error = NULL;
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* /* Create a service */
|
|
Packit |
4b6dd7 |
* service = create_calendar_service ();
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* /* Query for all of the calendars the currently authenticated user has access to, including those which they have read-only
|
|
Packit |
4b6dd7 |
* * access to. */
|
|
Packit |
4b6dd7 |
* feed = gdata_calendar_service_query_all_calendars (service, NULL, NULL, NULL, NULL, &error);
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* g_object_unref (service);
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* if (error != NULL) {
|
|
Packit |
4b6dd7 |
* g_error ("Error querying for calendars: %s", error->message);
|
|
Packit |
4b6dd7 |
* g_error_free (error);
|
|
Packit |
4b6dd7 |
* return;
|
|
Packit |
4b6dd7 |
* }
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* /* Iterate through the returned calendars and do something with them */
|
|
Packit |
4b6dd7 |
* for (i = gdata_feed_get_entries (feed); i != NULL; i = i->next) {
|
|
Packit |
4b6dd7 |
* const gchar *access_level;
|
|
Packit |
4b6dd7 |
* gboolean has_write_access;
|
|
Packit |
4b6dd7 |
* GDataCalendarCalendar *calendar = GDATA_CALENDAR_CALENDAR (i->data);
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* /* Determine whether we have write access to the calendar, or just read-only or free/busy access. Note that the access levels
|
|
Packit |
4b6dd7 |
* * are more detailed than this; see the documentation for gdata_calendar_calendar_get_access_level() for more information. */
|
|
Packit |
4b6dd7 |
* access_level = gdata_calendar_calendar_get_access_level (calendar);
|
|
Packit |
4b6dd7 |
* has_write_access = (access_level != NULL && strcmp (access_level, GDATA_CALENDAR_ACCESS_ROLE_EDITOR) == 0) ? TRUE : FALSE;
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* /* Do something with the calendar here, such as insert it into a UI */
|
|
Packit |
4b6dd7 |
* }
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* g_object_unref (feed);
|
|
Packit |
4b6dd7 |
* </programlisting>
|
|
Packit |
4b6dd7 |
* </example>
|
|
Packit |
4b6dd7 |
*/
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
#include <config.h>
|
|
Packit |
4b6dd7 |
#include <glib.h>
|
|
Packit |
4b6dd7 |
#include <glib/gi18n-lib.h>
|
|
Packit |
4b6dd7 |
#include <string.h>
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
#include "gdata-calendar-calendar.h"
|
|
Packit |
4b6dd7 |
#include "gdata-private.h"
|
|
Packit |
4b6dd7 |
#include "gdata-service.h"
|
|
Packit |
4b6dd7 |
#include "gdata-parser.h"
|
|
Packit |
4b6dd7 |
#include "gdata-types.h"
|
|
Packit |
4b6dd7 |
#include "gdata-access-handler.h"
|
|
Packit |
4b6dd7 |
#include "gdata-calendar-service.h"
|
|
Packit |
4b6dd7 |
#include "gdata-calendar-access-rule.h"
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
static void gdata_calendar_calendar_access_handler_init (GDataAccessHandlerIface *iface);
|
|
Packit |
4b6dd7 |
static void gdata_calendar_calendar_finalize (GObject *object);
|
|
Packit |
4b6dd7 |
static void gdata_calendar_calendar_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec);
|
|
Packit |
4b6dd7 |
static void gdata_calendar_calendar_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec);
|
|
Packit |
4b6dd7 |
static void get_json (GDataParsable *parsable, JsonBuilder *builder);
|
|
Packit |
4b6dd7 |
static gboolean parse_json (GDataParsable *parsable, JsonReader *reader, gpointer user_data, GError **error);
|
|
Packit |
4b6dd7 |
static const gchar *get_content_type (void);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
struct _GDataCalendarCalendarPrivate {
|
|
Packit |
4b6dd7 |
gchar *timezone;
|
|
Packit |
4b6dd7 |
gboolean is_hidden;
|
|
Packit |
4b6dd7 |
GDataColor colour;
|
|
Packit |
4b6dd7 |
gboolean is_selected;
|
|
Packit |
4b6dd7 |
gchar *access_level;
|
|
Packit |
4b6dd7 |
};
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
enum {
|
|
Packit |
4b6dd7 |
PROP_TIMEZONE = 1,
|
|
Packit |
4b6dd7 |
PROP_TIMES_CLEANED,
|
|
Packit |
4b6dd7 |
PROP_IS_HIDDEN,
|
|
Packit |
4b6dd7 |
PROP_COLOR,
|
|
Packit |
4b6dd7 |
PROP_IS_SELECTED,
|
|
Packit |
4b6dd7 |
PROP_ACCESS_LEVEL,
|
|
Packit |
4b6dd7 |
PROP_EDITED,
|
|
Packit |
4b6dd7 |
PROP_ETAG,
|
|
Packit |
4b6dd7 |
};
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
G_DEFINE_TYPE_WITH_CODE (GDataCalendarCalendar, gdata_calendar_calendar, GDATA_TYPE_ENTRY,
|
|
Packit |
4b6dd7 |
G_IMPLEMENT_INTERFACE (GDATA_TYPE_ACCESS_HANDLER, gdata_calendar_calendar_access_handler_init))
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
static void
|
|
Packit |
4b6dd7 |
gdata_calendar_calendar_class_init (GDataCalendarCalendarClass *klass)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
|
|
Packit |
4b6dd7 |
GDataParsableClass *parsable_class = GDATA_PARSABLE_CLASS (klass);
|
|
Packit |
4b6dd7 |
GDataEntryClass *entry_class = GDATA_ENTRY_CLASS (klass);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_type_class_add_private (klass, sizeof (GDataCalendarCalendarPrivate));
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
gobject_class->set_property = gdata_calendar_calendar_set_property;
|
|
Packit |
4b6dd7 |
gobject_class->get_property = gdata_calendar_calendar_get_property;
|
|
Packit |
4b6dd7 |
gobject_class->finalize = gdata_calendar_calendar_finalize;
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
parsable_class->parse_json = parse_json;
|
|
Packit |
4b6dd7 |
parsable_class->get_json = get_json;
|
|
Packit |
4b6dd7 |
parsable_class->get_content_type = get_content_type;
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
entry_class->kind_term = "calendar#calendarListEntry";
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/**
|
|
Packit |
4b6dd7 |
* GDataCalendarCalendar:timezone:
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* The timezone in which the calendar's times are given. This is a timezone name in tz database notation:
|
|
Packit |
4b6dd7 |
* url="http://en.wikipedia.org/wiki/Tz_database#Names_of_time_zones">reference</ulink>.
|
|
Packit |
4b6dd7 |
*/
|
|
Packit |
4b6dd7 |
g_object_class_install_property (gobject_class, PROP_TIMEZONE,
|
|
Packit |
4b6dd7 |
g_param_spec_string ("timezone",
|
|
Packit |
4b6dd7 |
"Timezone", "The timezone in which the calendar's times are given.",
|
|
Packit |
4b6dd7 |
NULL,
|
|
Packit |
4b6dd7 |
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/**
|
|
Packit |
4b6dd7 |
* GDataCalendarCalendar:times-cleaned:
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* The number of times the calendar has been cleared of events.
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* Deprecated: 0.17.2: Unsupported by the online API any more. There
|
|
Packit |
4b6dd7 |
* is no replacement; this will always return
|
|
Packit |
4b6dd7 |
* 0 .
|
|
Packit |
4b6dd7 |
*/
|
|
Packit |
4b6dd7 |
g_object_class_install_property (gobject_class, PROP_TIMES_CLEANED,
|
|
Packit |
4b6dd7 |
g_param_spec_uint ("times-cleaned",
|
|
Packit |
4b6dd7 |
"Times cleaned", "The number of times the calendar has been cleared of events.",
|
|
Packit |
4b6dd7 |
0, G_MAXUINT, 0,
|
|
Packit |
4b6dd7 |
G_PARAM_DEPRECATED |
|
|
Packit |
4b6dd7 |
G_PARAM_READABLE |
|
|
Packit |
4b6dd7 |
G_PARAM_STATIC_STRINGS));
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/**
|
|
Packit |
4b6dd7 |
* GDataCalendarCalendar:is-hidden:
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* Indicates whether the calendar is visible.
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* Since: 0.2.0
|
|
Packit |
4b6dd7 |
*/
|
|
Packit |
4b6dd7 |
g_object_class_install_property (gobject_class, PROP_IS_HIDDEN,
|
|
Packit |
4b6dd7 |
g_param_spec_boolean ("is-hidden",
|
|
Packit |
4b6dd7 |
"Hidden?", "Indicates whether the calendar is visible.",
|
|
Packit |
4b6dd7 |
FALSE,
|
|
Packit |
4b6dd7 |
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/**
|
|
Packit |
4b6dd7 |
* GDataCalendarCalendar:color:
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* The background color used to highlight the calendar in the user’s
|
|
Packit |
4b6dd7 |
* browser. This used to be restricted to a limited set of colours, but
|
|
Packit |
4b6dd7 |
* since 0.17.2 may be any RGB colour.
|
|
Packit |
4b6dd7 |
*/
|
|
Packit |
4b6dd7 |
g_object_class_install_property (gobject_class, PROP_COLOR,
|
|
Packit |
4b6dd7 |
g_param_spec_boxed ("color",
|
|
Packit |
4b6dd7 |
"Color", "The background color used to highlight the calendar in the user's browser.",
|
|
Packit |
4b6dd7 |
GDATA_TYPE_COLOR,
|
|
Packit |
4b6dd7 |
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/**
|
|
Packit |
4b6dd7 |
* GDataCalendarCalendar:is-selected:
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* Indicates whether the calendar is selected.
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* Since: 0.2.0
|
|
Packit |
4b6dd7 |
*/
|
|
Packit |
4b6dd7 |
g_object_class_install_property (gobject_class, PROP_IS_SELECTED,
|
|
Packit |
4b6dd7 |
g_param_spec_boolean ("is-selected",
|
|
Packit |
4b6dd7 |
"Selected?", "Indicates whether the calendar is selected.",
|
|
Packit |
4b6dd7 |
FALSE,
|
|
Packit |
4b6dd7 |
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/**
|
|
Packit |
4b6dd7 |
* GDataCalendarCalendar:access-level:
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* Indicates the access level the current user has to the calendar. For example: %GDATA_CALENDAR_ACCESS_ROLE_READ or
|
|
Packit |
4b6dd7 |
* %GDATA_CALENDAR_ACCESS_ROLE_FREE_BUSY. The "current user" is the one authenticated against the service's #GDataService:authorizer,
|
|
Packit |
4b6dd7 |
* or the guest user.
|
|
Packit |
4b6dd7 |
*/
|
|
Packit |
4b6dd7 |
g_object_class_install_property (gobject_class, PROP_ACCESS_LEVEL,
|
|
Packit |
4b6dd7 |
g_param_spec_string ("access-level",
|
|
Packit |
4b6dd7 |
"Access level", "Indicates the access level the current user has to the calendar.",
|
|
Packit |
4b6dd7 |
NULL,
|
|
Packit |
4b6dd7 |
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/**
|
|
Packit |
4b6dd7 |
* GDataCalendarCalendar:edited:
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* The last time the calendar was edited. If the calendar has not been edited yet, the content indicates the time it was created.
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* For more information, see the <ulink type="http" url="http://www.atomenabled.org/developers/protocol/#appEdited">
|
|
Packit |
4b6dd7 |
* Atom Publishing Protocol specification</ulink>.
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* Deprecated: 0.17.2: Unsupported by the online API any more. There
|
|
Packit |
4b6dd7 |
* is no replacement; this will always return -1.
|
|
Packit |
4b6dd7 |
*/
|
|
Packit |
4b6dd7 |
g_object_class_install_property (gobject_class, PROP_EDITED,
|
|
Packit |
4b6dd7 |
g_param_spec_int64 ("edited",
|
|
Packit |
4b6dd7 |
"Edited", "The last time the calendar was edited.",
|
|
Packit |
4b6dd7 |
-1, G_MAXINT64, -1,
|
|
Packit |
4b6dd7 |
G_PARAM_DEPRECATED |
|
|
Packit |
4b6dd7 |
G_PARAM_READABLE |
|
|
Packit |
4b6dd7 |
G_PARAM_STATIC_STRINGS));
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Override the ETag property since ETags don't seem to be supported for calendars. */
|
|
Packit |
4b6dd7 |
g_object_class_override_property (gobject_class, PROP_ETAG, "etag");
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
static gboolean
|
|
Packit |
4b6dd7 |
is_owner_rule (GDataAccessRule *rule)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
return (strcmp (gdata_access_rule_get_role (rule), GDATA_CALENDAR_ACCESS_ROLE_OWNER) == 0) ? TRUE : FALSE;
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
static GDataAuthorizationDomain *
|
|
Packit |
4b6dd7 |
get_authorization_domain (GDataAccessHandler *self)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
return gdata_calendar_service_get_primary_authorization_domain ();
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
static GDataFeed *
|
|
Packit |
4b6dd7 |
get_rules (GDataAccessHandler *self,
|
|
Packit |
4b6dd7 |
GDataService *service,
|
|
Packit |
4b6dd7 |
GCancellable *cancellable,
|
|
Packit |
4b6dd7 |
GDataQueryProgressCallback progress_callback,
|
|
Packit |
4b6dd7 |
gpointer progress_user_data,
|
|
Packit |
4b6dd7 |
GError **error)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
GDataAccessHandlerIface *iface;
|
|
Packit |
4b6dd7 |
GDataAuthorizationDomain *domain = NULL;
|
|
Packit |
4b6dd7 |
GDataFeed *feed;
|
|
Packit |
4b6dd7 |
GDataLink *_link;
|
|
Packit |
4b6dd7 |
SoupMessage *message;
|
|
Packit |
4b6dd7 |
GList/*<unowned GDataCalendarAccessRule>*/ *rules, *i;
|
|
Packit |
4b6dd7 |
const gchar *calendar_id;
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
_link = gdata_entry_look_up_link (GDATA_ENTRY (self),
|
|
Packit |
4b6dd7 |
GDATA_LINK_ACCESS_CONTROL_LIST);
|
|
Packit |
4b6dd7 |
g_assert (_link != NULL);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
iface = GDATA_ACCESS_HANDLER_GET_IFACE (self);
|
|
Packit |
4b6dd7 |
if (iface->get_authorization_domain != NULL) {
|
|
Packit |
4b6dd7 |
domain = iface->get_authorization_domain (self);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
message = _gdata_service_query (service, domain,
|
|
Packit |
4b6dd7 |
gdata_link_get_uri (_link), NULL,
|
|
Packit |
4b6dd7 |
cancellable, error);
|
|
Packit |
4b6dd7 |
if (message == NULL) {
|
|
Packit |
4b6dd7 |
return NULL;
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_assert (message->response_body->data != NULL);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
feed = _gdata_feed_new_from_json (GDATA_TYPE_FEED,
|
|
Packit |
4b6dd7 |
message->response_body->data,
|
|
Packit |
4b6dd7 |
message->response_body->length,
|
|
Packit |
4b6dd7 |
GDATA_TYPE_CALENDAR_ACCESS_RULE,
|
|
Packit |
4b6dd7 |
progress_callback, progress_user_data,
|
|
Packit |
4b6dd7 |
error);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Set the self link on all the ACL rules so they can be deleted.
|
|
Packit |
4b6dd7 |
* Sigh. */
|
|
Packit |
4b6dd7 |
rules = gdata_feed_get_entries (feed);
|
|
Packit |
4b6dd7 |
calendar_id = gdata_entry_get_id (GDATA_ENTRY (self));
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
for (i = rules; i != NULL; i = i->next) {
|
|
Packit |
4b6dd7 |
const gchar *id;
|
|
Packit |
4b6dd7 |
gchar *uri = NULL; /* owned */
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Set the self link, which is needed for
|
|
Packit |
4b6dd7 |
* gdata_service_delete_entry(). Unfortunately, it needs the
|
|
Packit |
4b6dd7 |
* ACL ID _and_ the calendar ID. */
|
|
Packit |
4b6dd7 |
id = gdata_entry_get_id (GDATA_ENTRY (i->data));
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
if (id == NULL || calendar_id == NULL) {
|
|
Packit |
4b6dd7 |
continue;
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
uri = g_strconcat ("https://www.googleapis.com"
|
|
Packit |
4b6dd7 |
"/calendar/v3/calendars/",
|
|
Packit |
4b6dd7 |
calendar_id, "/acl/", id, NULL);
|
|
Packit |
4b6dd7 |
_link = gdata_link_new (uri, GDATA_LINK_SELF);
|
|
Packit |
4b6dd7 |
gdata_entry_add_link (GDATA_ENTRY (i->data), _link);
|
|
Packit |
4b6dd7 |
g_object_unref (_link);
|
|
Packit |
4b6dd7 |
g_free (uri);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_object_unref (message);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
return feed;
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
static void
|
|
Packit |
4b6dd7 |
gdata_calendar_calendar_access_handler_init (GDataAccessHandlerIface *iface)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
iface->is_owner_rule = is_owner_rule;
|
|
Packit |
4b6dd7 |
iface->get_authorization_domain = get_authorization_domain;
|
|
Packit |
4b6dd7 |
iface->get_rules = get_rules;
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
static void
|
|
Packit |
4b6dd7 |
gdata_calendar_calendar_init (GDataCalendarCalendar *self)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, GDATA_TYPE_CALENDAR_CALENDAR, GDataCalendarCalendarPrivate);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
static void
|
|
Packit |
4b6dd7 |
gdata_calendar_calendar_finalize (GObject *object)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
GDataCalendarCalendarPrivate *priv = GDATA_CALENDAR_CALENDAR (object)->priv;
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_free (priv->timezone);
|
|
Packit |
4b6dd7 |
g_free (priv->access_level);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Chain up to the parent class */
|
|
Packit |
4b6dd7 |
G_OBJECT_CLASS (gdata_calendar_calendar_parent_class)->finalize (object);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
static void
|
|
Packit |
4b6dd7 |
gdata_calendar_calendar_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
GDataCalendarCalendar *self = GDATA_CALENDAR_CALENDAR (object);
|
|
Packit |
4b6dd7 |
GDataCalendarCalendarPrivate *priv = self->priv;
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
switch (property_id) {
|
|
Packit |
4b6dd7 |
case PROP_TIMEZONE:
|
|
Packit |
4b6dd7 |
g_value_set_string (value, priv->timezone);
|
|
Packit |
4b6dd7 |
break;
|
|
Packit |
4b6dd7 |
case PROP_TIMES_CLEANED:
|
|
Packit |
4b6dd7 |
G_GNUC_BEGIN_IGNORE_DEPRECATIONS
|
|
Packit |
4b6dd7 |
g_value_set_uint (value, gdata_calendar_calendar_get_times_cleaned (self));
|
|
Packit |
4b6dd7 |
G_GNUC_END_IGNORE_DEPRECATIONS
|
|
Packit |
4b6dd7 |
break;
|
|
Packit |
4b6dd7 |
case PROP_IS_HIDDEN:
|
|
Packit |
4b6dd7 |
g_value_set_boolean (value, priv->is_hidden);
|
|
Packit |
4b6dd7 |
break;
|
|
Packit |
4b6dd7 |
case PROP_COLOR:
|
|
Packit |
4b6dd7 |
g_value_set_boxed (value, &(priv->colour));
|
|
Packit |
4b6dd7 |
break;
|
|
Packit |
4b6dd7 |
case PROP_IS_SELECTED:
|
|
Packit |
4b6dd7 |
g_value_set_boolean (value, priv->is_selected);
|
|
Packit |
4b6dd7 |
break;
|
|
Packit |
4b6dd7 |
case PROP_ACCESS_LEVEL:
|
|
Packit |
4b6dd7 |
g_value_set_string (value, priv->access_level);
|
|
Packit |
4b6dd7 |
break;
|
|
Packit |
4b6dd7 |
case PROP_EDITED:
|
|
Packit |
4b6dd7 |
G_GNUC_BEGIN_IGNORE_DEPRECATIONS
|
|
Packit |
4b6dd7 |
g_value_set_int64 (value,
|
|
Packit |
4b6dd7 |
gdata_calendar_calendar_get_edited (self));
|
|
Packit |
4b6dd7 |
G_GNUC_END_IGNORE_DEPRECATIONS
|
|
Packit |
4b6dd7 |
break;
|
|
Packit |
4b6dd7 |
case PROP_ETAG:
|
|
Packit |
4b6dd7 |
/* Never return an ETag */
|
|
Packit |
4b6dd7 |
g_value_set_string (value, NULL);
|
|
Packit |
4b6dd7 |
break;
|
|
Packit |
4b6dd7 |
default:
|
|
Packit |
4b6dd7 |
/* We don't have any other property... */
|
|
Packit |
4b6dd7 |
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
|
|
Packit |
4b6dd7 |
break;
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
static void
|
|
Packit |
4b6dd7 |
gdata_calendar_calendar_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
GDataCalendarCalendar *self = GDATA_CALENDAR_CALENDAR (object);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
switch (property_id) {
|
|
Packit |
4b6dd7 |
case PROP_TIMEZONE:
|
|
Packit |
4b6dd7 |
gdata_calendar_calendar_set_timezone (self, g_value_get_string (value));
|
|
Packit |
4b6dd7 |
break;
|
|
Packit |
4b6dd7 |
case PROP_IS_HIDDEN:
|
|
Packit |
4b6dd7 |
gdata_calendar_calendar_set_is_hidden (self, g_value_get_boolean (value));
|
|
Packit |
4b6dd7 |
break;
|
|
Packit |
4b6dd7 |
case PROP_COLOR:
|
|
Packit |
4b6dd7 |
gdata_calendar_calendar_set_color (self, g_value_get_boxed (value));
|
|
Packit |
4b6dd7 |
break;
|
|
Packit |
4b6dd7 |
case PROP_IS_SELECTED:
|
|
Packit |
4b6dd7 |
gdata_calendar_calendar_set_is_selected (self, g_value_get_boolean (value));
|
|
Packit |
4b6dd7 |
break;
|
|
Packit |
4b6dd7 |
case PROP_ETAG:
|
|
Packit |
4b6dd7 |
/* Never set an ETag (note that this doesn't stop it being set in GDataEntry due to XML parsing) */
|
|
Packit |
4b6dd7 |
break;
|
|
Packit |
4b6dd7 |
default:
|
|
Packit |
4b6dd7 |
/* We don't have any other property... */
|
|
Packit |
4b6dd7 |
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
|
|
Packit |
4b6dd7 |
break;
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
static gboolean
|
|
Packit |
4b6dd7 |
parse_json (GDataParsable *parsable, JsonReader *reader, gpointer user_data, GError **error)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
gboolean success;
|
|
Packit |
4b6dd7 |
GDataCalendarCalendar *self = GDATA_CALENDAR_CALENDAR (parsable);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* FIXME: Unimplemented:
|
|
Packit |
4b6dd7 |
* - location
|
|
Packit |
4b6dd7 |
* - summaryOverride
|
|
Packit |
4b6dd7 |
* - colorId
|
|
Packit |
4b6dd7 |
* - foregroundColor
|
|
Packit |
4b6dd7 |
* - defaultReminders
|
|
Packit |
4b6dd7 |
* - notificationSettings
|
|
Packit |
4b6dd7 |
* - primary
|
|
Packit |
4b6dd7 |
* - deleted
|
|
Packit |
4b6dd7 |
*/
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
if (gdata_parser_string_from_json_member (reader, "timeZone", P_DEFAULT, &self->priv->timezone, &success, error) ||
|
|
Packit |
4b6dd7 |
gdata_parser_color_from_json_member (reader, "backgroundColor", P_DEFAULT, &self->priv->colour, &success, error) ||
|
|
Packit |
4b6dd7 |
gdata_parser_boolean_from_json_member (reader, "hidden", P_DEFAULT, &self->priv->is_hidden, &success, error) ||
|
|
Packit |
4b6dd7 |
gdata_parser_boolean_from_json_member (reader, "selected", P_DEFAULT, &self->priv->is_selected, &success, error)) {
|
|
Packit |
4b6dd7 |
return success;
|
|
Packit |
4b6dd7 |
} else if (g_strcmp0 (json_reader_get_member_name (reader), "summary") == 0) {
|
|
Packit |
4b6dd7 |
gchar *summary = NULL;
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_assert (gdata_parser_string_from_json_member (reader,
|
|
Packit |
4b6dd7 |
"summary",
|
|
Packit |
4b6dd7 |
P_DEFAULT,
|
|
Packit |
4b6dd7 |
&summary,
|
|
Packit |
4b6dd7 |
&success,
|
|
Packit |
4b6dd7 |
error));
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
if (summary != NULL) {
|
|
Packit |
4b6dd7 |
gdata_entry_set_title (GDATA_ENTRY (parsable), summary);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_free (summary);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
return success;
|
|
Packit |
4b6dd7 |
} else if (g_strcmp0 (json_reader_get_member_name (reader), "description") == 0) {
|
|
Packit |
4b6dd7 |
gchar *description = NULL;
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_assert (gdata_parser_string_from_json_member (reader,
|
|
Packit |
4b6dd7 |
"description",
|
|
Packit |
4b6dd7 |
P_DEFAULT,
|
|
Packit |
4b6dd7 |
&description,
|
|
Packit |
4b6dd7 |
&success,
|
|
Packit |
4b6dd7 |
error));
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
if (description != NULL) {
|
|
Packit |
4b6dd7 |
gdata_entry_set_summary (GDATA_ENTRY (parsable),
|
|
Packit |
4b6dd7 |
description);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_free (description);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
return success;
|
|
Packit |
4b6dd7 |
} else if (g_strcmp0 (json_reader_get_member_name (reader), "accessRole") == 0) {
|
|
Packit |
4b6dd7 |
gchar *access_role = NULL;
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_assert (gdata_parser_string_from_json_member (reader,
|
|
Packit |
4b6dd7 |
"accessRole",
|
|
Packit |
4b6dd7 |
P_DEFAULT,
|
|
Packit |
4b6dd7 |
&access_role,
|
|
Packit |
4b6dd7 |
&success,
|
|
Packit |
4b6dd7 |
error));
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
if (access_role != NULL) {
|
|
Packit |
4b6dd7 |
const gchar *level;
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Convert from v3 format to v2. */
|
|
Packit |
4b6dd7 |
if (g_strcmp0 (access_role, "freeBusyReader") == 0) {
|
|
Packit |
4b6dd7 |
level = GDATA_CALENDAR_ACCESS_ROLE_FREE_BUSY;
|
|
Packit |
4b6dd7 |
} else if (g_strcmp0 (access_role, "reader") == 0) {
|
|
Packit |
4b6dd7 |
level = GDATA_CALENDAR_ACCESS_ROLE_READ;
|
|
Packit |
4b6dd7 |
} else if (g_strcmp0 (access_role, "writer") == 0) {
|
|
Packit |
4b6dd7 |
level = GDATA_CALENDAR_ACCESS_ROLE_EDITOR;
|
|
Packit |
4b6dd7 |
} else if (g_strcmp0 (access_role, "owner") == 0) {
|
|
Packit |
4b6dd7 |
level = GDATA_CALENDAR_ACCESS_ROLE_OWNER;
|
|
Packit |
4b6dd7 |
} else {
|
|
Packit |
4b6dd7 |
level = access_role;
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
self->priv->access_level = g_strdup (level);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_free (access_role);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
return success;
|
|
Packit |
4b6dd7 |
} else if (g_strcmp0 (json_reader_get_member_name (reader), "id") == 0) {
|
|
Packit |
4b6dd7 |
GDataLink *_link;
|
|
Packit |
4b6dd7 |
const gchar *id;
|
|
Packit |
4b6dd7 |
gchar *uri;
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
id = json_reader_get_string_value (reader);
|
|
Packit |
4b6dd7 |
if (id != NULL && *id != '\0') {
|
|
Packit |
4b6dd7 |
/* Calendar entries don’t contain their own selfLink,
|
|
Packit |
4b6dd7 |
* so we have to add one manually. */
|
|
Packit |
4b6dd7 |
uri = g_strconcat ("https://www.googleapis.com/calendar/v3/calendars/", id, NULL);
|
|
Packit |
4b6dd7 |
_link = gdata_link_new (uri, GDATA_LINK_SELF);
|
|
Packit |
4b6dd7 |
gdata_entry_add_link (GDATA_ENTRY (parsable), _link);
|
|
Packit |
4b6dd7 |
g_object_unref (_link);
|
|
Packit |
4b6dd7 |
g_free (uri);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Similarly for the ACL link. */
|
|
Packit |
4b6dd7 |
uri = g_strconcat ("https://www.googleapis.com"
|
|
Packit |
4b6dd7 |
"/calendar/v3/calendars/", id,
|
|
Packit |
4b6dd7 |
"/acl", NULL);
|
|
Packit |
4b6dd7 |
_link = gdata_link_new (uri,
|
|
Packit |
4b6dd7 |
GDATA_LINK_ACCESS_CONTROL_LIST);
|
|
Packit |
4b6dd7 |
gdata_entry_add_link (GDATA_ENTRY (parsable), _link);
|
|
Packit |
4b6dd7 |
g_object_unref (_link);
|
|
Packit |
4b6dd7 |
g_free (uri);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
return GDATA_PARSABLE_CLASS (gdata_calendar_calendar_parent_class)->parse_json (parsable, reader, user_data, error);
|
|
Packit |
4b6dd7 |
} else {
|
|
Packit |
4b6dd7 |
return GDATA_PARSABLE_CLASS (gdata_calendar_calendar_parent_class)->parse_json (parsable, reader, user_data, error);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
return TRUE;
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
static void
|
|
Packit |
4b6dd7 |
get_json (GDataParsable *parsable, JsonBuilder *builder)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
const gchar *id, *etag, *title, *description;
|
|
Packit |
4b6dd7 |
gchar *colour;
|
|
Packit |
4b6dd7 |
GDataCalendarCalendarPrivate *priv = GDATA_CALENDAR_CALENDAR (parsable)->priv;
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
id = gdata_entry_get_id (GDATA_ENTRY (parsable));
|
|
Packit |
4b6dd7 |
if (id != NULL) {
|
|
Packit |
4b6dd7 |
json_builder_set_member_name (builder, "id");
|
|
Packit |
4b6dd7 |
json_builder_add_string_value (builder, id);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
json_builder_set_member_name (builder, "kind");
|
|
Packit |
4b6dd7 |
json_builder_add_string_value (builder, "calendar#calendar");
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Add the ETag, if available. */
|
|
Packit |
4b6dd7 |
etag = gdata_entry_get_etag (GDATA_ENTRY (parsable));
|
|
Packit |
4b6dd7 |
if (etag != NULL) {
|
|
Packit |
4b6dd7 |
json_builder_set_member_name (builder, "etag");
|
|
Packit |
4b6dd7 |
json_builder_add_string_value (builder, etag);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Calendar labels titles as ‘summary’. */
|
|
Packit |
4b6dd7 |
title = gdata_entry_get_title (GDATA_ENTRY (parsable));
|
|
Packit |
4b6dd7 |
if (title != NULL) {
|
|
Packit |
4b6dd7 |
json_builder_set_member_name (builder, "summary");
|
|
Packit |
4b6dd7 |
json_builder_add_string_value (builder, title);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
description = gdata_entry_get_summary (GDATA_ENTRY (parsable));
|
|
Packit |
4b6dd7 |
if (description != NULL) {
|
|
Packit |
4b6dd7 |
json_builder_set_member_name (builder, "description");
|
|
Packit |
4b6dd7 |
json_builder_add_string_value (builder, description);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Add all the calendar-specific JSON */
|
|
Packit |
4b6dd7 |
if (priv->timezone != NULL) {
|
|
Packit |
4b6dd7 |
json_builder_set_member_name (builder, "timeZone");
|
|
Packit |
4b6dd7 |
json_builder_add_string_value (builder, priv->timezone);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
json_builder_set_member_name (builder, "hidden");
|
|
Packit |
4b6dd7 |
json_builder_add_boolean_value (builder, priv->is_hidden);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
colour = gdata_color_to_hexadecimal (&priv->colour);
|
|
Packit |
4b6dd7 |
json_builder_set_member_name (builder, "backgroundColor");
|
|
Packit |
4b6dd7 |
json_builder_add_string_value (builder, colour);
|
|
Packit |
4b6dd7 |
g_free (colour);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
json_builder_set_member_name (builder, "selected");
|
|
Packit |
4b6dd7 |
json_builder_add_boolean_value (builder, priv->is_selected);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
static const gchar *
|
|
Packit |
4b6dd7 |
get_content_type (void)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
return "application/json";
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/**
|
|
Packit |
4b6dd7 |
* gdata_calendar_calendar_new:
|
|
Packit |
4b6dd7 |
* @id: (allow-none): the calendar's ID, or %NULL
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* Creates a new #GDataCalendarCalendar with the given ID and default properties.
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* Return value: a new #GDataCalendarCalendar; unref with g_object_unref()
|
|
Packit |
4b6dd7 |
*/
|
|
Packit |
4b6dd7 |
GDataCalendarCalendar *
|
|
Packit |
4b6dd7 |
gdata_calendar_calendar_new (const gchar *id)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
return GDATA_CALENDAR_CALENDAR (g_object_new (GDATA_TYPE_CALENDAR_CALENDAR, "id", id, NULL));
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/**
|
|
Packit |
4b6dd7 |
* gdata_calendar_calendar_get_timezone:
|
|
Packit |
4b6dd7 |
* @self: a #GDataCalendarCalendar
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* Gets the #GDataCalendarCalendar:timezone property.
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* Return value: the calendar's timezone, or %NULL
|
|
Packit |
4b6dd7 |
*/
|
|
Packit |
4b6dd7 |
const gchar *
|
|
Packit |
4b6dd7 |
gdata_calendar_calendar_get_timezone (GDataCalendarCalendar *self)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
g_return_val_if_fail (GDATA_IS_CALENDAR_CALENDAR (self), NULL);
|
|
Packit |
4b6dd7 |
return self->priv->timezone;
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/**
|
|
Packit |
4b6dd7 |
* gdata_calendar_calendar_set_timezone:
|
|
Packit |
4b6dd7 |
* @self: a #GDataCalendarCalendar
|
|
Packit |
4b6dd7 |
* @_timezone: (allow-none): a new timezone, or %NULL
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* Sets the #GDataCalendarCalendar:timezone property to the new timezone, @_timezone.
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* Set @_timezone to %NULL to unset the property in the calendar.
|
|
Packit |
4b6dd7 |
*/
|
|
Packit |
4b6dd7 |
void
|
|
Packit |
4b6dd7 |
gdata_calendar_calendar_set_timezone (GDataCalendarCalendar *self, const gchar *_timezone)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
/* Blame "timezone" in /usr/include/time.h:291 for the weird parameter naming */
|
|
Packit |
4b6dd7 |
g_return_if_fail (GDATA_IS_CALENDAR_CALENDAR (self));
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_free (self->priv->timezone);
|
|
Packit |
4b6dd7 |
self->priv->timezone = g_strdup (_timezone);
|
|
Packit |
4b6dd7 |
g_object_notify (G_OBJECT (self), "timezone");
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/**
|
|
Packit |
4b6dd7 |
* gdata_calendar_calendar_get_times_cleaned:
|
|
Packit |
4b6dd7 |
* @self: a #GDataCalendarCalendar
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* Gets the #GDataCalendarCalendar:times-cleaned property.
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* Return value: the number of times the calendar has been totally emptied
|
|
Packit |
4b6dd7 |
* Deprecated: 0.17.2: Unsupported by the online API any more. There is no
|
|
Packit |
4b6dd7 |
* replacement; this will always return 0 .
|
|
Packit |
4b6dd7 |
*/
|
|
Packit |
4b6dd7 |
guint
|
|
Packit |
4b6dd7 |
gdata_calendar_calendar_get_times_cleaned (GDataCalendarCalendar *self)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
g_return_val_if_fail (GDATA_IS_CALENDAR_CALENDAR (self), 0);
|
|
Packit |
4b6dd7 |
return 0;
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/**
|
|
Packit |
4b6dd7 |
* gdata_calendar_calendar_is_hidden:
|
|
Packit |
4b6dd7 |
* @self: a #GDataCalendarCalendar
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* Gets the #GDataCalendarCalendar:is-hidden property.
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* Return value: %TRUE if the calendar is hidden, %FALSE otherwise
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* Since: 0.2.0
|
|
Packit |
4b6dd7 |
*/
|
|
Packit |
4b6dd7 |
gboolean
|
|
Packit |
4b6dd7 |
gdata_calendar_calendar_is_hidden (GDataCalendarCalendar *self)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
g_return_val_if_fail (GDATA_IS_CALENDAR_CALENDAR (self), 0);
|
|
Packit |
4b6dd7 |
return self->priv->is_hidden;
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/**
|
|
Packit |
4b6dd7 |
* gdata_calendar_calendar_set_is_hidden:
|
|
Packit |
4b6dd7 |
* @self: a #GDataCalendarCalendar
|
|
Packit |
4b6dd7 |
* @is_hidden: %TRUE to hide the calendar, %FALSE otherwise
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* Sets the #GDataCalendarCalendar:is-hidden property to @is_hidden.
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* Since: 0.2.0
|
|
Packit |
4b6dd7 |
*/
|
|
Packit |
4b6dd7 |
void
|
|
Packit |
4b6dd7 |
gdata_calendar_calendar_set_is_hidden (GDataCalendarCalendar *self, gboolean is_hidden)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
g_return_if_fail (GDATA_IS_CALENDAR_CALENDAR (self));
|
|
Packit |
4b6dd7 |
self->priv->is_hidden = is_hidden;
|
|
Packit |
4b6dd7 |
g_object_notify (G_OBJECT (self), "is-hidden");
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/**
|
|
Packit |
4b6dd7 |
* gdata_calendar_calendar_get_color:
|
|
Packit |
4b6dd7 |
* @self: a #GDataCalendarCalendar
|
|
Packit |
4b6dd7 |
* @color: (out caller-allocates): a #GDataColor
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* Gets the #GDataCalendarCalendar:color property and puts it in @color.
|
|
Packit |
4b6dd7 |
*/
|
|
Packit |
4b6dd7 |
void
|
|
Packit |
4b6dd7 |
gdata_calendar_calendar_get_color (GDataCalendarCalendar *self, GDataColor *color)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
g_return_if_fail (GDATA_IS_CALENDAR_CALENDAR (self));
|
|
Packit |
4b6dd7 |
g_return_if_fail (color != NULL);
|
|
Packit |
4b6dd7 |
*color = self->priv->colour;
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/**
|
|
Packit |
4b6dd7 |
* gdata_calendar_calendar_set_color:
|
|
Packit |
4b6dd7 |
* @self: a #GDataCalendarCalendar
|
|
Packit |
4b6dd7 |
* @color: a new #GDataColor
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* Sets the #GDataCalendarCalendar:color property to @color.
|
|
Packit |
4b6dd7 |
*/
|
|
Packit |
4b6dd7 |
void
|
|
Packit |
4b6dd7 |
gdata_calendar_calendar_set_color (GDataCalendarCalendar *self, const GDataColor *color)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
g_return_if_fail (GDATA_IS_CALENDAR_CALENDAR (self));
|
|
Packit |
4b6dd7 |
g_return_if_fail (color != NULL);
|
|
Packit |
4b6dd7 |
self->priv->colour = *color;
|
|
Packit |
4b6dd7 |
g_object_notify (G_OBJECT (self), "color");
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/**
|
|
Packit |
4b6dd7 |
* gdata_calendar_calendar_is_selected:
|
|
Packit |
4b6dd7 |
* @self: a #GDataCalendarCalendar
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* Gets the #GDataCalendarCalendar:is-selected property.
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* Return value: %TRUE if the calendar is selected, %FALSE otherwise
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* Since: 0.2.0
|
|
Packit |
4b6dd7 |
*/
|
|
Packit |
4b6dd7 |
gboolean
|
|
Packit |
4b6dd7 |
gdata_calendar_calendar_is_selected (GDataCalendarCalendar *self)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
g_return_val_if_fail (GDATA_IS_CALENDAR_CALENDAR (self), 0);
|
|
Packit |
4b6dd7 |
return self->priv->is_selected;
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/**
|
|
Packit |
4b6dd7 |
* gdata_calendar_calendar_set_is_selected:
|
|
Packit |
4b6dd7 |
* @self: a #GDataCalendarCalendar
|
|
Packit |
4b6dd7 |
* @is_selected: %TRUE to select the calendar, %FALSE otherwise
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* Sets the #GDataCalendarCalendar:is-selected property to @is_selected.
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* Since: 0.2.0
|
|
Packit |
4b6dd7 |
*/
|
|
Packit |
4b6dd7 |
void
|
|
Packit |
4b6dd7 |
gdata_calendar_calendar_set_is_selected (GDataCalendarCalendar *self, gboolean is_selected)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
g_return_if_fail (GDATA_IS_CALENDAR_CALENDAR (self));
|
|
Packit |
4b6dd7 |
self->priv->is_selected = is_selected;
|
|
Packit |
4b6dd7 |
g_object_notify (G_OBJECT (self), "is-selected");
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/**
|
|
Packit |
4b6dd7 |
* gdata_calendar_calendar_get_access_level:
|
|
Packit |
4b6dd7 |
* @self: a #GDataCalendarCalendar
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* Gets the #GDataCalendarCalendar:access-level property.
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* Return value: the authenticated user's access level to the calendar, or %NULL
|
|
Packit |
4b6dd7 |
*/
|
|
Packit |
4b6dd7 |
const gchar *
|
|
Packit |
4b6dd7 |
gdata_calendar_calendar_get_access_level (GDataCalendarCalendar *self)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
g_return_val_if_fail (GDATA_IS_CALENDAR_CALENDAR (self), NULL);
|
|
Packit |
4b6dd7 |
return self->priv->access_level;
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/**
|
|
Packit |
4b6dd7 |
* gdata_calendar_calendar_get_edited:
|
|
Packit |
4b6dd7 |
* @self: a #GDataCalendarCalendar
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* Gets the #GDataCalendarCalendar:edited property. If the property is unset, -1 will be returned.
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* Return value: the UNIX timestamp for the time the calendar was last edited, or -1
|
|
Packit |
4b6dd7 |
* Deprecated: 0.17.2: Unsupported by the online API any more. There is no
|
|
Packit |
4b6dd7 |
* replacement; this will always return -1 .
|
|
Packit |
4b6dd7 |
*/
|
|
Packit |
4b6dd7 |
gint64
|
|
Packit |
4b6dd7 |
gdata_calendar_calendar_get_edited (GDataCalendarCalendar *self)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
g_return_val_if_fail (GDATA_IS_CALENDAR_CALENDAR (self), -1);
|
|
Packit |
4b6dd7 |
return -1;
|
|
Packit |
4b6dd7 |
}
|