aboutsummaryrefslogtreecommitdiffstats
path: root/calendar/gui/dialogs
diff options
context:
space:
mode:
authorDamon Chaplin <damon@ximian.com>2001-07-31 06:21:13 +0800
committerDamon Chaplin <damon@src.gnome.org>2001-07-31 06:21:13 +0800
commitb7e0730aab5e67535dd8bcd70e400869fa55601b (patch)
tree4f5e56303fbad308b9bada27e7706e80ab8305c6 /calendar/gui/dialogs
parentbf408fed06a3da3336303f2d1085d1d6e5df3ce4 (diff)
downloadgsoc2013-evolution-b7e0730aab5e67535dd8bcd70e400869fa55601b.tar.gz
gsoc2013-evolution-b7e0730aab5e67535dd8bcd70e400869fa55601b.tar.zst
gsoc2013-evolution-b7e0730aab5e67535dd8bcd70e400869fa55601b.zip
started some code to show the currently displayed dates in the folder
2001-07-30 Damon Chaplin <damon@ximian.com> * gui/gnome-cal.c: * gui/calendar-commands.c (clear_folder_bar_label): started some code to show the currently displayed dates in the folder title bar. Unfinished. * gui/e-itip-control.c (set_date_label): * conduits/todo/todo-conduit.c (local_record_from_comp): * conduits/calendar/calendar-conduit.c (local_record_from_comp): free the CalComponentDateTimes. (Note the iTIP control needs updating for timezone support.) * cal-util/cal-component.c: Changed CalComponentDateTime so that the TZID is malloc'ed and freed rather than being a pointer to a static string. This was causing problems as sometimes we were freeing the string that was being pointed to, so we got corrupted TZIDs. * gui/comp-util.c (cal_comp_util_add_exdate): set TZID to NULL. DATE values do not have timezones. * gui/e-week-view.c: * gui/e-day-view.c: Moved 'Paste' after the New Appointment commands, since I think they are more commonly-used. Also added underlined accelerator keys. * gui/e-calendar-table.c: changed 'Edit this task' to 'Open' in the popup menu to be consistent with other folders, and separated from the clipboard commands. Also changed to use EPopupMenu so the accelerators work, and the masks may be useful at some point. * gui/dialogs/recurrence-page.c: use DATE values for UNTIL, since that makes it simpler. Fixes bug #5034. * gui/calendar-config.c (calendar_config_set_timezone): strdup the location string. Fixes bug #4990. * gui/tag-calendar.c (tag_calendar_cb): take 1 off iend as the times don't include the end time. * gui/e-week-view-layout.c (e_week_view_layout_event): fixed days_shown. Fixes bug #5709. * cal-client/cal-client.c (cal_client_get_timezone): took out some debugging messages. svn path=/trunk/; revision=11494
Diffstat (limited to 'calendar/gui/dialogs')
-rw-r--r--calendar/gui/dialogs/recurrence-page.c71
1 files changed, 28 insertions, 43 deletions
diff --git a/calendar/gui/dialogs/recurrence-page.c b/calendar/gui/dialogs/recurrence-page.c
index b60a9f6b48..5c7e7d65cb 100644
--- a/calendar/gui/dialogs/recurrence-page.c
+++ b/calendar/gui/dialogs/recurrence-page.c
@@ -44,10 +44,6 @@
-/* We set this as the TZID on all exceptions added. When we actually fill
- the component, we replace it with the TZID from DTSTART. */
-static char *DUMMY_TZID = "DUMMY";
-
enum month_day_options {
MONTH_DAY_NTH,
MONTH_DAY_MON,
@@ -146,7 +142,7 @@ struct _RecurrencePagePrivate {
/* For ending date, created by hand */
GtkWidget *ending_date_edit;
- time_t ending_date;
+ struct icaltimetype ending_date_tt;
/* For ending count of occurrences, created by hand */
GtkWidget *ending_count_spin;
@@ -298,6 +294,7 @@ free_exception_clist_data (RecurrencePage *rpage)
dt = gtk_clist_get_row_data (clist, i);
g_free (dt->value);
+ g_free ((char*)dt->tzid);
g_free (dt);
gtk_clist_set_row_data (clist, i, NULL);
}
@@ -403,7 +400,7 @@ clear_widgets (RecurrencePage *rpage)
freq_map);
gtk_signal_handler_unblock_by_data (GTK_OBJECT (menu), rpage);
- priv->ending_date = time (NULL);
+ priv->ending_date_tt = icaltime_today ();
priv->ending_count = 1;
menu = gtk_option_menu_get_menu (GTK_OPTION_MENU (priv->ending_menu));
@@ -456,7 +453,7 @@ append_exception (RecurrencePage *rpage, CalComponentDateTime *datetime)
dt = g_new (CalComponentDateTime, 1);
dt->value = g_new (struct icaltimetype, 1);
*dt->value = *datetime->value;
- dt->tzid = datetime->tzid;
+ dt->tzid = g_strdup (datetime->tzid);
clist = GTK_CLIST (priv->exception_list);
@@ -760,15 +757,16 @@ simple_recur_to_comp (RecurrencePage *rpage, CalComponent *comp)
g_assert (priv->ending_date_edit != NULL);
g_assert (E_IS_DATE_EDIT (priv->ending_date_edit));
+ /* We only allow a DATE value to be set for the UNTIL property,
+ since we don't support sub-day recurrences. */
date_set = e_date_edit_get_date (E_DATE_EDIT (priv->ending_date_edit),
&r.until.year,
&r.until.month,
&r.until.day);
- e_date_edit_get_time_of_day (E_DATE_EDIT (priv->ending_date_edit),
- &r.until.hour,
- &r.until.minute);
g_assert (date_set);
+ r.until.is_date = 1;
+
break;
case ENDING_FOREVER:
@@ -794,11 +792,9 @@ static void
fill_component (RecurrencePage *rpage, CalComponent *comp)
{
RecurrencePagePrivate *priv;
- CalComponentDateTime start_date;
enum recur_type recur_type;
GtkCList *exception_list;
GSList *list;
- const char *tzid;
int i;
priv = rpage->priv;
@@ -828,10 +824,6 @@ fill_component (RecurrencePage *rpage, CalComponent *comp)
/* Set exceptions */
- cal_component_get_dtstart (comp, &start_date);
- tzid = start_date.tzid;
- cal_component_free_datetime (&start_date);
-
list = NULL;
exception_list = GTK_CLIST (priv->exception_list);
for (i = 0; i < exception_list->rows; i++) {
@@ -844,15 +836,9 @@ fill_component (RecurrencePage *rpage, CalComponent *comp)
g_assert (dt != NULL);
*cdt->value = *dt->value;
+ cdt->tzid = g_strdup (dt->tzid);
- /* If the dummy TZID was used, we use the TZID from the
- start date. We do this because we don't allow editing
- of timezones for RDATEs, so we try to use the same timezone
- as the DTSTART for all new exceptions added. */
- if (dt->tzid == DUMMY_TZID)
- cdt->tzid = tzid;
- else
- cdt->tzid = dt->tzid;
+ g_print ("Adding exception is_date: %i\n", cdt->value->is_date);
list = g_slist_prepend (list, cdt);
}
@@ -1236,7 +1222,9 @@ make_ending_until_special (RecurrencePage *rpage)
/* Set the value */
- e_date_edit_set_time (de, priv->ending_date);
+ e_date_edit_set_date (de, priv->ending_date_tt.year,
+ priv->ending_date_tt.month,
+ priv->ending_date_tt.day);
gtk_signal_connect (GTK_OBJECT (de), "changed",
GTK_SIGNAL_FUNC (ending_until_changed_cb), rpage);
@@ -1365,8 +1353,7 @@ fill_ending_date (RecurrencePage *rpage, struct icalrecurrencetype *r)
} else {
/* Ending date */
- /* FIXME: UNTIL needs to be checked. */
- priv->ending_date = icaltime_as_timet (r->until);
+ priv->ending_date_tt = r->until;
e_dialog_option_menu_set (priv->ending_menu,
ENDING_UNTIL,
ending_types_map);
@@ -1787,12 +1774,10 @@ recurrence_page_set_dates (CompEditorPage *page, CompEditorPageDates *dates)
/* Copy the TZID from the old property.
FIXME: Should get notified when the TZID changes.*/
cal_component_get_dtstart (priv->comp, &old_dt);
- dt.tzid = NULL;
- if (old_dt.tzid)
- dt.tzid = old_dt.tzid;
- cal_component_free_datetime (&old_dt);
+ dt.tzid = old_dt.tzid;
cal_component_set_dtstart (priv->comp, &dt);
+ cal_component_free_datetime (&old_dt);
}
if (dates->end) {
@@ -1801,12 +1786,10 @@ recurrence_page_set_dates (CompEditorPage *page, CompEditorPageDates *dates)
/* Copy the TZID from the old property.
FIXME: Should get notified when the TZID changes.*/
cal_component_get_dtend (priv->comp, &old_dt);
- dt.tzid = NULL;
- if (old_dt.tzid)
- dt.tzid = old_dt.tzid;
- cal_component_free_datetime (&old_dt);
+ dt.tzid = old_dt.tzid;
cal_component_set_dtend (priv->comp, &dt);
+ cal_component_free_datetime (&old_dt);
}
/* Update the weekday picker if necessary */
@@ -1977,19 +1960,15 @@ exception_add_cb (GtkWidget *widget, gpointer data)
field_changed (rpage);
dt.value = &icaltime;
- /* We set this to the dummy TZID for now. When we fill the component
- we will replace it with the TZID from DTSTART. */
- dt.tzid = DUMMY_TZID;
+ /* We use DATE values for exceptions, so we don't need a TZID. */
+ dt.tzid = NULL;
icaltime.is_date = 1;
date_set = e_date_edit_get_date (E_DATE_EDIT (priv->exception_date),
&icaltime.year,
&icaltime.month,
&icaltime.day);
- e_date_edit_get_time_of_day (E_DATE_EDIT (priv->exception_date),
- &icaltime.hour,
- &icaltime.minute);
g_assert (date_set);
append_exception (rpage, &dt);
@@ -2022,9 +2001,14 @@ exception_modify_cb (GtkWidget *widget, gpointer data)
tt = dt->value;
e_date_edit_get_date (E_DATE_EDIT (priv->exception_date),
&tt->year, &tt->month, &tt->day);
- e_date_edit_get_time_of_day (E_DATE_EDIT (priv->exception_date),
- &tt->hour, &tt->minute);
+ tt->hour = 0;
+ tt->minute = 0;
tt->second = 0;
+ tt->is_date = 1;
+
+ /* We get rid of any old TZID, since we are using a DATE value now. */
+ g_free ((char*)dt->tzid);
+ dt->tzid = NULL;
gtk_clist_set_text (clist, sel, 0, get_exception_string (dt));
@@ -2055,6 +2039,7 @@ exception_delete_cb (GtkWidget *widget, gpointer data)
dt = gtk_clist_get_row_data (clist, sel);
g_assert (dt != NULL);
g_free (dt->value);
+ g_free ((char*)dt->tzid);
g_free (dt);
gtk_clist_remove (clist, sel);