summaryrefslogtreecommitdiffabout
authorzautrix <zautrix>2004-10-05 13:34:33 (UTC)
committer zautrix <zautrix>2004-10-05 13:34:33 (UTC)
commit191ced43b27c047b0a39f0acdc8ba1f8a58817df (patch) (unidiff)
treed164ae32c16259d9a8d5c9fdfa74f975d1f10075
parenta946c09db6f71f595d8bdcb6b34ba3160c5497dc (diff)
downloadkdepimpi-191ced43b27c047b0a39f0acdc8ba1f8a58817df.zip
kdepimpi-191ced43b27c047b0a39f0acdc8ba1f8a58817df.tar.gz
kdepimpi-191ced43b27c047b0a39f0acdc8ba1f8a58817df.tar.bz2
fix for filewatch and vcal timezone
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/calendarview.cpp3
-rw-r--r--libkcal/vcalformat.cpp2
2 files changed, 3 insertions, 2 deletions
diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp
index 687943e..b1da144 100644
--- a/korganizer/calendarview.cpp
+++ b/korganizer/calendarview.cpp
@@ -1469,149 +1469,150 @@ bool CalendarView::importQtopia( const QString &categories,
1469 1469
1470#endif 1470#endif
1471 1471
1472} 1472}
1473 1473
1474void CalendarView::setSyncEventsReadOnly() 1474void CalendarView::setSyncEventsReadOnly()
1475{ 1475{
1476 Event * ev; 1476 Event * ev;
1477 QPtrList<Event> eL = mCalendar->rawEvents(); 1477 QPtrList<Event> eL = mCalendar->rawEvents();
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() ) { 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 loadedFileVersion = QDateTime::currentDateTime(); 1517 setLoadedFileVersion( QDateTime::currentDateTime().addSecs( -1 ));
1518 if ( filename != MainWindow::defaultFileName() ) { 1518 if ( filename != MainWindow::defaultFileName() ) {
1519 saveCalendar( MainWindow::defaultFileName() ); 1519 saveCalendar( MainWindow::defaultFileName() );
1520 watchSavedFile(); 1520 watchSavedFile();
1521 } 1521 }
1522 return true; 1522 return true;
1523 } else { 1523 } else {
1524 // while failing to load, the calendar object could 1524 // while failing to load, the calendar object could
1525 // have become partially populated. Clear it out. 1525 // have become partially populated. Clear it out.
1526 if ( !merge ) { 1526 if ( !merge ) {
1527 mCalendar->close(); 1527 mCalendar->close();
1528 mViewManager->setDocumentId( filename ); 1528 mViewManager->setDocumentId( filename );
1529 mDialogManager->setDocumentId( filename ); 1529 mDialogManager->setDocumentId( filename );
1530 mTodoList->setDocumentId( filename ); 1530 mTodoList->setDocumentId( filename );
1531 } 1531 }
1532 1532
1533 //KMessageBox::error(this,i18n("Couldn't load calendar\n '%1'.").arg(filename)); 1533 //KMessageBox::error(this,i18n("Couldn't load calendar\n '%1'.").arg(filename));
1534 1534
1535 QTimer::singleShot ( 1, this, SLOT ( showOpenError() ) ); 1535 QTimer::singleShot ( 1, this, SLOT ( showOpenError() ) );
1536 globalFlagBlockAgenda = 2; 1536 globalFlagBlockAgenda = 2;
1537 mCalendar->reInitAlarmSettings(); 1537 mCalendar->reInitAlarmSettings();
1538 setSyncEventsReadOnly(); 1538 setSyncEventsReadOnly();
1539 updateUnmanagedViews(); 1539 updateUnmanagedViews();
1540 updateView(); 1540 updateView();
1541 } 1541 }
1542 return false; 1542 return false;
1543} 1543}
1544void CalendarView::showOpenError() 1544void CalendarView::showOpenError()
1545{ 1545{
1546 KMessageBox::error(this,i18n("Couldn't load calendar\n.")); 1546 KMessageBox::error(this,i18n("Couldn't load calendar\n."));
1547} 1547}
1548void CalendarView::setLoadedFileVersion(QDateTime dt) 1548void CalendarView::setLoadedFileVersion(QDateTime dt)
1549{ 1549{
1550 loadedFileVersion = dt; 1550 loadedFileVersion = dt;
1551} 1551}
1552bool CalendarView::checkFileChanged(QString fn) 1552bool CalendarView::checkFileChanged(QString fn)
1553{ 1553{
1554 QFileInfo finf ( fn ); 1554 QFileInfo finf ( fn );
1555 if ( !finf.exists() ) 1555 if ( !finf.exists() )
1556 return true; 1556 return true;
1557 QDateTime dt = finf.lastModified (); 1557 QDateTime dt = finf.lastModified ();
1558 if ( dt <= loadedFileVersion ) 1558 if ( dt <= loadedFileVersion )
1559 return false; 1559 return false;
1560 return true; 1560 return true;
1561 1561
1562} 1562}
1563void CalendarView::watchSavedFile() 1563void CalendarView::watchSavedFile()
1564{ 1564{
1565 QFileInfo finf ( MainWindow::defaultFileName()); 1565 QFileInfo finf ( MainWindow::defaultFileName());
1566 if ( !finf.exists() ) 1566 if ( !finf.exists() )
1567 return; 1567 return;
1568 QDateTime dt = finf.lastModified (); 1568 QDateTime dt = finf.lastModified ();
1569 if ( dt < loadedFileVersion ) { 1569 if ( dt < loadedFileVersion ) {
1570 //qDebug("watch %s %s ", dt.toString().latin1(), loadedFileVersion.toString().latin1());
1570 QTimer::singleShot( 1000 , this, SLOT ( watchSavedFile() ) ); 1571 QTimer::singleShot( 1000 , this, SLOT ( watchSavedFile() ) );
1571 return; 1572 return;
1572 } 1573 }
1573 loadedFileVersion = dt; 1574 loadedFileVersion = dt;
1574} 1575}
1575 1576
1576bool CalendarView::checkFileVersion(QString fn) 1577bool CalendarView::checkFileVersion(QString fn)
1577{ 1578{
1578 QFileInfo finf ( fn ); 1579 QFileInfo finf ( fn );
1579 if ( !finf.exists() ) 1580 if ( !finf.exists() )
1580 return true; 1581 return true;
1581 QDateTime dt = finf.lastModified (); 1582 QDateTime dt = finf.lastModified ();
1582 //qDebug("loaded file version %s",loadedFileVersion.toString().latin1()); 1583 //qDebug("loaded file version %s",loadedFileVersion.toString().latin1());
1583 //qDebug("file on disk version %s",dt.toString().latin1()); 1584 //qDebug("file on disk version %s",dt.toString().latin1());
1584 if ( dt <= loadedFileVersion ) 1585 if ( dt <= loadedFileVersion )
1585 return true; 1586 return true;
1586 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)) , 1587 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)) ,
1587 i18n("KO/Pi Warning"),i18n("Overwrite"), 1588 i18n("KO/Pi Warning"),i18n("Overwrite"),
1588 i18n("Sync+save")); 1589 i18n("Sync+save"));
1589 1590
1590 if ( km == KMessageBox::Cancel ) 1591 if ( km == KMessageBox::Cancel )
1591 return false; 1592 return false;
1592 if ( km == KMessageBox::Yes ) 1593 if ( km == KMessageBox::Yes )
1593 return true; 1594 return true;
1594 1595
1595 setSyncDevice("deleteaftersync" ); 1596 setSyncDevice("deleteaftersync" );
1596 KOPrefs::instance()->mAskForPreferences = true; 1597 KOPrefs::instance()->mAskForPreferences = true;
1597 KOPrefs::instance()->mSyncAlgoPrefs = 3; 1598 KOPrefs::instance()->mSyncAlgoPrefs = 3;
1598 KOPrefs::instance()->mWriteBackFile = false; 1599 KOPrefs::instance()->mWriteBackFile = false;
1599 KOPrefs::instance()->mWriteBackExistingOnly = false; 1600 KOPrefs::instance()->mWriteBackExistingOnly = false;
1600 KOPrefs::instance()->mShowSyncSummary = false; 1601 KOPrefs::instance()->mShowSyncSummary = false;
1601 syncCalendar( fn, 3 ); 1602 syncCalendar( fn, 3 );
1602 Event * e = getLastSyncEvent(); 1603 Event * e = getLastSyncEvent();
1603 mCalendar->deleteEvent ( e ); 1604 mCalendar->deleteEvent ( e );
1604 updateView(); 1605 updateView();
1605 return true; 1606 return true;
1606} 1607}
1607 1608
1608bool CalendarView::saveCalendar( QString filename ) 1609bool CalendarView::saveCalendar( QString filename )
1609{ 1610{
1610 1611
1611 // Store back all unsaved data into calendar object 1612 // Store back all unsaved data into calendar object
1612 // qDebug("file %s %d ", filename.latin1() , mViewManager->currentView() ); 1613 // qDebug("file %s %d ", filename.latin1() , mViewManager->currentView() );
1613 if ( mViewManager->currentView() ) 1614 if ( mViewManager->currentView() )
1614 mViewManager->currentView()->flushView(); 1615 mViewManager->currentView()->flushView();
1615 1616
1616 //mStorage->setFileName( filename ); 1617 //mStorage->setFileName( filename );
1617 1618
diff --git a/libkcal/vcalformat.cpp b/libkcal/vcalformat.cpp
index 4727a7a..309c699 100644
--- a/libkcal/vcalformat.cpp
+++ b/libkcal/vcalformat.cpp
@@ -1439,97 +1439,97 @@ QString VCalFormat::qDateToISO(const QDate &qd)
1439 qd.year(), qd.month(), qd.day()); 1439 qd.year(), qd.month(), qd.day());
1440 return tmpStr; 1440 return tmpStr;
1441 1441
1442} 1442}
1443 1443
1444QString VCalFormat::qDateTimeToISO(const QDateTime &qdt, bool zulu) 1444QString VCalFormat::qDateTimeToISO(const QDateTime &qdt, bool zulu)
1445{ 1445{
1446 QString tmpStr; 1446 QString tmpStr;
1447 1447
1448 ASSERT(qdt.date().isValid()); 1448 ASSERT(qdt.date().isValid());
1449 ASSERT(qdt.time().isValid()); 1449 ASSERT(qdt.time().isValid());
1450 if (zulu && !useLocalTime ) { 1450 if (zulu && !useLocalTime ) {
1451 QDateTime tmpDT = qdt.addSecs ( -KGlobal::locale()->localTimeOffset( qdt )*60); 1451 QDateTime tmpDT = qdt.addSecs ( -KGlobal::locale()->localTimeOffset( qdt )*60);
1452 tmpStr.sprintf("%.2d%.2d%.2dT%.2d%.2d%.2dZ", 1452 tmpStr.sprintf("%.2d%.2d%.2dT%.2d%.2d%.2dZ",
1453 tmpDT.date().year(), tmpDT.date().month(), 1453 tmpDT.date().year(), tmpDT.date().month(),
1454 tmpDT.date().day(), tmpDT.time().hour(), 1454 tmpDT.date().day(), tmpDT.time().hour(),
1455 tmpDT.time().minute(), tmpDT.time().second()); 1455 tmpDT.time().minute(), tmpDT.time().second());
1456 } else { 1456 } else {
1457 tmpStr.sprintf("%.2d%.2d%.2dT%.2d%.2d%.2d", 1457 tmpStr.sprintf("%.2d%.2d%.2dT%.2d%.2d%.2d",
1458 qdt.date().year(), qdt.date().month(), 1458 qdt.date().year(), qdt.date().month(),
1459 qdt.date().day(), qdt.time().hour(), 1459 qdt.date().day(), qdt.time().hour(),
1460 qdt.time().minute(), qdt.time().second()); 1460 qdt.time().minute(), qdt.time().second());
1461 } 1461 }
1462 return tmpStr; 1462 return tmpStr;
1463} 1463}
1464 1464
1465QDateTime VCalFormat::ISOToQDateTime(const QString & dtStr) 1465QDateTime VCalFormat::ISOToQDateTime(const QString & dtStr)
1466{ 1466{
1467 QDate tmpDate; 1467 QDate tmpDate;
1468 QTime tmpTime; 1468 QTime tmpTime;
1469 QString tmpStr; 1469 QString tmpStr;
1470 int year, month, day, hour, minute, second; 1470 int year, month, day, hour, minute, second;
1471 1471
1472 tmpStr = dtStr; 1472 tmpStr = dtStr;
1473 year = tmpStr.left(4).toInt(); 1473 year = tmpStr.left(4).toInt();
1474 month = tmpStr.mid(4,2).toInt(); 1474 month = tmpStr.mid(4,2).toInt();
1475 day = tmpStr.mid(6,2).toInt(); 1475 day = tmpStr.mid(6,2).toInt();
1476 hour = tmpStr.mid(9,2).toInt(); 1476 hour = tmpStr.mid(9,2).toInt();
1477 minute = tmpStr.mid(11,2).toInt(); 1477 minute = tmpStr.mid(11,2).toInt();
1478 second = tmpStr.mid(13,2).toInt(); 1478 second = tmpStr.mid(13,2).toInt();
1479 tmpDate.setYMD(year, month, day); 1479 tmpDate.setYMD(year, month, day);
1480 tmpTime.setHMS(hour, minute, second); 1480 tmpTime.setHMS(hour, minute, second);
1481 1481
1482 ASSERT(tmpDate.isValid()); 1482 ASSERT(tmpDate.isValid());
1483 ASSERT(tmpTime.isValid()); 1483 ASSERT(tmpTime.isValid());
1484 QDateTime tmpDT(tmpDate, tmpTime); 1484 QDateTime tmpDT(tmpDate, tmpTime);
1485 // correct for GMT if string is in Zulu format 1485 // correct for GMT if string is in Zulu format
1486 if (dtStr.at(dtStr.length()-1) == 'Z') 1486 if (dtStr.at(dtStr.length()-1) == 'Z')
1487 tmpDT = tmpDT.addSecs(60*mCalendar->getTimeZone()); 1487 tmpDT = tmpDT.addSecs (KGlobal::locale()->localTimeOffset( tmpDT )*60);
1488 return tmpDT; 1488 return tmpDT;
1489} 1489}
1490 1490
1491QDate VCalFormat::ISOToQDate(const QString &dateStr) 1491QDate VCalFormat::ISOToQDate(const QString &dateStr)
1492{ 1492{
1493 int year, month, day; 1493 int year, month, day;
1494 1494
1495 year = dateStr.left(4).toInt(); 1495 year = dateStr.left(4).toInt();
1496 month = dateStr.mid(4,2).toInt(); 1496 month = dateStr.mid(4,2).toInt();
1497 day = dateStr.mid(6,2).toInt(); 1497 day = dateStr.mid(6,2).toInt();
1498 1498
1499 return(QDate(year, month, day)); 1499 return(QDate(year, month, day));
1500} 1500}
1501 1501
1502// take a raw vcalendar (i.e. from a file on disk, clipboard, etc. etc. 1502// take a raw vcalendar (i.e. from a file on disk, clipboard, etc. etc.
1503// and break it down from it's tree-like format into the dictionary format 1503// and break it down from it's tree-like format into the dictionary format
1504// that is used internally in the VCalFormat. 1504// that is used internally in the VCalFormat.
1505void VCalFormat::populate(VObject *vcal) 1505void VCalFormat::populate(VObject *vcal)
1506{ 1506{
1507 // this function will populate the caldict dictionary and other event 1507 // this function will populate the caldict dictionary and other event
1508 // lists. It turns vevents into Events and then inserts them. 1508 // lists. It turns vevents into Events and then inserts them.
1509 1509
1510 VObjectIterator i; 1510 VObjectIterator i;
1511 VObject *curVO, *curVOProp; 1511 VObject *curVO, *curVOProp;
1512 Event *anEvent; 1512 Event *anEvent;
1513 1513
1514 if ((curVO = isAPropertyOf(vcal, ICMethodProp)) != 0) { 1514 if ((curVO = isAPropertyOf(vcal, ICMethodProp)) != 0) {
1515 char *methodType = 0; 1515 char *methodType = 0;
1516 methodType = fakeCString(vObjectUStringZValue(curVO)); 1516 methodType = fakeCString(vObjectUStringZValue(curVO));
1517 kdDebug() << "This calendar is an iTIP transaction of type '" 1517 kdDebug() << "This calendar is an iTIP transaction of type '"
1518 << methodType << "'" << endl; 1518 << methodType << "'" << endl;
1519 delete methodType; 1519 delete methodType;
1520 } 1520 }
1521 1521
1522 // warn the user that we might have trouble reading non-known calendar. 1522 // warn the user that we might have trouble reading non-known calendar.
1523 if ((curVO = isAPropertyOf(vcal, VCProdIdProp)) != 0) { 1523 if ((curVO = isAPropertyOf(vcal, VCProdIdProp)) != 0) {
1524 char *s = fakeCString(vObjectUStringZValue(curVO)); 1524 char *s = fakeCString(vObjectUStringZValue(curVO));
1525 if (strcmp(productId().local8Bit(), s) != 0) 1525 if (strcmp(productId().local8Bit(), s) != 0)
1526 kdDebug() << "This vCalendar file was not created by KOrganizer " 1526 kdDebug() << "This vCalendar file was not created by KOrganizer "
1527 "or any other product we support. Loading anyway..." << endl; 1527 "or any other product we support. Loading anyway..." << endl;
1528 mLoadedProductId = s; 1528 mLoadedProductId = s;
1529 deleteStr(s); 1529 deleteStr(s);
1530 } 1530 }
1531 1531
1532 // warn the user we might have trouble reading this unknown version. 1532 // warn the user we might have trouble reading this unknown version.
1533 if ((curVO = isAPropertyOf(vcal, VCVersionProp)) != 0) { 1533 if ((curVO = isAPropertyOf(vcal, VCVersionProp)) != 0) {
1534 char *s = fakeCString(vObjectUStringZValue(curVO)); 1534 char *s = fakeCString(vObjectUStringZValue(curVO));
1535 if (strcmp(_VCAL_VERSION, s) != 0) 1535 if (strcmp(_VCAL_VERSION, s) != 0)