summaryrefslogtreecommitdiffabout
authorzautrix <zautrix>2004-08-01 21:34:31 (UTC)
committer zautrix <zautrix>2004-08-01 21:34:31 (UTC)
commited3af1a632f953179ef3cad76ab5d99809f47d60 (patch) (side-by-side diff)
treebe4fdfcf808d6876b4bee0698ddc17c8d20313d4
parent062113379f93ed645d2f246183c89eb8b6814834 (diff)
downloadkdepimpi-ed3af1a632f953179ef3cad76ab5d99809f47d60.zip
kdepimpi-ed3af1a632f953179ef3cad76ab5d99809f47d60.tar.gz
kdepimpi-ed3af1a632f953179ef3cad76ab5d99809f47d60.tar.bz2
More sync work
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--libkcal/icalformatimpl.cpp16
-rw-r--r--libkcal/incidencebase.cpp81
-rw-r--r--libkcal/incidencebase.h8
3 files changed, 92 insertions, 13 deletions
diff --git a/libkcal/icalformatimpl.cpp b/libkcal/icalformatimpl.cpp
index df05ab3..c23978d 100644
--- a/libkcal/icalformatimpl.cpp
+++ b/libkcal/icalformatimpl.cpp
@@ -264,19 +264,16 @@ void ICalFormatImpl::writeIncidence(icalcomponent *parent,Incidence *incidence)
// pilot sync stuff
// TODO: move this application-specific code to kpilot
if (incidence->pilotId()) {
incidence->setNonKDECustomProperty("X-PILOTID", QString::number(incidence->pilotId()));
incidence->setNonKDECustomProperty("X-PILOTSTAT", QString::number(incidence->syncStatus()));
}
- if (incidence->zaurusId() >= 0) {
- incidence->setNonKDECustomProperty("X-ZAURUSID", QString::number(incidence->zaurusId()));
+ if ( !incidence->IDStr().isEmpty()) {
+ incidence->setNonKDECustomProperty("X-KOPIEXTID",incidence->IDStr() );
}
- if (incidence->zaurusUid() > 0) {
- incidence->setNonKDECustomProperty("X-ZAURUSUID", QString::number(incidence->zaurusUid()));
- }
writeIncidenceBase(parent,incidence);
if (incidence->cancelled()) {
icalcomponent_add_property(parent,icalproperty_new_status(ICAL_STATUS_CANCELLED));
}
@@ -1277,20 +1274,17 @@ void ICalFormatImpl::readIncidence(icalcomponent *parent,Incidence *incidence)
incidence->setPilotId(kp.toInt());
}
kp = incidence->nonKDECustomProperty("X-PILOTSTAT");
if (!kp.isNull()) {
incidence->setSyncStatus(kp.toInt());
}
- kp = incidence->nonKDECustomProperty("X-ZAURUSID");
- if (!kp.isNull()) {
- incidence->setZaurusId(kp.toInt());
- }
- kp = incidence->nonKDECustomProperty("X-ZAURUSUID");
+
+ kp = incidence->nonKDECustomProperty("X-KOPIEXTID");
if (!kp.isNull()) {
- incidence->setZaurusUid(kp.toInt());
+ incidence->setIDStr(kp);
}
// Cancel backwards compatibility mode for subsequent changes by the application
incidence->recurrence()->setCompatVersion();
// add categories
diff --git a/libkcal/incidencebase.cpp b/libkcal/incidencebase.cpp
index 707d666..d7c4595 100644
--- a/libkcal/incidencebase.cpp
+++ b/libkcal/incidencebase.cpp
@@ -37,12 +37,13 @@ IncidenceBase::IncidenceBase() :
mFloats = false;
mDuration = 0;
mHasDuration = false;
mPilotId = 0;
mZaurusId = -1;
mZaurusUid = 0;
+ mExternalId = ":";
mTempSyncStat = 0;
mSyncStatus = 0;
mAttendees.setAutoDelete( true );
}
IncidenceBase::IncidenceBase(const IncidenceBase &i) :
@@ -62,13 +63,13 @@ IncidenceBase::IncidenceBase(const IncidenceBase &i) :
mLastModified = i.mLastModified;
mPilotId = i.mPilotId;
mZaurusId = i.mZaurusId;
mZaurusUid = i.mZaurusUid;
mTempSyncStat = i.mTempSyncStat;
mSyncStatus = i.mSyncStatus;
-
+ mExternalId = i.mExternalId;
// The copied object is a new one, so it isn't observed by the observer
// of the original object.
mObservers.clear();
mAttendees.setAutoDelete( true );
}
@@ -77,13 +78,13 @@ IncidenceBase::~IncidenceBase()
{
}
bool KCal::operator==( const IncidenceBase& i1, const IncidenceBase& i2 )
{
-
+ // do not compare mSyncStatus and mExternalId
if( i1.attendees().count() != i2.attendees().count() ) {
return false; // no need to check further
}
if ( i1.attendees().count() > 0 ) {
Attendee * a1 = i1.attendees().first(), *a2 =i2.attendees().first() ;
while ( a1 ) {
@@ -369,12 +370,88 @@ int IncidenceBase::tempSyncStat() const
void IncidenceBase::setTempSyncStat( int id )
{
if (mReadOnly) return;
mTempSyncStat = id;
}
+void IncidenceBase::setID( const QString & prof , int id )
+{
+ int num = mExternalId.find( ":"+prof+";" );
+ if ( num >= 0 ) {
+ int len = prof.length()+2;
+ int end = mExternalId.find( ";", num+len );
+ if ( end > 0 ) {
+ mExternalId = mExternalId.left( num+len ) +QString::number( id)+mExternalId.mid( end );
+ } else
+ qDebug("Error in IncidenceBase::setID ");
+ } else {
+ mExternalId += prof+";"+QString::number( id) +";0:";
+ }
+}
+int IncidenceBase::getID( const QString & prof)
+{
+ int ret = -1;
+ int num = mExternalId.find(":"+ prof+";" );
+ if ( num >= 0 ) {
+ int len = prof.length()+2;
+ int end = mExternalId.find( ";", num+len );
+ if ( end > 0 ) {
+ bool ok;
+ ret = mExternalId.mid ( num + len,end-len-num).toInt( &ok );
+ if (!ok)
+ return -1;
+ }
+ }
+ return ret;
+}
+
+// example :Sharp_DTM;22;23566:TP;-1;8654:TPP;18;0:
+// format name;III;JJJ: III >= 0, may be -1. JJJ always >= 0
+void IncidenceBase::setCsum( const QString & prof , int id )
+{
+ int num = mExternalId.find( ":"+prof+";");
+ if ( num >= 0 ) {
+ int len = prof.length()+2;
+ num = mExternalId.find( ";", num+len );
+ int end = mExternalId.find( ":", num+1 );
+ if ( end > 0 ) {
+ mExternalId = mExternalId.left( num ) +QString::number(id)+mExternalId.mid( end );
+ } else
+ qDebug("Error in IncidenceBase::setCsum ");
+ } else {
+ mExternalId += prof+";-1;"+QString::number( id) +":";
+ }
+}
+int IncidenceBase::getCsum( const QString & prof)
+{
+ int ret = -1;
+ int num = mExternalId.find( ":"+prof+";" );
+ if ( num >= 0 ) {
+ int len = prof.length()+2;
+ num = mExternalId.find( ";", num+len );
+ int end = mExternalId.find( ":", num+1 );
+ if ( end > 0 ) {
+ bool ok;
+ ret = mExternalId.mid ( num ,end-num).toInt( &ok );
+ if (!ok)
+ return -1;
+ }
+ }
+ return ret;
+}
+
+void IncidenceBase::setIDStr( const QString & s )
+{
+ if (mReadOnly) return;
+ mExternalId = s;
+}
+
+QString IncidenceBase::IDStr() const
+{
+ return mExternalId ;
+}
void IncidenceBase::registerObserver( IncidenceBase::Observer *observer )
{
if( !mObservers.contains(observer) ) mObservers.append( observer );
}
void IncidenceBase::unRegisterObserver( IncidenceBase::Observer *observer )
diff --git a/libkcal/incidencebase.h b/libkcal/incidencebase.h
index ce6e254..2f85df6 100644
--- a/libkcal/incidencebase.h
+++ b/libkcal/incidencebase.h
@@ -129,12 +129,19 @@ class IncidenceBase : public CustomProperties
void setZaurusId(int id);
int zaurusId() const;
void setZaurusUid(int id);
int zaurusUid() const;
void setTempSyncStat(int id);
int tempSyncStat() const;
+ void setIDStr( const QString & );
+ QString IDStr() const;
+ void setID( const QString &, int );
+ int getID( const QString & );
+ void setCsum( const QString &, int );
+ int getCsum( const QString & );
+
void registerObserver( Observer * );
void unRegisterObserver( Observer * );
void updated();
protected:
@@ -150,12 +157,13 @@ class IncidenceBase : public CustomProperties
QPtrList<Attendee> mAttendees;
bool mFloats;
int mDuration;
bool mHasDuration;
+ QString mExternalId;
int mZaurusId;
int mZaurusUid;
int mTempSyncStat;
// PILOT SYNCHRONIZATION STUFF
int mPilotId; // unique id for pilot sync