diff options
Diffstat (limited to 'calendar/gncal-full-day.c')
-rw-r--r-- | calendar/gncal-full-day.c | 49 |
1 files changed, 34 insertions, 15 deletions
diff --git a/calendar/gncal-full-day.c b/calendar/gncal-full-day.c index 1af9daa65f..c18866957b 100644 --- a/calendar/gncal-full-day.c +++ b/calendar/gncal-full-day.c @@ -2,7 +2,8 @@ * * Copyright (C) 1998 The Free Software Foundation * - * Author: Federico Mena <quartic@gimp.org> + * Authors: Federico Mena <quartic@gimp.org> + * Miguel de Icaza <miguel@kernel.org> */ #include <string.h> @@ -12,7 +13,7 @@ #include "eventedit.h" #include "gncal-full-day.h" #include "view-utils.h" - +#include "main.h" #define TEXT_BORDER 2 #define HANDLE_SIZE 8 @@ -341,16 +342,16 @@ new_appointment (GtkWidget *widget, gpointer data) { GncalFullDay *fullday; GtkWidget *ee; - + iCalObject *ico; + time_t lower, upper; + fullday = GNCAL_FULL_DAY (data); - /* FIXME: this should set up the start/end times in the event - * editor to whatever the selection range is. If there is no - * selection, then default to something sensible, like the row - * at which the button was clicked on when popping up the menu. - */ - - ee = event_editor_new (fullday->calendar, NULL); + ico = ical_new ("", user_name, ""); + ico->new = 1; + + gncal_full_day_selection_range (fullday, &ico->dtstart, &ico->dtend); + ee = event_editor_new (fullday->calendar, ico); gtk_widget_show (ee); } @@ -695,7 +696,7 @@ calc_labels_width (GncalFullDay *fullday) struct tm cur, upper; time_t tim, time_upper; int width, max_w; - char buf[256]; + char buf[40]; get_tm_range (fullday, fullday->lower, fullday->upper, &cur, &upper, NULL, NULL); @@ -705,7 +706,11 @@ calc_labels_width (GncalFullDay *fullday) time_upper = mktime (&upper); while (tim < time_upper) { - strftime (buf, 256, "%X", &cur); + if (am_pm_flag) + strftime (buf, sizeof (buf), "%I:%M%p", &cur); + else + strftime (buf, sizeof (buf), "%H:%M", &cur); + width = gdk_string_width (GTK_WIDGET (fullday)->style->font, buf); @@ -1006,7 +1011,7 @@ paint_back (GncalFullDay *fullday, GdkRectangle *area) int i, y; GdkGC *gc; struct tm tm; - char buf[256]; + char buf [40]; widget = GTK_WIDGET (fullday); @@ -1143,7 +1148,10 @@ paint_back (GncalFullDay *fullday, GdkRectangle *area) mktime (&tm); if (gdk_rectangle_intersect (&rect, area, &dest)) { - strftime (buf, 256, "%X", &tm); + if (am_pm_flag) + strftime (buf, sizeof (buf), "%I:%M%p", &tm); + else + strftime (buf, sizeof (buf), "%H:%M", &tm); if ((di->sel_rows_used != 0) && (i >= di->sel_start_row) @@ -1984,8 +1992,19 @@ gncal_full_day_selection_range (GncalFullDay *fullday, time_t *lower, time_t *up di = fullday->drag_info; - if (di->sel_rows_used == 0) + if (di->sel_rows_used == 0){ + time_t now = time (NULL); + struct tm tm = *localtime (&now); + struct tm thisd = *localtime (&fullday->lower); + + thisd.tm_hour = tm.tm_hour; + thisd.tm_min = tm.tm_min; + thisd.tm_sec = 0; + *lower = mktime (&thisd); + thisd.tm_hour++; + *upper = mktime (&thisd); return FALSE; + } get_time_from_rows (fullday, di->sel_start_row, di->sel_rows_used, &alower, &aupper); |