aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--calendar/cal-util/calobj.h2
-rw-r--r--calendar/calobj.h2
-rw-r--r--calendar/eventedit.c12
-rw-r--r--calendar/eventedit.h1
-rw-r--r--calendar/gncal-full-day.c18
-rw-r--r--calendar/gnome-cal.c59
-rw-r--r--calendar/gui/eventedit.c12
-rw-r--r--calendar/gui/eventedit.h1
-rw-r--r--calendar/gui/gncal-full-day.c18
-rw-r--r--calendar/gui/gnome-cal.c59
-rw-r--r--calendar/pcs/calobj.h2
11 files changed, 136 insertions, 50 deletions
diff --git a/calendar/cal-util/calobj.h b/calendar/cal-util/calobj.h
index 560c4ca99e..37ea79040d 100644
--- a/calendar/cal-util/calobj.h
+++ b/calendar/cal-util/calobj.h
@@ -131,6 +131,8 @@ typedef struct {
CalendarAlarm malarm;
Recurrence *recur;
+
+ int new;
} iCalObject;
iCalObject *ical_new (char *comment, char *organizer, char *summary);
diff --git a/calendar/calobj.h b/calendar/calobj.h
index 560c4ca99e..37ea79040d 100644
--- a/calendar/calobj.h
+++ b/calendar/calobj.h
@@ -131,6 +131,8 @@ typedef struct {
CalendarAlarm malarm;
Recurrence *recur;
+
+ int new;
} iCalObject;
iCalObject *ical_new (char *comment, char *organizer, char *summary);
diff --git a/calendar/eventedit.c b/calendar/eventedit.c
index d87f838f0e..c0cfb1aa81 100644
--- a/calendar/eventedit.c
+++ b/calendar/eventedit.c
@@ -370,7 +370,7 @@ ee_store_dlg_values_to_ical (EventEditor *ee)
/* FIXME: This is not entirely correct; we should check if the values actually changed */
ical->last_mod = now;
- if (ee->new_ical)
+ if (ee->ical->new)
ical->created = now;
g_free (ical->summary);
@@ -382,7 +382,7 @@ ee_ok (GtkWidget *widget, EventEditor *ee)
{
ee_store_dlg_values_to_ical (ee);
- if (ee->new_ical)
+ if (ee->ical->new)
gnome_calendar_add_object (GNOME_CALENDAR (ee->gnome_cal), ee->ical);
gtk_widget_destroy (GTK_WIDGET (ee));
@@ -391,7 +391,7 @@ ee_ok (GtkWidget *widget, EventEditor *ee)
static void
ee_cancel (GtkWidget *widget, EventEditor *ee)
{
- if (ee->new_ical)
+ if (ee->ical->new)
ical_object_destroy (ee->ical);
gtk_widget_destroy (GTK_WIDGET (ee));
}
@@ -793,11 +793,9 @@ event_editor_new (GnomeCalendar *gcal, iCalObject *ical)
ee = EVENT_EDITOR (retval);
if (ical == 0){
- ee->new_ical = 1;
ical = ical_new ("Test Comment", user_name, "Test Summary");
- } else
- ee->new_ical = 0;
-
+ ical->new = 1;
+ }
ee->ical = ical;
ee->gnome_cal = gcal;
event_editor_init_widgets (ee);
diff --git a/calendar/eventedit.h b/calendar/eventedit.h
index 6de4d09256..82d4c94ecf 100644
--- a/calendar/eventedit.h
+++ b/calendar/eventedit.h
@@ -52,7 +52,6 @@ typedef struct {
/* The associated ical object */
iCalObject *ical;
- int new_ical;
/* The calendar owner of this event */
GnomeCalendar *gnome_cal;
diff --git a/calendar/gncal-full-day.c b/calendar/gncal-full-day.c
index acf937f14f..9a14230f92 100644
--- a/calendar/gncal-full-day.c
+++ b/calendar/gncal-full-day.c
@@ -1469,3 +1469,21 @@ gncal_full_day_set_bounds (GncalFullDay *fullday, time_t lower, time_t upper)
gncal_full_day_update (fullday);
}
}
+
+/*
+ * Returns the selected range
+ */
+int
+gncal_full_day_selection_range (GncalFullDay *fullday, time_t *lower, time_t *upper)
+{
+ struct drag_info *di;
+
+ g_return_val_if_fail (fullday != NULL, 0);
+ g_return_val_if_fail (GNCAL_IS_FULL_DAY (fullday), 0);
+ g_return_val_if_fail (lower != NULL, 0);
+ g_return_val_if_fail (upper != NULL, 0);
+
+ di = fullday->drag_info;
+
+ return 1;
+}
diff --git a/calendar/gnome-cal.c b/calendar/gnome-cal.c
index 18409e3318..00344a79f0 100644
--- a/calendar/gnome-cal.c
+++ b/calendar/gnome-cal.c
@@ -6,12 +6,14 @@
*/
#include <gnome.h>
+#include <gdk/gdkkeysyms.h>
#include "calendar.h"
#include "gnome-cal.h"
#include "gncal-full-day.h"
#include "gncal-week-view.h"
#include "timeutil.h"
#include "views.h"
+#include "main.h"
static void gnome_calendar_init (GnomeCalendar *gcal);
@@ -38,6 +40,44 @@ gnome_calendar_get_type (void)
}
static void
+day_view_key_press (GncalFullDay *fday, GdkEventKey *kevent, GnomeCalendar *gcal)
+{
+ iCalObject *ical;
+ time_t start, end;
+
+ if (kevent->keyval != GDK_Return)
+ return;
+
+ /* Create a new event on the selected range */
+ ical = ical_new ("", user_name, "");
+ ical->new = 1;
+/* gncal_full_day_selection_range (gcal->day_view, &ical->dtstart, &ical->dtend); */
+ event_editor_new (gcal, ical);
+}
+
+static void
+setup_day_view (GnomeCalendar *gcal)
+{
+ time_t a, b, now;
+
+ now = time (NULL);
+ a = time_start_of_day (now);
+ b = time_end_of_day (now);
+
+ gcal->day_view = gncal_full_day_new (gcal, a, b);
+ gtk_widget_set_events (gcal->day_view,
+ gtk_widget_get_events (gcal->day_view) | GDK_KEY_PRESS_MASK);
+ gcal->day_view_container = gtk_scrolled_window_new (NULL, NULL);
+ gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (gcal->day_view_container),
+ GTK_POLICY_AUTOMATIC,
+ GTK_POLICY_AUTOMATIC);
+ gtk_container_add (GTK_CONTAINER (gcal->day_view_container), gcal->day_view);
+ gtk_widget_show (gcal->day_view);
+ gtk_signal_connect (GTK_OBJECT (gcal->day_view), "key_press_event",
+ GTK_SIGNAL_FUNC (day_view_key_press), gcal);
+}
+
+static void
setup_widgets (GnomeCalendar *gcal)
{
time_t now;
@@ -49,23 +89,8 @@ setup_widgets (GnomeCalendar *gcal)
gcal->year_view = year_view_create (gcal);
gcal->task_view = tasks_create (gcal);
- if (1)
- {
- time_t a, b;
-
- a = time_start_of_day (now);
- b = time_end_of_day (now);
-
- gcal->day_view = gncal_full_day_new (gcal, a, b);
-
- gcal->day_view_container = gtk_scrolled_window_new (NULL, NULL);
- gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (gcal->day_view_container),
- GTK_POLICY_AUTOMATIC,
- GTK_POLICY_AUTOMATIC);
- gtk_container_add (GTK_CONTAINER (gcal->day_view_container), gcal->day_view);
- gtk_widget_show (gcal->day_view);
- }
-
+ setup_day_view (gcal);
+
gtk_notebook_append_page (GTK_NOTEBOOK (gcal->notebook), gcal->day_view_container, gtk_label_new (_("Day View")));
gtk_notebook_append_page (GTK_NOTEBOOK (gcal->notebook), gcal->week_view, gtk_label_new (_("Week View")));
gtk_notebook_append_page (GTK_NOTEBOOK (gcal->notebook), gcal->year_view, gtk_label_new (_("Year View")));
diff --git a/calendar/gui/eventedit.c b/calendar/gui/eventedit.c
index d87f838f0e..c0cfb1aa81 100644
--- a/calendar/gui/eventedit.c
+++ b/calendar/gui/eventedit.c
@@ -370,7 +370,7 @@ ee_store_dlg_values_to_ical (EventEditor *ee)
/* FIXME: This is not entirely correct; we should check if the values actually changed */
ical->last_mod = now;
- if (ee->new_ical)
+ if (ee->ical->new)
ical->created = now;
g_free (ical->summary);
@@ -382,7 +382,7 @@ ee_ok (GtkWidget *widget, EventEditor *ee)
{
ee_store_dlg_values_to_ical (ee);
- if (ee->new_ical)
+ if (ee->ical->new)
gnome_calendar_add_object (GNOME_CALENDAR (ee->gnome_cal), ee->ical);
gtk_widget_destroy (GTK_WIDGET (ee));
@@ -391,7 +391,7 @@ ee_ok (GtkWidget *widget, EventEditor *ee)
static void
ee_cancel (GtkWidget *widget, EventEditor *ee)
{
- if (ee->new_ical)
+ if (ee->ical->new)
ical_object_destroy (ee->ical);
gtk_widget_destroy (GTK_WIDGET (ee));
}
@@ -793,11 +793,9 @@ event_editor_new (GnomeCalendar *gcal, iCalObject *ical)
ee = EVENT_EDITOR (retval);
if (ical == 0){
- ee->new_ical = 1;
ical = ical_new ("Test Comment", user_name, "Test Summary");
- } else
- ee->new_ical = 0;
-
+ ical->new = 1;
+ }
ee->ical = ical;
ee->gnome_cal = gcal;
event_editor_init_widgets (ee);
diff --git a/calendar/gui/eventedit.h b/calendar/gui/eventedit.h
index 6de4d09256..82d4c94ecf 100644
--- a/calendar/gui/eventedit.h
+++ b/calendar/gui/eventedit.h
@@ -52,7 +52,6 @@ typedef struct {
/* The associated ical object */
iCalObject *ical;
- int new_ical;
/* The calendar owner of this event */
GnomeCalendar *gnome_cal;
diff --git a/calendar/gui/gncal-full-day.c b/calendar/gui/gncal-full-day.c
index acf937f14f..9a14230f92 100644
--- a/calendar/gui/gncal-full-day.c
+++ b/calendar/gui/gncal-full-day.c
@@ -1469,3 +1469,21 @@ gncal_full_day_set_bounds (GncalFullDay *fullday, time_t lower, time_t upper)
gncal_full_day_update (fullday);
}
}
+
+/*
+ * Returns the selected range
+ */
+int
+gncal_full_day_selection_range (GncalFullDay *fullday, time_t *lower, time_t *upper)
+{
+ struct drag_info *di;
+
+ g_return_val_if_fail (fullday != NULL, 0);
+ g_return_val_if_fail (GNCAL_IS_FULL_DAY (fullday), 0);
+ g_return_val_if_fail (lower != NULL, 0);
+ g_return_val_if_fail (upper != NULL, 0);
+
+ di = fullday->drag_info;
+
+ return 1;
+}
diff --git a/calendar/gui/gnome-cal.c b/calendar/gui/gnome-cal.c
index 18409e3318..00344a79f0 100644
--- a/calendar/gui/gnome-cal.c
+++ b/calendar/gui/gnome-cal.c
@@ -6,12 +6,14 @@
*/
#include <gnome.h>
+#include <gdk/gdkkeysyms.h>
#include "calendar.h"
#include "gnome-cal.h"
#include "gncal-full-day.h"
#include "gncal-week-view.h"
#include "timeutil.h"
#include "views.h"
+#include "main.h"
static void gnome_calendar_init (GnomeCalendar *gcal);
@@ -38,6 +40,44 @@ gnome_calendar_get_type (void)
}
static void
+day_view_key_press (GncalFullDay *fday, GdkEventKey *kevent, GnomeCalendar *gcal)
+{
+ iCalObject *ical;
+ time_t start, end;
+
+ if (kevent->keyval != GDK_Return)
+ return;
+
+ /* Create a new event on the selected range */
+ ical = ical_new ("", user_name, "");
+ ical->new = 1;
+/* gncal_full_day_selection_range (gcal->day_view, &ical->dtstart, &ical->dtend); */
+ event_editor_new (gcal, ical);
+}
+
+static void
+setup_day_view (GnomeCalendar *gcal)
+{
+ time_t a, b, now;
+
+ now = time (NULL);
+ a = time_start_of_day (now);
+ b = time_end_of_day (now);
+
+ gcal->day_view = gncal_full_day_new (gcal, a, b);
+ gtk_widget_set_events (gcal->day_view,
+ gtk_widget_get_events (gcal->day_view) | GDK_KEY_PRESS_MASK);
+ gcal->day_view_container = gtk_scrolled_window_new (NULL, NULL);
+ gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (gcal->day_view_container),
+ GTK_POLICY_AUTOMATIC,
+ GTK_POLICY_AUTOMATIC);
+ gtk_container_add (GTK_CONTAINER (gcal->day_view_container), gcal->day_view);
+ gtk_widget_show (gcal->day_view);
+ gtk_signal_connect (GTK_OBJECT (gcal->day_view), "key_press_event",
+ GTK_SIGNAL_FUNC (day_view_key_press), gcal);
+}
+
+static void
setup_widgets (GnomeCalendar *gcal)
{
time_t now;
@@ -49,23 +89,8 @@ setup_widgets (GnomeCalendar *gcal)
gcal->year_view = year_view_create (gcal);
gcal->task_view = tasks_create (gcal);
- if (1)
- {
- time_t a, b;
-
- a = time_start_of_day (now);
- b = time_end_of_day (now);
-
- gcal->day_view = gncal_full_day_new (gcal, a, b);
-
- gcal->day_view_container = gtk_scrolled_window_new (NULL, NULL);
- gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (gcal->day_view_container),
- GTK_POLICY_AUTOMATIC,
- GTK_POLICY_AUTOMATIC);
- gtk_container_add (GTK_CONTAINER (gcal->day_view_container), gcal->day_view);
- gtk_widget_show (gcal->day_view);
- }
-
+ setup_day_view (gcal);
+
gtk_notebook_append_page (GTK_NOTEBOOK (gcal->notebook), gcal->day_view_container, gtk_label_new (_("Day View")));
gtk_notebook_append_page (GTK_NOTEBOOK (gcal->notebook), gcal->week_view, gtk_label_new (_("Week View")));
gtk_notebook_append_page (GTK_NOTEBOOK (gcal->notebook), gcal->year_view, gtk_label_new (_("Year View")));
diff --git a/calendar/pcs/calobj.h b/calendar/pcs/calobj.h
index 560c4ca99e..37ea79040d 100644
--- a/calendar/pcs/calobj.h
+++ b/calendar/pcs/calobj.h
@@ -131,6 +131,8 @@ typedef struct {
CalendarAlarm malarm;
Recurrence *recur;
+
+ int new;
} iCalObject;
iCalObject *ical_new (char *comment, char *organizer, char *summary);