aboutsummaryrefslogtreecommitdiffstats
path: root/plugins/itip-formatter/itip-view.c
diff options
context:
space:
mode:
authorDan Vrátil <dvratil@redhat.com>2012-06-06 21:29:38 +0800
committerDan Vrátil <dvratil@redhat.com>2012-06-06 21:29:38 +0800
commit931191474643164e96b5778c790e42cca517e729 (patch)
treeaec00f3303dbcd95a8a3f18ee324ac80594ff9b5 /plugins/itip-formatter/itip-view.c
parent5b8340563c271fb684a88c6e5bb6dd3bfb629058 (diff)
downloadgsoc2013-evolution-931191474643164e96b5778c790e42cca517e729.tar
gsoc2013-evolution-931191474643164e96b5778c790e42cca517e729.tar.gz
gsoc2013-evolution-931191474643164e96b5778c790e42cca517e729.tar.bz2
gsoc2013-evolution-931191474643164e96b5778c790e42cca517e729.tar.lz
gsoc2013-evolution-931191474643164e96b5778c790e42cca517e729.tar.xz
gsoc2013-evolution-931191474643164e96b5778c790e42cca517e729.tar.zst
gsoc2013-evolution-931191474643164e96b5778c790e42cca517e729.zip
Mail formatter rewrite - convert some plugins to modules
audio-inline, itip-formatter, prefer-plain, tnef-attachments and vcard-inline plugins were converted to modules so that they can fit into concept of the new formatter. Every module still installs .eplug file, because there is no suitable API at the moment to register plugins to the plugins dialog and to extend the Preferences dialog.
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);
- }
-}