Author: juha Date: 2006-11-07 08:02:57 +0000 (Tue, 07 Nov 2006) New Revision: 23769
Modified: xfcalendar/trunk/src/appointment.c xfcalendar/trunk/src/event-list.c xfcalendar/trunk/src/event-list.h xfcalendar/trunk/src/mainbox.c xfcalendar/trunk/src/tray_icon.c Log: Recoded event-list window creation and callback method. Fixed problem reported by Mike Massonnet: event-list date changed according to main calendar window. This caused surprises and was not intuitive nor intended. Modified: xfcalendar/trunk/src/appointment.c =================================================================== --- xfcalendar/trunk/src/appointment.c 2006-11-06 22:37:47 UTC (rev 23768) +++ xfcalendar/trunk/src/appointment.c 2006-11-07 08:02:57 UTC (rev 23769) @@ -671,7 +671,7 @@ apptw->appointment_new = FALSE; mark_appointment_unchanged(apptw); if (apptw->eventlist != NULL) - recreate_eventlist_win((eventlist_win *)apptw->eventlist); + refresh_eventlist_win((eventlist_win *)apptw->eventlist); xfcalendar_mark_appointments(); } } @@ -741,7 +741,7 @@ } if (apptw->eventlist != NULL) - recreate_eventlist_win((eventlist_win *)apptw->eventlist); + refresh_eventlist_win((eventlist_win *)apptw->eventlist); xfcalendar_mark_appointments(); gtk_widget_destroy(apptw->appWindow); Modified: xfcalendar/trunk/src/event-list.c =================================================================== --- xfcalendar/trunk/src/event-list.c 2006-11-06 22:37:47 UTC (rev 23768) +++ xfcalendar/trunk/src/event-list.c 2006-11-07 08:02:57 UTC (rev 23769) @@ -259,29 +259,6 @@ } } -void -recreate_eventlist_win (eventlist_win *el) -{ - GtkCellRenderer *rend; - GtkTreeViewColumn *col; - - if (el->elWindow != NULL - && el->elListStore != NULL - && el->elTreeView != NULL) { - gtk_list_store_clear(el->elListStore); - col = gtk_tree_view_get_column(GTK_TREE_VIEW(el->elTreeView), 0); - gtk_tree_view_remove_column(GTK_TREE_VIEW(el->elTreeView), col); - rend = gtk_cell_renderer_text_new(); - col = gtk_tree_view_column_new_with_attributes( _("Time"), rend - , "text", COL_TIME - , NULL); - gtk_tree_view_column_set_cell_data_func(col, rend, start_time_data_func - , el, NULL); - gtk_tree_view_insert_column(GTK_TREE_VIEW(el->elTreeView), col, 0); - manage_eventlist_win(GTK_CALENDAR(xfcal->mCalendar), el); - } -} - void addEvent(GtkListStore *list1, appt_data *appt, char *header, gint days) { GtkTreeIter iter1; @@ -375,6 +352,84 @@ } void +recreate_eventlist_win (eventlist_win *el) +{ + GtkCellRenderer *rend; + GtkTreeViewColumn *col; + + if (el->elWindow != NULL + && el->elListStore != NULL + && el->elTreeView != NULL) { + gtk_list_store_clear(el->elListStore); + col = gtk_tree_view_get_column(GTK_TREE_VIEW(el->elTreeView), 0); + gtk_tree_view_remove_column(GTK_TREE_VIEW(el->elTreeView), col); + rend = gtk_cell_renderer_text_new(); + col = gtk_tree_view_column_new_with_attributes( _("Time"), rend + , "text", COL_TIME + , NULL); + gtk_tree_view_column_set_cell_data_func(col, rend, start_time_data_func + , el, NULL); + gtk_tree_view_insert_column(GTK_TREE_VIEW(el->elTreeView), col, 0); + manage_eventlist_win(GTK_CALENDAR(xfcal->mCalendar), el); + } +} + +void refresh_eventlist_data(eventlist_win *el) +{ + guint year, month, day; + char *title; + char a_day[9]; /* yyyymmdd */ + appt_data *appt; + struct tm *t; + gint days = 0; + + title = (char*)gtk_window_get_title(GTK_WINDOW(el->elWindow)); + if (sscanf(title, "%d-%d-%d", &year, &month, &day) != 3) + g_warning("refresh_eventlist_data: title conversion error\n"); + days = gtk_spin_button_get_value(GTK_SPIN_BUTTON(el->elSpin1)); + + if (xfical_file_open()) { + g_sprintf(a_day, XFICAL_APPT_DATE_FORMAT, year, month, day); + if ((appt = xfical_appt_get_next_on_day(a_day, TRUE, days))) { + t = orage_localtime(); + if ( year == t->tm_year + 1900 + && month == t->tm_mon + 1 + && day == t->tm_mday) + el->elToday = TRUE; + else + el->elToday = FALSE; + + do { + addEvent(el->elListStore, appt, title, days); + } while ((appt = xfical_appt_get_next_on_day(a_day, FALSE, days))); + } + xfical_file_close(); + } +} + +void refresh_eventlist_win(eventlist_win *el) +{ + GtkCellRenderer *rend; + GtkTreeViewColumn *col; + + if (el->elWindow != NULL + && el->elListStore != NULL + && el->elTreeView != NULL) { + gtk_list_store_clear(el->elListStore); + col = gtk_tree_view_get_column(GTK_TREE_VIEW(el->elTreeView), 0); + gtk_tree_view_remove_column(GTK_TREE_VIEW(el->elTreeView), col); + rend = gtk_cell_renderer_text_new(); + col = gtk_tree_view_column_new_with_attributes( _("Time"), rend + , "text", COL_TIME + , NULL); + gtk_tree_view_column_set_cell_data_func(col, rend, start_time_data_func + , el, NULL); + gtk_tree_view_insert_column(GTK_TREE_VIEW(el->elTreeView), col, 0); + refresh_eventlist_data(el); + } +} + +void duplicate_appointment(eventlist_win *el) { GtkTreeSelection *sel; @@ -442,13 +497,13 @@ void on_elRefresh_clicked(GtkButton *button, gpointer user_data) { - recreate_eventlist_win((eventlist_win*)user_data); + refresh_eventlist_win((eventlist_win*)user_data); } void on_elView_refresh_activate_cb(GtkMenuItem *menuitem, gpointer user_data) { - recreate_eventlist_win((eventlist_win*)user_data); + refresh_eventlist_win((eventlist_win*)user_data); } void @@ -566,7 +621,7 @@ void on_elSpin1_changed(GtkSpinButton *button, gpointer user_data) { - recreate_eventlist_win((eventlist_win *)user_data); + refresh_eventlist_win((eventlist_win *)user_data); } void @@ -594,9 +649,8 @@ title_to_ical(title, a_day); xfical_rmday(a_day); xfical_file_close(); - day = atoi(a_day+6); - gtk_calendar_unmark_day(GTK_CALENDAR(xfcal->mCalendar), day); - recreate_eventlist_win(el); + refresh_eventlist_win(el); + xfcalendar_mark_appointments(); } } } @@ -613,8 +667,7 @@ clear_eventlist_win((eventlist_win *)user_data); } -eventlist_win -*create_eventlist_win(void) +eventlist_win *create_eventlist_win(GtkCalendar *cal) { GtkWidget *toolbar_separator, @@ -845,6 +898,7 @@ gtk_window_add_accel_group(GTK_WINDOW(el->elWindow), el->accel_group); gtk_widget_show_all(el->elWindow); + manage_eventlist_win(cal, el); return el; } Modified: xfcalendar/trunk/src/event-list.h =================================================================== --- xfcalendar/trunk/src/event-list.h 2006-11-06 22:37:47 UTC (rev 23768) +++ xfcalendar/trunk/src/event-list.h 2006-11-07 08:02:57 UTC (rev 23769) @@ -62,6 +62,5 @@ int elNumber_of_days_to_show; } eventlist_win; -eventlist_win* create_eventlist_win(void); -void recreate_eventlist_win(eventlist_win *el); -void manage_eventlist_win(GtkCalendar *calendar, eventlist_win *el); +eventlist_win *create_eventlist_win(GtkCalendar *cal); +void refresh_eventlist_win(eventlist_win *el); Modified: xfcalendar/trunk/src/mainbox.c =================================================================== --- xfcalendar/trunk/src/mainbox.c 2006-11-06 22:37:47 UTC (rev 23768) +++ xfcalendar/trunk/src/mainbox.c 2006-11-07 08:02:57 UTC (rev 23769) @@ -177,8 +177,7 @@ CalWin *xfcal = (CalWin *) user_data; eventlist_win *el; - el = create_eventlist_win(); - manage_eventlist_win(GTK_CALENDAR(xfcal->mCalendar), el); + el = create_eventlist_win(GTK_CALENDAR(xfcal->mCalendar)); } void @@ -244,8 +243,7 @@ CalWin *xfcal = (CalWin *) user_data; eventlist_win *el; - el = create_eventlist_win(); - manage_eventlist_win(GTK_CALENDAR(xfcal->mCalendar), el); + el = create_eventlist_win(GTK_CALENDAR(xfcal->mCalendar)); } gboolean Modified: xfcalendar/trunk/src/tray_icon.c =================================================================== --- xfcalendar/trunk/src/tray_icon.c 2006-11-06 22:37:47 UTC (rev 23768) +++ xfcalendar/trunk/src/tray_icon.c 2006-11-07 08:02:57 UTC (rev 23769) @@ -59,8 +59,7 @@ t = orage_localtime(); xfcalendar_select_date(GTK_CALENDAR(xfcal->mCalendar), t->tm_year+1900 , t->tm_mon, t->tm_mday); - el = create_eventlist_win(); - manage_eventlist_win(GTK_CALENDAR(xfcal->mCalendar), el); + el = create_eventlist_win(GTK_CALENDAR(xfcal->mCalendar)); } void _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org http://foo-projects.org/mailman/listinfo/xfce4-commits