From b2dede5d5735e2b4ab5afd51cf6a2c46d9be9b26 Mon Sep 17 00:00:00 2001 From: zautrix Date: Sun, 12 Sep 2004 13:11:10 +0000 Subject: many phonesync fixes --- (limited to 'libkcal') diff --git a/libkcal/phoneformat.cpp b/libkcal/phoneformat.cpp index 2ad1b5a..6df639f 100644 --- a/libkcal/phoneformat.cpp +++ b/libkcal/phoneformat.cpp @@ -35,6 +35,7 @@ #include #include #include +#include #include "calendar.h" #include "alarm.h" @@ -246,6 +247,8 @@ ulong PhoneFormat::getCsumEvent( Event* event ) } attList << list.join(""); attList << event->categoriesStr(); + //qDebug("csum cat %s", event->categoriesStr().latin1()); + attList << event->secrecyStr(); return PhoneFormat::getCsum(attList ); } @@ -269,6 +272,9 @@ ulong PhoneFormat::getCsum( const QStringList & attList) } } } + //QString dump = attList.join(","); + //qDebug("csum: %s", dump.latin1()); + return cSum; } @@ -287,15 +293,25 @@ bool PhoneFormat::load( Calendar *calendar, Calendar *existingCal) QString command ="./kammu --backup " + fileName + " -yes -C" + mConnection +" -D" + mDevice +" -M" + mModel; int ret = system ( command.latin1() ); - if ( ret != 0 ) + if ( ret != 0 ) { + qDebug("Error::command returned %d", ret); return false; + } + qDebug("Command returned %d", ret); VCalFormat vfload; vfload.setLocalTime ( true ); + qDebug("loading file ..."); + if ( ! vfload.load( calendar, fileName ) ) return false; QPtrList er = calendar->rawEvents(); Event* ev = er.first(); + qDebug("reading events... "); while ( ev ) { + QStringList cat = ev->categories(); + if ( cat.contains( "MeetingDEF" )) { + ev->setCategories( QStringList() ); + } int id = ev->pilotId(); Event *event; event = existingCal->event( mProfileName ,QString::number( id ) ); @@ -315,6 +331,7 @@ bool PhoneFormat::load( Calendar *calendar, Calendar *existingCal) ev = er.next(); } { + qDebug("reading todos... "); QPtrList tr = calendar->rawTodos(); Todo* ev = tr.first(); while ( ev ) { @@ -482,7 +499,7 @@ bool PhoneFormat::save( Calendar *calendar) calendar->deleteTodo( to ); } to = tl.next(); - } + } // 3 save file VCalFormat vfsave; vfsave.setLocalTime ( true ); @@ -490,10 +507,19 @@ bool PhoneFormat::save( Calendar *calendar) return false; // 4 call kammu QString command ="./kammu --restore " + fileName + " -C" + - mConnection +" -D" + mDevice +" -M" + mModel;; - int ret = system ( command.latin1() ); - if ( ret != 0 ) + mConnection +" -D" + mDevice +" -M" + mModel; + int ret; + while ( (ret = system ( command.latin1())) != 0 ) { + qDebug("Error S::command returned %d. asking users", ret); + int retval = KMessageBox::warningContinueCancel(0, + i18n("Error accessing device!\nPlease turn on connection\nand retry!"),i18n("KO/Pi phone sync"),i18n("Retry"),i18n("Cancel")); + if ( retval != KMessageBox::Continue ) + return false; + } + if ( ret != 0 ) { + qDebug("Error S::command returned %d", ret); return false; + } // 5 reread data message = i18n(" Rereading all data ... "); status.setText ( message ); @@ -515,16 +541,22 @@ bool PhoneFormat::save( Calendar *calendar) Event* ev1; int procCount = 0; while ( ev ) { - qDebug("event new ID "); + //qDebug("event new ID %s",ev->summary().latin1()); status.setText ( message + QString::number ( ++procCount ) ); qApp->processEvents(); - QString cSum = ev->getCsum(mProfileName); + uint csum; + csum = PhoneFormat::getCsumEvent( ev ); + QString cSum = QString::number( csum ); + ev->setCsum( mProfileName, cSum ); + //qDebug("Event cSum %s ", cSum.latin1()); ev1 = er1.first(); while ( ev1 ) { if ( ev1->getCsum( mProfileName ) == cSum ) { er1.remove( ev1 ); afterSave( ev ); ev->setID(mProfileName, ev1->getID(mProfileName) ); + //qDebug("Event found on phone for %s ", ev->summary().latin1()); + break; } ev1 = er1.next(); @@ -538,6 +570,7 @@ bool PhoneFormat::save( Calendar *calendar) ev = er.next(); } //algo 6 compare todo + tl = calendar->rawTodos(); to = tl.first(); procCount = 0; QPtrList tl1 = calendarTemp->rawTodos(); @@ -547,7 +580,11 @@ bool PhoneFormat::save( Calendar *calendar) qDebug("todo2 %d ", procCount); status.setText ( message + QString::number ( ++procCount ) ); qApp->processEvents(); - QString cSum = to->getCsum(mProfileName); + uint csum; + csum = PhoneFormat::getCsumTodo( to ); + QString cSum = QString::number( csum ); + to->setCsum( mProfileName, cSum ); + qDebug("Todo cSum %s ", cSum.latin1()); Todo* to1 = tl1.first(); while ( to1 ) { if ( to1->getCsum( mProfileName ) == cSum ) { -- cgit v0.9.0.2