aboutsummaryrefslogtreecommitdiffstats
path: root/widgets/misc/test-calendar.c
diff options
context:
space:
mode:
authorDamon Chaplin <damon@helixcode.com>2000-08-31 04:46:55 +0800
committerDamon Chaplin <damon@src.gnome.org>2000-08-31 04:46:55 +0800
commitc03e143c6cf5cbcf5b3408a81071d064bf0cb4df (patch)
tree73e913e4efc34d8a294a69b1f6a4ee4f8d6148de /widgets/misc/test-calendar.c
parente9fd9ec06698877a1082a3ccea622b7446439c55 (diff)
downloadgsoc2013-evolution-c03e143c6cf5cbcf5b3408a81071d064bf0cb4df.tar
gsoc2013-evolution-c03e143c6cf5cbcf5b3408a81071d064bf0cb4df.tar.gz
gsoc2013-evolution-c03e143c6cf5cbcf5b3408a81071d064bf0cb4df.tar.bz2
gsoc2013-evolution-c03e143c6cf5cbcf5b3408a81071d064bf0cb4df.tar.lz
gsoc2013-evolution-c03e143c6cf5cbcf5b3408a81071d064bf0cb4df.tar.xz
gsoc2013-evolution-c03e143c6cf5cbcf5b3408a81071d064bf0cb4df.tar.zst
gsoc2013-evolution-c03e143c6cf5cbcf5b3408a81071d064bf0cb4df.zip
Updated.
2000-08-30 Damon Chaplin <damon@helixcode.com> * e-calendar-item.[hc]: * e-calendar.[hc]: Updated. svn path=/trunk/; revision=5120
Diffstat (limited to 'widgets/misc/test-calendar.c')
-rw-r--r--widgets/misc/test-calendar.c146
1 files changed, 146 insertions, 0 deletions
diff --git a/widgets/misc/test-calendar.c b/widgets/misc/test-calendar.c
index 6463a21ce3..28656e216e 100644
--- a/widgets/misc/test-calendar.c
+++ b/widgets/misc/test-calendar.c
@@ -34,6 +34,34 @@
#include "e-calendar.h"
+/* Drag and Drop stuff. */
+enum {
+ TARGET_SHORTCUT
+};
+static GtkTargetEntry target_table[] = {
+ { "E-SHORTCUT", 0, TARGET_SHORTCUT }
+};
+static guint n_targets = sizeof(target_table) / sizeof(target_table[0]);
+
+
+static void on_date_range_changed (ECalendarItem *calitem);
+static void on_selection_changed (ECalendarItem *calitem);
+static void get_day_style (ECalendarItem *calitem,
+ gint year,
+ gint month,
+ gint day,
+ gint day_style,
+ gboolean today,
+ gboolean prev_or_next_month,
+ gboolean selected,
+ gboolean has_focus,
+ gboolean drop_target,
+ GdkColor **bg_color,
+ GdkColor **fg_color,
+ GdkColor **box_color,
+ gboolean *bold,
+ gpointer data);
+
static void
delete_event_cb (GtkWidget *widget,
GdkEventAny *event,
@@ -48,18 +76,39 @@ main (int argc, char **argv)
GtkWidget *app;
GtkWidget *cal;
GtkWidget *vbox;
+ ECalendarItem *calitem;
gnome_init ("test-calendar", "0.0", argc, argv);
app = gnome_app_new ("Test", "Test");
gtk_window_set_default_size (GTK_WINDOW (app), 400, 400);
gtk_window_set_policy (GTK_WINDOW (app), FALSE, TRUE, FALSE);
+ gtk_container_set_border_width (GTK_CONTAINER (app), 8);
gtk_signal_connect (GTK_OBJECT (app), "delete_event",
GTK_SIGNAL_FUNC (delete_event_cb), NULL);
cal = e_calendar_new ();
+#if 1
+ e_calendar_set_buttons (E_CALENDAR (cal), TRUE, TRUE);
+#endif
+ e_calendar_set_minimum_size (E_CALENDAR (cal), 1, 1);
+ calitem = E_CALENDAR (cal)->calitem;
gtk_widget_show (cal);
+ e_calendar_item_set_style_callback (calitem, get_day_style,
+ NULL, NULL);
+
+ gtk_signal_connect (GTK_OBJECT (calitem), "date_range_changed",
+ GTK_SIGNAL_FUNC (on_date_range_changed), NULL);
+ gtk_signal_connect (GTK_OBJECT (calitem), "selection_changed",
+ GTK_SIGNAL_FUNC (on_selection_changed), NULL);
+
+
+ gtk_drag_dest_set (cal,
+ GTK_DEST_DEFAULT_ALL,
+ target_table, n_targets,
+ GDK_ACTION_COPY | GDK_ACTION_MOVE);
+
vbox = gtk_vbox_new (FALSE, 0);
gtk_box_pack_start (GTK_BOX (vbox), cal, TRUE, TRUE, 0);
@@ -72,3 +121,100 @@ main (int argc, char **argv)
return 0;
}
+
+
+static void
+on_date_range_changed (ECalendarItem *calitem)
+{
+ gint start_year, start_month, start_day;
+ gint end_year, end_month, end_day;
+
+ e_calendar_item_get_date_range (calitem,
+ &start_year, &start_month, &start_day,
+ &end_year, &end_month, &end_day);
+
+ g_print ("Date range changed (D/M/Y): %i/%i/%i - %i/%i/%i\n",
+ start_day, start_month + 1, start_year,
+ end_day, end_month + 1, end_year);
+
+ /* These days should appear bold. Remember month is 0 to 11. */
+ e_calendar_item_mark_day (calitem, 2000, 7, 26, /* 26th Aug 2000. */
+ E_CALENDAR_ITEM_MARK_BOLD);
+ e_calendar_item_mark_day (calitem, 2000, 8, 13, /* 13th Sep 2000. */
+ E_CALENDAR_ITEM_MARK_BOLD);
+}
+
+
+static void
+on_selection_changed (ECalendarItem *calitem)
+{
+ GDate start_date, end_date;
+
+ e_calendar_item_get_selection (calitem, &start_date, &end_date);
+
+ g_print ("Selection changed (D/M/Y): %i/%i/%i - %i/%i/%i\n",
+ g_date_day (&start_date),
+ g_date_month (&start_date),
+ g_date_year (&start_date),
+ g_date_day (&end_date),
+ g_date_month (&end_date),
+ g_date_year (&end_date));
+}
+
+
+static void
+get_day_style (ECalendarItem *calitem,
+ gint year,
+ gint month,
+ gint day,
+ gint day_style,
+ gboolean today,
+ gboolean prev_or_next_month,
+ gboolean selected,
+ gboolean has_focus,
+ gboolean drop_target,
+ GdkColor **bg_color,
+ GdkColor **fg_color,
+ GdkColor **box_color,
+ gboolean *bold,
+ gpointer data)
+{
+ *bg_color = NULL;
+ *fg_color = NULL;
+ *box_color = NULL;
+ *bold = FALSE;
+
+#if 1
+
+ if (day_style == 1)
+ *bold = TRUE;
+
+ if (today)
+ *box_color = &calitem->colors[E_CALENDAR_ITEM_COLOR_TODAY_BOX];
+
+ if (prev_or_next_month)
+ *fg_color = &calitem->colors[E_CALENDAR_ITEM_COLOR_PREV_OR_NEXT_MONTH_FG];
+
+ if (selected) {
+ *fg_color = &calitem->colors[E_CALENDAR_ITEM_COLOR_SELECTION_FG];
+ *bg_color = &calitem->colors[E_CALENDAR_ITEM_COLOR_SELECTION_BG];
+ }
+
+#else
+
+ if (day_style == 1)
+ *bold = TRUE;
+
+ if (today)
+ *box_color = &calitem->colors[E_CALENDAR_ITEM_COLOR_PREV_OR_NEXT_MONTH_FG];
+
+ if (prev_or_next_month)
+ *fg_color = &calitem->colors[E_CALENDAR_ITEM_COLOR_TODAY_BOX];
+
+ if (selected) {
+ *fg_color = &calitem->colors[E_CALENDAR_ITEM_COLOR_SELECTION_FG];
+ *bg_color = &calitem->colors[E_CALENDAR_ITEM_COLOR_PREV_OR_NEXT_MONTH_FG];
+ }
+
+#endif
+}