-rw-r--r-- | korganizer/calendarview.cpp | 136 | ||||
-rw-r--r-- | korganizer/calendarview.h | 11 | ||||
-rw-r--r-- | korganizer/koprefs.cpp | 3 | ||||
-rw-r--r-- | korganizer/koprefs.h | 20 | ||||
-rw-r--r-- | korganizer/mainwindow.cpp | 556 | ||||
-rw-r--r-- | korganizer/mainwindow.h | 24 |
6 files changed, 83 insertions, 667 deletions
diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp index ea9607d..b56f1f9 100644 --- a/korganizer/calendarview.cpp +++ b/korganizer/calendarview.cpp | |||
@@ -691,37 +691,25 @@ QDate CalendarView::endDate() | |||
691 | void CalendarView::createPrinter() | 691 | void CalendarView::createPrinter() |
692 | { | 692 | { |
693 | #ifndef KORG_NOPRINTER | 693 | #ifndef KORG_NOPRINTER |
694 | if (!mCalPrinter) { | 694 | if (!mCalPrinter) { |
695 | mCalPrinter = new CalPrinter(this, mCalendar); | 695 | mCalPrinter = new CalPrinter(this, mCalendar); |
696 | connect(this, SIGNAL(configChanged()), mCalPrinter, SLOT(updateConfig())); | 696 | connect(this, SIGNAL(configChanged()), mCalPrinter, SLOT(updateConfig())); |
697 | } | 697 | } |
698 | #endif | 698 | #endif |
699 | } | 699 | } |
700 | 700 | ||
701 | void CalendarView::confSync() | 701 | void CalendarView::confSync() |
702 | { | 702 | { |
703 | static KSyncPrefsDialog* sp = 0; | 703 | //DELETE |
704 | if ( ! sp ) { | ||
705 | sp = new KSyncPrefsDialog( this, "syncprefs", true ); | ||
706 | } | ||
707 | sp->usrReadConfig(); | ||
708 | #ifndef DESKTOP_VERSION | ||
709 | sp->showMaximized(); | ||
710 | #else | ||
711 | sp->show(); | ||
712 | #endif | ||
713 | sp->exec(); | ||
714 | KOPrefs::instance()->mSyncProfileNames = sp->getSyncProfileNames(); | ||
715 | KOPrefs::instance()->mLocalMachineName = sp->getLocalMachineName (); | ||
716 | } | 704 | } |
717 | 705 | ||
718 | 706 | ||
719 | //KOPrefs::instance()->mWriteBackFile | 707 | //KOPrefs::instance()->mWriteBackFile |
720 | //KOPrefs::instance()->mWriteBackExistingOnly | 708 | //KOPrefs::instance()->mWriteBackExistingOnly |
721 | 709 | ||
722 | // 0 syncPrefsGroup->addRadio(i18n("Take local entry on conflict")); | 710 | // 0 syncPrefsGroup->addRadio(i18n("Take local entry on conflict")); |
723 | // 1 syncPrefsGroup->addRadio(i18n("Take remote entry on conflict")); | 711 | // 1 syncPrefsGroup->addRadio(i18n("Take remote entry on conflict")); |
724 | // 2 syncPrefsGroup->addRadio(i18n("Take newest entry on conflict")); | 712 | // 2 syncPrefsGroup->addRadio(i18n("Take newest entry on conflict")); |
725 | // 3 syncPrefsGroup->addRadio(i18n("Ask for every entry on conflict")); | 713 | // 3 syncPrefsGroup->addRadio(i18n("Ask for every entry on conflict")); |
726 | // 4 syncPrefsGroup->addRadio(i18n("Force take local entry always")); | 714 | // 4 syncPrefsGroup->addRadio(i18n("Force take local entry always")); |
727 | // 5 syncPrefsGroup->addRadio(i18n("Force take remote entry always")); | 715 | // 5 syncPrefsGroup->addRadio(i18n("Force take remote entry always")); |
@@ -868,25 +856,25 @@ int CalendarView::takeEvent( Incidence* local, Incidence* remote, int mode , b | |||
868 | } | 856 | } |
869 | return 0; | 857 | return 0; |
870 | } | 858 | } |
871 | Event* CalendarView::getLastSyncEvent() | 859 | Event* CalendarView::getLastSyncEvent() |
872 | { | 860 | { |
873 | Event* lse; | 861 | Event* lse; |
874 | //qDebug("CurrentSyncDevice %s ",mCurrentSyncDevice .latin1() ); | 862 | //qDebug("CurrentSyncDevice %s ",mCurrentSyncDevice .latin1() ); |
875 | lse = mCalendar->event( "last-syncEvent-"+mCurrentSyncDevice ); | 863 | lse = mCalendar->event( "last-syncEvent-"+mCurrentSyncDevice ); |
876 | if (!lse) { | 864 | if (!lse) { |
877 | lse = new Event(); | 865 | lse = new Event(); |
878 | lse->setUid( "last-syncEvent-"+mCurrentSyncDevice ); | 866 | lse->setUid( "last-syncEvent-"+mCurrentSyncDevice ); |
879 | QString sum = ""; | 867 | QString sum = ""; |
880 | if ( KOPrefs::instance()->mExternSyncProfiles.contains( mCurrentSyncDevice ) ) | 868 | if ( mSyncManager->mExternSyncProfiles.contains( mCurrentSyncDevice ) ) |
881 | sum = "E: "; | 869 | sum = "E: "; |
882 | lse->setSummary(sum+mCurrentSyncDevice + i18n(" - sync event")); | 870 | lse->setSummary(sum+mCurrentSyncDevice + i18n(" - sync event")); |
883 | lse->setDtStart( mLastCalendarSync ); | 871 | lse->setDtStart( mLastCalendarSync ); |
884 | lse->setDtEnd( mLastCalendarSync.addSecs( 7200 ) ); | 872 | lse->setDtEnd( mLastCalendarSync.addSecs( 7200 ) ); |
885 | lse->setCategories( i18n("SyncEvent") ); | 873 | lse->setCategories( i18n("SyncEvent") ); |
886 | lse->setReadOnly( true ); | 874 | lse->setReadOnly( true ); |
887 | mCalendar->addEvent( lse ); | 875 | mCalendar->addEvent( lse ); |
888 | } | 876 | } |
889 | 877 | ||
890 | return lse; | 878 | return lse; |
891 | 879 | ||
892 | } | 880 | } |
@@ -1110,58 +1098,58 @@ bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int | |||
1110 | skipIncidence = true; | 1098 | skipIncidence = true; |
1111 | if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL && inL->type() == "Journal" ) | 1099 | if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL && inL->type() == "Journal" ) |
1112 | skipIncidence = true; | 1100 | skipIncidence = true; |
1113 | if ( !skipIncidence ) { | 1101 | if ( !skipIncidence ) { |
1114 | inR = remote->incidence( uid ); | 1102 | inR = remote->incidence( uid ); |
1115 | if ( ! inR ) { | 1103 | if ( ! inR ) { |
1116 | if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { | 1104 | if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { |
1117 | if ( !inL->getID(mCurrentSyncDevice).isEmpty() && mode != 4 ) { | 1105 | if ( !inL->getID(mCurrentSyncDevice).isEmpty() && mode != 4 ) { |
1118 | checkExternSyncEvent(eventLSyncSharp, inL); | 1106 | checkExternSyncEvent(eventLSyncSharp, inL); |
1119 | local->deleteIncidence( inL ); | 1107 | local->deleteIncidence( inL ); |
1120 | ++deletedEventL; | 1108 | ++deletedEventL; |
1121 | } else { | 1109 | } else { |
1122 | if ( ! KOPrefs::instance()->mWriteBackExistingOnly ) { | 1110 | if ( ! mSyncManager->mWriteBackExistingOnly ) { |
1123 | inL->removeID(mCurrentSyncDevice ); | 1111 | inL->removeID(mCurrentSyncDevice ); |
1124 | ++addedEventR; | 1112 | ++addedEventR; |
1125 | //qDebug("remote added Incidence %s ", inL->summary().latin1()); | 1113 | //qDebug("remote added Incidence %s ", inL->summary().latin1()); |
1126 | inL->setLastModified( modifiedCalendar ); | 1114 | inL->setLastModified( modifiedCalendar ); |
1127 | inR = inL->clone(); | 1115 | inR = inL->clone(); |
1128 | inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL ); | 1116 | inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL ); |
1129 | remote->addIncidence( inR ); | 1117 | remote->addIncidence( inR ); |
1130 | } | 1118 | } |
1131 | } | 1119 | } |
1132 | } else { | 1120 | } else { |
1133 | if ( inL->lastModified() < mLastCalendarSync && mode != 4 ) { | 1121 | if ( inL->lastModified() < mLastCalendarSync && mode != 4 ) { |
1134 | checkExternSyncEvent(eventLSyncSharp, inL); | 1122 | checkExternSyncEvent(eventLSyncSharp, inL); |
1135 | local->deleteIncidence( inL ); | 1123 | local->deleteIncidence( inL ); |
1136 | ++deletedEventL; | 1124 | ++deletedEventL; |
1137 | } else { | 1125 | } else { |
1138 | if ( ! KOPrefs::instance()->mWriteBackExistingOnly ) { | 1126 | if ( ! mSyncManager->mWriteBackExistingOnly ) { |
1139 | ++addedEventR; | 1127 | ++addedEventR; |
1140 | inL->setLastModified( modifiedCalendar ); | 1128 | inL->setLastModified( modifiedCalendar ); |
1141 | remote->addIncidence( inL->clone() ); | 1129 | remote->addIncidence( inL->clone() ); |
1142 | } | 1130 | } |
1143 | } | 1131 | } |
1144 | } | 1132 | } |
1145 | } | 1133 | } |
1146 | } | 1134 | } |
1147 | inL = el.next(); | 1135 | inL = el.next(); |
1148 | } | 1136 | } |
1149 | int delFut = 0; | 1137 | int delFut = 0; |
1150 | if ( KOPrefs::instance()->mWriteBackInFuture ) { | 1138 | if ( mSyncManager->mWriteBackInFuture ) { |
1151 | er = remote->rawIncidences(); | 1139 | er = remote->rawIncidences(); |
1152 | inR = er.first(); | 1140 | inR = er.first(); |
1153 | QDateTime dt; | 1141 | QDateTime dt; |
1154 | QDateTime cur = QDateTime::currentDateTime().addDays( -7 ); | 1142 | QDateTime cur = QDateTime::currentDateTime().addDays( -7 ); |
1155 | QDateTime end = cur.addDays( (KOPrefs::instance()->mWriteBackInFuture +1 ) *7 ); | 1143 | QDateTime end = cur.addDays( (mSyncManager->mWriteBackInFuture +1 ) *7 ); |
1156 | while ( inR ) { | 1144 | while ( inR ) { |
1157 | if ( inR->type() == "Todo" ) { | 1145 | if ( inR->type() == "Todo" ) { |
1158 | Todo * t = (Todo*)inR; | 1146 | Todo * t = (Todo*)inR; |
1159 | if ( t->hasDueDate() ) | 1147 | if ( t->hasDueDate() ) |
1160 | dt = t->dtDue(); | 1148 | dt = t->dtDue(); |
1161 | else | 1149 | else |
1162 | dt = cur.addSecs( 62 ); | 1150 | dt = cur.addSecs( 62 ); |
1163 | } | 1151 | } |
1164 | else if (inR->type() == "Event" ) { | 1152 | else if (inR->type() == "Event" ) { |
1165 | bool ok; | 1153 | bool ok; |
1166 | dt = inR->getNextOccurence( cur, &ok ); | 1154 | dt = inR->getNextOccurence( cur, &ok ); |
1167 | if ( !ok ) | 1155 | if ( !ok ) |
@@ -1183,28 +1171,28 @@ bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int | |||
1183 | eventRSync->setDtStart( mLastCalendarSync ); | 1171 | eventRSync->setDtStart( mLastCalendarSync ); |
1184 | eventLSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) ); | 1172 | eventLSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) ); |
1185 | eventRSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) ); | 1173 | eventRSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) ); |
1186 | eventRSync->setLocation( i18n("Remote from: ")+mCurrentSyncName ) ; | 1174 | eventRSync->setLocation( i18n("Remote from: ")+mCurrentSyncName ) ; |
1187 | eventLSync->setLocation(i18n("Local from: ") + mCurrentSyncName ); | 1175 | eventLSync->setLocation(i18n("Local from: ") + mCurrentSyncName ); |
1188 | eventLSync->setReadOnly( true ); | 1176 | eventLSync->setReadOnly( true ); |
1189 | if ( mGlobalSyncMode == SYNC_MODE_NORMAL) | 1177 | if ( mGlobalSyncMode == SYNC_MODE_NORMAL) |
1190 | remote->addEvent( eventRSync ); | 1178 | remote->addEvent( eventRSync ); |
1191 | QString mes; | 1179 | QString mes; |
1192 | 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 ); | 1180 | 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 ); |
1193 | QString delmess; | 1181 | QString delmess; |
1194 | if ( delFut ) { | 1182 | if ( delFut ) { |
1195 | delmess.sprintf( i18n("%d items skipped on remote,\nbecause they are in the past or\nmore than %d weeks in the future.\n"),delFut, KOPrefs::instance()->mWriteBackInFuture ); | 1183 | delmess.sprintf( i18n("%d items skipped on remote,\nbecause they are in the past or\nmore than %d weeks in the future.\n"),delFut, mSyncManager->mWriteBackInFuture ); |
1196 | mes += delmess; | 1184 | mes += delmess; |
1197 | } | 1185 | } |
1198 | if ( KOPrefs::instance()->mShowSyncSummary ) { | 1186 | if ( mSyncManager->mShowSyncSummary ) { |
1199 | KMessageBox::information(this, mes, i18n("KO/Pi Synchronization") ); | 1187 | KMessageBox::information(this, mes, i18n("KO/Pi Synchronization") ); |
1200 | } | 1188 | } |
1201 | qDebug( mes ); | 1189 | qDebug( mes ); |
1202 | mCalendar->checkAlarmForIncidence( 0, true ); | 1190 | mCalendar->checkAlarmForIncidence( 0, true ); |
1203 | return syncOK; | 1191 | return syncOK; |
1204 | } | 1192 | } |
1205 | 1193 | ||
1206 | void CalendarView::setSyncDevice( QString s ) | 1194 | void CalendarView::setSyncDevice( QString s ) |
1207 | { | 1195 | { |
1208 | mCurrentSyncDevice= s; | 1196 | mCurrentSyncDevice= s; |
1209 | } | 1197 | } |
1210 | void CalendarView::setSyncName( QString s ) | 1198 | void CalendarView::setSyncName( QString s ) |
@@ -1216,78 +1204,76 @@ bool CalendarView::syncCalendar(QString filename, int mode) | |||
1216 | mGlobalSyncMode = SYNC_MODE_NORMAL; | 1204 | mGlobalSyncMode = SYNC_MODE_NORMAL; |
1217 | CalendarLocal* calendar = new CalendarLocal(); | 1205 | CalendarLocal* calendar = new CalendarLocal(); |
1218 | calendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId); | 1206 | calendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId); |
1219 | FileStorage* storage = new FileStorage( calendar ); | 1207 | FileStorage* storage = new FileStorage( calendar ); |
1220 | bool syncOK = false; | 1208 | bool syncOK = false; |
1221 | storage->setFileName( filename ); | 1209 | storage->setFileName( filename ); |
1222 | // qDebug("loading ... "); | 1210 | // qDebug("loading ... "); |
1223 | if ( storage->load() ) { | 1211 | if ( storage->load() ) { |
1224 | getEventViewerDialog()->setSyncMode( true ); | 1212 | getEventViewerDialog()->setSyncMode( true ); |
1225 | syncOK = synchronizeCalendar( mCalendar, calendar, mode ); | 1213 | syncOK = synchronizeCalendar( mCalendar, calendar, mode ); |
1226 | getEventViewerDialog()->setSyncMode( false ); | 1214 | getEventViewerDialog()->setSyncMode( false ); |
1227 | if ( syncOK ) { | 1215 | if ( syncOK ) { |
1228 | if ( KOPrefs::instance()->mWriteBackFile ) | 1216 | if ( mSyncManager->mWriteBackFile ) |
1229 | { | 1217 | { |
1230 | storage->setSaveFormat( new ICalFormat() ); | 1218 | storage->setSaveFormat( new ICalFormat() ); |
1231 | storage->save(); | 1219 | storage->save(); |
1232 | } | 1220 | } |
1233 | } | 1221 | } |
1234 | setModified( true ); | 1222 | setModified( true ); |
1235 | } | 1223 | } |
1236 | delete storage; | 1224 | delete storage; |
1237 | delete calendar; | 1225 | delete calendar; |
1238 | if ( syncOK ) | 1226 | if ( syncOK ) |
1239 | updateView(); | 1227 | updateView(); |
1240 | return syncOK; | 1228 | return syncOK; |
1241 | } | 1229 | } |
1242 | void CalendarView::syncPhone() | 1230 | void CalendarView::syncPhone() |
1243 | { | 1231 | { |
1244 | syncExternal( 1 ); | 1232 | //DELETE |
1245 | } | 1233 | } |
1246 | void CalendarView::syncExternal( int mode ) | 1234 | void CalendarView::syncExternal( int mode ) |
1247 | { | 1235 | { |
1248 | mGlobalSyncMode = SYNC_MODE_EXTERNAL; | 1236 | mGlobalSyncMode = SYNC_MODE_EXTERNAL; |
1249 | //mCurrentSyncDevice = "sharp-DTM"; | 1237 | |
1250 | if ( KOPrefs::instance()->mAskForPreferences ) | ||
1251 | edit_sync_options(); | ||
1252 | qApp->processEvents(); | 1238 | qApp->processEvents(); |
1253 | CalendarLocal* calendar = new CalendarLocal(); | 1239 | CalendarLocal* calendar = new CalendarLocal(); |
1254 | calendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId); | 1240 | calendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId); |
1255 | bool syncOK = false; | 1241 | bool syncOK = false; |
1256 | bool loadSuccess = false; | 1242 | bool loadSuccess = false; |
1257 | PhoneFormat* phoneFormat = 0; | 1243 | PhoneFormat* phoneFormat = 0; |
1258 | #ifndef DESKTOP_VERSION | 1244 | #ifndef DESKTOP_VERSION |
1259 | SharpFormat* sharpFormat = 0; | 1245 | SharpFormat* sharpFormat = 0; |
1260 | if ( mode == 0 ) { // sharp | 1246 | if ( mode == 0 ) { // sharp |
1261 | sharpFormat = new SharpFormat () ; | 1247 | sharpFormat = new SharpFormat () ; |
1262 | loadSuccess = sharpFormat->load( calendar, mCalendar ); | 1248 | loadSuccess = sharpFormat->load( calendar, mCalendar ); |
1263 | 1249 | ||
1264 | } else | 1250 | } else |
1265 | #endif | 1251 | #endif |
1266 | if ( mode == 1 ) { // phone | 1252 | if ( mode == 1 ) { // phone |
1267 | phoneFormat = new PhoneFormat (mCurrentSyncDevice, | 1253 | phoneFormat = new PhoneFormat (mCurrentSyncDevice, |
1268 | KOPrefs::instance()->mPhoneDevice, | 1254 | mSyncManager->mPhoneDevice, |
1269 | KOPrefs::instance()->mPhoneConnection, | 1255 | mSyncManager->mPhoneConnection, |
1270 | KOPrefs::instance()->mPhoneModel); | 1256 | mSyncManager->mPhoneModel); |
1271 | loadSuccess = phoneFormat->load( calendar,mCalendar); | 1257 | loadSuccess = phoneFormat->load( calendar,mCalendar); |
1272 | 1258 | ||
1273 | } else | 1259 | } else |
1274 | return; | 1260 | return; |
1275 | if ( loadSuccess ) { | 1261 | if ( loadSuccess ) { |
1276 | getEventViewerDialog()->setSyncMode( true ); | 1262 | getEventViewerDialog()->setSyncMode( true ); |
1277 | syncOK = synchronizeCalendar( mCalendar, calendar, KOPrefs::instance()->mSyncAlgoPrefs ); | 1263 | syncOK = synchronizeCalendar( mCalendar, calendar, mSyncManager->mSyncAlgoPrefs ); |
1278 | getEventViewerDialog()->setSyncMode( false ); | 1264 | getEventViewerDialog()->setSyncMode( false ); |
1279 | qApp->processEvents(); | 1265 | qApp->processEvents(); |
1280 | if ( syncOK ) { | 1266 | if ( syncOK ) { |
1281 | if ( KOPrefs::instance()->mWriteBackFile ) | 1267 | if ( mSyncManager->mWriteBackFile ) |
1282 | { | 1268 | { |
1283 | QPtrList<Incidence> iL = mCalendar->rawIncidences(); | 1269 | QPtrList<Incidence> iL = mCalendar->rawIncidences(); |
1284 | Incidence* inc = iL.first(); | 1270 | Incidence* inc = iL.first(); |
1285 | if ( phoneFormat ) { | 1271 | if ( phoneFormat ) { |
1286 | while ( inc ) { | 1272 | while ( inc ) { |
1287 | inc->removeID(mCurrentSyncDevice); | 1273 | inc->removeID(mCurrentSyncDevice); |
1288 | inc = iL.next(); | 1274 | inc = iL.next(); |
1289 | } | 1275 | } |
1290 | } | 1276 | } |
1291 | #ifndef DESKTOP_VERSION | 1277 | #ifndef DESKTOP_VERSION |
1292 | if ( sharpFormat ) | 1278 | if ( sharpFormat ) |
1293 | sharpFormat->save(calendar); | 1279 | sharpFormat->save(calendar); |
@@ -1320,25 +1306,25 @@ void CalendarView::syncExternal( int mode ) | |||
1320 | QString question = i18n("Sorry, the database access\ncommand failed!\n\nNothing synced!\n") ; | 1306 | QString question = i18n("Sorry, the database access\ncommand failed!\n\nNothing synced!\n") ; |
1321 | QMessageBox::information( 0, i18n("KO/Pi Import - ERROR"), | 1307 | QMessageBox::information( 0, i18n("KO/Pi Import - ERROR"), |
1322 | question, i18n("Ok")) ; | 1308 | question, i18n("Ok")) ; |
1323 | 1309 | ||
1324 | } | 1310 | } |
1325 | delete calendar; | 1311 | delete calendar; |
1326 | updateView(); | 1312 | updateView(); |
1327 | return ;//syncOK; | 1313 | return ;//syncOK; |
1328 | 1314 | ||
1329 | } | 1315 | } |
1330 | void CalendarView::syncSharp() | 1316 | void CalendarView::syncSharp() |
1331 | { | 1317 | { |
1332 | syncExternal( 0 ); | 1318 | //DELETE |
1333 | 1319 | ||
1334 | } | 1320 | } |
1335 | 1321 | ||
1336 | 1322 | ||
1337 | bool CalendarView::importBday() | 1323 | bool CalendarView::importBday() |
1338 | { | 1324 | { |
1339 | #ifndef KORG_NOKABC | 1325 | #ifndef KORG_NOKABC |
1340 | 1326 | ||
1341 | #ifdef DESKTOP_VERSION | 1327 | #ifdef DESKTOP_VERSION |
1342 | KABC::StdAddressBook* AddressBook = KABC::StdAddressBook::self( true ); | 1328 | KABC::StdAddressBook* AddressBook = KABC::StdAddressBook::self( true ); |
1343 | KABC::AddressBook::Iterator it; | 1329 | KABC::AddressBook::Iterator it; |
1344 | int count = 0; | 1330 | int count = 0; |
@@ -1508,47 +1494,47 @@ bool CalendarView::importQtopia( const QString &categories, | |||
1508 | QtopiaFormat qtopiaFormat; | 1494 | QtopiaFormat qtopiaFormat; |
1509 | qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories)); | 1495 | qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories)); |
1510 | if ( !categories.isEmpty() ) qtopiaFormat.load( mCalendar, categories ); | 1496 | if ( !categories.isEmpty() ) qtopiaFormat.load( mCalendar, categories ); |
1511 | if ( !datebook.isEmpty() ) qtopiaFormat.load( mCalendar, datebook ); | 1497 | if ( !datebook.isEmpty() ) qtopiaFormat.load( mCalendar, datebook ); |
1512 | if ( !todolist.isEmpty() ) qtopiaFormat.load( mCalendar, todolist ); | 1498 | if ( !todolist.isEmpty() ) qtopiaFormat.load( mCalendar, todolist ); |
1513 | 1499 | ||
1514 | updateView(); | 1500 | updateView(); |
1515 | return true; | 1501 | return true; |
1516 | 1502 | ||
1517 | #if 0 | 1503 | #if 0 |
1518 | mGlobalSyncMode = SYNC_MODE_QTOPIA; | 1504 | mGlobalSyncMode = SYNC_MODE_QTOPIA; |
1519 | mCurrentSyncDevice = "qtopia-XML"; | 1505 | mCurrentSyncDevice = "qtopia-XML"; |
1520 | if ( KOPrefs::instance()->mAskForPreferences ) | 1506 | if ( mSyncManager->mAskForPreferences ) |
1521 | edit_sync_options(); | 1507 | edit_sync_options(); |
1522 | qApp->processEvents(); | 1508 | qApp->processEvents(); |
1523 | CalendarLocal* calendar = new CalendarLocal(); | 1509 | CalendarLocal* calendar = new CalendarLocal(); |
1524 | calendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId); | 1510 | calendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId); |
1525 | bool syncOK = false; | 1511 | bool syncOK = false; |
1526 | QtopiaFormat qtopiaFormat; | 1512 | QtopiaFormat qtopiaFormat; |
1527 | qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories)); | 1513 | qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories)); |
1528 | bool loadOk = true; | 1514 | bool loadOk = true; |
1529 | if ( !categories.isEmpty() ) | 1515 | if ( !categories.isEmpty() ) |
1530 | loadOk = qtopiaFormat.load( calendar, categories ); | 1516 | loadOk = qtopiaFormat.load( calendar, categories ); |
1531 | if ( loadOk && !datebook.isEmpty() ) | 1517 | if ( loadOk && !datebook.isEmpty() ) |
1532 | loadOk = qtopiaFormat.load( calendar, datebook ); | 1518 | loadOk = qtopiaFormat.load( calendar, datebook ); |
1533 | if ( loadOk && !todolist.isEmpty() ) | 1519 | if ( loadOk && !todolist.isEmpty() ) |
1534 | loadOk = qtopiaFormat.load( calendar, todolist ); | 1520 | loadOk = qtopiaFormat.load( calendar, todolist ); |
1535 | 1521 | ||
1536 | if ( loadOk ) { | 1522 | if ( loadOk ) { |
1537 | getEventViewerDialog()->setSyncMode( true ); | 1523 | getEventViewerDialog()->setSyncMode( true ); |
1538 | syncOK = synchronizeCalendar( mCalendar, calendar, KOPrefs::instance()->mSyncAlgoPrefs ); | 1524 | syncOK = synchronizeCalendar( mCalendar, calendar, mSyncManager->mSyncAlgoPrefs ); |
1539 | getEventViewerDialog()->setSyncMode( false ); | 1525 | getEventViewerDialog()->setSyncMode( false ); |
1540 | qApp->processEvents(); | 1526 | qApp->processEvents(); |
1541 | if ( syncOK ) { | 1527 | if ( syncOK ) { |
1542 | if ( KOPrefs::instance()->mWriteBackFile ) | 1528 | if ( mSyncManager->mWriteBackFile ) |
1543 | { | 1529 | { |
1544 | // write back XML file | 1530 | // write back XML file |
1545 | 1531 | ||
1546 | } | 1532 | } |
1547 | setModified( true ); | 1533 | setModified( true ); |
1548 | } | 1534 | } |
1549 | } else { | 1535 | } else { |
1550 | QString question = i18n("Sorry, the file loading\ncommand failed!\n\nNothing synced!\n") ; | 1536 | QString question = i18n("Sorry, the file loading\ncommand failed!\n\nNothing synced!\n") ; |
1551 | QMessageBox::information( 0, i18n("KO/Pi Sync - ERROR"), | 1537 | QMessageBox::information( 0, i18n("KO/Pi Sync - ERROR"), |
1552 | question, i18n("Ok")) ; | 1538 | question, i18n("Ok")) ; |
1553 | } | 1539 | } |
1554 | delete calendar; | 1540 | delete calendar; |
@@ -1674,29 +1660,29 @@ bool CalendarView::checkFileVersion(QString fn) | |||
1674 | if ( dt <= loadedFileVersion ) | 1660 | if ( dt <= loadedFileVersion ) |
1675 | return true; | 1661 | return true; |
1676 | int km = KMessageBox::warningYesNoCancel(this, i18n("\nThe file on disk has changed!\nFile size: %1 bytes.\nLast modified: %2\nDo you want to:\n\n - Save and overwrite file?\n - Sync with file, then save?\n - Cancel without saving? \n").arg( QString::number( finf.size())).arg( KGlobal::locale()->formatDateTime(finf.lastModified (), true, true)) , | 1662 | int km = KMessageBox::warningYesNoCancel(this, i18n("\nThe file on disk has changed!\nFile size: %1 bytes.\nLast modified: %2\nDo you want to:\n\n - Save and overwrite file?\n - Sync with file, then save?\n - Cancel without saving? \n").arg( QString::number( finf.size())).arg( KGlobal::locale()->formatDateTime(finf.lastModified (), true, true)) , |
1677 | i18n("KO/Pi Warning"),i18n("Overwrite"), | 1663 | i18n("KO/Pi Warning"),i18n("Overwrite"), |
1678 | i18n("Sync+save")); | 1664 | i18n("Sync+save")); |
1679 | 1665 | ||
1680 | if ( km == KMessageBox::Cancel ) | 1666 | if ( km == KMessageBox::Cancel ) |
1681 | return false; | 1667 | return false; |
1682 | if ( km == KMessageBox::Yes ) | 1668 | if ( km == KMessageBox::Yes ) |
1683 | return true; | 1669 | return true; |
1684 | 1670 | ||
1685 | setSyncDevice("deleteaftersync" ); | 1671 | setSyncDevice("deleteaftersync" ); |
1686 | KOPrefs::instance()->mAskForPreferences = true; | 1672 | mSyncManager->mAskForPreferences = true; |
1687 | KOPrefs::instance()->mSyncAlgoPrefs = 3; | 1673 | mSyncManager->mSyncAlgoPrefs = 3; |
1688 | KOPrefs::instance()->mWriteBackFile = false; | 1674 | mSyncManager->mWriteBackFile = false; |
1689 | KOPrefs::instance()->mWriteBackExistingOnly = false; | 1675 | mSyncManager->mWriteBackExistingOnly = false; |
1690 | KOPrefs::instance()->mShowSyncSummary = false; | 1676 | mSyncManager->mShowSyncSummary = false; |
1691 | syncCalendar( fn, 3 ); | 1677 | syncCalendar( fn, 3 ); |
1692 | Event * e = getLastSyncEvent(); | 1678 | Event * e = getLastSyncEvent(); |
1693 | mCalendar->deleteEvent ( e ); | 1679 | mCalendar->deleteEvent ( e ); |
1694 | updateView(); | 1680 | updateView(); |
1695 | return true; | 1681 | return true; |
1696 | } | 1682 | } |
1697 | 1683 | ||
1698 | bool CalendarView::saveCalendar( QString filename ) | 1684 | bool CalendarView::saveCalendar( QString filename ) |
1699 | { | 1685 | { |
1700 | 1686 | ||
1701 | // Store back all unsaved data into calendar object | 1687 | // Store back all unsaved data into calendar object |
1702 | // qDebug("file %s %d ", filename.latin1() , mViewManager->currentView() ); | 1688 | // qDebug("file %s %d ", filename.latin1() , mViewManager->currentView() ); |
@@ -2189,71 +2175,25 @@ void CalendarView::edit_paste() | |||
2189 | Event *pastedEvent = factory.pasteEvent( date ); | 2175 | Event *pastedEvent = factory.pasteEvent( date ); |
2190 | 2176 | ||
2191 | changeEventDisplay( pastedEvent, KOGlobals::EVENTADDED ); | 2177 | changeEventDisplay( pastedEvent, KOGlobals::EVENTADDED ); |
2192 | } | 2178 | } |
2193 | 2179 | ||
2194 | void CalendarView::edit_options() | 2180 | void CalendarView::edit_options() |
2195 | { | 2181 | { |
2196 | mDialogManager->showOptionsDialog(); | 2182 | mDialogManager->showOptionsDialog(); |
2197 | //writeSettings(); | 2183 | //writeSettings(); |
2198 | } | 2184 | } |
2199 | void CalendarView::edit_sync_options() | 2185 | void CalendarView::edit_sync_options() |
2200 | { | 2186 | { |
2201 | //mDialogManager->showSyncOptions(); | 2187 | // DELETE |
2202 | //KOPrefs::instance()->mSyncAlgoPrefs | ||
2203 | QDialog dia( this, "dia", true ); | ||
2204 | dia.setCaption( i18n("Device: " ) +mCurrentSyncDevice ); | ||
2205 | QButtonGroup gr ( 1, Qt::Horizontal, i18n("Sync preferences"), &dia); | ||
2206 | QVBoxLayout lay ( &dia ); | ||
2207 | lay.setSpacing( 2 ); | ||
2208 | lay.setMargin( 3 ); | ||
2209 | lay.addWidget(&gr); | ||
2210 | QRadioButton loc ( i18n("Take local entry on conflict"), &gr ); | ||
2211 | QRadioButton rem ( i18n("Take remote entry on conflict"), &gr ); | ||
2212 | QRadioButton newest( i18n("Take newest entry on conflict"), &gr ); | ||
2213 | QRadioButton ask( i18n("Ask for every entry on conflict"), &gr ); | ||
2214 | QRadioButton f_loc( i18n("Force: Take local entry always"), &gr ); | ||
2215 | QRadioButton f_rem( i18n("Force: Take remote entry always"), &gr ); | ||
2216 | //QRadioButton both( i18n("Take both on conflict"), &gr ); | ||
2217 | QPushButton pb ( "OK", &dia); | ||
2218 | lay.addWidget( &pb ); | ||
2219 | connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) ); | ||
2220 | switch ( KOPrefs::instance()->mSyncAlgoPrefs ) { | ||
2221 | case 0: | ||
2222 | loc.setChecked( true); | ||
2223 | break; | ||
2224 | case 1: | ||
2225 | rem.setChecked( true ); | ||
2226 | break; | ||
2227 | case 2: | ||
2228 | newest.setChecked( true); | ||
2229 | break; | ||
2230 | case 3: | ||
2231 | ask.setChecked( true); | ||
2232 | break; | ||
2233 | case 4: | ||
2234 | f_loc.setChecked( true); | ||
2235 | break; | ||
2236 | case 5: | ||
2237 | f_rem.setChecked( true); | ||
2238 | break; | ||
2239 | case 6: | ||
2240 | // both.setChecked( true); | ||
2241 | break; | ||
2242 | default: | ||
2243 | break; | ||
2244 | } | ||
2245 | if ( dia.exec() ) { | ||
2246 | KOPrefs::instance()->mSyncAlgoPrefs = rem.isChecked()*1+newest.isChecked()*2+ ask.isChecked()*3+ f_loc.isChecked()*4+ f_rem.isChecked()*5;//+ both.isChecked()*6 ; | ||
2247 | } | ||
2248 | 2188 | ||
2249 | } | 2189 | } |
2250 | 2190 | ||
2251 | void CalendarView::slotSelectPickerDate( QDate d) | 2191 | void CalendarView::slotSelectPickerDate( QDate d) |
2252 | { | 2192 | { |
2253 | mDateFrame->hide(); | 2193 | mDateFrame->hide(); |
2254 | if ( mDatePickerMode == 1 ) { | 2194 | if ( mDatePickerMode == 1 ) { |
2255 | mNavigator->slotDaySelect( d ); | 2195 | mNavigator->slotDaySelect( d ); |
2256 | } else if ( mDatePickerMode == 2 ) { | 2196 | } else if ( mDatePickerMode == 2 ) { |
2257 | if ( mMoveIncidence->type() == "Todo" ) { | 2197 | if ( mMoveIncidence->type() == "Todo" ) { |
2258 | Todo * to = (Todo *) mMoveIncidence; | 2198 | Todo * to = (Todo *) mMoveIncidence; |
2259 | QTime tim; | 2199 | QTime tim; |
@@ -3759,15 +3699,35 @@ NavigatorBar *CalendarView::navigatorBar() | |||
3759 | { | 3699 | { |
3760 | return mNavigatorBar; | 3700 | return mNavigatorBar; |
3761 | } | 3701 | } |
3762 | 3702 | ||
3763 | 3703 | ||
3764 | 3704 | ||
3765 | void CalendarView::keyPressEvent ( QKeyEvent *e) | 3705 | void CalendarView::keyPressEvent ( QKeyEvent *e) |
3766 | { | 3706 | { |
3767 | //qDebug(" alendarView::keyPressEvent "); | 3707 | //qDebug(" alendarView::keyPressEvent "); |
3768 | e->ignore(); | 3708 | e->ignore(); |
3769 | } | 3709 | } |
3770 | 3710 | ||
3771 | //#include "calendarview.moc" | ||
3772 | 3711 | ||
3773 | //#include "calendarviewbase.moc" | 3712 | bool CalendarView::sync(KSyncManager* manager, QString filename, int mode) |
3713 | { | ||
3714 | // mSyncManager = manager; | ||
3715 | mCurrentSyncDevice = mSyncManager->getCurrentSyncDevice(); | ||
3716 | mCurrentSyncName = mSyncManager->getCurrentSyncName(); | ||
3717 | return syncCalendar( filename, mode ); | ||
3718 | } | ||
3719 | bool CalendarView::syncExternal(KSyncManager* manager, QString resource) | ||
3720 | { | ||
3721 | //mSyncManager = manager; | ||
3722 | mCurrentSyncDevice = mSyncManager->getCurrentSyncDevice(); | ||
3723 | mCurrentSyncName = mSyncManager->getCurrentSyncName(); | ||
3724 | if ( resource == "sharp" ) | ||
3725 | syncExternal( 0 ); | ||
3726 | if ( resource == "phone" ) | ||
3727 | syncExternal( 1 ); | ||
3728 | // pending setmodified | ||
3729 | } | ||
3730 | void CalendarView::setSyncManager(KSyncManager* manager) | ||
3731 | { | ||
3732 | mSyncManager = manager; | ||
3733 | } | ||
diff --git a/korganizer/calendarview.h b/korganizer/calendarview.h index 8d329a9..751b8d9 100644 --- a/korganizer/calendarview.h +++ b/korganizer/calendarview.h | |||
@@ -33,24 +33,26 @@ | |||
33 | #ifndef DESKTOP_VERSION | 33 | #ifndef DESKTOP_VERSION |
34 | #include <qtopia/ir.h> | 34 | #include <qtopia/ir.h> |
35 | #else | 35 | #else |
36 | #define Ir char | 36 | #define Ir char |
37 | #endif | 37 | #endif |
38 | #include <libkcal/calendar.h> | 38 | #include <libkcal/calendar.h> |
39 | #include <libkcal/scheduler.h> | 39 | #include <libkcal/scheduler.h> |
40 | #include <libkcal/calendarresources.h> | 40 | #include <libkcal/calendarresources.h> |
41 | #include <libkcal/resourcecalendar.h> | 41 | #include <libkcal/resourcecalendar.h> |
42 | 42 | ||
43 | #include <korganizer/calendarviewbase.h> | 43 | #include <korganizer/calendarviewbase.h> |
44 | 44 | ||
45 | #include <ksyncmanager.h> | ||
46 | |||
45 | class QWidgetStack; | 47 | class QWidgetStack; |
46 | class QSplitter; | 48 | class QSplitter; |
47 | 49 | ||
48 | class CalPrinter; | 50 | class CalPrinter; |
49 | class KOFilterView; | 51 | class KOFilterView; |
50 | class KOViewManager; | 52 | class KOViewManager; |
51 | class KODialogManager; | 53 | class KODialogManager; |
52 | class KOTodoView; | 54 | class KOTodoView; |
53 | class KDateNavigator; | 55 | class KDateNavigator; |
54 | class DateNavigator; | 56 | class DateNavigator; |
55 | class KOIncidenceEditor; | 57 | class KOIncidenceEditor; |
56 | class KDatePicker; | 58 | class KDatePicker; |
@@ -68,25 +70,25 @@ namespace KCal { class FileStorage; } | |||
68 | 70 | ||
69 | using namespace KCal; | 71 | using namespace KCal; |
70 | 72 | ||
71 | /** | 73 | /** |
72 | This is the main calendar widget. It provides the different vies on t he | 74 | This is the main calendar widget. It provides the different vies on t he |
73 | calendar data as well as the date navigator. It also handles synchronisation | 75 | calendar data as well as the date navigator. It also handles synchronisation |
74 | of the different views and controls the different dialogs like preferences, | 76 | of the different views and controls the different dialogs like preferences, |
75 | event editor, search dialog etc. | 77 | event editor, search dialog etc. |
76 | 78 | ||
77 | @short main calendar view widget | 79 | @short main calendar view widget |
78 | @author Cornelius Schumacher | 80 | @author Cornelius Schumacher |
79 | */ | 81 | */ |
80 | class CalendarView : public KOrg::CalendarViewBase, public KCal::Calendar::Observer | 82 | class CalendarView : public KOrg::CalendarViewBase, public KCal::Calendar::Observer, public KSyncInterface |
81 | { | 83 | { |
82 | Q_OBJECT | 84 | Q_OBJECT |
83 | public: | 85 | public: |
84 | /** | 86 | /** |
85 | Constructs a new calendar view widget. | 87 | Constructs a new calendar view widget. |
86 | 88 | ||
87 | @param calendar calendar document | 89 | @param calendar calendar document |
88 | @param parent parent window | 90 | @param parent parent window |
89 | @param name Qt internal widget object name | 91 | @param name Qt internal widget object name |
90 | */ | 92 | */ |
91 | CalendarView( CalendarResources *calendar, QWidget *parent = 0, | 93 | CalendarView( CalendarResources *calendar, QWidget *parent = 0, |
92 | const char *name = 0 ); | 94 | const char *name = 0 ); |
@@ -451,48 +453,53 @@ class CalendarView : public KOrg::CalendarViewBase, public KCal::Calendar::Obser | |||
451 | void setSyncName( QString ); | 453 | void setSyncName( QString ); |
452 | protected slots: | 454 | protected slots: |
453 | void timerAlarm(); | 455 | void timerAlarm(); |
454 | void suspendAlarm(); | 456 | void suspendAlarm(); |
455 | void beamDone( Ir *ir ); | 457 | void beamDone( Ir *ir ); |
456 | /** Select a view or adapt the current view to display the specified dates. */ | 458 | /** Select a view or adapt the current view to display the specified dates. */ |
457 | void showDates( const KCal::DateList & ); | 459 | void showDates( const KCal::DateList & ); |
458 | void selectWeekNum ( int ); | 460 | void selectWeekNum ( int ); |
459 | 461 | ||
460 | public: | 462 | public: |
461 | // show a standard warning | 463 | // show a standard warning |
462 | // returns KMsgBox::yesNoCancel() | 464 | // returns KMsgBox::yesNoCancel() |
463 | int msgCalModified(); | 465 | int msgCalModified(); |
466 | virtual bool sync(KSyncManager* manager, QString filename, int mode); | ||
467 | |||
468 | virtual bool syncExternal(KSyncManager* manager, QString resource); | ||
464 | void confSync(); | 469 | void confSync(); |
470 | void setSyncManager(KSyncManager* manager); | ||
465 | void setLoadedFileVersion(QDateTime); | 471 | void setLoadedFileVersion(QDateTime); |
466 | bool checkFileVersion(QString fn); | 472 | bool checkFileVersion(QString fn); |
467 | bool checkFileChanged(QString fn); | 473 | bool checkFileChanged(QString fn); |
468 | Event* getLastSyncEvent(); | 474 | Event* getLastSyncEvent(); |
469 | /** Adapt navigation units correpsonding to step size of navigation of the | 475 | /** Adapt navigation units correpsonding to step size of navigation of the |
470 | * current view. | 476 | * current view. |
471 | */ | 477 | */ |
472 | void adaptNavigationUnits(); | 478 | void adaptNavigationUnits(); |
473 | bool synchronizeCalendar( Calendar* local, Calendar* remote, int mode ); | 479 | bool synchronizeCalendar( Calendar* local, Calendar* remote, int mode ); |
474 | int takeEvent( Incidence* local, Incidence* remote, int mode, bool full = false ); | 480 | int takeEvent( Incidence* local, Incidence* remote, int mode, bool full = false ); |
475 | //Attendee* getYourAttendee(Event *event); | 481 | //Attendee* getYourAttendee(Event *event); |
476 | protected: | 482 | protected: |
477 | void schedule(Scheduler::Method, Incidence *incidence = 0); | 483 | void schedule(Scheduler::Method, Incidence *incidence = 0); |
478 | 484 | ||
479 | // returns KMsgBox::OKCandel() | 485 | // returns KMsgBox::OKCandel() |
480 | int msgItemDelete(); | 486 | int msgItemDelete(); |
481 | void showEventEditor(); | 487 | void showEventEditor(); |
482 | void showTodoEditor(); | 488 | void showTodoEditor(); |
483 | void writeLocale(); | 489 | void writeLocale(); |
484 | Todo *selectedTodo(); | 490 | Todo *selectedTodo(); |
485 | 491 | ||
486 | private: | 492 | private: |
493 | KSyncManager* mSyncManager; | ||
487 | AlarmDialog * mAlarmDialog; | 494 | AlarmDialog * mAlarmDialog; |
488 | QString mAlarmNotification; | 495 | QString mAlarmNotification; |
489 | QString mSuspendAlarmNotification; | 496 | QString mSuspendAlarmNotification; |
490 | QTimer* mSuspendTimer; | 497 | QTimer* mSuspendTimer; |
491 | QTimer* mAlarmTimer; | 498 | QTimer* mAlarmTimer; |
492 | QTimer* mRecheckAlarmTimer; | 499 | QTimer* mRecheckAlarmTimer; |
493 | void computeAlarm( QString ); | 500 | void computeAlarm( QString ); |
494 | void startAlarm( QString, QString ); | 501 | void startAlarm( QString, QString ); |
495 | void setSyncEventsReadOnly(); | 502 | void setSyncEventsReadOnly(); |
496 | 503 | ||
497 | QDateTime loadedFileVersion; | 504 | QDateTime loadedFileVersion; |
498 | void checkExternSyncEvent( QPtrList<Event> lastSync , Incidence* toDelete ); | 505 | void checkExternSyncEvent( QPtrList<Event> lastSync , Incidence* toDelete ); |
diff --git a/korganizer/koprefs.cpp b/korganizer/koprefs.cpp index 1210094..13035e0 100644 --- a/korganizer/koprefs.cpp +++ b/korganizer/koprefs.cpp | |||
@@ -187,46 +187,43 @@ KOPrefs::KOPrefs() : | |||
187 | // addItemStringList("ExternSyncProfiles",&mExternSyncProfileNames); | 187 | // addItemStringList("ExternSyncProfiles",&mExternSyncProfileNames); |
188 | 188 | ||
189 | KPrefs::setCurrentGroup("RemoteSyncing"); | 189 | KPrefs::setCurrentGroup("RemoteSyncing"); |
190 | // addItemBool("UsePasswd",&mUsePassWd,false); | 190 | // addItemBool("UsePasswd",&mUsePassWd,false); |
191 | // addItemBool("WriteBackFile",&mWriteBackFile,true); | 191 | // addItemBool("WriteBackFile",&mWriteBackFile,true); |
192 | // addItemBool("WriteBackExistingOnly",&mWriteBackExistingOnly,false); | 192 | // addItemBool("WriteBackExistingOnly",&mWriteBackExistingOnly,false); |
193 | // addItemBool("AskForPreferences",&mAskForPreferences,true); | 193 | // addItemBool("AskForPreferences",&mAskForPreferences,true); |
194 | // addItemBool("ShowSyncSummary",&mShowSyncSummary,true); | 194 | // addItemBool("ShowSyncSummary",&mShowSyncSummary,true); |
195 | addItemString("ActiveSyncPort",&mActiveSyncPort,"9197" ); | 195 | addItemString("ActiveSyncPort",&mActiveSyncPort,"9197" ); |
196 | addItemString("ActiveSyncIP",&mActiveSyncIP,"192.168.0.40" ); | 196 | addItemString("ActiveSyncIP",&mActiveSyncIP,"192.168.0.40" ); |
197 | addItemBool("ShowSyncEvents",&mShowSyncEvents,false); | 197 | addItemBool("ShowSyncEvents",&mShowSyncEvents,false); |
198 | addItemInt("LastSyncTime",&mLastSyncTime,0); | 198 | addItemInt("LastSyncTime",&mLastSyncTime,0); |
199 | addItemInt("SyncAlgoPrefs",&mSyncAlgoPrefs,3); | ||
200 | addItemInt("RingSyncAlgoPrefs",&mRingSyncAlgoPrefs,3); | ||
201 | 199 | ||
202 | #ifdef _WIN32_ | 200 | #ifdef _WIN32_ |
203 | QString hdp= locateLocal("data","korganizer")+"\\\\"; | 201 | QString hdp= locateLocal("data","korganizer")+"\\\\"; |
204 | #else | 202 | #else |
205 | QString hdp= locateLocal("data","korganizer")+"/"; | 203 | QString hdp= locateLocal("data","korganizer")+"/"; |
206 | #endif | 204 | #endif |
207 | // addItemString("RemoteIP",&mRemoteIP, "192.168.0.65"); | 205 | // addItemString("RemoteIP",&mRemoteIP, "192.168.0.65"); |
208 | // addItemString("RemoteUser",&mRemoteUser, "zaurus"); | 206 | // addItemString("RemoteUser",&mRemoteUser, "zaurus"); |
209 | // addItemString("RemotePassWd",&mRemotePassWd, ""); | 207 | // addItemString("RemotePassWd",&mRemotePassWd, ""); |
210 | // addItemString("RemoteFile", &mRemoteFile, hdp+"mycalendar.ics"); | 208 | // addItemString("RemoteFile", &mRemoteFile, hdp+"mycalendar.ics"); |
211 | // addItemString("LocalTempFile",&mLocalTempFile, "/tmp/tempsyncfile.ics" ); | 209 | // addItemString("LocalTempFile",&mLocalTempFile, "/tmp/tempsyncfile.ics" ); |
212 | 210 | ||
213 | 211 | ||
214 | KPrefs::setCurrentGroup("LoadSaveFileNames"); | 212 | KPrefs::setCurrentGroup("LoadSaveFileNames"); |
215 | 213 | ||
216 | addItemString("LastImportFile", &mLastImportFile ,hdp +"import.ics" ); | 214 | addItemString("LastImportFile", &mLastImportFile ,hdp +"import.ics" ); |
217 | addItemString("LastVcalFile", &mLastVcalFile ,hdp +"export.vcs" ); | 215 | addItemString("LastVcalFile", &mLastVcalFile ,hdp +"export.vcs" ); |
218 | addItemString("LastSaveFile", &mLastSaveFile ,hdp +"mybackup.ics" ); | 216 | addItemString("LastSaveFile", &mLastSaveFile ,hdp +"mybackup.ics" ); |
219 | addItemString("LastLoadFile", &mLastLoadFile ,hdp +"mybackup.ics" ); | 217 | addItemString("LastLoadFile", &mLastLoadFile ,hdp +"mybackup.ics" ); |
220 | addItemString("LastSyncedLocalFile", &mLastSyncedLocalFile ,hdp +"lastsync.ics" ); | ||
221 | 218 | ||
222 | 219 | ||
223 | KPrefs::setCurrentGroup("Locale"); | 220 | KPrefs::setCurrentGroup("Locale"); |
224 | addItemInt("PreferredLanguage",&mPreferredLanguage,0); | 221 | addItemInt("PreferredLanguage",&mPreferredLanguage,0); |
225 | addItemInt("PreferredTime",&mPreferredTime,0); | 222 | addItemInt("PreferredTime",&mPreferredTime,0); |
226 | addItemInt("PreferredDate",&mPreferredDate,0); | 223 | addItemInt("PreferredDate",&mPreferredDate,0); |
227 | addItemBool("WeekStartsOnSunday",&mWeekStartsOnSunday,false); | 224 | addItemBool("WeekStartsOnSunday",&mWeekStartsOnSunday,false); |
228 | addItemBool("ShortDateInViewer",&mShortDateInViewer,false); | 225 | addItemBool("ShortDateInViewer",&mShortDateInViewer,false); |
229 | addItemString("UserDateFormatLong", &mUserDateFormatLong, "%A %d %b %y"); | 226 | addItemString("UserDateFormatLong", &mUserDateFormatLong, "%A %d %b %y"); |
230 | addItemString("UserDateFormatShort", &mUserDateFormatShort, "%aK %d.%m.%y"); | 227 | addItemString("UserDateFormatShort", &mUserDateFormatShort, "%aK %d.%m.%y"); |
231 | 228 | ||
232 | 229 | ||
diff --git a/korganizer/koprefs.h b/korganizer/koprefs.h index ff09e19..03df59b 100644 --- a/korganizer/koprefs.h +++ b/korganizer/koprefs.h | |||
@@ -185,61 +185,41 @@ class KOPrefs : public KPimPrefs | |||
185 | bool mShowIconNextDays; | 185 | bool mShowIconNextDays; |
186 | bool mShowIconNext; | 186 | bool mShowIconNext; |
187 | bool mShowIconJournal; | 187 | bool mShowIconJournal; |
188 | 188 | ||
189 | bool mShowIconStretch; | 189 | bool mShowIconStretch; |
190 | 190 | ||
191 | bool mToolBarHor; | 191 | bool mToolBarHor; |
192 | bool mToolBarUp; | 192 | bool mToolBarUp; |
193 | bool mToolBarMiniIcons; | 193 | bool mToolBarMiniIcons; |
194 | 194 | ||
195 | bool mAskForQuit; | 195 | bool mAskForQuit; |
196 | bool mUsePassWd; | 196 | bool mUsePassWd; |
197 | bool mWriteBackFile; | ||
198 | int mWriteBackInFuture; | ||
199 | bool mAskForPreferences; | ||
200 | bool mShowSyncSummary; | ||
201 | bool mShowSyncEvents; | 197 | bool mShowSyncEvents; |
202 | bool mShowTodoInAgenda; | 198 | bool mShowTodoInAgenda; |
203 | bool mWriteBackExistingOnly; | ||
204 | |||
205 | QString mRemoteIP; | ||
206 | QString mRemoteUser; | ||
207 | QString mRemotePassWd; | ||
208 | QString mRemoteFile; | ||
209 | QString mLocalTempFile; | ||
210 | QString mPhoneDevice; | ||
211 | QString mPhoneConnection; | ||
212 | QString mPhoneModel; | ||
213 | 199 | ||
214 | int mLastSyncTime; | 200 | int mLastSyncTime; |
215 | int mSyncAlgoPrefs; | ||
216 | int mRingSyncAlgoPrefs; | ||
217 | QStringList mSyncProfileNames; | ||
218 | QStringList mExternSyncProfiles; | ||
219 | QString mLocalMachineName; | ||
220 | void setCategoryColor(QString cat,const QColor & color); | 201 | void setCategoryColor(QString cat,const QColor & color); |
221 | QColor *categoryColor(QString cat); | 202 | QColor *categoryColor(QString cat); |
222 | 203 | ||
223 | QString mArchiveFile; | 204 | QString mArchiveFile; |
224 | QString mHtmlExportFile; | 205 | QString mHtmlExportFile; |
225 | bool mHtmlWithSave; | 206 | bool mHtmlWithSave; |
226 | 207 | ||
227 | QStringList mSelectedPlugins; | 208 | QStringList mSelectedPlugins; |
228 | 209 | ||
229 | QString mLastImportFile; | 210 | QString mLastImportFile; |
230 | QString mLastVcalFile; | 211 | QString mLastVcalFile; |
231 | QString mLastSaveFile; | 212 | QString mLastSaveFile; |
232 | QString mLastLoadFile; | 213 | QString mLastLoadFile; |
233 | QString mLastSyncedLocalFile; | ||
234 | 214 | ||
235 | 215 | ||
236 | QString mDefaultAlarmFile; | 216 | QString mDefaultAlarmFile; |
237 | int mIMIPScheduler; | 217 | int mIMIPScheduler; |
238 | int mIMIPSend; | 218 | int mIMIPSend; |
239 | QStringList mAdditionalMails; | 219 | QStringList mAdditionalMails; |
240 | int mIMIPAutoRefresh; | 220 | int mIMIPAutoRefresh; |
241 | int mIMIPAutoInsertReply; | 221 | int mIMIPAutoInsertReply; |
242 | int mIMIPAutoInsertRequest; | 222 | int mIMIPAutoInsertRequest; |
243 | int mIMIPAutoFreeBusy; | 223 | int mIMIPAutoFreeBusy; |
244 | int mIMIPAutoFreeBusyReply; | 224 | int mIMIPAutoFreeBusyReply; |
245 | 225 | ||
diff --git a/korganizer/mainwindow.cpp b/korganizer/mainwindow.cpp index e3324ee..f7766f8 100644 --- a/korganizer/mainwindow.cpp +++ b/korganizer/mainwindow.cpp | |||
@@ -117,80 +117,78 @@ class KOex2phonePrefs : public QDialog | |||
117 | } | 117 | } |
118 | 118 | ||
119 | public: | 119 | public: |
120 | QLineEdit* mPhoneConnection, *mPhoneDevice, *mPhoneModel; | 120 | QLineEdit* mPhoneConnection, *mPhoneDevice, *mPhoneModel; |
121 | QCheckBox* mWriteBackFuture; | 121 | QCheckBox* mWriteBackFuture; |
122 | QSpinBox* mWriteBackFutureWeeks; | 122 | QSpinBox* mWriteBackFutureWeeks; |
123 | }; | 123 | }; |
124 | 124 | ||
125 | int globalFlagBlockStartup; | 125 | int globalFlagBlockStartup; |
126 | MainWindow::MainWindow( QWidget *parent, const char *name, QString msg) : | 126 | MainWindow::MainWindow( QWidget *parent, const char *name, QString msg) : |
127 | QMainWindow( parent, name ) | 127 | QMainWindow( parent, name ) |
128 | { | 128 | { |
129 | mPassWordPiSync = "abc"; | 129 | |
130 | #ifdef DESKTOP_VERSION | 130 | #ifdef DESKTOP_VERSION |
131 | setFont( QFont("Arial"), 14 ); | 131 | setFont( QFont("Arial"), 14 ); |
132 | #endif | 132 | #endif |
133 | mServerSocket = 0; | 133 | mServerSocket = 0; |
134 | mClosed = false; | 134 | mClosed = false; |
135 | //QString confFile = KStandardDirs::appDir() + "config/korganizerrc"; | 135 | //QString confFile = KStandardDirs::appDir() + "config/korganizerrc"; |
136 | QString confFile = locateLocal("config","korganizerrc"); | 136 | QString confFile = locateLocal("config","korganizerrc"); |
137 | QFileInfo finf ( confFile ); | 137 | QFileInfo finf ( confFile ); |
138 | bool showWarning = !finf.exists(); | 138 | bool showWarning = !finf.exists(); |
139 | setIcon(SmallIcon( "ko24" ) ); | 139 | setIcon(SmallIcon( "ko24" ) ); |
140 | mBlockAtStartup = true; | 140 | mBlockAtStartup = true; |
141 | mFlagKeyPressed = false; | 141 | mFlagKeyPressed = false; |
142 | setCaption("KOrganizer/Pi"); | 142 | setCaption("KOrganizer/Pi"); |
143 | KOPrefs *p = KOPrefs::instance(); | 143 | KOPrefs *p = KOPrefs::instance(); |
144 | KPimGlobalPrefs::instance()->setGlobalConfig(); | 144 | KPimGlobalPrefs::instance()->setGlobalConfig(); |
145 | // if ( QApplication::desktop()->height() > 480 ) { | ||
146 | // if ( p->mHourSize == 4 ) | ||
147 | // p->mHourSize = 6; | ||
148 | // } | ||
149 | if ( p->mHourSize > 18 ) | 145 | if ( p->mHourSize > 18 ) |
150 | p->mHourSize = 18; | 146 | p->mHourSize = 18; |
151 | QMainWindow::ToolBarDock tbd; | 147 | QMainWindow::ToolBarDock tbd; |
152 | if ( p->mToolBarHor ) { | 148 | if ( p->mToolBarHor ) { |
153 | if ( p->mToolBarUp ) | 149 | if ( p->mToolBarUp ) |
154 | tbd = Bottom; | 150 | tbd = Bottom; |
155 | else | 151 | else |
156 | tbd = Top; | 152 | tbd = Top; |
157 | } | 153 | } |
158 | else { | 154 | else { |
159 | if ( p->mToolBarUp ) | 155 | if ( p->mToolBarUp ) |
160 | tbd = Right; | 156 | tbd = Right; |
161 | else | 157 | else |
162 | tbd = Left; | 158 | tbd = Left; |
163 | } | 159 | } |
164 | if ( KOPrefs::instance()->mUseAppColors ) | 160 | if ( KOPrefs::instance()->mUseAppColors ) |
165 | QApplication::setPalette( QPalette (KOPrefs::instance()->mAppColor1, KOPrefs::instance()->mAppColor2), true ); | 161 | QApplication::setPalette( QPalette (KOPrefs::instance()->mAppColor1, KOPrefs::instance()->mAppColor2), true ); |
166 | globalFlagBlockStartup = 1; | 162 | globalFlagBlockStartup = 1; |
167 | iconToolBar = new QPEToolBar( this ); | 163 | iconToolBar = new QPEToolBar( this ); |
168 | addToolBar (iconToolBar , tbd ); | 164 | addToolBar (iconToolBar , tbd ); |
169 | mBlockSaveFlag = false; | ||
170 | mCalendarModifiedFlag = false; | 165 | mCalendarModifiedFlag = false; |
171 | 166 | ||
172 | QLabel* splash = new QLabel(i18n("KO/Pi is starting ... "), this ); | 167 | QLabel* splash = new QLabel(i18n("KO/Pi is starting ... "), this ); |
173 | splash->setAlignment ( AlignCenter ); | 168 | splash->setAlignment ( AlignCenter ); |
174 | setCentralWidget( splash ); | 169 | setCentralWidget( splash ); |
175 | #ifndef DESKTOP_VERSION | 170 | #ifndef DESKTOP_VERSION |
176 | showMaximized(); | 171 | showMaximized(); |
177 | #endif | 172 | #endif |
178 | //qDebug("Mainwidget x %d y %d w %d h %d", x(), y(), width(), height ()); | 173 | //qDebug("Mainwidget x %d y %d w %d h %d", x(), y(), width(), height ()); |
179 | setDefaultPreferences(); | 174 | setDefaultPreferences(); |
180 | mCalendar = new CalendarLocal(); | 175 | mCalendar = new CalendarLocal(); |
181 | mView = new CalendarView( mCalendar, this,"mCalendar " ); | 176 | mView = new CalendarView( mCalendar, this,"mCalendar " ); |
182 | mView->hide(); | 177 | mView->hide(); |
183 | //mView->resize(splash->size() ); | 178 | //mView->resize(splash->size() ); |
184 | initActions(); | 179 | initActions(); |
180 | mSyncManager = new KSyncManager((QWidget*)this, (KSyncInterface*)mView, KSyncManager::KOPI, KOPrefs::instance(), syncMenu); | ||
181 | mSyncManager->setBlockSave(false); | ||
182 | mView->setSyncManager(mSyncManager); | ||
185 | #ifndef DESKTOP_VERSION | 183 | #ifndef DESKTOP_VERSION |
186 | iconToolBar->show(); | 184 | iconToolBar->show(); |
187 | qApp->processEvents(); | 185 | qApp->processEvents(); |
188 | #endif | 186 | #endif |
189 | //qDebug("Splashwidget x %d y %d w %d h %d", splash-> x(), splash->y(), splash->width(),splash-> height ()); | 187 | //qDebug("Splashwidget x %d y %d w %d h %d", splash-> x(), splash->y(), splash->width(),splash-> height ()); |
190 | int vh = height() ; | 188 | int vh = height() ; |
191 | int vw = width(); | 189 | int vw = width(); |
192 | //qDebug("Toolbar hei %d ",iconToolBar->height() ); | 190 | //qDebug("Toolbar hei %d ",iconToolBar->height() ); |
193 | if ( iconToolBar->orientation () == Qt:: Horizontal ) { | 191 | if ( iconToolBar->orientation () == Qt:: Horizontal ) { |
194 | vh -= iconToolBar->height(); | 192 | vh -= iconToolBar->height(); |
195 | } else { | 193 | } else { |
196 | vw -= iconToolBar->height(); | 194 | vw -= iconToolBar->height(); |
@@ -243,25 +241,35 @@ MainWindow::MainWindow( QWidget *parent, const char *name, QString msg) : | |||
243 | connect( &mSaveTimer, SIGNAL( timeout() ), SLOT( save() ) ); | 241 | connect( &mSaveTimer, SIGNAL( timeout() ), SLOT( save() ) ); |
244 | mView->setModified( false ); | 242 | mView->setModified( false ); |
245 | mBlockAtStartup = false; | 243 | mBlockAtStartup = false; |
246 | mView->setModified( false ); | 244 | mView->setModified( false ); |
247 | setCentralWidget( mView ); | 245 | setCentralWidget( mView ); |
248 | globalFlagBlockStartup = 0; | 246 | globalFlagBlockStartup = 0; |
249 | mView->show(); | 247 | mView->show(); |
250 | delete splash; | 248 | delete splash; |
251 | if ( newFile ) | 249 | if ( newFile ) |
252 | mView->updateConfig(); | 250 | mView->updateConfig(); |
253 | // qApp->processEvents(); | 251 | // qApp->processEvents(); |
254 | //qDebug("MainView x %d y %d w %d h %d", mView->x(),mView-> y(), mView->width(), mView->height ()); | 252 | //qDebug("MainView x %d y %d w %d h %d", mView->x(),mView-> y(), mView->width(), mView->height ()); |
255 | fillSyncMenu(); | 253 | //fillSyncMenu(); |
254 | |||
255 | |||
256 | connect(mSyncManager , SIGNAL( save() ), this, SLOT( save() ) ); | ||
257 | connect(mSyncManager , SIGNAL( request_file() ), this, SLOT( syncFileRequest() ) ); | ||
258 | connect(mSyncManager , SIGNAL( getFile( bool )), this, SLOT(getFile( bool ) ) ); | ||
259 | mSyncManager->setDefaultFileName( defaultFileName()); | ||
260 | mSyncManager->fillSyncMenu(); | ||
261 | |||
262 | |||
263 | |||
256 | mView->viewManager()->agendaView()->setStartHour( KOPrefs::instance()->mDayBegins ); | 264 | mView->viewManager()->agendaView()->setStartHour( KOPrefs::instance()->mDayBegins ); |
257 | if ( showWarning ) { | 265 | if ( showWarning ) { |
258 | KMessageBox::information( this, | 266 | KMessageBox::information( this, |
259 | "You are starting KO/Pi for the first time.\nPlease read menu: Help-What's New,\nif you did an update!\nPlease choose your timezone in the \nConfigure Dialog TAB Time Zone!\nPlease choose your language\nin the TAB Locale!\nYou get the Configure Dialog\nvia Menu: Actions - Configure....\nClick OK to show the Configure Dialog!\n", "KO/Pi information"); | 267 | "You are starting KO/Pi for the first time.\nPlease read menu: Help-What's New,\nif you did an update!\nPlease choose your timezone in the \nConfigure Dialog TAB Time Zone!\nPlease choose your language\nin the TAB Locale!\nYou get the Configure Dialog\nvia Menu: Actions - Configure....\nClick OK to show the Configure Dialog!\n", "KO/Pi information"); |
260 | qApp->processEvents(); | 268 | qApp->processEvents(); |
261 | mView->dialogManager()->showSyncOptions(); | 269 | mView->dialogManager()->showSyncOptions(); |
262 | } | 270 | } |
263 | 271 | ||
264 | //US listen for result adressed from Ka/Pi | 272 | //US listen for result adressed from Ka/Pi |
265 | #ifndef DESKTOP_VERSION | 273 | #ifndef DESKTOP_VERSION |
266 | connect(qApp, SIGNAL (appMessage ( const QCString &, const QByteArray & )), ExternalAppHandler::instance(), SLOT (appMessage ( const QCString &, const QByteArray & ))); | 274 | connect(qApp, SIGNAL (appMessage ( const QCString &, const QByteArray & )), ExternalAppHandler::instance(), SLOT (appMessage ( const QCString &, const QByteArray & ))); |
267 | #endif | 275 | #endif |
@@ -386,25 +394,25 @@ void MainWindow::recieve( const QCString& cmsg, const QByteArray& data ) | |||
386 | mView->viewManager()->showTodoView(); | 394 | mView->viewManager()->showTodoView(); |
387 | } | 395 | } |
388 | if ( msg == "-showList" ) { | 396 | if ( msg == "-showList" ) { |
389 | mView->viewManager()->showListView(); | 397 | mView->viewManager()->showListView(); |
390 | } | 398 | } |
391 | else if ( msg == "-showDay" ) { | 399 | else if ( msg == "-showDay" ) { |
392 | mView->viewManager()->showDayView(); | 400 | mView->viewManager()->showDayView(); |
393 | } | 401 | } |
394 | else if ( msg == "-showWWeek" ) { | 402 | else if ( msg == "-showWWeek" ) { |
395 | mView->viewManager()->showWorkWeekView(); | 403 | mView->viewManager()->showWorkWeekView(); |
396 | } | 404 | } |
397 | else if ( msg == "-ringSync" ) { | 405 | else if ( msg == "-ringSync" ) { |
398 | multiSync( false ); | 406 | mSyncManager->multiSync( false ); |
399 | } | 407 | } |
400 | else if ( msg == "-showWeek" ) { | 408 | else if ( msg == "-showWeek" ) { |
401 | mView->viewManager()->showWeekView(); | 409 | mView->viewManager()->showWeekView(); |
402 | } | 410 | } |
403 | else if ( msg == "-showTodo" ) { | 411 | else if ( msg == "-showTodo" ) { |
404 | mView->viewManager()->showTodoView(); | 412 | mView->viewManager()->showTodoView(); |
405 | } | 413 | } |
406 | else if ( msg == "-showJournal" ) { | 414 | else if ( msg == "-showJournal" ) { |
407 | mView->dateNavigator()->selectDates( 1 ); | 415 | mView->dateNavigator()->selectDates( 1 ); |
408 | mView->dateNavigator()->selectToday(); | 416 | mView->dateNavigator()->selectToday(); |
409 | mView->viewManager()->showJournalView(); | 417 | mView->viewManager()->showJournalView(); |
410 | } | 418 | } |
@@ -931,252 +939,25 @@ void MainWindow::initActions() | |||
931 | QLabel* dummy = new QLabel( iconToolBar ); | 939 | QLabel* dummy = new QLabel( iconToolBar ); |
932 | dummy->setBackgroundColor( iconToolBar->backgroundColor() ); | 940 | dummy->setBackgroundColor( iconToolBar->backgroundColor() ); |
933 | if (!p-> mShowIconStretch) | 941 | if (!p-> mShowIconStretch) |
934 | iconToolBar->setStretchableWidget ( dummy ) ; | 942 | iconToolBar->setStretchableWidget ( dummy ) ; |
935 | else | 943 | else |
936 | configureToolBarMenu->setItemChecked( 5, true ); | 944 | configureToolBarMenu->setItemChecked( 5, true ); |
937 | if (p-> mShowIconWhatsThis) | 945 | if (p-> mShowIconWhatsThis) |
938 | QWhatsThis::whatsThisButton ( iconToolBar ); | 946 | QWhatsThis::whatsThisButton ( iconToolBar ); |
939 | connect( configureToolBarMenu, SIGNAL( activated( int ) ),this, SLOT(configureToolBar( int ) ) ); | 947 | connect( configureToolBarMenu, SIGNAL( activated( int ) ),this, SLOT(configureToolBar( int ) ) ); |
940 | configureAgenda( p->mHourSize ); | 948 | configureAgenda( p->mHourSize ); |
941 | connect( configureAgendaMenu, SIGNAL( activated( int ) ),this, SLOT(configureAgenda( int ) ) ); | 949 | connect( configureAgendaMenu, SIGNAL( activated( int ) ),this, SLOT(configureAgenda( int ) ) ); |
942 | } | 950 | } |
943 | void MainWindow::fillSyncMenu() | ||
944 | { | ||
945 | if ( syncMenu->count() ) | ||
946 | syncMenu->clear(); | ||
947 | syncMenu->insertItem( i18n("Configure..."), 0 ); | ||
948 | syncMenu->insertSeparator(); | ||
949 | if ( mServerSocket == 0 ) { | ||
950 | syncMenu->insertItem( i18n("Enable Pi-Sync"), 2 ); | ||
951 | } else { | ||
952 | syncMenu->insertItem( i18n("Disable Pi-Sync"), 3 ); | ||
953 | } | ||
954 | syncMenu->insertSeparator(); | ||
955 | syncMenu->insertItem( i18n("Multiple sync"), 1 ); | ||
956 | syncMenu->insertSeparator(); | ||
957 | KConfig config ( locateLocal( "config","ksyncprofilesrc" ) ); | ||
958 | config.setGroup("General"); | ||
959 | QStringList prof = config.readListEntry("SyncProfileNames"); | ||
960 | KOPrefs::instance()->mLocalMachineName = config.readEntry("LocalMachineName","undefined"); | ||
961 | if ( prof.count() < 3 ) { | ||
962 | prof.clear(); | ||
963 | prof << i18n("Sharp_DTM"); | ||
964 | prof << i18n("Local_file"); | ||
965 | prof << i18n("Last_file"); | ||
966 | KSyncProfile* temp = new KSyncProfile (); | ||
967 | temp->setName( prof[0] ); | ||
968 | temp->writeConfig(&config); | ||
969 | temp->setName( prof[1] ); | ||
970 | temp->writeConfig(&config); | ||
971 | temp->setName( prof[2] ); | ||
972 | temp->writeConfig(&config); | ||
973 | config.setGroup("General"); | ||
974 | config.writeEntry("SyncProfileNames",prof); | ||
975 | config.writeEntry("ExternSyncProfiles","Sharp_DTM"); | ||
976 | config.sync(); | ||
977 | delete temp; | ||
978 | } | ||
979 | KOPrefs::instance()->mExternSyncProfiles = config.readListEntry("ExternSyncProfiles"); | ||
980 | KOPrefs::instance()->mSyncProfileNames = prof; | ||
981 | int i; | ||
982 | for ( i = 0; i < prof.count(); ++i ) { | ||
983 | |||
984 | syncMenu->insertItem( prof[i], 1000+i ); | ||
985 | if ( i == 2 ) | ||
986 | syncMenu->insertSeparator(); | ||
987 | } | ||
988 | QDir app_dir; | ||
989 | if ( !app_dir.exists(QDir::homeDirPath()+"/Applications/dtm" ) ) { | ||
990 | syncMenu->setItemEnabled( false , 1000 ); | ||
991 | } | ||
992 | } | ||
993 | |||
994 | int MainWindow::ringSync() | ||
995 | { | ||
996 | int syncedProfiles = 0; | ||
997 | int i; | ||
998 | QTime timer; | ||
999 | KConfig config ( locateLocal( "config","ksyncprofilesrc" ) ); | ||
1000 | QStringList syncProfileNames = KOPrefs::instance()->mSyncProfileNames; | ||
1001 | KSyncProfile* temp = new KSyncProfile (); | ||
1002 | KOPrefs::instance()->mAskForPreferences = false; | ||
1003 | for ( i = 0; i < syncProfileNames.count(); ++i ) { | ||
1004 | mCurrentSyncProfile = i; | ||
1005 | temp->setName(syncProfileNames[mCurrentSyncProfile]); | ||
1006 | temp->readConfig(&config); | ||
1007 | if ( temp->getIncludeInRingSync() && ( i < 1 || i > 2 )) { | ||
1008 | setCaption(i18n("Profile ")+syncProfileNames[mCurrentSyncProfile]+ i18n(" is synced ... ")); | ||
1009 | ++syncedProfiles; | ||
1010 | // KOPrefs::instance()->mAskForPreferences = temp->getAskForPreferences(); | ||
1011 | KOPrefs::instance()->mWriteBackFile = temp->getWriteBackFile(); | ||
1012 | KOPrefs::instance()->mWriteBackExistingOnly = temp->getWriteBackExisting(); | ||
1013 | KOPrefs::instance()->mWriteBackInFuture = 0; | ||
1014 | if ( temp->getWriteBackFuture() ) | ||
1015 | KOPrefs::instance()->mWriteBackInFuture = temp->getWriteBackFutureWeeks( ); | ||
1016 | KOPrefs::instance()->mShowSyncSummary = false; | ||
1017 | mView->setSyncDevice(syncProfileNames[i] ); | ||
1018 | mView->setSyncName( KOPrefs::instance()->mLocalMachineName ); | ||
1019 | if ( i == 0 ) { | ||
1020 | syncSharp(); | ||
1021 | } else { | ||
1022 | if ( temp->getIsLocalFileSync() ) { | ||
1023 | if ( syncWithFile( temp->getRemoteFileName( ), true ) ) | ||
1024 | KOPrefs::instance()->mLastSyncedLocalFile = temp->getRemoteFileName(); | ||
1025 | } else { | ||
1026 | if ( temp->getIsPhoneSync() ) { | ||
1027 | KOPrefs::instance()->mPhoneDevice = temp->getPhoneDevice( ) ; | ||
1028 | KOPrefs::instance()->mPhoneConnection = temp->getPhoneConnection( ); | ||
1029 | KOPrefs::instance()->mPhoneModel = temp->getPhoneModel( ); | ||
1030 | syncPhone(); | ||
1031 | } else if ( temp->getIsPiSync() ) { | ||
1032 | mPassWordPiSync = temp->getRemotePw(); | ||
1033 | KOPrefs::instance()->mActiveSyncPort = temp->getRemotePort(); | ||
1034 | KOPrefs::instance()->mActiveSyncIP = temp->getRemoteIP(); | ||
1035 | syncPi(); | ||
1036 | } else | ||
1037 | syncRemote( temp, false ); | ||
1038 | |||
1039 | } | ||
1040 | } | ||
1041 | timer.start(); | ||
1042 | setCaption(i18n("Multiple sync in progress ... please wait!") ); | ||
1043 | while ( timer.elapsed () < 2000 ) { | ||
1044 | qApp->processEvents(); | ||
1045 | #ifndef _WIN32_ | ||
1046 | sleep (1); | ||
1047 | #endif | ||
1048 | } | ||
1049 | |||
1050 | } | ||
1051 | |||
1052 | } | ||
1053 | delete temp; | ||
1054 | return syncedProfiles; | ||
1055 | } | ||
1056 | |||
1057 | void MainWindow::multiSync( bool askforPrefs ) | ||
1058 | { | ||
1059 | if (mBlockSaveFlag) | ||
1060 | return; | ||
1061 | mBlockSaveFlag = true; | ||
1062 | QString question = i18n("Do you really want\nto multiple sync\nwith all checked profiles?\nSyncing takes some\ntime - all profiles\nare synced twice!"); | ||
1063 | if ( QMessageBox::information( this, i18n("KO/Pi Sync"), | ||
1064 | question, | ||
1065 | i18n("Yes"), i18n("No"), | ||
1066 | 0, 0 ) != 0 ) { | ||
1067 | mBlockSaveFlag = false; | ||
1068 | setCaption(i18n("Aborted! Nothing synced!")); | ||
1069 | return; | ||
1070 | } | ||
1071 | mView->setSyncDevice(i18n("Multiple profiles") ); | ||
1072 | KOPrefs::instance()->mSyncAlgoPrefs = KOPrefs::instance()->mRingSyncAlgoPrefs; | ||
1073 | if ( askforPrefs ) { | ||
1074 | mView->edit_sync_options(); | ||
1075 | KOPrefs::instance()->mRingSyncAlgoPrefs = KOPrefs::instance()->mSyncAlgoPrefs; | ||
1076 | } | ||
1077 | setCaption(i18n("Multiple sync started.") ); | ||
1078 | qApp->processEvents(); | ||
1079 | int num = ringSync() ; | ||
1080 | if ( num > 1 ) | ||
1081 | ringSync(); | ||
1082 | mBlockSaveFlag = false; | ||
1083 | if ( num ) | ||
1084 | save(); | ||
1085 | if ( num ) | ||
1086 | setCaption(i18n("%1 profiles synced. Multiple sync completed!").arg(num) ); | ||
1087 | else | ||
1088 | setCaption(i18n("Nothing synced! No profiles defined for multisync!")); | ||
1089 | return; | ||
1090 | } | ||
1091 | void MainWindow::slotSyncMenu( int action ) | ||
1092 | { | ||
1093 | qDebug("syncaction %d ", action); | ||
1094 | if ( action == 0 ) { | ||
1095 | |||
1096 | // seems to be a Qt2 event handling bug | ||
1097 | // syncmenu.clear causes a segfault at first time | ||
1098 | // when we call it after the main event loop, it is ok | ||
1099 | // same behaviour when calling OM/Pi via QCOP for the first time | ||
1100 | QTimer::singleShot ( 1, this, SLOT ( confSync() ) ); | ||
1101 | //confSync(); | ||
1102 | 951 | ||
1103 | return; | ||
1104 | } | ||
1105 | if ( action == 1 ) { | ||
1106 | multiSync( true ); | ||
1107 | return; | ||
1108 | } | ||
1109 | if ( action == 2 ) { | ||
1110 | enableQuick(); | ||
1111 | QTimer::singleShot ( 1, this, SLOT ( fillSyncMenu() ) ); | ||
1112 | return; | ||
1113 | } | ||
1114 | if ( action == 3 ) { | ||
1115 | delete mServerSocket; | ||
1116 | mServerSocket = 0; | ||
1117 | QTimer::singleShot ( 1, this, SLOT ( fillSyncMenu() ) ); | ||
1118 | return; | ||
1119 | } | ||
1120 | |||
1121 | if (mBlockSaveFlag) | ||
1122 | return; | ||
1123 | mBlockSaveFlag = true; | ||
1124 | mCurrentSyncProfile = action - 1000 ; | ||
1125 | mView->setSyncDevice(KOPrefs::instance()->mSyncProfileNames[mCurrentSyncProfile] ); | ||
1126 | mView->setSyncName( KOPrefs::instance()->mLocalMachineName ); | ||
1127 | KConfig config ( locateLocal( "config","ksyncprofilesrc" ) ); | ||
1128 | KSyncProfile* temp = new KSyncProfile (); | ||
1129 | temp->setName(KOPrefs::instance()->mSyncProfileNames[mCurrentSyncProfile]); | ||
1130 | temp->readConfig(&config); | ||
1131 | KOPrefs::instance()->mAskForPreferences = temp->getAskForPreferences(); | ||
1132 | KOPrefs::instance()->mSyncAlgoPrefs = temp->getSyncPrefs(); | ||
1133 | KOPrefs::instance()->mWriteBackFile = temp->getWriteBackFile(); | ||
1134 | KOPrefs::instance()->mWriteBackExistingOnly = temp->getWriteBackExisting(); | ||
1135 | KOPrefs::instance()->mWriteBackInFuture = 0; | ||
1136 | if ( temp->getWriteBackFuture() ) | ||
1137 | KOPrefs::instance()->mWriteBackInFuture = temp->getWriteBackFutureWeeks( ); | ||
1138 | KOPrefs::instance()->mShowSyncSummary = temp->getShowSummaryAfterSync(); | ||
1139 | if ( action == 1000 ) { | ||
1140 | syncSharp(); | ||
1141 | |||
1142 | } else if ( action == 1001 ) { | ||
1143 | syncLocalFile(); | ||
1144 | |||
1145 | } else if ( action == 1002 ) { | ||
1146 | quickSyncLocalFile(); | ||
1147 | |||
1148 | } else if ( action >= 1003 ) { | ||
1149 | if ( temp->getIsLocalFileSync() ) { | ||
1150 | if ( syncWithFile( temp->getRemoteFileName( ), false ) ) | ||
1151 | KOPrefs::instance()->mLastSyncedLocalFile = temp->getRemoteFileName(); | ||
1152 | } else { | ||
1153 | if ( temp->getIsPhoneSync() ) { | ||
1154 | KOPrefs::instance()->mPhoneDevice = temp->getPhoneDevice( ) ; | ||
1155 | KOPrefs::instance()->mPhoneConnection = temp->getPhoneConnection( ); | ||
1156 | KOPrefs::instance()->mPhoneModel = temp->getPhoneModel( ); | ||
1157 | syncPhone(); | ||
1158 | } else if ( temp->getIsPiSync() ) { | ||
1159 | mPassWordPiSync = temp->getRemotePw(); | ||
1160 | KOPrefs::instance()->mActiveSyncPort = temp->getRemotePort(); | ||
1161 | KOPrefs::instance()->mActiveSyncIP = temp->getRemoteIP(); | ||
1162 | syncPi(); | ||
1163 | } else | ||
1164 | syncRemote( temp ); | ||
1165 | |||
1166 | } | ||
1167 | } | ||
1168 | delete temp; | ||
1169 | mBlockSaveFlag = false; | ||
1170 | } | ||
1171 | void MainWindow::exportToPhone( int mode ) | 952 | void MainWindow::exportToPhone( int mode ) |
1172 | { | 953 | { |
1173 | 954 | ||
1174 | //ex2phone->insertItem(i18n("Complete calendar..."), 1 ); | 955 | //ex2phone->insertItem(i18n("Complete calendar..."), 1 ); |
1175 | //ex2phone->insertItem(i18n("Filtered calendar..."), 2 ); | 956 | //ex2phone->insertItem(i18n("Filtered calendar..."), 2 ); |
1176 | KOex2phonePrefs ex2phone; | 957 | KOex2phonePrefs ex2phone; |
1177 | 958 | ||
1178 | ex2phone.mPhoneConnection->setText( KPimGlobalPrefs::instance()->mEx2PhoneConnection ); | 959 | ex2phone.mPhoneConnection->setText( KPimGlobalPrefs::instance()->mEx2PhoneConnection ); |
1179 | ex2phone.mPhoneDevice->setText( KPimGlobalPrefs::instance()->mEx2PhoneDevice ); | 960 | ex2phone.mPhoneDevice->setText( KPimGlobalPrefs::instance()->mEx2PhoneDevice ); |
1180 | ex2phone.mPhoneModel->setText( KPimGlobalPrefs::instance()->mEx2PhoneModel ); | 961 | ex2phone.mPhoneModel->setText( KPimGlobalPrefs::instance()->mEx2PhoneModel ); |
1181 | if ( mode == 1 ) | 962 | if ( mode == 1 ) |
1182 | ex2phone.setCaption(i18n("Export complete calendar")); | 963 | ex2phone.setCaption(i18n("Export complete calendar")); |
@@ -1575,56 +1356,55 @@ void MainWindow::saveOnClose() | |||
1575 | iconToolBar->y() > height()/2; | 1356 | iconToolBar->y() > height()/2; |
1576 | mView->writeSettings(); | 1357 | mView->writeSettings(); |
1577 | if ( mCalendarModifiedFlag || mView->checkFileChanged( defaultFileName())) | 1358 | if ( mCalendarModifiedFlag || mView->checkFileChanged( defaultFileName())) |
1578 | save(); | 1359 | save(); |
1579 | } | 1360 | } |
1580 | void MainWindow::slotModifiedChanged( bool changed ) | 1361 | void MainWindow::slotModifiedChanged( bool changed ) |
1581 | { | 1362 | { |
1582 | if ( mBlockAtStartup ) | 1363 | if ( mBlockAtStartup ) |
1583 | return; | 1364 | return; |
1584 | int msec; | 1365 | int msec; |
1585 | // we store the changes after 1 minute, | 1366 | // we store the changes after 1 minute, |
1586 | // and for safety reasons after 10 minutes again | 1367 | // and for safety reasons after 10 minutes again |
1587 | if ( !mBlockSaveFlag ) | 1368 | if ( !mSyncManager->blockSave() ) |
1588 | msec = (1000 * 60*KOPrefs::instance()->mAutoSaveInterval) +1000; | 1369 | msec = (1000 * 60*KOPrefs::instance()->mAutoSaveInterval) +1000; |
1589 | else | 1370 | else |
1590 | msec = 1000 * 600; | 1371 | msec = 1000 * 600; |
1591 | mSaveTimer.start( msec, true ); // 1 minute | 1372 | mSaveTimer.start( msec, true ); // 1 minute |
1592 | qDebug("KO: Saving File in %d secs!", msec/1000); | 1373 | qDebug("KO: Saving File in %d secs!", msec/1000); |
1593 | mCalendarModifiedFlag = true; | 1374 | mCalendarModifiedFlag = true; |
1594 | } | 1375 | } |
1595 | void MainWindow::save() | 1376 | void MainWindow::save() |
1596 | { | 1377 | { |
1597 | if ( mBlockSaveFlag ) | 1378 | if ( mSyncManager->blockSave() ) |
1598 | return; | 1379 | return; |
1599 | bool store = mBlockSaveFlag; | 1380 | mSyncManager->setBlockSave(true); |
1600 | mBlockSaveFlag = true; | ||
1601 | if ( mView->checkFileVersion( defaultFileName()) ) { | 1381 | if ( mView->checkFileVersion( defaultFileName()) ) { |
1602 | 1382 | ||
1603 | QTime neededSaveTime = QDateTime::currentDateTime().time(); | 1383 | QTime neededSaveTime = QDateTime::currentDateTime().time(); |
1604 | setCaption(i18n("KO/Pi:Saving Data to File ..." )); | 1384 | setCaption(i18n("KO/Pi:Saving Data to File ..." )); |
1605 | qDebug("KO: Start saving data to file!"); | 1385 | qDebug("KO: Start saving data to file!"); |
1606 | mView->setLoadedFileVersion(QDateTime::currentDateTime().addSecs( -1)); | 1386 | mView->setLoadedFileVersion(QDateTime::currentDateTime().addSecs( -1)); |
1607 | mView->saveCalendar( defaultFileName() ); | 1387 | mView->saveCalendar( defaultFileName() ); |
1608 | 1388 | ||
1609 | int msNeeded = neededSaveTime.msecsTo( QDateTime::currentDateTime().time() ); | 1389 | int msNeeded = neededSaveTime.msecsTo( QDateTime::currentDateTime().time() ); |
1610 | mView->watchSavedFile(); | 1390 | mView->watchSavedFile(); |
1611 | qDebug("KO: Needed %d ms for saving.",msNeeded ); | 1391 | qDebug("KO: Needed %d ms for saving.",msNeeded ); |
1612 | QString savemes; | 1392 | QString savemes; |
1613 | savemes.sprintf(i18n("KO/Pi:File Saved. Needed %d sec, %d ms"),(msNeeded/1000)%100,msNeeded%1000 ); | 1393 | savemes.sprintf(i18n("KO/Pi:File Saved. Needed %d sec, %d ms"),(msNeeded/1000)%100,msNeeded%1000 ); |
1614 | setCaption(savemes); | 1394 | setCaption(savemes); |
1615 | } else | 1395 | } else |
1616 | setCaption(i18n("Saving cancelled!")); | 1396 | setCaption(i18n("Saving cancelled!")); |
1617 | mCalendarModifiedFlag = false; | 1397 | mCalendarModifiedFlag = false; |
1618 | mBlockSaveFlag = store; | 1398 | mSyncManager->setBlockSave( false ); |
1619 | } | 1399 | } |
1620 | 1400 | ||
1621 | void MainWindow::keyReleaseEvent ( QKeyEvent * e) | 1401 | void MainWindow::keyReleaseEvent ( QKeyEvent * e) |
1622 | { | 1402 | { |
1623 | if ( !e->isAutoRepeat() ) { | 1403 | if ( !e->isAutoRepeat() ) { |
1624 | mFlagKeyPressed = false; | 1404 | mFlagKeyPressed = false; |
1625 | } | 1405 | } |
1626 | } | 1406 | } |
1627 | void MainWindow::keyPressEvent ( QKeyEvent * e ) | 1407 | void MainWindow::keyPressEvent ( QKeyEvent * e ) |
1628 | { | 1408 | { |
1629 | qApp->processEvents(); | 1409 | qApp->processEvents(); |
1630 | if ( e->isAutoRepeat() && !mFlagKeyPressed ) { | 1410 | if ( e->isAutoRepeat() && !mFlagKeyPressed ) { |
@@ -2020,329 +1800,39 @@ void MainWindow::exportVCalendar() | |||
2020 | if ( createbup ) { | 1800 | if ( createbup ) { |
2021 | if ( mView->exportVCalendar( fn ) ) { | 1801 | if ( mView->exportVCalendar( fn ) ) { |
2022 | KOPrefs::instance()->mLastVcalFile = fn; | 1802 | KOPrefs::instance()->mLastVcalFile = fn; |
2023 | if ( fn.length() > 20 ) | 1803 | if ( fn.length() > 20 ) |
2024 | mes = i18n("KO/Pi:Exported to ...%1").arg(fn.right(20)) ; | 1804 | mes = i18n("KO/Pi:Exported to ...%1").arg(fn.right(20)) ; |
2025 | else | 1805 | else |
2026 | mes = i18n("KO/Pi:Exported to %1").arg(fn ); | 1806 | mes = i18n("KO/Pi:Exported to %1").arg(fn ); |
2027 | setCaption(mes); | 1807 | setCaption(mes); |
2028 | } | 1808 | } |
2029 | } | 1809 | } |
2030 | 1810 | ||
2031 | } | 1811 | } |
2032 | QString MainWindow::getPassword( ) | ||
2033 | { | ||
2034 | QString retfile = ""; | ||
2035 | QDialog dia ( this, "input-dialog", true ); | ||
2036 | QLineEdit lab ( &dia ); | ||
2037 | lab.setEchoMode( QLineEdit::Password ); | ||
2038 | QVBoxLayout lay( &dia ); | ||
2039 | lay.setMargin(7); | ||
2040 | lay.setSpacing(7); | ||
2041 | lay.addWidget( &lab); | ||
2042 | dia.setFixedSize( 230,50 ); | ||
2043 | dia.setCaption( i18n("Enter password") ); | ||
2044 | QPushButton pb ( "OK", &dia); | ||
2045 | lay.addWidget( &pb ); | ||
2046 | connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) ); | ||
2047 | dia.show(); | ||
2048 | int res = dia.exec(); | ||
2049 | if ( res ) | ||
2050 | retfile = lab.text(); | ||
2051 | dia.hide(); | ||
2052 | qApp->processEvents(); | ||
2053 | return retfile; | ||
2054 | |||
2055 | } | ||
2056 | 1812 | ||
2057 | void MainWindow::enableQuick() | 1813 | void MainWindow::syncFileRequest() |
2058 | { | 1814 | { |
2059 | QDialog dia ( this, "input-dialog", true ); | 1815 | save(); |
2060 | QLineEdit lab ( &dia ); | ||
2061 | QVBoxLayout lay( &dia ); | ||
2062 | lab.setText( KOPrefs::instance()->mPassiveSyncPort ); | ||
2063 | lay.setMargin(7); | ||
2064 | lay.setSpacing(7); | ||
2065 | QLabel label ( i18n("Port number (Default: 9197)"), &dia ); | ||
2066 | lay.addWidget( &label); | ||
2067 | lay.addWidget( &lab); | ||
2068 | |||
2069 | QLineEdit lepw ( &dia ); | ||
2070 | lepw.setText( KOPrefs::instance()->mPassiveSyncPw ); | ||
2071 | QLabel label2 ( i18n("Password to enable\naccess from remote:"), &dia ); | ||
2072 | lay.addWidget( &label2); | ||
2073 | lay.addWidget( &lepw); | ||
2074 | dia.setFixedSize( 230,80 ); | ||
2075 | dia.setCaption( i18n("Enter port for Pi-Sync") ); | ||
2076 | QPushButton pb ( "OK", &dia); | ||
2077 | lay.addWidget( &pb ); | ||
2078 | connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) ); | ||
2079 | dia.show(); | ||
2080 | if ( ! dia.exec() ) | ||
2081 | return; | ||
2082 | dia.hide(); | ||
2083 | qApp->processEvents(); | ||
2084 | KOPrefs::instance()->mPassiveSyncPw = lepw.text(); | ||
2085 | KOPrefs::instance()->mPassiveSyncPort = lab.text(); | ||
2086 | bool ok; | ||
2087 | Q_UINT16 port = KOPrefs::instance()->mPassiveSyncPort.toUInt(&ok); | ||
2088 | if ( ! ok ) { | ||
2089 | KMessageBox::information( this, i18n("No valid port")); | ||
2090 | return; | ||
2091 | } | ||
2092 | //qDebug("port %d ", port); | ||
2093 | mServerSocket = new KServerSocket ( KOPrefs::instance()->mPassiveSyncPw, port ,1 ); | ||
2094 | mServerSocket->setFileName( defaultFileName() ); | ||
2095 | //qDebug("connected "); | ||
2096 | if ( !mServerSocket->ok() ) { | ||
2097 | KMessageBox::information( this, i18n("Failed to bind or\nlisten to the port!")); | ||
2098 | delete mServerSocket; | ||
2099 | mServerSocket = 0; | ||
2100 | return; | ||
2101 | } | ||
2102 | connect( mServerSocket, SIGNAL ( saveFile() ), this, SLOT ( save() ) ); | ||
2103 | connect( mServerSocket, SIGNAL ( file_received( bool ) ), this, SLOT ( getFile( bool ) ) ); | ||
2104 | } | 1816 | } |
2105 | |||
2106 | void MainWindow::getFile( bool success ) | 1817 | void MainWindow::getFile( bool success ) |
2107 | { | 1818 | { |
2108 | if ( ! success ) { | 1819 | if ( ! success ) { |
2109 | setCaption( i18n("Error receiving file. Nothing changed!") ); | 1820 | setCaption( i18n("Error receiving file. Nothing changed!") ); |
2110 | return; | 1821 | return; |
2111 | } | 1822 | } |
2112 | mView->watchSavedFile(); | 1823 | mView->watchSavedFile(); |
2113 | mView->openCalendar( defaultFileName() ); | 1824 | mView->openCalendar( defaultFileName() ); |
2114 | setCaption( i18n("Pi-Sync successful!") ); | 1825 | setCaption( i18n("Pi-Sync successful!") ); |
2115 | 1826 | ||
2116 | } | 1827 | } |
2117 | 1828 | ||
2118 | |||
2119 | void MainWindow::syncPi() | ||
2120 | { | ||
2121 | qApp->processEvents(); | ||
2122 | bool ok; | ||
2123 | Q_UINT16 port = KOPrefs::instance()->mActiveSyncPort.toUInt(&ok); | ||
2124 | if ( ! ok ) { | ||
2125 | setCaption( i18n("Sorry, no valid port.Syncing cancelled.") ); | ||
2126 | return; | ||
2127 | } | ||
2128 | KCommandSocket* commandSocket = new KCommandSocket( mPassWordPiSync, port, KOPrefs::instance()->mActiveSyncIP, this ); | ||
2129 | connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int )), this, SLOT(deleteCommandSocket(KCommandSocket*, int)) ); | ||
2130 | setCaption( i18n("Sending request for remote file ...") ); | ||
2131 | commandSocket->readFile( syncFileName() ); | ||
2132 | } | ||
2133 | |||
2134 | void MainWindow::deleteCommandSocket(KCommandSocket*s, int state) | ||
2135 | { | ||
2136 | qDebug("MainWindow::deleteCommandSocket %d", state); | ||
2137 | |||
2138 | //enum { success, errorW, errorR, quiet }; | ||
2139 | if ( state == KCommandSocket::errorR ) { | ||
2140 | setCaption( i18n("ERROR: Receiving remote file failed.") ); | ||
2141 | delete s; | ||
2142 | KCommandSocket* commandSocket = new KCommandSocket( mPassWordPiSync, KOPrefs::instance()->mActiveSyncPort.toUInt(), KOPrefs::instance()->mActiveSyncIP, this ); | ||
2143 | connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int)), this, SLOT(deleteCommandSocket(KCommandSocket*, int )) ); | ||
2144 | commandSocket->sendStop(); | ||
2145 | return; | ||
2146 | |||
2147 | } else if ( state == KCommandSocket::errorW ) { | ||
2148 | setCaption( i18n("ERROR:Writing back file failed.") ); | ||
2149 | |||
2150 | } else if ( state == KCommandSocket::successR ) { | ||
2151 | QTimer::singleShot( 1, this , SLOT ( readFileFromSocket())); | ||
2152 | |||
2153 | } else if ( state == KCommandSocket::successW ) { | ||
2154 | setCaption( i18n("Pi-Sync succesful!") ); | ||
2155 | } | ||
2156 | |||
2157 | delete s; | ||
2158 | } | ||
2159 | |||
2160 | void MainWindow::readFileFromSocket() | ||
2161 | { | ||
2162 | QString fileName = syncFileName(); | ||
2163 | setCaption( i18n("Remote file saved to temp file.") ); | ||
2164 | if ( ! syncWithFile( fileName , true ) ) { | ||
2165 | setCaption( i18n("Syncing failed.") ); | ||
2166 | qDebug("Syncing failed "); | ||
2167 | return; | ||
2168 | } | ||
2169 | KCommandSocket* commandSocket = new KCommandSocket( mPassWordPiSync, KOPrefs::instance()->mActiveSyncPort.toUInt(), KOPrefs::instance()->mActiveSyncIP, this ); | ||
2170 | connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int)), this, SLOT(deleteCommandSocket(KCommandSocket*, int )) ); | ||
2171 | if ( KOPrefs::instance()->mWriteBackFile ) | ||
2172 | commandSocket->writeFile( fileName ); | ||
2173 | else { | ||
2174 | commandSocket->sendStop(); | ||
2175 | setCaption( i18n("Pi-Sync succesful!") ); | ||
2176 | } | ||
2177 | } | ||
2178 | |||
2179 | void MainWindow::syncLocalFile() | ||
2180 | { | ||
2181 | |||
2182 | QString fn =KOPrefs::instance()->mLastSyncedLocalFile; | ||
2183 | |||
2184 | fn =KFileDialog:: getOpenFileName( fn, i18n("Sync filename(*.ics/*.vcs)"), this ); | ||
2185 | if ( fn == "" ) | ||
2186 | return; | ||
2187 | //mView->setSyncDevice("local-file" ); | ||
2188 | if ( syncWithFile( fn, false ) ) { | ||
2189 | // Event* e = mView->getLastSyncEvent(); | ||
2190 | // e->setReadOnly( false ); | ||
2191 | // e->setLocation( i18n("Local file: ")+ KOPrefs::instance()->mLastSyncedLocalFile); | ||
2192 | // e->setReadOnly( true ); | ||
2193 | } | ||
2194 | |||
2195 | } | ||
2196 | |||
2197 | bool MainWindow::syncWithFile( QString fn , bool quick ) | ||
2198 | { | ||
2199 | bool ret = false; | ||
2200 | QFileInfo info; | ||
2201 | info.setFile( fn ); | ||
2202 | QString mess; | ||
2203 | bool loadbup = true; | ||
2204 | if ( !info. exists() ) { | ||
2205 | mess = i18n( "Sync file \n...%1\ndoes not exist!\nNothing synced!\n").arg(fn.right( 30) ); | ||
2206 | int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"), | ||
2207 | mess ); | ||
2208 | return ret; | ||
2209 | } | ||
2210 | int result = 0; | ||
2211 | if ( !quick ) { | ||
2212 | mess = i18n("Sync with file \n...%1\nfrom:\n%2\n").arg(fn.right( 25)).arg(KGlobal::locale()->formatDateTime(info.lastModified (), true, false )); | ||
2213 | result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"), | ||
2214 | mess, | ||
2215 | i18n("Sync"), i18n("Cancel"), 0, | ||
2216 | 0, 1 ); | ||
2217 | if ( result ) | ||
2218 | return false; | ||
2219 | } | ||
2220 | if ( KOPrefs::instance()->mAskForPreferences ) | ||
2221 | mView->edit_sync_options(); | ||
2222 | if ( result == 0 ) { | ||
2223 | //qDebug("Now sycing ... "); | ||
2224 | if ( ret = mView->syncCalendar( fn, KOPrefs::instance()->mSyncAlgoPrefs ) ) | ||
2225 | setCaption( i18n("Synchronization successful") ); | ||
2226 | else | ||
2227 | setCaption( i18n("Sync cancelled or failed. Nothing synced.") ); | ||
2228 | if ( ! quick ) | ||
2229 | KOPrefs::instance()->mLastSyncedLocalFile = fn; | ||
2230 | slotModifiedChanged( true ); | ||
2231 | } | ||
2232 | return ret; | ||
2233 | } | ||
2234 | void MainWindow::quickSyncLocalFile() | ||
2235 | { | ||
2236 | //mView->setSyncDevice("local-file" ); | ||
2237 | //qDebug("quickSyncLocalFile() "); | ||
2238 | if ( syncWithFile( KOPrefs::instance()->mLastSyncedLocalFile, false ) ) { | ||
2239 | // Event* e = mView->getLastSyncEvent(); | ||
2240 | // e->setReadOnly( false ); | ||
2241 | // e->setLocation( i18n("Quick with file: ")+ KOPrefs::instance()->mLastSyncedLocalFile); | ||
2242 | // e->setReadOnly( true ); | ||
2243 | |||
2244 | } | ||
2245 | } | ||
2246 | |||
2247 | void MainWindow::confSync() | ||
2248 | { | ||
2249 | mView->confSync(); | ||
2250 | fillSyncMenu(); | ||
2251 | } | ||
2252 | void MainWindow::syncRemote( KSyncProfile* prof, bool ask) | ||
2253 | { | ||
2254 | QString question; | ||
2255 | if ( ask ) { | ||
2256 | question = i18n("Do you really want\nto remote sync\nwith profile \n")+ prof->getName()+" ?\n"; | ||
2257 | if ( QMessageBox::information( this, i18n("KO/Pi Sync"), | ||
2258 | question, | ||
2259 | i18n("Yes"), i18n("No"), | ||
2260 | 0, 0 ) != 0 ) | ||
2261 | return; | ||
2262 | } | ||
2263 | QString command = prof->getPreSyncCommand(); | ||
2264 | int fi; | ||
2265 | if ( (fi = command.find("$PWD$")) > 0 ) { | ||
2266 | QString pwd = getPassword(); | ||
2267 | command = command.left( fi )+ pwd + command.mid( fi+5 ); | ||
2268 | |||
2269 | } | ||
2270 | int maxlen = 30; | ||
2271 | if ( QApplication::desktop()->width() > 320 ) | ||
2272 | maxlen += 25; | ||
2273 | setCaption ( i18n( "Copy remote file to local machine..." ) ); | ||
2274 | int fileSize = 0; | ||
2275 | int result = system ( command ); | ||
2276 | // 0 : okay | ||
2277 | // 256: no such file or dir | ||
2278 | // | ||
2279 | qDebug("KO: Remote copy result(0 = okay): %d ",result ); | ||
2280 | if ( result != 0 ) { | ||
2281 | int len = maxlen; | ||
2282 | while ( len < command.length() ) { | ||
2283 | command.insert( len , "\n" ); | ||
2284 | len += maxlen +2; | ||
2285 | } | ||
2286 | question = i18n("Sorry, the copy command failed!\nCommand was:\n%1\n \nTry command on console to get more\ndetailed info about the reason.\n").arg (command) ; | ||
2287 | QMessageBox::information( this, i18n("KO/Pi Sync - ERROR"), | ||
2288 | question, | ||
2289 | i18n("Okay!")) ; | ||
2290 | setCaption ("KO/Pi"); | ||
2291 | return; | ||
2292 | } | ||
2293 | setCaption ( i18n( "Copying succeed." ) ); | ||
2294 | //qDebug(" file **%s** ",prof->getLocalTempFile().latin1() ); | ||
2295 | if ( syncWithFile( prof->getLocalTempFile(), true ) ) { | ||
2296 | // Event* e = mView->getLastSyncEvent(); | ||
2297 | // e->setReadOnly( false ); | ||
2298 | // e->setLocation( KOPrefs::instance()->mSyncProfileNames[mCurrentSyncProfile]); | ||
2299 | // e->setReadOnly( true ); | ||
2300 | if ( KOPrefs::instance()->mWriteBackFile ) { | ||
2301 | command = prof->getPostSyncCommand(); | ||
2302 | int fi; | ||
2303 | if ( (fi = command.find("$PWD$")) > 0 ) { | ||
2304 | QString pwd = getPassword(); | ||
2305 | command = command.left( fi )+ pwd + command.mid( fi+5 ); | ||
2306 | |||
2307 | } | ||
2308 | setCaption ( i18n( "Writing back file ..." ) ); | ||
2309 | result = system ( command ); | ||
2310 | qDebug("KO: Writing back file result: %d ", result); | ||
2311 | if ( result != 0 ) { | ||
2312 | setCaption ( i18n( "Writing back file result: " )+QString::number( result ) ); | ||
2313 | return; | ||
2314 | } else { | ||
2315 | setCaption ( i18n( "Syncronization sucessfully completed" ) ); | ||
2316 | } | ||
2317 | } | ||
2318 | } | ||
2319 | return; | ||
2320 | } | ||
2321 | |||
2322 | void MainWindow::syncSharp() | ||
2323 | { | ||
2324 | if ( mCalendarModifiedFlag ) | ||
2325 | save(); | ||
2326 | mView->syncSharp(); | ||
2327 | slotModifiedChanged( true ); | ||
2328 | |||
2329 | } | ||
2330 | void MainWindow::syncPhone() | ||
2331 | { | ||
2332 | if ( mCalendarModifiedFlag ) | ||
2333 | save(); | ||
2334 | mView->syncPhone(); | ||
2335 | slotModifiedChanged( true ); | ||
2336 | |||
2337 | } | ||
2338 | |||
2339 | void MainWindow::printSel( ) | 1829 | void MainWindow::printSel( ) |
2340 | { | 1830 | { |
2341 | mView->viewManager()->agendaView()->agenda()->printSelection(); | 1831 | mView->viewManager()->agendaView()->agenda()->printSelection(); |
2342 | } | 1832 | } |
2343 | 1833 | ||
2344 | void MainWindow::printCal() | 1834 | void MainWindow::printCal() |
2345 | { | 1835 | { |
2346 | mView->print();//mCp->showDialog(); | 1836 | mView->print();//mCp->showDialog(); |
2347 | } | 1837 | } |
2348 | 1838 | ||
diff --git a/korganizer/mainwindow.h b/korganizer/mainwindow.h index 0da0be0..ee7bd87 100644 --- a/korganizer/mainwindow.h +++ b/korganizer/mainwindow.h | |||
@@ -35,26 +35,24 @@ class MainWindow : public QMainWindow | |||
35 | public: | 35 | public: |
36 | MainWindow( QWidget *parent = 0, const char *name = 0, QString command = ""); | 36 | MainWindow( QWidget *parent = 0, const char *name = 0, QString command = ""); |
37 | ~MainWindow(); | 37 | ~MainWindow(); |
38 | public slots: | 38 | public slots: |
39 | virtual void showMaximized (); | 39 | virtual void showMaximized (); |
40 | void configureAgenda( int ); | 40 | void configureAgenda( int ); |
41 | void recieve( const QCString& msg, const QByteArray& data ); | 41 | void recieve( const QCString& msg, const QByteArray& data ); |
42 | static QString defaultFileName(); | 42 | static QString defaultFileName(); |
43 | static QString syncFileName(); | 43 | static QString syncFileName(); |
44 | static QString resourcePath(); | 44 | static QString resourcePath(); |
45 | protected slots: | 45 | protected slots: |
46 | void setCaptionToDates(); | 46 | void setCaptionToDates(); |
47 | int ringSync(); | ||
48 | void multiSync( bool askforPrefs = false ); | ||
49 | void about(); | 47 | void about(); |
50 | void licence(); | 48 | void licence(); |
51 | void faq(); | 49 | void faq(); |
52 | void usertrans(); | 50 | void usertrans(); |
53 | void features(); | 51 | void features(); |
54 | void synchowto(); | 52 | void synchowto(); |
55 | void whatsNew(); | 53 | void whatsNew(); |
56 | void keyBindings(); | 54 | void keyBindings(); |
57 | void aboutAutoSaving();; | 55 | void aboutAutoSaving();; |
58 | void aboutKnownBugs(); | 56 | void aboutKnownBugs(); |
59 | 57 | ||
60 | void processIncidenceSelection( Incidence * ); | 58 | void processIncidenceSelection( Incidence * ); |
@@ -70,79 +68,63 @@ class MainWindow : public QMainWindow | |||
70 | 68 | ||
71 | void save(); | 69 | void save(); |
72 | void configureToolBar( int ); | 70 | void configureToolBar( int ); |
73 | void printSel(); | 71 | void printSel(); |
74 | void printCal(); | 72 | void printCal(); |
75 | void saveCalendar(); | 73 | void saveCalendar(); |
76 | void loadCalendar(); | 74 | void loadCalendar(); |
77 | void exportVCalendar(); | 75 | void exportVCalendar(); |
78 | void fillFilterMenu(); | 76 | void fillFilterMenu(); |
79 | void selectFilter( int ); | 77 | void selectFilter( int ); |
80 | void exportToPhone( int ); | 78 | void exportToPhone( int ); |
81 | 79 | ||
82 | void slotSyncMenu( int ); | ||
83 | void confSync(); | ||
84 | void syncSharp(); | ||
85 | void syncPhone(); | ||
86 | void syncPi(); | ||
87 | void syncLocalFile(); | ||
88 | bool syncWithFile( QString, bool ); | ||
89 | void quickSyncLocalFile(); | ||
90 | |||
91 | 80 | ||
92 | protected: | 81 | protected: |
93 | void displayText( QString, QString); | 82 | void displayText( QString, QString); |
94 | void displayFile( QString, QString); | 83 | void displayFile( QString, QString); |
95 | 84 | ||
96 | void enableIncidenceActions( bool ); | 85 | void enableIncidenceActions( bool ); |
97 | 86 | ||
98 | private slots: | 87 | private slots: |
99 | QSocket* piSocket; | 88 | QSocket* piSocket; |
100 | QString piFileString; | 89 | QString piFileString; |
101 | QTime piTime; | 90 | QTime piTime; |
102 | void deleteCommandSocket(KCommandSocket* s, int state ); | ||
103 | void fillSyncMenu(); | ||
104 | void getFile( bool ); | 91 | void getFile( bool ); |
105 | void readFileFromSocket(); | 92 | void syncFileRequest(); |
106 | private: | 93 | private: |
94 | KSyncManager* mSyncManager; | ||
107 | //QTimer* mTimerCommandSocket; | 95 | //QTimer* mTimerCommandSocket; |
108 | QString mPassWordPiSync; | ||
109 | KServerSocket * mServerSocket; | 96 | KServerSocket * mServerSocket; |
110 | bool mClosed; | 97 | bool mClosed; |
111 | void saveOnClose(); | 98 | void saveOnClose(); |
112 | int mCurrentSyncProfile; | ||
113 | void enableQuick(); | ||
114 | void syncRemote( KSyncProfile* , bool ask = true); | ||
115 | bool mFlagKeyPressed; | 99 | bool mFlagKeyPressed; |
116 | bool mBlockAtStartup; | 100 | bool mBlockAtStartup; |
117 | QPEToolBar *iconToolBar; | 101 | QPEToolBar *iconToolBar; |
118 | void initActions(); | 102 | void initActions(); |
119 | void setDefaultPreferences(); | 103 | void setDefaultPreferences(); |
120 | void keyPressEvent ( QKeyEvent * ) ; | 104 | void keyPressEvent ( QKeyEvent * ) ; |
121 | void keyReleaseEvent ( QKeyEvent * ) ; | 105 | void keyReleaseEvent ( QKeyEvent * ) ; |
122 | QPopupMenu *configureToolBarMenu; | 106 | QPopupMenu *configureToolBarMenu; |
123 | QPopupMenu *selectFilterMenu; | 107 | QPopupMenu *selectFilterMenu; |
124 | QPopupMenu *configureAgendaMenu, *syncMenu; | 108 | QPopupMenu *configureAgendaMenu, *syncMenu; |
125 | CalendarLocal *mCalendar; | 109 | CalendarLocal *mCalendar; |
126 | CalendarView *mView; | 110 | CalendarView *mView; |
127 | QString getPassword(); | ||
128 | QAction *mNewSubTodoAction; | 111 | QAction *mNewSubTodoAction; |
129 | 112 | ||
130 | QAction *mShowAction; | 113 | QAction *mShowAction; |
131 | QAction *mEditAction; | 114 | QAction *mEditAction; |
132 | QAction *mDeleteAction; | 115 | QAction *mDeleteAction; |
133 | QAction *mCloneAction; | 116 | QAction *mCloneAction; |
134 | QAction *mMoveAction; | 117 | QAction *mMoveAction; |
135 | QAction *mBeamAction; | 118 | QAction *mBeamAction; |
136 | QAction *mCancelAction; | 119 | QAction *mCancelAction; |
137 | 120 | ||
138 | |||
139 | void closeEvent( QCloseEvent* ce ); | 121 | void closeEvent( QCloseEvent* ce ); |
140 | SimpleAlarmClient mAlarmClient; | 122 | SimpleAlarmClient mAlarmClient; |
141 | QTimer mSaveTimer; | 123 | QTimer mSaveTimer; |
142 | bool mBlockSaveFlag; | 124 | //bool mBlockSaveFlag; |
143 | bool mCalendarModifiedFlag; | 125 | bool mCalendarModifiedFlag; |
144 | QPixmap loadPixmap( QString ); | 126 | QPixmap loadPixmap( QString ); |
145 | }; | 127 | }; |
146 | 128 | ||
147 | 129 | ||
148 | #endif | 130 | #endif |