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

Reply via email to