aboutsummaryrefslogtreecommitdiffstats
path: root/plugins/itip-formatter/itip-view.c
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/itip-formatter/itip-view.c')
-rw-r--r--plugins/itip-formatter/itip-view.c3062
1 files changed, 0 insertions, 3062 deletions
diff --git a/plugins/itip-formatter/itip-view.c b/plugins/itip-formatter/itip-view.c
deleted file mode 100644
index 16388f7232..0000000000
--- a/plugins/itip-formatter/itip-view.c
+++ /dev/null
@@ -1,3062 +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:
- * JP Rosevear <jpr@novell.com>
- *
- * Copyright (C) 1999-2008 Novell, Inc. (www.novell.com)
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <string.h>
-#include <glib/gi18n.h>
-#include <libedataserverui/libedataserverui.h>
-
-#include <mail/em-format-hook.h>
-#include <mail/em-format-html.h>
-#include <e-util/e-util.h>
-#include <e-util/e-unicode.h>
-#include <calendar/gui/itip-utils.h>
-#include <webkit/webkitdom.h>
-
-#include "itip-view.h"
-
-#define d(x)
-
-#define MEETING_ICON "stock_new-meeting"
-
-#define ITIP_VIEW_GET_PRIVATE(obj) \
- (G_TYPE_INSTANCE_GET_PRIVATE \
- ((obj), ITIP_TYPE_VIEW, ItipViewPrivate))
-
-G_DEFINE_TYPE (ItipView, itip_view, G_TYPE_OBJECT)
-
-typedef struct {
- ItipViewInfoItemType type;
- gchar *message;
-
- guint id;
-} ItipViewInfoItem;
-
-struct _ItipViewPrivate {
- ESourceRegistry *registry;
- gulong source_added_id;
- gulong source_removed_id;
- gchar *extension_name;
-
- ItipViewMode mode;
- ECalClientSourceType type;
-
- gchar *sender;
- gchar *organizer;
- gchar *organizer_sentby;
- gchar *delegator;
- gchar *attendee;
- gchar *attendee_sentby;
- gchar *proxy;
-
- gchar *summary;
-
- gchar *location;
- gchar *status;
- gchar *comment;
-
- struct tm *start_tm;
- gint start_tm_is_date : 1;
- gchar *start_label;
- const gchar *start_header;
-
- struct tm *end_tm;
- gint end_tm_is_date : 1;
- gchar *end_label;
- const gchar *end_header;
-
- GSList *upper_info_items;
- GSList *lower_info_items;
-
- guint next_info_item_id;
-
- gchar *description;
-
- gint buttons_sensitive : 1;
-
- gboolean is_recur_set;
-
- gint needs_decline : 1;
-
- WebKitDOMDocument *dom_document;
- ItipPURI *puri;
-
- gchar *error;
-};
-
-#define TEXT_ROW_SENDER "text_row_sender"
-#define TABLE_ROW_SUMMARY "table_row_summary"
-#define TABLE_ROW_LOCATION "table_row_location"
-#define TABLE_ROW_START_DATE "table_row_start_time"
-#define TABLE_ROW_END_DATE "table_row_end_time"
-#define TABLE_ROW_STATUS "table_row_status"
-#define TABLE_ROW_COMMENT "table_row_comment"
-#define TABLE_ROW_DESCRIPTION "table_row_description"
-#define TABLE_ROW_RSVP_COMMENT "table_row_rsvp_comment"
-#define TABLE_ROW_ESCB "table_row_escb"
-#define TABLE_ROW_BUTTONS "table_row_buttons"
-#define TABLE_ROW_ESCB_LABEL "table_row_escb_label"
-
-#define TABLE_BUTTONS "table_buttons"
-
-#define SELECT_ESOURCE "select_esource"
-#define TEXTAREA_RSVP_COMMENT "textarea_rsvp_comment"
-
-#define CHECKBOX_RSVP "checkbox_rsvp"
-#define CHECKBOX_RECUR "checkbox_recur"
-#define CHECKBOX_UPDATE "checkbox_update"
-#define CHECKBOX_FREE_TIME "checkbox_free_time"
-#define CHECKBOX_KEEP_ALARM "checkbox_keep_alarm"
-#define CHECKBOX_INHERIT_ALARM "checkbox_inherit_alarm"
-
-#define BUTTON_OPEN_CALENDAR "button_open_calendar"
-#define BUTTON_DECLINE "button_decline"
-#define BUTTON_DECLINE_ALL "button_decline_all"
-#define BUTTON_ACCEPT "button_accept"
-#define BUTTON_ACCEPT_ALL "button_accept_all"
-#define BUTTON_TENTATIVE "button_tentative"
-#define BUTTON_TENTATIVE_ALL "button_tentative_all"
-#define BUTTON_SEND_INFORMATION "button_send_information"
-#define BUTTON_UPDATE "button_update"
-#define BUTTON_UPDATE_ATTENDEE_STATUS "button_update_attendee_status"
-#define BUTTON_SAVE "button_save"
-
-#define TABLE_UPPER_ITIP_INFO "table_upper_itip_info"
-#define TABLE_LOWER_ITIP_INFO "table_lower_itip_info"
-
-#define DIV_ITIP_CONTENT "div_itip_content"
-#define DIV_ITIP_ERROR "div_itip_error"
-
-enum {
- PROP_0,
- PROP_EXTENSION_NAME,
- PROP_REGISTRY
-};
-
-enum {
- SOURCE_SELECTED,
- RESPONSE,
- LAST_SIGNAL
-};
-
-static guint signals[LAST_SIGNAL] = { 0 };
-
-static void
-format_date_and_time_x (struct tm *date_tm,
- struct tm *current_tm,
- gboolean use_24_hour_format,
- gboolean show_midnight,
- gboolean show_zero_seconds,
- gboolean is_date,
- gchar *buffer,
- gint buffer_size)
-{
- gchar *format;
- struct tm tomorrow_tm, week_tm;
-
- /* Calculate a normalized "tomorrow" */
- tomorrow_tm = *current_tm;
- /* Don't need this if date is in the past. Also, year assumption won't fail. */
- if (date_tm->tm_year >= current_tm->tm_year && tomorrow_tm.tm_mday == time_days_in_month (current_tm->tm_year + 1900, current_tm->tm_mon)) {
- tomorrow_tm.tm_mday = 1;
- if (tomorrow_tm.tm_mon == 11) {
- tomorrow_tm.tm_mon = 1;
- tomorrow_tm.tm_year++;
- } else {
- tomorrow_tm.tm_mon++;
- }
- } else {
- tomorrow_tm.tm_mday++;
- }
-
- /* Calculate a normalized "next seven days" */
- week_tm = *current_tm;
- /* Don't need this if date is in the past. Also, year assumption won't fail. */
- if (date_tm->tm_year >= current_tm->tm_year && week_tm.tm_mday + 6 > time_days_in_month (date_tm->tm_year + 1900, date_tm->tm_mon)) {
- week_tm.tm_mday = (week_tm.tm_mday + 6) % time_days_in_month (date_tm->tm_year + 1900, date_tm->tm_mon);
- if (week_tm.tm_mon == 11) {
- week_tm.tm_mon = 1;
- week_tm.tm_year++;
- } else {
- week_tm.tm_mon++;
- }
- } else {
- week_tm.tm_mday += 6;
- }
-
- /* Today */
- if (date_tm->tm_mday == current_tm->tm_mday &&
- date_tm->tm_mon == current_tm->tm_mon &&
- date_tm->tm_year == current_tm->tm_year) {
- if (is_date || (!show_midnight && date_tm->tm_hour == 0
- && date_tm->tm_min == 0 && date_tm->tm_sec == 0)) {
- /* strftime format of a weekday and a date. */
- format = _("Today");
- } else if (use_24_hour_format) {
- if (!show_zero_seconds && date_tm->tm_sec == 0)
- /* strftime format of a time,
- * in 24-hour format, without seconds. */
- format = _("Today %H:%M");
- else
- /* strftime format of a time,
- * in 24-hour format. */
- format = _("Today %H:%M:%S");
- } else {
- if (!show_zero_seconds && date_tm->tm_sec == 0)
- /* strftime format of a time,
- * in 12-hour format, without seconds. */
- format = _("Today %l:%M %p");
- else
- /* strftime format of a time,
- * in 12-hour format. */
- format = _("Today %l:%M:%S %p");
- }
-
- /* Tomorrow */
- } else if (date_tm->tm_mday == tomorrow_tm.tm_mday &&
- date_tm->tm_mon == tomorrow_tm.tm_mon &&
- date_tm->tm_year == tomorrow_tm.tm_year) {
- if (is_date || (!show_midnight && date_tm->tm_hour == 0
- && date_tm->tm_min == 0 && date_tm->tm_sec == 0)) {
- /* strftime format of a weekday and a date. */
- format = _("Tomorrow");
- } else if (use_24_hour_format) {
- if (!show_zero_seconds && date_tm->tm_sec == 0)
- /* strftime format of a time,
- * in 24-hour format, without seconds. */
- format = _("Tomorrow %H:%M");
- else
- /* strftime format of a time,
- * in 24-hour format. */
- format = _("Tomorrow %H:%M:%S");
- } else {
- if (!show_zero_seconds && date_tm->tm_sec == 0)
- /* strftime format of a time,
- * in 12-hour format, without seconds. */
- format = _("Tomorrow %l:%M %p");
- else
- /* strftime format of a time,
- * in 12-hour format. */
- format = _("Tomorrow %l:%M:%S %p");
- }
-
- /* Within 6 days */
- } else if ((date_tm->tm_year >= current_tm->tm_year &&
- date_tm->tm_mon >= current_tm->tm_mon &&
- date_tm->tm_mday >= current_tm->tm_mday) &&
-
- (date_tm->tm_year < week_tm.tm_year ||
-
- (date_tm->tm_year == week_tm.tm_year &&
- date_tm->tm_mon < week_tm.tm_mon) ||
-
- (date_tm->tm_year == week_tm.tm_year &&
- date_tm->tm_mon == week_tm.tm_mon &&
- date_tm->tm_mday < week_tm.tm_mday))) {
- if (is_date || (!show_midnight && date_tm->tm_hour == 0
- && date_tm->tm_min == 0 && date_tm->tm_sec == 0)) {
- /* strftime format of a weekday. */
- format = _("%A");
- } else if (use_24_hour_format) {
- if (!show_zero_seconds && date_tm->tm_sec == 0)
- /* strftime format of a weekday and a
- * time, in 24-hour format, without seconds. */
- format = _("%A %H:%M");
- else
- /* strftime format of a weekday and a
- * time, in 24-hour format. */
- format = _("%A %H:%M:%S");
- } else {
- if (!show_zero_seconds && date_tm->tm_sec == 0)
- /* strftime format of a weekday and a
- * time, in 12-hour format, without seconds. */
- format = _("%A %l:%M %p");
- else
- /* strftime format of a weekday and a
- * time, in 12-hour format. */
- format = _("%A %l:%M:%S %p");
- }
-
- /* This Year */
- } else if (date_tm->tm_year == current_tm->tm_year) {
- if (is_date || (!show_midnight && date_tm->tm_hour == 0
- && date_tm->tm_min == 0 && date_tm->tm_sec == 0)) {
- /* strftime format of a weekday and a date
- * without a year. */
- format = _("%A, %B %e");
- } else if (use_24_hour_format) {
- if (!show_zero_seconds && date_tm->tm_sec == 0)
- /* strftime format of a weekday, a date
- * without a year and a time,
- * in 24-hour format, without seconds. */
- format = _("%A, %B %e %H:%M");
- else
- /* strftime format of a weekday, a date without a year
- * and a time, in 24-hour format. */
- format = _("%A, %B %e %H:%M:%S");
- } else {
- if (!show_zero_seconds && date_tm->tm_sec == 0)
- /* strftime format of a weekday, a date without a year
- * and a time, in 12-hour format, without seconds. */
- format = _("%A, %B %e %l:%M %p");
- else
- /* strftime format of a weekday, a date without a year
- * and a time, in 12-hour format. */
- format = _("%A, %B %e %l:%M:%S %p");
- }
- } else {
- if (is_date || (!show_midnight && date_tm->tm_hour == 0
- && date_tm->tm_min == 0 && date_tm->tm_sec == 0)) {
- /* strftime format of a weekday and a date. */
- format = _("%A, %B %e, %Y");
- } else if (use_24_hour_format) {
- if (!show_zero_seconds && date_tm->tm_sec == 0)
- /* strftime format of a weekday, a date and a
- * time, in 24-hour format, without seconds. */
- format = _("%A, %B %e, %Y %H:%M");
- else
- /* strftime format of a weekday, a date and a
- * time, in 24-hour format. */
- format = _("%A, %B %e, %Y %H:%M:%S");
- } else {
- if (!show_zero_seconds && date_tm->tm_sec == 0)
- /* strftime format of a weekday, a date and a
- * time, in 12-hour format, without seconds. */
- format = _("%A, %B %e, %Y %l:%M %p");
- else
- /* strftime format of a weekday, a date and a
- * time, in 12-hour format. */
- format = _("%A, %B %e, %Y %l:%M:%S %p");
- }
- }
-
- /* strftime returns 0 if the string doesn't fit, and leaves the buffer
- * undefined, so we set it to the empty string in that case. */
- if (e_utf8_strftime_fix_am_pm (buffer, buffer_size, format, date_tm) == 0)
- buffer[0] = '\0';
-}
-
-static gchar *
-dupe_first_bold (const gchar *format,
- const gchar *first,
- const gchar *second)
-{
- gchar *f, *s, *res;
-
- f = g_markup_printf_escaped ("<b>%s</b>", first ? first : "");
- s = g_markup_escape_text (second ? second : "", -1);
-
- res = g_strdup_printf (format, f, s);
-
- g_free (f);
- g_free (s);
-
- return res;
-}
-
-static gchar *
-set_calendar_sender_text (ItipView *view)
-{
- ItipViewPrivate *priv;
- const gchar *organizer, *attendee;
- gchar *sender = NULL;
- gchar *on_behalf_of = NULL;
-
- priv = view->priv;
-
- organizer = priv->organizer ? priv->organizer : _("An unknown person");
- attendee = priv->attendee ? priv->attendee : _("An unknown person");
-
- /* The current account ID (i.e. the delegatee) is receiving a copy of the request/response. Here we ask the delegatee to respond/accept on behalf of the delegator. */
- if (priv->organizer && priv->proxy)
- on_behalf_of = dupe_first_bold (_("Please respond on behalf of %s"), priv->proxy, NULL);
- else if (priv->attendee && priv->proxy)
- on_behalf_of = dupe_first_bold (_("Received on behalf of %s"), priv->proxy, NULL);
-
- switch (priv->mode) {
- case ITIP_VIEW_MODE_PUBLISH:
- if (priv->organizer_sentby)
- sender = dupe_first_bold (_("%s through %s has published the following meeting information:"), organizer, priv->organizer_sentby);
- else
- sender = dupe_first_bold (_("%s has published the following meeting information:"), organizer, NULL);
- break;
- case ITIP_VIEW_MODE_REQUEST:
- /* FIXME is the delegator stuff handled correctly here? */
- if (priv->delegator) {
- sender = dupe_first_bold (_("%s has delegated the following meeting to you:"), priv->delegator, NULL);
- } else {
- if (priv->organizer_sentby)
- sender = dupe_first_bold (_("%s through %s requests your presence at the following meeting:"), organizer, priv->organizer_sentby);
- else
- sender = dupe_first_bold (_("%s requests your presence at the following meeting:"), organizer, NULL);
- }
- break;
- case ITIP_VIEW_MODE_ADD:
- /* FIXME What text for this? */
- if (priv->organizer_sentby)
- sender = dupe_first_bold (_("%s through %s wishes to add to an existing meeting:"), organizer, priv->organizer_sentby);
- else
- sender = dupe_first_bold (_("%s wishes to add to an existing meeting:"), organizer, NULL);
- break;
- case ITIP_VIEW_MODE_REFRESH:
- if (priv->attendee_sentby)
- sender = dupe_first_bold (_("%s through %s wishes to receive the latest information for the following meeting:"), attendee, priv->attendee_sentby);
- else
- sender = dupe_first_bold (_("%s wishes to receive the latest information for the following meeting:"), attendee, NULL);
- break;
- case ITIP_VIEW_MODE_REPLY:
- if (priv->attendee_sentby)
- sender = dupe_first_bold (_("%s through %s has sent back the following meeting response:"), attendee, priv->attendee_sentby);
- else
- sender = dupe_first_bold (_("%s has sent back the following meeting response:"), attendee, NULL);
- break;
- case ITIP_VIEW_MODE_CANCEL:
- if (priv->organizer_sentby)
- sender = dupe_first_bold (_("%s through %s has canceled the following meeting:"), organizer, priv->organizer_sentby);
- else
- sender = dupe_first_bold (_("%s has canceled the following meeting:"), organizer, NULL);
- break;
- case ITIP_VIEW_MODE_COUNTER:
- if (priv->attendee_sentby)
- sender = dupe_first_bold (_("%s through %s has proposed the following meeting changes."), attendee, priv->attendee_sentby);
- else
- sender = dupe_first_bold (_("%s has proposed the following meeting changes:"), attendee, NULL);
- break;
- case ITIP_VIEW_MODE_DECLINECOUNTER:
- if (priv->organizer_sentby)
- sender = dupe_first_bold (_("%s through %s has declined the following meeting changes:"), organizer, priv->organizer_sentby);
- else
- sender = dupe_first_bold (_("%s has declined the following meeting changes:"), organizer, NULL);
- break;
- default:
- break;
- }
-
- if (sender && on_behalf_of)
- sender = g_strjoin (NULL, sender, "\n", on_behalf_of, NULL);
-
- g_free (on_behalf_of);
-
- return sender;
-}
-
-static gchar *
-set_tasklist_sender_text (ItipView *view)
-{
- ItipViewPrivate *priv;
- const gchar *organizer, *attendee;
- gchar *sender = NULL;
- gchar *on_behalf_of = NULL;
-
- priv = view->priv;
-
- organizer = priv->organizer ? priv->organizer : _("An unknown person");
- attendee = priv->attendee ? priv->attendee : _("An unknown person");
-
- /* The current account ID (i.e. the delegatee) is receiving a copy of the request/response. Here we ask the delegatee to respond/accept on behalf of the delegator. */
- if (priv->organizer && priv->proxy)
- on_behalf_of = dupe_first_bold (_("Please respond on behalf of %s"), priv->proxy, NULL);
- else if (priv->attendee && priv->proxy)
- on_behalf_of = dupe_first_bold (_("Received on behalf of %s"), priv->proxy, NULL);
-
- switch (priv->mode) {
- case ITIP_VIEW_MODE_PUBLISH:
- if (priv->organizer_sentby)
- sender = dupe_first_bold (_("%s through %s has published the following task:"), organizer, priv->organizer_sentby);
- else
- sender = dupe_first_bold (_("%s has published the following task:"), organizer, NULL);
- break;
- case ITIP_VIEW_MODE_REQUEST:
- /* FIXME is the delegator stuff handled correctly here? */
- if (priv->delegator) {
- sender = dupe_first_bold (_("%s requests the assignment of %s to the following task:"), organizer, priv->delegator);
- } else {
- if (priv->organizer_sentby)
- sender = dupe_first_bold (_("%s through %s has assigned you a task:"), organizer, priv->organizer_sentby);
- else
- sender = dupe_first_bold (_("%s has assigned you a task:"), organizer, NULL);
- }
- break;
- case ITIP_VIEW_MODE_ADD:
- /* FIXME What text for this? */
- if (priv->organizer_sentby)
- sender = dupe_first_bold (_("%s through %s wishes to add to an existing task:"), organizer, priv->organizer_sentby);
- else
- sender = dupe_first_bold (_("%s wishes to add to an existing task:"), organizer, NULL);
- break;
- case ITIP_VIEW_MODE_REFRESH:
- if (priv->attendee_sentby)
- sender = dupe_first_bold (_("%s through %s wishes to receive the latest information for the following assigned task:"), attendee, priv->attendee_sentby);
- else
- sender = dupe_first_bold (_("%s wishes to receive the latest information for the following assigned task:"), attendee, NULL);
- break;
- case ITIP_VIEW_MODE_REPLY:
- if (priv->attendee_sentby)
- sender = dupe_first_bold (_("%s through %s has sent back the following assigned task response:"), attendee, priv->attendee_sentby);
- else
- sender = dupe_first_bold (_("%s has sent back the following assigned task response:"), attendee, NULL);
- break;
- case ITIP_VIEW_MODE_CANCEL:
- if (priv->organizer_sentby)
- sender = dupe_first_bold (_("%s through %s has canceled the following assigned task:"), organizer, priv->organizer_sentby);
- else
- sender = dupe_first_bold (_("%s has canceled the following assigned task:"), organizer, NULL);
- break;
- case ITIP_VIEW_MODE_COUNTER:
- if (priv->attendee_sentby)
- sender = dupe_first_bold (_("%s through %s has proposed the following task assignment changes:"), attendee, priv->attendee_sentby);
- else
- sender = dupe_first_bold (_("%s has proposed the following task assignment changes:"), attendee, NULL);
- break;
- case ITIP_VIEW_MODE_DECLINECOUNTER:
- if (priv->organizer_sentby)
- sender = dupe_first_bold (_("%s through %s has declined the following assigned task:"), organizer, priv->organizer_sentby);
- else
- sender = dupe_first_bold (_("%s has declined the following assigned task:"), organizer, NULL);
- break;
- default:
- break;
- }
-
- if (sender && on_behalf_of)
- sender = g_strjoin (NULL, sender, "\n", on_behalf_of, NULL);
-
- g_free (on_behalf_of);
-
- return sender;
-}
-
-static gchar *
-set_journal_sender_text (ItipView *view)
-{
- ItipViewPrivate *priv;
- const gchar *organizer;
- gchar *sender = NULL;
- gchar *on_behalf_of = NULL;
-
- priv = view->priv;
-
- organizer = priv->organizer ? priv->organizer : _("An unknown person");
-
- /* The current account ID (i.e. the delegatee) is receiving a copy of the request/response. Here we ask the delegatee to respond/accept on behalf of the delegator. */
- if (priv->organizer && priv->proxy)
- on_behalf_of = dupe_first_bold (_("Please respond on behalf of %s"), priv->proxy, NULL);
- else if (priv->attendee && priv->proxy)
- on_behalf_of = dupe_first_bold (_("Received on behalf of %s"), priv->proxy, NULL);
-
- switch (priv->mode) {
- case ITIP_VIEW_MODE_PUBLISH:
- if (priv->organizer_sentby)
- sender = dupe_first_bold (_("%s through %s has published the following memo:"), organizer, priv->organizer_sentby);
- else
- sender = dupe_first_bold (_("%s has published the following memo:"), organizer, NULL);
- break;
- case ITIP_VIEW_MODE_ADD:
- /* FIXME What text for this? */
- if (priv->organizer_sentby)
- sender = dupe_first_bold (_("%s through %s wishes to add to an existing memo:"), organizer, priv->organizer_sentby);
- else
- sender = dupe_first_bold (_("%s wishes to add to an existing memo:"), organizer, NULL);
- break;
- case ITIP_VIEW_MODE_CANCEL:
- if (priv->organizer_sentby)
- sender = dupe_first_bold (_("%s through %s has canceled the following shared memo:"), organizer, priv->organizer_sentby);
- else
- sender = dupe_first_bold (_("%s has canceled the following shared memo:"), organizer, NULL);
- break;
- default:
- break;
- }
-
- if (sender && on_behalf_of)
- sender = g_strjoin (NULL, sender, "\n", on_behalf_of, NULL);
-
- g_free (on_behalf_of);
-
- return sender;
-}
-
-static void
-set_sender_text (ItipView *view)
-{
- ItipViewPrivate *priv;
- priv = view->priv;
-
- switch (priv->type) {
- case E_CAL_CLIENT_SOURCE_TYPE_EVENTS:
- priv->sender = set_calendar_sender_text (view);
- break;
- case E_CAL_CLIENT_SOURCE_TYPE_TASKS:
- priv->sender = set_tasklist_sender_text (view);
- break;
- case E_CAL_CLIENT_SOURCE_TYPE_MEMOS:
- priv->sender = set_journal_sender_text (view);
- break;
- default:
- priv->sender = NULL;
- break;
- }
-
- if (priv->sender && priv->dom_document) {
- WebKitDOMElement *div;
-
- div = webkit_dom_document_get_element_by_id (
- priv->dom_document, TEXT_ROW_SENDER);
- webkit_dom_html_element_set_inner_html (
- WEBKIT_DOM_HTML_ELEMENT (div), priv->sender, NULL);
- }
-}
-
-static void
-update_start_end_times (ItipView *view)
-{
- ItipViewPrivate *priv;
- WebKitDOMElement *row, *col;
- gchar buffer[256];
- time_t now;
- struct tm *now_tm;
-
- priv = view->priv;
-
- now = time (NULL);
- now_tm = localtime (&now);
-
- if (priv->start_label)
- g_free (priv->start_label);
- if (priv->end_label)
- g_free (priv->end_label);
-
- #define is_same(_member) (priv->start_tm->_member == priv->end_tm->_member)
- if (priv->start_tm && priv->end_tm && priv->start_tm_is_date && priv->end_tm_is_date
- && is_same (tm_mday) && is_same (tm_mon) && is_same (tm_year)) {
- /* it's an all day event in one particular day */
- format_date_and_time_x (priv->start_tm, now_tm, FALSE, TRUE, FALSE, priv->start_tm_is_date, buffer, 256);
- priv->start_label = g_strdup (buffer);
- priv->start_header = _("All day:");
- priv->end_header = NULL;
- priv->end_label = NULL;
- } else {
- if (priv->start_tm) {
- format_date_and_time_x (priv->start_tm, now_tm, FALSE, TRUE, FALSE, priv->start_tm_is_date, buffer, 256);
- priv->start_header = priv->start_tm_is_date ? _("Start day:") : _("Start time:");
- priv->start_label = g_strdup (buffer);
- } else {
- priv->start_header = NULL;
- priv->start_label = NULL;
- }
-
- if (priv->end_tm) {
- format_date_and_time_x (priv->end_tm, now_tm, FALSE, TRUE, FALSE, priv->end_tm_is_date, buffer, 256);
- priv->end_header = priv->end_tm_is_date ? _("End day:") : _("End time:");
- priv->end_label = g_strdup (buffer);
- } else {
- priv->end_header = NULL;
- priv->end_label = NULL;
- }
- }
- #undef is_same
-
- if (priv->dom_document) {
- row = webkit_dom_document_get_element_by_id (
- priv->dom_document, TABLE_ROW_START_DATE);
- if (priv->start_header && priv->start_label) {
- webkit_dom_html_element_set_hidden (
- WEBKIT_DOM_HTML_ELEMENT (row), FALSE);
-
- col = webkit_dom_element_get_first_element_child (row);
- webkit_dom_html_element_set_inner_html (
- WEBKIT_DOM_HTML_ELEMENT (col), priv->start_header, NULL);
-
- col = webkit_dom_element_get_last_element_child (row);
- webkit_dom_html_element_set_inner_html (
- WEBKIT_DOM_HTML_ELEMENT (col), priv->start_label, NULL);
- } else {
- webkit_dom_html_element_set_hidden (
- WEBKIT_DOM_HTML_ELEMENT (row), TRUE);
- }
-
- row = webkit_dom_document_get_element_by_id (
- priv->dom_document, TABLE_ROW_END_DATE);
- if (priv->end_header && priv->end_label) {
- webkit_dom_html_element_set_hidden (
- WEBKIT_DOM_HTML_ELEMENT (row), FALSE);
-
- col = webkit_dom_element_get_first_element_child (row);
- webkit_dom_html_element_set_inner_html (
- WEBKIT_DOM_HTML_ELEMENT (col), priv->end_header, NULL);
-
- col = webkit_dom_element_get_last_element_child (row);
- webkit_dom_html_element_set_inner_html (
- WEBKIT_DOM_HTML_ELEMENT (col), priv->end_label, NULL);
- } else {
- webkit_dom_html_element_set_hidden (
- WEBKIT_DOM_HTML_ELEMENT (row), TRUE);
- }
- }
-}
-
-static void
-button_clicked_cb (WebKitDOMElement *element,
- WebKitDOMEvent *event,
- gpointer data)
-{
- ItipViewResponse response;
- gchar *responseStr;
-
- responseStr = webkit_dom_html_button_element_get_value (
- WEBKIT_DOM_HTML_BUTTON_ELEMENT (element));
-
- response = atoi (responseStr);
-
- //d(printf("Clicked btton %d\n", response));
- g_signal_emit (G_OBJECT (data), signals[RESPONSE], 0, response);
-}
-
-static void
-rsvp_toggled_cb (WebKitDOMHTMLInputElement *input,
- WebKitDOMEvent *event,
- gpointer data)
-{
- WebKitDOMElement *el;
-
- ItipView *view = data;
- gboolean rsvp;
-
- rsvp = webkit_dom_html_input_element_get_checked (input);
-
- el = webkit_dom_document_get_element_by_id (
- view->priv->dom_document, TEXTAREA_RSVP_COMMENT);
- webkit_dom_html_text_area_element_set_disabled (
- WEBKIT_DOM_HTML_TEXT_AREA_ELEMENT (el), !rsvp);
-}
-
-static void
-recur_toggled_cb (WebKitDOMHTMLInputElement *input,
- WebKitDOMEvent *event,
- gpointer data)
-{
- ItipView *view = data;
-
- itip_view_set_mode (view, view->priv->mode);
-}
-
-/*
- alarm_check_toggled_cb
- check1 was changed, so make the second available based on state of the first check.
-*/
-static void
-alarm_check_toggled_cb (WebKitDOMHTMLInputElement *check1,
- WebKitDOMEvent *event,
- ItipView *view)
-{
- WebKitDOMElement *check2;
- gchar *id = webkit_dom_html_element_get_id (WEBKIT_DOM_HTML_ELEMENT (check1));
-
- if (g_strcmp0 (id, CHECKBOX_INHERIT_ALARM)) {
- check2 = webkit_dom_document_get_element_by_id (
- view->priv->dom_document, CHECKBOX_KEEP_ALARM);
- } else {
- check2 = webkit_dom_document_get_element_by_id (
- view->priv->dom_document, CHECKBOX_INHERIT_ALARM);
- }
-
- g_free (id);
-
- webkit_dom_html_input_element_set_disabled (
- WEBKIT_DOM_HTML_INPUT_ELEMENT (check2),
- (webkit_dom_html_element_get_hidden (
- WEBKIT_DOM_HTML_ELEMENT (check1)) &&
- webkit_dom_html_input_element_get_checked (check1)));
-}
-
-static void
-source_changed_cb (WebKitDOMElement *select,
- WebKitDOMEvent *event,
- ItipView *view)
-{
- ESource *source;
-
- source = itip_view_ref_source (view);
-
- d(printf("Source changed to '%s'\n", e_source_get_display_name (source)));
- g_signal_emit (view, signals[SOURCE_SELECTED], 0, source);
-
- g_object_unref (source);
-}
-
-static gchar *
-parse_html_mnemonics (const gchar *label,
- gchar **access_key)
-{
- const gchar *pos = NULL;
- gchar ak = 0;
- GString *html_label = NULL;
-
- pos = strstr (label, "_");
- if (pos != NULL) {
- ak = pos[1];
-
- /* Convert to uppercase */
- if (ak >= 'a')
- ak = ak - 32;
-
- html_label = g_string_new ("");
- g_string_append_len (html_label, label, pos - label);
- g_string_append_printf (html_label, "<u>%c</u>", pos[1]);
- g_string_append (html_label, &pos[2]);
-
- if (access_key) {
- if (ak) {
- *access_key = g_strdup_printf ("%c", ak);
- } else {
- *access_key = NULL;
- }
- }
-
- } else {
- html_label = g_string_new (label);
-
- if (access_key) {
- *access_key = NULL;
- }
- }
-
- return g_string_free (html_label, FALSE);
-}
-
-static void
-append_checkbox_table_row (GString *buffer,
- const gchar *name,
- const gchar *label)
-{
- gchar *access_key, *html_label;
-
- html_label = parse_html_mnemonics (label, &access_key);
-
- g_string_append_printf (
- buffer,
- "<tr id=\"table_row_%s\" hidden=\"\"><td colspan=\"2\">"
- "<input type=\"checkbox\" name=\"%s\" id=\"%s\" value=\"%s\" >"
- "<label for=\"%s\" accesskey=\"%s\">%s</label>"
- "</td></tr>\n",
- name, name, name, name, name,
- access_key ? access_key : "", html_label);
-
- g_free (html_label);
-
- if (access_key)
- g_free (access_key);
-}
-
-static void
-append_text_table_row (GString *buffer,
- const gchar *id,
- const gchar *label,
- const gchar *value)
-{
- if (label && *label) {
-
- g_string_append_printf (buffer,
- "<tr id=\"%s\" %s><th>%s</th><td>%s</td></tr>\n",
- id, (value && *value) ? "" : "hidden=\"\"", label, value);
-
- } else {
-
- g_string_append_printf (
- buffer,
- "<tr id=\"%s\" hidden=\"\"><td colspan=\"2\"></td></tr>\n",
- id);
-
- }
-}
-
-static void
-append_info_item_row (ItipView *view,
- const gchar *table_id,
- ItipViewInfoItem *item)
-{
- WebKitDOMElement *table;
- WebKitDOMHTMLElement *row, *cell;
- const gchar *icon_name;
- gchar *id;
-
- table = webkit_dom_document_get_element_by_id (
- view->priv->dom_document, table_id);
- row = webkit_dom_html_table_element_insert_row (
- WEBKIT_DOM_HTML_TABLE_ELEMENT (table), -1, NULL);
-
- id = g_strdup_printf ("%s_row_%d", table_id, item->id);
- webkit_dom_html_element_set_id (row, id);
- g_free (id);
-
- switch (item->type) {
- case ITIP_VIEW_INFO_ITEM_TYPE_INFO:
- icon_name = GTK_STOCK_DIALOG_INFO;
- break;
- case ITIP_VIEW_INFO_ITEM_TYPE_WARNING:
- icon_name = GTK_STOCK_DIALOG_WARNING;
- break;
- case ITIP_VIEW_INFO_ITEM_TYPE_ERROR:
- icon_name = GTK_STOCK_DIALOG_ERROR;
- break;
- case ITIP_VIEW_INFO_ITEM_TYPE_PROGRESS:
- icon_name = GTK_STOCK_FIND;
- break;
- case ITIP_VIEW_INFO_ITEM_TYPE_NONE:
- default:
- icon_name = NULL;
- }
-
- cell = webkit_dom_html_table_row_element_insert_cell (
- (WebKitDOMHTMLTableRowElement *) row, -1, NULL);
-
- if (icon_name) {
- WebKitDOMElement *image;
- gchar *icon_uri;
-
- image = webkit_dom_document_create_element (
- view->priv->dom_document, "IMG", NULL);
-
- icon_uri = g_strdup_printf ("gtk-stock://%s", icon_name);
- webkit_dom_html_image_element_set_src (
- WEBKIT_DOM_HTML_IMAGE_ELEMENT (image), icon_uri);
- g_free (icon_uri);
-
- webkit_dom_node_append_child (
- WEBKIT_DOM_NODE (cell),
- WEBKIT_DOM_NODE (image),
- NULL);
- }
-
- cell = webkit_dom_html_table_row_element_insert_cell (
- (WebKitDOMHTMLTableRowElement *) row, -1, NULL);
-
- webkit_dom_html_element_set_inner_html (cell, item->message, NULL);
-
- d(printf("Added row %s_row_%d ('%s')\n", table_id, item->id, item->message));
-}
-
-static void
-remove_info_item_row (ItipView *view,
- const gchar *table_id,
- guint id)
-{
- WebKitDOMElement *row;
- gchar *row_id;
-
- row_id = g_strdup_printf ("%s_row_%d", table_id, id);
- row = webkit_dom_document_get_element_by_id (
- view->priv->dom_document, row_id);
- g_free (row_id);
-
- webkit_dom_node_remove_child (
- webkit_dom_node_get_parent_node (WEBKIT_DOM_NODE (row)),
- WEBKIT_DOM_NODE (row),
- NULL);
-
- d(printf("Removed row %s_row_%d\n", table_id, id));
-}
-
-static void
-buttons_table_write_button (GString *buffer,
- const gchar *name,
- const gchar *label,
- const gchar *icon,
- ItipViewResponse response)
-{
- gchar *access_key, *html_label;
-
- html_label = parse_html_mnemonics (label, &access_key);
-
- g_string_append_printf (
- buffer,
- "<td><button type=\"button\" name=\"%s\" value=\"%d\" id=\"%s\" accesskey=\"%s\" hidden>"
- "<div><img src=\"gtk-stock://%s?size=%d\"> <span>%s</span></div>"
- "</button></td>\n",
- name, response, name, access_key ? access_key : "" , icon,
- GTK_ICON_SIZE_BUTTON, html_label);
-
- g_free (html_label);
-
- if (access_key)
- g_free (access_key);
-}
-
-static void
-append_buttons_table (GString *buffer)
-{
- g_string_append (buffer,
- "<table class=\"itip buttons\" border=\"0\" "
- "id=\"" TABLE_BUTTONS "\" cellspacing=\"6\" "
- "cellpadding=\"0\" >"
- "<tr id=\"" TABLE_ROW_BUTTONS "\">");
-
- /* Everything gets the open button */
- buttons_table_write_button (
- buffer, BUTTON_OPEN_CALENDAR, _("_Open Calendar"),
- GTK_STOCK_JUMP_TO, ITIP_VIEW_RESPONSE_OPEN);
- buttons_table_write_button (
- buffer, BUTTON_DECLINE_ALL, _("_Decline all"),
- GTK_STOCK_CANCEL, ITIP_VIEW_RESPONSE_DECLINE);
- buttons_table_write_button (
- buffer, BUTTON_DECLINE, _("_Decline"),
- GTK_STOCK_CANCEL, ITIP_VIEW_RESPONSE_DECLINE);
- buttons_table_write_button (
- buffer, BUTTON_TENTATIVE_ALL, _("_Tentative all"),
- GTK_STOCK_DIALOG_QUESTION, ITIP_VIEW_RESPONSE_TENTATIVE);
- buttons_table_write_button (
- buffer, BUTTON_TENTATIVE, _("_Tentative"),
- GTK_STOCK_DIALOG_QUESTION, ITIP_VIEW_RESPONSE_TENTATIVE);
- buttons_table_write_button (
- buffer, BUTTON_ACCEPT_ALL, _("A_ccept all"),
- GTK_STOCK_APPLY, ITIP_VIEW_RESPONSE_ACCEPT);
- buttons_table_write_button (
- buffer, BUTTON_ACCEPT, _("A_ccept"),
- GTK_STOCK_APPLY, ITIP_VIEW_RESPONSE_ACCEPT);
- buttons_table_write_button (
- buffer, BUTTON_SEND_INFORMATION, _("_Send Information"),
- GTK_STOCK_REFRESH, ITIP_VIEW_RESPONSE_REFRESH);
- buttons_table_write_button (
- buffer, BUTTON_UPDATE_ATTENDEE_STATUS, _("_Update Attendee Status"),
- GTK_STOCK_REFRESH, ITIP_VIEW_RESPONSE_UPDATE);
- buttons_table_write_button (
- buffer, BUTTON_UPDATE, _("_Update"),
- GTK_STOCK_REFRESH, ITIP_VIEW_RESPONSE_CANCEL);
-
- g_string_append (buffer, "</tr></table>");
-}
-
-static void
-itip_view_rebuild_source_list (ItipView *view)
-{
- ESourceRegistry *registry;
- WebKitDOMElement *select;
- GList *list, *link;
- const gchar *extension_name;
-
- d(printf("Assigning a new source list!\n"));
-
- if (!view->priv->dom_document)
- return;
-
- registry = itip_view_get_registry (view);
- extension_name = itip_view_get_extension_name (view);
-
- select = webkit_dom_document_get_element_by_id (
- view->priv->dom_document, SELECT_ESOURCE);
-
- while (webkit_dom_node_has_child_nodes (WEBKIT_DOM_NODE (select))) {
- webkit_dom_node_remove_child (
- WEBKIT_DOM_NODE (select),
- webkit_dom_node_get_last_child (WEBKIT_DOM_NODE (select)),
- NULL);
- }
-
- if (extension_name == NULL)
- return;
-
- list = e_source_registry_list_sources (registry, extension_name);
-
- for (link = list; link != NULL; link = g_list_next (link)) {
- ESource *source = E_SOURCE (link->data);
- WebKitDOMElement *option;
-
- option = webkit_dom_document_create_element (
- view->priv->dom_document, "OPTION", NULL);
- webkit_dom_html_option_element_set_value (
- WEBKIT_DOM_HTML_OPTION_ELEMENT (option),
- e_source_get_uid (source));
- webkit_dom_html_option_element_set_label (
- WEBKIT_DOM_HTML_OPTION_ELEMENT (option),
- e_source_get_display_name (source));
- webkit_dom_html_element_set_inner_html (
- WEBKIT_DOM_HTML_ELEMENT (option),
- e_source_get_display_name (source), NULL);
- webkit_dom_html_element_set_class_name (
- WEBKIT_DOM_HTML_ELEMENT (option), "calendar");
-
- webkit_dom_node_append_child (
- WEBKIT_DOM_NODE (select),
- WEBKIT_DOM_NODE (option),
- NULL);
- }
-
- g_list_free_full (list, (GDestroyNotify) g_object_unref);
-
- source_changed_cb (select, NULL, view);
-}
-
-static void
-itip_view_source_added_cb (ESourceRegistry *registry,
- ESource *source,
- ItipView *view)
-{
- const gchar *extension_name;
-
- extension_name = itip_view_get_extension_name (view);
-
- /* If we don't have an extension name set
- * yet then disregard the signal emission. */
- if (extension_name == NULL)
- return;
-
- if (e_source_has_extension (source, extension_name))
- itip_view_rebuild_source_list (view);
-}
-
-static void
-itip_view_source_removed_cb (ESourceRegistry *registry,
- ESource *source,
- ItipView *view)
-{
- const gchar *extension_name;
-
- extension_name = itip_view_get_extension_name (view);
-
- /* If we don't have an extension name set
- * yet then disregard the signal emission. */
- if (extension_name == NULL)
- return;
-
- if (e_source_has_extension (source, extension_name))
- itip_view_rebuild_source_list (view);
-}
-
-static void
-itip_view_set_registry (ItipView *view,
- ESourceRegistry *registry)
-{
- g_return_if_fail (E_IS_SOURCE_REGISTRY (registry));
- g_return_if_fail (view->priv->registry == NULL);
-
- view->priv->registry = g_object_ref (registry);
-}
-
-static void
-itip_view_set_property (GObject *object,
- guint property_id,
- const GValue *value,
- GParamSpec *pspec)
-{
- switch (property_id) {
- case PROP_EXTENSION_NAME:
- itip_view_set_extension_name (
- ITIP_VIEW (object),
- g_value_get_string (value));
- return;
-
- case PROP_REGISTRY:
- itip_view_set_registry (
- ITIP_VIEW (object),
- g_value_get_object (value));
- return;
- }
-
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
-}
-
-static void
-itip_view_get_property (GObject *object,
- guint property_id,
- GValue *value,
- GParamSpec *pspec)
-{
- switch (property_id) {
- case PROP_EXTENSION_NAME:
- g_value_set_string (
- value, itip_view_get_extension_name (
- ITIP_VIEW (object)));
- return;
-
- case PROP_REGISTRY:
- g_value_set_object (
- value, itip_view_get_registry (
- ITIP_VIEW (object)));
- return;
- }
-
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
-}
-
-static void
-itip_view_dispose (GObject *object)
-{
- ItipViewPrivate *priv;
-
- priv = ITIP_VIEW_GET_PRIVATE (object);
-
- if (priv->registry != NULL) {
- g_signal_handler_disconnect (
- priv->registry, priv->source_added_id);
- g_signal_handler_disconnect (
- priv->registry, priv->source_removed_id);
- g_object_unref (priv->registry);
- priv->registry = NULL;
- }
-
- /* Chain up to parent's dispose() method. */
- G_OBJECT_CLASS (itip_view_parent_class)->dispose (object);
-}
-
-static void
-itip_view_finalize (GObject *object)
-{
- ItipViewPrivate *priv;
- GSList *iter;
-
- priv = ITIP_VIEW_GET_PRIVATE (object);
-
- d(printf("Itip view finalized!\n"));
-
- g_free (priv->extension_name);
- g_free (priv->sender);
- g_free (priv->organizer);
- g_free (priv->organizer_sentby);
- g_free (priv->delegator);
- g_free (priv->attendee);
- g_free (priv->attendee_sentby);
- g_free (priv->proxy);
- g_free (priv->summary);
- g_free (priv->location);
- g_free (priv->status);
- g_free (priv->comment);
- g_free (priv->start_tm);
- g_free (priv->start_label);
- g_free (priv->end_tm);
- g_free (priv->end_label);
- g_free (priv->description);
- g_free (priv->error);
-
- for (iter = priv->lower_info_items; iter; iter = iter->next) {
- ItipViewInfoItem *item = iter->data;
- g_free (item->message);
- g_free (item);
- }
-
- g_slist_free (priv->lower_info_items);
-
- for (iter = priv->upper_info_items; iter; iter = iter->next) {
- ItipViewInfoItem *item = iter->data;
- g_free (item->message);
- g_free (item);
- }
-
- g_slist_free (priv->upper_info_items);
-
- /* Chain up to parent's finalize() method. */
- G_OBJECT_CLASS (itip_view_parent_class)->finalize (object);
-}
-
-static void
-itip_view_constructed (GObject *object)
-{
- ItipView *view;
- ESourceRegistry *registry;
-
- view = ITIP_VIEW (object);
- registry = itip_view_get_registry (view);
-
- view->priv->source_added_id = g_signal_connect (
- registry, "source-added",
- G_CALLBACK (itip_view_source_added_cb), view);
-
- view->priv->source_removed_id = g_signal_connect (
- registry, "source-removed",
- G_CALLBACK (itip_view_source_removed_cb), view);
-
- /* Chain up to parent's constructed() method. */
- G_OBJECT_CLASS (itip_view_parent_class)->constructed (object);
-}
-
-static void
-itip_view_class_init (ItipViewClass *class)
-{
- GObjectClass *object_class;
-
- g_type_class_add_private (class, sizeof (ItipViewPrivate));
-
- object_class = G_OBJECT_CLASS (class);
- object_class->set_property = itip_view_set_property;
- object_class->get_property = itip_view_get_property;
- object_class->dispose = itip_view_dispose;
- object_class->finalize = itip_view_finalize;
- object_class->constructed = itip_view_constructed;
-
- g_object_class_install_property (
- object_class,
- PROP_REGISTRY,
- g_param_spec_string (
- "extension-name",
- "Extension Name",
- "Show only data sources with this extension",
- NULL,
- G_PARAM_READWRITE));
-
- g_object_class_install_property (
- object_class,
- PROP_REGISTRY,
- g_param_spec_object (
- "registry",
- "Registry",
- "Data source registry",
- E_TYPE_SOURCE_REGISTRY,
- G_PARAM_READWRITE |
- G_PARAM_CONSTRUCT_ONLY));
-
- signals[SOURCE_SELECTED] = g_signal_new (
- "source_selected",
- G_TYPE_FROM_CLASS (class),
- G_SIGNAL_RUN_LAST,
- G_STRUCT_OFFSET (ItipViewClass, source_selected),
- NULL, NULL,
- g_cclosure_marshal_VOID__OBJECT,
- G_TYPE_NONE, 1,
- E_TYPE_SOURCE);
-
- signals[RESPONSE] = g_signal_new (
- "response",
- G_TYPE_FROM_CLASS (class),
- G_SIGNAL_RUN_LAST,
- G_STRUCT_OFFSET (ItipViewClass, response),
- NULL, NULL,
- g_cclosure_marshal_VOID__INT,
- G_TYPE_NONE, 1,
- G_TYPE_INT);
-}
-
-static void
-itip_view_init (ItipView *view)
-{
- view->priv = ITIP_VIEW_GET_PRIVATE (view);
-}
-
-ItipView *
-itip_view_new (ItipPURI *puri,
- ESourceRegistry *registry)
-{
- ItipView *view;
-
- view = g_object_new (ITIP_TYPE_VIEW, "registry", registry, NULL);
- view->priv->puri = puri;
-
- return view;
-}
-
-void
-itip_view_write (GString *buffer)
-{
- g_string_append (buffer,
- "<html>\n"
- "<head>\n"
- "<title>ITIP</title>\n"
- "<link type=\"text/css\" rel=\"stylesheet\" href=\"evo-file://" EVOLUTION_PRIVDATADIR "/theme/webview.css\" />\n"
- "</head>\n"
- "<body>\n");
-
- g_string_append_printf (buffer,
- "<img src=\"gtk-stock://%s?size=%d\" class=\"itip icon\" />\n",
- MEETING_ICON, GTK_ICON_SIZE_BUTTON);
-
- g_string_append (buffer,
- "<div class=\"itip content\" id=\"" DIV_ITIP_CONTENT "\">\n");
-
- /* The first section listing the sender */
- /* FIXME What to do if the send and organizer do not match */
- g_string_append (buffer,
- "<div id=\"" TEXT_ROW_SENDER "\" class=\"itip sender\"></div>\n");
-
- g_string_append (buffer, "<hr>\n");
-
- /* Elementary event information */
- g_string_append (buffer,
- "<table class=\"itip table\" border=\"0\" "
- "cellspacing=\"5\" cellpadding=\"0\">\n");
-
- append_text_table_row (buffer, TABLE_ROW_SUMMARY, NULL, NULL);
- append_text_table_row (buffer, TABLE_ROW_LOCATION, _("Location:"), NULL);
- append_text_table_row (buffer, TABLE_ROW_START_DATE, _("Start time:"), NULL);
- append_text_table_row (buffer, TABLE_ROW_END_DATE, _("End time:"), NULL);
- append_text_table_row (buffer, TABLE_ROW_STATUS, _("Status:"), NULL);
- append_text_table_row (buffer, TABLE_ROW_COMMENT, _("Comment:"), NULL);
-
- g_string_append (buffer, "</table>\n");
-
- /* Upper Info items */
- g_string_append (buffer,
- "<table class=\"itip info\" id=\"" TABLE_UPPER_ITIP_INFO "\" border=\"0\" "
- "cellspacing=\"5\" cellpadding=\"0\">");
-
- /* Description */
- g_string_append (buffer,
- "<div id=\"" TABLE_ROW_DESCRIPTION "\" class=\"itip description\" hidden=\"\"></div>\n");
-
- g_string_append (buffer, "<hr>\n");
-
- /* Lower Info items */
- g_string_append (buffer,
- "<table class=\"itip info\" id=\"" TABLE_LOWER_ITIP_INFO "\" border=\"0\" "
- "cellspacing=\"5\" cellpadding=\"0\">");
-
- g_string_append (buffer,
- "<table class=\"itip table\" border=\"0\" "
- "cellspacing=\"5\" cellpadding=\"0\">\n");
-
- g_string_append (buffer,
- "<tr id=\"" TABLE_ROW_ESCB "\" hidden=\"\""">"
- "<th><label id=\"" TABLE_ROW_ESCB_LABEL "\" for=\"" SELECT_ESOURCE "\"></label></th>"
- "<td><select name=\"" SELECT_ESOURCE "\" id=\"" SELECT_ESOURCE "\"></select></td>"
- "</tr>\n");
-
- /* RSVP area */
- append_checkbox_table_row (buffer, CHECKBOX_RSVP, _("Send reply to sender"));
-
- /* Comments */
- g_string_append_printf (buffer,
- "<tr id=\"" TABLE_ROW_RSVP_COMMENT "\" hidden=\"\">"
- "<th>%s</th>"
- "<td><textarea name=\"" TEXTAREA_RSVP_COMMENT "\" "
- "id=\"" TEXTAREA_RSVP_COMMENT "\" "
- "rows=\"3\" cols=\"40\" disabled=\"\">"
- "</textarea></td>\n"
- "</tr>\n",
- _("Comment:"));
-
- /* Updates */
- append_checkbox_table_row (buffer, CHECKBOX_UPDATE, _("Send _updates to attendees"));
-
- /* The recurrence check button */
- append_checkbox_table_row (buffer, CHECKBOX_RECUR, _("_Apply to all instances"));
- append_checkbox_table_row (buffer, CHECKBOX_FREE_TIME, _("Show time as _free"));
- append_checkbox_table_row (buffer, CHECKBOX_KEEP_ALARM, _("_Preserve my reminder"));
- append_checkbox_table_row (buffer, CHECKBOX_INHERIT_ALARM, _("_Inherit reminder"));
-
- g_string_append (buffer, "</table>\n");
-
- /* Buttons table */
- append_buttons_table (buffer);
-
- /* <div class="itip content" > */
- g_string_append (buffer, "</div>\n");
-
- g_string_append (buffer, "<div class=\"itip error\" id=\"" DIV_ITIP_ERROR "\"></div>");
-
- g_string_append (buffer, "</body></html>");
-}
-
-void
-itip_view_write_for_printing (ItipView *view,
- GString *buffer)
-{
- if (view->priv->error && *view->priv->error) {
- g_string_append (buffer, view->priv->error);
- return;
- }
-
- g_string_append (buffer,
- "<div class=\"itip print_content\" id=\"" DIV_ITIP_CONTENT "\">\n");
-
- /* The first section listing the sender */
- /* FIXME What to do if the send and organizer do not match */
- g_string_append_printf (buffer,
- "<div id=\"" TEXT_ROW_SENDER "\" class=\"itip sender\">%s</div>\n",
- view->priv->sender ? view->priv->sender : "");
-
- g_string_append (buffer, "<hr>\n");
-
- /* Elementary event information */
- g_string_append (buffer,
- "<table class=\"itip table\" border=\"0\" "
- "cellspacing=\"5\" cellpadding=\"0\">\n");
-
- append_text_table_row (
- buffer, TABLE_ROW_SUMMARY,
- NULL, view->priv->summary);
- append_text_table_row (
- buffer, TABLE_ROW_LOCATION,
- _("Location:"), view->priv->location);
- append_text_table_row (
- buffer, TABLE_ROW_START_DATE,
- view->priv->start_header, view->priv->start_label);
- append_text_table_row (
- buffer, TABLE_ROW_END_DATE,
- view->priv->end_header, view->priv->end_label);
- append_text_table_row (
- buffer, TABLE_ROW_STATUS,
- _("Status:"), view->priv->status);
- append_text_table_row (
- buffer, TABLE_ROW_COMMENT,
- _("Comment:"), view->priv->comment);
-
- g_string_append (buffer, "</table>\n");
-
- /* Description */
- g_string_append_printf (
- buffer,
- "<div id=\"" TABLE_ROW_DESCRIPTION "\" "
- "class=\"itip description\" %s>%s</div>\n",
- view->priv->description ? "" : "hidden=\"\"", view->priv->description);
-
- g_string_append (buffer, "</div>");
-}
-
-void
-itip_view_create_dom_bindings (ItipView *view,
- WebKitDOMElement *element)
-{
- WebKitDOMElement *el;
- WebKitDOMDocument *doc;
-
- doc = webkit_dom_node_get_owner_document (WEBKIT_DOM_NODE (element));
- view->priv->dom_document = doc;
-
- el = webkit_dom_document_get_element_by_id (doc, CHECKBOX_RECUR);
- if (el) {
- webkit_dom_event_target_add_event_listener (
- WEBKIT_DOM_EVENT_TARGET (el), "click",
- G_CALLBACK (recur_toggled_cb), FALSE, view);
- }
-
- el = webkit_dom_document_get_element_by_id (doc, CHECKBOX_RSVP);
- if (el) {
- webkit_dom_event_target_add_event_listener (
- WEBKIT_DOM_EVENT_TARGET (el), "click",
- G_CALLBACK (rsvp_toggled_cb), FALSE, view);
- }
-
- el = webkit_dom_document_get_element_by_id (doc, CHECKBOX_INHERIT_ALARM);
- if (el) {
- webkit_dom_event_target_add_event_listener (
- WEBKIT_DOM_EVENT_TARGET (el), "click",
- G_CALLBACK (alarm_check_toggled_cb), FALSE, view);
- }
-
- el = webkit_dom_document_get_element_by_id (doc, CHECKBOX_KEEP_ALARM);
- if (el) {
- webkit_dom_event_target_add_event_listener (
- WEBKIT_DOM_EVENT_TARGET (el), "click",
- G_CALLBACK (alarm_check_toggled_cb), FALSE, view);
- }
-
- el = webkit_dom_document_get_element_by_id (doc, BUTTON_OPEN_CALENDAR);
- if (el) {
- webkit_dom_event_target_add_event_listener (
- WEBKIT_DOM_EVENT_TARGET (el), "click",
- G_CALLBACK (button_clicked_cb), FALSE, view);
- }
-
- el = webkit_dom_document_get_element_by_id (doc, BUTTON_ACCEPT);
- if (el) {
- webkit_dom_event_target_add_event_listener (
- WEBKIT_DOM_EVENT_TARGET (el), "click",
- G_CALLBACK (button_clicked_cb), FALSE, view);
- }
-
- el = webkit_dom_document_get_element_by_id (doc, BUTTON_ACCEPT_ALL);
- if (el) {
- webkit_dom_event_target_add_event_listener (
- WEBKIT_DOM_EVENT_TARGET (el), "click",
- G_CALLBACK (button_clicked_cb), FALSE, view);
- }
-
- el = webkit_dom_document_get_element_by_id (doc, BUTTON_TENTATIVE);
- if (el) {
- webkit_dom_event_target_add_event_listener (
- WEBKIT_DOM_EVENT_TARGET (el), "click",
- G_CALLBACK (button_clicked_cb), FALSE, view);
- }
-
- el = webkit_dom_document_get_element_by_id (doc, BUTTON_TENTATIVE_ALL);
- if (el) {
- webkit_dom_event_target_add_event_listener (
- WEBKIT_DOM_EVENT_TARGET (el), "click",
- G_CALLBACK (button_clicked_cb), FALSE, view);
- }
-
- el = webkit_dom_document_get_element_by_id (doc, BUTTON_DECLINE);
- if (el) {
- webkit_dom_event_target_add_event_listener (
- WEBKIT_DOM_EVENT_TARGET (el), "click",
- G_CALLBACK (button_clicked_cb), FALSE, view);
- }
-
- el = webkit_dom_document_get_element_by_id (doc, BUTTON_DECLINE_ALL);
- if (el) {
- webkit_dom_event_target_add_event_listener (
- WEBKIT_DOM_EVENT_TARGET (el), "click",
- G_CALLBACK (button_clicked_cb), FALSE, view);
- }
-
- el = webkit_dom_document_get_element_by_id (doc, BUTTON_UPDATE);
- if (el) {
- webkit_dom_event_target_add_event_listener (
- WEBKIT_DOM_EVENT_TARGET (el), "click",
- G_CALLBACK (button_clicked_cb), FALSE, view);
- }
-
- el = webkit_dom_document_get_element_by_id (doc, BUTTON_UPDATE_ATTENDEE_STATUS);
- if (el) {
- webkit_dom_event_target_add_event_listener (
- WEBKIT_DOM_EVENT_TARGET (el), "click",
- G_CALLBACK (button_clicked_cb), FALSE, view);
- }
-
- el = webkit_dom_document_get_element_by_id (doc, BUTTON_SEND_INFORMATION);
- if (el) {
- webkit_dom_event_target_add_event_listener (
- WEBKIT_DOM_EVENT_TARGET (el), "click",
- G_CALLBACK (button_clicked_cb), FALSE, view);
- }
-
- el = webkit_dom_document_get_element_by_id (doc, SELECT_ESOURCE);
- if (el) {
- webkit_dom_event_target_add_event_listener (
- WEBKIT_DOM_EVENT_TARGET (el), "change",
- G_CALLBACK (source_changed_cb), FALSE, view);
- }
-}
-
-ItipPURI *
-itip_view_get_puri (ItipView *view)
-{
- g_return_val_if_fail (ITIP_IS_VIEW (view), NULL);
-
- return view->priv->puri;
-}
-
-ESourceRegistry *
-itip_view_get_registry (ItipView *view)
-{
- g_return_val_if_fail (ITIP_IS_VIEW (view), NULL);
-
- return view->priv->registry;
-}
-
-const gchar *
-itip_view_get_extension_name (ItipView *view)
-{
- g_return_val_if_fail (ITIP_IS_VIEW (view), NULL);
-
- return view->priv->extension_name;
-}
-
-void
-itip_view_set_extension_name (ItipView *view,
- const gchar *extension_name)
-{
- g_return_if_fail (ITIP_IS_VIEW (view));
-
- /* Avoid unnecessary rebuilds. */
- if (g_strcmp0 (extension_name, view->priv->extension_name) == 0)
- return;
-
- g_free (view->priv->extension_name);
- view->priv->extension_name = g_strdup (extension_name);
-
- g_object_notify (G_OBJECT (view), "extension-name");
-
- itip_view_rebuild_source_list (view);
-}
-
-static void
-show_button (ItipView *view,
- const gchar *id)
-{
- WebKitDOMElement *button;
-
- button = webkit_dom_document_get_element_by_id (
- view->priv->dom_document, id);
- webkit_dom_html_element_set_hidden (
- WEBKIT_DOM_HTML_ELEMENT (button), FALSE);
-}
-
-void
-itip_view_set_mode (ItipView *view,
- ItipViewMode mode)
-{
- WebKitDOMElement *row, *cell;
- WebKitDOMElement *button;
-
- g_return_if_fail (ITIP_IS_VIEW (view));
-
- view->priv->mode = mode;
-
- set_sender_text (view);
-
- if (!view->priv->dom_document)
- return;
-
- row = webkit_dom_document_get_element_by_id (
- view->priv->dom_document, TABLE_ROW_BUTTONS);
- cell = webkit_dom_element_get_first_element_child (row);
- do {
- button = webkit_dom_element_get_first_element_child (cell);
- webkit_dom_html_element_set_hidden (
- WEBKIT_DOM_HTML_ELEMENT (button), TRUE);
- } while ((cell = webkit_dom_element_get_next_element_sibling (cell)) != NULL);
-
- view->priv->is_recur_set = itip_view_get_recur_check_state (view);
-
- /* Always visible */
- show_button (view, BUTTON_OPEN_CALENDAR);
-
- switch (mode) {
- case ITIP_VIEW_MODE_PUBLISH:
- if (view->priv->needs_decline) {
- show_button (view, BUTTON_DECLINE);
- }
- show_button (view, BUTTON_ACCEPT);
- break;
- case ITIP_VIEW_MODE_REQUEST:
- show_button (view, view->priv->is_recur_set ? BUTTON_DECLINE_ALL : BUTTON_DECLINE);
- show_button (view, view->priv->is_recur_set ? BUTTON_TENTATIVE_ALL : BUTTON_TENTATIVE);
- show_button (view, view->priv->is_recur_set ? BUTTON_ACCEPT_ALL : BUTTON_ACCEPT);
- break;
- case ITIP_VIEW_MODE_ADD:
- if (view->priv->type != E_CAL_CLIENT_SOURCE_TYPE_MEMOS) {
- show_button (view, BUTTON_DECLINE);
- show_button (view, BUTTON_TENTATIVE);
- }
- show_button (view, BUTTON_ACCEPT);
- break;
- case ITIP_VIEW_MODE_REFRESH:
- show_button (view, BUTTON_SEND_INFORMATION);
- break;
- case ITIP_VIEW_MODE_REPLY:
- show_button (view, BUTTON_UPDATE_ATTENDEE_STATUS);
- break;
- case ITIP_VIEW_MODE_CANCEL:
- show_button (view, BUTTON_UPDATE);
- break;
- case ITIP_VIEW_MODE_COUNTER:
- case ITIP_VIEW_MODE_DECLINECOUNTER:
- show_button (view, BUTTON_DECLINE);
- show_button (view, BUTTON_TENTATIVE);
- show_button (view, BUTTON_ACCEPT);
- break;
- default:
- break;
- }
-}
-
-ItipViewMode
-itip_view_get_mode (ItipView *view)
-{
- g_return_val_if_fail (ITIP_IS_VIEW (view), ITIP_VIEW_MODE_NONE);
-
- return view->priv->mode;
-}
-
-void
-itip_view_set_item_type (ItipView *view,
- ECalClientSourceType type)
-{
- WebKitDOMElement *label;
- const gchar *header;
- gchar *access_key, *html_label;
-
- g_return_if_fail (ITIP_IS_VIEW (view));
-
- view->priv->type = type;
-
- if (!view->priv->dom_document)
- return;
-
- label = webkit_dom_document_get_element_by_id (
- view->priv->dom_document, TABLE_ROW_ESCB_LABEL);
-
- switch (view->priv->type) {
- case E_CAL_CLIENT_SOURCE_TYPE_EVENTS:
- header = _("_Calendar:");
- break;
- case E_CAL_CLIENT_SOURCE_TYPE_TASKS:
- header = _("_Tasks:");
- break;
- case E_CAL_CLIENT_SOURCE_TYPE_MEMOS:
- header = _("_Memos:");
- break;
- default:
- header = NULL;
- break;
- }
-
- if (!header) {
- set_sender_text (view);
- return;
- }
-
- html_label = parse_html_mnemonics (header, &access_key);
-
- webkit_dom_html_element_set_access_key (
- WEBKIT_DOM_HTML_ELEMENT (label), access_key);
- webkit_dom_html_element_set_inner_html (
- WEBKIT_DOM_HTML_ELEMENT (label), html_label, NULL);
-
- g_free (html_label);
-
- if (access_key)
- g_free (access_key);
-
- set_sender_text (view);
-}
-
-ECalClientSourceType
-itip_view_get_item_type (ItipView *view)
-{
- g_return_val_if_fail (ITIP_IS_VIEW (view), ITIP_VIEW_MODE_NONE);
-
- return view->priv->type;
-}
-
-void
-itip_view_set_organizer (ItipView *view,
- const gchar *organizer)
-{
- g_return_if_fail (ITIP_IS_VIEW (view));
-
- if (view->priv->organizer)
- g_free (view->priv->organizer);
-
- view->priv->organizer = e_utf8_ensure_valid (organizer);
-
- set_sender_text (view);
-}
-
-const gchar *
-itip_view_get_organizer (ItipView *view)
-{
- g_return_val_if_fail (ITIP_IS_VIEW (view), NULL);
-
- return view->priv->organizer;
-}
-
-void
-itip_view_set_organizer_sentby (ItipView *view,
- const gchar *sentby)
-{
- g_return_if_fail (ITIP_IS_VIEW (view));
-
- if (view->priv->organizer_sentby)
- g_free (view->priv->organizer_sentby);
-
- view->priv->organizer_sentby = e_utf8_ensure_valid (sentby);
-
- set_sender_text (view);
-}
-
-const gchar *
-itip_view_get_organizer_sentby (ItipView *view)
-{
- g_return_val_if_fail (ITIP_IS_VIEW (view), NULL);
-
- return view->priv->organizer_sentby;
-}
-
-void
-itip_view_set_attendee (ItipView *view,
- const gchar *attendee)
-{
- g_return_if_fail (ITIP_IS_VIEW (view));
-
- if (view->priv->attendee)
- g_free (view->priv->attendee);
-
- view->priv->attendee = e_utf8_ensure_valid (attendee);
-
- set_sender_text (view);
-}
-
-const gchar *
-itip_view_get_attendee (ItipView *view)
-{
- g_return_val_if_fail (ITIP_IS_VIEW (view), NULL);
-
- return view->priv->attendee;
-}
-
-void
-itip_view_set_attendee_sentby (ItipView *view,
- const gchar *sentby)
-{
- g_return_if_fail (ITIP_IS_VIEW (view));
-
- if (view->priv->attendee_sentby)
- g_free (view->priv->attendee_sentby);
-
- view->priv->attendee_sentby = e_utf8_ensure_valid (sentby);
-
- set_sender_text (view);
-}
-
-const gchar *
-itip_view_get_attendee_sentby (ItipView *view)
-{
- g_return_val_if_fail (ITIP_IS_VIEW (view), NULL);
-
- return view->priv->attendee_sentby;
-}
-
-void
-itip_view_set_proxy (ItipView *view,
- const gchar *proxy)
-{
- g_return_if_fail (ITIP_IS_VIEW (view));
-
- if (view->priv->proxy)
- g_free (view->priv->proxy);
-
- view->priv->proxy = e_utf8_ensure_valid (proxy);
-
- set_sender_text (view);
-}
-
-const gchar *
-itip_view_get_proxy (ItipView *view)
-{
- g_return_val_if_fail (ITIP_IS_VIEW (view), NULL);
-
- return view->priv->proxy;
-}
-
-void
-itip_view_set_delegator (ItipView *view,
- const gchar *delegator)
-{
- g_return_if_fail (ITIP_IS_VIEW (view));
-
- if (view->priv->delegator)
- g_free (view->priv->delegator);
-
- view->priv->delegator = e_utf8_ensure_valid (delegator);
-
- set_sender_text (view);
-}
-
-const gchar *
-itip_view_get_delegator (ItipView *view)
-{
- g_return_val_if_fail (ITIP_IS_VIEW (view), NULL);
-
- return view->priv->delegator;
-}
-
-void
-itip_view_set_summary (ItipView *view,
- const gchar *summary)
-{
- WebKitDOMElement *row, *col;
-
- g_return_if_fail (ITIP_IS_VIEW (view));
-
- if (view->priv->summary)
- g_free (view->priv->summary);
-
- view->priv->summary = summary ? g_strstrip (e_utf8_ensure_valid (summary)) : NULL;
-
- if (!view->priv->dom_document)
- return;
-
- row = webkit_dom_document_get_element_by_id (
- view->priv->dom_document, TABLE_ROW_SUMMARY);
- webkit_dom_html_element_set_hidden (
- WEBKIT_DOM_HTML_ELEMENT (row), (view->priv->summary == NULL));
-
- col = webkit_dom_element_get_last_element_child (row);
- webkit_dom_html_element_set_inner_html (
- WEBKIT_DOM_HTML_ELEMENT (col),
- view->priv->summary ? view->priv->summary : "",
- NULL);
-}
-
-const gchar *
-itip_view_get_summary (ItipView *view)
-{
- g_return_val_if_fail (ITIP_IS_VIEW (view), NULL);
-
- return view->priv->summary;
-}
-
-void
-itip_view_set_location (ItipView *view,
- const gchar *location)
-{
- WebKitDOMElement *row, *col;
-
- g_return_if_fail (ITIP_IS_VIEW (view));
-
- if (view->priv->location)
- g_free (view->priv->location);
-
- view->priv->location = location ? g_strstrip (e_utf8_ensure_valid (location)) : NULL;
-
- if (!view->priv->dom_document)
- return;
-
- row = webkit_dom_document_get_element_by_id (
- view->priv->dom_document, TABLE_ROW_LOCATION);
- webkit_dom_html_element_set_hidden (
- WEBKIT_DOM_HTML_ELEMENT (row), (view->priv->location == NULL));
-
- col = webkit_dom_element_get_last_element_child (row);
- webkit_dom_html_element_set_inner_html (
- WEBKIT_DOM_HTML_ELEMENT (col),
- view->priv->location ? view->priv->location : "",
- NULL);
-}
-
-const gchar *
-itip_view_get_location (ItipView *view)
-{
- g_return_val_if_fail (ITIP_IS_VIEW (view), NULL);
-
- return view->priv->location;
-}
-
-void
-itip_view_set_status (ItipView *view,
- const gchar *status)
-{
- WebKitDOMElement *row, *col;
-
- g_return_if_fail (ITIP_IS_VIEW (view));
-
- if (view->priv->status)
- g_free (view->priv->status);
-
- view->priv->status = status ? g_strstrip (e_utf8_ensure_valid (status)) : NULL;
-
- if (!view->priv->dom_document)
- return;
-
- row = webkit_dom_document_get_element_by_id (
- view->priv->dom_document, TABLE_ROW_STATUS);
- webkit_dom_html_element_set_hidden (
- WEBKIT_DOM_HTML_ELEMENT (row), (view->priv->status == NULL));
-
- col = webkit_dom_element_get_last_element_child (row);
- webkit_dom_html_element_set_inner_html (
- WEBKIT_DOM_HTML_ELEMENT (col),
- view->priv->status ? view->priv->status : "",
- NULL);
-}
-
-const gchar *
-itip_view_get_status (ItipView *view)
-{
- g_return_val_if_fail (ITIP_IS_VIEW (view), NULL);
-
- return view->priv->status;
-}
-
-void
-itip_view_set_comment (ItipView *view,
- const gchar *comment)
-{
- WebKitDOMElement *row, *col;
-
- g_return_if_fail (ITIP_IS_VIEW (view));
-
- if (view->priv->comment)
- g_free (view->priv->comment);
-
- view->priv->comment = comment ? g_strstrip (e_utf8_ensure_valid (comment)) : NULL;
-
- if (!view->priv->dom_document)
- return;
-
- row = webkit_dom_document_get_element_by_id (
- view->priv->dom_document, TABLE_ROW_COMMENT);
- webkit_dom_html_element_set_hidden (
- WEBKIT_DOM_HTML_ELEMENT (row), (view->priv->comment == NULL));
-
- col = webkit_dom_element_get_last_element_child (row);
- webkit_dom_html_element_set_inner_html (
- WEBKIT_DOM_HTML_ELEMENT (col),
- view->priv->comment ? view->priv->comment : "",
- NULL);
-}
-
-const gchar *
-itip_view_get_comment (ItipView *view)
-{
- g_return_val_if_fail (ITIP_IS_VIEW (view), NULL);
-
- return view->priv->comment;
-}
-
-void
-itip_view_set_description (ItipView *view,
- const gchar *description)
-{
- WebKitDOMElement *div;
-
- g_return_if_fail (ITIP_IS_VIEW (view));
-
- if (view->priv->description)
- g_free (view->priv->description);
-
- view->priv->description = description ? g_strstrip (e_utf8_ensure_valid (description)) : NULL;
-
- if (!view->priv->dom_document)
- return;
-
- div = webkit_dom_document_get_element_by_id (
- view->priv->dom_document, TABLE_ROW_DESCRIPTION);
- webkit_dom_html_element_set_hidden (
- WEBKIT_DOM_HTML_ELEMENT (div), (view->priv->description == NULL));
-
- webkit_dom_html_element_set_inner_html (
- WEBKIT_DOM_HTML_ELEMENT (div),
- view->priv->description ? view->priv->description : "",
- NULL);
-}
-
-const gchar *
-itip_view_get_description (ItipView *view)
-{
- g_return_val_if_fail (ITIP_IS_VIEW (view), NULL);
-
- return view->priv->description;
-}
-
-void
-itip_view_set_start (ItipView *view,
- struct tm *start,
- gboolean is_date)
-{
- ItipViewPrivate *priv;
-
- g_return_if_fail (ITIP_IS_VIEW (view));
-
- priv = view->priv;
-
- if (priv->start_tm && !start) {
- g_free (priv->start_tm);
- priv->start_tm = NULL;
- } else if (start) {
- if (!priv->start_tm)
- priv->start_tm = g_new0 (struct tm, 1);
-
- *priv->start_tm = *start;
- }
-
- priv->start_tm_is_date = is_date && start;
-
- update_start_end_times (view);
-}
-
-const struct tm *
-itip_view_get_start (ItipView *view,
- gboolean *is_date)
-{
- g_return_val_if_fail (ITIP_IS_VIEW (view), NULL);
-
- if (is_date)
- *is_date = view->priv->start_tm_is_date;
-
- return view->priv->start_tm;
-}
-
-void
-itip_view_set_end (ItipView *view,
- struct tm *end,
- gboolean is_date)
-{
- ItipViewPrivate *priv;
-
- g_return_if_fail (ITIP_IS_VIEW (view));
-
- priv = view->priv;
-
- if (priv->end_tm && !end) {
- g_free (priv->end_tm);
- priv->end_tm = NULL;
- } else if (end) {
- if (!priv->end_tm)
- priv->end_tm = g_new0 (struct tm, 1);
-
- *priv->end_tm = *end;
- }
-
- priv->end_tm_is_date = is_date && end;
-
- update_start_end_times (view);
-}
-
-const struct tm *
-itip_view_get_end (ItipView *view,
- gboolean *is_date)
-{
- g_return_val_if_fail (ITIP_IS_VIEW (view), NULL);
-
- if (is_date)
- *is_date = view->priv->end_tm_is_date;
-
- return view->priv->end_tm;
-}
-
-guint
-itip_view_add_upper_info_item (ItipView *view,
- ItipViewInfoItemType type,
- const gchar *message)
-{
- ItipViewPrivate *priv;
- ItipViewInfoItem *item;
-
- g_return_val_if_fail (ITIP_IS_VIEW (view), 0);
-
- priv = view->priv;
-
- item = g_new0 (ItipViewInfoItem, 1);
-
- item->type = type;
- item->message = e_utf8_ensure_valid (message);
- item->id = priv->next_info_item_id++;
-
- priv->upper_info_items = g_slist_append (priv->upper_info_items, item);
-
- if (!view->priv->dom_document)
- return item->id;
-
- append_info_item_row (view, TABLE_UPPER_ITIP_INFO, item);
-
- return item->id;
-}
-
-guint
-itip_view_add_upper_info_item_printf (ItipView *view,
- ItipViewInfoItemType type,
- const gchar *format,
- ...)
-{
- va_list args;
- gchar *message;
- guint id;
-
- g_return_val_if_fail (ITIP_IS_VIEW (view), 0);
-
- va_start (args, format);
- message = g_strdup_vprintf (format, args);
- va_end (args);
-
- id = itip_view_add_upper_info_item (view, type, message);
- g_free (message);
-
- return id;
-}
-
-void
-itip_view_remove_upper_info_item (ItipView *view,
- guint id)
-{
- ItipViewPrivate *priv;
- GSList *l;
-
- g_return_if_fail (ITIP_IS_VIEW (view));
-
- priv = view->priv;
-
- for (l = priv->upper_info_items; l; l = l->next) {
- ItipViewInfoItem *item = l->data;
-
- if (item->id == id) {
- priv->upper_info_items = g_slist_remove (priv->upper_info_items, item);
-
- g_free (item->message);
- g_free (item);
-
- if (!view->priv->dom_document)
- remove_info_item_row (view, TABLE_UPPER_ITIP_INFO, id);
-
- return;
- }
- }
-}
-
-void
-itip_view_clear_upper_info_items (ItipView *view)
-{
- ItipViewPrivate *priv;
- GSList *l;
-
- g_return_if_fail (ITIP_IS_VIEW (view));
-
- priv = view->priv;
-
- for (l = priv->upper_info_items; l; l = l->next) {
- ItipViewInfoItem *item = l->data;
-
- if (view->priv->dom_document)
- remove_info_item_row (view, TABLE_UPPER_ITIP_INFO, item->id);
-
- g_free (item->message);
- g_free (item);
- }
-
- g_slist_free (priv->upper_info_items);
- priv->upper_info_items = NULL;
-}
-
-guint
-itip_view_add_lower_info_item (ItipView *view,
- ItipViewInfoItemType type,
- const gchar *message)
-{
- ItipViewPrivate *priv;
- ItipViewInfoItem *item;
-
- g_return_val_if_fail (ITIP_IS_VIEW (view), 0);
-
- priv = view->priv;
-
- item = g_new0 (ItipViewInfoItem, 1);
-
- item->type = type;
- item->message = e_utf8_ensure_valid (message);
- item->id = priv->next_info_item_id++;
-
- priv->lower_info_items = g_slist_append (priv->lower_info_items, item);
-
- if (!view->priv->dom_document)
- return item->id;
-
- append_info_item_row (view, TABLE_LOWER_ITIP_INFO, item);
-
- return item->id;
-}
-
-guint
-itip_view_add_lower_info_item_printf (ItipView *view,
- ItipViewInfoItemType type,
- const gchar *format,
- ...)
-{
- va_list args;
- gchar *message;
- guint id;
-
- g_return_val_if_fail (ITIP_IS_VIEW (view), 0);
-
- va_start (args, format);
- message = g_strdup_vprintf (format, args);
- va_end (args);
-
- id = itip_view_add_lower_info_item (view, type, message);
- g_free (message);
-
- return id;
-}
-
-void
-itip_view_remove_lower_info_item (ItipView *view,
- guint id)
-{
- ItipViewPrivate *priv;
- GSList *l;
-
- g_return_if_fail (ITIP_IS_VIEW (view));
-
- priv = view->priv;
-
- for (l = priv->lower_info_items; l; l = l->next) {
- ItipViewInfoItem *item = l->data;
-
- if (item->id == id) {
- priv->lower_info_items = g_slist_remove (priv->lower_info_items, item);
-
- g_free (item->message);
- g_free (item);
-
- if (view->priv->dom_document)
- remove_info_item_row (view, TABLE_LOWER_ITIP_INFO, id);
-
- return;
- }
- }
-}
-
-void
-itip_view_clear_lower_info_items (ItipView *view)
-{
- ItipViewPrivate *priv;
- GSList *l;
-
- g_return_if_fail (ITIP_IS_VIEW (view));
-
- priv = view->priv;
-
- for (l = priv->lower_info_items; l; l = l->next) {
- ItipViewInfoItem *item = l->data;
-
- if (view->priv->dom_document)
- remove_info_item_row (view, TABLE_LOWER_ITIP_INFO, item->id);
-
- g_free (item->message);
- g_free (item);
- }
-
- g_slist_free (priv->lower_info_items);
- priv->lower_info_items = NULL;
-}
-
-void
-itip_view_set_source (ItipView *view,
- ESource *source)
-{
- WebKitDOMElement *select;
- WebKitDOMElement *row;
- ESource *selected_source;
- gulong i, len;
-
- g_return_if_fail (ITIP_IS_VIEW (view));
-
- d(printf("Settings default source '%s'\n", e_source_get_display_name (source)));
-
- if (!view->priv->dom_document)
- return;
-
- row = webkit_dom_document_get_element_by_id (
- view->priv->dom_document, TABLE_ROW_ESCB);
- webkit_dom_html_element_set_hidden (
- WEBKIT_DOM_HTML_ELEMENT (row), (source == NULL));
- if (source == NULL)
- return;
-
- select = webkit_dom_document_get_element_by_id (
- view->priv->dom_document, SELECT_ESOURCE);
-
- /* <select> does not emit 'change' event when already selected
- * <option> is re-selected, but we need to notify itip formatter,
- * so that it would make all the buttons sensitive. */
- selected_source = itip_view_ref_source (view);
- if (source == selected_source)
- source_changed_cb (select, NULL, view);
- if (selected_source != NULL)
- g_object_unref (selected_source);
-
- if (webkit_dom_html_select_element_get_disabled (
- WEBKIT_DOM_HTML_SELECT_ELEMENT (select))) {
- webkit_dom_html_select_element_set_disabled (
- WEBKIT_DOM_HTML_SELECT_ELEMENT (select), FALSE);
- }
-
- len = webkit_dom_html_select_element_get_length (
- WEBKIT_DOM_HTML_SELECT_ELEMENT (select));
- for (i = 0; i < len; i++) {
-
- WebKitDOMNode *node;
- WebKitDOMHTMLOptionElement *option;
- gchar *value;
-
- node = webkit_dom_html_select_element_item (
- WEBKIT_DOM_HTML_SELECT_ELEMENT (select), i);
- option = WEBKIT_DOM_HTML_OPTION_ELEMENT (node);
-
- value = webkit_dom_html_option_element_get_value (option);
- if (g_strcmp0 (value, e_source_get_uid (source)) == 0) {
- webkit_dom_html_option_element_set_selected (
- option, TRUE);
-
- g_free (value);
- break;
- }
-
- g_free (value);
- }
-}
-
-ESource *
-itip_view_ref_source (ItipView *view)
-{
- ESourceRegistry *registry;
- WebKitDOMElement *select;
- gchar *uid;
- ESource *source;
- gboolean disable = FALSE;
-
- g_return_val_if_fail (ITIP_IS_VIEW (view), NULL);
-
- if (!view->priv->dom_document)
- return NULL;
-
- select = webkit_dom_document_get_element_by_id (
- view->priv->dom_document, SELECT_ESOURCE);
- if (webkit_dom_html_select_element_get_disabled (
- WEBKIT_DOM_HTML_SELECT_ELEMENT (select))) {
- webkit_dom_html_select_element_set_disabled (
- WEBKIT_DOM_HTML_SELECT_ELEMENT (select), FALSE);
- disable = TRUE;
- }
-
- uid = webkit_dom_html_select_element_get_value (
- WEBKIT_DOM_HTML_SELECT_ELEMENT (select));
-
- registry = itip_view_get_registry (view);
- source = e_source_registry_ref_source (registry, uid);
-
- g_free (uid);
-
- if (disable) {
- webkit_dom_html_select_element_set_disabled (
- WEBKIT_DOM_HTML_SELECT_ELEMENT (select), TRUE);
- }
-
- return source;
-}
-
-void
-itip_view_set_rsvp (ItipView *view,
- gboolean rsvp)
-{
- WebKitDOMElement *el;
-
- g_return_if_fail (ITIP_IS_VIEW (view));
-
- if (!view->priv->dom_document)
- return;
-
- el = webkit_dom_document_get_element_by_id (
- view->priv->dom_document, CHECKBOX_RSVP);
- webkit_dom_html_input_element_set_checked (
- WEBKIT_DOM_HTML_INPUT_ELEMENT (el), rsvp);
-
- el = webkit_dom_document_get_element_by_id (
- view->priv->dom_document, TEXTAREA_RSVP_COMMENT);
- webkit_dom_html_text_area_element_set_disabled (
- WEBKIT_DOM_HTML_TEXT_AREA_ELEMENT (el), !rsvp);
-}
-
-gboolean
-itip_view_get_rsvp (ItipView *view)
-{
- WebKitDOMElement *el;
-
- g_return_val_if_fail (ITIP_IS_VIEW (view), FALSE);
-
- if (!view->priv->dom_document)
- return FALSE;
-
- el = webkit_dom_document_get_element_by_id (
- view->priv->dom_document, CHECKBOX_UPDATE);
- return webkit_dom_html_input_element_get_checked (WEBKIT_DOM_HTML_INPUT_ELEMENT (el));
-}
-
-void
-itip_view_set_show_rsvp_check (ItipView *view,
- gboolean show)
-{
- WebKitDOMElement *label;
- WebKitDOMElement *el;
-
- g_return_if_fail (ITIP_IS_VIEW (view));
-
- if (!view->priv->dom_document)
- return;
-
- el = webkit_dom_document_get_element_by_id (
- view->priv->dom_document, "table_row_" CHECKBOX_RSVP);
- webkit_dom_html_element_set_hidden (WEBKIT_DOM_HTML_ELEMENT (el), !show);
-
- el = webkit_dom_document_get_element_by_id (
- view->priv->dom_document, CHECKBOX_RSVP);
- label = webkit_dom_element_get_next_element_sibling (el);
- webkit_dom_html_element_set_hidden (WEBKIT_DOM_HTML_ELEMENT (label), !show);
-
- if (!show) {
- webkit_dom_html_input_element_set_checked (
- WEBKIT_DOM_HTML_INPUT_ELEMENT (el), FALSE);
- }
-
- el = webkit_dom_document_get_element_by_id (
- view->priv->dom_document, TABLE_ROW_RSVP_COMMENT);
- webkit_dom_html_element_set_hidden (WEBKIT_DOM_HTML_ELEMENT (el), !show);
-}
-
-gboolean
-itip_view_get_show_rsvp_check (ItipView *view)
-{
- WebKitDOMElement *el;
-
- g_return_val_if_fail (ITIP_IS_VIEW (view), FALSE);
-
- if (!view->priv->dom_document)
- return FALSE;
-
- el = webkit_dom_document_get_element_by_id (
- view->priv->dom_document, CHECKBOX_RSVP);
- return !webkit_dom_html_element_get_hidden (WEBKIT_DOM_HTML_ELEMENT (el));
-}
-
-void
-itip_view_set_update (ItipView *view,
- gboolean update)
-{
- WebKitDOMElement *el;
-
- g_return_if_fail (ITIP_IS_VIEW (view));
-
- if (!view->priv->dom_document)
- return;
-
- el = webkit_dom_document_get_element_by_id (
- view->priv->dom_document, CHECKBOX_UPDATE);
-
- webkit_dom_html_input_element_set_checked (
- WEBKIT_DOM_HTML_INPUT_ELEMENT (el), update);
-}
-
-gboolean
-itip_view_get_update (ItipView *view)
-{
- WebKitDOMElement *el;
-
- g_return_val_if_fail (ITIP_IS_VIEW (view), FALSE);
-
- if (!view->priv->dom_document)
- return FALSE;
-
- el = webkit_dom_document_get_element_by_id (
- view->priv->dom_document, CHECKBOX_UPDATE);
- return webkit_dom_html_input_element_get_checked (WEBKIT_DOM_HTML_INPUT_ELEMENT (el));
-}
-
-void
-itip_view_set_show_update_check (ItipView *view,
- gboolean show)
-{
- WebKitDOMElement *label;
- WebKitDOMElement *el;
-
- g_return_if_fail (ITIP_IS_VIEW (view));
-
- if (!view->priv->dom_document)
- return;
-
- el = webkit_dom_document_get_element_by_id (
- view->priv->dom_document, "table_row_" CHECKBOX_UPDATE);
- webkit_dom_html_element_set_hidden (WEBKIT_DOM_HTML_ELEMENT (el), !show);
-
- el = webkit_dom_document_get_element_by_id (
- view->priv->dom_document, CHECKBOX_UPDATE);
- label = webkit_dom_element_get_next_element_sibling (el);
- webkit_dom_html_element_set_hidden (WEBKIT_DOM_HTML_ELEMENT (label), !show);
-
- if (!show) {
- webkit_dom_html_input_element_set_checked (
- WEBKIT_DOM_HTML_INPUT_ELEMENT (el), FALSE);
- }
-}
-
-gboolean
-itip_view_get_show_update_check (ItipView *view)
-{
- WebKitDOMElement *el;
-
- g_return_val_if_fail (ITIP_IS_VIEW (view), FALSE);
-
- if (!view->priv->dom_document)
- return FALSE;
-
- el = webkit_dom_document_get_element_by_id (
- view->priv->dom_document, CHECKBOX_UPDATE);
- return !webkit_dom_html_element_get_hidden (WEBKIT_DOM_HTML_ELEMENT (el));
-}
-
-void
-itip_view_set_rsvp_comment (ItipView *view,
- const gchar *comment)
-{
- WebKitDOMElement *el;
-
- g_return_if_fail (ITIP_IS_VIEW (view));
-
- if (!view->priv->dom_document)
- return;
-
- el = webkit_dom_document_get_element_by_id (
- view->priv->dom_document, TEXTAREA_RSVP_COMMENT);
- webkit_dom_html_element_set_hidden (
- WEBKIT_DOM_HTML_ELEMENT (el), (comment == NULL));
-
- if (comment) {
- webkit_dom_html_text_area_element_set_value (
- WEBKIT_DOM_HTML_TEXT_AREA_ELEMENT (el), comment);
- }
-}
-
-gchar *
-itip_view_get_rsvp_comment (ItipView *view)
-{
- WebKitDOMElement *el;
-
- g_return_val_if_fail (ITIP_IS_VIEW (view), NULL);
-
- if (!view->priv->dom_document)
- return NULL;
-
- el = webkit_dom_document_get_element_by_id (
- view->priv->dom_document, TEXTAREA_RSVP_COMMENT);
-
- if (webkit_dom_html_element_get_hidden (WEBKIT_DOM_HTML_ELEMENT (el))) {
- return NULL;
- }
-
- return webkit_dom_html_text_area_element_get_value (
- WEBKIT_DOM_HTML_TEXT_AREA_ELEMENT (el));
-}
-
-void
-itip_view_set_needs_decline (ItipView *view,
- gboolean needs_decline)
-{
- g_return_if_fail (ITIP_IS_VIEW (view));
-
- view->priv->needs_decline = needs_decline;
-}
-
-void
-itip_view_set_buttons_sensitive (ItipView *view,
- gboolean sensitive)
-{
- WebKitDOMElement *el, *cell;
-
- g_return_if_fail (ITIP_IS_VIEW (view));
-
- d(printf("Settings buttons %s\n", sensitive ? "sensitive" : "insensitive"));
-
- view->priv->buttons_sensitive = sensitive;
-
- if (!view->priv->dom_document)
- return;
-
- el = webkit_dom_document_get_element_by_id (
- view->priv->dom_document, CHECKBOX_UPDATE);
- webkit_dom_html_input_element_set_disabled (
- WEBKIT_DOM_HTML_INPUT_ELEMENT (el), !sensitive);
-
- el = webkit_dom_document_get_element_by_id (
- view->priv->dom_document, CHECKBOX_RECUR);
- webkit_dom_html_input_element_set_disabled (
- WEBKIT_DOM_HTML_INPUT_ELEMENT (el), !sensitive);
-
- el = webkit_dom_document_get_element_by_id (
- view->priv->dom_document, CHECKBOX_FREE_TIME);
- webkit_dom_html_input_element_set_disabled (
- WEBKIT_DOM_HTML_INPUT_ELEMENT (el), !sensitive);
-
- el = webkit_dom_document_get_element_by_id (
- view->priv->dom_document, CHECKBOX_KEEP_ALARM);
- webkit_dom_html_input_element_set_disabled (
- WEBKIT_DOM_HTML_INPUT_ELEMENT (el), !sensitive);
-
- el = webkit_dom_document_get_element_by_id (
- view->priv->dom_document, CHECKBOX_INHERIT_ALARM);
- webkit_dom_html_input_element_set_disabled (
- WEBKIT_DOM_HTML_INPUT_ELEMENT (el), !sensitive);
-
- el = webkit_dom_document_get_element_by_id (
- view->priv->dom_document, CHECKBOX_RSVP);
- webkit_dom_html_input_element_set_disabled (
- WEBKIT_DOM_HTML_INPUT_ELEMENT (el), !sensitive);
-
- el = webkit_dom_document_get_element_by_id (
- view->priv->dom_document, TEXTAREA_RSVP_COMMENT);
- webkit_dom_html_text_area_element_set_disabled (
- WEBKIT_DOM_HTML_TEXT_AREA_ELEMENT (el), !sensitive);
-
- el = webkit_dom_document_get_element_by_id (
- view->priv->dom_document, SELECT_ESOURCE);
- webkit_dom_html_select_element_set_disabled (
- WEBKIT_DOM_HTML_SELECT_ELEMENT (el), !sensitive);
-
- el = webkit_dom_document_get_element_by_id (
- view->priv->dom_document, TABLE_ROW_BUTTONS);
- cell = webkit_dom_element_get_first_element_child (el);
- do {
- WebKitDOMElement *btn;
- btn = webkit_dom_element_get_first_element_child (cell);
- if (!webkit_dom_html_element_get_hidden (
- WEBKIT_DOM_HTML_ELEMENT (btn))) {
- webkit_dom_html_button_element_set_disabled (
- WEBKIT_DOM_HTML_BUTTON_ELEMENT (btn), !sensitive);
- }
- } while ((cell = webkit_dom_element_get_next_element_sibling (cell)) != NULL);
-}
-
-gboolean
-itip_view_get_buttons_sensitive (ItipView *view)
-{
- g_return_val_if_fail (ITIP_IS_VIEW (view), FALSE);
-
- return view->priv->buttons_sensitive;
-}
-
-gboolean
-itip_view_get_recur_check_state (ItipView *view)
-{
- WebKitDOMElement *el;
-
- g_return_val_if_fail (ITIP_IS_VIEW (view), FALSE);
-
- if (!view->priv->dom_document)
- return FALSE;
-
- el = webkit_dom_document_get_element_by_id (
- view->priv->dom_document, CHECKBOX_RECUR);
- return webkit_dom_html_input_element_get_checked (
- WEBKIT_DOM_HTML_INPUT_ELEMENT (el));
-}
-
-void
-itip_view_set_show_recur_check (ItipView *view,
- gboolean show)
-{
- WebKitDOMElement *label;
- WebKitDOMElement *el;
-
- g_return_if_fail (ITIP_IS_VIEW (view));
-
- if (!view->priv->dom_document)
- return;
-
- el = webkit_dom_document_get_element_by_id (
- view->priv->dom_document, "table_row_" CHECKBOX_RECUR);
- webkit_dom_html_element_set_hidden (WEBKIT_DOM_HTML_ELEMENT (el), !show);
-
- el = webkit_dom_document_get_element_by_id (
- view->priv->dom_document, CHECKBOX_RECUR);
- label = webkit_dom_element_get_next_element_sibling (el);
- webkit_dom_html_element_set_hidden (WEBKIT_DOM_HTML_ELEMENT (label), !show);
-
- if (!show) {
- webkit_dom_html_input_element_set_checked (
- WEBKIT_DOM_HTML_INPUT_ELEMENT (el), FALSE);
- }
-
- /* and update state of the second check */
- alarm_check_toggled_cb (
- WEBKIT_DOM_HTML_INPUT_ELEMENT (el),
- NULL, view);
-}
-
-void
-itip_view_set_show_free_time_check (ItipView *view,
- gboolean show)
-{
- WebKitDOMElement *label;
- WebKitDOMElement *el;
-
- g_return_if_fail (ITIP_IS_VIEW (view));
-
- if (!view->priv->dom_document)
- return;
-
- el = webkit_dom_document_get_element_by_id (
- view->priv->dom_document, "table_row_" CHECKBOX_FREE_TIME);
- webkit_dom_html_element_set_hidden (WEBKIT_DOM_HTML_ELEMENT (el), !show);
-
- el = webkit_dom_document_get_element_by_id (
- view->priv->dom_document, CHECKBOX_FREE_TIME);
- label = webkit_dom_element_get_next_element_sibling (el);
- webkit_dom_html_element_set_hidden (WEBKIT_DOM_HTML_ELEMENT (label), !show);
-
- if (!show) {
- webkit_dom_html_input_element_set_checked (
- WEBKIT_DOM_HTML_INPUT_ELEMENT (el), FALSE);
- }
-
- /* and update state of the second check */
- alarm_check_toggled_cb (
- WEBKIT_DOM_HTML_INPUT_ELEMENT (el),
- NULL, view);
-}
-
-gboolean
-itip_view_get_free_time_check_state (ItipView *view)
-{
- WebKitDOMElement *el;
-
- g_return_val_if_fail (ITIP_IS_VIEW (view), FALSE);
-
- if (!view->priv->dom_document)
- return FALSE;
-
- el = webkit_dom_document_get_element_by_id (
- view->priv->dom_document, CHECKBOX_FREE_TIME);
- return webkit_dom_html_input_element_get_checked (
- WEBKIT_DOM_HTML_INPUT_ELEMENT (el));
-}
-
-void
-itip_view_set_show_keep_alarm_check (ItipView *view,
- gboolean show)
-{
- WebKitDOMElement *label;
- WebKitDOMElement *el;
-
- g_return_if_fail (ITIP_IS_VIEW (view));
-
- if (!view->priv->dom_document)
- return;
-
- el = webkit_dom_document_get_element_by_id (
- view->priv->dom_document, "table_row_" CHECKBOX_KEEP_ALARM);
- webkit_dom_html_element_set_hidden (WEBKIT_DOM_HTML_ELEMENT (el), !show);
-
- el = webkit_dom_document_get_element_by_id (
- view->priv->dom_document, CHECKBOX_KEEP_ALARM);
- label = webkit_dom_element_get_next_element_sibling (el);
- webkit_dom_html_element_set_hidden (WEBKIT_DOM_HTML_ELEMENT (label), !show);
-
- if (!show) {
- webkit_dom_html_input_element_set_checked (
- WEBKIT_DOM_HTML_INPUT_ELEMENT (el), FALSE);
- }
-
- /* and update state of the second check */
- alarm_check_toggled_cb (
- WEBKIT_DOM_HTML_INPUT_ELEMENT (el),
- NULL, view);
-}
-
-gboolean
-itip_view_get_keep_alarm_check_state (ItipView *view)
-{
- WebKitDOMElement *el;
-
- g_return_val_if_fail (ITIP_IS_VIEW (view), FALSE);
-
- if (!view->priv->dom_document)
- return FALSE;
-
- el = webkit_dom_document_get_element_by_id (
- view->priv->dom_document, CHECKBOX_KEEP_ALARM);
- return webkit_dom_html_input_element_get_checked (
- WEBKIT_DOM_HTML_INPUT_ELEMENT (el));
-}
-
-void
-itip_view_set_show_inherit_alarm_check (ItipView *view,
- gboolean show)
-{
- WebKitDOMElement *label;
- WebKitDOMElement *el;
-
- g_return_if_fail (ITIP_IS_VIEW (view));
-
- if (!view->priv->dom_document)
- return;
-
- el = webkit_dom_document_get_element_by_id (
- view->priv->dom_document, "table_row_" CHECKBOX_INHERIT_ALARM);
- webkit_dom_html_element_set_hidden (WEBKIT_DOM_HTML_ELEMENT (el), !show);
-
- el = webkit_dom_document_get_element_by_id (
- view->priv->dom_document, CHECKBOX_INHERIT_ALARM);
- label = webkit_dom_element_get_next_element_sibling (el);
- webkit_dom_html_element_set_hidden (WEBKIT_DOM_HTML_ELEMENT (label), !show);
-
- if (!show) {
- webkit_dom_html_input_element_set_checked (
- WEBKIT_DOM_HTML_INPUT_ELEMENT (el), FALSE);
- }
-
- /* and update state of the second check */
- alarm_check_toggled_cb (
- WEBKIT_DOM_HTML_INPUT_ELEMENT (el),
- NULL, view);
-}
-
-gboolean
-itip_view_get_inherit_alarm_check_state (ItipView *view)
-{
- WebKitDOMElement *el;
-
- g_return_val_if_fail (ITIP_IS_VIEW (view), FALSE);
-
- if (!view->priv->dom_document)
- return FALSE;
-
- el = webkit_dom_document_get_element_by_id (
- view->priv->dom_document, CHECKBOX_INHERIT_ALARM);
- return webkit_dom_html_input_element_get_checked (
- WEBKIT_DOM_HTML_INPUT_ELEMENT (el));
-}
-
-void
-itip_view_set_error (ItipView *view,
- const gchar *error_html,
- gboolean show_save_btn)
-{
- WebKitDOMElement *content, *error;
- GString *str;
-
- g_return_if_fail (ITIP_IS_VIEW (view));
- g_return_if_fail (error_html);
-
- str = g_string_new (error_html);
-
- if (show_save_btn) {
- g_string_append (str,
- "<table border=\"0\" width=\"100%\">"
- "<tr width=\"100%\" id=\"" TABLE_ROW_BUTTONS "\">");
-
- buttons_table_write_button (
- str, BUTTON_SAVE, _("_Save"),
- GTK_STOCK_SAVE, ITIP_VIEW_RESPONSE_SAVE);
-
- g_string_append (str, "</tr></table>");
- }
-
- view->priv->error = str->str;
- g_string_free (str, FALSE);
-
- if (!view->priv->dom_document)
- return;
-
- content = webkit_dom_document_get_element_by_id (
- view->priv->dom_document, DIV_ITIP_CONTENT);
- webkit_dom_html_element_set_hidden (
- WEBKIT_DOM_HTML_ELEMENT (content), TRUE);
-
- error = webkit_dom_document_get_element_by_id (
- view->priv->dom_document, DIV_ITIP_ERROR);
- webkit_dom_html_element_set_hidden (
- WEBKIT_DOM_HTML_ELEMENT (error), FALSE);
-
- webkit_dom_html_element_set_inner_html (
- WEBKIT_DOM_HTML_ELEMENT (error), view->priv->error, NULL);
-
- if (show_save_btn) {
- WebKitDOMElement *el;
-
- show_button (view, BUTTON_SAVE);
-
- el = webkit_dom_document_get_element_by_id (
- view->priv->dom_document, BUTTON_SAVE);
- webkit_dom_event_target_add_event_listener (
- WEBKIT_DOM_EVENT_TARGET (el), "click",
- G_CALLBACK (button_clicked_cb), FALSE, view);
- }
-}