Here is the updated patches with the suggestions from Chris.
Index: src/record.cc
===================================================================
RCS file: /cvsroot/barry/barry/src/record.cc,v
retrieving revision 1.21
diff -u -r1.21 record.cc
--- src/record.cc	11 May 2007 19:58:20 -0000	1.21
+++ src/record.cc	18 May 2007 02:40:52 -0000
@@ -741,6 +741,10 @@
 	MobilePhone.clear();
 	Pager.clear();
 	PIN.clear();
+    Radio.clear();
+    WorkPhone2.clear();
+    HomePhone2.clear();
+    OtherPhone.clear();
 	FirstName.clear();
 	LastName.clear();
 	Company.clear();
@@ -754,9 +758,23 @@
 	Country.clear();
 	Title.clear();
 	PublicKey.clear();
+    URL.clear();
+    Prefix.clear();
+    HomeAddress1.clear();
+    HomeAddress2.clear();
+    HomeAddress3.clear();
 	Notes.clear();
-
-	GroupLinks.clear();
+    UserDefined1.clear();
+    UserDefined2.clear();
+    UserDefined3.clear();
+    UserDefined4.clear();
+    HomeCity.clear();
+    HomeProvince.clear();
+    HomePostalCode.clear();
+    HomeCountry.clear();
+    Image.clear();
+    
+ 	GroupLinks.clear();
 	Unknowns.clear();
 
 	m_FirstNameSeen = false;
@@ -1019,7 +1037,7 @@
 // calendar field codes
 #define CALFC_APPT_TYPE_FLAG		0x01
 #define CALFC_SUBJECT			0x02
-#define CALFC_NOTES			0x03
+#define CALFC_NOTES			    0x03
 #define CALFC_LOCATION			0x04
 #define CALFC_NOTIFICATION_TIME		0x05
 #define CALFC_START_TIME		0x06
@@ -1029,6 +1047,7 @@
 #define CALFC_NOTIFICATION_DATA		0x1a
 #define CALFC_FREEBUSY_FLAG		0x1c
 #define CALFC_TIMEZONE_CODE		0x1e	// only seems to show up if recurring
+#define CALFC_CLASS_FLAG       0x28    // private flag from outlook
 #define CALFC_ALLDAYEVENT_FLAG		0xff
 #define CALFC_END			0xffff
 
@@ -1039,7 +1058,6 @@
    { CALFC_NOTIFICATION_TIME,"Notification Time",0,0, 0, 0, &Calendar::NotificationTime },
    { CALFC_START_TIME, "Start Time", 0, 0,    0, 0, &Calendar::StartTime },
    { CALFC_END_TIME,   "End Time",   0, 0,    0, 0, &Calendar::EndTime },
-   { CALFC_FREEBUSY_FLAG, "Free/Busy", 0, 0,  &Calendar::FreeBusy, 0, 0 },
    { CALFC_END,        "End of List",0, 0,    0, 0, 0 }
 };
 
@@ -1127,6 +1145,20 @@
 			throw Error("Calendar::ParseField: not enough data in time zone code field");
 		}
 		return begin;
+        
+    case CALFC_FREEBUSY_FLAG:
+    	FreeBusyFlag = (FreeBusyFlagType)field->u.raw[0];
+        if( FreeBusyFlag > OutOfOffice ) {
+        	throw Error("Calendar::ParseField: FreeBusyFlag out of range" );
+        }
+        return begin;
+        
+    case CALFC_CLASS_FLAG:
+        ClassFlag = (ClassFlagType)field->u.raw[0];
+        if( ClassFlag > Private ) {
+        	throw Error("Calendar::ParseField: ClassFlag out of range" );
+        }
+        return begin;
 	}
 
 	// if still not handled, add to the Unknowns list
@@ -1355,6 +1387,8 @@
 		"Thu", "Fri", "Sat" };
 	static const char *MonthNames[] = { "Jan", "Feb", "Mar", "Apr",
 		"May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };
+    static const char *ClassTypes[] = { "Public", "Confidential", "Private" };
+    static const char *FreeBusy[] = { "Free", "Tentative", "Busy", "Out of Office" };
 
 // FIXME - need a "check all data" function that make sure that all
 // recurrence data is within range.  Then call that before using
@@ -1363,6 +1397,8 @@
 	os << "Calendar entry: 0x" << setbase(16) << RecordId
 		<< " (" << (unsigned int)RecType << ")\n";
 	os << "   All Day Event: " << (AllDayEvent ? "yes" : "no") << "\n";
+    os << "   Class: " << ClassTypes[ClassFlag] << "\n";
+    os << "   Free/Busy: " << FreeBusy[FreeBusyFlag] << "\n";
 
 	// cycle through the type table
 	for(	const FieldLink<Calendar> *b = CalendarFieldLinks;
@@ -1452,6 +1488,7 @@
 }
 
 
+
 ///////////////////////////////////////////////////////////////////////////////
 // ServiceBookConfig class
 
Index: src/record.h
===================================================================
RCS file: /cvsroot/barry/barry/src/record.h,v
retrieving revision 1.19
diff -u -r1.19 record.h
--- src/record.h	11 May 2007 19:58:20 -0000	1.19
+++ src/record.h	18 May 2007 02:41:19 -0000
@@ -362,11 +362,43 @@
 	std::string Subject;
 	std::string Notes;
 	std::string Location;
-	std::string FreeBusy;
 	time_t NotificationTime;
 	time_t StartTime;
 	time_t EndTime;
 
+    ///
+    /// Free Busy Flag
+    ///
+    /// This lists the available settings found in the device.
+    /// This list is based on information from MS Outlook 2007
+    /// (Free ==0 and Busy == 2)
+    /// This is FBTYPE in RFC2445 and is defined as
+    /// FREE, BUSY, BUSY-UNAVAILABLE and BUSY-TENTATIVE
+    ///
+	enum FreeBusyFlagType {
+		Free = 0,
+		Tentative,
+		Busy,
+		OutOfOffice
+	};
+    	FreeBusyFlagType FreeBusyFlag;
+    
+    ///
+    /// Class Flag
+    ///
+    /// This is also called classification in Evolution and it
+    ///  is the equivilant of public or private in outlook
+    ///  Private is set to 0x2 in Outlook
+    ///  RFC2445 CLASS is PUBLIC, PRIVATE, CONFIDENTIAL
+    ///
+    enum ClassFlagType {
+    	Public = 0,
+    	Confidential,
+    	Private
+    };
+
+    ClassFlagType ClassFlag;
+    
 	///
 	/// Recurring data
 	///
@@ -389,18 +421,8 @@
 					//< set: WeekDays
 	};
     
-	///
-	/// Free Busy Flag
-	///
-	/// This lists the available settings found in the device.
-	///
-	enum FreeBusyFlag {
-		Free = 0, 
-		Tentative,
-		Busy,
-		OutOfOffice
-	};
-
+	
+        
 	bool Recurring;
 	RecurringCodeType RecurringType;
 	unsigned short Interval;	// must be >= 1

Attachment: pgpTsoZRdWfQU.pgp
Description: PGP signature

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Barry-devel mailing list
Barry-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/barry-devel

Reply via email to