[evolution-patches] patch for review (Bug# 45770)
- From: wu yang <Yang Wu sun com>
- To: Rodrigo Moya <rodrigo ximian com>
- Cc: sceri-evolution-acc sun com, evolution-patches ximian com
- Subject: [evolution-patches] patch for review (Bug# 45770)
- Date: Tue, 12 Aug 2003 14:22:00 +0800
I had send this patch two weeks ago, but no response.
So I send it again.
this patch is for 45770(evolution calendar keyboard navigation)
In DayView, Shift+Home/End, Change the duration to the time that
begins/ends the current work day
Thanks
? autom4te.cache
? evolution.kdevprj
? evolution.kdevses
? new_gen_script
? stamp-h1
? camel/providers/imapp/Makefile
? camel/providers/imapp/Makefile.in
? help/C/evolution-1.4-C.omf.out
? help/C/omf_timestamp
? libical/src/libical/icalyacc.output
Index: calendar/ChangeLog
===================================================================
RCS file: /cvs/gnome/evolution/calendar/ChangeLog,v
retrieving revision 1.1846
diff -u -b -B -r1.1846 ChangeLog
--- calendar/ChangeLog 8 Aug 2003 14:57:42 -0000 1.1846
+++ calendar/ChangeLog 12 Aug 2003 03:37:14 -0000
@@ -1,3 +1,12 @@
+2003-08-12 Andrew Wu <Yang Wu sun com>
+ * gui/e-day-view.c
+ (e_day_view_change_duration_to_start_of_work_day):
+ In DayView, Shift+Home, Change the duration to the time
+ that begins the current work day.
+ (e_day_view_change_duration_to_end_of_work_day):
+ In DayView, Shift+End, Change the duration to the time
+ that ends the current work day
+
2003-08-08 Rodrigo Moya <rodrigo ximian com>
* gui/e-cal-model-calendar.c (ecmc_fill_component_from_model):
Index: calendar/gui/e-day-view.c
===================================================================
RCS file: /cvs/gnome/evolution/calendar/gui/e-day-view.c,v
retrieving revision 1.215
diff -u -b -B -r1.215 e-day-view.c
--- calendar/gui/e-day-view.c 8 Aug 2003 14:57:44 -0000 1.215
+++ calendar/gui/e-day-view.c 12 Aug 2003 03:37:29 -0000
@@ -158,6 +158,8 @@
static void e_day_view_update_query (EDayView *day_view);
static void e_day_view_goto_start_of_work_day (EDayView *day_view);
static void e_day_view_goto_end_of_work_day (EDayView *day_view);
+static void e_day_view_change_duration_to_start_of_work_day (EDayView *day_view);
+static void e_day_view_change_duration_to_end_of_work_day (EDayView *day_view);
static void e_day_view_cursor_key_up_shifted (EDayView *day_view,
GdkEventKey *event);
static void e_day_view_cursor_key_down_shifted (EDayView *day_view,
@@ -4816,6 +4818,23 @@
return TRUE;
}
+ /* In DayView, Shift+Home/End, Change the duration to the time that begins/ends the current work day */
+ if ((keyval == GDK_Home)
+ &&((event->state & GDK_SHIFT_MASK) == GDK_SHIFT_MASK)
+ &&((event->state & GDK_CONTROL_MASK) != GDK_CONTROL_MASK)
+ &&((event->state & GDK_MOD1_MASK) != GDK_MOD1_MASK)) {
+ e_day_view_change_duration_to_start_of_work_day (day_view);
+ return TRUE;
+ }
+ if ((keyval == GDK_End)
+ &&((event->state & GDK_SHIFT_MASK) == GDK_SHIFT_MASK)
+ &&((event->state & GDK_CONTROL_MASK) != GDK_CONTROL_MASK)
+ &&((event->state & GDK_MOD1_MASK) != GDK_MOD1_MASK)) {
+ e_day_view_change_duration_to_end_of_work_day (day_view);
+ return TRUE;
+ }
+
+
/* Handle the cursor keys for moving & extending the selection. */
stop_emission = TRUE;
if (event->state & GDK_SHIFT_MASK) {
@@ -4999,6 +5018,80 @@
gtk_widget_queue_draw (day_view->top_canvas);
gtk_widget_queue_draw (day_view->main_canvas);
}
+
+/* Change the duration to the time that begins the current work day */
+static void
+e_day_view_change_duration_to_start_of_work_day (EDayView *day_view)
+{
+ g_return_if_fail(day_view != NULL);
+
+ if (day_view->selection_in_top_canvas)
+ return;
+ else {
+ gint work_start_row,work_end_row,selection_start_row,selection_end_row;
+
+ work_start_row =
+ e_day_view_convert_time_to_row (day_view,
+ day_view->work_day_start_hour,
+ day_view->work_day_start_minute);
+ work_end_row =
+ e_day_view_convert_time_to_row (day_view,
+ day_view->work_day_end_hour - 1,
+ day_view->work_day_end_minute + 30);
+ selection_start_row = day_view->selection_start_row;
+ selection_end_row = day_view->selection_end_row;
+ if (selection_start_row < work_start_row)
+ day_view->selection_end_row = work_start_row - 1;
+ else day_view->selection_start_row = work_start_row;
+ }
+
+ e_day_view_ensure_rows_visible (day_view,
+ day_view->selection_start_row,
+ day_view->selection_end_row);
+
+ e_day_view_update_calendar_selection_time (day_view);
+
+ gtk_widget_queue_draw (day_view->top_canvas);
+ gtk_widget_queue_draw (day_view->main_canvas);
+}
+
+/* Change the duration to the time that ends the current work day */
+static void
+e_day_view_change_duration_to_end_of_work_day (EDayView *day_view)
+{
+ g_return_if_fail(day_view != NULL);
+
+ if (day_view->selection_in_top_canvas)
+ return;
+ else {
+ gint work_start_row,work_end_row,selection_start_row,selection_end_row;
+ work_start_row =
+ e_day_view_convert_time_to_row (day_view,
+ day_view->work_day_start_hour,
+ day_view->work_day_start_minute);
+ work_end_row = e_day_view_convert_time_to_row (day_view,
+ day_view->work_day_end_hour-1,
+ day_view->work_day_end_minute+30);
+ selection_start_row = day_view->selection_start_row;
+ selection_end_row = day_view->selection_end_row;
+ if (selection_start_row <= work_end_row)
+ day_view->selection_end_row = work_end_row;
+ else {
+ day_view->selection_start_row = work_end_row + 1;
+ day_view->selection_end_row = selection_start_row;
+ }
+ }
+
+ e_day_view_ensure_rows_visible (day_view,
+ day_view->selection_start_row,
+ day_view->selection_end_row);
+
+ e_day_view_update_calendar_selection_time (day_view);
+
+ gtk_widget_queue_draw (day_view->top_canvas);
+ gtk_widget_queue_draw (day_view->main_canvas);
+}
+
static void
e_day_view_cursor_key_up_shifted (EDayView *day_view, GdkEventKey *event)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]