aboutsummaryrefslogtreecommitdiffstats
path: root/calendar/gui
diff options
context:
space:
mode:
authorMiguel de Icaza <miguel@nuclecu.unam.mx>1998-04-02 15:57:58 +0800
committerArturo Espinosa <unammx@src.gnome.org>1998-04-02 15:57:58 +0800
commitf865d886f5aae9279d44f726a0b8093316a40e09 (patch)
treef397fa0ffb407d2ae4c15c61335bac25cb68d2a0 /calendar/gui
parent33b0ab0d0f19c405445315446fd584748538a1ed (diff)
downloadgsoc2013-evolution-f865d886f5aae9279d44f726a0b8093316a40e09.tar.gz
gsoc2013-evolution-f865d886f5aae9279d44f726a0b8093316a40e09.tar.zst
gsoc2013-evolution-f865d886f5aae9279d44f726a0b8093316a40e09.zip
New main program that uses our new datatypes and objects.
1998-04-02 Miguel de Icaza <miguel@nuclecu.unam.mx> * main.c: New main program that uses our new datatypes and objects. * calendar.c (calendar_load_from_vobject, calendar_load): Implement loading of vCalendar objects and vCalendar files. * calobj.c (ical_object_create_from_vobject): Implement loading of vCalendar event and todo objects. * timeutil.c (isodate_from_time_t): New function. * gnome-cal.c, gnome-cal.h: Implement a toplevel widget, derived from GnomeApp. It holds all of the day views and arbitrates the display. svn path=/trunk/; revision=93
Diffstat (limited to 'calendar/gui')
-rw-r--r--calendar/gui/Makefile.am18
-rw-r--r--calendar/gui/calendar.c55
-rw-r--r--calendar/gui/calendar.h1
-rw-r--r--calendar/gui/gnome-cal.c11
-rw-r--r--calendar/gui/gnome-cal.h2
-rw-r--r--calendar/gui/main.c24
6 files changed, 99 insertions, 12 deletions
diff --git a/calendar/gui/Makefile.am b/calendar/gui/Makefile.am
index 5ab3511b11..6ab68ffb7d 100644
--- a/calendar/gui/Makefile.am
+++ b/calendar/gui/Makefile.am
@@ -9,15 +9,23 @@ INCLUDES = \
bin_PROGRAMS = gnomecal
gnomecal_SOURCES = \
- main.c \
- gnome-cal.c \
- gnome-cal.h \
- views.c \
calendar.c \
calendar.h \
calobj.c \
calobj.h \
- views.h
+ gncal-week-view.c \
+ gncal-week-view.h \
+ gncal-day-view.c \
+ gncal-day-view.h \
+ gnome-cal.c \
+ gnome-cal.h \
+ main.c \
+ timeutil.c \
+ timeutil.h \
+ view-utils.h \
+ view-utils.c \
+ views.h \
+ views.c
#gncal_SOURCES = \
diff --git a/calendar/gui/calendar.c b/calendar/gui/calendar.c
index e077279461..5d7cb1dd8a 100644
--- a/calendar/gui/calendar.c
+++ b/calendar/gui/calendar.c
@@ -13,6 +13,7 @@
*/
#include "calendar.h"
+#include "versit/vcc.h"
Calendar *
calendar_new (char *title)
@@ -28,6 +29,7 @@ calendar_new (char *title)
void
calendar_add_object (Calendar *cal, iCalObject *obj)
{
+ printf ("Adding object\n");
switch (obj->type){
case ICAL_EVENT:
cal->events = g_list_prepend (cal->events, obj);
@@ -133,3 +135,56 @@ calendar_compare_by_dtstart (gpointer a, gpointer b)
return (diff < 0) ? -1 : (diff > 0) ? 1 : 0;
}
+
+#define str_val(obj) (char *) vObjectUStringZValue (obj)
+
+/* Loads our calendar contents from a vObject */
+void
+calendar_load_from_vobject (Calendar *cal, VObject *vcal)
+{
+ VObjectIterator i;;
+
+ initPropIterator (&i, vcal);
+
+ while (moreIteration (&i)){
+ VObject *this = nextVObject (&i);
+ iCalObject *ical;
+ const char *object_name = vObjectName (this);
+
+ if (strcmp (object_name, VCDCreatedProp) == 0){
+ cal->created = time_from_isodate (str_val (this));
+ continue;
+ }
+
+ if (strcmp (object_name, VCLocationProp) == 0)
+ continue; /* FIXME: imlement */
+
+ if (strcmp (object_name, VCProdIdProp) == 0)
+ continue; /* FIXME: implement */
+
+ if (strcmp (object_name, VCVersionProp) == 0)
+ continue; /* FIXME: implement */
+
+ ical = ical_object_create_from_vobject (this, object_name);
+
+ if (ical)
+ calendar_add_object (cal, ical);
+ }
+}
+
+/* Loads a calendar from a file */
+void
+calendar_load (Calendar *cal, char *fname)
+{
+ VObject *vcal;
+
+ if (cal->filename){
+ g_warning ("Calendar load called again\n");
+ return;
+ }
+
+ cal->filename = g_strdup (fname);
+ vcal = Parse_MIME_FromFileName (fname);
+ calendar_load_from_vobject (cal, vcal);
+ cleanVObject (vcal);
+}
diff --git a/calendar/gui/calendar.h b/calendar/gui/calendar.h
index 09242d9b76..805076d949 100644
--- a/calendar/gui/calendar.h
+++ b/calendar/gui/calendar.h
@@ -12,6 +12,7 @@ typedef struct {
GList *todo;
GList *journal;
+ time_t created;
int modified;
} Calendar;
diff --git a/calendar/gui/gnome-cal.c b/calendar/gui/gnome-cal.c
index 333931a5a2..0b22a1a684 100644
--- a/calendar/gui/gnome-cal.c
+++ b/calendar/gui/gnome-cal.c
@@ -39,10 +39,13 @@ setup_widgets (GnomeCalendar *gcal)
{
GtkWidget *notebook;
GtkWidget *day_view, *week_view, *year_view, *task_view;
-
+ time_t now;
+
+ now = time (NULL);
+
notebook = gtk_notebook_new ();
day_view = day_view_create (gcal);
- week_view = week_view_create (gcal);
+ week_view = gncal_week_view_new (gcal->cal, now);
year_view = year_view_create (gcal);
task_view = tasks_create (gcal);
@@ -86,7 +89,7 @@ gnome_calendar_new (char *title)
}
void
-gnome_calendar_load (char *file)
+gnome_calendar_load (GnomeCalendar *gcal, char *file)
{
-
+ calendar_load (gcal->cal, file);
}
diff --git a/calendar/gui/gnome-cal.h b/calendar/gui/gnome-cal.h
index 840ccf5122..2b30bf1f7c 100644
--- a/calendar/gui/gnome-cal.h
+++ b/calendar/gui/gnome-cal.h
@@ -28,7 +28,7 @@ typedef struct {
guint gnome_calendar_get_type (void);
GtkWidget *gnome_calendar_new (char *title);
-void gnome_calendar_load (char *file);
+void gnome_calendar_load (GnomeCalendar *gcal, char *file);
END_GNOME_DECLS
diff --git a/calendar/gui/main.c b/calendar/gui/main.c
index 941efe1c2b..be54ba2d81 100644
--- a/calendar/gui/main.c
+++ b/calendar/gui/main.c
@@ -173,10 +173,25 @@ GnomeUIInfo gnome_cal_menu [] = {
GNOMEUIINFO_END
};
+GnomeUIInfo gnome_toolbar [] = {
+ { GNOME_APP_UI_ITEM, N_("Prev"), N_("Previous"), /*previous_clicked*/0, 0, 0,
+ GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_MENU_BACK },
+
+ { GNOME_APP_UI_ITEM, N_("Today"), N_("Today"), /*previous_clicked*/0, 0, 0,
+ GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_MENU_BACK },
+
+ { GNOME_APP_UI_ITEM, N_("Next"), N_("Next"), /*previous_clicked*/0, 0, 0,
+ GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_MENU_FORWARD },
+
+ GNOMEUIINFO_END
+};
+
static void
setup_menu (GtkWidget *gcal)
{
gnome_app_create_menus_with_data (GNOME_APP (gcal), gnome_cal_menu, gcal);
+ gnome_app_create_toolbar_with_data (GNOME_APP (gcal), gnome_toolbar, gcal);
+
}
static void
@@ -191,8 +206,13 @@ new_calendar (char *full_name, char *calendar_file)
setup_menu (toplevel);
gtk_widget_show (toplevel);
- if (g_file_exists (calendar_file))
- gnome_calendar_load (calendar_file);
+ if (g_file_exists (calendar_file)){
+ printf ("Trying to load %s\n", calendar_file);
+ gnome_calendar_load (GNOME_CALENDAR (toplevel), calendar_file);
+ } else {
+ printf ("tring: ./test.vcf\n");
+ gnome_calendar_load (GNOME_CALENDAR (toplevel), "./test.vcf");
+ }
active_calendars++;
}