summaryrefslogtreecommitdiffabout
path: root/korganizer
Unidiff
Diffstat (limited to 'korganizer') (more/less context) (show whitespace changes)
-rw-r--r--korganizer/calendarview.cpp20
-rw-r--r--korganizer/calendarview.h1
-rw-r--r--korganizer/journalentry.cpp22
-rw-r--r--korganizer/journalentry.h3
-rw-r--r--korganizer/mainwindow.cpp2
5 files changed, 46 insertions, 2 deletions
diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp
index 940ea91..ccacc52 100644
--- a/korganizer/calendarview.cpp
+++ b/korganizer/calendarview.cpp
@@ -1430,99 +1430,106 @@ bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int
1430 while ( inR ) { 1430 while ( inR ) {
1431 if ( ! bar.isVisible() ) 1431 if ( ! bar.isVisible() )
1432 return false; 1432 return false;
1433 if ( incCounter % modulo == 0 ) 1433 if ( incCounter % modulo == 0 )
1434 bar.setProgress( incCounter ); 1434 bar.setProgress( incCounter );
1435 ++incCounter; 1435 ++incCounter;
1436 uid = inR->uid(); 1436 uid = inR->uid();
1437 bool skipIncidence = false; 1437 bool skipIncidence = false;
1438 if ( uid.left(15) == QString("last-syncEvent-") ) 1438 if ( uid.left(15) == QString("last-syncEvent-") )
1439 skipIncidence = true; 1439 skipIncidence = true;
1440 QString idS; 1440 QString idS;
1441 qApp->processEvents(); 1441 qApp->processEvents();
1442 if ( !skipIncidence ) { 1442 if ( !skipIncidence ) {
1443 inL = local->incidence( uid ); 1443 inL = local->incidence( uid );
1444 if ( inL ) { // maybe conflict - same uid in both calendars 1444 if ( inL ) { // maybe conflict - same uid in both calendars
1445 if ( (take = takeEvent( inL, inR, mode, fullDateRange )) > 0 ) { 1445 if ( (take = takeEvent( inL, inR, mode, fullDateRange )) > 0 ) {
1446 //qDebug("take %d %s ", take, inL->summary().latin1()); 1446 //qDebug("take %d %s ", take, inL->summary().latin1());
1447 if ( take == 3 ) 1447 if ( take == 3 )
1448 return false; 1448 return false;
1449 if ( take == 1 ) {// take local ********************** 1449 if ( take == 1 ) {// take local **********************
1450 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) 1450 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL )
1451 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) ); 1451 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) );
1452 else 1452 else
1453 idS = inR->IDStr(); 1453 idS = inR->IDStr();
1454 int calID = inR->calID();
1454 remote->deleteIncidence( inR ); 1455 remote->deleteIncidence( inR );
1455 inR = inL->clone(); 1456 inR = inL->clone();
1457 inR->setCalID( calID );
1456 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL ); 1458 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL );
1457 if ( mGlobalSyncMode != SYNC_MODE_EXTERNAL ) 1459 if ( mGlobalSyncMode != SYNC_MODE_EXTERNAL )
1458 inR->setIDStr( idS ); 1460 inR->setIDStr( idS );
1459 remote->addIncidence( inR ); 1461 remote->addIncidence( inR );
1460 if ( mSyncManager->syncWithDesktop() ) 1462 if ( mSyncManager->syncWithDesktop() )
1461 inR->setPilotId( 2 ); 1463 inR->setPilotId( 2 );
1462 ++changedRemote; 1464 ++changedRemote;
1463 } else {// take remote ********************** 1465 } else {// take remote **********************
1464 idS = inL->IDStr(); 1466 idS = inL->IDStr();
1465 int pid = inL->pilotId(); 1467 int pid = inL->pilotId();
1468 int calID = inL->calID();
1466 local->deleteIncidence( inL ); 1469 local->deleteIncidence( inL );
1467 inL = inR->clone(); 1470 inL = inR->clone();
1471 inL->setCalID( calID );
1468 if ( mSyncManager->syncWithDesktop() ) 1472 if ( mSyncManager->syncWithDesktop() )
1469 inL->setPilotId( pid ); 1473 inL->setPilotId( pid );
1470 inL->setIDStr( idS ); 1474 inL->setIDStr( idS );
1471 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1475 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1472 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) ); 1476 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) );
1473 inL->setID( mCurrentSyncDevice, inR->getID(mCurrentSyncDevice) ); 1477 inL->setID( mCurrentSyncDevice, inR->getID(mCurrentSyncDevice) );
1474 } 1478 }
1475 local->addIncidence( inL ); 1479 local->addIncidence( inL );
1476 ++changedLocal; 1480 ++changedLocal;
1477 } 1481 }
1478 } 1482 }
1479 } else { // no conflict ********** add or delete remote 1483 } else { // no conflict ********** add or delete remote
1480 if ( !filterIN || filterIN->filterCalendarItem( inR ) ){ 1484 if ( !filterIN || filterIN->filterCalendarItem( inR ) ){
1481 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1485 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1482 QString des = eventLSync->description(); 1486 QString des = eventLSync->description();
1483 QString pref = "e"; 1487 QString pref = "e";
1484 if ( inR->typeID() == todoID ) 1488 if ( inR->typeID() == todoID )
1485 pref = "t"; 1489 pref = "t";
1486 if ( des.find(pref+ inR->getID(mCurrentSyncDevice) +"," ) >= 0 && mode != 5) { // delete it 1490 if ( des.find(pref+ inR->getID(mCurrentSyncDevice) +"," ) >= 0 && mode != 5) { // delete it
1487 inR->setTempSyncStat( SYNC_TEMPSTATE_DELETE ); 1491 inR->setTempSyncStat( SYNC_TEMPSTATE_DELETE );
1488 //remote->deleteIncidence( inR ); 1492 //remote->deleteIncidence( inR );
1489 ++deletedEventR; 1493 ++deletedEventR;
1490 } else { 1494 } else {
1491 inR->setLastModified( modifiedCalendar ); 1495 inR->setLastModified( modifiedCalendar );
1492 inL = inR->clone(); 1496 inL = inR->clone();
1493 inL->setIDStr( ":" ); 1497 inL->setIDStr( ":" );
1494 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) ); 1498 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) );
1495 inL->setID( mCurrentSyncDevice, inR->getID(mCurrentSyncDevice) ); 1499 inL->setID( mCurrentSyncDevice, inR->getID(mCurrentSyncDevice) );
1500
1501 inL->setCalID( 0 );// add to default cal
1496 local->addIncidence( inL ); 1502 local->addIncidence( inL );
1497 ++addedEvent; 1503 ++addedEvent;
1498 1504
1499 } 1505 }
1500 } else { 1506 } else {
1501 if ( inR->lastModified() > mLastCalendarSync || mode == 5 ) { 1507 if ( inR->lastModified() > mLastCalendarSync || mode == 5 ) {
1502 inR->setLastModified( modifiedCalendar ); 1508 inR->setLastModified( modifiedCalendar );
1503 inL = inR->clone(); 1509 inL = inR->clone();
1504 inL->setIDStr( ":" ); 1510 inL->setIDStr( ":" );
1511 inL->setCalID( 0 );// add to default cal
1505 local->addIncidence( inL ); 1512 local->addIncidence( inL );
1506 ++addedEvent; 1513 ++addedEvent;
1507 1514
1508 } else { 1515 } else {
1509 checkExternSyncEvent(eventRSyncSharp, inR); 1516 checkExternSyncEvent(eventRSyncSharp, inR);
1510 remote->deleteIncidence( inR ); 1517 remote->deleteIncidence( inR );
1511 ++deletedEventR; 1518 ++deletedEventR;
1512 } 1519 }
1513 } 1520 }
1514 } else { 1521 } else {
1515 ++filteredIN; 1522 ++filteredIN;
1516 } 1523 }
1517 } 1524 }
1518 } 1525 }
1519 inR = er.next(); 1526 inR = er.next();
1520 } 1527 }
1521 QPtrList<Incidence> el = local->rawIncidences(); 1528 QPtrList<Incidence> el = local->rawIncidences();
1522 inL = el.first(); 1529 inL = el.first();
1523 modulo = (el.count()/10)+1; 1530 modulo = (el.count()/10)+1;
1524 bar.setCaption (i18n("Add / remove events") ); 1531 bar.setCaption (i18n("Add / remove events") );
1525 bar.setTotalSteps ( el.count() ) ; 1532 bar.setTotalSteps ( el.count() ) ;
1526 bar.show(); 1533 bar.show();
1527 incCounter = 0; 1534 incCounter = 0;
1528 1535
@@ -1538,62 +1545,64 @@ bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int
1538 bool skipIncidence = false; 1545 bool skipIncidence = false;
1539 if ( uid.left(15) == QString("last-syncEvent-") ) 1546 if ( uid.left(15) == QString("last-syncEvent-") )
1540 skipIncidence = true; 1547 skipIncidence = true;
1541 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL && inL->typeID() == journalID ) 1548 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL && inL->typeID() == journalID )
1542 skipIncidence = true; 1549 skipIncidence = true;
1543 if ( !skipIncidence ) { 1550 if ( !skipIncidence ) {
1544 inR = remote->incidence( uid ); 1551 inR = remote->incidence( uid );
1545 if ( ! inR ) { 1552 if ( ! inR ) {
1546 if ( !filterOUT || filterOUT->filterCalendarItem( inL ) ){ 1553 if ( !filterOUT || filterOUT->filterCalendarItem( inL ) ){
1547 // no conflict ********** add or delete local 1554 // no conflict ********** add or delete local
1548 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1555 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1549 if ( !inL->getID(mCurrentSyncDevice).isEmpty() && mode != 4 ) { 1556 if ( !inL->getID(mCurrentSyncDevice).isEmpty() && mode != 4 ) {
1550 checkExternSyncEvent(eventLSyncSharp, inL); 1557 checkExternSyncEvent(eventLSyncSharp, inL);
1551 local->deleteIncidence( inL ); 1558 local->deleteIncidence( inL );
1552 ++deletedEventL; 1559 ++deletedEventL;
1553 } else { 1560 } else {
1554 if ( ! mSyncManager->mWriteBackExistingOnly ) { 1561 if ( ! mSyncManager->mWriteBackExistingOnly ) {
1555 inL->removeID(mCurrentSyncDevice ); 1562 inL->removeID(mCurrentSyncDevice );
1556 ++addedEventR; 1563 ++addedEventR;
1557 //qDebug("remote added Incidence %s ", inL->summary().latin1()); 1564 //qDebug("remote added Incidence %s ", inL->summary().latin1());
1558 inL->setLastModified( modifiedCalendar ); 1565 inL->setLastModified( modifiedCalendar );
1559 inR = inL->clone(); 1566 inR = inL->clone();
1560 inR->setIDStr( ":" ); 1567 inR->setIDStr( ":" );
1561 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL ); 1568 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL );
1569 inR->setCalID( 0 );// add to default cal
1562 remote->addIncidence( inR ); 1570 remote->addIncidence( inR );
1563 } 1571 }
1564 } 1572 }
1565 } else { 1573 } else {
1566 if ( inL->lastModified() < mLastCalendarSync && mode != 4 ) { 1574 if ( inL->lastModified() < mLastCalendarSync && mode != 4 ) {
1567 checkExternSyncEvent(eventLSyncSharp, inL); 1575 checkExternSyncEvent(eventLSyncSharp, inL);
1568 local->deleteIncidence( inL ); 1576 local->deleteIncidence( inL );
1569 ++deletedEventL; 1577 ++deletedEventL;
1570 } else { 1578 } else {
1571 if ( ! mSyncManager->mWriteBackExistingOnly ) { 1579 if ( ! mSyncManager->mWriteBackExistingOnly ) {
1572 ++addedEventR; 1580 ++addedEventR;
1573 inL->setLastModified( modifiedCalendar ); 1581 inL->setLastModified( modifiedCalendar );
1574 inR = inL->clone(); 1582 inR = inL->clone();
1575 inR->setIDStr( ":" ); 1583 inR->setIDStr( ":" );
1584 inR->setCalID( 0 );// add to default cal
1576 remote->addIncidence( inR ); 1585 remote->addIncidence( inR );
1577 } 1586 }
1578 } 1587 }
1579 } 1588 }
1580 } else { 1589 } else {
1581 ++filteredOUT; 1590 ++filteredOUT;
1582 } 1591 }
1583 } 1592 }
1584 } 1593 }
1585 inL = el.next(); 1594 inL = el.next();
1586 } 1595 }
1587 int delFut = 0; 1596 int delFut = 0;
1588 int remRem = 0; 1597 int remRem = 0;
1589 if ( mSyncManager->mWriteBackInFuture ) { 1598 if ( mSyncManager->mWriteBackInFuture ) {
1590 er = remote->rawIncidences(); 1599 er = remote->rawIncidences();
1591 remRem = er.count(); 1600 remRem = er.count();
1592 inR = er.first(); 1601 inR = er.first();
1593 QDateTime dt; 1602 QDateTime dt;
1594 QDateTime cur = QDateTime::currentDateTime().addDays( -(mSyncManager->mWriteBackInPast * 7) ); 1603 QDateTime cur = QDateTime::currentDateTime().addDays( -(mSyncManager->mWriteBackInPast * 7) );
1595 QDateTime end = QDateTime::currentDateTime().addDays( (mSyncManager->mWriteBackInFuture ) *7 ); 1604 QDateTime end = QDateTime::currentDateTime().addDays( (mSyncManager->mWriteBackInFuture ) *7 );
1596 while ( inR ) { 1605 while ( inR ) {
1597 if ( inR->typeID() == todoID ) { 1606 if ( inR->typeID() == todoID ) {
1598 Todo * t = (Todo*)inR; 1607 Todo * t = (Todo*)inR;
1599 if ( t->hasDueDate() ) 1608 if ( t->hasDueDate() )
@@ -2122,48 +2131,57 @@ bool CalendarView::openCalendar(QString filename, bool merge)
2122 } 2131 }
2123 } 2132 }
2124 return true; 2133 return true;
2125 } else { 2134 } else {
2126 // while failing to load, the calendar object could 2135 // while failing to load, the calendar object could
2127 // have become partially populated. Clear it out. 2136 // have become partially populated. Clear it out.
2128 if ( !merge ) { 2137 if ( !merge ) {
2129 mCalendar->close(); 2138 mCalendar->close();
2130 mViewManager->setDocumentId( filename ); 2139 mViewManager->setDocumentId( filename );
2131 mDialogManager->setDocumentId( filename ); 2140 mDialogManager->setDocumentId( filename );
2132 mTodoList->setDocumentId( filename ); 2141 mTodoList->setDocumentId( filename );
2133 } 2142 }
2134 2143
2135 //KMessageBox::error(this,i18n("Couldn't load calendar\n '%1'.").arg(filename)); 2144 //KMessageBox::error(this,i18n("Couldn't load calendar\n '%1'.").arg(filename));
2136 2145
2137 QTimer::singleShot ( 1, this, SLOT ( showOpenError() ) ); 2146 QTimer::singleShot ( 1, this, SLOT ( showOpenError() ) );
2138 globalFlagBlockAgenda = 2; 2147 globalFlagBlockAgenda = 2;
2139 mCalendar->reInitAlarmSettings(); 2148 mCalendar->reInitAlarmSettings();
2140 setSyncEventsReadOnly(); 2149 setSyncEventsReadOnly();
2141 updateUnmanagedViews(); 2150 updateUnmanagedViews();
2142 updateView(); 2151 updateView();
2143 } 2152 }
2144 return false; 2153 return false;
2145} 2154}
2155void CalendarView::mergeFile( QString fn )
2156{
2157 clearAllViews();
2158 mCalendar->mergeCalendarFile( fn );
2159 mCalendar->reInitAlarmSettings();
2160 setSyncEventsReadOnly();
2161 updateUnmanagedViews();
2162 updateView();
2163}
2146void CalendarView::showOpenError() 2164void CalendarView::showOpenError()
2147{ 2165{
2148 KMessageBox::error(this,i18n("Couldn't load calendar\n.")); 2166 KMessageBox::error(this,i18n("Couldn't load calendar\n."));
2149} 2167}
2150void CalendarView::setLoadedFileVersion(QDateTime dt) 2168void CalendarView::setLoadedFileVersion(QDateTime dt)
2151{ 2169{
2152 loadedFileVersion = dt; 2170 loadedFileVersion = dt;
2153} 2171}
2154bool CalendarView::checkFileChanged(QString fn) 2172bool CalendarView::checkFileChanged(QString fn)
2155{ 2173{
2156 QFileInfo finf ( fn ); 2174 QFileInfo finf ( fn );
2157 if ( !finf.exists() ) 2175 if ( !finf.exists() )
2158 return true; 2176 return true;
2159 QDateTime dt = finf.lastModified (); 2177 QDateTime dt = finf.lastModified ();
2160 if ( dt <= loadedFileVersion ) 2178 if ( dt <= loadedFileVersion )
2161 return false; 2179 return false;
2162 return true; 2180 return true;
2163 2181
2164} 2182}
2165void CalendarView::watchSavedFile() 2183void CalendarView::watchSavedFile()
2166{ 2184{
2167 QFileInfo finf ( MainWindow::defaultFileName()); 2185 QFileInfo finf ( MainWindow::defaultFileName());
2168 if ( !finf.exists() ) 2186 if ( !finf.exists() )
2169 return; 2187 return;
@@ -3337,54 +3355,56 @@ void CalendarView::cloneIncidence(Incidence * orgInc )
3337 } 3355 }
3338 } if ( newInc->typeID() == journalID ) { 3356 } if ( newInc->typeID() == journalID ) {
3339 mCalendar->addJournal( (Journal*) newInc ); 3357 mCalendar->addJournal( (Journal*) newInc );
3340 editJournal( (Journal*) newInc ); 3358 editJournal( (Journal*) newInc );
3341 } 3359 }
3342 setActiveWindow(); 3360 setActiveWindow();
3343} 3361}
3344 3362
3345void CalendarView::newEvent() 3363void CalendarView::newEvent()
3346{ 3364{
3347 // TODO: Replace this code by a common eventDurationHint of KOBaseView. 3365 // TODO: Replace this code by a common eventDurationHint of KOBaseView.
3348 KOAgendaView *aView = mViewManager->agendaView(); 3366 KOAgendaView *aView = mViewManager->agendaView();
3349 if (aView) { 3367 if (aView) {
3350 if (aView->selectionStart().isValid()) { 3368 if (aView->selectionStart().isValid()) {
3351 if (aView->selectedIsAllDay()) { 3369 if (aView->selectedIsAllDay()) {
3352 newEvent(aView->selectionStart(),aView->selectionEnd(),true); 3370 newEvent(aView->selectionStart(),aView->selectionEnd(),true);
3353 } else { 3371 } else {
3354 newEvent(aView->selectionStart(),aView->selectionEnd()); 3372 newEvent(aView->selectionStart(),aView->selectionEnd());
3355 } 3373 }
3356 return; 3374 return;
3357 } 3375 }
3358 } 3376 }
3359 3377
3360 QDate date = mNavigator->selectedDates().first(); 3378 QDate date = mNavigator->selectedDates().first();
3379#if 0
3361 QDateTime current = QDateTime::currentDateTime(); 3380 QDateTime current = QDateTime::currentDateTime();
3362 if ( date <= current.date() ) { 3381 if ( date <= current.date() ) {
3363 int hour = current.time().hour() +1; 3382 int hour = current.time().hour() +1;
3364 newEvent( QDateTime( current.date(), QTime( hour, 0, 0 ) ), 3383 newEvent( QDateTime( current.date(), QTime( hour, 0, 0 ) ),
3365 QDateTime( current.date(), QTime( hour+ KOPrefs::instance()->mDefaultDuration, 0, 0 ) ) ); 3384 QDateTime( current.date(), QTime( hour+ KOPrefs::instance()->mDefaultDuration, 0, 0 ) ) );
3366 } else 3385 } else
3386#endif
3367 newEvent( QDateTime( date, QTime( KOPrefs::instance()->mStartTime, 0, 0 ) ), 3387 newEvent( QDateTime( date, QTime( KOPrefs::instance()->mStartTime, 0, 0 ) ),
3368 QDateTime( date, QTime( KOPrefs::instance()->mStartTime + 3388 QDateTime( date, QTime( KOPrefs::instance()->mStartTime +
3369 KOPrefs::instance()->mDefaultDuration, 0, 0 ) ) ); 3389 KOPrefs::instance()->mDefaultDuration, 0, 0 ) ) );
3370} 3390}
3371 3391
3372void CalendarView::newEvent(QDateTime fh) 3392void CalendarView::newEvent(QDateTime fh)
3373{ 3393{
3374 newEvent(fh, 3394 newEvent(fh,
3375 QDateTime(fh.addSecs(3600*KOPrefs::instance()->mDefaultDuration))); 3395 QDateTime(fh.addSecs(3600*KOPrefs::instance()->mDefaultDuration)));
3376} 3396}
3377 3397
3378void CalendarView::newEvent(QDate dt) 3398void CalendarView::newEvent(QDate dt)
3379{ 3399{
3380 newEvent(QDateTime(dt, QTime(0,0,0)), 3400 newEvent(QDateTime(dt, QTime(0,0,0)),
3381 QDateTime(dt, QTime(0,0,0)), true); 3401 QDateTime(dt, QTime(0,0,0)), true);
3382} 3402}
3383void CalendarView::newEvent(QDateTime fromHint, QDateTime toHint) 3403void CalendarView::newEvent(QDateTime fromHint, QDateTime toHint)
3384{ 3404{
3385 newEvent(fromHint, toHint, false); 3405 newEvent(fromHint, toHint, false);
3386} 3406}
3387void CalendarView::newEvent(QDateTime fromHint, QDateTime toHint, bool allDay) 3407void CalendarView::newEvent(QDateTime fromHint, QDateTime toHint, bool allDay)
3388{ 3408{
3389 3409
3390 showEventEditor(); 3410 showEventEditor();
diff --git a/korganizer/calendarview.h b/korganizer/calendarview.h
index 706d05d..799c297 100644
--- a/korganizer/calendarview.h
+++ b/korganizer/calendarview.h
@@ -117,48 +117,49 @@ class CalendarView : public KOrg::CalendarViewBase, public KCal::Calendar::Obser
117 const char *name = 0 ); 117 const char *name = 0 );
118 CalendarView( Calendar *calendar, QWidget *parent = 0, 118 CalendarView( Calendar *calendar, QWidget *parent = 0,
119 const char *name = 0 ); 119 const char *name = 0 );
120 virtual ~CalendarView(); 120 virtual ~CalendarView();
121 121
122 Calendar *calendar() { return mCalendar; } 122 Calendar *calendar() { return mCalendar; }
123 123
124 KOViewManager *viewManager(); 124 KOViewManager *viewManager();
125 KODialogManager *dialogManager(); 125 KODialogManager *dialogManager();
126 126
127 QDate startDate(); 127 QDate startDate();
128 QDate endDate(); 128 QDate endDate();
129 129
130 QWidgetStack *viewStack(); 130 QWidgetStack *viewStack();
131 QWidget *leftFrame(); 131 QWidget *leftFrame();
132 132
133 DateNavigator *dateNavigator(); 133 DateNavigator *dateNavigator();
134 KDateNavigator *dateNavigatorWidget(); 134 KDateNavigator *dateNavigatorWidget();
135 135
136 void addView(KOrg::BaseView *); 136 void addView(KOrg::BaseView *);
137 void showView(KOrg::BaseView *); 137 void showView(KOrg::BaseView *);
138 KOEventViewerDialog* getEventViewerDialog(); 138 KOEventViewerDialog* getEventViewerDialog();
139 Incidence *currentSelection(); 139 Incidence *currentSelection();
140 void checkSuspendAlarm(); 140 void checkSuspendAlarm();
141 void mergeFile( QString fn );
141 142
142 signals: 143 signals:
143 void save (); 144 void save ();
144 void saveStopTimer (); 145 void saveStopTimer ();
145 void tempDisableBR(bool); 146 void tempDisableBR(bool);
146 /** This todo has been modified */ 147 /** This todo has been modified */
147 void todoModified(Todo *, int); 148 void todoModified(Todo *, int);
148 149
149 /** when change is made to options dialog, the topwidget will catch this 150 /** when change is made to options dialog, the topwidget will catch this
150 * and emit this signal which notifies all widgets which have registered 151 * and emit this signal which notifies all widgets which have registered
151 * for notification to update their settings. */ 152 * for notification to update their settings. */
152 void configChanged(); 153 void configChanged();
153 /** emitted when the topwidget is closing down, so that any attached 154 /** emitted when the topwidget is closing down, so that any attached
154 child windows can also close. */ 155 child windows can also close. */
155 void closingDown(); 156 void closingDown();
156 /** emitted right before we die */ 157 /** emitted right before we die */
157 void closed(QWidget *); 158 void closed(QWidget *);
158 159
159 /** Emitted when state of modified flag changes */ 160 /** Emitted when state of modified flag changes */
160 void modifiedChanged(bool); 161 void modifiedChanged(bool);
161 void signalmodified(); 162 void signalmodified();
162 163
163 /** Emitted when state of read-only flag changes */ 164 /** Emitted when state of read-only flag changes */
164 void readOnlyChanged(bool); 165 void readOnlyChanged(bool);
diff --git a/korganizer/journalentry.cpp b/korganizer/journalentry.cpp
index b8a4cf2..f0e0f86 100644
--- a/korganizer/journalentry.cpp
+++ b/korganizer/journalentry.cpp
@@ -55,100 +55,120 @@
55//#include "journalentry.moc" 55//#include "journalentry.moc"
56#ifndef DESKTOP_VERSION 56#ifndef DESKTOP_VERSION
57#include <qpe/qpeapplication.h> 57#include <qpe/qpeapplication.h>
58#endif 58#endif
59JournalEntry::JournalEntry(Calendar *calendar,QWidget *parent) : 59JournalEntry::JournalEntry(Calendar *calendar,QWidget *parent) :
60 QFrame(parent) 60 QFrame(parent)
61{ 61{
62 62
63 int fac = 5; 63 int fac = 5;
64 heiHint = QApplication::desktop()->height(); 64 heiHint = QApplication::desktop()->height();
65 if ( heiHint > 800 ) 65 if ( heiHint > 800 )
66 fac += 2; 66 fac += 2;
67 heiHint = heiHint / fac; 67 heiHint = heiHint / fac;
68 68
69 showOnlyMode = false; 69 showOnlyMode = false;
70 mCalendar = calendar; 70 mCalendar = calendar;
71 mJournal = 0; 71 mJournal = 0;
72 visibleMode = true; 72 visibleMode = true;
73 QHBox * vb = new QHBox ( this ); 73 QHBox * vb = new QHBox ( this );
74 QPixmap iconp; 74 QPixmap iconp;
75 vb->setMargin ( KDialog::marginHint()-1 ); 75 vb->setMargin ( KDialog::marginHint()-1 );
76 QPushButton * toggleJournal = new QPushButton( vb ); 76 QPushButton * toggleJournal = new QPushButton( vb );
77 iconp = SmallIcon("1updownarrow"); 77 iconp = SmallIcon("1updownarrow");
78 toggleJournal->setPixmap (iconp ) ; 78 toggleJournal->setPixmap (iconp ) ;
79 vb->setStretchFactor (new QLabel(" "+i18n("Title: "),vb),1); 79 QLabel* textLabel = new QLabel(" "+i18n("Title: "),vb);
80 vb->setStretchFactor (textLabel,1);
80 vb->setStretchFactor( toggleJournal, 1 ); 81 vb->setStretchFactor( toggleJournal, 1 );
81 mTitle = new KOLocationBox(TRUE, vb, 30); 82 mTitle = new KOLocationBox(TRUE, vb, 30);
82 mTitle->setSizePolicy( QSizePolicy( QSizePolicy::MinimumExpanding ,QSizePolicy::Fixed ,FALSE) ); 83 mTitle->setSizePolicy( QSizePolicy( QSizePolicy::MinimumExpanding ,QSizePolicy::Fixed ,FALSE) );
83 mCalendarBox = new QComboBox(vb); 84 mCalendarBox = new QComboBox(vb);
84 mCalendarBox->setSizePolicy( QSizePolicy( QSizePolicy::MinimumExpanding ,QSizePolicy::Fixed ,FALSE) ); 85 mCalendarBox->setSizePolicy( QSizePolicy( QSizePolicy::MinimumExpanding ,QSizePolicy::Fixed ,FALSE) );
85#ifndef DESKTOP_VERSION 86#ifndef DESKTOP_VERSION
86 mTitle->setSizeLimit( 8 ); 87 mTitle->setSizeLimit( 8 );
87 mCalendarBox->setSizeLimit( 8 ); 88 mCalendarBox->setSizeLimit( 8 );
88#endif 89#endif
89 vb->setStretchFactor ( mTitle, 8 ); 90 vb->setStretchFactor ( mTitle, 8 );
90 vb->setStretchFactor ( mCalendarBox, 3 ); 91 vb->setStretchFactor ( mCalendarBox, 3 );
91 //mTitleLabel->setMargin(0); 92 //mTitleLabel->setMargin(0);
92 //mTitleLabel->setAlignment(AlignCenter); 93 //mTitleLabel->setAlignment(AlignCenter);
93 QPushButton * loadTemplate = new QPushButton( vb ); 94 QPushButton * loadTemplate = new QPushButton( vb );
94 QPushButton * saveTemplate = new QPushButton( vb ); 95 QPushButton * saveTemplate = new QPushButton( vb );
95 if ( QApplication::desktop()->width() < 321 ) 96 if ( QApplication::desktop()->width() < 321 )
96 iconp = SmallIcon("fileexport16"); 97 iconp = SmallIcon("fileexport16");
97 else 98 else
98 iconp = SmallIcon("fileexport"); 99 iconp = SmallIcon("fileexport");
99 saveTemplate->setPixmap (iconp ) ; 100 saveTemplate->setPixmap (iconp ) ;
100 int size = saveTemplate->sizeHint().height(); 101 int size = saveTemplate->sizeHint().height();
101 if ( QApplication::desktop()->width() < 321 ) 102 if ( QApplication::desktop()->width() < 321 )
102 iconp = SmallIcon("fileimport16"); 103 iconp = SmallIcon("fileimport16");
103 else 104 else
104 iconp = SmallIcon("fileimport"); 105 iconp = SmallIcon("fileimport");
105 loadTemplate->setPixmap (iconp ) ; 106 loadTemplate->setPixmap (iconp ) ;
106 loadTemplate->setFixedSize( size, size ); 107 loadTemplate->setFixedSize( size, size );
107 saveTemplate->setFixedSize( size, size ); 108 saveTemplate->setFixedSize( size, size );
108 toggleJournal->setFixedSize( size , size ); 109 toggleJournal->setFixedSize( size , size );
109 mTitle->setFixedHeight( size+4); 110 mTitle->setFixedHeight( size+4);
110 mCalendarBox->setFixedHeight( size+4); 111 mCalendarBox->setFixedHeight( size+4);
111 mEditor = new KTextEdit(this); 112 mEditor = new KTextEdit(this);
112#ifndef DESKTOP_VERSION 113#ifndef DESKTOP_VERSION
113 QPEApplication::setStylusOperation( mEditor, QPEApplication::RightOnHold ); 114 QPEApplication::setStylusOperation( mEditor, QPEApplication::RightOnHold );
114#endif 115#endif
116 mMaxWidDiff = 3*size - 2*frameWidth() - textLabel->sizeHint().width();
117 mDeskWid = QApplication::desktop()->width();
118 int maxwid = mDeskWid - mMaxWidDiff;
119 mTitle->setMaximumWidth( maxwid/2 +20 );
120 mCalendarBox->setMaximumWidth( maxwid/2 -20 );
115 mEditor->setWordWrap( KTextEdit::WidgetWidth ); 121 mEditor->setWordWrap( KTextEdit::WidgetWidth );
116 QBoxLayout *topLayout = new QVBoxLayout(this); 122 QBoxLayout *topLayout = new QVBoxLayout(this);
117 topLayout->addWidget(vb); 123 topLayout->addWidget(vb);
118 topLayout->addWidget(mEditor); 124 topLayout->addWidget(mEditor);
119 mEditor->installEventFilter(this); 125 mEditor->installEventFilter(this);
120 connect( saveTemplate, SIGNAL( clicked() ), this , SLOT( slotSaveTemplate() ) ); 126 connect( saveTemplate, SIGNAL( clicked() ), this , SLOT( slotSaveTemplate() ) );
121 connect( loadTemplate, SIGNAL( clicked() ), this , SLOT( slotLoadTemplate() ) ); 127 connect( loadTemplate, SIGNAL( clicked() ), this , SLOT( slotLoadTemplate() ) );
122 connect( toggleJournal, SIGNAL( clicked() ), this , SLOT( toggleShowJournal() ) ); 128 connect( toggleJournal, SIGNAL( clicked() ), this , SLOT( toggleShowJournal() ) );
123 mTitle->load( KOLocationBox::SUMMARYJOURNAL ); 129 mTitle->load( KOLocationBox::SUMMARYJOURNAL );
124 mTitle->lineEdit ()->setText(""); 130 mTitle->lineEdit ()->setText("");
125} 131}
126 132
127JournalEntry::~JournalEntry() 133JournalEntry::~JournalEntry()
128{ 134{
129 //qDebug("JournalEntry::~JournalEntry() "); 135 //qDebug("JournalEntry::~JournalEntry() ");
130} 136}
137void JournalEntry::resizeEvent(QResizeEvent* e )
138{
139#ifndef DESKTOP_VERSION
140 if ( mDeskWid != QApplication::desktop()->width() ) {
141 mDeskWid == QApplication::desktop()->width();
142 int maxwid = mDeskWid - mMaxWidDiff;
143 mTitle->setMaximumWidth( maxwid/2 +20 );
144 mCalendarBox->setMaximumWidth( maxwid/2 -20 );
145 }
146 setMaximumWidth( QApplication::desktop()->width() );
147 qDebug("MAXXX %d ", QApplication::desktop()->width());
148#endif
149 QFrame::resizeEvent( e );
150}
131QSize JournalEntry::sizeHint() const 151QSize JournalEntry::sizeHint() const
132{ 152{
133 return QSize ( 240, heiHint ); 153 return QSize ( 240, heiHint );
134} 154}
135void JournalEntry::slotSaveTemplate() 155void JournalEntry::slotSaveTemplate()
136{ 156{
137 QString fileName =locateLocal( "templates", "journals" ); 157 QString fileName =locateLocal( "templates", "journals" );
138 QDir t_dir; 158 QDir t_dir;
139 if ( !t_dir.exists(fileName) ) 159 if ( !t_dir.exists(fileName) )
140 t_dir.mkdir ( fileName ); 160 t_dir.mkdir ( fileName );
141 fileName += "/journal"; 161 fileName += "/journal";
142 fileName = KFileDialog::getSaveFileName( fileName , i18n("Save as Journal template"), this ); 162 fileName = KFileDialog::getSaveFileName( fileName , i18n("Save as Journal template"), this );
143 if ( fileName.length() == 0 ) 163 if ( fileName.length() == 0 )
144 return; 164 return;
145 165
146 QFile fileIn( fileName ); 166 QFile fileIn( fileName );
147 if (!fileIn.open( IO_WriteOnly ) ) { 167 if (!fileIn.open( IO_WriteOnly ) ) {
148 KMessageBox::error( this, i18n("Error saving template file\n '%1'.") 168 KMessageBox::error( this, i18n("Error saving template file\n '%1'.")
149 .arg( fileName ) ); 169 .arg( fileName ) );
150 return; 170 return;
151 } 171 }
152 // QString text; 172 // QString text;
153 QTextStream tsIn( &fileIn ); 173 QTextStream tsIn( &fileIn );
154 tsIn.setCodec( QTextCodec::codecForName("utf8") ); 174 tsIn.setCodec( QTextCodec::codecForName("utf8") );
diff --git a/korganizer/journalentry.h b/korganizer/journalentry.h
index ed04b7c..a69846c 100644
--- a/korganizer/journalentry.h
+++ b/korganizer/journalentry.h
@@ -34,53 +34,56 @@ class KTextEdit;
34class QComboBox; 34class QComboBox;
35class KLineEdit; 35class KLineEdit;
36class KOLocationBox; 36class KOLocationBox;
37 37
38using namespace KCal; 38using namespace KCal;
39 39
40class JournalEntry : public QFrame { 40class JournalEntry : public QFrame {
41 Q_OBJECT 41 Q_OBJECT
42 public: 42 public:
43 JournalEntry(Calendar *,QWidget *parent); 43 JournalEntry(Calendar *,QWidget *parent);
44 virtual ~JournalEntry(); 44 virtual ~JournalEntry();
45 45
46 void setJournal(Journal *, bool saveJournal = true ); 46 void setJournal(Journal *, bool saveJournal = true );
47 Journal *journal() const; 47 Journal *journal() const;
48 48
49 void setDate(const QDate &); 49 void setDate(const QDate &);
50 50
51 void clear(); 51 void clear();
52 52
53 void flushEntry(); 53 void flushEntry();
54 void setShowOnly(); 54 void setShowOnly();
55 QSize sizeHint() const; 55 QSize sizeHint() const;
56 void setVisibleMode( bool b ) { visibleMode = b;} 56 void setVisibleMode( bool b ) { visibleMode = b;}
57 void fillCalendar( int id = 0 ); 57 void fillCalendar( int id = 0 );
58 void resizeEvent(QResizeEvent* e ) ;
58 protected slots: 59 protected slots:
59 void slotSaveTemplate(); 60 void slotSaveTemplate();
60 void slotLoadTemplate(); 61 void slotLoadTemplate();
61 void toggleShowJournal(); 62 void toggleShowJournal();
62 void setVisibleOn(); 63 void setVisibleOn();
63 signals: 64 signals:
64 void deleteJournal(Journal *); 65 void deleteJournal(Journal *);
65 void newJournal(); 66 void newJournal();
66 void showJournalOnly( Journal * ); 67 void showJournalOnly( Journal * );
67 68
68 protected: 69 protected:
69 bool eventFilter( QObject *o, QEvent *e ); 70 bool eventFilter( QObject *o, QEvent *e );
70 71
71 void writeJournal(); 72 void writeJournal();
72 73
73 private: 74 private:
75 int mMaxWidDiff;
76 int mDeskWid;
74 bool visibleMode; 77 bool visibleMode;
75 bool showOnlyMode; 78 bool showOnlyMode;
76 Calendar *mCalendar; 79 Calendar *mCalendar;
77 Journal *mJournal; 80 Journal *mJournal;
78 QDate mDate; 81 QDate mDate;
79 void keyPressEvent ( QKeyEvent * ) ; 82 void keyPressEvent ( QKeyEvent * ) ;
80 QComboBox *mCalendarBox; 83 QComboBox *mCalendarBox;
81 KOLocationBox * mTitle; 84 KOLocationBox * mTitle;
82 KTextEdit *mEditor; 85 KTextEdit *mEditor;
83 int heiHint; 86 int heiHint;
84}; 87};
85 88
86#endif 89#endif
diff --git a/korganizer/mainwindow.cpp b/korganizer/mainwindow.cpp
index 5249300..4bedb61 100644
--- a/korganizer/mainwindow.cpp
+++ b/korganizer/mainwindow.cpp
@@ -2523,49 +2523,49 @@ QString MainWindow::sentSyncFile()
2523#ifdef DESKTOP_VERSION 2523#ifdef DESKTOP_VERSION
2524 return locateLocal( "tmp", "copysynccal.ics" ); 2524 return locateLocal( "tmp", "copysynccal.ics" );
2525#else 2525#else
2526 return QString( "/tmp/copysynccal.ics" ); 2526 return QString( "/tmp/copysynccal.ics" );
2527#endif 2527#endif
2528} 2528}
2529 2529
2530void MainWindow::syncFileRequest() 2530void MainWindow::syncFileRequest()
2531{ 2531{
2532 if ( KOPrefs::instance()->mPassiveSyncWithDesktop ) { 2532 if ( KOPrefs::instance()->mPassiveSyncWithDesktop ) {
2533 mSyncManager->slotSyncMenu( 999 ); 2533 mSyncManager->slotSyncMenu( 999 );
2534 } 2534 }
2535 2535
2536 setCaption(i18n("Saving Data to temp file ..." )); 2536 setCaption(i18n("Saving Data to temp file ..." ));
2537 mView->saveCalendar( sentSyncFile() ); 2537 mView->saveCalendar( sentSyncFile() );
2538 setCaption(i18n("Data saved to temp file!" )); 2538 setCaption(i18n("Data saved to temp file!" ));
2539 2539
2540} 2540}
2541void MainWindow::getFile( bool success ) 2541void MainWindow::getFile( bool success )
2542{ 2542{
2543 if ( ! success ) { 2543 if ( ! success ) {
2544 setCaption( i18n("Error receiving file. Nothing changed!") ); 2544 setCaption( i18n("Error receiving file. Nothing changed!") );
2545 return; 2545 return;
2546 } 2546 }
2547 mView->openCalendar( sentSyncFile() ); 2547 mView->mergeFile( sentSyncFile() );
2548 if ( KOPrefs::instance()->mPassiveSyncWithDesktop ) { 2548 if ( KOPrefs::instance()->mPassiveSyncWithDesktop ) {
2549 mSyncManager->slotSyncMenu( 999 ); 2549 mSyncManager->slotSyncMenu( 999 );
2550 } 2550 }
2551 setCaption( i18n("Pi-Sync successful!") ); 2551 setCaption( i18n("Pi-Sync successful!") );
2552} 2552}
2553void MainWindow::printListView() 2553void MainWindow::printListView()
2554{ 2554{
2555 2555
2556 QString message = i18n("You can make a printout of the <b>List View</b> and the list view in the <b>Search Dialog</b>! To do this, please go to the <b>List View/Search Dialog</b>. Right click on the list. Select in the popup menu the entry <b>Print complete list</b>. That prints the list as you see it. You can remove items from the list before printing without deleting the corresponding event/todo! Simply select all items you do not want to print out. Then right click on one of the items and choose <b>Hide selected items</b>. After that you can print the list without these items."); 2556 QString message = i18n("You can make a printout of the <b>List View</b> and the list view in the <b>Search Dialog</b>! To do this, please go to the <b>List View/Search Dialog</b>. Right click on the list. Select in the popup menu the entry <b>Print complete list</b>. That prints the list as you see it. You can remove items from the list before printing without deleting the corresponding event/todo! Simply select all items you do not want to print out. Then right click on one of the items and choose <b>Hide selected items</b>. After that you can print the list without these items.");
2557 2557
2558 KMessageBox::information( this, message); 2558 KMessageBox::information( this, message);
2559} 2559}
2560void MainWindow::printSel( ) 2560void MainWindow::printSel( )
2561{ 2561{
2562 mView->viewManager()->agendaView()->agenda()->printSelection(); 2562 mView->viewManager()->agendaView()->agenda()->printSelection();
2563} 2563}
2564 2564
2565void MainWindow::printCal() 2565void MainWindow::printCal()
2566{ 2566{
2567 mView->print();//mCp->showDialog(); 2567 mView->print();//mCp->showDialog();
2568} 2568}
2569 2569
2570 2570
2571#include "libkdepim/kdatepicker.h" 2571#include "libkdepim/kdatepicker.h"