Author: juha
Date: 2007-12-30 00:44:35 +0000 (Sun, 30 Dec 2007)
New Revision: 26517

Modified:
   xfcalendar/trunk/src/appointment.c
   xfcalendar/trunk/src/event-list.c
   xfcalendar/trunk/src/ical-code.c
Log:
1) Fix time initialization with new appointments.
2) Use upper case only search in event list when possible


Modified: xfcalendar/trunk/src/appointment.c
===================================================================
--- xfcalendar/trunk/src/appointment.c  2007-12-29 01:32:03 UTC (rev 26516)
+++ xfcalendar/trunk/src/appointment.c  2007-12-30 00:44:35 UTC (rev 26517)
@@ -1346,7 +1346,7 @@
         else
             appt->start_tz_loc = g_strdup("floating");
         appt->end_tz_loc = g_strdup(appt->start_tz_loc);
-        appt->duration = 30;
+        appt->duration = 30*60;
         g_sprintf(appt->completedtime,"%sT%02d%02d00"
                     , today, t->tm_hour, t->tm_min);
         appt->completed_tz_loc = g_strdup(appt->start_tz_loc);

Modified: xfcalendar/trunk/src/event-list.c
===================================================================
--- xfcalendar/trunk/src/event-list.c   2007-12-29 01:32:03 UTC (rev 26516)
+++ xfcalendar/trunk/src/event-list.c   2007-12-30 00:44:35 UTC (rev 26517)
@@ -408,7 +408,8 @@
     gchar *search_string = NULL, file_type[8];
     gint i;
 
-    search_string = g_strdup(gtk_entry_get_text((GtkEntry *)el->search_entry));
+    search_string = g_utf8_strup(gtk_entry_get_text(
+                (GtkEntry *)el->search_entry),-1);
     /* first search base orage file */
     if (!xfical_file_open(TRUE))
         return;

Modified: xfcalendar/trunk/src/ical-code.c
===================================================================
--- xfcalendar/trunk/src/ical-code.c    2007-12-29 01:32:03 UTC (rev 26516)
+++ xfcalendar/trunk/src/ical-code.c    2007-12-30 00:44:35 UTC (rev 26517)
@@ -4163,9 +4163,10 @@
 {
 #undef P_N
 #define P_N "xfical_appt_get_next_with_string_internal: "
-    static gchar *text, *beg, *end;
+    static gchar *text_upper, *text, *beg, *end;
+    static upper_text;
     gchar *cur, *tmp, mem;
-    gsize text_len;
+    gsize text_len, len;
     char *uid, ical_uid[XFICAL_UID_LEN+1];
     xfical_appt *appt;
     gboolean found_valid, search_done = FALSE;
@@ -4180,16 +4181,33 @@
     if (first) {
         /* FIXME: it would be good idea to convert to upper case.
          * then we should not need to care about case and search would
-         * be more user friendly
+         * be more user friendly.
+         * Note: This is not easy since UID must not be converted upper case
+         * or it will not be found.
          */
         if (!g_file_get_contents(search_file, &text, &text_len, NULL)) {
             g_warning(P_N "Could not open Orage ical file (%s)", search_file);
             return(NULL);
         }
+        text_upper = g_utf8_strup(text, -1);
+        if (text_len == strlen(text_upper)) {
+            /* we can do upper case search since uppercase and original
+             * string have same format. In other words we can find UID since
+             * it starts in the same place in both strings (not 100 % sure, 
+             * but works reliable enough until somebody files a bug...) */
+            end = text_upper+text_len;
+            beg = find_next(text_upper, end, "\nBEGIN:");
+            upper_text = TRUE;
+        }
+        else { /* sorry, has to settle for normal comparison */
         /* let's find first BEGIN:VEVENT or BEGIN:VTODO or BEGIN:VJOURNAL
          * to start our search */
-        end = text+text_len;
-        beg = find_next(text, end, "\nBEGIN:");
+            end = text+text_len;
+            beg = find_next(text, end, "\nBEGIN:");
+            upper_text = FALSE;
+            g_warning(P_N "Can not do case independent comparison (%d/%d)"
+                    , text_len, strlen(text_upper));
+        }
         if (!beg) {
             g_warning(P_N "Could not find initial BEGIN:V-type from Orage ical 
file (%s)"
                     , search_file);
@@ -4248,7 +4266,15 @@
                     search_done = TRUE;
                 }
                 else {
-                    sscanf(uid, "UID:%sXFICAL_UID_LEN", ical_uid);
+                    if (upper_text) {
+                        /* we need to take UID from the original text, which
+                         * has not been converted to upper case */
+                        len = uid-text_upper;
+                        tmp = text+len;
+                        sscanf(tmp, "UID:%sXFICAL_UID_LEN", ical_uid);
+                    }
+                    else
+                        sscanf(uid, "UID:%sXFICAL_UID_LEN", ical_uid);
                     if (strlen(ical_uid) > XFICAL_UID_LEN-2) {
                         g_warning(P_N "too long UID %s", ical_uid);
                         return(NULL);
@@ -4292,6 +4318,7 @@
     }
 
     g_free(text);
+    g_free(text_upper);
     if (!search_done) {
         g_warning(P_N "illegal ending %s", str);
     }

_______________________________________________
Xfce4-commits mailing list
Xfce4-commits@xfce.org
http://foo-projects.org/mailman/listinfo/xfce4-commits

Reply via email to