summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/calendarview.cpp20
-rw-r--r--korganizer/koprefs.cpp1
-rw-r--r--korganizer/koprefs.h1
-rw-r--r--korganizer/mainwindow.cpp115
-rw-r--r--korganizer/mainwindow.h2
-rw-r--r--libkcal/calstorage.h2
-rw-r--r--libkcal/filestorage.cpp4
-rw-r--r--libkcal/filestorage.h2
-rw-r--r--libkcal/icalformat.cpp24
-rw-r--r--libkcal/icalformat.h3
10 files changed, 20 insertions, 154 deletions
diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp
index eaea040..fecc7e2 100644
--- a/korganizer/calendarview.cpp
+++ b/korganizer/calendarview.cpp
@@ -1200,56 +1200,56 @@ bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int
1200 KMessageBox::information(this, mes, i18n("KO/Pi Synchronization") ); 1200 KMessageBox::information(this, mes, i18n("KO/Pi Synchronization") );
1201 } 1201 }
1202 qDebug( mes ); 1202 qDebug( mes );
1203 mCalendar->checkAlarmForIncidence( 0, true ); 1203 mCalendar->checkAlarmForIncidence( 0, true );
1204 return syncOK; 1204 return syncOK;
1205} 1205}
1206 1206
1207void CalendarView::setSyncDevice( QString s ) 1207void CalendarView::setSyncDevice( QString s )
1208{ 1208{
1209 mCurrentSyncDevice= s; 1209 mCurrentSyncDevice= s;
1210} 1210}
1211void CalendarView::setSyncName( QString s ) 1211void CalendarView::setSyncName( QString s )
1212{ 1212{
1213 mCurrentSyncName= s; 1213 mCurrentSyncName= s;
1214} 1214}
1215bool CalendarView::syncCalendar(QString filename, int mode) 1215bool CalendarView::syncCalendar(QString filename, int mode)
1216{ 1216{
1217 mGlobalSyncMode = SYNC_MODE_NORMAL; 1217 mGlobalSyncMode = SYNC_MODE_NORMAL;
1218 CalendarLocal* calendar = new CalendarLocal(); 1218 CalendarLocal* calendar = new CalendarLocal();
1219 calendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId); 1219 calendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId);
1220 FileStorage* storage = new FileStorage( calendar ); 1220 FileStorage* storage = new FileStorage( calendar );
1221 bool syncOK = false; 1221 bool syncOK = false;
1222 storage->setFileName( filename ); 1222 storage->setFileName( filename );
1223 // qDebug("loading ... "); 1223 // qDebug("loading ... ");
1224 if ( storage->load(KOPrefs::instance()->mUseQuicksave) ) { 1224 if ( storage->load() ) {
1225 getEventViewerDialog()->setSyncMode( true ); 1225 getEventViewerDialog()->setSyncMode( true );
1226 syncOK = synchronizeCalendar( mCalendar, calendar, mode ); 1226 syncOK = synchronizeCalendar( mCalendar, calendar, mode );
1227 getEventViewerDialog()->setSyncMode( false ); 1227 getEventViewerDialog()->setSyncMode( false );
1228 if ( syncOK ) { 1228 if ( syncOK ) {
1229 if ( KOPrefs::instance()->mWriteBackFile ) 1229 if ( KOPrefs::instance()->mWriteBackFile )
1230 { 1230 {
1231 storage->setSaveFormat( new ICalFormat( KOPrefs::instance()->mUseQuicksave) ); 1231 storage->setSaveFormat( new ICalFormat() );
1232 storage->save(); 1232 storage->save();
1233 } 1233 }
1234 } 1234 }
1235 setModified( true ); 1235 setModified( true );
1236 } 1236 }
1237 delete storage; 1237 delete storage;
1238 delete calendar; 1238 delete calendar;
1239 if ( syncOK ) 1239 if ( syncOK )
1240 updateView(); 1240 updateView();
1241 return syncOK; 1241 return syncOK;
1242} 1242}
1243void CalendarView::syncPhone() 1243void CalendarView::syncPhone()
1244{ 1244{
1245 syncExternal( 1 ); 1245 syncExternal( 1 );
1246} 1246}
1247void CalendarView::syncExternal( int mode ) 1247void CalendarView::syncExternal( int mode )
1248{ 1248{
1249 mGlobalSyncMode = SYNC_MODE_EXTERNAL; 1249 mGlobalSyncMode = SYNC_MODE_EXTERNAL;
1250 //mCurrentSyncDevice = "sharp-DTM"; 1250 //mCurrentSyncDevice = "sharp-DTM";
1251 if ( KOPrefs::instance()->mAskForPreferences ) 1251 if ( KOPrefs::instance()->mAskForPreferences )
1252 edit_sync_options(); 1252 edit_sync_options();
1253 qApp->processEvents(); 1253 qApp->processEvents();
1254 CalendarLocal* calendar = new CalendarLocal(); 1254 CalendarLocal* calendar = new CalendarLocal();
1255 calendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId); 1255 calendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId);
@@ -1478,66 +1478,68 @@ void CalendarView::setSyncEventsReadOnly()
1478 ev = eL.first(); 1478 ev = eL.first();
1479 while ( ev ) { 1479 while ( ev ) {
1480 if ( ev->uid().left(15) == QString("last-syncEvent-") ) 1480 if ( ev->uid().left(15) == QString("last-syncEvent-") )
1481 ev->setReadOnly( true ); 1481 ev->setReadOnly( true );
1482 ev = eL.next(); 1482 ev = eL.next();
1483 } 1483 }
1484} 1484}
1485bool CalendarView::openCalendar(QString filename, bool merge) 1485bool CalendarView::openCalendar(QString filename, bool merge)
1486{ 1486{
1487 1487
1488 if (filename.isEmpty()) { 1488 if (filename.isEmpty()) {
1489 return false; 1489 return false;
1490 } 1490 }
1491 1491
1492 if (!QFile::exists(filename)) { 1492 if (!QFile::exists(filename)) {
1493 KMessageBox::error(this,i18n("File does not exist:\n '%1'.").arg(filename)); 1493 KMessageBox::error(this,i18n("File does not exist:\n '%1'.").arg(filename));
1494 return false; 1494 return false;
1495 } 1495 }
1496 1496
1497 globalFlagBlockAgenda = 1; 1497 globalFlagBlockAgenda = 1;
1498 if (!merge) mCalendar->close(); 1498 if (!merge) mCalendar->close();
1499 1499
1500 mStorage->setFileName( filename ); 1500 mStorage->setFileName( filename );
1501 1501
1502 if ( mStorage->load(KOPrefs::instance()->mUseQuicksave) ) { 1502 if ( mStorage->load() ) {
1503 if ( merge ) ;//setModified( true ); 1503 if ( merge ) ;//setModified( true );
1504 else { 1504 else {
1505 //setModified( true ); 1505 //setModified( true );
1506 mViewManager->setDocumentId( filename ); 1506 mViewManager->setDocumentId( filename );
1507 mDialogManager->setDocumentId( filename ); 1507 mDialogManager->setDocumentId( filename );
1508 mTodoList->setDocumentId( filename ); 1508 mTodoList->setDocumentId( filename );
1509 } 1509 }
1510 globalFlagBlockAgenda = 2; 1510 globalFlagBlockAgenda = 2;
1511 // if ( getLastSyncEvent() ) 1511 // if ( getLastSyncEvent() )
1512 // getLastSyncEvent()->setReadOnly( true ); 1512 // getLastSyncEvent()->setReadOnly( true );
1513 mCalendar->reInitAlarmSettings(); 1513 mCalendar->reInitAlarmSettings();
1514 setSyncEventsReadOnly(); 1514 setSyncEventsReadOnly();
1515 updateUnmanagedViews(); 1515 updateUnmanagedViews();
1516 updateView(); 1516 updateView();
1517 if ( filename != MainWindow::defaultFileName() )
1518 saveCalendar( MainWindow::defaultFileName() );
1519 loadedFileVersion = QDateTime::currentDateTime(); 1517 loadedFileVersion = QDateTime::currentDateTime();
1518 if ( filename != MainWindow::defaultFileName() ) {
1519 saveCalendar( MainWindow::defaultFileName() );
1520 watchSavedFile();
1521 }
1520 return true; 1522 return true;
1521 } else { 1523 } else {
1522 // while failing to load, the calendar object could 1524 // while failing to load, the calendar object could
1523 // have become partially populated. Clear it out. 1525 // have become partially populated. Clear it out.
1524 if ( !merge ) mCalendar->close(); 1526 if ( !merge ) mCalendar->close();
1525 1527
1526 KMessageBox::error(this,i18n("Couldn't load calendar\n '%1'.").arg(filename)); 1528 KMessageBox::error(this,i18n("Couldn't load calendar\n '%1'.").arg(filename));
1527 1529
1528 globalFlagBlockAgenda = 2; 1530 globalFlagBlockAgenda = 2;
1529 updateView(); 1531 updateView();
1530 } 1532 }
1531 return false; 1533 return false;
1532} 1534}
1533void CalendarView::setLoadedFileVersion(QDateTime dt) 1535void CalendarView::setLoadedFileVersion(QDateTime dt)
1534{ 1536{
1535 loadedFileVersion = dt; 1537 loadedFileVersion = dt;
1536} 1538}
1537bool CalendarView::checkFileChanged(QString fn) 1539bool CalendarView::checkFileChanged(QString fn)
1538{ 1540{
1539 QFileInfo finf ( fn ); 1541 QFileInfo finf ( fn );
1540 if ( !finf.exists() ) 1542 if ( !finf.exists() )
1541 return true; 1543 return true;
1542 QDateTime dt = finf.lastModified (); 1544 QDateTime dt = finf.lastModified ();
1543 if ( dt <= loadedFileVersion ) 1545 if ( dt <= loadedFileVersion )
@@ -1579,49 +1581,49 @@ bool CalendarView::checkFileVersion(QString fn)
1579 1581
1580 setSyncDevice("deleteaftersync" ); 1582 setSyncDevice("deleteaftersync" );
1581 KOPrefs::instance()->mAskForPreferences = true; 1583 KOPrefs::instance()->mAskForPreferences = true;
1582 KOPrefs::instance()->mSyncAlgoPrefs = 3; 1584 KOPrefs::instance()->mSyncAlgoPrefs = 3;
1583 KOPrefs::instance()->mWriteBackFile = false; 1585 KOPrefs::instance()->mWriteBackFile = false;
1584 KOPrefs::instance()->mWriteBackExistingOnly = false; 1586 KOPrefs::instance()->mWriteBackExistingOnly = false;
1585 KOPrefs::instance()->mShowSyncSummary = false; 1587 KOPrefs::instance()->mShowSyncSummary = false;
1586 syncCalendar( fn, 3 ); 1588 syncCalendar( fn, 3 );
1587 Event * e = getLastSyncEvent(); 1589 Event * e = getLastSyncEvent();
1588 mCalendar->deleteEvent ( e ); 1590 mCalendar->deleteEvent ( e );
1589 updateView(); 1591 updateView();
1590 return true; 1592 return true;
1591} 1593}
1592 1594
1593bool CalendarView::saveCalendar( QString filename ) 1595bool CalendarView::saveCalendar( QString filename )
1594{ 1596{
1595 1597
1596 // Store back all unsaved data into calendar object 1598 // Store back all unsaved data into calendar object
1597 // qDebug("file %s %d ", filename.latin1() , mViewManager->currentView() ); 1599 // qDebug("file %s %d ", filename.latin1() , mViewManager->currentView() );
1598 if ( mViewManager->currentView() ) 1600 if ( mViewManager->currentView() )
1599 mViewManager->currentView()->flushView(); 1601 mViewManager->currentView()->flushView();
1600 1602
1601 //mStorage->setFileName( filename ); 1603 //mStorage->setFileName( filename );
1602 1604
1603 mStorage->setSaveFormat( new ICalFormat( KOPrefs::instance()->mUseQuicksave) ); 1605 mStorage->setSaveFormat( new ICalFormat() );
1604 mStorage->setFileName( filename ); 1606 mStorage->setFileName( filename );
1605 bool success; 1607 bool success;
1606 success = mStorage->save(); 1608 success = mStorage->save();
1607 if ( !success ) { 1609 if ( !success ) {
1608 return false; 1610 return false;
1609 } 1611 }
1610 1612
1611 return true; 1613 return true;
1612} 1614}
1613 1615
1614void CalendarView::closeCalendar() 1616void CalendarView::closeCalendar()
1615{ 1617{
1616 1618
1617 // child windows no longer valid 1619 // child windows no longer valid
1618 emit closingDown(); 1620 emit closingDown();
1619 1621
1620 mCalendar->close(); 1622 mCalendar->close();
1621 setModified(false); 1623 setModified(false);
1622 updateView(); 1624 updateView();
1623} 1625}
1624 1626
1625void CalendarView::archiveCalendar() 1627void CalendarView::archiveCalendar()
1626{ 1628{
1627 mDialogManager->showArchiveDialog(); 1629 mDialogManager->showArchiveDialog();
@@ -2280,49 +2282,49 @@ void CalendarView::beamIncidenceList(QPtrList<Incidence> delSel )
2280 if ( beamDialog->beamLocal() ) 2282 if ( beamDialog->beamLocal() )
2281 cal->setLocalTime(); 2283 cal->setLocalTime();
2282 else 2284 else
2283 cal->setTimeZoneId(KOPrefs::instance()->mTimeZoneId); 2285 cal->setTimeZoneId(KOPrefs::instance()->mTimeZoneId);
2284 Incidence *incidence = delSel.first(); 2286 Incidence *incidence = delSel.first();
2285 bool addText = false; 2287 bool addText = false;
2286 if ( delSel.count() < 10 ) 2288 if ( delSel.count() < 10 )
2287 addText = true; 2289 addText = true;
2288 else { 2290 else {
2289 description.sprintf(i18n(" %d items?"),delSel.count() ); 2291 description.sprintf(i18n(" %d items?"),delSel.count() );
2290 } 2292 }
2291 while ( incidence ) { 2293 while ( incidence ) {
2292 Incidence *in = incidence->clone(); 2294 Incidence *in = incidence->clone();
2293 if ( addText ) 2295 if ( addText )
2294 description += in->summary() + "\n"; 2296 description += in->summary() + "\n";
2295 cal->addIncidence( in ); 2297 cal->addIncidence( in );
2296 incidence = delSel.next(); 2298 incidence = delSel.next();
2297 } 2299 }
2298 if ( beamDialog->beamVcal() ) { 2300 if ( beamDialog->beamVcal() ) {
2299 fn += ".vcs"; 2301 fn += ".vcs";
2300 FileStorage storage( cal, fn, new VCalFormat ); 2302 FileStorage storage( cal, fn, new VCalFormat );
2301 storage.save(); 2303 storage.save();
2302 } else { 2304 } else {
2303 fn += ".ics"; 2305 fn += ".ics";
2304 FileStorage storage( cal, fn, new ICalFormat( KOPrefs::instance()->mUseQuicksave) ); 2306 FileStorage storage( cal, fn, new ICalFormat( ) );
2305 storage.save(); 2307 storage.save();
2306 } 2308 }
2307 delete cal; 2309 delete cal;
2308 mes = i18n("KO/Pi: Ready for beaming"); 2310 mes = i18n("KO/Pi: Ready for beaming");
2309 setCaption(mes); 2311 setCaption(mes);
2310 2312
2311#ifndef DESKTOP_VERSION 2313#ifndef DESKTOP_VERSION
2312 Ir *ir = new Ir( this ); 2314 Ir *ir = new Ir( this );
2313 connect( ir, SIGNAL( done( Ir * ) ), this, SLOT( beamDone( Ir * ) ) ); 2315 connect( ir, SIGNAL( done( Ir * ) ), this, SLOT( beamDone( Ir * ) ) );
2314 ir->send( fn, description, "text/x-vCalendar" ); 2316 ir->send( fn, description, "text/x-vCalendar" );
2315#endif 2317#endif
2316 } 2318 }
2317} 2319}
2318void CalendarView::beamDone( Ir *ir ) 2320void CalendarView::beamDone( Ir *ir )
2319{ 2321{
2320#ifndef DESKTOP_VERSION 2322#ifndef DESKTOP_VERSION
2321 delete ir; 2323 delete ir;
2322#endif 2324#endif
2323} 2325}
2324 2326
2325void CalendarView::moveIncidence(Incidence * inc ) 2327void CalendarView::moveIncidence(Incidence * inc )
2326{ 2328{
2327 if ( !inc ) return; 2329 if ( !inc ) return;
2328 // qDebug("showDatePickerForIncidence( ) "); 2330 // qDebug("showDatePickerForIncidence( ) ");
@@ -2835,49 +2837,49 @@ void CalendarView::action_mail()
2835{ 2837{
2836#ifndef KORG_NOMAIL 2838#ifndef KORG_NOMAIL
2837 KOMailClient mailClient; 2839 KOMailClient mailClient;
2838 2840
2839 Incidence *incidence = currentSelection(); 2841 Incidence *incidence = currentSelection();
2840 2842
2841 if (!incidence) { 2843 if (!incidence) {
2842 KMessageBox::sorry(this,i18n("Can't generate mail:\nNo event selected.")); 2844 KMessageBox::sorry(this,i18n("Can't generate mail:\nNo event selected."));
2843 return; 2845 return;
2844 } 2846 }
2845 if(incidence->attendeeCount() == 0 ) { 2847 if(incidence->attendeeCount() == 0 ) {
2846 KMessageBox::sorry(this, 2848 KMessageBox::sorry(this,
2847 i18n("Can't generate mail:\nNo attendees defined.\n")); 2849 i18n("Can't generate mail:\nNo attendees defined.\n"));
2848 return; 2850 return;
2849 } 2851 }
2850 2852
2851 CalendarLocal cal_tmp; 2853 CalendarLocal cal_tmp;
2852 Event *event = 0; 2854 Event *event = 0;
2853 Event *ev = 0; 2855 Event *ev = 0;
2854 if ( incidence && incidence->type() == "Event" ) { 2856 if ( incidence && incidence->type() == "Event" ) {
2855 event = static_cast<Event *>(incidence); 2857 event = static_cast<Event *>(incidence);
2856 ev = new Event(*event); 2858 ev = new Event(*event);
2857 cal_tmp.addEvent(ev); 2859 cal_tmp.addEvent(ev);
2858 } 2860 }
2859 ICalFormat mForm( KOPrefs::instance()->mUseQuicksave); 2861 ICalFormat mForm();
2860 QString attachment = mForm.toString( &cal_tmp ); 2862 QString attachment = mForm.toString( &cal_tmp );
2861 if (ev) delete(ev); 2863 if (ev) delete(ev);
2862 2864
2863 mailClient.mailAttendees(currentSelection(), attachment); 2865 mailClient.mailAttendees(currentSelection(), attachment);
2864 2866
2865#endif 2867#endif
2866 2868
2867#if 0 2869#if 0
2868 Event *anEvent = 0; 2870 Event *anEvent = 0;
2869 if (mViewManager->currentView()->isEventView()) { 2871 if (mViewManager->currentView()->isEventView()) {
2870 anEvent = dynamic_cast<Event *>((mViewManager->currentView()->selectedIncidences()).first()); 2872 anEvent = dynamic_cast<Event *>((mViewManager->currentView()->selectedIncidences()).first());
2871 } 2873 }
2872 2874
2873 if (!anEvent) { 2875 if (!anEvent) {
2874 KMessageBox::sorry(this,i18n("Can't generate mail:\nNo event selected.")); 2876 KMessageBox::sorry(this,i18n("Can't generate mail:\nNo event selected."));
2875 return; 2877 return;
2876 } 2878 }
2877 if(anEvent->attendeeCount() == 0 ) { 2879 if(anEvent->attendeeCount() == 0 ) {
2878 KMessageBox::sorry(this, 2880 KMessageBox::sorry(this,
2879 i18n("Can't generate mail:\nNo attendees defined.\n")); 2881 i18n("Can't generate mail:\nNo attendees defined.\n"));
2880 return; 2882 return;
2881 } 2883 }
2882 2884
2883 mailobject.emailEvent(anEvent); 2885 mailobject.emailEvent(anEvent);
@@ -3120,49 +3122,49 @@ void CalendarView::print()
3120#endif 3122#endif
3121} 3123}
3122 3124
3123void CalendarView::printPreview() 3125void CalendarView::printPreview()
3124{ 3126{
3125#ifndef KORG_NOPRINTER 3127#ifndef KORG_NOPRINTER
3126 kdDebug() << "CalendarView::printPreview()" << endl; 3128 kdDebug() << "CalendarView::printPreview()" << endl;
3127 3129
3128 createPrinter(); 3130 createPrinter();
3129 3131
3130 DateList tmpDateList = mNavigator->selectedDates(); 3132 DateList tmpDateList = mNavigator->selectedDates();
3131 3133
3132 mViewManager->currentView()->printPreview(mCalPrinter,tmpDateList.first(), 3134 mViewManager->currentView()->printPreview(mCalPrinter,tmpDateList.first(),
3133 tmpDateList.last()); 3135 tmpDateList.last());
3134#endif 3136#endif
3135} 3137}
3136 3138
3137void CalendarView::exportICalendar() 3139void CalendarView::exportICalendar()
3138{ 3140{
3139 QString filename = KFileDialog::getSaveFileName("icalout.ics",i18n("*.ics|ICalendars"),this); 3141 QString filename = KFileDialog::getSaveFileName("icalout.ics",i18n("*.ics|ICalendars"),this);
3140 3142
3141 // Force correct extension 3143 // Force correct extension
3142 if (filename.right(4) != ".ics") filename += ".ics"; 3144 if (filename.right(4) != ".ics") filename += ".ics";
3143 3145
3144 FileStorage storage( mCalendar, filename, new ICalFormat( KOPrefs::instance()->mUseQuicksave) ); 3146 FileStorage storage( mCalendar, filename, new ICalFormat() );
3145 storage.save(); 3147 storage.save();
3146} 3148}
3147 3149
3148bool CalendarView::exportVCalendar( QString filename ) 3150bool CalendarView::exportVCalendar( QString filename )
3149{ 3151{
3150 if (mCalendar->journals().count() > 0) { 3152 if (mCalendar->journals().count() > 0) {
3151 int result = KMessageBox::warningContinueCancel(this, 3153 int result = KMessageBox::warningContinueCancel(this,
3152 i18n("The journal entries can not be\nexported to a vCalendar file."), 3154 i18n("The journal entries can not be\nexported to a vCalendar file."),
3153 i18n("Data Loss Warning"),i18n("Proceed"),i18n("Cancel"), 3155 i18n("Data Loss Warning"),i18n("Proceed"),i18n("Cancel"),
3154 true); 3156 true);
3155 if (result != KMessageBox::Continue) return false; 3157 if (result != KMessageBox::Continue) return false;
3156 } 3158 }
3157 3159
3158 //QString filename = KFileDialog::getSaveFileName("vcalout.vcs",i18n("*.vcs|VCalendars"),this); 3160 //QString filename = KFileDialog::getSaveFileName("vcalout.vcs",i18n("*.vcs|VCalendars"),this);
3159 3161
3160 // Force correct extension 3162 // Force correct extension
3161 if (filename.right(4) != ".vcs") filename += ".vcs"; 3163 if (filename.right(4) != ".vcs") filename += ".vcs";
3162 3164
3163 FileStorage storage( mCalendar, filename, new VCalFormat ); 3165 FileStorage storage( mCalendar, filename, new VCalFormat );
3164 return storage.save(); 3166 return storage.save();
3165 3167
3166} 3168}
3167 3169
3168void CalendarView::eventUpdated(Incidence *) 3170void CalendarView::eventUpdated(Incidence *)
diff --git a/korganizer/koprefs.cpp b/korganizer/koprefs.cpp
index 0034715..e0623d5 100644
--- a/korganizer/koprefs.cpp
+++ b/korganizer/koprefs.cpp
@@ -203,49 +203,48 @@ KOPrefs::KOPrefs() :
203#else 203#else
204 QString hdp= locateLocal("data","korganizer")+"/"; 204 QString hdp= locateLocal("data","korganizer")+"/";
205#endif 205#endif
206// addItemString("RemoteIP",&mRemoteIP, "192.168.0.65"); 206// addItemString("RemoteIP",&mRemoteIP, "192.168.0.65");
207// addItemString("RemoteUser",&mRemoteUser, "zaurus"); 207// addItemString("RemoteUser",&mRemoteUser, "zaurus");
208// addItemString("RemotePassWd",&mRemotePassWd, ""); 208// addItemString("RemotePassWd",&mRemotePassWd, "");
209// addItemString("RemoteFile", &mRemoteFile, hdp+"mycalendar.ics"); 209// addItemString("RemoteFile", &mRemoteFile, hdp+"mycalendar.ics");
210// addItemString("LocalTempFile",&mLocalTempFile, "/tmp/tempsyncfile.ics" ); 210// addItemString("LocalTempFile",&mLocalTempFile, "/tmp/tempsyncfile.ics" );
211 211
212 212
213 KPrefs::setCurrentGroup("LoadSaveFileNames"); 213 KPrefs::setCurrentGroup("LoadSaveFileNames");
214 214
215 addItemString("LastImportFile", &mLastImportFile ,hdp +"import.ics" ); 215 addItemString("LastImportFile", &mLastImportFile ,hdp +"import.ics" );
216 addItemString("LastVcalFile", &mLastVcalFile ,hdp +"export.vcs" ); 216 addItemString("LastVcalFile", &mLastVcalFile ,hdp +"export.vcs" );
217 addItemString("LastSaveFile", &mLastSaveFile ,hdp +"mybackup.ics" ); 217 addItemString("LastSaveFile", &mLastSaveFile ,hdp +"mybackup.ics" );
218 addItemString("LastLoadFile", &mLastLoadFile ,hdp +"mybackup.ics" ); 218 addItemString("LastLoadFile", &mLastLoadFile ,hdp +"mybackup.ics" );
219 addItemString("LastSyncedLocalFile", &mLastSyncedLocalFile ,hdp +"lastsync.ics" ); 219 addItemString("LastSyncedLocalFile", &mLastSyncedLocalFile ,hdp +"lastsync.ics" );
220 220
221 221
222 KPrefs::setCurrentGroup("Locale"); 222 KPrefs::setCurrentGroup("Locale");
223 addItemInt("PreferredLanguage",&mPreferredLanguage,0); 223 addItemInt("PreferredLanguage",&mPreferredLanguage,0);
224 addItemInt("PreferredTime",&mPreferredTime,0); 224 addItemInt("PreferredTime",&mPreferredTime,0);
225 addItemInt("PreferredDate",&mPreferredDate,0); 225 addItemInt("PreferredDate",&mPreferredDate,0);
226 addItemBool("WeekStartsOnSunday",&mWeekStartsOnSunday,false); 226 addItemBool("WeekStartsOnSunday",&mWeekStartsOnSunday,false);
227 addItemBool("QuickSavingWOUnicode",&mUseQuicksave,false);
228 addItemBool("ShortDateInViewer",&mShortDateInViewer,false); 227 addItemBool("ShortDateInViewer",&mShortDateInViewer,false);
229 addItemString("UserDateFormatLong", &mUserDateFormatLong, "%A %d %b %y"); 228 addItemString("UserDateFormatLong", &mUserDateFormatLong, "%A %d %b %y");
230 addItemString("UserDateFormatShort", &mUserDateFormatShort, "%aK %d.%m.%y"); 229 addItemString("UserDateFormatShort", &mUserDateFormatShort, "%aK %d.%m.%y");
231 230
232 231
233 KPrefs::setCurrentGroup("Colors"); 232 KPrefs::setCurrentGroup("Colors");
234 addItemColor("Holiday Color",&mHolidayColor,defaultHolidayColor); 233 addItemColor("Holiday Color",&mHolidayColor,defaultHolidayColor);
235 addItemColor("Highlight Color",&mHighlightColor,defaultHighlightColor); 234 addItemColor("Highlight Color",&mHighlightColor,defaultHighlightColor);
236 addItemColor("Event Color",&mEventColor,mDefaultCategoryColor); 235 addItemColor("Event Color",&mEventColor,mDefaultCategoryColor);
237 addItemColor("Agenda Background Color",&mAgendaBgColor,defaultAgendaBgColor); 236 addItemColor("Agenda Background Color",&mAgendaBgColor,defaultAgendaBgColor);
238 addItemColor("WorkingHours Color",&mWorkingHoursColor,defaultWorkingHoursColor); 237 addItemColor("WorkingHours Color",&mWorkingHoursColor,defaultWorkingHoursColor);
239 addItemColor("Todo due today Color",&mTodoDueTodayColor,defaultTodoDueTodayColor); 238 addItemColor("Todo due today Color",&mTodoDueTodayColor,defaultTodoDueTodayColor);
240 addItemColor("Todo overdue Color",&mTodoOverdueColor,defaultTodoOverdueColor); 239 addItemColor("Todo overdue Color",&mTodoOverdueColor,defaultTodoOverdueColor);
241 addItemColor("MonthViewEvenColor",&mMonthViewEvenColor,QColor( 160,160,255 )); 240 addItemColor("MonthViewEvenColor",&mMonthViewEvenColor,QColor( 160,160,255 ));
242 addItemColor("MonthViewOddColor",&mMonthViewOddColor,QColor( 160,255,160 )); 241 addItemColor("MonthViewOddColor",&mMonthViewOddColor,QColor( 160,255,160 ));
243 addItemColor("MonthViewHolidayColor",&mMonthViewHolidayColor,QColor( 255,160,160 )); 242 addItemColor("MonthViewHolidayColor",&mMonthViewHolidayColor,QColor( 255,160,160 ));
244 addItemBool("MonthViewUsesDayColors",&mMonthViewUsesDayColors,true); 243 addItemBool("MonthViewUsesDayColors",&mMonthViewUsesDayColors,true);
245 addItemBool("MonthViewSatSunTog",&mMonthViewSatSunTog,true); 244 addItemBool("MonthViewSatSunTog",&mMonthViewSatSunTog,true);
246 addItemBool("HightlightDateTimeEdit",&mHightlightDateTimeEdit,false); 245 addItemBool("HightlightDateTimeEdit",&mHightlightDateTimeEdit,false);
247 addItemColor("AppColor1",&mAppColor1,QColor( 130,170,255 )); 246 addItemColor("AppColor1",&mAppColor1,QColor( 130,170,255 ));
248 addItemColor("AppColor2",&mAppColor2,QColor( 174,216,255 )); 247 addItemColor("AppColor2",&mAppColor2,QColor( 174,216,255 ));
249 addItemBool("UseAppColors",&mUseAppColors,false); 248 addItemBool("UseAppColors",&mUseAppColors,false);
250 249
251 250
diff --git a/korganizer/koprefs.h b/korganizer/koprefs.h
index 696433e..7abd741 100644
--- a/korganizer/koprefs.h
+++ b/korganizer/koprefs.h
@@ -245,49 +245,48 @@ class KOPrefs : public KPimPrefs
245 245
246 QStringList mTodoTemplates; 246 QStringList mTodoTemplates;
247 QStringList mEventTemplates; 247 QStringList mEventTemplates;
248 248
249 int mDestination; 249 int mDestination;
250 250
251 251
252 bool mEditOnDoubleClick; 252 bool mEditOnDoubleClick;
253 bool mViewChangeHoldFullscreen; 253 bool mViewChangeHoldFullscreen;
254 bool mViewChangeHoldNonFullscreen; 254 bool mViewChangeHoldNonFullscreen;
255 bool mCenterOnCurrentTime; 255 bool mCenterOnCurrentTime;
256 bool mSetTimeToDayStartAt; 256 bool mSetTimeToDayStartAt;
257 bool mHighlightCurrentDay; 257 bool mHighlightCurrentDay;
258 bool mUseHighlightLightColor; 258 bool mUseHighlightLightColor;
259 bool mListViewMonthTimespan; 259 bool mListViewMonthTimespan;
260 bool mWNViewShowsParents; 260 bool mWNViewShowsParents;
261 bool mWNViewShowLocation; 261 bool mWNViewShowLocation;
262 bool mTodoViewShowsPercentage; 262 bool mTodoViewShowsPercentage;
263 bool mTodoViewUsesCatColors; 263 bool mTodoViewUsesCatColors;
264 bool mTodoViewUsesSmallFont; 264 bool mTodoViewUsesSmallFont;
265 bool mTodoViewUsesForegroundColor; 265 bool mTodoViewUsesForegroundColor;
266 bool mMonthViewUsesForegroundColor; 266 bool mMonthViewUsesForegroundColor;
267 267
268 bool mHightlightDateTimeEdit; 268 bool mHightlightDateTimeEdit;
269 bool mUseQuicksave;
270 bool mShortDateInViewer; 269 bool mShortDateInViewer;
271 270
272 QStringList mLocationDefaults; 271 QStringList mLocationDefaults;
273 QStringList mEventSummaryUser; 272 QStringList mEventSummaryUser;
274 QStringList mTodoSummaryUser; 273 QStringList mTodoSummaryUser;
275 274
276 bool mUseInternalAlarmNotification; 275 bool mUseInternalAlarmNotification;
277 int mAlarmPlayBeeps; 276 int mAlarmPlayBeeps;
278 int mAlarmSuspendTime; 277 int mAlarmSuspendTime;
279 int mAlarmSuspendCount; 278 int mAlarmSuspendCount;
280 int mAlarmBeepInterval; 279 int mAlarmBeepInterval;
281 280
282 QString mPassiveSyncPort; 281 QString mPassiveSyncPort;
283 QString mActiveSyncPort; 282 QString mActiveSyncPort;
284 QString mActiveSyncIP; 283 QString mActiveSyncIP;
285 284
286 285
287 //US I copied the following settings into KPimGlobalPrefs 286 //US I copied the following settings into KPimGlobalPrefs
288 // that allows us later to easily remove the settings from here. 287 // that allows us later to easily remove the settings from here.
289 int mPreferredDate; 288 int mPreferredDate;
290 QString mUserDateFormatLong; 289 QString mUserDateFormatLong;
291 QString mUserDateFormatShort; 290 QString mUserDateFormatShort;
292 int mPreferredLanguage; 291 int mPreferredLanguage;
293 int mPreferredTime; 292 int mPreferredTime;
diff --git a/korganizer/mainwindow.cpp b/korganizer/mainwindow.cpp
index 5aa75f5..43ee2d7 100644
--- a/korganizer/mainwindow.cpp
+++ b/korganizer/mainwindow.cpp
@@ -1931,75 +1931,70 @@ void MainWindow::enableQuick()
1931 if ( ! ok ) { 1931 if ( ! ok ) {
1932 KMessageBox::information( this, i18n("No valid port")); 1932 KMessageBox::information( this, i18n("No valid port"));
1933 return; 1933 return;
1934 } 1934 }
1935 //qDebug("port %d ", port); 1935 //qDebug("port %d ", port);
1936 mServerSocket = new KServerSocket ( passWordPiSync, port ,1 ); 1936 mServerSocket = new KServerSocket ( passWordPiSync, port ,1 );
1937 mServerSocket->setFileName( defaultFileName() ); 1937 mServerSocket->setFileName( defaultFileName() );
1938 //qDebug("connected "); 1938 //qDebug("connected ");
1939 if ( !mServerSocket->ok() ) { 1939 if ( !mServerSocket->ok() ) {
1940 qWarning("Failed to bind to port %d", port); 1940 qWarning("Failed to bind to port %d", port);
1941 delete mServerSocket; 1941 delete mServerSocket;
1942 mServerSocket = 0; 1942 mServerSocket = 0;
1943 return; 1943 return;
1944 } 1944 }
1945 connect( mServerSocket, SIGNAL ( saveFile() ), this, SLOT ( save() ) ); 1945 connect( mServerSocket, SIGNAL ( saveFile() ), this, SLOT ( save() ) );
1946 connect( mServerSocket, SIGNAL ( file_received( bool ) ), this, SLOT ( getFile( bool ) ) ); 1946 connect( mServerSocket, SIGNAL ( file_received( bool ) ), this, SLOT ( getFile( bool ) ) );
1947} 1947}
1948 1948
1949void MainWindow::getFile( bool success ) 1949void MainWindow::getFile( bool success )
1950{ 1950{
1951 if ( ! success ) { 1951 if ( ! success ) {
1952 setCaption( i18n("Error receiving file. Nothing changed!") ); 1952 setCaption( i18n("Error receiving file. Nothing changed!") );
1953 return; 1953 return;
1954 } 1954 }
1955 // pending adjust time for watchSavedFile() 1955 mView->watchSavedFile();
1956 //mView->watchSavedFile();
1957 mView->openCalendar( defaultFileName() ); 1956 mView->openCalendar( defaultFileName() );
1958 setCaption( i18n("Pi-Sync successful!") ); 1957 setCaption( i18n("Pi-Sync successful!") );
1959 1958
1960} 1959}
1961 1960
1962 1961
1963void MainWindow::syncPi() 1962void MainWindow::syncPi()
1964{ 1963{
1965 qApp->processEvents(); 1964 qApp->processEvents();
1966 performQuickQuick();
1967}
1968
1969void MainWindow::performQuickQuick()
1970{
1971 bool ok; 1965 bool ok;
1972 Q_UINT16 port = KOPrefs::instance()->mActiveSyncPort.toUInt(&ok); 1966 Q_UINT16 port = KOPrefs::instance()->mActiveSyncPort.toUInt(&ok);
1973 if ( ! ok ) { 1967 if ( ! ok ) {
1974 setCaption( i18n("Sorry, no valid port.Syncing cancelled.") ); 1968 setCaption( i18n("Sorry, no valid port.Syncing cancelled.") );
1975 return; 1969 return;
1976 } 1970 }
1977 KCommandSocket* commandSocket = new KCommandSocket( mPassWordPiSync, port, KOPrefs::instance()->mActiveSyncIP, this ); 1971 KCommandSocket* commandSocket = new KCommandSocket( mPassWordPiSync, port, KOPrefs::instance()->mActiveSyncIP, this );
1978 connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int )), this, SLOT(deleteCommandSocket(KCommandSocket*, int)) ); 1972 connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int )), this, SLOT(deleteCommandSocket(KCommandSocket*, int)) );
1979 setCaption( i18n("Sending request for remote file ...") ); 1973 setCaption( i18n("Sending request for remote file ...") );
1980 commandSocket->readFile( syncFileName() ); 1974 commandSocket->readFile( syncFileName() );
1981} 1975}
1976
1982void MainWindow::deleteCommandSocket(KCommandSocket*s, int state) 1977void MainWindow::deleteCommandSocket(KCommandSocket*s, int state)
1983{ 1978{
1984 qDebug("MainWindow::deleteCommandSocket %d", state); 1979 qDebug("MainWindow::deleteCommandSocket %d", state);
1985 1980
1986 //enum { success, errorW, errorR, quiet }; 1981 //enum { success, errorW, errorR, quiet };
1987 if ( state == KCommandSocket::errorR ) { 1982 if ( state == KCommandSocket::errorR ) {
1988 setCaption( i18n("ERROR: Receiving remote file failed.") ); 1983 setCaption( i18n("ERROR: Receiving remote file failed.") );
1989 delete s; 1984 delete s;
1990 KCommandSocket* commandSocket = new KCommandSocket( mPassWordPiSync, KOPrefs::instance()->mActiveSyncPort.toUInt(), KOPrefs::instance()->mActiveSyncIP, this ); 1985 KCommandSocket* commandSocket = new KCommandSocket( mPassWordPiSync, KOPrefs::instance()->mActiveSyncPort.toUInt(), KOPrefs::instance()->mActiveSyncIP, this );
1991 connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int)), this, SLOT(deleteCommandSocket(KCommandSocket*, int )) ); 1986 connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int)), this, SLOT(deleteCommandSocket(KCommandSocket*, int )) );
1992 commandSocket->sendStop(); 1987 commandSocket->sendStop();
1993 return; 1988 return;
1994 1989
1995 } else if ( state == KCommandSocket::errorW ) { 1990 } else if ( state == KCommandSocket::errorW ) {
1996 setCaption( i18n("ERROR:Writing back file failed.") ); 1991 setCaption( i18n("ERROR:Writing back file failed.") );
1997 1992
1998 } else if ( state == KCommandSocket::successR ) { 1993 } else if ( state == KCommandSocket::successR ) {
1999 QTimer::singleShot( 1, this , SLOT ( readFileFromSocket())); 1994 QTimer::singleShot( 1, this , SLOT ( readFileFromSocket()));
2000 1995
2001 } else if ( state == KCommandSocket::successW ) { 1996 } else if ( state == KCommandSocket::successW ) {
2002 setCaption( i18n("Pi-Sync succesful!") ); 1997 setCaption( i18n("Pi-Sync succesful!") );
2003 } 1998 }
2004 1999
2005 delete s; 2000 delete s;
@@ -2145,154 +2140,48 @@ void MainWindow::syncRemote( KSyncProfile* prof, bool ask)
2145// e->setReadOnly( false ); 2140// e->setReadOnly( false );
2146// e->setLocation( KOPrefs::instance()->mSyncProfileNames[mCurrentSyncProfile]); 2141// e->setLocation( KOPrefs::instance()->mSyncProfileNames[mCurrentSyncProfile]);
2147// e->setReadOnly( true ); 2142// e->setReadOnly( true );
2148 if ( KOPrefs::instance()->mWriteBackFile ) { 2143 if ( KOPrefs::instance()->mWriteBackFile ) {
2149 command = prof->getPostSyncCommand(); 2144 command = prof->getPostSyncCommand();
2150 int fi; 2145 int fi;
2151 if ( (fi = command.find("$PWD$")) > 0 ) { 2146 if ( (fi = command.find("$PWD$")) > 0 ) {
2152 QString pwd = getPassword(); 2147 QString pwd = getPassword();
2153 command = command.left( fi )+ pwd + command.mid( fi+5 ); 2148 command = command.left( fi )+ pwd + command.mid( fi+5 );
2154 2149
2155 } 2150 }
2156 setCaption ( i18n( "Writing back file ..." ) ); 2151 setCaption ( i18n( "Writing back file ..." ) );
2157 result = system ( command ); 2152 result = system ( command );
2158 qDebug("KO: Writing back file result: %d ", result); 2153 qDebug("KO: Writing back file result: %d ", result);
2159 if ( result != 0 ) { 2154 if ( result != 0 ) {
2160 setCaption ( i18n( "Writing back file result: " )+QString::number( result ) ); 2155 setCaption ( i18n( "Writing back file result: " )+QString::number( result ) );
2161 return; 2156 return;
2162 } else { 2157 } else {
2163 setCaption ( i18n( "Syncronization sucessfully completed" ) ); 2158 setCaption ( i18n( "Syncronization sucessfully completed" ) );
2164 } 2159 }
2165 } 2160 }
2166 } 2161 }
2167 return; 2162 return;
2168} 2163}
2169void MainWindow::syncSSH()
2170{
2171 // not used anymore
2172 QTime timer;
2173 timer.start();
2174 //qDebug("MainWindow::syncssh() ");
2175 KOPrefs *p = KOPrefs::instance();
2176 QString localFile = p->mLocalTempFile;
2177 QString remoteIP = p->mRemoteIP;
2178 QString remoteUser = p->mRemoteUser;
2179 QString remoteFile = p->mRemoteFile;
2180 if ( p->mUsePassWd && p->mRemotePassWd.length() > 0 )
2181 remoteUser += ":" + p->mRemotePassWd;
2182
2183 QString question = i18n("Do you really want\nto remote sync?\n \n") +
2184 i18n("IP: " ) +remoteIP +"\n" +
2185 i18n("User: " ) + remoteUser +"\n" ;
2186 int maxlen = 30;
2187 if ( QApplication::desktop()->width() > 320 )
2188 maxlen += 25;
2189 if ( remoteFile.length() > maxlen )
2190 question += i18n("Remote file:\n..." ) + remoteFile.right(maxlen) +"\n";
2191 else
2192 question += i18n("Remote file:\n " ) + remoteFile +"\n";
2193 if ( localFile.length() > maxlen )
2194 question += i18n("Local temp file:\n..." ) + localFile.right(maxlen) +"\n";
2195 else
2196 question += i18n("Local temp file:\n " ) + localFile +"\n";
2197
2198 if ( QMessageBox::information( this, i18n("KO/Pi Sync"),
2199 question,
2200 i18n("Yes"), i18n("No"),
2201 0, 0 ) != 0 )
2202 return;
2203 // if ( !p->mUsePassWd ) {
2204 // QString pass = getPassword();
2205 // if ( pass.length() > 0 )
2206 // remoteUser += ":" + pass;
2207 // }
2208 QString command = "scp " + remoteUser + "@" + remoteIP +":" + remoteFile +" " +localFile;
2209 setCaption ( i18n( "Copy remote file to local machine..." ) );
2210 int fileSize = 0;
2211 int result = system ( command );
2212 // 0 : okay
2213 // 256: no such file or dir
2214 //
2215 qDebug("KO: Remote copy result(0 = okay): %d ",result );
2216 if ( result != 0 ) {
2217 int len = maxlen;
2218 while ( len < command.length() ) {
2219 command.insert( len , "\n" );
2220 len += maxlen +2;
2221 }
2222 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) ;
2223 QMessageBox::information( this, i18n("KO/Pi Sync - ERROR"),
2224 question,
2225 i18n("Okay!")) ;
2226 setCaption ("KO/Pi");
2227 return;
2228 }
2229
2230
2231 setCaption ( i18n( "Copying succeed." ) );
2232 //mView->setSyncDevice("ssh-scp" );
2233 if ( syncWithFile(localFile , true ) ) {
2234// Event* e = mView->getLastSyncEvent();
2235// e->setReadOnly( false );
2236// e->setLocation( KOPrefs::instance()->mSyncProfileNames[mCurrentSyncProfile]);
2237// e->setReadOnly( true );
2238 if ( KOPrefs::instance()->mWriteBackFile ) {
2239 command = "scp " + localFile +" " +remoteUser + "@" + remoteIP +":" + remoteFile ;
2240 setCaption ( i18n( "Writing back file ..." ) );
2241 result = system ( command );
2242 if ( result != 0 ) {
2243 int len = maxlen;
2244 while ( len < command.length() ) {
2245 command.insert( len , "\n" );
2246 len += maxlen +2;
2247 }
2248 question = i18n("Sorry, the copy back command failed!\nCommand was:\n%1\n \nTry command on console to get more\ndetailed info about the reason.\n").arg (command) ;
2249 QMessageBox::information( this, i18n("KO/Pi Sync - ERROR"),
2250 question,
2251 i18n("Okay!")) ;
2252 setCaption ("KO/Pi");
2253 return;
2254 } else {
2255 setCaption ( i18n( "Syncronization sucessfully completed" ) );
2256 }
2257 }
2258 }
2259 return;
2260#if 0
2261 system ("scp zaurus@192.168.0.65:/home/zaurus/Applications/korganizer/mycalendar.ics /home/polo/Applications/korganizer/z_sync.ics");
2262 while ( timer.elapsed() < 5000 )
2263 qApp->processEvents();
2264
2265 qDebug("MainWindow::merging) ");
2266 mView->syncCalendar( "/home/polo/Applications/korganizer/z_sync.ics", 0 );
2267 while ( mBlockSaveFlag )
2268 qApp->processEvents();
2269 save();
2270 system ("scp /home/polo/Applications/korganizer/mycalendar.ics zaurus@192.168.0.65:/home/zaurus/Applications/korganizer/mycalendar.ics");
2271#endif
2272
2273}
2274
2275 2164
2276void MainWindow::syncSharp() 2165void MainWindow::syncSharp()
2277{ 2166{
2278 if ( mCalendarModifiedFlag ) 2167 if ( mCalendarModifiedFlag )
2279 save(); 2168 save();
2280 mView->syncSharp(); 2169 mView->syncSharp();
2281 slotModifiedChanged( true ); 2170 slotModifiedChanged( true );
2282 2171
2283} 2172}
2284void MainWindow::syncPhone() 2173void MainWindow::syncPhone()
2285{ 2174{
2286 if ( mCalendarModifiedFlag ) 2175 if ( mCalendarModifiedFlag )
2287 save(); 2176 save();
2288 mView->syncPhone(); 2177 mView->syncPhone();
2289 slotModifiedChanged( true ); 2178 slotModifiedChanged( true );
2290 2179
2291} 2180}
2292 2181
2293void MainWindow::printSel( ) 2182void MainWindow::printSel( )
2294{ 2183{
2295 mView->viewManager()->agendaView()->agenda()->printSelection(); 2184 mView->viewManager()->agendaView()->agenda()->printSelection();
2296} 2185}
2297 2186
2298void MainWindow::printCal() 2187void MainWindow::printCal()
diff --git a/korganizer/mainwindow.h b/korganizer/mainwindow.h
index 4da371e..ba627b9 100644
--- a/korganizer/mainwindow.h
+++ b/korganizer/mainwindow.h
@@ -124,81 +124,79 @@ class MainWindow : public QMainWindow
124 void aboutKnownBugs(); 124 void aboutKnownBugs();
125 125
126 void processIncidenceSelection( Incidence * ); 126 void processIncidenceSelection( Incidence * );
127 127
128 void importQtopia(); 128 void importQtopia();
129 void importBday(); 129 void importBday();
130 void importOL(); 130 void importOL();
131 void importIcal(); 131 void importIcal();
132 void importFile( QString, bool ); 132 void importFile( QString, bool );
133 void quickImportIcal(); 133 void quickImportIcal();
134 134
135 void slotModifiedChanged( bool ); 135 void slotModifiedChanged( bool );
136 136
137 void save(); 137 void save();
138 void configureToolBar( int ); 138 void configureToolBar( int );
139 void printSel(); 139 void printSel();
140 void printCal(); 140 void printCal();
141 void saveCalendar(); 141 void saveCalendar();
142 void loadCalendar(); 142 void loadCalendar();
143 void exportVCalendar(); 143 void exportVCalendar();
144 void fillFilterMenu(); 144 void fillFilterMenu();
145 void selectFilter( int ); 145 void selectFilter( int );
146 146
147 void slotSyncMenu( int ); 147 void slotSyncMenu( int );
148 void syncSSH();
149 void confSync(); 148 void confSync();
150 void syncSharp(); 149 void syncSharp();
151 void syncPhone(); 150 void syncPhone();
152 void syncPi(); 151 void syncPi();
153 void syncLocalFile(); 152 void syncLocalFile();
154 bool syncWithFile( QString, bool ); 153 bool syncWithFile( QString, bool );
155 void quickSyncLocalFile(); 154 void quickSyncLocalFile();
156 155
157 156
158 protected: 157 protected:
159 void displayText( QString, QString); 158 void displayText( QString, QString);
160 void displayFile( QString, QString); 159 void displayFile( QString, QString);
161 160
162 void enableIncidenceActions( bool ); 161 void enableIncidenceActions( bool );
163 162
164 private slots: 163 private slots:
165 QSocket* piSocket; 164 QSocket* piSocket;
166 QString piFileString; 165 QString piFileString;
167 QTime piTime; 166 QTime piTime;
168 void deleteCommandSocket(KCommandSocket* s, int state ); 167 void deleteCommandSocket(KCommandSocket* s, int state );
169 void fillSyncMenu(); 168 void fillSyncMenu();
170 void getFile( bool ); 169 void getFile( bool );
171 void readFileFromSocket(); 170 void readFileFromSocket();
172 private: 171 private:
173 //QTimer* mTimerCommandSocket; 172 //QTimer* mTimerCommandSocket;
174 QString mPassWordPiSync; 173 QString mPassWordPiSync;
175 KServerSocket * mServerSocket; 174 KServerSocket * mServerSocket;
176 bool mClosed; 175 bool mClosed;
177 void saveOnClose(); 176 void saveOnClose();
178 int mCurrentSyncProfile; 177 int mCurrentSyncProfile;
179 void enableQuick(); 178 void enableQuick();
180 void performQuickQuick();
181 void syncRemote( KSyncProfile* , bool ask = true); 179 void syncRemote( KSyncProfile* , bool ask = true);
182 bool mFlagKeyPressed; 180 bool mFlagKeyPressed;
183 bool mBlockAtStartup; 181 bool mBlockAtStartup;
184 QPEToolBar *iconToolBar; 182 QPEToolBar *iconToolBar;
185 void initActions(); 183 void initActions();
186 void setDefaultPreferences(); 184 void setDefaultPreferences();
187 void keyPressEvent ( QKeyEvent * ) ; 185 void keyPressEvent ( QKeyEvent * ) ;
188 void keyReleaseEvent ( QKeyEvent * ) ; 186 void keyReleaseEvent ( QKeyEvent * ) ;
189 QPopupMenu *configureToolBarMenu; 187 QPopupMenu *configureToolBarMenu;
190 QPopupMenu *selectFilterMenu; 188 QPopupMenu *selectFilterMenu;
191 QPopupMenu *configureAgendaMenu, *syncMenu; 189 QPopupMenu *configureAgendaMenu, *syncMenu;
192 CalendarLocal *mCalendar; 190 CalendarLocal *mCalendar;
193 CalendarView *mView; 191 CalendarView *mView;
194 QString getPassword(); 192 QString getPassword();
195 QAction *mNewSubTodoAction; 193 QAction *mNewSubTodoAction;
196 194
197 QAction *mShowAction; 195 QAction *mShowAction;
198 QAction *mEditAction; 196 QAction *mEditAction;
199 QAction *mDeleteAction; 197 QAction *mDeleteAction;
200 void closeEvent( QCloseEvent* ce ); 198 void closeEvent( QCloseEvent* ce );
201 SimpleAlarmClient mAlarmClient; 199 SimpleAlarmClient mAlarmClient;
202 QTimer mSaveTimer; 200 QTimer mSaveTimer;
203 bool mBlockSaveFlag; 201 bool mBlockSaveFlag;
204 bool mCalendarModifiedFlag; 202 bool mCalendarModifiedFlag;
diff --git a/libkcal/calstorage.h b/libkcal/calstorage.h
index 72972ea..82c8682 100644
--- a/libkcal/calstorage.h
+++ b/libkcal/calstorage.h
@@ -18,35 +18,35 @@
18 Boston, MA 02111-1307, USA. 18 Boston, MA 02111-1307, USA.
19*/ 19*/
20#ifndef KCAL_CALSTORAGE_H 20#ifndef KCAL_CALSTORAGE_H
21#define KCAL_CALSTORAGE_H 21#define KCAL_CALSTORAGE_H
22 22
23namespace KCal { 23namespace KCal {
24 24
25class Calendar; 25class Calendar;
26 26
27/** 27/**
28 This class provides the interface to the storage of a calendar. 28 This class provides the interface to the storage of a calendar.
29*/ 29*/
30class CalStorage 30class CalStorage
31{ 31{
32 public: 32 public:
33 CalStorage( Calendar *calendar ) 33 CalStorage( Calendar *calendar )
34 { 34 {
35 mCalendar = calendar; 35 mCalendar = calendar;
36 } 36 }
37 virtual ~CalStorage() {} 37 virtual ~CalStorage() {}
38 38
39 Calendar *calendar() const { return mCalendar; } 39 Calendar *calendar() const { return mCalendar; }
40 40
41 virtual bool open() = 0; 41 virtual bool open() = 0;
42 virtual bool load(bool = false ) = 0; 42 virtual bool load( ) = 0;
43 virtual bool save() = 0; 43 virtual bool save() = 0;
44 virtual bool close() = 0; 44 virtual bool close() = 0;
45 45
46 private: 46 private:
47 Calendar *mCalendar; 47 Calendar *mCalendar;
48}; 48};
49 49
50} 50}
51 51
52#endif 52#endif
diff --git a/libkcal/filestorage.cpp b/libkcal/filestorage.cpp
index 00c15d9..a139124 100644
--- a/libkcal/filestorage.cpp
+++ b/libkcal/filestorage.cpp
@@ -55,59 +55,59 @@ void FileStorage::setFileName( const QString &fileName )
55 55
56QString FileStorage::fileName()const 56QString FileStorage::fileName()const
57{ 57{
58 return mFileName; 58 return mFileName;
59} 59}
60 60
61 61
62void FileStorage::setSaveFormat( CalFormat *format ) 62void FileStorage::setSaveFormat( CalFormat *format )
63{ 63{
64 delete mSaveFormat; 64 delete mSaveFormat;
65 mSaveFormat = format; 65 mSaveFormat = format;
66} 66}
67 67
68CalFormat *FileStorage::saveFormat()const 68CalFormat *FileStorage::saveFormat()const
69{ 69{
70 return mSaveFormat; 70 return mSaveFormat;
71} 71}
72 72
73 73
74bool FileStorage::open() 74bool FileStorage::open()
75{ 75{
76 return true; 76 return true;
77} 77}
78 78
79bool FileStorage::load( bool quick ) 79bool FileStorage::load( )
80{ 80{
81 kdDebug(5800) << "FileStorage::load(): '" << mFileName << "'" << endl; 81 kdDebug(5800) << "FileStorage::load(): '" << mFileName << "'" << endl;
82 82
83 // do we want to silently accept this, or make some noise? Dunno... 83 // do we want to silently accept this, or make some noise? Dunno...
84 // it is a semantical thing vs. a practical thing. 84 // it is a semantical thing vs. a practical thing.
85 if (mFileName.isEmpty()) return false; 85 if (mFileName.isEmpty()) return false;
86 86
87 // Always try to load with iCalendar. It will detect, if it is actually a 87 // Always try to load with iCalendar. It will detect, if it is actually a
88 // vCalendar file. 88 // vCalendar file.
89 ICalFormat iCal (quick ); 89 ICalFormat iCal;
90 90
91 bool success = iCal.load( calendar(), mFileName); 91 bool success = iCal.load( calendar(), mFileName);
92 92
93 if ( !success ) { 93 if ( !success ) {
94 if ( iCal.exception() ) { 94 if ( iCal.exception() ) {
95// kdDebug(5800) << "---Error: " << mFormat->exception()->errorCode() << endl; 95// kdDebug(5800) << "---Error: " << mFormat->exception()->errorCode() << endl;
96 if ( iCal.exception()->errorCode() == ErrorFormat::CalVersion1 ) { 96 if ( iCal.exception()->errorCode() == ErrorFormat::CalVersion1 ) {
97 // Expected non vCalendar file, but detected vCalendar 97 // Expected non vCalendar file, but detected vCalendar
98 kdDebug(5800) << "FileStorage::load() Fallback to VCalFormat" << endl; 98 kdDebug(5800) << "FileStorage::load() Fallback to VCalFormat" << endl;
99 VCalFormat vCal; 99 VCalFormat vCal;
100 success = vCal.load( calendar(), mFileName ); 100 success = vCal.load( calendar(), mFileName );
101 calendar()->setLoadedProductId( vCal.productId() ); 101 calendar()->setLoadedProductId( vCal.productId() );
102 } else { 102 } else {
103 return false; 103 return false;
104 } 104 }
105 } else { 105 } else {
106 kdDebug(5800) << "Warning! There should be set an exception." << endl; 106 kdDebug(5800) << "Warning! There should be set an exception." << endl;
107 return false; 107 return false;
108 } 108 }
109 } else { 109 } else {
110// kdDebug(5800) << "---Success" << endl; 110// kdDebug(5800) << "---Success" << endl;
111 calendar()->setLoadedProductId( iCal.loadedProductId() ); 111 calendar()->setLoadedProductId( iCal.loadedProductId() );
112 } 112 }
113 113
diff --git a/libkcal/filestorage.h b/libkcal/filestorage.h
index e9dc15e..17010ac 100644
--- a/libkcal/filestorage.h
+++ b/libkcal/filestorage.h
@@ -23,36 +23,36 @@
23#include "calstorage.h" 23#include "calstorage.h"
24 24
25namespace KCal { 25namespace KCal {
26 26
27/** 27/**
28 This class provides a calendar storage as a local file. 28 This class provides a calendar storage as a local file.
29*/ 29*/
30class FileStorage : public CalStorage 30class FileStorage : public CalStorage
31{ 31{
32 public: 32 public:
33 FileStorage( Calendar *, const QString &fileName = QString::null, 33 FileStorage( Calendar *, const QString &fileName = QString::null,
34 CalFormat *format = 0 ); 34 CalFormat *format = 0 );
35 virtual ~FileStorage(); 35 virtual ~FileStorage();
36 36
37 void setFileName( const QString &mFileName ); 37 void setFileName( const QString &mFileName );
38 QString fileName()const; 38 QString fileName()const;
39 39
40 /** 40 /**
41 FileStorage takes ownership of format object. 41 FileStorage takes ownership of format object.
42 */ 42 */
43 void setSaveFormat( CalFormat * ); 43 void setSaveFormat( CalFormat * );
44 CalFormat *saveFormat()const; 44 CalFormat *saveFormat()const;
45 45
46 bool open(); 46 bool open();
47 bool load(bool quick = false ); 47 bool load( );
48 bool save(); 48 bool save();
49 bool close(); 49 bool close();
50 50
51 private: 51 private:
52 QString mFileName; 52 QString mFileName;
53 CalFormat *mSaveFormat; 53 CalFormat *mSaveFormat;
54}; 54};
55 55
56} 56}
57 57
58#endif 58#endif
diff --git a/libkcal/icalformat.cpp b/libkcal/icalformat.cpp
index f2e7dfc..3a2aac6 100644
--- a/libkcal/icalformat.cpp
+++ b/libkcal/icalformat.cpp
@@ -29,122 +29,102 @@
29#include <stdlib.h> 29#include <stdlib.h>
30 30
31#include <kdebug.h> 31#include <kdebug.h>
32#include <kglobal.h> 32#include <kglobal.h>
33#include <klocale.h> 33#include <klocale.h>
34 34
35extern "C" { 35extern "C" {
36 #include <ical.h> 36 #include <ical.h>
37 #include <icalss.h> 37 #include <icalss.h>
38 #include <icalparser.h> 38 #include <icalparser.h>
39 #include <icalrestriction.h> 39 #include <icalrestriction.h>
40} 40}
41 41
42#include "calendar.h" 42#include "calendar.h"
43#include "calendarlocal.h" 43#include "calendarlocal.h"
44#include "journal.h" 44#include "journal.h"
45 45
46#include "icalformat.h" 46#include "icalformat.h"
47#include "icalformatimpl.h" 47#include "icalformatimpl.h"
48 48
49#define _ICAL_VERSION "2.0" 49#define _ICAL_VERSION "2.0"
50 50
51using namespace KCal; 51using namespace KCal;
52 52
53ICalFormat::ICalFormat(bool quick ) 53ICalFormat::ICalFormat( )
54{ 54{
55 mQuicksave = false; //quick;
56 mImpl = new ICalFormatImpl( this ); 55 mImpl = new ICalFormatImpl( this );
57 tzOffsetMin = 0; 56 tzOffsetMin = 0;
58 //qDebug("new ICalFormat() "); 57 //qDebug("new ICalFormat() ");
59} 58}
60 59
61ICalFormat::~ICalFormat() 60ICalFormat::~ICalFormat()
62{ 61{
63 delete mImpl; 62 delete mImpl;
64 //qDebug("delete ICalFormat "); 63 //qDebug("delete ICalFormat ");
65} 64}
66 65
67bool ICalFormat::load( Calendar *calendar, const QString &fileName) 66bool ICalFormat::load( Calendar *calendar, const QString &fileName)
68{ 67{
69 68
70 clearException(); 69 clearException();
71 70
72 QFile file( fileName ); 71 QFile file( fileName );
73 if (!file.open( IO_ReadOnly ) ) { 72 if (!file.open( IO_ReadOnly ) ) {
74 setException(new ErrorFormat(ErrorFormat::LoadError)); 73 setException(new ErrorFormat(ErrorFormat::LoadError));
75 return false; 74 return false;
76 } 75 }
77 QTextStream ts( &file ); 76 QTextStream ts( &file );
78 QString text; 77 QString text;
79#if 0 78
80 if ( !mQuicksave ) {
81 qDebug("KO: No quickload!");
82 ts.setEncoding( QTextStream::Latin1 );
83 text = ts.read();
84 } else {
85 ts.setCodec( QTextCodec::codecForName("utf8") );
86 text = ts.read();
87 }
88#endif
89 ts.setEncoding( QTextStream::Latin1 ); 79 ts.setEncoding( QTextStream::Latin1 );
90 text = ts.read(); 80 text = ts.read();
91 file.close(); 81 file.close();
92 82
93 return fromString( calendar, text ); 83 return fromString( calendar, text );
94} 84}
95 85
96//#include <qdatetime.h> 86//#include <qdatetime.h>
97bool ICalFormat::save( Calendar *calendar, const QString &fileName ) 87bool ICalFormat::save( Calendar *calendar, const QString &fileName )
98{ 88{
99 //kdDebug(5800) << "ICalFormat::save(): " << fileName << endl; 89 //kdDebug(5800) << "ICalFormat::save(): " << fileName << endl;
100 //qDebug("ICalFormat::save "); 90 //qDebug("ICalFormat::save ");
101 clearException(); 91 clearException();
102 QString text = toString( calendar ); 92 QString text = toString( calendar );
103 //return false; 93 //return false;
104 // qDebug("to string takes ms: %d ",is.elapsed() ); 94 // qDebug("to string takes ms: %d ",is.elapsed() );
105 if ( text.isNull() ) return false; 95 if ( text.isNull() ) return false;
106 96
107 // TODO: write backup file 97 // TODO: write backup file
108 //is.restart(); 98 //is.restart();
109 QFile file( fileName ); 99 QFile file( fileName );
110 if (!file.open( IO_WriteOnly ) ) { 100 if (!file.open( IO_WriteOnly ) ) {
111 setException(new ErrorFormat(ErrorFormat::SaveError, 101 setException(new ErrorFormat(ErrorFormat::SaveError,
112 i18n("Could not open file '%1'").arg(fileName))); 102 i18n("Could not open file '%1'").arg(fileName)));
113 return false; 103 return false;
114 } 104 }
115 QTextStream ts( &file ); 105 QTextStream ts( &file );
116 106
117// #ifdef DESKTOP_VERSION
118// mQuicksave = false;
119// #endif
120// if ( mQuicksave ) {
121// ts << text.utf8();
122// } else {
123// ts.setEncoding( QTextStream::Latin1 );
124// ts << text;
125// //ts << text.latin1();
126// }
127 ts.setEncoding( QTextStream::Latin1 ); 107 ts.setEncoding( QTextStream::Latin1 );
128 ts << text; 108 ts << text;
129 file.close(); 109 file.close();
130 //qDebug("saving file takes ms: %d ", is.elapsed() ); 110 //qDebug("saving file takes ms: %d ", is.elapsed() );
131 return true; 111 return true;
132} 112}
133 113
134bool ICalFormat::fromString( Calendar *cal, const QString &text ) 114bool ICalFormat::fromString( Calendar *cal, const QString &text )
135{ 115{
136 setTimeZone( cal->timeZoneId(), !cal->isLocalTime() ); 116 setTimeZone( cal->timeZoneId(), !cal->isLocalTime() );
137 // qDebug("ICalFormat::fromString tz: %s ", cal->timeZoneId().latin1()); 117 // qDebug("ICalFormat::fromString tz: %s ", cal->timeZoneId().latin1());
138 // Get first VCALENDAR component. 118 // Get first VCALENDAR component.
139 // TODO: Handle more than one VCALENDAR or non-VCALENDAR top components 119 // TODO: Handle more than one VCALENDAR or non-VCALENDAR top components
140 icalcomponent *calendar; 120 icalcomponent *calendar;
141 121
142 //calendar = icalcomponent_new_from_string( text.local8Bit().data()); 122 //calendar = icalcomponent_new_from_string( text.local8Bit().data());
143 // good calendar = icalcomponent_new_from_string( text.utf8().data()); 123 // good calendar = icalcomponent_new_from_string( text.utf8().data());
144 calendar = icalcomponent_new_from_string( (char*)text.latin1()); 124 calendar = icalcomponent_new_from_string( (char*)text.latin1());
145 if (!calendar) { 125 if (!calendar) {
146 setException(new ErrorFormat(ErrorFormat::ParseErrorIcal)); 126 setException(new ErrorFormat(ErrorFormat::ParseErrorIcal));
147 return false; 127 return false;
148 } 128 }
149 129
150 bool success = true; 130 bool success = true;
diff --git a/libkcal/icalformat.h b/libkcal/icalformat.h
index 236efbf..485ab6e 100644
--- a/libkcal/icalformat.h
+++ b/libkcal/icalformat.h
@@ -19,49 +19,49 @@
19*/ 19*/
20#ifndef ICALFORMAT_H 20#ifndef ICALFORMAT_H
21#define ICALFORMAT_H 21#define ICALFORMAT_H
22 22
23#include <qstring.h> 23#include <qstring.h>
24 24
25#include "scheduler.h" 25#include "scheduler.h"
26 26
27#include "calformat.h" 27#include "calformat.h"
28 28
29namespace KCal { 29namespace KCal {
30 30
31class ICalFormatImpl; 31class ICalFormatImpl;
32 32
33/** 33/**
34 This class implements the iCalendar format. It provides methods for 34 This class implements the iCalendar format. It provides methods for
35 loading/saving/converting iCalendar format data into the internal KOrganizer 35 loading/saving/converting iCalendar format data into the internal KOrganizer
36 representation as Calendar and Events. 36 representation as Calendar and Events.
37 37
38 @short iCalendar format implementation 38 @short iCalendar format implementation
39*/ 39*/
40class ICalFormat : public CalFormat { 40class ICalFormat : public CalFormat {
41 public: 41 public:
42 /** Create new iCalendar format. */ 42 /** Create new iCalendar format. */
43 ICalFormat( bool quick = false ); 43 ICalFormat( );
44 virtual ~ICalFormat(); 44 virtual ~ICalFormat();
45 45
46 /** 46 /**
47 Loads a calendar on disk in iCalendar format into calendar. 47 Loads a calendar on disk in iCalendar format into calendar.
48 Returns true if successful, else returns false. Provides more error 48 Returns true if successful, else returns false. Provides more error
49 information by exception(). 49 information by exception().
50 @param calendar Calendar object to be filled. 50 @param calendar Calendar object to be filled.
51 @param fileName The name of the calendar file on disk. 51 @param fileName The name of the calendar file on disk.
52 */ 52 */
53 bool load( Calendar *, const QString &fileName ); 53 bool load( Calendar *, const QString &fileName );
54 /** 54 /**
55 Writes out the calendar to disk in iCalendar format. Returns true if 55 Writes out the calendar to disk in iCalendar format. Returns true if
56 successful and false on error. 56 successful and false on error.
57 57
58 @param calendar The Calendar object to be written. 58 @param calendar The Calendar object to be written.
59 @param fileName The name of the calendar file on disk. 59 @param fileName The name of the calendar file on disk.
60 */ 60 */
61 bool save( Calendar *, const QString &fileName ); 61 bool save( Calendar *, const QString &fileName );
62 62
63 /** 63 /**
64 Parse string and populate calendar with that information. 64 Parse string and populate calendar with that information.
65 */ 65 */
66 bool fromString( Calendar *, const QString & ); 66 bool fromString( Calendar *, const QString & );
67 /** 67 /**
@@ -83,34 +83,33 @@ class ICalFormat : public CalFormat {
83 /** 83 /**
84 Return recurrence as iCalendar formatted text. 84 Return recurrence as iCalendar formatted text.
85 */ 85 */
86 QString toString( Recurrence * ); 86 QString toString( Recurrence * );
87 /** 87 /**
88 Parse string and fill recurrence object with 88 Parse string and fill recurrence object with
89 that information 89 that information
90 */ 90 */
91 //bool fromString ( Recurrence *, const QString& ); 91 //bool fromString ( Recurrence *, const QString& );
92 92
93 /** Create a scheduling message for event \a e using method \m */ 93 /** Create a scheduling message for event \a e using method \m */
94 QString createScheduleMessage(IncidenceBase *e,Scheduler::Method m); 94 QString createScheduleMessage(IncidenceBase *e,Scheduler::Method m);
95 /** Parse scheduling message provided as string \s */ 95 /** Parse scheduling message provided as string \s */
96 ScheduleMessage *parseScheduleMessage( Calendar *, const QString &s); 96 ScheduleMessage *parseScheduleMessage( Calendar *, const QString &s);
97 97
98 /** Set id of used time zone and whether this time zone is UTC or not. */ 98 /** Set id of used time zone and whether this time zone is UTC or not. */
99 void setTimeZone( const QString &id, bool utc ); 99 void setTimeZone( const QString &id, bool utc );
100 QString timeZoneId() const; 100 QString timeZoneId() const;
101 int timeOffset(); 101 int timeOffset();
102 const char * tzString(); 102 const char * tzString();
103 bool utc() const; 103 bool utc() const;
104 104
105 private: 105 private:
106 ICalFormatImpl *mImpl; 106 ICalFormatImpl *mImpl;
107 bool mQuicksave;
108 QString mTimeZoneId; 107 QString mTimeZoneId;
109 QCString mTzString; 108 QCString mTzString;
110 int tzOffsetMin; 109 int tzOffsetMin;
111 bool mUtc; 110 bool mUtc;
112}; 111};
113 112
114} 113}
115 114
116#endif 115#endif