Hi!
I've added support for syncing the category of an event to the palm plugin. (See the attached patch.)
The built-in DateBook application does not support categories but the most popular replacements (Agendus and DateBK) support datebook categories.
Cheers, --leo -- ------------------------------------------------------- Alexander (Leo) Bergolth [EMAIL PROTECTED] WU-Wien - Zentrum fuer Informatikdienste - Projektbuero
--- palm_sync.h.orig 2004-08-11 23:16:06.430142120 +0200
+++ palm_sync.h 2004-08-11 23:14:48.207033840 +0200
@@ -59,7 +59,7 @@
} palm_entry;
GString *address2vcard(palm_connection *, struct Address, char *);
-GString *calendar2vevent(palm_connection *, struct Appointment);
+GString *calendar2vevent(palm_connection *, struct Appointment, char *category);
GString *todo2vcal(palm_connection *, struct ToDo, char *);
void palm_debug(palm_connection *conn, int level, char *message, ...);
int connectDevice(palm_connection *conn, gboolean block, gboolean popup);
--- palm_sync.c.orig 2004-08-11 22:54:22.655346016 +0200
+++ palm_sync.c 2004-08-11 22:54:43.535171800 +0200
@@ -335,7 +335,7 @@
vcard = address2vcard(conn, data->address, data->category);
break;
case SYNC_OBJECT_TYPE_CALENDAR:
- vcard = calendar2vevent(conn, data->appointment);
+ vcard = calendar2vevent(conn, data->appointment, data->category);
break;
case SYNC_OBJECT_TYPE_TODO:
vcard = todo2vcal(conn, data->todo, data->category);
--- vcard.c.orig 2004-08-11 22:55:53.676508696 +0200
+++ vcard.c 2004-08-11 23:12:52.112682864 +0200
@@ -83,7 +83,7 @@
* Summary: converts an palm calendar record to an vevent card
*
***********************************************************************/
-GString *calendar2vevent(palm_connection *conn, struct Appointment appointment)
+GString *calendar2vevent(palm_connection *conn, struct Appointment appointment, char *category)
{
VObjectO *vcal;
VObjectO *vevent;
@@ -272,6 +272,10 @@
}
}
+ if (category) {
+ addPropValueO(vevent, "CATEGORIES", category);
+ }
+
vcalptr = writeMemVObjectO(0,0,vcal);
vcalstr = g_string_new(vcalptr);
free(vcalptr);
@@ -501,10 +505,27 @@
//Exceptions TODO
if(strcmp(n,"EXDATE") == 0) {
- entry->appointment.exception[entry->appointment.exceptions] = vcaltime2tm(fakeCStringO(vObjectUStringZValueO(t)));
+ entry->appointment.exception[entry->appointment.exceptions] = vcaltime2tm(attrValue);
entry->appointment.exceptions++;
}
+ //Categories
+ if (strcmp(n, "CATEGORIES") == 0) {
+ palm_debug(conn, 3, "GOT CATEGORIES: %s\n", attrValue);
+ gchar **array = g_strsplit(attrValue, ",", 0);
+ int z = 0;
+ while (array[z] != NULL) {
+ palm_debug(conn, 3, "testing %s\n", array[z]);
+ entry->catID = get_category_id_from_name(conn, array[z]);
+ if (entry->catID != 0) {
+ palm_debug(conn, 3, "Found category %i\n", entry->catID);
+ break;
+ }
+ z++;
+ }
+ g_strfreev(array);
+ }
+
if (attrValue)
free(attrValue);
}
