summaryrefslogtreecommitdiffabout
path: root/korganizer
authorzautrix <zautrix>2004-08-09 14:56:56 (UTC)
committer zautrix <zautrix>2004-08-09 14:56:56 (UTC)
commitad99dd380750834b3ccc4dd6fdcdd446ca5ba7ee (patch) (unidiff)
tree0394df7d796d38e7df637e6d45b82e7945fab55e /korganizer
parent48f53b2d2e7ed189e88f924259693ab66ff44b7f (diff)
downloadkdepimpi-ad99dd380750834b3ccc4dd6fdcdd446ca5ba7ee.zip
kdepimpi-ad99dd380750834b3ccc4dd6fdcdd446ca5ba7ee.tar.gz
kdepimpi-ad99dd380750834b3ccc4dd6fdcdd446ca5ba7ee.tar.bz2
more phone sync
Diffstat (limited to 'korganizer') (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/calendarview.cpp8
1 files changed, 3 insertions, 5 deletions
diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp
index d6ead37..547d02b 100644
--- a/korganizer/calendarview.cpp
+++ b/korganizer/calendarview.cpp
@@ -1010,391 +1010,389 @@ bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int
1010 inL = local->incidence( uid ); 1010 inL = local->incidence( uid );
1011 if ( inL ) { // maybe conflict - same uid in both calendars 1011 if ( inL ) { // maybe conflict - same uid in both calendars
1012 int maxrev = inL->revision(); 1012 int maxrev = inL->revision();
1013 if ( maxrev < inR->revision() ) 1013 if ( maxrev < inR->revision() )
1014 maxrev = inR->revision(); 1014 maxrev = inR->revision();
1015 if ( (take = takeEvent( inL, inR, mode, fullDateRange )) > 0 ) { 1015 if ( (take = takeEvent( inL, inR, mode, fullDateRange )) > 0 ) {
1016 //qDebug("take %d %s ", take, inL->summary().latin1()); 1016 //qDebug("take %d %s ", take, inL->summary().latin1());
1017 if ( take == 3 ) 1017 if ( take == 3 )
1018 return false; 1018 return false;
1019 if ( take == 1 ) {// take local 1019 if ( take == 1 ) {// take local
1020 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) ); 1020 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) );
1021 remote->deleteIncidence( inR ); 1021 remote->deleteIncidence( inR );
1022 if ( inL->revision() < maxrev ) 1022 if ( inL->revision() < maxrev )
1023 inL->setRevision( maxrev ); 1023 inL->setRevision( maxrev );
1024 remote->addIncidence( inL->clone() ); 1024 remote->addIncidence( inL->clone() );
1025 ++changedRemote; 1025 ++changedRemote;
1026 } else { 1026 } else {
1027 if ( inR->revision() < maxrev ) 1027 if ( inR->revision() < maxrev )
1028 inR->setRevision( maxrev ); 1028 inR->setRevision( maxrev );
1029 local->deleteIncidence( inL ); 1029 local->deleteIncidence( inL );
1030 local->addIncidence( inR->clone() ); 1030 local->addIncidence( inR->clone() );
1031 ++changedLocal; 1031 ++changedLocal;
1032 } 1032 }
1033 } 1033 }
1034 } else { // no conflict 1034 } else { // no conflict
1035 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1035 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1036 QString des = eventLSync->description(); 1036 QString des = eventLSync->description();
1037 QString pref = "e"; 1037 QString pref = "e";
1038 if ( inR->type() == "Todo" ) 1038 if ( inR->type() == "Todo" )
1039 pref = "t"; 1039 pref = "t";
1040 if ( des.find(pref+ inR->getID(mCurrentSyncDevice) +"," ) >= 0 && mode != 5) { // delete it 1040 if ( des.find(pref+ inR->getID(mCurrentSyncDevice) +"," ) >= 0 && mode != 5) { // delete it
1041 inR->setTempSyncStat( SYNC_TEMPSTATE_DELETE ); 1041 inR->setTempSyncStat( SYNC_TEMPSTATE_DELETE );
1042 //remote->deleteIncidence( inR ); 1042 //remote->deleteIncidence( inR );
1043 ++deletedEventR; 1043 ++deletedEventR;
1044 } else { 1044 } else {
1045 inR->setLastModified( modifiedCalendar ); 1045 inR->setLastModified( modifiedCalendar );
1046 local->addIncidence( inR->clone() ); 1046 local->addIncidence( inR->clone() );
1047 ++addedEvent; 1047 ++addedEvent;
1048 } 1048 }
1049 } else { 1049 } else {
1050 if ( inR->lastModified() > mLastCalendarSync || mode == 5 ) { 1050 if ( inR->lastModified() > mLastCalendarSync || mode == 5 ) {
1051 inR->setLastModified( modifiedCalendar ); 1051 inR->setLastModified( modifiedCalendar );
1052 local->addIncidence( inR->clone() ); 1052 local->addIncidence( inR->clone() );
1053 ++addedEvent; 1053 ++addedEvent;
1054 } else { 1054 } else {
1055 checkExternSyncEvent(eventRSyncSharp, inR); 1055 checkExternSyncEvent(eventRSyncSharp, inR);
1056 remote->deleteIncidence( inR ); 1056 remote->deleteIncidence( inR );
1057 ++deletedEventR; 1057 ++deletedEventR;
1058 } 1058 }
1059 } 1059 }
1060 } 1060 }
1061 } 1061 }
1062 inR = er.next(); 1062 inR = er.next();
1063 } 1063 }
1064 QPtrList<Incidence> el = local->rawIncidences(); 1064 QPtrList<Incidence> el = local->rawIncidences();
1065 inL = el.first(); 1065 inL = el.first();
1066 modulo = (el.count()/10)+1; 1066 modulo = (el.count()/10)+1;
1067 bar.setCaption (i18n("Add / remove events") ); 1067 bar.setCaption (i18n("Add / remove events") );
1068 bar.setTotalSteps ( el.count() ) ; 1068 bar.setTotalSteps ( el.count() ) ;
1069 bar.show(); 1069 bar.show();
1070 incCounter = 0; 1070 incCounter = 0;
1071 1071
1072 while ( inL ) { 1072 while ( inL ) {
1073 1073
1074 qApp->processEvents(); 1074 qApp->processEvents();
1075 if ( ! bar.isVisible() ) 1075 if ( ! bar.isVisible() )
1076 return false; 1076 return false;
1077 if ( incCounter % modulo == 0 ) 1077 if ( incCounter % modulo == 0 )
1078 bar.setProgress( incCounter ); 1078 bar.setProgress( incCounter );
1079 ++incCounter; 1079 ++incCounter;
1080 uid = inL->uid(); 1080 uid = inL->uid();
1081 bool skipIncidence = false; 1081 bool skipIncidence = false;
1082 if ( uid.left(15) == QString("last-syncEvent-") ) 1082 if ( uid.left(15) == QString("last-syncEvent-") )
1083 skipIncidence = true; 1083 skipIncidence = true;
1084 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL && inL->type() == "Journal" ) 1084 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL && inL->type() == "Journal" )
1085 skipIncidence = true; 1085 skipIncidence = true;
1086 if ( !skipIncidence ) { 1086 if ( !skipIncidence ) {
1087 inR = remote->incidence( uid ); 1087 inR = remote->incidence( uid );
1088 if ( ! inR ) { 1088 if ( ! inR ) {
1089 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1089 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1090 if ( !inL->getID(mCurrentSyncDevice).isEmpty() && mode != 4 ) { 1090 if ( !inL->getID(mCurrentSyncDevice).isEmpty() && mode != 4 ) {
1091 local->deleteIncidence( inL ); 1091 local->deleteIncidence( inL );
1092 ++deletedEventL; 1092 ++deletedEventL;
1093 } else { 1093 } else {
1094 if ( ! KOPrefs::instance()->mWriteBackExistingOnly ) { 1094 if ( ! KOPrefs::instance()->mWriteBackExistingOnly ) {
1095 inL->removeID(mCurrentSyncDevice ); 1095 inL->removeID(mCurrentSyncDevice );
1096 ++addedEventR; 1096 ++addedEventR;
1097 inL->setLastModified( modifiedCalendar ); 1097 inL->setLastModified( modifiedCalendar );
1098 remote->addIncidence( inL->clone() ); 1098 remote->addIncidence( inL->clone() );
1099 } 1099 }
1100 } 1100 }
1101 } else { 1101 } else {
1102 if ( inL->lastModified() < mLastCalendarSync && mode != 4 ) { 1102 if ( inL->lastModified() < mLastCalendarSync && mode != 4 ) {
1103 checkExternSyncEvent(eventLSyncSharp, inL); 1103 checkExternSyncEvent(eventLSyncSharp, inL);
1104 local->deleteIncidence( inL ); 1104 local->deleteIncidence( inL );
1105 ++deletedEventL; 1105 ++deletedEventL;
1106 } else { 1106 } else {
1107 if ( ! KOPrefs::instance()->mWriteBackExistingOnly ) { 1107 if ( ! KOPrefs::instance()->mWriteBackExistingOnly ) {
1108 ++addedEventR; 1108 ++addedEventR;
1109 inL->setLastModified( modifiedCalendar ); 1109 inL->setLastModified( modifiedCalendar );
1110 remote->addIncidence( inL->clone() ); 1110 remote->addIncidence( inL->clone() );
1111 } 1111 }
1112 } 1112 }
1113 } 1113 }
1114 } 1114 }
1115 } 1115 }
1116 inL = el.next(); 1116 inL = el.next();
1117 } 1117 }
1118 1118
1119 bar.hide(); 1119 bar.hide();
1120 mLastCalendarSync = QDateTime::currentDateTime().addSecs( 1 ); 1120 mLastCalendarSync = QDateTime::currentDateTime().addSecs( 1 );
1121 eventLSync->setReadOnly( false ); 1121 eventLSync->setReadOnly( false );
1122 eventLSync->setDtStart( mLastCalendarSync ); 1122 eventLSync->setDtStart( mLastCalendarSync );
1123 eventRSync->setDtStart( mLastCalendarSync ); 1123 eventRSync->setDtStart( mLastCalendarSync );
1124 eventLSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) ); 1124 eventLSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) );
1125 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) ); 1125 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) );
1126 eventRSync->setLocation( i18n("Remote from: ")+mCurrentSyncName ) ; 1126 eventRSync->setLocation( i18n("Remote from: ")+mCurrentSyncName ) ;
1127 eventLSync->setLocation(i18n("Local from: ") + mCurrentSyncName ); 1127 eventLSync->setLocation(i18n("Local from: ") + mCurrentSyncName );
1128 eventLSync->setReadOnly( true ); 1128 eventLSync->setReadOnly( true );
1129 if ( mGlobalSyncMode == SYNC_MODE_NORMAL) 1129 if ( mGlobalSyncMode == SYNC_MODE_NORMAL)
1130 remote->addEvent( eventRSync ); 1130 remote->addEvent( eventRSync );
1131 QString mes; 1131 QString mes;
1132 mes .sprintf( i18n("Synchronization summary:\n\n %d items added to local\n %d items added to remote\n %d items updated on local\n %d items updated on remote\n %d items deleted on local\n %d items deleted on remote\n"),addedEvent, addedEventR, changedLocal, changedRemote, deletedEventL, deletedEventR ); 1132 mes .sprintf( i18n("Synchronization summary:\n\n %d items added to local\n %d items added to remote\n %d items updated on local\n %d items updated on remote\n %d items deleted on local\n %d items deleted on remote\n"),addedEvent, addedEventR, changedLocal, changedRemote, deletedEventL, deletedEventR );
1133 if ( KOPrefs::instance()->mShowSyncSummary ) { 1133 if ( KOPrefs::instance()->mShowSyncSummary ) {
1134 KMessageBox::information(this, mes, i18n("KO/Pi Synchronization") ); 1134 KMessageBox::information(this, mes, i18n("KO/Pi Synchronization") );
1135 } 1135 }
1136 qDebug( mes ); 1136 qDebug( mes );
1137 mCalendar->checkAlarmForIncidence( 0, true ); 1137 mCalendar->checkAlarmForIncidence( 0, true );
1138 return syncOK; 1138 return syncOK;
1139} 1139}
1140 1140
1141void CalendarView::setSyncDevice( QString s ) 1141void CalendarView::setSyncDevice( QString s )
1142{ 1142{
1143 mCurrentSyncDevice= s; 1143 mCurrentSyncDevice= s;
1144} 1144}
1145void CalendarView::setSyncName( QString s ) 1145void CalendarView::setSyncName( QString s )
1146{ 1146{
1147 mCurrentSyncName= s; 1147 mCurrentSyncName= s;
1148} 1148}
1149bool CalendarView::syncCalendar(QString filename, int mode) 1149bool CalendarView::syncCalendar(QString filename, int mode)
1150{ 1150{
1151 mGlobalSyncMode = SYNC_MODE_NORMAL; 1151 mGlobalSyncMode = SYNC_MODE_NORMAL;
1152 CalendarLocal* calendar = new CalendarLocal(); 1152 CalendarLocal* calendar = new CalendarLocal();
1153 calendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId); 1153 calendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId);
1154 FileStorage* storage = new FileStorage( calendar ); 1154 FileStorage* storage = new FileStorage( calendar );
1155 bool syncOK = false; 1155 bool syncOK = false;
1156 storage->setFileName( filename ); 1156 storage->setFileName( filename );
1157 // qDebug("loading ... "); 1157 // qDebug("loading ... ");
1158 if ( storage->load(KOPrefs::instance()->mUseQuicksave) ) { 1158 if ( storage->load(KOPrefs::instance()->mUseQuicksave) ) {
1159 getEventViewerDialog()->setSyncMode( true ); 1159 getEventViewerDialog()->setSyncMode( true );
1160 syncOK = synchronizeCalendar( mCalendar, calendar, mode ); 1160 syncOK = synchronizeCalendar( mCalendar, calendar, mode );
1161 getEventViewerDialog()->setSyncMode( false ); 1161 getEventViewerDialog()->setSyncMode( false );
1162 if ( syncOK ) { 1162 if ( syncOK ) {
1163 if ( KOPrefs::instance()->mWriteBackFile ) 1163 if ( KOPrefs::instance()->mWriteBackFile )
1164 { 1164 {
1165 storage->setSaveFormat( new ICalFormat( KOPrefs::instance()->mUseQuicksave) ); 1165 storage->setSaveFormat( new ICalFormat( KOPrefs::instance()->mUseQuicksave) );
1166 storage->save(); 1166 storage->save();
1167 } 1167 }
1168 } 1168 }
1169 setModified( true ); 1169 setModified( true );
1170 } 1170 }
1171 delete storage; 1171 delete storage;
1172 delete calendar; 1172 delete calendar;
1173 if ( syncOK ) 1173 if ( syncOK )
1174 updateView(); 1174 updateView();
1175 return syncOK; 1175 return syncOK;
1176} 1176}
1177void CalendarView::syncPhone() 1177void CalendarView::syncPhone()
1178{ 1178{
1179 syncExternal( 1 ); 1179 syncExternal( 1 );
1180} 1180}
1181void CalendarView::syncExternal( int mode ) 1181void CalendarView::syncExternal( int mode )
1182{ 1182{
1183 mGlobalSyncMode = SYNC_MODE_EXTERNAL; 1183 mGlobalSyncMode = SYNC_MODE_EXTERNAL;
1184 //mCurrentSyncDevice = "sharp-DTM"; 1184 //mCurrentSyncDevice = "sharp-DTM";
1185 if ( KOPrefs::instance()->mAskForPreferences ) 1185 if ( KOPrefs::instance()->mAskForPreferences )
1186 edit_sync_options(); 1186 edit_sync_options();
1187 qApp->processEvents(); 1187 qApp->processEvents();
1188 CalendarLocal* calendar = new CalendarLocal(); 1188 CalendarLocal* calendar = new CalendarLocal();
1189 calendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId); 1189 calendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId);
1190 bool syncOK = false; 1190 bool syncOK = false;
1191 bool loadSuccess = false; 1191 bool loadSuccess = false;
1192 PhoneFormat* phoneFormat = 0; 1192 PhoneFormat* phoneFormat = 0;
1193#ifndef DESKTOP_VERSION 1193#ifndef DESKTOP_VERSION
1194 SharpFormat* sharpFormat = 0; 1194 SharpFormat* sharpFormat = 0;
1195 if ( mode == 0 ) { // sharp 1195 if ( mode == 0 ) { // sharp
1196 sharpFormat = new SharpFormat () ; 1196 sharpFormat = new SharpFormat () ;
1197 loadSuccess = sharpFormat->load( calendar, mCalendar ); 1197 loadSuccess = sharpFormat->load( calendar, mCalendar );
1198 1198
1199 } else 1199 } else
1200#endif 1200#endif
1201 if ( mode == 1 ) { // phone 1201 if ( mode == 1 ) { // phone
1202 phoneFormat = new PhoneFormat (); 1202 phoneFormat = new PhoneFormat (mCurrentSyncDevice,
1203 loadSuccess = phoneFormat->load( calendar,
1204 mCalendar,
1205 mCurrentSyncDevice,
1206 KOPrefs::instance()->mPhoneDevice, 1203 KOPrefs::instance()->mPhoneDevice,
1207 KOPrefs::instance()->mPhoneConnection, 1204 KOPrefs::instance()->mPhoneConnection,
1208 KOPrefs::instance()->mPhoneModel); 1205 KOPrefs::instance()->mPhoneModel);
1206 loadSuccess = phoneFormat->load( calendar,mCalendar);
1209 1207
1210 } else 1208 } else
1211 return; 1209 return;
1212 if ( loadSuccess ) { 1210 if ( loadSuccess ) {
1213 getEventViewerDialog()->setSyncMode( true ); 1211 getEventViewerDialog()->setSyncMode( true );
1214 syncOK = synchronizeCalendar( mCalendar, calendar, KOPrefs::instance()->mSyncAlgoPrefs ); 1212 syncOK = synchronizeCalendar( mCalendar, calendar, KOPrefs::instance()->mSyncAlgoPrefs );
1215 getEventViewerDialog()->setSyncMode( false ); 1213 getEventViewerDialog()->setSyncMode( false );
1216 qApp->processEvents(); 1214 qApp->processEvents();
1217 if ( syncOK ) { 1215 if ( syncOK ) {
1218 if ( KOPrefs::instance()->mWriteBackFile ) 1216 if ( KOPrefs::instance()->mWriteBackFile )
1219 { 1217 {
1220 QPtrList<Incidence> iL = mCalendar->rawIncidences(); 1218 QPtrList<Incidence> iL = mCalendar->rawIncidences();
1221 Incidence* inc = iL.first(); 1219 Incidence* inc = iL.first();
1222 /* obsolete 1220 /* obsolete
1223 while ( inc ) { 1221 while ( inc ) {
1224 inc->setZaurusStat( inc->revision () ); 1222 inc->setZaurusStat( inc->revision () );
1225 inc = iL.next(); 1223 inc = iL.next();
1226 } 1224 }
1227 */ 1225 */
1228#ifndef DESKTOP_VERSION 1226#ifndef DESKTOP_VERSION
1229 if ( sharpFormat ) 1227 if ( sharpFormat )
1230 sharpFormat->save(calendar); 1228 sharpFormat->save(calendar);
1231#endif 1229#endif
1232 if ( phoneFormat ) 1230 if ( phoneFormat )
1233 phoneFormat->save(calendar); 1231 phoneFormat->save(calendar);
1234 iL = calendar->rawIncidences(); 1232 iL = calendar->rawIncidences();
1235 inc = iL.first(); 1233 inc = iL.first();
1236 Incidence* loc; 1234 Incidence* loc;
1237 while ( inc ) { 1235 while ( inc ) {
1238 if ( inc->tempSyncStat() == SYNC_TEMPSTATE_NEW_ID ) { 1236 if ( inc->tempSyncStat() == SYNC_TEMPSTATE_NEW_ID ) {
1239 loc = mCalendar->incidence(inc->uid() ); 1237 loc = mCalendar->incidence(inc->uid() );
1240 if ( loc ) { 1238 if ( loc ) {
1241 loc->setID(mCurrentSyncDevice, inc->getID(mCurrentSyncDevice) ); 1239 loc->setID(mCurrentSyncDevice, inc->getID(mCurrentSyncDevice) );
1242 loc->setCsum( mCurrentSyncDevice, inc->getCsum(mCurrentSyncDevice) ); 1240 loc->setCsum( mCurrentSyncDevice, inc->getCsum(mCurrentSyncDevice) );
1243 } 1241 }
1244 } 1242 }
1245 inc = iL.next(); 1243 inc = iL.next();
1246 } 1244 }
1247 Incidence* lse = getLastSyncEvent(); 1245 Incidence* lse = getLastSyncEvent();
1248 if ( lse ) { 1246 if ( lse ) {
1249 lse->setReadOnly( false ); 1247 lse->setReadOnly( false );
1250 lse->setDescription( "" ); 1248 lse->setDescription( "" );
1251 lse->setReadOnly( true ); 1249 lse->setReadOnly( true );
1252 } 1250 }
1253 } 1251 }
1254 } 1252 }
1255 setModified( true ); 1253 setModified( true );
1256 } else { 1254 } else {
1257 QString question = i18n("Sorry, the database access\ncommand failed!\n\nNothing synced!\n") ; 1255 QString question = i18n("Sorry, the database access\ncommand failed!\n\nNothing synced!\n") ;
1258 QMessageBox::information( 0, i18n("KO/Pi Import - ERROR"), 1256 QMessageBox::information( 0, i18n("KO/Pi Import - ERROR"),
1259 question, i18n("Ok")) ; 1257 question, i18n("Ok")) ;
1260 1258
1261 } 1259 }
1262 delete calendar; 1260 delete calendar;
1263 updateView(); 1261 updateView();
1264 return ;//syncOK; 1262 return ;//syncOK;
1265 1263
1266} 1264}
1267void CalendarView::syncSharp() 1265void CalendarView::syncSharp()
1268{ 1266{
1269 syncExternal( 0 ); 1267 syncExternal( 0 );
1270 1268
1271} 1269}
1272 1270
1273 1271
1274#include <kabc/stdaddressbook.h> 1272#include <kabc/stdaddressbook.h>
1275bool CalendarView::importBday() 1273bool CalendarView::importBday()
1276{ 1274{
1277 KABC::StdAddressBook* AddressBook = KABC::StdAddressBook::self( true ); 1275 KABC::StdAddressBook* AddressBook = KABC::StdAddressBook::self( true );
1278 KABC::AddressBook::Iterator it; 1276 KABC::AddressBook::Iterator it;
1279 int count = 0; 1277 int count = 0;
1280 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) { 1278 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) {
1281 ++count; 1279 ++count;
1282 } 1280 }
1283 QProgressBar bar(count,0 ); 1281 QProgressBar bar(count,0 );
1284 int w = 300; 1282 int w = 300;
1285 if ( QApplication::desktop()->width() < 320 ) 1283 if ( QApplication::desktop()->width() < 320 )
1286 w = 220; 1284 w = 220;
1287 int h = bar.sizeHint().height() ; 1285 int h = bar.sizeHint().height() ;
1288 int dw = QApplication::desktop()->width(); 1286 int dw = QApplication::desktop()->width();
1289 int dh = QApplication::desktop()->height(); 1287 int dh = QApplication::desktop()->height();
1290 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 1288 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
1291 bar.show(); 1289 bar.show();
1292 bar.setCaption (i18n("Reading addressbook - close to abort!") ); 1290 bar.setCaption (i18n("Reading addressbook - close to abort!") );
1293 qApp->processEvents(); 1291 qApp->processEvents();
1294 count = 0; 1292 count = 0;
1295 int addCount = 0; 1293 int addCount = 0;
1296 KCal::Attendee* a = 0; 1294 KCal::Attendee* a = 0;
1297 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) { 1295 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) {
1298 if ( ! bar.isVisible() ) 1296 if ( ! bar.isVisible() )
1299 return false; 1297 return false;
1300 bar.setProgress( count++ ); 1298 bar.setProgress( count++ );
1301 qApp->processEvents(); 1299 qApp->processEvents();
1302 //qDebug("add BDay %s %s", (*it).realName().latin1(),(*it).birthday().date().toString().latin1() ); 1300 //qDebug("add BDay %s %s", (*it).realName().latin1(),(*it).birthday().date().toString().latin1() );
1303 if ( (*it).birthday().date().isValid() ){ 1301 if ( (*it).birthday().date().isValid() ){
1304 a = new KCal::Attendee( (*it).realName(), (*it).preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,(*it).uid()) ; 1302 a = new KCal::Attendee( (*it).realName(), (*it).preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,(*it).uid()) ;
1305 if ( addAnniversary( (*it).birthday().date(), (*it).assembledName(), a, true ) ) 1303 if ( addAnniversary( (*it).birthday().date(), (*it).assembledName(), a, true ) )
1306 ++addCount; 1304 ++addCount;
1307 } 1305 }
1308 QDate anni = KGlobal::locale()->readDate( (*it).custom("KADDRESSBOOK", "X-Anniversary" ), "%Y-%m-%d"); 1306 QDate anni = KGlobal::locale()->readDate( (*it).custom("KADDRESSBOOK", "X-Anniversary" ), "%Y-%m-%d");
1309 if ( anni.isValid() ){ 1307 if ( anni.isValid() ){
1310 a = new KCal::Attendee( (*it).realName(), (*it).preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,(*it).uid()) ; 1308 a = new KCal::Attendee( (*it).realName(), (*it).preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,(*it).uid()) ;
1311 if ( addAnniversary( anni, (*it).assembledName(), a, false ) ) 1309 if ( addAnniversary( anni, (*it).assembledName(), a, false ) )
1312 ++addCount; 1310 ++addCount;
1313 } 1311 }
1314 } 1312 }
1315 updateView(); 1313 updateView();
1316 topLevelWidget()->setCaption(QString::number( addCount )+ i18n(" birthdays/anniversaries added!")); 1314 topLevelWidget()->setCaption(QString::number( addCount )+ i18n(" birthdays/anniversaries added!"));
1317 return true; 1315 return true;
1318} 1316}
1319 1317
1320bool CalendarView::addAnniversary( QDate date, QString name, KCal::Attendee* a, bool birthday) 1318bool CalendarView::addAnniversary( QDate date, QString name, KCal::Attendee* a, bool birthday)
1321{ 1319{
1322 //qDebug("addAnni "); 1320 //qDebug("addAnni ");
1323 Event * ev = new Event(); 1321 Event * ev = new Event();
1324 if ( a ) { 1322 if ( a ) {
1325 ev->addAttendee( a ); 1323 ev->addAttendee( a );
1326 } 1324 }
1327 QString kind; 1325 QString kind;
1328 if ( birthday ) 1326 if ( birthday )
1329 kind = i18n( "Birthday" ); 1327 kind = i18n( "Birthday" );
1330 else 1328 else
1331 kind = i18n( "Anniversary" ); 1329 kind = i18n( "Anniversary" );
1332 ev->setSummary( name + " - " + kind ); 1330 ev->setSummary( name + " - " + kind );
1333 ev->setOrganizer( "nobody@nowhere" ); 1331 ev->setOrganizer( "nobody@nowhere" );
1334 ev->setCategories( kind ); 1332 ev->setCategories( kind );
1335 ev->setDtStart( QDateTime(date) ); 1333 ev->setDtStart( QDateTime(date) );
1336 ev->setDtEnd( QDateTime(date) ); 1334 ev->setDtEnd( QDateTime(date) );
1337 ev->setFloats( true ); 1335 ev->setFloats( true );
1338 Recurrence * rec = ev->recurrence(); 1336 Recurrence * rec = ev->recurrence();
1339 rec->setYearly(Recurrence::rYearlyMonth,1,-1); 1337 rec->setYearly(Recurrence::rYearlyMonth,1,-1);
1340 rec->addYearlyNum( date.month() ); 1338 rec->addYearlyNum( date.month() );
1341 if ( !mCalendar->addAnniversaryNoDup( ev ) ) { 1339 if ( !mCalendar->addAnniversaryNoDup( ev ) ) {
1342 delete ev; 1340 delete ev;
1343 return false; 1341 return false;
1344 } 1342 }
1345 return true; 1343 return true;
1346 1344
1347} 1345}
1348bool CalendarView::importQtopia( const QString &categories, 1346bool CalendarView::importQtopia( const QString &categories,
1349 const QString &datebook, 1347 const QString &datebook,
1350 const QString &todolist ) 1348 const QString &todolist )
1351{ 1349{
1352 1350
1353 QtopiaFormat qtopiaFormat; 1351 QtopiaFormat qtopiaFormat;
1354 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories)); 1352 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories));
1355 if ( !categories.isEmpty() ) qtopiaFormat.load( mCalendar, categories ); 1353 if ( !categories.isEmpty() ) qtopiaFormat.load( mCalendar, categories );
1356 if ( !datebook.isEmpty() ) qtopiaFormat.load( mCalendar, datebook ); 1354 if ( !datebook.isEmpty() ) qtopiaFormat.load( mCalendar, datebook );
1357 if ( !todolist.isEmpty() ) qtopiaFormat.load( mCalendar, todolist ); 1355 if ( !todolist.isEmpty() ) qtopiaFormat.load( mCalendar, todolist );
1358 1356
1359 updateView(); 1357 updateView();
1360 return true; 1358 return true;
1361 1359
1362#if 0 1360#if 0
1363 mGlobalSyncMode = SYNC_MODE_QTOPIA; 1361 mGlobalSyncMode = SYNC_MODE_QTOPIA;
1364 mCurrentSyncDevice = "qtopia-XML"; 1362 mCurrentSyncDevice = "qtopia-XML";
1365 if ( KOPrefs::instance()->mAskForPreferences ) 1363 if ( KOPrefs::instance()->mAskForPreferences )
1366 edit_sync_options(); 1364 edit_sync_options();
1367 qApp->processEvents(); 1365 qApp->processEvents();
1368 CalendarLocal* calendar = new CalendarLocal(); 1366 CalendarLocal* calendar = new CalendarLocal();
1369 calendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId); 1367 calendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId);
1370 bool syncOK = false; 1368 bool syncOK = false;
1371 QtopiaFormat qtopiaFormat; 1369 QtopiaFormat qtopiaFormat;
1372 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories)); 1370 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories));
1373 bool loadOk = true; 1371 bool loadOk = true;
1374 if ( !categories.isEmpty() ) 1372 if ( !categories.isEmpty() )
1375 loadOk = qtopiaFormat.load( calendar, categories ); 1373 loadOk = qtopiaFormat.load( calendar, categories );
1376 if ( loadOk && !datebook.isEmpty() ) 1374 if ( loadOk && !datebook.isEmpty() )
1377 loadOk = qtopiaFormat.load( calendar, datebook ); 1375 loadOk = qtopiaFormat.load( calendar, datebook );
1378 if ( loadOk && !todolist.isEmpty() ) 1376 if ( loadOk && !todolist.isEmpty() )
1379 loadOk = qtopiaFormat.load( calendar, todolist ); 1377 loadOk = qtopiaFormat.load( calendar, todolist );
1380 1378
1381 if ( loadOk ) { 1379 if ( loadOk ) {
1382 getEventViewerDialog()->setSyncMode( true ); 1380 getEventViewerDialog()->setSyncMode( true );
1383 syncOK = synchronizeCalendar( mCalendar, calendar, KOPrefs::instance()->mSyncAlgoPrefs ); 1381 syncOK = synchronizeCalendar( mCalendar, calendar, KOPrefs::instance()->mSyncAlgoPrefs );
1384 getEventViewerDialog()->setSyncMode( false ); 1382 getEventViewerDialog()->setSyncMode( false );
1385 qApp->processEvents(); 1383 qApp->processEvents();
1386 if ( syncOK ) { 1384 if ( syncOK ) {
1387 if ( KOPrefs::instance()->mWriteBackFile ) 1385 if ( KOPrefs::instance()->mWriteBackFile )
1388 { 1386 {
1389 // write back XML file 1387 // write back XML file
1390 1388
1391 } 1389 }
1392 setModified( true ); 1390 setModified( true );
1393 } 1391 }
1394 } else { 1392 } else {
1395 QString question = i18n("Sorry, the file loading\ncommand failed!\n\nNothing synced!\n") ; 1393 QString question = i18n("Sorry, the file loading\ncommand failed!\n\nNothing synced!\n") ;
1396 QMessageBox::information( 0, i18n("KO/Pi Sync - ERROR"), 1394 QMessageBox::information( 0, i18n("KO/Pi Sync - ERROR"),
1397 question, i18n("Ok")) ; 1395 question, i18n("Ok")) ;
1398 } 1396 }
1399 delete calendar; 1397 delete calendar;
1400 updateView(); 1398 updateView();