summaryrefslogtreecommitdiffabout
path: root/korganizer
Unidiff
Diffstat (limited to 'korganizer') (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/calendarview.cpp9
-rw-r--r--korganizer/koagendaview.cpp2
-rw-r--r--korganizer/kolistview.cpp68
-rw-r--r--korganizer/kolistview.h5
-rw-r--r--korganizer/koprefs.cpp4
-rw-r--r--korganizer/koprefs.h1
6 files changed, 73 insertions, 16 deletions
diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp
index 377a66f..2012e92 100644
--- a/korganizer/calendarview.cpp
+++ b/korganizer/calendarview.cpp
@@ -1452,776 +1452,769 @@ bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int
1452 if ( mGlobalSyncMode == SYNC_MODE_NORMAL && !mSyncManager->syncWithDesktop()) // kde is abnormal... 1452 if ( mGlobalSyncMode == SYNC_MODE_NORMAL && !mSyncManager->syncWithDesktop()) // kde is abnormal...
1453 remote->addEvent( eventRSync ); 1453 remote->addEvent( eventRSync );
1454 else 1454 else
1455 delete eventRSync; 1455 delete eventRSync;
1456 qDebug("KO: Sync with desktop %d ",mSyncManager->syncWithDesktop() ); 1456 qDebug("KO: Sync with desktop %d ",mSyncManager->syncWithDesktop() );
1457 QString mes; 1457 QString mes;
1458 mes .sprintf( i18n("Synchronization summary:\n\n %d items added to local\n %d items added to remote\n %d items updated on local\n %d items updated on remote\n %d items deleted on local\n %d items deleted on remote\n %d incoming filtered out\n %d outgoing filtered out\n"),addedEvent, addedEventR, changedLocal, changedRemote, deletedEventL, deletedEventR, filteredIN, filteredOUT ); 1458 mes .sprintf( i18n("Synchronization summary:\n\n %d items added to local\n %d items added to remote\n %d items updated on local\n %d items updated on remote\n %d items deleted on local\n %d items deleted on remote\n %d incoming filtered out\n %d outgoing filtered out\n"),addedEvent, addedEventR, changedLocal, changedRemote, deletedEventL, deletedEventR, filteredIN, filteredOUT );
1459 QString delmess; 1459 QString delmess;
1460 if ( delFut ) { 1460 if ( delFut ) {
1461 delmess.sprintf( i18n("%d items skipped on remote,\nbecause they are more\nthan %d weeks in the past or\nmore than %d weeks in the future.\nAfter skipping, remote has\n%d calendar/todo items."), delFut,mSyncManager->mWriteBackInPast,mSyncManager->mWriteBackInFuture, remRem-delFut); 1461 delmess.sprintf( i18n("%d items skipped on remote,\nbecause they are more\nthan %d weeks in the past or\nmore than %d weeks in the future.\nAfter skipping, remote has\n%d calendar/todo items."), delFut,mSyncManager->mWriteBackInPast,mSyncManager->mWriteBackInFuture, remRem-delFut);
1462 mes += delmess; 1462 mes += delmess;
1463 } 1463 }
1464 mes = i18n("Local calendar changed!\n") +mes; 1464 mes = i18n("Local calendar changed!\n") +mes;
1465 mCalendar->checkAlarmForIncidence( 0, true ); 1465 mCalendar->checkAlarmForIncidence( 0, true );
1466 qDebug( mes ); 1466 qDebug( mes );
1467 if ( mSyncManager->mShowSyncSummary ) { 1467 if ( mSyncManager->mShowSyncSummary ) {
1468 if ( KMessageBox::Cancel == KMessageBox::warningContinueCancel(this, mes, 1468 if ( KMessageBox::Cancel == KMessageBox::warningContinueCancel(this, mes,
1469 i18n("KO/Pi Synchronization"),i18n("Write back"))) { 1469 i18n("KO/Pi Synchronization"),i18n("Write back"))) {
1470 qDebug("KO: WB cancelled "); 1470 qDebug("KO: WB cancelled ");
1471 mSyncManager->mWriteBackFile = false; 1471 mSyncManager->mWriteBackFile = false;
1472 return syncOK; 1472 return syncOK;
1473 } 1473 }
1474 } 1474 }
1475 return syncOK; 1475 return syncOK;
1476} 1476}
1477 1477
1478void CalendarView::setSyncDevice( QString s ) 1478void CalendarView::setSyncDevice( QString s )
1479{ 1479{
1480 mCurrentSyncDevice= s; 1480 mCurrentSyncDevice= s;
1481} 1481}
1482void CalendarView::setSyncName( QString s ) 1482void CalendarView::setSyncName( QString s )
1483{ 1483{
1484 mCurrentSyncName= s; 1484 mCurrentSyncName= s;
1485} 1485}
1486bool CalendarView::syncCalendar(QString filename, int mode) 1486bool CalendarView::syncCalendar(QString filename, int mode)
1487{ 1487{
1488 //qDebug("syncCalendar %s ", filename.latin1()); 1488 //qDebug("syncCalendar %s ", filename.latin1());
1489 mGlobalSyncMode = SYNC_MODE_NORMAL; 1489 mGlobalSyncMode = SYNC_MODE_NORMAL;
1490 CalendarLocal* calendar = new CalendarLocal(); 1490 CalendarLocal* calendar = new CalendarLocal();
1491 calendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId); 1491 calendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId);
1492 FileStorage* storage = new FileStorage( calendar ); 1492 FileStorage* storage = new FileStorage( calendar );
1493 bool syncOK = false; 1493 bool syncOK = false;
1494 storage->setFileName( filename ); 1494 storage->setFileName( filename );
1495 // qDebug("loading ... "); 1495 // qDebug("loading ... ");
1496 if ( storage->load() ) { 1496 if ( storage->load() ) {
1497 getEventViewerDialog()->setSyncMode( true ); 1497 getEventViewerDialog()->setSyncMode( true );
1498 syncOK = synchronizeCalendar( mCalendar, calendar, mode ); 1498 syncOK = synchronizeCalendar( mCalendar, calendar, mode );
1499 getEventViewerDialog()->setSyncMode( false ); 1499 getEventViewerDialog()->setSyncMode( false );
1500 if ( syncOK ) { 1500 if ( syncOK ) {
1501 if ( mSyncManager->mWriteBackFile ) 1501 if ( mSyncManager->mWriteBackFile )
1502 { 1502 {
1503 storage->setSaveFormat( new ICalFormat() ); 1503 storage->setSaveFormat( new ICalFormat() );
1504 storage->save(); 1504 storage->save();
1505 } 1505 }
1506 } 1506 }
1507 setModified( true ); 1507 setModified( true );
1508 } 1508 }
1509 delete storage; 1509 delete storage;
1510 delete calendar; 1510 delete calendar;
1511 if ( syncOK ) 1511 if ( syncOK )
1512 updateView(); 1512 updateView();
1513 return syncOK; 1513 return syncOK;
1514} 1514}
1515 1515
1516void CalendarView::syncExternal( int mode ) 1516void CalendarView::syncExternal( int mode )
1517{ 1517{
1518 mGlobalSyncMode = SYNC_MODE_EXTERNAL; 1518 mGlobalSyncMode = SYNC_MODE_EXTERNAL;
1519 1519
1520 qApp->processEvents(); 1520 qApp->processEvents();
1521 CalendarLocal* calendar = new CalendarLocal(); 1521 CalendarLocal* calendar = new CalendarLocal();
1522 calendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId); 1522 calendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId);
1523 bool syncOK = false; 1523 bool syncOK = false;
1524 bool loadSuccess = false; 1524 bool loadSuccess = false;
1525 PhoneFormat* phoneFormat = 0; 1525 PhoneFormat* phoneFormat = 0;
1526 emit tempDisableBR(true); 1526 emit tempDisableBR(true);
1527#ifndef DESKTOP_VERSION 1527#ifndef DESKTOP_VERSION
1528 SharpFormat* sharpFormat = 0; 1528 SharpFormat* sharpFormat = 0;
1529 if ( mode == 0 ) { // sharp 1529 if ( mode == 0 ) { // sharp
1530 sharpFormat = new SharpFormat () ; 1530 sharpFormat = new SharpFormat () ;
1531 loadSuccess = sharpFormat->load( calendar, mCalendar ); 1531 loadSuccess = sharpFormat->load( calendar, mCalendar );
1532 1532
1533 } else 1533 } else
1534#endif 1534#endif
1535 if ( mode == 1 ) { // phone 1535 if ( mode == 1 ) { // phone
1536 phoneFormat = new PhoneFormat (mCurrentSyncDevice, 1536 phoneFormat = new PhoneFormat (mCurrentSyncDevice,
1537 mSyncManager->mPhoneDevice, 1537 mSyncManager->mPhoneDevice,
1538 mSyncManager->mPhoneConnection, 1538 mSyncManager->mPhoneConnection,
1539 mSyncManager->mPhoneModel); 1539 mSyncManager->mPhoneModel);
1540 loadSuccess = phoneFormat->load( calendar,mCalendar); 1540 loadSuccess = phoneFormat->load( calendar,mCalendar);
1541 1541
1542 } else { 1542 } else {
1543 emit tempDisableBR(false); 1543 emit tempDisableBR(false);
1544 return; 1544 return;
1545 } 1545 }
1546 if ( loadSuccess ) { 1546 if ( loadSuccess ) {
1547 getEventViewerDialog()->setSyncMode( true ); 1547 getEventViewerDialog()->setSyncMode( true );
1548 syncOK = synchronizeCalendar( mCalendar, calendar, mSyncManager->mSyncAlgoPrefs ); 1548 syncOK = synchronizeCalendar( mCalendar, calendar, mSyncManager->mSyncAlgoPrefs );
1549 getEventViewerDialog()->setSyncMode( false ); 1549 getEventViewerDialog()->setSyncMode( false );
1550 qApp->processEvents(); 1550 qApp->processEvents();
1551 if ( syncOK ) { 1551 if ( syncOK ) {
1552 if ( mSyncManager->mWriteBackFile ) 1552 if ( mSyncManager->mWriteBackFile )
1553 { 1553 {
1554 QPtrList<Incidence> iL = mCalendar->rawIncidences(); 1554 QPtrList<Incidence> iL = mCalendar->rawIncidences();
1555 Incidence* inc = iL.first(); 1555 Incidence* inc = iL.first();
1556 if ( phoneFormat ) { 1556 if ( phoneFormat ) {
1557 while ( inc ) { 1557 while ( inc ) {
1558 inc->removeID(mCurrentSyncDevice); 1558 inc->removeID(mCurrentSyncDevice);
1559 inc = iL.next(); 1559 inc = iL.next();
1560 } 1560 }
1561 } 1561 }
1562#ifndef DESKTOP_VERSION 1562#ifndef DESKTOP_VERSION
1563 if ( sharpFormat ) 1563 if ( sharpFormat )
1564 sharpFormat->save(calendar); 1564 sharpFormat->save(calendar);
1565#endif 1565#endif
1566 if ( phoneFormat ) 1566 if ( phoneFormat )
1567 phoneFormat->save(calendar); 1567 phoneFormat->save(calendar);
1568 iL = calendar->rawIncidences(); 1568 iL = calendar->rawIncidences();
1569 inc = iL.first(); 1569 inc = iL.first();
1570 Incidence* loc; 1570 Incidence* loc;
1571 while ( inc ) { 1571 while ( inc ) {
1572 if ( inc->tempSyncStat() == SYNC_TEMPSTATE_NEW_ID ) { 1572 if ( inc->tempSyncStat() == SYNC_TEMPSTATE_NEW_ID ) {
1573 loc = mCalendar->incidence(inc->uid() ); 1573 loc = mCalendar->incidence(inc->uid() );
1574 if ( loc ) { 1574 if ( loc ) {
1575 loc->setID(mCurrentSyncDevice, inc->getID(mCurrentSyncDevice) ); 1575 loc->setID(mCurrentSyncDevice, inc->getID(mCurrentSyncDevice) );
1576 loc->setCsum( mCurrentSyncDevice, inc->getCsum(mCurrentSyncDevice) ); 1576 loc->setCsum( mCurrentSyncDevice, inc->getCsum(mCurrentSyncDevice) );
1577 } 1577 }
1578 } 1578 }
1579 inc = iL.next(); 1579 inc = iL.next();
1580 } 1580 }
1581 Incidence* lse = getLastSyncEvent(); 1581 Incidence* lse = getLastSyncEvent();
1582 if ( lse ) { 1582 if ( lse ) {
1583 lse->setReadOnly( false ); 1583 lse->setReadOnly( false );
1584 lse->setDescription( "" ); 1584 lse->setDescription( "" );
1585 lse->setReadOnly( true ); 1585 lse->setReadOnly( true );
1586 } 1586 }
1587 } 1587 }
1588 } else { 1588 } else {
1589 topLevelWidget()->setCaption( i18n("Sync cancelled or failed.") ); 1589 topLevelWidget()->setCaption( i18n("Sync cancelled or failed.") );
1590 } 1590 }
1591 setModified( true ); 1591 setModified( true );
1592 } else { 1592 } else {
1593 QString question = i18n("Sorry, the database access\ncommand failed!\n\nNothing synced!\n") ; 1593 QString question = i18n("Sorry, the database access\ncommand failed!\n\nNothing synced!\n") ;
1594 QMessageBox::information( 0, i18n("KO/Pi Import - ERROR"), 1594 QMessageBox::information( 0, i18n("KO/Pi Import - ERROR"),
1595 question, i18n("Ok")) ; 1595 question, i18n("Ok")) ;
1596 1596
1597 } 1597 }
1598 delete calendar; 1598 delete calendar;
1599 updateView(); 1599 updateView();
1600 emit tempDisableBR(false); 1600 emit tempDisableBR(false);
1601 return ;//syncOK; 1601 return ;//syncOK;
1602 1602
1603} 1603}
1604 1604
1605bool CalendarView::importBday() 1605bool CalendarView::importBday()
1606{ 1606{
1607#ifndef KORG_NOKABC 1607#ifndef KORG_NOKABC
1608 1608
1609#ifdef DESKTOP_VERSION 1609#ifdef DESKTOP_VERSION
1610 KABC::StdAddressBook* AddressBook = KABC::StdAddressBook::self( true ); 1610 KABC::StdAddressBook* AddressBook = KABC::StdAddressBook::self( true );
1611 KABC::AddressBook::Iterator it; 1611 KABC::AddressBook::Iterator it;
1612 int count = 0; 1612 int count = 0;
1613 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) { 1613 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) {
1614 ++count; 1614 ++count;
1615 } 1615 }
1616 QProgressBar bar(count,0 ); 1616 QProgressBar bar(count,0 );
1617 int w = 300; 1617 int w = 300;
1618 if ( QApplication::desktop()->width() < 320 ) 1618 if ( QApplication::desktop()->width() < 320 )
1619 w = 220; 1619 w = 220;
1620 int h = bar.sizeHint().height() ; 1620 int h = bar.sizeHint().height() ;
1621 int dw = QApplication::desktop()->width(); 1621 int dw = QApplication::desktop()->width();
1622 int dh = QApplication::desktop()->height(); 1622 int dh = QApplication::desktop()->height();
1623 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 1623 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
1624 bar.show(); 1624 bar.show();
1625 bar.setCaption (i18n("Reading addressbook - close to abort!") ); 1625 bar.setCaption (i18n("Reading addressbook - close to abort!") );
1626 qApp->processEvents(); 1626 qApp->processEvents();
1627 count = 0; 1627 count = 0;
1628 int addCount = 0; 1628 int addCount = 0;
1629 KCal::Attendee* a = 0; 1629 KCal::Attendee* a = 0;
1630 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) { 1630 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) {
1631 if ( ! bar.isVisible() ) 1631 if ( ! bar.isVisible() )
1632 return false; 1632 return false;
1633 bar.setProgress( count++ ); 1633 bar.setProgress( count++ );
1634 qApp->processEvents(); 1634 qApp->processEvents();
1635 //qDebug("add BDay %s %s", (*it).realName().latin1(),(*it).birthday().date().toString().latin1() ); 1635 //qDebug("add BDay %s %s", (*it).realName().latin1(),(*it).birthday().date().toString().latin1() );
1636 if ( (*it).birthday().date().isValid() ){ 1636 if ( (*it).birthday().date().isValid() ){
1637 a = new KCal::Attendee( (*it).realName(), (*it).preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,(*it).uid()) ; 1637 a = new KCal::Attendee( (*it).realName(), (*it).preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,(*it).uid()) ;
1638 if ( addAnniversary( (*it).birthday().date(), (*it).assembledName(), a, true ) ) 1638 if ( addAnniversary( (*it).birthday().date(), (*it).assembledName(), a, true ) )
1639 ++addCount; 1639 ++addCount;
1640 } 1640 }
1641 QDate anni = KGlobal::locale()->readDate( (*it).custom("KADDRESSBOOK", "X-Anniversary" ), "%Y-%m-%d"); 1641 QDate anni = KGlobal::locale()->readDate( (*it).custom("KADDRESSBOOK", "X-Anniversary" ), "%Y-%m-%d");
1642 if ( anni.isValid() ){ 1642 if ( anni.isValid() ){
1643 a = new KCal::Attendee( (*it).realName(), (*it).preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,(*it).uid()) ; 1643 a = new KCal::Attendee( (*it).realName(), (*it).preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,(*it).uid()) ;
1644 if ( addAnniversary( anni, (*it).assembledName(), a, false ) ) 1644 if ( addAnniversary( anni, (*it).assembledName(), a, false ) )
1645 ++addCount; 1645 ++addCount;
1646 } 1646 }
1647 } 1647 }
1648 updateView(); 1648 updateView();
1649 topLevelWidget()->setCaption(QString::number( addCount )+ i18n(" birthdays/anniversaries added!")); 1649 topLevelWidget()->setCaption(QString::number( addCount )+ i18n(" birthdays/anniversaries added!"));
1650#else //DESKTOP_VERSION 1650#else //DESKTOP_VERSION
1651 1651
1652 ExternalAppHandler::instance()->requestBirthdayListFromKAPI("QPE/Application/kopi", this->name() /* name is here the unique uid*/); 1652 ExternalAppHandler::instance()->requestBirthdayListFromKAPI("QPE/Application/kopi", this->name() /* name is here the unique uid*/);
1653 // the result should now arrive through method insertBirthdays 1653 // the result should now arrive through method insertBirthdays
1654 1654
1655#endif //DESKTOP_VERSION 1655#endif //DESKTOP_VERSION
1656 1656
1657#endif //KORG_NOKABC 1657#endif //KORG_NOKABC
1658 1658
1659 1659
1660 return true; 1660 return true;
1661} 1661}
1662 1662
1663// This method will be called from Ka/Pi as a response to requestBirthdayListFromKAPI 1663// This method will be called from Ka/Pi as a response to requestBirthdayListFromKAPI
1664void CalendarView::insertBirthdays(const QString& uid, const QStringList& birthdayList, 1664void CalendarView::insertBirthdays(const QString& uid, const QStringList& birthdayList,
1665 const QStringList& anniversaryList, const QStringList& realNameList, 1665 const QStringList& anniversaryList, const QStringList& realNameList,
1666 const QStringList& emailList, const QStringList& assembledNameList, 1666 const QStringList& emailList, const QStringList& assembledNameList,
1667 const QStringList& uidList) 1667 const QStringList& uidList)
1668{ 1668{
1669 //qDebug("KO::CalendarView::insertBirthdays"); 1669 //qDebug("KO::CalendarView::insertBirthdays");
1670 if (uid == this->name()) 1670 if (uid == this->name())
1671 { 1671 {
1672 int count = birthdayList.count(); 1672 int count = birthdayList.count();
1673 int addCount = 0; 1673 int addCount = 0;
1674 KCal::Attendee* a = 0; 1674 KCal::Attendee* a = 0;
1675 1675
1676 //qDebug("CalView 1 %i", count); 1676 //qDebug("CalView 1 %i", count);
1677 1677
1678 QProgressBar bar(count,0 ); 1678 QProgressBar bar(count,0 );
1679 int w = 300; 1679 int w = 300;
1680 if ( QApplication::desktop()->width() < 320 ) 1680 if ( QApplication::desktop()->width() < 320 )
1681 w = 220; 1681 w = 220;
1682 int h = bar.sizeHint().height() ; 1682 int h = bar.sizeHint().height() ;
1683 int dw = QApplication::desktop()->width(); 1683 int dw = QApplication::desktop()->width();
1684 int dh = QApplication::desktop()->height(); 1684 int dh = QApplication::desktop()->height();
1685 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 1685 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
1686 bar.show(); 1686 bar.show();
1687 bar.setCaption (i18n("inserting birthdays - close to abort!") ); 1687 bar.setCaption (i18n("inserting birthdays - close to abort!") );
1688 qApp->processEvents(); 1688 qApp->processEvents();
1689 1689
1690 QDate birthday; 1690 QDate birthday;
1691 QDate anniversary; 1691 QDate anniversary;
1692 QString realName; 1692 QString realName;
1693 QString email; 1693 QString email;
1694 QString assembledName; 1694 QString assembledName;
1695 QString uid; 1695 QString uid;
1696 bool ok = true; 1696 bool ok = true;
1697 for ( int i = 0; i < count; i++) 1697 for ( int i = 0; i < count; i++)
1698 { 1698 {
1699 if ( ! bar.isVisible() ) 1699 if ( ! bar.isVisible() )
1700 return; 1700 return;
1701 bar.setProgress( i ); 1701 bar.setProgress( i );
1702 qApp->processEvents(); 1702 qApp->processEvents();
1703 1703
1704 birthday = KGlobal::locale()->readDate(birthdayList[i], KLocale::ISODate, &ok); 1704 birthday = KGlobal::locale()->readDate(birthdayList[i], KLocale::ISODate, &ok);
1705 if (!ok) { 1705 if (!ok) {
1706 ;//qDebug("CalendarView::insertBirthdays found invalid birthday: %s",birthdayList[i].latin1()); 1706 ;//qDebug("CalendarView::insertBirthdays found invalid birthday: %s",birthdayList[i].latin1());
1707 } 1707 }
1708 1708
1709 anniversary = KGlobal::locale()->readDate(anniversaryList[i], KLocale::ISODate, &ok); 1709 anniversary = KGlobal::locale()->readDate(anniversaryList[i], KLocale::ISODate, &ok);
1710 if (!ok) { 1710 if (!ok) {
1711 ;//qDebug("CalendarView::insertBirthdays found invalid anniversary: %s",anniversaryList[i].latin1()); 1711 ;//qDebug("CalendarView::insertBirthdays found invalid anniversary: %s",anniversaryList[i].latin1());
1712 } 1712 }
1713 realName = realNameList[i]; 1713 realName = realNameList[i];
1714 email = emailList[i]; 1714 email = emailList[i];
1715 assembledName = assembledNameList[i]; 1715 assembledName = assembledNameList[i];
1716 uid = uidList[i]; 1716 uid = uidList[i];
1717 //qDebug("insert birthday in KO/Pi: %s,%s,%s,%s: %s, %s", realName.latin1(), email.latin1(), assembledName.latin1(), uid.latin1(), birthdayList[i].latin1(), anniversaryList[i].latin1() ); 1717 //qDebug("insert birthday in KO/Pi: %s,%s,%s,%s: %s, %s", realName.latin1(), email.latin1(), assembledName.latin1(), uid.latin1(), birthdayList[i].latin1(), anniversaryList[i].latin1() );
1718 1718
1719 if ( birthday.isValid() ){ 1719 if ( birthday.isValid() ){
1720 a = new KCal::Attendee( realName, email,false,KCal::Attendee::NeedsAction, 1720 a = new KCal::Attendee( realName, email,false,KCal::Attendee::NeedsAction,
1721 KCal::Attendee::ReqParticipant,uid) ; 1721 KCal::Attendee::ReqParticipant,uid) ;
1722 if ( addAnniversary( birthday, assembledName, a, true ) ) 1722 if ( addAnniversary( birthday, assembledName, a, true ) )
1723 ++addCount; 1723 ++addCount;
1724 } 1724 }
1725 1725
1726 if ( anniversary.isValid() ){ 1726 if ( anniversary.isValid() ){
1727 a = new KCal::Attendee( realName, email,false,KCal::Attendee::NeedsAction, 1727 a = new KCal::Attendee( realName, email,false,KCal::Attendee::NeedsAction,
1728 KCal::Attendee::ReqParticipant,uid) ; 1728 KCal::Attendee::ReqParticipant,uid) ;
1729 if ( addAnniversary( anniversary, assembledName, a, false ) ) 1729 if ( addAnniversary( anniversary, assembledName, a, false ) )
1730 ++addCount; 1730 ++addCount;
1731 } 1731 }
1732 } 1732 }
1733 1733
1734 updateView(); 1734 updateView();
1735 topLevelWidget()->setCaption(QString::number( addCount )+ i18n(" birthdays/anniversaries added!")); 1735 topLevelWidget()->setCaption(QString::number( addCount )+ i18n(" birthdays/anniversaries added!"));
1736 1736
1737 } 1737 }
1738 1738
1739} 1739}
1740 1740
1741 1741
1742 1742
1743bool CalendarView::addAnniversary( QDate date, QString name, KCal::Attendee* a, bool birthday) 1743bool CalendarView::addAnniversary( QDate date, QString name, KCal::Attendee* a, bool birthday)
1744{ 1744{
1745 //qDebug("addAnni "); 1745 //qDebug("addAnni ");
1746 Event * ev = new Event(); 1746 Event * ev = new Event();
1747 ev->setOrganizer(KOPrefs::instance()->email()); 1747 ev->setOrganizer(KOPrefs::instance()->email());
1748 if ( a ) { 1748 if ( a ) {
1749 ev->addAttendee( a ); 1749 ev->addAttendee( a );
1750 } 1750 }
1751 QString kind; 1751 QString kind;
1752 if ( birthday ) { 1752 if ( birthday ) {
1753 kind = i18n( "Birthday" ); 1753 kind = i18n( "Birthday" );
1754 ev->setSummary( name + " (" + QString::number(date.year()) +")"); 1754 ev->setSummary( name + " (" + QString::number(date.year()) +")");
1755 } 1755 }
1756 else { 1756 else {
1757 kind = i18n( "Anniversary" ); 1757 kind = i18n( "Anniversary" );
1758 ev->setSummary( name + " (" + QString::number(date.year()) +") " + kind ); 1758 ev->setSummary( name + " (" + QString::number(date.year()) +") " + kind );
1759 } 1759 }
1760 ev->setCategories( kind ); 1760 ev->setCategories( kind );
1761 ev->setDtStart( QDateTime(date) ); 1761 ev->setDtStart( QDateTime(date) );
1762 ev->setDtEnd( QDateTime(date) ); 1762 ev->setDtEnd( QDateTime(date) );
1763 ev->setFloats( true ); 1763 ev->setFloats( true );
1764 Recurrence * rec = ev->recurrence(); 1764 Recurrence * rec = ev->recurrence();
1765 rec->setYearly(Recurrence::rYearlyMonth,1,-1); 1765 rec->setYearly(Recurrence::rYearlyMonth,1,-1);
1766 rec->addYearlyNum( date.month() ); 1766 rec->addYearlyNum( date.month() );
1767 if ( !mCalendar->addAnniversaryNoDup( ev ) ) { 1767 if ( !mCalendar->addAnniversaryNoDup( ev ) ) {
1768 delete ev; 1768 delete ev;
1769 return false; 1769 return false;
1770 } 1770 }
1771 return true; 1771 return true;
1772 1772
1773} 1773}
1774bool CalendarView::importQtopia( const QString &categories, 1774bool CalendarView::importQtopia( const QString &categories,
1775 const QString &datebook, 1775 const QString &datebook,
1776 const QString &todolist ) 1776 const QString &todolist )
1777{ 1777{
1778 1778
1779 QtopiaFormat qtopiaFormat; 1779 QtopiaFormat qtopiaFormat;
1780 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories)); 1780 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories));
1781 if ( !categories.isEmpty() ) qtopiaFormat.load( mCalendar, categories ); 1781 if ( !categories.isEmpty() ) qtopiaFormat.load( mCalendar, categories );
1782 if ( !datebook.isEmpty() ) qtopiaFormat.load( mCalendar, datebook ); 1782 if ( !datebook.isEmpty() ) qtopiaFormat.load( mCalendar, datebook );
1783 if ( !todolist.isEmpty() ) qtopiaFormat.load( mCalendar, todolist ); 1783 if ( !todolist.isEmpty() ) qtopiaFormat.load( mCalendar, todolist );
1784 1784
1785 updateView(); 1785 updateView();
1786 return true; 1786 return true;
1787 1787
1788#if 0 1788#if 0
1789 mGlobalSyncMode = SYNC_MODE_QTOPIA; 1789 mGlobalSyncMode = SYNC_MODE_QTOPIA;
1790 mCurrentSyncDevice = "qtopia-XML"; 1790 mCurrentSyncDevice = "qtopia-XML";
1791 if ( mSyncManager->mAskForPreferences ) 1791 if ( mSyncManager->mAskForPreferences )
1792 edit_sync_options(); 1792 edit_sync_options();
1793 qApp->processEvents(); 1793 qApp->processEvents();
1794 CalendarLocal* calendar = new CalendarLocal(); 1794 CalendarLocal* calendar = new CalendarLocal();
1795 calendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId); 1795 calendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId);
1796 bool syncOK = false; 1796 bool syncOK = false;
1797 QtopiaFormat qtopiaFormat; 1797 QtopiaFormat qtopiaFormat;
1798 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories)); 1798 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories));
1799 bool loadOk = true; 1799 bool loadOk = true;
1800 if ( !categories.isEmpty() ) 1800 if ( !categories.isEmpty() )
1801 loadOk = qtopiaFormat.load( calendar, categories ); 1801 loadOk = qtopiaFormat.load( calendar, categories );
1802 if ( loadOk && !datebook.isEmpty() ) 1802 if ( loadOk && !datebook.isEmpty() )
1803 loadOk = qtopiaFormat.load( calendar, datebook ); 1803 loadOk = qtopiaFormat.load( calendar, datebook );
1804 if ( loadOk && !todolist.isEmpty() ) 1804 if ( loadOk && !todolist.isEmpty() )
1805 loadOk = qtopiaFormat.load( calendar, todolist ); 1805 loadOk = qtopiaFormat.load( calendar, todolist );
1806 1806
1807 if ( loadOk ) { 1807 if ( loadOk ) {
1808 getEventViewerDialog()->setSyncMode( true ); 1808 getEventViewerDialog()->setSyncMode( true );
1809 syncOK = synchronizeCalendar( mCalendar, calendar, mSyncManager->mSyncAlgoPrefs ); 1809 syncOK = synchronizeCalendar( mCalendar, calendar, mSyncManager->mSyncAlgoPrefs );
1810 getEventViewerDialog()->setSyncMode( false ); 1810 getEventViewerDialog()->setSyncMode( false );
1811 qApp->processEvents(); 1811 qApp->processEvents();
1812 if ( syncOK ) { 1812 if ( syncOK ) {
1813 if ( mSyncManager->mWriteBackFile ) 1813 if ( mSyncManager->mWriteBackFile )
1814 { 1814 {
1815 // write back XML file 1815 // write back XML file
1816 1816
1817 } 1817 }
1818 setModified( true ); 1818 setModified( true );
1819 } 1819 }
1820 } else { 1820 } else {
1821 QString question = i18n("Sorry, the file loading\ncommand failed!\n\nNothing synced!\n") ; 1821 QString question = i18n("Sorry, the file loading\ncommand failed!\n\nNothing synced!\n") ;
1822 QMessageBox::information( 0, i18n("KO/Pi Sync - ERROR"), 1822 QMessageBox::information( 0, i18n("KO/Pi Sync - ERROR"),
1823 question, i18n("Ok")) ; 1823 question, i18n("Ok")) ;
1824 } 1824 }
1825 delete calendar; 1825 delete calendar;
1826 updateView(); 1826 updateView();
1827 return syncOK; 1827 return syncOK;
1828 1828
1829 1829
1830#endif 1830#endif
1831 1831
1832} 1832}
1833 1833
1834void CalendarView::setSyncEventsReadOnly() 1834void CalendarView::setSyncEventsReadOnly()
1835{ 1835{
1836 Event * ev; 1836 mCalendar->setSyncEventsReadOnly();
1837 QPtrList<Event> eL = mCalendar->rawEvents();
1838 ev = eL.first();
1839 while ( ev ) {
1840 if ( ev->uid().left(15) == QString("last-syncEvent-") )
1841 ev->setReadOnly( true );
1842 ev = eL.next();
1843 }
1844} 1837}
1845 1838
1846bool CalendarView::loadCalendars() 1839bool CalendarView::loadCalendars()
1847{ 1840{
1848 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars; 1841 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars;
1849 KopiCalendarFile * cal = calendars.first(); 1842 KopiCalendarFile * cal = calendars.first();
1850 mCalendar->setDefaultCalendar( 1 ); 1843 mCalendar->setDefaultCalendar( 1 );
1851 openCalendar( MainWindow::defaultFileName(), false ); 1844 openCalendar( MainWindow::defaultFileName(), false );
1852 cal = calendars.next(); 1845 cal = calendars.next();
1853 while ( cal ) { 1846 while ( cal ) {
1854 addCalendar( cal ); 1847 addCalendar( cal );
1855 cal = calendars.next(); 1848 cal = calendars.next();
1856 } 1849 }
1857 restoreCalendarSettings(); 1850 restoreCalendarSettings();
1858 return true; 1851 return true;
1859} 1852}
1860bool CalendarView::restoreCalendarSettings() 1853bool CalendarView::restoreCalendarSettings()
1861{ 1854{
1862 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars; 1855 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars;
1863 KopiCalendarFile * cal = calendars.first(); 1856 KopiCalendarFile * cal = calendars.first();
1864 while ( cal ) { 1857 while ( cal ) {
1865 mCalendar->setCalendarEnabled( cal->mCalNumber,cal->isEnabled ); 1858 mCalendar->setCalendarEnabled( cal->mCalNumber,cal->isEnabled );
1866 mCalendar->setAlarmEnabled( cal->mCalNumber, cal->isAlarmEnabled ); 1859 mCalendar->setAlarmEnabled( cal->mCalNumber, cal->isAlarmEnabled );
1867 mCalendar->setReadOnly( cal->mCalNumber, cal->isReadOnly ); 1860 mCalendar->setReadOnly( cal->mCalNumber, cal->isReadOnly );
1868 if ( cal->isStandard ) 1861 if ( cal->isStandard )
1869 mCalendar->setDefaultCalendar( cal->mCalNumber ); 1862 mCalendar->setDefaultCalendar( cal->mCalNumber );
1870 cal = calendars.next(); 1863 cal = calendars.next();
1871 } 1864 }
1872 setSyncEventsReadOnly(); 1865 setSyncEventsReadOnly();
1873 mCalendar->reInitAlarmSettings(); 1866 mCalendar->reInitAlarmSettings();
1874 updateUnmanagedViews(); 1867 updateUnmanagedViews();
1875 updateView(); 1868 updateView();
1876 return true; 1869 return true;
1877} 1870}
1878void CalendarView::addCalendarId( int id ) 1871void CalendarView::addCalendarId( int id )
1879{ 1872{
1880 KopiCalendarFile * cal = KOPrefs::instance()->getCalendar( id ); 1873 KopiCalendarFile * cal = KOPrefs::instance()->getCalendar( id );
1881 addCalendar( cal ); 1874 addCalendar( cal );
1882} 1875}
1883bool CalendarView::addCalendar( KopiCalendarFile * cal ) 1876bool CalendarView::addCalendar( KopiCalendarFile * cal )
1884{ 1877{
1885 cal->mErrorOnLoad = false; 1878 cal->mErrorOnLoad = false;
1886 if ( mCalendar->addCalendarFile( cal->mFileName, cal->mCalNumber )) { 1879 if ( mCalendar->addCalendarFile( cal->mFileName, cal->mCalNumber )) {
1887 cal->mLoadDt = QDateTime::currentDateTime(); 1880 cal->mLoadDt = QDateTime::currentDateTime();
1888 return true; 1881 return true;
1889 } 1882 }
1890 qDebug("KO: Error adding calendar file %1 ",cal->mFileName.latin1() ); 1883 qDebug("KO: Error adding calendar file %1 ",cal->mFileName.latin1() );
1891 KMessageBox::error(this,i18n("Error loading calendar file\n%1.").arg(cal->mFileName)); 1884 KMessageBox::error(this,i18n("Error loading calendar file\n%1.").arg(cal->mFileName));
1892 cal->mErrorOnLoad = true; 1885 cal->mErrorOnLoad = true;
1893 return false; 1886 return false;
1894} 1887}
1895bool CalendarView::openCalendar(QString filename, bool merge) 1888bool CalendarView::openCalendar(QString filename, bool merge)
1896{ 1889{
1897 1890
1898 if (filename.isEmpty()) { 1891 if (filename.isEmpty()) {
1899 return false; 1892 return false;
1900 } 1893 }
1901 1894
1902 if (!QFile::exists(filename)) { 1895 if (!QFile::exists(filename)) {
1903 KMessageBox::error(this,i18n("File does not exist:\n '%1'.").arg(filename)); 1896 KMessageBox::error(this,i18n("File does not exist:\n '%1'.").arg(filename));
1904 return false; 1897 return false;
1905 } 1898 }
1906 1899
1907 globalFlagBlockAgenda = 1; 1900 globalFlagBlockAgenda = 1;
1908 clearAllViews(); 1901 clearAllViews();
1909 if (!merge) { 1902 if (!merge) {
1910 mViewManager->setDocumentId( filename ); 1903 mViewManager->setDocumentId( filename );
1911 mCalendar->close(); 1904 mCalendar->close();
1912 } 1905 }
1913 mStorage->setFileName( filename ); 1906 mStorage->setFileName( filename );
1914 1907
1915 if ( mStorage->load() ) { 1908 if ( mStorage->load() ) {
1916 if ( merge ) ;//setModified( true ); 1909 if ( merge ) ;//setModified( true );
1917 else { 1910 else {
1918 //setModified( true ); 1911 //setModified( true );
1919 mViewManager->setDocumentId( filename ); 1912 mViewManager->setDocumentId( filename );
1920 mDialogManager->setDocumentId( filename ); 1913 mDialogManager->setDocumentId( filename );
1921 mTodoList->setDocumentId( filename ); 1914 mTodoList->setDocumentId( filename );
1922 } 1915 }
1923 globalFlagBlockAgenda = 2; 1916 globalFlagBlockAgenda = 2;
1924 // if ( getLastSyncEvent() ) 1917 // if ( getLastSyncEvent() )
1925 // getLastSyncEvent()->setReadOnly( true ); 1918 // getLastSyncEvent()->setReadOnly( true );
1926 mCalendar->reInitAlarmSettings(); 1919 mCalendar->reInitAlarmSettings();
1927 setSyncEventsReadOnly(); 1920 setSyncEventsReadOnly();
1928 updateUnmanagedViews(); 1921 updateUnmanagedViews();
1929 updateView(); 1922 updateView();
1930 if ( filename != MainWindow::defaultFileName() ) { 1923 if ( filename != MainWindow::defaultFileName() ) {
1931 saveCalendar( MainWindow::defaultFileName() ); 1924 saveCalendar( MainWindow::defaultFileName() );
1932 } else { 1925 } else {
1933 QFileInfo finf ( MainWindow::defaultFileName()); 1926 QFileInfo finf ( MainWindow::defaultFileName());
1934 if ( finf.exists() ) { 1927 if ( finf.exists() ) {
1935 setLoadedFileVersion( finf.lastModified () ); 1928 setLoadedFileVersion( finf.lastModified () );
1936 } 1929 }
1937 } 1930 }
1938 return true; 1931 return true;
1939 } else { 1932 } else {
1940 // while failing to load, the calendar object could 1933 // while failing to load, the calendar object could
1941 // have become partially populated. Clear it out. 1934 // have become partially populated. Clear it out.
1942 if ( !merge ) { 1935 if ( !merge ) {
1943 mCalendar->close(); 1936 mCalendar->close();
1944 mViewManager->setDocumentId( filename ); 1937 mViewManager->setDocumentId( filename );
1945 mDialogManager->setDocumentId( filename ); 1938 mDialogManager->setDocumentId( filename );
1946 mTodoList->setDocumentId( filename ); 1939 mTodoList->setDocumentId( filename );
1947 } 1940 }
1948 1941
1949 //KMessageBox::error(this,i18n("Couldn't load calendar\n '%1'.").arg(filename)); 1942 //KMessageBox::error(this,i18n("Couldn't load calendar\n '%1'.").arg(filename));
1950 1943
1951 QTimer::singleShot ( 1, this, SLOT ( showOpenError() ) ); 1944 QTimer::singleShot ( 1, this, SLOT ( showOpenError() ) );
1952 globalFlagBlockAgenda = 2; 1945 globalFlagBlockAgenda = 2;
1953 mCalendar->reInitAlarmSettings(); 1946 mCalendar->reInitAlarmSettings();
1954 setSyncEventsReadOnly(); 1947 setSyncEventsReadOnly();
1955 updateUnmanagedViews(); 1948 updateUnmanagedViews();
1956 updateView(); 1949 updateView();
1957 } 1950 }
1958 return false; 1951 return false;
1959} 1952}
1960void CalendarView::showOpenError() 1953void CalendarView::showOpenError()
1961{ 1954{
1962 KMessageBox::error(this,i18n("Couldn't load calendar\n.")); 1955 KMessageBox::error(this,i18n("Couldn't load calendar\n."));
1963} 1956}
1964void CalendarView::setLoadedFileVersion(QDateTime dt) 1957void CalendarView::setLoadedFileVersion(QDateTime dt)
1965{ 1958{
1966 loadedFileVersion = dt; 1959 loadedFileVersion = dt;
1967} 1960}
1968bool CalendarView::checkFileChanged(QString fn) 1961bool CalendarView::checkFileChanged(QString fn)
1969{ 1962{
1970 QFileInfo finf ( fn ); 1963 QFileInfo finf ( fn );
1971 if ( !finf.exists() ) 1964 if ( !finf.exists() )
1972 return true; 1965 return true;
1973 QDateTime dt = finf.lastModified (); 1966 QDateTime dt = finf.lastModified ();
1974 if ( dt <= loadedFileVersion ) 1967 if ( dt <= loadedFileVersion )
1975 return false; 1968 return false;
1976 return true; 1969 return true;
1977 1970
1978} 1971}
1979void CalendarView::watchSavedFile() 1972void CalendarView::watchSavedFile()
1980{ 1973{
1981 QFileInfo finf ( MainWindow::defaultFileName()); 1974 QFileInfo finf ( MainWindow::defaultFileName());
1982 if ( !finf.exists() ) 1975 if ( !finf.exists() )
1983 return; 1976 return;
1984 QDateTime dt = finf.lastModified (); 1977 QDateTime dt = finf.lastModified ();
1985 if ( dt < loadedFileVersion ) { 1978 if ( dt < loadedFileVersion ) {
1986 //qDebug("watch %s %s ", dt.toString().latin1(), loadedFileVersion.toString().latin1()); 1979 //qDebug("watch %s %s ", dt.toString().latin1(), loadedFileVersion.toString().latin1());
1987 QTimer::singleShot( 1000 , this, SLOT ( watchSavedFile() ) ); 1980 QTimer::singleShot( 1000 , this, SLOT ( watchSavedFile() ) );
1988 return; 1981 return;
1989 } 1982 }
1990 loadedFileVersion = dt; 1983 loadedFileVersion = dt;
1991} 1984}
1992bool CalendarView::checkAllFileVersions() 1985bool CalendarView::checkAllFileVersions()
1993{ 1986{
1994 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars; 1987 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars;
1995 KopiCalendarFile * cal = calendars.first(); 1988 KopiCalendarFile * cal = calendars.first();
1996 mCalendar->setDefaultCalendar( 1 ); 1989 mCalendar->setDefaultCalendar( 1 );
1997 mCalendar->setDefaultCalendarEnabledOnly(); 1990 mCalendar->setDefaultCalendarEnabledOnly();
1998 if ( !cal->isReadOnly && !cal->mErrorOnLoad ) { 1991 if ( !cal->isReadOnly && !cal->mErrorOnLoad ) {
1999 if ( !checkFileVersion(MainWindow::defaultFileName())) { 1992 if ( !checkFileVersion(MainWindow::defaultFileName())) {
2000 restoreCalendarSettings(); 1993 restoreCalendarSettings();
2001 return false; 1994 return false;
2002 } 1995 }
2003 } 1996 }
2004 cal = calendars.next(); 1997 cal = calendars.next();
2005 QDateTime storeTemp = loadedFileVersion; 1998 QDateTime storeTemp = loadedFileVersion;
2006 while ( cal ) { 1999 while ( cal ) {
2007 if ( !cal->isReadOnly && !cal->mErrorOnLoad ) { 2000 if ( !cal->isReadOnly && !cal->mErrorOnLoad ) {
2008 mCalendar->setDefaultCalendar( cal->mCalNumber ); 2001 mCalendar->setDefaultCalendar( cal->mCalNumber );
2009 mCalendar->setDefaultCalendarEnabledOnly(); 2002 mCalendar->setDefaultCalendarEnabledOnly();
2010 loadedFileVersion = cal->mLoadDt.addSecs( 15 ); 2003 loadedFileVersion = cal->mLoadDt.addSecs( 15 );
2011 if ( !checkFileVersion(cal->mFileName )) { 2004 if ( !checkFileVersion(cal->mFileName )) {
2012 loadedFileVersion = storeTemp; 2005 loadedFileVersion = storeTemp;
2013 restoreCalendarSettings(); 2006 restoreCalendarSettings();
2014 return false; 2007 return false;
2015 } 2008 }
2016 } 2009 }
2017 cal = calendars.next(); 2010 cal = calendars.next();
2018 } 2011 }
2019 loadedFileVersion = storeTemp; 2012 loadedFileVersion = storeTemp;
2020 return true; 2013 return true;
2021} 2014}
2022bool CalendarView::checkFileVersion(QString fn) 2015bool CalendarView::checkFileVersion(QString fn)
2023{ 2016{
2024 QFileInfo finf ( fn ); 2017 QFileInfo finf ( fn );
2025 if ( !finf.exists() ) 2018 if ( !finf.exists() )
2026 return true; 2019 return true;
2027 QDateTime dt = finf.lastModified (); 2020 QDateTime dt = finf.lastModified ();
2028 qDebug("loaded file version %s %s", fn.latin1(), loadedFileVersion.toString().latin1()); 2021 qDebug("loaded file version %s %s", fn.latin1(), loadedFileVersion.toString().latin1());
2029 qDebug("file on disk version %s %s", fn.latin1(),dt.toString().latin1()); 2022 qDebug("file on disk version %s %s", fn.latin1(),dt.toString().latin1());
2030 if ( dt <= loadedFileVersion ) 2023 if ( dt <= loadedFileVersion )
2031 return true; 2024 return true;
2032 int km = KMessageBox::warningYesNoCancel(this, i18n("\nThe file\n%1\n on disk has changed!\nFile size: %2 bytes.\nLast modified: %3\nDo you want to:\n\n - Save and overwrite file?\n - Sync with file, then save?\n - Cancel without saving? \n").arg(fn).arg( QString::number( finf.size())).arg( KGlobal::locale()->formatDateTime(finf.lastModified (), true, true)) , 2025 int km = KMessageBox::warningYesNoCancel(this, i18n("\nThe file\n%1\n on disk has changed!\nFile size: %2 bytes.\nLast modified: %3\nDo you want to:\n\n - Save and overwrite file?\n - Sync with file, then save?\n - Cancel without saving? \n").arg(fn).arg( QString::number( finf.size())).arg( KGlobal::locale()->formatDateTime(finf.lastModified (), true, true)) ,
2033 i18n("KO/Pi Warning"),i18n("Overwrite"), 2026 i18n("KO/Pi Warning"),i18n("Overwrite"),
2034 i18n("Sync+save")); 2027 i18n("Sync+save"));
2035 2028
2036 if ( km == KMessageBox::Cancel ) 2029 if ( km == KMessageBox::Cancel )
2037 return false; 2030 return false;
2038 if ( km == KMessageBox::Yes ) 2031 if ( km == KMessageBox::Yes )
2039 return true; 2032 return true;
2040 2033
2041 setSyncDevice("deleteaftersync" ); 2034 setSyncDevice("deleteaftersync" );
2042 mSyncManager->mAskForPreferences = true; 2035 mSyncManager->mAskForPreferences = true;
2043 mSyncManager->mSyncAlgoPrefs = 3; 2036 mSyncManager->mSyncAlgoPrefs = 3;
2044 mSyncManager->mWriteBackFile = false; 2037 mSyncManager->mWriteBackFile = false;
2045 mSyncManager->mWriteBackExistingOnly = false; 2038 mSyncManager->mWriteBackExistingOnly = false;
2046 mSyncManager->mShowSyncSummary = false; 2039 mSyncManager->mShowSyncSummary = false;
2047 syncCalendar( fn, 3 ); 2040 syncCalendar( fn, 3 );
2048 Event * e = getLastSyncEvent(); 2041 Event * e = getLastSyncEvent();
2049 if ( e ) 2042 if ( e )
2050 mCalendar->deleteEvent( e ); 2043 mCalendar->deleteEvent( e );
2051 return true; 2044 return true;
2052} 2045}
2053bool CalendarView::saveCalendars() 2046bool CalendarView::saveCalendars()
2054{ 2047{
2055 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars; 2048 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars;
2056 KopiCalendarFile * cal = calendars.first(); 2049 KopiCalendarFile * cal = calendars.first();
2057 mCalendar->setDefaultCalendar( 1 ); 2050 mCalendar->setDefaultCalendar( 1 );
2058 mCalendar->setDefaultCalendarEnabledOnly(); 2051 mCalendar->setDefaultCalendarEnabledOnly();
2059 saveCalendar( MainWindow::defaultFileName() ); 2052 saveCalendar( MainWindow::defaultFileName() );
2060 cal = calendars.next(); 2053 cal = calendars.next();
2061 while ( cal ) { 2054 while ( cal ) {
2062 if ( !cal->isReadOnly && !cal->mErrorOnLoad ) { 2055 if ( !cal->isReadOnly && !cal->mErrorOnLoad ) {
2063 mCalendar->setDefaultCalendar( cal->mCalNumber ); 2056 mCalendar->setDefaultCalendar( cal->mCalNumber );
2064 mCalendar->setDefaultCalendarEnabledOnly(); 2057 mCalendar->setDefaultCalendarEnabledOnly();
2065 if ( saveCalendar( cal->mFileName ) ) 2058 if ( saveCalendar( cal->mFileName ) )
2066 cal->mLoadDt = QDateTime::currentDateTime(); 2059 cal->mLoadDt = QDateTime::currentDateTime();
2067 } 2060 }
2068 cal = calendars.next(); 2061 cal = calendars.next();
2069 } 2062 }
2070 restoreCalendarSettings(); 2063 restoreCalendarSettings();
2071 return true; 2064 return true;
2072} 2065}
2073bool CalendarView::saveCalendar( QString filename ) 2066bool CalendarView::saveCalendar( QString filename )
2074{ 2067{
2075 2068
2076 // Store back all unsaved data into calendar object 2069 // Store back all unsaved data into calendar object
2077 // qDebug("file %s %d ", filename.latin1() , mViewManager->currentView() ); 2070 // qDebug("file %s %d ", filename.latin1() , mViewManager->currentView() );
2078 if ( mViewManager->currentView() ) 2071 if ( mViewManager->currentView() )
2079 mViewManager->currentView()->flushView(); 2072 mViewManager->currentView()->flushView();
2080 2073
2081 2074
2082 QDateTime lfv = QDateTime::currentDateTime().addSecs( -2); 2075 QDateTime lfv = QDateTime::currentDateTime().addSecs( -2);
2083 mStorage->setSaveFormat( new ICalFormat() ); 2076 mStorage->setSaveFormat( new ICalFormat() );
2084 mStorage->setFileName( filename ); 2077 mStorage->setFileName( filename );
2085 bool success; 2078 bool success;
2086 success = mStorage->save(); 2079 success = mStorage->save();
2087 if ( !success ) { 2080 if ( !success ) {
2088 return false; 2081 return false;
2089 } 2082 }
2090 if ( filename == MainWindow::defaultFileName() ) { 2083 if ( filename == MainWindow::defaultFileName() ) {
2091 setLoadedFileVersion( lfv ); 2084 setLoadedFileVersion( lfv );
2092 watchSavedFile(); 2085 watchSavedFile();
2093 } 2086 }
2094 return true; 2087 return true;
2095} 2088}
2096 2089
2097void CalendarView::closeCalendar() 2090void CalendarView::closeCalendar()
2098{ 2091{
2099 2092
2100 // child windows no longer valid 2093 // child windows no longer valid
2101 clearAllViews(); 2094 clearAllViews();
2102 emit closingDown(); 2095 emit closingDown();
2103 2096
2104 mCalendar->close(); 2097 mCalendar->close();
2105 setModified(false); 2098 setModified(false);
2106 updateView(); 2099 updateView();
2107} 2100}
2108 2101
2109void CalendarView::archiveCalendar() 2102void CalendarView::archiveCalendar()
2110{ 2103{
2111 mDialogManager->showArchiveDialog(); 2104 mDialogManager->showArchiveDialog();
2112} 2105}
2113 2106
2114 2107
2115void CalendarView::readSettings() 2108void CalendarView::readSettings()
2116{ 2109{
2117 2110
2118 2111
2119 // mViewManager->showAgendaView(); 2112 // mViewManager->showAgendaView();
2120 QString str; 2113 QString str;
2121 //qDebug("CalendarView::readSettings() "); 2114 //qDebug("CalendarView::readSettings() ");
2122 // read settings from the KConfig, supplying reasonable 2115 // read settings from the KConfig, supplying reasonable
2123 // defaults where none are to be found 2116 // defaults where none are to be found
2124 KConfig *config = KOGlobals::config(); 2117 KConfig *config = KOGlobals::config();
2125#ifndef KORG_NOSPLITTER 2118#ifndef KORG_NOSPLITTER
2126 config->setGroup("KOrganizer Geometry"); 2119 config->setGroup("KOrganizer Geometry");
2127 2120
2128 QValueList<int> sizes = config->readIntListEntry("Separator1"); 2121 QValueList<int> sizes = config->readIntListEntry("Separator1");
2129 if (sizes.count() != 2) { 2122 if (sizes.count() != 2) {
2130 sizes << mDateNavigator->minimumSizeHint().width(); 2123 sizes << mDateNavigator->minimumSizeHint().width();
2131 sizes << 300; 2124 sizes << 300;
2132 } 2125 }
2133 mPanner->setSizes(sizes); 2126 mPanner->setSizes(sizes);
2134 2127
2135 sizes = config->readIntListEntry("Separator2"); 2128 sizes = config->readIntListEntry("Separator2");
2136 if ( ( mResourceView && sizes.count() == 4 ) || 2129 if ( ( mResourceView && sizes.count() == 4 ) ||
2137 ( !mResourceView && sizes.count() == 3 ) ) { 2130 ( !mResourceView && sizes.count() == 3 ) ) {
2138 mLeftSplitter->setSizes(sizes); 2131 mLeftSplitter->setSizes(sizes);
2139 } 2132 }
2140#endif 2133#endif
2141 globalFlagBlockAgenda = 1; 2134 globalFlagBlockAgenda = 1;
2142 mViewManager->showAgendaView(); 2135 mViewManager->showAgendaView();
2143 //mViewManager->readSettings( config ); 2136 //mViewManager->readSettings( config );
2144 mTodoList->restoreLayout(config,QString("Todo Layout")); 2137 mTodoList->restoreLayout(config,QString("Todo Layout"));
2145 readFilterSettings(config); 2138 readFilterSettings(config);
2146 2139
2147#ifdef DESKTOP_VERSION 2140#ifdef DESKTOP_VERSION
2148 config->setGroup("WidgetLayout"); 2141 config->setGroup("WidgetLayout");
2149 QStringList list; 2142 QStringList list;
2150 list = config->readListEntry("MainLayout"); 2143 list = config->readListEntry("MainLayout");
2151 int x,y,w,h; 2144 int x,y,w,h;
2152 if ( ! list.isEmpty() ) { 2145 if ( ! list.isEmpty() ) {
2153 x = list[0].toInt(); 2146 x = list[0].toInt();
2154 y = list[1].toInt(); 2147 y = list[1].toInt();
2155 w = list[2].toInt(); 2148 w = list[2].toInt();
2156 h = list[3].toInt(); 2149 h = list[3].toInt();
2157 KApplication::testCoords( &x,&y,&w,&h ); 2150 KApplication::testCoords( &x,&y,&w,&h );
2158 topLevelWidget()->setGeometry(x,y,w,h); 2151 topLevelWidget()->setGeometry(x,y,w,h);
2159 2152
2160 } else { 2153 } else {
2161 topLevelWidget()->setGeometry( 40 ,40 , 640, 440); 2154 topLevelWidget()->setGeometry( 40 ,40 , 640, 440);
2162 } 2155 }
2163 list = config->readListEntry("EditEventLayout"); 2156 list = config->readListEntry("EditEventLayout");
2164 if ( ! list.isEmpty() ) { 2157 if ( ! list.isEmpty() ) {
2165 x = list[0].toInt(); 2158 x = list[0].toInt();
2166 y = list[1].toInt(); 2159 y = list[1].toInt();
2167 w = list[2].toInt(); 2160 w = list[2].toInt();
2168 h = list[3].toInt(); 2161 h = list[3].toInt();
2169 KApplication::testCoords( &x,&y,&w,&h ); 2162 KApplication::testCoords( &x,&y,&w,&h );
2170 mEventEditor->setGeometry(x,y,w,h); 2163 mEventEditor->setGeometry(x,y,w,h);
2171 2164
2172 } 2165 }
2173 list = config->readListEntry("EditTodoLayout"); 2166 list = config->readListEntry("EditTodoLayout");
2174 if ( ! list.isEmpty() ) { 2167 if ( ! list.isEmpty() ) {
2175 x = list[0].toInt(); 2168 x = list[0].toInt();
2176 y = list[1].toInt(); 2169 y = list[1].toInt();
2177 w = list[2].toInt(); 2170 w = list[2].toInt();
2178 h = list[3].toInt(); 2171 h = list[3].toInt();
2179 KApplication::testCoords( &x,&y,&w,&h ); 2172 KApplication::testCoords( &x,&y,&w,&h );
2180 mTodoEditor->setGeometry(x,y,w,h); 2173 mTodoEditor->setGeometry(x,y,w,h);
2181 2174
2182 } 2175 }
2183 list = config->readListEntry("ViewerLayout"); 2176 list = config->readListEntry("ViewerLayout");
2184 if ( ! list.isEmpty() ) { 2177 if ( ! list.isEmpty() ) {
2185 x = list[0].toInt(); 2178 x = list[0].toInt();
2186 y = list[1].toInt(); 2179 y = list[1].toInt();
2187 w = list[2].toInt(); 2180 w = list[2].toInt();
2188 h = list[3].toInt(); 2181 h = list[3].toInt();
2189 KApplication::testCoords( &x,&y,&w,&h ); 2182 KApplication::testCoords( &x,&y,&w,&h );
2190 getEventViewerDialog()->setGeometry(x,y,w,h); 2183 getEventViewerDialog()->setGeometry(x,y,w,h);
2191 } 2184 }
2192#endif 2185#endif
2193 config->setGroup( "Views" ); 2186 config->setGroup( "Views" );
2194 int dateCount = config->readNumEntry( "ShownDatesCount", 7 ); 2187 int dateCount = config->readNumEntry( "ShownDatesCount", 7 );
2195 2188
2196 QValueList<int> sizes = config->readIntListEntry("Left Splitter Frame"); 2189 QValueList<int> sizes = config->readIntListEntry("Left Splitter Frame");
2197 2190
2198 int resetval = 0; 2191 int resetval = 0;
2199 int maxVal = 0; 2192 int maxVal = 0;
2200 if (sizes.count() != 3) { 2193 if (sizes.count() != 3) {
2201 if ( KOPrefs::instance()->mVerticalScreen ) { 2194 if ( KOPrefs::instance()->mVerticalScreen ) {
2202 resetval = mDateNavigator->sizeHint().width()+2; 2195 resetval = mDateNavigator->sizeHint().width()+2;
2203 } else { 2196 } else {
2204 resetval = mDateNavigator->sizeHint().height()+2; 2197 resetval = mDateNavigator->sizeHint().height()+2;
2205 } 2198 }
2206 } 2199 }
2207 if ( resetval ) { 2200 if ( resetval ) {
2208 sizes.clear(); 2201 sizes.clear();
2209 if ( KOPrefs::instance()->mVerticalScreen ) { 2202 if ( KOPrefs::instance()->mVerticalScreen ) {
2210 maxVal = QApplication::desktop()->width() -10; 2203 maxVal = QApplication::desktop()->width() -10;
2211 } else { 2204 } else {
2212 maxVal = QApplication::desktop()->height()-10; 2205 maxVal = QApplication::desktop()->height()-10;
2213 } 2206 }
2214 sizes << resetval; 2207 sizes << resetval;
2215 if ( maxVal < resetval + resetval) 2208 if ( maxVal < resetval + resetval)
2216 resetval = maxVal - resetval; 2209 resetval = maxVal - resetval;
2217 sizes << resetval; 2210 sizes << resetval;
2218 sizes << 100; 2211 sizes << 100;
2219 } 2212 }
2220 mLeftFrame->setSizes(sizes); 2213 mLeftFrame->setSizes(sizes);
2221 sizes = config->readIntListEntry("Main Splitter Frame"); 2214 sizes = config->readIntListEntry("Main Splitter Frame");
2222 resetval = 0; 2215 resetval = 0;
2223 maxVal = 0; 2216 maxVal = 0;
2224 if (sizes.count() != 2) { 2217 if (sizes.count() != 2) {
2225 if ( !KOPrefs::instance()->mVerticalScreen ) { 2218 if ( !KOPrefs::instance()->mVerticalScreen ) {
2226 resetval = mDateNavigator->sizeHint().width()+2; 2219 resetval = mDateNavigator->sizeHint().width()+2;
2227 } else { 2220 } else {
diff --git a/korganizer/koagendaview.cpp b/korganizer/koagendaview.cpp
index b2b136a..93ff55e 100644
--- a/korganizer/koagendaview.cpp
+++ b/korganizer/koagendaview.cpp
@@ -281,769 +281,769 @@ void TimeLabels::paintEvent(QPaintEvent*)
281} 281}
282 282
283//////////////////////////////////////////////////////////////////////////// 283////////////////////////////////////////////////////////////////////////////
284 284
285EventIndicator::EventIndicator(Location loc,QWidget *parent,const char *name) 285EventIndicator::EventIndicator(Location loc,QWidget *parent,const char *name)
286 : QFrame(parent,name) 286 : QFrame(parent,name)
287{ 287{
288 mColumns = 1; 288 mColumns = 1;
289 mTopBox = 0; 289 mTopBox = 0;
290 mLocation = loc; 290 mLocation = loc;
291 mTopLayout = 0; 291 mTopLayout = 0;
292 mPaintWidget = 0; 292 mPaintWidget = 0;
293 mXOffset = 0; 293 mXOffset = 0;
294 if (mLocation == Top) mPixmap = SmallIcon("1uparrow"); 294 if (mLocation == Top) mPixmap = SmallIcon("1uparrow");
295 else mPixmap = SmallIcon("1downarrow"); 295 else mPixmap = SmallIcon("1downarrow");
296 mEnabled.resize(mColumns); 296 mEnabled.resize(mColumns);
297 mEnabled.fill( false ); 297 mEnabled.fill( false );
298 setMinimumHeight(mPixmap.height()); 298 setMinimumHeight(mPixmap.height());
299} 299}
300 300
301EventIndicator::~EventIndicator() 301EventIndicator::~EventIndicator()
302{ 302{
303} 303}
304 304
305void EventIndicator::drawContents(QPainter *p) 305void EventIndicator::drawContents(QPainter *p)
306{ 306{
307 307
308 // kdDebug() << "======== top: " << contentsRect().top() << " bottom " << // contentsRect().bottom() << " left " << contentsRect().left() << " right " << contentsRect().right() << endl; 308 // kdDebug() << "======== top: " << contentsRect().top() << " bottom " << // contentsRect().bottom() << " left " << contentsRect().left() << " right " << contentsRect().right() << endl;
309 KDGanttSplitterHandle* han = 0; 309 KDGanttSplitterHandle* han = 0;
310 if ( mPaintWidget ) 310 if ( mPaintWidget )
311 han = mPaintWidget->firstHandle(); 311 han = mPaintWidget->firstHandle();
312 if ( ! han ) { 312 if ( ! han ) {
313 int i; 313 int i;
314 for(i=0;i<mColumns;++i) { 314 for(i=0;i<mColumns;++i) {
315 if (mEnabled[i]) { 315 if (mEnabled[i]) {
316 int cellWidth = contentsRect().right()/mColumns; 316 int cellWidth = contentsRect().right()/mColumns;
317 int xOffset = KOGlobals::self()->reverseLayout() ? 317 int xOffset = KOGlobals::self()->reverseLayout() ?
318 (mColumns - 1 - i)*cellWidth + (cellWidth -mPixmap.width())/2 : 318 (mColumns - 1 - i)*cellWidth + (cellWidth -mPixmap.width())/2 :
319 i*cellWidth + (cellWidth -mPixmap.width()) /2; 319 i*cellWidth + (cellWidth -mPixmap.width()) /2;
320 p->drawPixmap(QPoint(1+xOffset,0),mPixmap); 320 p->drawPixmap(QPoint(1+xOffset,0),mPixmap);
321 } 321 }
322 } 322 }
323 } else { 323 } else {
324 han->repaint(); 324 han->repaint();
325 //mPaintWidget->setBackgroundColor( red ); 325 //mPaintWidget->setBackgroundColor( red );
326 326
327 QPainter pa( han ); 327 QPainter pa( han );
328 int i; 328 int i;
329 bool setColor = false; 329 bool setColor = false;
330 for(i=0;i<mColumns;++i) { 330 for(i=0;i<mColumns;++i) {
331 if (mEnabled[i]) { 331 if (mEnabled[i]) {
332 setColor = true; 332 setColor = true;
333 333
334 int cellWidth = contentsRect().right()/mColumns; 334 int cellWidth = contentsRect().right()/mColumns;
335 int xOffset = KOGlobals::self()->reverseLayout() ? 335 int xOffset = KOGlobals::self()->reverseLayout() ?
336 (mColumns - 1 - i)*cellWidth + cellWidth/2 -mPixmap.width()/2 : 336 (mColumns - 1 - i)*cellWidth + cellWidth/2 -mPixmap.width()/2 :
337 i*cellWidth + cellWidth/2 -mPixmap.width()/2; 337 i*cellWidth + cellWidth/2 -mPixmap.width()/2;
338 pa.drawPixmap(QPoint(mXOffset + xOffset,0),mPixmap); 338 pa.drawPixmap(QPoint(mXOffset + xOffset,0),mPixmap);
339 //qDebug("222draw pix %d ",xOffset ); 339 //qDebug("222draw pix %d ",xOffset );
340 340
341 } 341 }
342 342
343 } 343 }
344 pa.end(); 344 pa.end();
345 345
346 } 346 }
347} 347}
348 348
349void EventIndicator::setXOffset( int x ) 349void EventIndicator::setXOffset( int x )
350{ 350{
351 mXOffset = x; 351 mXOffset = x;
352} 352}
353void EventIndicator::setPaintWidget( KDGanttMinimizeSplitter * w ) 353void EventIndicator::setPaintWidget( KDGanttMinimizeSplitter * w )
354{ 354{
355 mPaintWidget = w; 355 mPaintWidget = w;
356 setMaximumHeight(0); 356 setMaximumHeight(0);
357 setMinimumHeight(0); 357 setMinimumHeight(0);
358} 358}
359void EventIndicator::changeColumns(int columns) 359void EventIndicator::changeColumns(int columns)
360{ 360{
361 mColumns = columns; 361 mColumns = columns;
362 mEnabled.resize(mColumns); 362 mEnabled.resize(mColumns);
363 363
364 update(); 364 update();
365} 365}
366 366
367void EventIndicator::enableColumn(int column, bool enable) 367void EventIndicator::enableColumn(int column, bool enable)
368{ 368{
369 mEnabled[column] = enable; 369 mEnabled[column] = enable;
370} 370}
371 371
372 372
373//////////////////////////////////////////////////////////////////////////// 373////////////////////////////////////////////////////////////////////////////
374//////////////////////////////////////////////////////////////////////////// 374////////////////////////////////////////////////////////////////////////////
375//////////////////////////////////////////////////////////////////////////// 375////////////////////////////////////////////////////////////////////////////
376 376
377KOAgendaView::KOAgendaView(Calendar *cal,QWidget *parent,const char *name) : 377KOAgendaView::KOAgendaView(Calendar *cal,QWidget *parent,const char *name) :
378 KOEventView (cal,parent,name) 378 KOEventView (cal,parent,name)
379{ 379{
380 mBlockUpdating = true; 380 mBlockUpdating = true;
381 mStartHour = 8; 381 mStartHour = 8;
382 mSelectedDates.append(QDate::currentDate()); 382 mSelectedDates.append(QDate::currentDate());
383 383
384 mLayoutDayLabels = 0; 384 mLayoutDayLabels = 0;
385 mDayLabelsFrame = 0; 385 mDayLabelsFrame = 0;
386 mDayLabels = 0; 386 mDayLabels = 0;
387 bool isRTL = KOGlobals::self()->reverseLayout(); 387 bool isRTL = KOGlobals::self()->reverseLayout();
388 QPixmap expandPix; 388 QPixmap expandPix;
389 if ( KOPrefs::instance()->mVerticalScreen ) { 389 if ( KOPrefs::instance()->mVerticalScreen ) {
390 expandPix = SmallIcon( "1updownarrow" ); 390 expandPix = SmallIcon( "1updownarrow" );
391 } else { 391 } else {
392 expandPix = SmallIcon("1leftrightarrow" ); 392 expandPix = SmallIcon("1leftrightarrow" );
393 } 393 }
394 394
395 QBoxLayout *topLayout = new QVBoxLayout(this); 395 QBoxLayout *topLayout = new QVBoxLayout(this);
396 396
397 // Create day name labels for agenda columns 397 // Create day name labels for agenda columns
398 // Create agenda splitter 398 // Create agenda splitter
399 399
400 mSplitterAgenda = new KDGanttMinimizeSplitter( Qt::Vertical, this); 400 mSplitterAgenda = new KDGanttMinimizeSplitter( Qt::Vertical, this);
401 mSplitterAgenda->setMinimizeDirection ( KDGanttMinimizeSplitter::Up ); 401 mSplitterAgenda->setMinimizeDirection ( KDGanttMinimizeSplitter::Up );
402 topLayout->addWidget( mSplitterAgenda ); 402 topLayout->addWidget( mSplitterAgenda );
403 mAllDayFrame = new QHBox(mSplitterAgenda); 403 mAllDayFrame = new QHBox(mSplitterAgenda);
404 mAllDayFrame->setFocusPolicy(NoFocus); 404 mAllDayFrame->setFocusPolicy(NoFocus);
405 QWidget *agendaFrame = new QWidget(mSplitterAgenda); 405 QWidget *agendaFrame = new QWidget(mSplitterAgenda);
406 agendaFrame->setFocusPolicy(NoFocus); 406 agendaFrame->setFocusPolicy(NoFocus);
407 407
408 // Create all-day agenda widget 408 // Create all-day agenda widget
409 mDummyAllDayLeft = new QVBox( mAllDayFrame ); 409 mDummyAllDayLeft = new QVBox( mAllDayFrame );
410 410
411 mExpandButton = new QPushButton(mDummyAllDayLeft); 411 mExpandButton = new QPushButton(mDummyAllDayLeft);
412 mExpandButton->setPixmap( expandPix ); 412 mExpandButton->setPixmap( expandPix );
413 int widebut = mExpandButton->sizeHint().width()+4; 413 int widebut = mExpandButton->sizeHint().width()+4;
414 int heibut = mExpandButton->sizeHint().height()+4; 414 int heibut = mExpandButton->sizeHint().height()+4;
415 if ( heibut > widebut ) 415 if ( heibut > widebut )
416 widebut = heibut ; 416 widebut = heibut ;
417 417
418 //mExpandButton->setSizePolicy( QSizePolicy( QSizePolicy::Fixed, 418 //mExpandButton->setSizePolicy( QSizePolicy( QSizePolicy::Fixed,
419 // QSizePolicy::Fixed ) ); 419 // QSizePolicy::Fixed ) );
420 mExpandButton->setFixedSize( widebut, widebut); 420 mExpandButton->setFixedSize( widebut, widebut);
421 connect( mExpandButton, SIGNAL( clicked() ), SIGNAL( toggleExpand() ) ); 421 connect( mExpandButton, SIGNAL( clicked() ), SIGNAL( toggleExpand() ) );
422 mExpandButton->setFocusPolicy(NoFocus); 422 mExpandButton->setFocusPolicy(NoFocus);
423 mAllDayAgenda = new KOAgenda(1,mAllDayFrame); 423 mAllDayAgenda = new KOAgenda(1,mAllDayFrame);
424 mAllDayAgenda->setFocusPolicy(NoFocus); 424 mAllDayAgenda->setFocusPolicy(NoFocus);
425 QLabel *dummyAllDayRight = new QLabel (mAllDayFrame); 425 QLabel *dummyAllDayRight = new QLabel (mAllDayFrame);
426 426
427 // Create event context menu for all day agenda 427 // Create event context menu for all day agenda
428 //mAllDayAgendaPopup = eventPopup(); 428 //mAllDayAgendaPopup = eventPopup();
429 429
430 // Create agenda frame 430 // Create agenda frame
431 QGridLayout *agendaLayout = new QGridLayout(agendaFrame,4,3); 431 QGridLayout *agendaLayout = new QGridLayout(agendaFrame,4,3);
432 // QHBox *agendaFrame = new QHBox(splitterAgenda); 432 // QHBox *agendaFrame = new QHBox(splitterAgenda);
433 433
434 // create event indicator bars 434 // create event indicator bars
435 mEventIndicatorTop = new EventIndicator(EventIndicator::Top,agendaFrame); 435 mEventIndicatorTop = new EventIndicator(EventIndicator::Top,agendaFrame);
436#ifndef DESKTOP_VERSION 436#ifndef DESKTOP_VERSION
437 mEventIndicatorTop->setPaintWidget( mSplitterAgenda ); 437 mEventIndicatorTop->setPaintWidget( mSplitterAgenda );
438#endif 438#endif
439 mDayLabelsFrame = new QHBox(agendaFrame); 439 mDayLabelsFrame = new QHBox(agendaFrame);
440 //topLayout->addWidget(mDayLabelsFrame); 440 //topLayout->addWidget(mDayLabelsFrame);
441 mDayLabels = new QFrame (mDayLabelsFrame); 441 mDayLabels = new QFrame (mDayLabelsFrame);
442 mLayoutDayLabels = new QHBoxLayout(mDayLabels); 442 mLayoutDayLabels = new QHBoxLayout(mDayLabels);
443 agendaLayout->addMultiCellWidget(mDayLabelsFrame ,0,0,0,2); 443 agendaLayout->addMultiCellWidget(mDayLabelsFrame ,0,0,0,2);
444 agendaLayout->addWidget(mEventIndicatorTop,1,1); 444 agendaLayout->addWidget(mEventIndicatorTop,1,1);
445 445
446 mEventIndicatorBottom = new EventIndicator(EventIndicator::Bottom, 446 mEventIndicatorBottom = new EventIndicator(EventIndicator::Bottom,
447 agendaFrame); 447 agendaFrame);
448 agendaLayout->addWidget(mEventIndicatorBottom,3,1); 448 agendaLayout->addWidget(mEventIndicatorBottom,3,1);
449 QWidget *dummyAgendaRight = new QWidget(agendaFrame); 449 QWidget *dummyAgendaRight = new QWidget(agendaFrame);
450 agendaLayout->addWidget(dummyAgendaRight,1,2); 450 agendaLayout->addWidget(dummyAgendaRight,1,2);
451 451
452 // Create time labels 452 // Create time labels
453 mTimeLabels = new TimeLabels(24,agendaFrame); 453 mTimeLabels = new TimeLabels(24,agendaFrame);
454 agendaLayout->addWidget(mTimeLabels,2,0); 454 agendaLayout->addWidget(mTimeLabels,2,0);
455 connect(mTimeLabels,SIGNAL( scaleChanged()), 455 connect(mTimeLabels,SIGNAL( scaleChanged()),
456 this,SLOT(updateConfig())); 456 this,SLOT(updateConfig()));
457 457
458 // Create agenda 458 // Create agenda
459 mAgenda = new KOAgenda(1,96,KOPrefs::instance()->mHourSize,agendaFrame); 459 mAgenda = new KOAgenda(1,96,KOPrefs::instance()->mHourSize,agendaFrame);
460 agendaLayout->addMultiCellWidget(mAgenda,2,2,1,2); 460 agendaLayout->addMultiCellWidget(mAgenda,2,2,1,2);
461 agendaLayout->setColStretch(1,1); 461 agendaLayout->setColStretch(1,1);
462 mAgenda->setFocusPolicy(NoFocus); 462 mAgenda->setFocusPolicy(NoFocus);
463 // Create event context menu for agenda 463 // Create event context menu for agenda
464 mAllAgendaPopup = eventPopup(); 464 mAllAgendaPopup = eventPopup();
465 465
466#if 0 466#if 0
467 mAllAgendaPopup->addAdditionalItem(QIconSet(SmallIcon("bell")), 467 mAllAgendaPopup->addAdditionalItem(QIconSet(SmallIcon("bell")),
468 i18n("Toggle Alarm"),mAgenda, 468 i18n("Toggle Alarm"),mAgenda,
469 SLOT(popupAlarm()),true); 469 SLOT(popupAlarm()),true);
470 470
471#endif 471#endif
472 connect(mAgenda,SIGNAL(showIncidencePopupSignal(Incidence *)), 472 connect(mAgenda,SIGNAL(showIncidencePopupSignal(Incidence *)),
473 mAllAgendaPopup,SLOT(showIncidencePopup(Incidence *))); 473 mAllAgendaPopup,SLOT(showIncidencePopup(Incidence *)));
474 474
475 connect(mAllDayAgenda,SIGNAL(showIncidencePopupSignal(Incidence *)), 475 connect(mAllDayAgenda,SIGNAL(showIncidencePopupSignal(Incidence *)),
476 mAllAgendaPopup,SLOT(showIncidencePopup(Incidence *))); 476 mAllAgendaPopup,SLOT(showIncidencePopup(Incidence *)));
477 mAgenda->setPopup( mAllAgendaPopup ); 477 mAgenda->setPopup( mAllAgendaPopup );
478 mAllDayAgenda->setPopup( mAllAgendaPopup ); 478 mAllDayAgenda->setPopup( mAllAgendaPopup );
479 // make connections between dependent widgets 479 // make connections between dependent widgets
480 mTimeLabels->setAgenda(mAgenda); 480 mTimeLabels->setAgenda(mAgenda);
481 481
482 // Update widgets to reflect user preferences 482 // Update widgets to reflect user preferences
483 // updateConfig(); 483 // updateConfig();
484 484
485 // createDayLabels(); 485 // createDayLabels();
486 486
487 // these blank widgets make the All Day Event box line up with the agenda 487 // these blank widgets make the All Day Event box line up with the agenda
488 dummyAllDayRight->setFixedWidth(mAgenda->verticalScrollBar()->width()); 488 dummyAllDayRight->setFixedWidth(mAgenda->verticalScrollBar()->width());
489 dummyAgendaRight->setFixedWidth(mAgenda->verticalScrollBar()->width()); 489 dummyAgendaRight->setFixedWidth(mAgenda->verticalScrollBar()->width());
490 mDummyAllDayLeft->setFixedWidth(mTimeLabels->width()); 490 mDummyAllDayLeft->setFixedWidth(mTimeLabels->width());
491 491
492 // Scrolling 492 // Scrolling
493 connect(mAgenda->verticalScrollBar(),SIGNAL(valueChanged(int)), 493 connect(mAgenda->verticalScrollBar(),SIGNAL(valueChanged(int)),
494 mTimeLabels, SLOT(positionChanged())); 494 mTimeLabels, SLOT(positionChanged()));
495 connect(mTimeLabels->verticalScrollBar(),SIGNAL(valueChanged(int)), 495 connect(mTimeLabels->verticalScrollBar(),SIGNAL(valueChanged(int)),
496 SLOT(setContentsPos(int))); 496 SLOT(setContentsPos(int)));
497 497
498 connect(mAgenda,SIGNAL(showDateView( int, int)),SLOT(slotShowDateView( int, int ))); 498 connect(mAgenda,SIGNAL(showDateView( int, int)),SLOT(slotShowDateView( int, int )));
499 connect(mAllDayAgenda,SIGNAL(showDateView( int, int )), SLOT(slotShowDateView( int, int ) )); 499 connect(mAllDayAgenda,SIGNAL(showDateView( int, int )), SLOT(slotShowDateView( int, int ) ));
500 500
501 // Create/Show/Edit/Delete Event 501 // Create/Show/Edit/Delete Event
502 connect(mAgenda,SIGNAL(newEventSignal(int,int)), 502 connect(mAgenda,SIGNAL(newEventSignal(int,int)),
503 SLOT(newEvent(int,int))); 503 SLOT(newEvent(int,int)));
504 connect(mAgenda,SIGNAL(newTodoSignal(int,int)), 504 connect(mAgenda,SIGNAL(newTodoSignal(int,int)),
505 SLOT(newTodo(int,int))); 505 SLOT(newTodo(int,int)));
506 connect(mAgenda,SIGNAL(newEventSignal(int,int,int,int)), 506 connect(mAgenda,SIGNAL(newEventSignal(int,int,int,int)),
507 SLOT(newEvent(int,int,int,int))); 507 SLOT(newEvent(int,int,int,int)));
508 connect(mAllDayAgenda,SIGNAL(newEventSignal(int,int)), 508 connect(mAllDayAgenda,SIGNAL(newEventSignal(int,int)),
509 SLOT(newEventAllDay(int,int))); 509 SLOT(newEventAllDay(int,int)));
510 connect(mAllDayAgenda,SIGNAL(newTodoSignal(int,int)), 510 connect(mAllDayAgenda,SIGNAL(newTodoSignal(int,int)),
511 SLOT(newTodoAllDay(int,int))); 511 SLOT(newTodoAllDay(int,int)));
512 connect(mAllDayAgenda,SIGNAL(newEventSignal(int,int,int,int)), 512 connect(mAllDayAgenda,SIGNAL(newEventSignal(int,int,int,int)),
513 SLOT(newEventAllDay(int,int))); 513 SLOT(newEventAllDay(int,int)));
514 connect(mAgenda,SIGNAL(newTimeSpanSignal(int,int,int,int)), 514 connect(mAgenda,SIGNAL(newTimeSpanSignal(int,int,int,int)),
515 SLOT(newTimeSpanSelected(int,int,int,int))); 515 SLOT(newTimeSpanSelected(int,int,int,int)));
516 connect(mAllDayAgenda,SIGNAL(newTimeSpanSignal(int,int,int,int)), 516 connect(mAllDayAgenda,SIGNAL(newTimeSpanSignal(int,int,int,int)),
517 SLOT(newTimeSpanSelectedAllDay(int,int,int,int))); 517 SLOT(newTimeSpanSelectedAllDay(int,int,int,int)));
518 connect(mAgenda,SIGNAL(newStartSelectSignal()),SLOT(updateView())); 518 connect(mAgenda,SIGNAL(newStartSelectSignal()),SLOT(updateView()));
519 connect(mAllDayAgenda,SIGNAL(newStartSelectSignal()),SLOT(updateView())); 519 connect(mAllDayAgenda,SIGNAL(newStartSelectSignal()),SLOT(updateView()));
520 520
521 connect(mAgenda,SIGNAL(editIncidenceSignal(Incidence *)), 521 connect(mAgenda,SIGNAL(editIncidenceSignal(Incidence *)),
522 SIGNAL(editIncidenceSignal(Incidence *))); 522 SIGNAL(editIncidenceSignal(Incidence *)));
523 connect(mAllDayAgenda,SIGNAL(editIncidenceSignal(Incidence *)), 523 connect(mAllDayAgenda,SIGNAL(editIncidenceSignal(Incidence *)),
524 SIGNAL(editIncidenceSignal(Incidence *))); 524 SIGNAL(editIncidenceSignal(Incidence *)));
525 connect(mAgenda,SIGNAL(showIncidenceSignal(Incidence *)), 525 connect(mAgenda,SIGNAL(showIncidenceSignal(Incidence *)),
526 SIGNAL(showIncidenceSignal(Incidence *))); 526 SIGNAL(showIncidenceSignal(Incidence *)));
527 connect(mAllDayAgenda,SIGNAL(showIncidenceSignal(Incidence *)), 527 connect(mAllDayAgenda,SIGNAL(showIncidenceSignal(Incidence *)),
528 SIGNAL(showIncidenceSignal(Incidence *))); 528 SIGNAL(showIncidenceSignal(Incidence *)));
529 connect(mAgenda,SIGNAL(deleteIncidenceSignal(Incidence *)), 529 connect(mAgenda,SIGNAL(deleteIncidenceSignal(Incidence *)),
530 SIGNAL(deleteIncidenceSignal(Incidence *))); 530 SIGNAL(deleteIncidenceSignal(Incidence *)));
531 connect(mAllDayAgenda,SIGNAL(deleteIncidenceSignal(Incidence *)), 531 connect(mAllDayAgenda,SIGNAL(deleteIncidenceSignal(Incidence *)),
532 SIGNAL(deleteIncidenceSignal(Incidence *))); 532 SIGNAL(deleteIncidenceSignal(Incidence *)));
533 533
534 connect(mAgenda,SIGNAL(itemModified(KOAgendaItem *, int )), 534 connect(mAgenda,SIGNAL(itemModified(KOAgendaItem *, int )),
535 SLOT(updateEventDates(KOAgendaItem *, int ))); 535 SLOT(updateEventDates(KOAgendaItem *, int )));
536 connect(mAllDayAgenda,SIGNAL(itemModified(KOAgendaItem *, int )), 536 connect(mAllDayAgenda,SIGNAL(itemModified(KOAgendaItem *, int )),
537 SLOT(updateEventDates(KOAgendaItem *, int))); 537 SLOT(updateEventDates(KOAgendaItem *, int)));
538 538
539 // event indicator update 539 // event indicator update
540 connect(mAgenda,SIGNAL(lowerYChanged(int)), 540 connect(mAgenda,SIGNAL(lowerYChanged(int)),
541 SLOT(updateEventIndicatorTop(int))); 541 SLOT(updateEventIndicatorTop(int)));
542 connect(mAgenda,SIGNAL(upperYChanged(int)), 542 connect(mAgenda,SIGNAL(upperYChanged(int)),
543 SLOT(updateEventIndicatorBottom(int))); 543 SLOT(updateEventIndicatorBottom(int)));
544 // drag signals 544 // drag signals
545 /* 545 /*
546 connect(mAgenda,SIGNAL(startDragSignal(Event *)), 546 connect(mAgenda,SIGNAL(startDragSignal(Event *)),
547 SLOT(startDrag(Event *))); 547 SLOT(startDrag(Event *)));
548 connect(mAllDayAgenda,SIGNAL(startDragSignal(Event *)), 548 connect(mAllDayAgenda,SIGNAL(startDragSignal(Event *)),
549 SLOT(startDrag(Event *))); 549 SLOT(startDrag(Event *)));
550 */ 550 */
551 // synchronize selections 551 // synchronize selections
552 connect( mAgenda, SIGNAL( incidenceSelected( Incidence * ) ), 552 connect( mAgenda, SIGNAL( incidenceSelected( Incidence * ) ),
553 mAllDayAgenda, SLOT( deselectItem() ) ); 553 mAllDayAgenda, SLOT( deselectItem() ) );
554 connect( mAllDayAgenda, SIGNAL( incidenceSelected( Incidence * ) ), 554 connect( mAllDayAgenda, SIGNAL( incidenceSelected( Incidence * ) ),
555 mAgenda, SLOT( deselectItem() ) ); 555 mAgenda, SLOT( deselectItem() ) );
556 connect( mAgenda, SIGNAL( incidenceSelected( Incidence * ) ), 556 connect( mAgenda, SIGNAL( incidenceSelected( Incidence * ) ),
557 SIGNAL( incidenceSelected( Incidence * ) ) ); 557 SIGNAL( incidenceSelected( Incidence * ) ) );
558 connect( mAllDayAgenda, SIGNAL( incidenceSelected( Incidence * ) ), 558 connect( mAllDayAgenda, SIGNAL( incidenceSelected( Incidence * ) ),
559 SIGNAL( incidenceSelected( Incidence * ) ) ); 559 SIGNAL( incidenceSelected( Incidence * ) ) );
560 connect( mAgenda, SIGNAL( resizedSignal() ), 560 connect( mAgenda, SIGNAL( resizedSignal() ),
561 SLOT( updateConfig( ) ) ); 561 SLOT( updateConfig( ) ) );
562 connect( mAgenda, SIGNAL( addToCalSignal(Incidence *, Incidence *) ), 562 connect( mAgenda, SIGNAL( addToCalSignal(Incidence *, Incidence *) ),
563 SLOT( addToCalSlot(Incidence *, Incidence * ) ) ); 563 SLOT( addToCalSlot(Incidence *, Incidence * ) ) );
564 connect( mAllDayAgenda, SIGNAL( addToCalSignal(Incidence * ,Incidence *) ), 564 connect( mAllDayAgenda, SIGNAL( addToCalSignal(Incidence * ,Incidence *) ),
565 SLOT( addToCalSlot(Incidence * , Incidence *) ) ); 565 SLOT( addToCalSlot(Incidence * , Incidence *) ) );
566 // connect( mAgenda, SIGNAL( cloneIncidenceSignal(Incidence *) ), SIGNAL( cloneIncidenceSignal(Incidence *) ) ); 566 // connect( mAgenda, SIGNAL( cloneIncidenceSignal(Incidence *) ), SIGNAL( cloneIncidenceSignal(Incidence *) ) );
567 //connect( mAllDayAgenda, SIGNAL( cloneIncidenceSignal(Incidence *) ), SIGNAL( cloneIncidenceSignal(Incidence *) ) ); 567 //connect( mAllDayAgenda, SIGNAL( cloneIncidenceSignal(Incidence *) ), SIGNAL( cloneIncidenceSignal(Incidence *) ) );
568 568
569 connect( mAllDayAgenda, SIGNAL( signalClearSelection() ),mAgenda, SLOT( slotClearSelection()) ); 569 connect( mAllDayAgenda, SIGNAL( signalClearSelection() ),mAgenda, SLOT( slotClearSelection()) );
570 connect( mAgenda, SIGNAL( signalClearSelection() ),mAllDayAgenda, SLOT( slotClearSelection()) ); 570 connect( mAgenda, SIGNAL( signalClearSelection() ),mAllDayAgenda, SLOT( slotClearSelection()) );
571 571
572} 572}
573 573
574void KOAgendaView::toggleAllDay() 574void KOAgendaView::toggleAllDay()
575{ 575{
576 if ( mSplitterAgenda->firstHandle() ) 576 if ( mSplitterAgenda->firstHandle() )
577 mSplitterAgenda->firstHandle()->toggle(); 577 mSplitterAgenda->firstHandle()->toggle();
578} 578}
579void KOAgendaView::addToCalSlot(Incidence * inc, Incidence * incOld ) 579void KOAgendaView::addToCalSlot(Incidence * inc, Incidence * incOld )
580{ 580{
581 calendar()->addIncidence( inc ); 581 calendar()->addIncidence( inc );
582 582
583 if ( incOld ) { 583 if ( incOld ) {
584 if ( incOld->typeID() == todoID ) 584 if ( incOld->typeID() == todoID )
585 emit todoMoved((Todo*)incOld, KOGlobals::EVENTEDITED ); 585 emit todoMoved((Todo*)incOld, KOGlobals::EVENTEDITED );
586 else 586 else
587 emit incidenceChanged(incOld, KOGlobals::EVENTEDITED); 587 emit incidenceChanged(incOld, KOGlobals::EVENTEDITED);
588 } 588 }
589 589
590} 590}
591 591
592KOAgendaView::~KOAgendaView() 592KOAgendaView::~KOAgendaView()
593{ 593{
594 delete mAllAgendaPopup; 594 delete mAllAgendaPopup;
595 //delete mAllDayAgendaPopup; 595 //delete mAllDayAgendaPopup;
596 delete KOAgendaItem::paintPix(); 596 delete KOAgendaItem::paintPix();
597 delete KOAgendaItem::paintPixSel(); 597 delete KOAgendaItem::paintPixSel();
598} 598}
599void KOAgendaView::resizeEvent( QResizeEvent* e ) 599void KOAgendaView::resizeEvent( QResizeEvent* e )
600{ 600{
601 //qDebug("KOAgendaView::resizeEvent( QResizeEvent* e ) %d ", e->size().width()); 601 //qDebug("KOAgendaView::resizeEvent( QResizeEvent* e ) %d ", e->size().width());
602 bool uc = false; 602 bool uc = false;
603 int ow = e->oldSize().width(); 603 int ow = e->oldSize().width();
604 int oh = e->oldSize().height(); 604 int oh = e->oldSize().height();
605 int w = e->size().width(); 605 int w = e->size().width();
606 int h = e->size().height(); 606 int h = e->size().height();
607 if ( (ow > oh && w< h ) || (ow < oh && w > h ) ) { 607 if ( (ow > oh && w< h ) || (ow < oh && w > h ) ) {
608 if ( ! mBlockUpdating && !globalFlagBlockStartup && !globalFlagBlockAgenda ) 608 if ( ! mBlockUpdating && !globalFlagBlockStartup && !globalFlagBlockAgenda )
609 uc = true; 609 uc = true;
610 //qDebug("view changed %d %d %d %d ", ow, oh , w , h); 610 //qDebug("view changed %d %d %d %d ", ow, oh , w , h);
611 } 611 }
612 mUpcomingWidth = e->size().width() ; 612 mUpcomingWidth = e->size().width() ;
613 if ( mBlockUpdating || uc ) { 613 if ( mBlockUpdating || uc ) {
614 mBlockUpdating = false; 614 mBlockUpdating = false;
615 //mAgenda->setMinimumSize(800 , 600 ); 615 //mAgenda->setMinimumSize(800 , 600 );
616 //qDebug("mAgenda->resize+++++++++++++++ "); 616 //qDebug("mAgenda->resize+++++++++++++++ ");
617 updateConfig(); 617 updateConfig();
618 //qDebug("KOAgendaView::Updating now possible "); 618 //qDebug("KOAgendaView::Updating now possible ");
619 } else 619 } else
620 createDayLabels(); 620 createDayLabels();
621 //qDebug("resizeEvent end "); 621 //qDebug("resizeEvent end ");
622 622
623} 623}
624void KOAgendaView::slotDaylabelClicked( int num ) 624void KOAgendaView::slotDaylabelClicked( int num )
625{ 625{
626 626
627 QDate firstDate = mSelectedDates.first(); 627 QDate firstDate = mSelectedDates.first();
628 if ( num == -1 ) 628 if ( num == -1 )
629 emit showDateView( 6, firstDate ); 629 emit showDateView( 6, firstDate );
630 else if (num >= 0 ) { 630 else if (num >= 0 ) {
631 if ( mSelectedDates.count() == 1) 631 if ( mSelectedDates.count() == 1)
632 emit showDateView( 9, firstDate.addDays( num ) ); 632 emit showDateView( 9, firstDate.addDays( num ) );
633 else 633 else
634 emit showDateView( 3, firstDate.addDays( num ) ); 634 emit showDateView( 3, firstDate.addDays( num ) );
635 } 635 }
636 else 636 else
637 showDateView( 10, firstDate.addDays(1) ); 637 showDateView( 10, firstDate.addDays(1) );
638} 638}
639 639
640KOAgendaButton* KOAgendaView::getNewDaylabel() 640KOAgendaButton* KOAgendaView::getNewDaylabel()
641{ 641{
642 642
643 KOAgendaButton * dayLabel = new KOAgendaButton(mDayLabels); 643 KOAgendaButton * dayLabel = new KOAgendaButton(mDayLabels);
644 connect( dayLabel, SIGNAL( numClicked(int) ), this, SLOT ( slotDaylabelClicked(int) ) ); 644 connect( dayLabel, SIGNAL( numClicked(int) ), this, SLOT ( slotDaylabelClicked(int) ) );
645 mDayLabelsList.append( dayLabel ); 645 mDayLabelsList.append( dayLabel );
646 mLayoutDayLabels->addWidget(dayLabel); 646 mLayoutDayLabels->addWidget(dayLabel);
647 return dayLabel ; 647 return dayLabel ;
648} 648}
649 649
650void KOAgendaView::createDayLabels() 650void KOAgendaView::createDayLabels()
651{ 651{
652 652
653 if ( mBlockUpdating || globalFlagBlockLabel == 1) { 653 if ( mBlockUpdating || globalFlagBlockLabel == 1) {
654 // qDebug(" KOAgendaView::createDayLabels() blocked "); 654 // qDebug(" KOAgendaView::createDayLabels() blocked ");
655 return; 655 return;
656 656
657 } 657 }
658 int newHight; 658 int newHight;
659 if ( !mSelectedDates.count()) 659 if ( !mSelectedDates.count())
660 return; 660 return;
661 661
662 // ### Before deleting and recreating we could check if mSelectedDates changed... 662 // ### Before deleting and recreating we could check if mSelectedDates changed...
663 // It would remove some flickering and gain speed (since this is called by 663 // It would remove some flickering and gain speed (since this is called by
664 // each updateView() call) 664 // each updateView() call)
665 665
666 int maxWid = mUpcomingWidth - mTimeLabels->width()- mAgenda->verticalScrollBar()->width() - mAgenda->frameWidth()*2; 666 int maxWid = mUpcomingWidth - mTimeLabels->width()- mAgenda->verticalScrollBar()->width() - mAgenda->frameWidth()*2;
667 mDayLabelsFrame->setMaximumWidth( mUpcomingWidth ); 667 mDayLabelsFrame->setMaximumWidth( mUpcomingWidth );
668 if ( maxWid < 20 ) 668 if ( maxWid < 20 )
669 maxWid = 20; 669 maxWid = 20;
670 670
671 QFont dlf = KOPrefs::instance()->mTimeLabelsFont; 671 QFont dlf = KOPrefs::instance()->mTimeLabelsFont;
672 QFontMetrics fm ( dlf ); 672 QFontMetrics fm ( dlf );
673 int selCount = mSelectedDates.count(); 673 int selCount = mSelectedDates.count();
674 int widModulo = maxWid - (mAgenda->gridSpacingX() * selCount)+1; 674 int widModulo = maxWid - (mAgenda->gridSpacingX() * selCount)+1;
675 QString dayTest = "Mon 20"; 675 QString dayTest = "Mon 20";
676 //QString dayTest = "Mon 20"; 676 //QString dayTest = "Mon 20";
677 int wid = fm.width( dayTest ); 677 int wid = fm.width( dayTest );
678 //maxWid -= ( selCount * 3 ); //working for QLabels 678 //maxWid -= ( selCount * 3 ); //working for QLabels
679 if ( QApplication::desktop()->width() <= 320 ) 679 if ( QApplication::desktop()->width() <= 320 )
680 maxWid -= ( selCount * 3 ); //working for QPushButton 680 maxWid -= ( selCount * 3 ); //working for QPushButton
681 else 681 else
682 maxWid -= ( selCount * 3 ); //working for QPushButton 682 maxWid -= ( selCount * 3 ); //working for QPushButton
683 if ( maxWid < 0 ) 683 if ( maxWid < 0 )
684 maxWid = 20; 684 maxWid = 20;
685 int needWid = wid * selCount; 685 int needWid = wid * selCount;
686 //qDebug("++++++++Needed : %d MaxWidth: %d", needWid, maxWid ); 686 //qDebug("++++++++Needed : %d MaxWidth: %d", needWid, maxWid );
687 //if ( needWid > maxWid ) 687 //if ( needWid > maxWid )
688 // qDebug("DAYLABELS TOOOOOOO BIG "); 688 // qDebug("DAYLABELS TOOOOOOO BIG ");
689 while ( needWid > maxWid ) { 689 while ( needWid > maxWid ) {
690 dayTest = dayTest.left( dayTest.length() - 1 ); 690 dayTest = dayTest.left( dayTest.length() - 1 );
691 wid = fm.width( dayTest ); 691 wid = fm.width( dayTest );
692 needWid = wid * selCount; 692 needWid = wid * selCount;
693 } 693 }
694 int maxLen = dayTest.length(); 694 int maxLen = dayTest.length();
695 int fontPoint = dlf.pointSize(); 695 int fontPoint = dlf.pointSize();
696 if ( maxLen < 2 ) { 696 if ( maxLen < 2 ) {
697 int fontPoint = dlf.pointSize(); 697 int fontPoint = dlf.pointSize();
698 while ( fontPoint > 4 ) { 698 while ( fontPoint > 4 ) {
699 --fontPoint; 699 --fontPoint;
700 dlf.setPointSize( fontPoint ); 700 dlf.setPointSize( fontPoint );
701 QFontMetrics f( dlf ); 701 QFontMetrics f( dlf );
702 wid = f.width( "30" ); 702 wid = f.width( "30" );
703 needWid = wid * selCount; 703 needWid = wid * selCount;
704 if ( needWid < maxWid ) 704 if ( needWid < maxWid )
705 break; 705 break;
706 } 706 }
707 maxLen = 2; 707 maxLen = 2;
708 } 708 }
709 //qDebug("Max len %d ", dayTest.length() ); 709 //qDebug("Max len %d ", dayTest.length() );
710 710
711 QFontMetrics tempF( dlf ); 711 QFontMetrics tempF( dlf );
712 newHight = tempF.height(); 712 newHight = tempF.height();
713 mDayLabels->setFont( dlf ); 713 mDayLabels->setFont( dlf );
714 // mLayoutDayLabels = new QHBoxLayout(mDayLabels);; 714 // mLayoutDayLabels = new QHBoxLayout(mDayLabels);;
715 // mLayoutDayLabels->addSpacing(mTimeLabels->width()); 715 // mLayoutDayLabels->addSpacing(mTimeLabels->width());
716 //mLayoutDayLabels->addSpacing( 2 ); 716 //mLayoutDayLabels->addSpacing( 2 );
717 // QFont lFont = dlf; 717 // QFont lFont = dlf;
718 bool appendLabels = false; 718 bool appendLabels = false;
719 KOAgendaButton *dayLabel; 719 KOAgendaButton *dayLabel;
720 dayLabel = mDayLabelsList.first(); 720 dayLabel = mDayLabelsList.first();
721 if ( !dayLabel ) { 721 if ( !dayLabel ) {
722 appendLabels = true; 722 appendLabels = true;
723 dayLabel = getNewDaylabel(); 723 dayLabel = getNewDaylabel();
724 } 724 }
725 dayLabel->setFixedWidth( mTimeLabels->width()+mAgenda->frameWidth() ); 725 dayLabel->setFixedWidth( mTimeLabels->width()+mAgenda->frameWidth() );
726 dayLabel->setFont( dlf ); 726 dayLabel->setFont( dlf );
727 dayLabel->setNum( -1 ); 727 dayLabel->setNum( -1 );
728 //dayLabel->setAlignment(QLabel::AlignHCenter); 728 //dayLabel->setAlignment(QLabel::AlignHCenter);
729 729
730 dayLabel->setText( KOGlobals::self()->calendarSystem()->monthName( mSelectedDates.first(), true ) ); 730 dayLabel->setText( KOGlobals::self()->calendarSystem()->monthName( mSelectedDates.first(), true ) );
731 dayLabel->show(); 731 dayLabel->show();
732 DateList::ConstIterator dit; 732 DateList::ConstIterator dit;
733 bool oneday = (mSelectedDates.first() == mSelectedDates.last() ); 733 bool oneday = (mSelectedDates.first() == mSelectedDates.last() );
734 int counter = -1; 734 int counter = -1;
735 for( dit = mSelectedDates.begin(); dit != mSelectedDates.end(); ++dit ) { 735 for( dit = mSelectedDates.begin(); dit != mSelectedDates.end(); ++dit ) {
736 ++counter; 736 ++counter;
737 QDate date = *dit; 737 QDate date = *dit;
738 // QBoxLayout *dayLayout = new QVBoxLayout(mLayoutDayLabels); 738 // QBoxLayout *dayLayout = new QVBoxLayout(mLayoutDayLabels);
739 if ( ! appendLabels ) { 739 if ( ! appendLabels ) {
740 dayLabel = mDayLabelsList.next(); 740 dayLabel = mDayLabelsList.next();
741 if ( !dayLabel ) 741 if ( !dayLabel )
742 appendLabels = true; 742 appendLabels = true;
743 } 743 }
744 if ( appendLabels ) { 744 if ( appendLabels ) {
745 dayLabel = getNewDaylabel(); 745 dayLabel = getNewDaylabel();
746 } 746 }
747 dayLabel->setMinimumWidth( 1 ); 747 dayLabel->setMinimumWidth( 1 );
748 dayLabel->setMaximumWidth( 10240 ); 748 dayLabel->setMaximumWidth( 10240 );
749 dayLabel->setFont( dlf ); 749 dayLabel->setFont( dlf );
750 dayLabel->show(); 750 dayLabel->show();
751 dayLabel->setAutoRepeat( false ); 751 dayLabel->setAutoRepeat( false );
752 dayLabel->setNum( counter ); 752 dayLabel->setNum( counter );
753 QString str; 753 QString str;
754 int dW = KOGlobals::self()->calendarSystem()->dayOfWeek(date); 754 int dW = KOGlobals::self()->calendarSystem()->dayOfWeek(date);
755 QString dayName = KOGlobals::self()->calendarSystem()->weekDayName( dW, true ); 755 QString dayName = KOGlobals::self()->calendarSystem()->weekDayName( dW, true );
756 switch ( maxLen ) { 756 switch ( maxLen ) {
757 case 2: 757 case 2:
758 str = QString::number( date.day() ); 758 str = QString::number( date.day() );
759 break; 759 break;
760 760
761 case 3: 761 case 3:
762 str = dayName.left( 1 ) +QString::number( date.day()); 762 str = dayName.left( 1 ) +QString::number( date.day());
763 763
764 break; 764 break;
765 case 4: 765 case 4:
766 str = dayName.left( 1 ) + " " +QString::number( date.day()); 766 str = dayName.left( 1 ) + " " +QString::number( date.day());
767 767
768 break; 768 break;
769 case 5: 769 case 5:
770 str = dayName.left( 2 ) + " " +QString::number( date.day()); 770 str = dayName.left( 2 ) + " " +QString::number( date.day());
771 771
772 break; 772 break;
773 case 6: 773 case 6:
774 str = dayName.left( 3 ) + " " +QString::number( date.day()); 774 str = dayName.left( 3 ) + " " +QString::number( date.day());
775 break; 775 break;
776 776
777 default: 777 default:
778 break; 778 break;
779 } 779 }
780 if ( oneday ) { 780 if ( oneday ) {
781 QString addString; 781 QString addString;
782 if ( mSelectedDates.first() == QDateTime::currentDateTime().date() ) 782 if ( mSelectedDates.first() == QDateTime::currentDateTime().date() )
783 addString = i18n("Today"); 783 addString = i18n("Today");
784 else if ( mSelectedDates.first() == QDateTime::currentDateTime().date().addDays(1) ) 784 else if ( mSelectedDates.first() == QDateTime::currentDateTime().date().addDays(1) )
785 addString = i18n("Tomorrow"); 785 addString = i18n("Tomorrow");
786 else if ( mSelectedDates.first() == QDateTime::currentDateTime().date().addDays(-1) ) 786 else if ( mSelectedDates.first() == QDateTime::currentDateTime().date().addDays(-1) )
787 addString = i18n("Yesterday"); 787 addString = i18n("Yesterday");
788 else if ( mSelectedDates.first() == QDateTime::currentDateTime().date().addDays(-2) ) 788 else if ( mSelectedDates.first() == QDateTime::currentDateTime().date().addDays(-2) )
789 addString = i18n("Day before yesterday"); 789 addString = i18n("Day before yesterday");
790 else if ( mSelectedDates.first() == QDateTime::currentDateTime().date().addDays(2) ) 790 else if ( mSelectedDates.first() == QDateTime::currentDateTime().date().addDays(2) )
791 addString = i18n("Day after tomorrow"); 791 addString = i18n("Day after tomorrow");
792 if ( !addString.isEmpty() ) { 792 if ( !addString.isEmpty() ) {
793 str = addString+", " + str; 793 str = addString+", " + str;
794 } else { 794 } else {
795 str = KGlobal::locale()->formatDate( date, KOPrefs::instance()->mShortDateInViewer); 795 str = KGlobal::locale()->formatDate( date, KOPrefs::instance()->mShortDateInViewer);
796 } 796 }
797 } 797 }
798 dayLabel->setText(str); 798 dayLabel->setText(str);
799 //dayLabel->setAlignment(QLabel::AlignHCenter); 799 //dayLabel->setAlignment(QLabel::AlignHCenter);
800 if (date == QDate::currentDate()) { 800 if (date == QDate::currentDate()) {
801 QFont bFont = dlf; 801 QFont bFont = dlf;
802 bFont.setBold( true ); 802 bFont.setBold( true );
803 dayLabel->setFont(bFont); 803 dayLabel->setFont(bFont);
804 } 804 }
805 //dayLayout->addWidget(dayLabel); 805 //dayLayout->addWidget(dayLabel);
806 806
807#ifndef KORG_NOPLUGINS 807#ifndef KORG_NOPLUGINS
808 CalendarDecoration::List cds = KOCore::self()->calendarDecorations(); 808 CalendarDecoration::List cds = KOCore::self()->calendarDecorations();
809 CalendarDecoration *it; 809 CalendarDecoration *it;
810 for(it = cds.first(); it; it = cds.next()) { 810 for(it = cds.first(); it; it = cds.next()) {
811 QString text = it->shortText( date ); 811 QString text = it->shortText( date );
812 if ( !text.isEmpty() ) { 812 if ( !text.isEmpty() ) {
813 QLabel *label = new QLabel(text,mDayLabels); 813 QLabel *label = new QLabel(text,mDayLabels);
814 label->setAlignment(AlignCenter); 814 label->setAlignment(AlignCenter);
815 dayLayout->addWidget(label); 815 dayLayout->addWidget(label);
816 } 816 }
817 } 817 }
818 818
819 for(it = cds.first(); it; it = cds.next()) { 819 for(it = cds.first(); it; it = cds.next()) {
820 QWidget *wid = it->smallWidget(mDayLabels,date); 820 QWidget *wid = it->smallWidget(mDayLabels,date);
821 if ( wid ) { 821 if ( wid ) {
822 // wid->setHeight(20); 822 // wid->setHeight(20);
823 dayLayout->addWidget(wid); 823 dayLayout->addWidget(wid);
824 } 824 }
825 } 825 }
826#endif 826#endif
827 } 827 }
828 if ( ! appendLabels ) { 828 if ( ! appendLabels ) {
829 dayLabel = mDayLabelsList.next(); 829 dayLabel = mDayLabelsList.next();
830 if ( !dayLabel ) 830 if ( !dayLabel )
831 appendLabels = true; 831 appendLabels = true;
832 } 832 }
833 if ( appendLabels ) { 833 if ( appendLabels ) {
834 dayLabel = getNewDaylabel(); 834 dayLabel = getNewDaylabel();
835 } 835 }
836 //dayLabel->hide();//test only 836 //dayLabel->hide();//test only
837 837
838 dayLabel->setText(">"); 838 dayLabel->setText(">");
839 dayLabel->setFont( dlf ); 839 dayLabel->setFont( dlf );
840 dayLabel->setAutoRepeat( true ); 840 dayLabel->setAutoRepeat( true );
841 dayLabel->show(); 841 dayLabel->show();
842 dayLabel->setNum( -2 ); 842 dayLabel->setNum( -2 );
843 dayLabel->setFixedWidth( mAgenda->verticalScrollBar()->width()+ widModulo ); 843 dayLabel->setFixedWidth( mAgenda->verticalScrollBar()->width()+ widModulo );
844 844
845 //mLayoutDayLabels->addSpacing(mAgenda->verticalScrollBar()->width()+ offset+2); 845 //mLayoutDayLabels->addSpacing(mAgenda->verticalScrollBar()->width()+ offset+2);
846 if ( !appendLabels ) { 846 if ( !appendLabels ) {
847 dayLabel = mDayLabelsList.next(); 847 dayLabel = mDayLabelsList.next();
848 while ( dayLabel ) { 848 while ( dayLabel ) {
849 //qDebug("!dayLabel %d",dayLabel ); 849 //qDebug("!dayLabel %d",dayLabel );
850 dayLabel->hide(); 850 dayLabel->hide();
851 dayLabel = mDayLabelsList.next(); 851 dayLabel = mDayLabelsList.next();
852 } 852 }
853 } 853 }
854 854
855 mDayLabelsFrame->setFixedHeight( newHight + 4 ); 855 mDayLabelsFrame->setFixedHeight( newHight + 4 );
856} 856}
857 857
858int KOAgendaView::maxDatesHint() 858int KOAgendaView::maxDatesHint()
859{ 859{
860 // Not sure about the max number of events, so return 0 for now. 860 // Not sure about the max number of events, so return 0 for now.
861 return 0; 861 return 0;
862} 862}
863 863
864int KOAgendaView::currentDateCount() 864int KOAgendaView::currentDateCount()
865{ 865{
866 return mSelectedDates.count(); 866 return mSelectedDates.count();
867} 867}
868 868
869QPtrList<Incidence> KOAgendaView::selectedIncidences() 869QPtrList<Incidence> KOAgendaView::selectedIncidences()
870{ 870{
871 QPtrList<Incidence> selected; 871 QPtrList<Incidence> selected;
872 Incidence *incidence; 872 Incidence *incidence;
873 873
874 incidence = mAgenda->selectedIncidence(); 874 incidence = mAgenda->selectedIncidence();
875 if (incidence) selected.append(incidence); 875 if (incidence) selected.append(incidence);
876 876
877 incidence = mAllDayAgenda->selectedIncidence(); 877 incidence = mAllDayAgenda->selectedIncidence();
878 if (incidence) selected.append(incidence); 878 if (incidence) selected.append(incidence);
879 879
880 return selected; 880 return selected;
881} 881}
882 882
883DateList KOAgendaView::selectedDates() 883DateList KOAgendaView::selectedDates()
884{ 884{
885 DateList selected; 885 DateList selected;
886 QDate qd; 886 QDate qd;
887 887
888 qd = mAgenda->selectedIncidenceDate(); 888 qd = mAgenda->selectedIncidenceDate();
889 if (qd.isValid()) selected.append(qd); 889 if (qd.isValid()) selected.append(qd);
890 890
891 qd = mAllDayAgenda->selectedIncidenceDate(); 891 qd = mAllDayAgenda->selectedIncidenceDate();
892 if (qd.isValid()) selected.append(qd); 892 if (qd.isValid()) selected.append(qd);
893 893
894 return selected; 894 return selected;
895} 895}
896 896
897 897
898void KOAgendaView::updateView() 898void KOAgendaView::updateView()
899{ 899{
900 if ( mBlockUpdating ) 900 if ( mBlockUpdating )
901 return; 901 return;
902 // kdDebug() << "KOAgendaView::updateView()" << endl; 902 // kdDebug() << "KOAgendaView::updateView()" << endl;
903 fillAgenda(); 903 fillAgenda();
904 904
905} 905}
906 906
907 907
908/* 908/*
909 Update configuration settings for the agenda view. This method is not 909 Update configuration settings for the agenda view. This method is not
910 complete. 910 complete.
911*/ 911*/
912void KOAgendaView::updateConfig() 912void KOAgendaView::updateConfig()
913{ 913{
914 if ( mBlockUpdating ) 914 if ( mBlockUpdating )
915 return; 915 return;
916 if ( mAgenda->height() > 96 * KOPrefs::instance()->mHourSize ) { 916 if ( mAgenda->height() > 96 * KOPrefs::instance()->mHourSize ) {
917 int old = KOPrefs::instance()->mHourSize; 917 int old = KOPrefs::instance()->mHourSize;
918 KOPrefs::instance()->mHourSize = mAgenda->height()/96 +1; 918 KOPrefs::instance()->mHourSize = mAgenda->height()/96 +1;
919 //qDebug("KOPrefs::instance()->mHourSize adjusted %d to %d ", old,KOPrefs::instance()->mHourSize ); 919 //qDebug("KOPrefs::instance()->mHourSize adjusted %d to %d ", old,KOPrefs::instance()->mHourSize );
920 } 920 }
921 921
922 922
923 // update config for children 923 // update config for children
924 mTimeLabels->updateConfig(); 924 mTimeLabels->updateConfig();
925 mAgenda->storePosition(); 925 mAgenda->storePosition();
926 mAgenda->updateConfig(); 926 mAgenda->updateConfig();
927 mAllDayAgenda->updateConfig(); 927 mAllDayAgenda->updateConfig();
928 // widget synchronization 928 // widget synchronization
929 //TODO: find a better way, maybe signal/slot 929 //TODO: find a better way, maybe signal/slot
930 mTimeLabels->positionChanged(); 930 mTimeLabels->positionChanged();
931 931
932 // for some reason, this needs to be called explicitly 932 // for some reason, this needs to be called explicitly
933 mTimeLabels->repaint(); 933 mTimeLabels->repaint();
934 934
935 mDummyAllDayLeft->setFixedWidth(mTimeLabels->width()); 935 mDummyAllDayLeft->setFixedWidth(mTimeLabels->width());
936 936
937 // ToolTips displaying summary of events 937 // ToolTips displaying summary of events
938 KOAgendaItem::toolTipGroup()->setEnabled(KOPrefs::instance() 938 KOAgendaItem::toolTipGroup()->setEnabled(KOPrefs::instance()
939 ->mEnableToolTips); 939 ->mEnableToolTips);
940 940
941 //setHolidayMasks(); 941 //setHolidayMasks();
942 942
943 //createDayLabels(); called by via updateView(); 943 //createDayLabels(); called by via updateView();
944 mEventIndicatorTop->setXOffset(mTimeLabels->width() + mAgenda->frameWidth()); 944 mEventIndicatorTop->setXOffset(mTimeLabels->width() + mAgenda->frameWidth());
945 updateView(); 945 updateView();
946 mAgenda->restorePosition(); 946 mAgenda->restorePosition();
947} 947}
948 948
949 949
950void KOAgendaView::updateEventDates(KOAgendaItem *item, int type) 950void KOAgendaView::updateEventDates(KOAgendaItem *item, int type)
951{ 951{
952 952
953 953
954 int xxx = item->cellX(); 954 int xxx = item->cellX();
955 //qDebug("KOAgendaView::updateEventDates %d %d %d %d %d", xxx, mMinY.at(xxx),mMaxY.at(xxx),item->cellYTop(),item->cellYBottom() ); 955 //qDebug("KOAgendaView::updateEventDates %d %d %d %d %d", xxx, mMinY.at(xxx),mMaxY.at(xxx),item->cellYTop(),item->cellYBottom() );
956 if ( mMinY.at(xxx) > item->cellYTop() ) 956 if ( mMinY.at(xxx) > item->cellYTop() )
957 mMinY.at(xxx) = item->cellYTop(); 957 mMinY.at(xxx) = item->cellYTop();
958 if ( mMaxY.at(xxx) < item->cellYBottom() ) 958 if ( mMaxY.at(xxx) < item->cellYBottom() )
959 mMaxY.at(xxx) = item->cellYBottom(); 959 mMaxY.at(xxx) = item->cellYBottom();
960 960
961 QDateTime startDt,endDt; 961 QDateTime startDt,endDt;
962 QDate startDate; 962 QDate startDate;
963 int lenInSecs; 963 int lenInSecs;
964 // if ( type == KOAgenda::RESIZETOP ) 964 // if ( type == KOAgenda::RESIZETOP )
965 // qDebug("RESIZETOP "); 965 // qDebug("RESIZETOP ");
966 // if ( type == KOAgenda::RESIZEBOTTOM ) 966 // if ( type == KOAgenda::RESIZEBOTTOM )
967 // qDebug("RESIZEBOTTOM "); 967 // qDebug("RESIZEBOTTOM ");
968 // if ( type == KOAgenda::MOVE ) 968 // if ( type == KOAgenda::MOVE )
969 // qDebug("MOVE "); 969 // qDebug("MOVE ");
970 if ( item->incidence()->typeID() == eventID ) { 970 if ( item->incidence()->typeID() == eventID ) {
971 startDt =item->incidence()->dtStart(); 971 startDt =item->incidence()->dtStart();
972 endDt = item->incidence()->dtEnd(); 972 endDt = item->incidence()->dtEnd();
973 lenInSecs = startDt.secsTo( endDt ); 973 lenInSecs = startDt.secsTo( endDt );
974 } 974 }
975 975
976 // emit incidenceItemChanged( item->incidence(), KOGlobals::EVENTEDITED ); 976 // emit incidenceItemChanged( item->incidence(), KOGlobals::EVENTEDITED );
977 977
978 if ( item->incidence()->typeID()== todoID && item->mLastMoveXPos > 0 ) { 978 if ( item->incidence()->typeID()== todoID && item->mLastMoveXPos > 0 ) {
979 startDate = mSelectedDates[item->mLastMoveXPos]; 979 startDate = mSelectedDates[item->mLastMoveXPos];
980 } else { 980 } else {
981 if (item->cellX() < 0) { 981 if (item->cellX() < 0) {
982 startDate = (mSelectedDates.first()).addDays(item->cellX()); 982 startDate = (mSelectedDates.first()).addDays(item->cellX());
983 } else { 983 } else {
984 startDate = mSelectedDates[item->cellX()]; 984 startDate = mSelectedDates[item->cellX()];
985 } 985 }
986 } 986 }
987 startDt.setDate(startDate); 987 startDt.setDate(startDate);
988 988
989 if (item->incidence()->doesFloat()) { 989 if (item->incidence()->doesFloat()) {
990 endDt.setDate(startDate.addDays(item->cellWidth() - 1)); 990 endDt.setDate(startDate.addDays(item->cellWidth() - 1));
991 } else { 991 } else {
992 if ( type == KOAgenda::RESIZETOP || type == KOAgenda::MOVE ) 992 if ( type == KOAgenda::RESIZETOP || type == KOAgenda::MOVE )
993 startDt.setTime(mAgenda->gyToTime(item->cellYTop())); 993 startDt.setTime(mAgenda->gyToTime(item->cellYTop()));
994 if ( item->incidence()->typeID() == eventID ) { 994 if ( item->incidence()->typeID() == eventID ) {
995 if ( type == KOAgenda::MOVE ) { 995 if ( type == KOAgenda::MOVE ) {
996 endDt = startDt.addSecs(lenInSecs); 996 endDt = startDt.addSecs(lenInSecs);
997 997
998 } else if ( type == KOAgenda::RESIZEBOTTOM ) { 998 } else if ( type == KOAgenda::RESIZEBOTTOM ) {
999 if (item->lastMultiItem()) { 999 if (item->lastMultiItem()) {
1000 endDt.setTime(mAgenda->gyToTime(item->lastMultiItem()->cellYBottom()+1)); 1000 endDt.setTime(mAgenda->gyToTime(item->lastMultiItem()->cellYBottom()+1));
1001 endDt.setDate(startDate. 1001 endDt.setDate(startDate.
1002 addDays(item->lastMultiItem()->cellX() - item->cellX())); 1002 addDays(item->lastMultiItem()->cellX() - item->cellX()));
1003 } else { 1003 } else {
1004 endDt.setTime(mAgenda->gyToTime(item->cellYBottom()+1)); 1004 endDt.setTime(mAgenda->gyToTime(item->cellYBottom()+1));
1005 endDt.setDate(startDate); 1005 endDt.setDate(startDate);
1006 } 1006 }
1007 } 1007 }
1008 } else { 1008 } else {
1009 // todo 1009 // todo
1010 if (item->lastMultiItem()) { 1010 if (item->lastMultiItem()) {
1011 endDt.setTime(mAgenda->gyToTime(item->lastMultiItem()->cellYBottom()+1)); 1011 endDt.setTime(mAgenda->gyToTime(item->lastMultiItem()->cellYBottom()+1));
1012 endDt.setDate(startDate. 1012 endDt.setDate(startDate.
1013 addDays(item->lastMultiItem()->cellX() - item->cellX())); 1013 addDays(item->lastMultiItem()->cellX() - item->cellX()));
1014 } else { 1014 } else {
1015 //qDebug("tem->cellYBottom() %d",item->cellYBottom() ); 1015 //qDebug("tem->cellYBottom() %d",item->cellYBottom() );
1016 if ( item->cellYBottom() > 0 ) 1016 if ( item->cellYBottom() > 0 )
1017 endDt.setTime(mAgenda->gyToTime(item->cellYBottom()+1)); 1017 endDt.setTime(mAgenda->gyToTime(item->cellYBottom()+1));
1018 else 1018 else
1019 endDt.setTime((static_cast<Todo*>(item->incidence()))->dtDue().time()); 1019 endDt.setTime((static_cast<Todo*>(item->incidence()))->dtDue().time());
1020 endDt.setDate(startDate); 1020 endDt.setDate(startDate);
1021 } 1021 }
1022 } 1022 }
1023 } 1023 }
1024 if ( item->incidence()->typeID() == eventID ) { 1024 if ( item->incidence()->typeID() == eventID ) {
1025 item->incidence()->setDtStart(startDt); 1025 item->incidence()->setDtStart(startDt);
1026 (static_cast<Event*>(item->incidence()))->setDtEnd(endDt); 1026 (static_cast<Event*>(item->incidence()))->setDtEnd(endDt);
1027 } else if ( item->incidence()->typeID() == todoID ) { 1027 } else if ( item->incidence()->typeID() == todoID ) {
1028 Todo* to = static_cast<Todo*>(item->incidence()); 1028 Todo* to = static_cast<Todo*>(item->incidence());
1029 1029
1030 to->setDtDue(endDt); 1030 to->setDtDue(endDt);
1031 if ( to->hasStartDate() ) { 1031 if ( to->hasStartDate() ) {
1032 if (to->dtStart() >= to->dtDue() ) 1032 if (to->dtStart() >= to->dtDue() )
1033 to->setDtStart(to->dtDue().addDays( -2 )); 1033 to->setDtStart(to->dtDue().addDays( -2 ));
1034 } 1034 }
1035 1035
1036 } 1036 }
1037 //qDebug("KOAgendaView::updateEventDates stsart %s end %s ", startDt.toString().latin1(), endDt.toString().latin1() ); 1037 //qDebug("KOAgendaView::updateEventDates stsart %s end %s ", startDt.toString().latin1(), endDt.toString().latin1() );
1038 item->incidence()->setRevision(item->incidence()->revision()+1); 1038 item->incidence()->setRevision(item->incidence()->revision()+1);
1039 item->setItemDate(startDt.date()); 1039 item->setItemDate(startDt.date());
1040 //item->updateItem(); 1040 //item->updateItem();
1041 if ( item->incidence()->typeID() == todoID ) { 1041 if ( item->incidence()->typeID() == todoID ) {
1042 emit todoMoved((Todo*)item->incidence(), KOGlobals::EVENTEDITED ); 1042 emit todoMoved((Todo*)item->incidence(), KOGlobals::EVENTEDITED );
1043 1043
1044 } 1044 }
1045 else 1045 else
1046 emit incidenceChanged(item->incidence(), KOGlobals::EVENTEDITED); 1046 emit incidenceChanged(item->incidence(), KOGlobals::EVENTEDITED);
1047 item->updateItem(); 1047 item->updateItem();
1048} 1048}
1049 1049
diff --git a/korganizer/kolistview.cpp b/korganizer/kolistview.cpp
index 1f3b4c6..c705c73 100644
--- a/korganizer/kolistview.cpp
+++ b/korganizer/kolistview.cpp
@@ -1,1390 +1,1446 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 1999 Preston Brown 3 Copyright (c) 1999 Preston Brown
4 Copyright (c) 2000,2001 Cornelius Schumacher <schumacher@kde.org> 4 Copyright (c) 2000,2001 Cornelius Schumacher <schumacher@kde.org>
5 5
6 This program is free software; you can redistribute it and/or modify 6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by 7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or 8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version. 9 (at your option) any later version.
10 10
11 This program is distributed in the hope that it will be useful, 11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details. 14 GNU General Public License for more details.
15 15
16 You should have received a copy of the GNU General Public License 16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software 17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
19 19
20 As a special exception, permission is given to link this program 20 As a special exception, permission is given to link this program
21 with any edition of Qt, and distribute the resulting executable, 21 with any edition of Qt, and distribute the resulting executable,
22 without including the source code for Qt in the source distribution. 22 without including the source code for Qt in the source distribution.
23*/ 23*/
24 24
25#include <qlistview.h> 25#include <qlistview.h>
26#include <qlayout.h> 26#include <qlayout.h>
27#include <qlabel.h> 27#include <qlabel.h>
28#include <qpopupmenu.h> 28#include <qpopupmenu.h>
29#include <qprogressbar.h> 29#include <qprogressbar.h>
30#include <qfileinfo.h> 30#include <qfileinfo.h>
31#include <qmessagebox.h> 31#include <qmessagebox.h>
32#include <qdialog.h> 32#include <qdialog.h>
33#include <qtextstream.h> 33#include <qtextstream.h>
34#include <qdir.h> 34#include <qdir.h>
35#include <qwhatsthis.h> 35#include <qwhatsthis.h>
36#include <qregexp.h> 36#include <qregexp.h>
37#include <qpainter.h> 37#include <qpainter.h>
38#include <qpaintdevicemetrics.h> 38#include <qpaintdevicemetrics.h>
39 39
40#include <klocale.h> 40#include <klocale.h>
41#include <kdebug.h> 41#include <kdebug.h>
42#include <kiconloader.h> 42#include <kiconloader.h>
43#include <kglobal.h> 43#include <kglobal.h>
44 44
45#include <libkdepim/kpimglobalprefs.h> 45#include <libkdepim/kpimglobalprefs.h>
46#include <libkcal/calendar.h> 46#include <libkcal/calendar.h>
47#include <libkcal/calendarlocal.h> 47#include <libkcal/calendarlocal.h>
48#include <libkcal/icalformat.h> 48#include <libkcal/icalformat.h>
49#include <libkcal/vcalformat.h> 49#include <libkcal/vcalformat.h>
50#include <libkcal/recurrence.h> 50#include <libkcal/recurrence.h>
51#include <libkcal/filestorage.h> 51#include <libkcal/filestorage.h>
52#include <libkdepim/categoryselectdialog.h> 52#include <libkdepim/categoryselectdialog.h>
53#include <libkcal/kincidenceformatter.h> 53#include <libkcal/kincidenceformatter.h>
54#ifndef DESKTOP_VERSION 54#ifndef DESKTOP_VERSION
55#include <qpe/qpeapplication.h> 55#include <qpe/qpeapplication.h>
56#else 56#else
57#include <qapplication.h> 57#include <qapplication.h>
58#endif 58#endif
59 59
60#ifndef KORG_NOPRINTER 60#ifndef KORG_NOPRINTER
61#include "calprinter.h" 61#include "calprinter.h"
62#endif 62#endif
63#include "koglobals.h" 63#include "koglobals.h"
64#include "koprefs.h" 64#include "koprefs.h"
65#include "kfiledialog.h" 65#include "kfiledialog.h"
66 66
67#include "kolistview.h" 67#include "kolistview.h"
68#include "koeventviewer.h" 68#include "koeventviewer.h"
69 69
70
71
72
73class KOListViewWhatsThis :public QWhatsThis 70class KOListViewWhatsThis :public QWhatsThis
74{ 71{
75public: 72public:
76 KOListViewWhatsThis( QWidget *wid, KOListView* view ) : QWhatsThis( wid ), _wid(wid),_view (view) { }; 73 KOListViewWhatsThis( QWidget *wid, KOListView* view ) : QWhatsThis( wid ), _wid(wid),_view (view) { };
77 74
78protected: 75protected:
79 virtual QString text( const QPoint& p) 76 virtual QString text( const QPoint& p)
80 { 77 {
81 return _view->getWhatsThisText(p) ; 78 return _view->getWhatsThisText(p) ;
82 } 79 }
83private: 80private:
84 QWidget* _wid; 81 QWidget* _wid;
85 KOListView * _view; 82 KOListView * _view;
86}; 83};
87 84
88 85
89ListItemVisitor::ListItemVisitor(KOListViewItem *item, QDate date ) 86ListItemVisitor::ListItemVisitor(KOListViewItem *item, QDate date )
90{ 87{
91 mItem = item; 88 mItem = item;
92 mDate = date; 89 mDate = date;
93} 90}
94 91
95ListItemVisitor::~ListItemVisitor() 92ListItemVisitor::~ListItemVisitor()
96{ 93{
97} 94}
98 95
99bool ListItemVisitor::visit(Event *e) 96bool ListItemVisitor::visit(Event *e)
100{ 97{
101 bool ok = false; 98 bool ok = false;
102 QString start, end; 99 QString start, end;
103 QDate ds, de; 100 QDate ds, de;
104 if ( e->doesRecur() ) { 101 if ( e->doesRecur() ) {
105 ds = e->getNextOccurence( QDateTime( mDate, QTime(0,0,0)), &ok ).date(); 102 ds = e->getNextOccurence( QDateTime( mDate, QTime(0,0,0)), &ok ).date();
106 if ( ok ) { 103 if ( ok ) {
107 int days = e->dtStart().date().daysTo(e->dtEnd().date() ); 104 int days = e->dtStart().date().daysTo(e->dtEnd().date() );
108 start = KGlobal::locale()->formatDate(ds,true); 105 start = KGlobal::locale()->formatDate(ds,true);
109 de = ds.addDays( days); 106 de = ds.addDays( days);
110 end = KGlobal::locale()->formatDate(de,true); 107 end = KGlobal::locale()->formatDate(de,true);
111 } 108 }
112 109
113 } 110 }
114 if ( ! ok ) { 111 if ( ! ok ) {
115 start =e->dtStartDateStr(); 112 start =e->dtStartDateStr();
116 end = e->dtEndDateStr(); 113 end = e->dtEndDateStr();
117 ds = e->dtStart().date(); 114 ds = e->dtStart().date();
118 de = e->dtEnd().date(); 115 de = e->dtEnd().date();
119 } 116 }
120 mItem->setText(0,e->summary()); 117 mItem->setText(0,e->summary());
121 mItem->setText(1,start); 118 mItem->setText(1,start);
122 if ( e->doesFloat() ) 119 if ( e->doesFloat() )
123 mItem->setText(2,"---"); 120 mItem->setText(2,"---");
124 else 121 else
125 mItem->setText(2,e->dtStartTimeStr()); 122 mItem->setText(2,e->dtStartTimeStr());
126 mItem->setText(3,end); 123 mItem->setText(3,end);
127 if ( e->doesFloat() ) 124 if ( e->doesFloat() )
128 mItem->setText(4,"---"); 125 mItem->setText(4,"---");
129 else 126 else
130 mItem->setText(4,e->dtEndTimeStr()); 127 mItem->setText(4,e->dtEndTimeStr());
131 if ( e->isAlarmEnabled() ) { 128 if ( e->isAlarmEnabled() ) {
132 mItem->setText(5,e->alarms().first()->offsetText() ); 129 mItem->setText(5,e->alarms().first()->offsetText() );
133 } else { 130 } else {
134 mItem->setText(5, i18n("No")); 131 mItem->setText(5, i18n("No"));
135 } 132 }
136 mItem->setText(6, e->recurrence()->recurrenceText()); 133 mItem->setText(6, e->recurrence()->recurrenceText());
137 if( ! e->doesRecur() ) 134 if( ! e->doesRecur() )
138 mItem->setSortKey( 6, "-" ); 135 mItem->setSortKey( 6, "-" );
139 mItem->setText(7,"---"); 136 mItem->setText(7,"---");
140 mItem->setText(8,"---"); 137 mItem->setText(8,"---");
141 mItem->setText(9, e->cancelled() ? i18n("Yes") : i18n("No")); 138 mItem->setText(9, e->cancelled() ? i18n("Yes") : i18n("No"));
142 mItem->setText(10,e->categoriesStr()); 139 mItem->setText(10,e->categoriesStr());
140 mItem->setText(11, KOPrefs::instance()->calName( e->calID() ));
143 141
144 QString key; 142 QString key;
145 QTime t = e->doesFloat() ? QTime(0,0) : e->dtStart().time(); 143 QTime t = e->doesFloat() ? QTime(0,0) : e->dtStart().time();
146 key.sprintf("%04d%02d%02d%02d%02d",ds.year(),ds.month(),ds.day(),t.hour(),t.minute()); 144 key.sprintf("%04d%02d%02d%02d%02d",ds.year(),ds.month(),ds.day(),t.hour(),t.minute());
147 mItem->setSortKey(1,key); 145 mItem->setSortKey(1,key);
148 146
149 t = e->doesFloat() ? QTime(0,0) : e->dtEnd().time(); 147 t = e->doesFloat() ? QTime(0,0) : e->dtEnd().time();
150 key.sprintf("%04d%02d%02d%02d%02d",de.year(),de.month(),de.day(),t.hour(),t.minute()); 148 key.sprintf("%04d%02d%02d%02d%02d",de.year(),de.month(),de.day(),t.hour(),t.minute());
151 mItem->setSortKey(3,key); 149 mItem->setSortKey(3,key);
152 return true; 150 return true;
153} 151}
154 152
155bool ListItemVisitor::visit(Todo *t) 153bool ListItemVisitor::visit(Todo *t)
156{ 154{
157 mItem->setText(0,i18n("Todo: %1").arg(t->summary())); 155 mItem->setText(0,i18n("Todo: %1").arg(t->summary()));
158 if (t->hasStartDate()) { 156 if (t->hasStartDate()) {
159 mItem->setText(1,t->dtStartDateStr()); 157 mItem->setText(1,t->dtStartDateStr());
160 if (t->doesFloat()) { 158 if (t->doesFloat()) {
161 mItem->setText(2,"---"); 159 mItem->setText(2,"---");
162 } else { 160 } else {
163 mItem->setText(2,t->dtStartTimeStr()); 161 mItem->setText(2,t->dtStartTimeStr());
164 } 162 }
165 } else { 163 } else {
166 mItem->setText(1,"---"); 164 mItem->setText(1,"---");
167 mItem->setText(2,"---"); 165 mItem->setText(2,"---");
168 } 166 }
169 mItem->setText(3,"---"); 167 mItem->setText(3,"---");
170 mItem->setText(4,"---"); 168 mItem->setText(4,"---");
171 if ( t->isAlarmEnabled() ) { 169 if ( t->isAlarmEnabled() ) {
172 mItem->setText(5,t->alarms().first()->offsetText() ); 170 mItem->setText(5,t->alarms().first()->offsetText() );
173 } else { 171 } else {
174 mItem->setText(5, i18n("No")); 172 mItem->setText(5, i18n("No"));
175 } 173 }
176 mItem->setText(6, t->recurrence()->recurrenceText()); 174 mItem->setText(6, t->recurrence()->recurrenceText());
177 if( ! t->doesRecur() ) 175 if( ! t->doesRecur() )
178 mItem->setSortKey( 6, "-" ); 176 mItem->setSortKey( 6, "-" );
179 if (t->hasDueDate()) { 177 if (t->hasDueDate()) {
180 mItem->setText(7,t->dtDueDateStr()); 178 mItem->setText(7,t->dtDueDateStr());
181 if (t->doesFloat()) { 179 if (t->doesFloat()) {
182 mItem->setText(8,"---"); 180 mItem->setText(8,"---");
183 } else { 181 } else {
184 mItem->setText(8,t->dtDueTimeStr()); 182 mItem->setText(8,t->dtDueTimeStr());
185 } 183 }
186 } else { 184 } else {
187 mItem->setText(7,"---"); 185 mItem->setText(7,"---");
188 mItem->setText(8,"---"); 186 mItem->setText(8,"---");
189 } 187 }
190 mItem->setText(9, t->cancelled() ? i18n("Yes") : i18n("No")); 188 mItem->setText(9, t->cancelled() ? i18n("Yes") : i18n("No"));
191 mItem->setText(10,t->categoriesStr()); 189 mItem->setText(10,t->categoriesStr());
190 mItem->setText(11, KOPrefs::instance()->calName( t->calID() ));
192 191
193 QString key; 192 QString key;
194 QDate d; 193 QDate d;
195 if (t->hasDueDate()) { 194 if (t->hasDueDate()) {
196 d = t->dtDue().date(); 195 d = t->dtDue().date();
197 QTime tm = t->doesFloat() ? QTime(0,0) : t->dtDue().time(); 196 QTime tm = t->doesFloat() ? QTime(0,0) : t->dtDue().time();
198 key.sprintf("%04d%02d%02d%02d%02d",d.year(),d.month(),d.day(),tm.hour(),tm.minute()); 197 key.sprintf("%04d%02d%02d%02d%02d",d.year(),d.month(),d.day(),tm.hour(),tm.minute());
199 mItem->setSortKey(7,key); 198 mItem->setSortKey(7,key);
200 } 199 }
201 if ( t->hasStartDate() ) { 200 if ( t->hasStartDate() ) {
202 d = t->dtStart().date(); 201 d = t->dtStart().date();
203 QTime tm = t->doesFloat() ? QTime(0,0) : t->dtStart().time(); 202 QTime tm = t->doesFloat() ? QTime(0,0) : t->dtStart().time();
204 key.sprintf("%04d%02d%02d%02d%02d",d.year(),d.month(),d.day(),tm.hour(),tm.minute()); 203 key.sprintf("%04d%02d%02d%02d%02d",d.year(),d.month(),d.day(),tm.hour(),tm.minute());
205 mItem->setSortKey(1,key); 204 mItem->setSortKey(1,key);
206 } 205 }
207 return true; 206 return true;
208} 207}
209 208
210bool ListItemVisitor::visit(Journal * j) 209bool ListItemVisitor::visit(Journal * j)
211{ 210{
212 QString des = j->description().left(30); 211 QString des = j->description().left(30);
213 des = des.simplifyWhiteSpace (); 212 des = des.simplifyWhiteSpace ();
214 des.replace (QRegExp ("\\n"),"" ); 213 des.replace (QRegExp ("\\n"),"" );
215 des.replace (QRegExp ("\\r"),"" ); 214 des.replace (QRegExp ("\\r"),"" );
216 mItem->setText(0,i18n("Journal: ")+des.left(25)); 215 mItem->setText(0,i18n("Journal: ")+des.left(25));
217 mItem->setText(1,j->dtStartDateStr()); 216 mItem->setText(1,j->dtStartDateStr());
218 mItem->setText(2,"---"); 217 mItem->setText(2,"---");
219 mItem->setText(3,"---"); 218 mItem->setText(3,"---");
220 mItem->setText(4,"---"); 219 mItem->setText(4,"---");
221 mItem->setText(5,"---"); 220 mItem->setText(5,"---");
222 mItem->setText(6,"---"); 221 mItem->setText(6,"---");
223 mItem->setText(7,j->dtStartDateStr()); 222 mItem->setText(7,j->dtStartDateStr());
224 mItem->setText(8,"---"); 223 mItem->setText(8,"---");
225 mItem->setText(9,"---"); 224 mItem->setText(9,"---");
226 mItem->setText(10,i18n("Last Modified: ")+ KGlobal::locale()->formatDateTime( j->lastModified() , true) ); 225 mItem->setText(10,i18n("Last Modified: ")+ KGlobal::locale()->formatDateTime( j->lastModified() , true) );
226 mItem->setText(11, KOPrefs::instance()->calName( j->calID() ));
227 227
228 QString key; 228 QString key;
229 QDate d = j->dtStart().date(); 229 QDate d = j->dtStart().date();
230 key.sprintf("%04d%02d%02d",d.year(),d.month(),d.day()); 230 key.sprintf("%04d%02d%02d",d.year(),d.month(),d.day());
231 mItem->setSortKey(1,key); 231 mItem->setSortKey(1,key);
232 mItem->setSortKey(7,key); 232 mItem->setSortKey(7,key);
233 233
234 return true; 234 return true;
235} 235}
236 236
237KOListView::KOListView(Calendar *calendar, QWidget *parent, 237KOListView::KOListView(Calendar *calendar, QWidget *parent,
238 const char *name) 238 const char *name)
239 : KOEventView(calendar, parent, name) 239 : KOEventView(calendar, parent, name)
240{ 240{
241 mActiveItem = 0; 241 mActiveItem = 0;
242 mListView = new KOListViewListView(this); 242 mListView = new KOListViewListView(this);
243 mListView->addColumn(i18n("Summary")); 243 mListView->addColumn(i18n("Summary"));
244 mListView->addColumn(i18n("Start Date")); 244 mListView->addColumn(i18n("Start Date"));
245 mListView->addColumn(i18n("Start Time")); 245 mListView->addColumn(i18n("Start Time"));
246 mListView->addColumn(i18n("End Date")); 246 mListView->addColumn(i18n("End Date"));
247 mListView->addColumn(i18n("End Time")); 247 mListView->addColumn(i18n("End Time"));
248 mListView->addColumn(i18n("Alarm")); // alarm set? 248 mListView->addColumn(i18n("Alarm")); // alarm set?
249 mListView->addColumn(i18n("Recurs")); // recurs? 249 mListView->addColumn(i18n("Recurs")); // recurs?
250 mListView->addColumn(i18n("Due Date")); 250 mListView->addColumn(i18n("Due Date"));
251 mListView->addColumn(i18n("Due Time")); 251 mListView->addColumn(i18n("Due Time"));
252 mListView->addColumn(i18n("Cancelled")); 252 mListView->addColumn(i18n("Cancelled"));
253 mListView->addColumn(i18n("Categories")); 253 mListView->addColumn(i18n("Categories"));
254 mListView->addColumn(i18n("Calendar"));
254 255
255 mListView->setColumnAlignment(0,AlignLeft); 256 mListView->setColumnAlignment(0,AlignLeft);
256 mListView->setColumnAlignment(1,AlignLeft); 257 mListView->setColumnAlignment(1,AlignLeft);
257 mListView->setColumnAlignment(2,AlignHCenter); 258 mListView->setColumnAlignment(2,AlignHCenter);
258 mListView->setColumnAlignment(3,AlignLeft); 259 mListView->setColumnAlignment(3,AlignLeft);
259 mListView->setColumnAlignment(4,AlignHCenter); 260 mListView->setColumnAlignment(4,AlignHCenter);
260 mListView->setColumnAlignment(5,AlignLeft); 261 mListView->setColumnAlignment(5,AlignLeft);
261 mListView->setColumnAlignment(6,AlignLeft); 262 mListView->setColumnAlignment(6,AlignLeft);
262 mListView->setColumnAlignment(7,AlignLeft); 263 mListView->setColumnAlignment(7,AlignLeft);
263 mListView->setColumnAlignment(8,AlignLeft); 264 mListView->setColumnAlignment(8,AlignLeft);
264 mListView->setColumnAlignment(9,AlignLeft); 265 mListView->setColumnAlignment(9,AlignLeft);
265 mListView->setColumnAlignment(10,AlignLeft); 266 mListView->setColumnAlignment(10,AlignLeft);
266 mListView->setColumnWidthMode(10, QListView::Manual); 267 mListView->setColumnAlignment(11,AlignLeft);
267 mKOListViewWhatsThis = new KOListViewWhatsThis(mListView->viewport(),this); 268 mKOListViewWhatsThis = new KOListViewWhatsThis(mListView->viewport(),this);
268 269
269 int iii = 0; 270 int iii = 0;
270 for ( iii = 0; iii< 10 ; ++iii ) 271 for ( iii = 0; iii< 12 ; ++iii )
271 mListView->setColumnWidthMode( iii, QListView::Manual ); 272 mListView->setColumnWidthMode( iii, QListView::Manual );
272 273
273 QBoxLayout *layoutTop = new QVBoxLayout(this); 274 QBoxLayout *layoutTop = new QVBoxLayout(this);
274 layoutTop->addWidget(mListView); 275 layoutTop->addWidget(mListView);
275 mListView->setFont ( KOPrefs::instance()->mListViewFont ); 276 mListView->setFont ( KOPrefs::instance()->mListViewFont );
276 mPopupMenu = eventPopup(); 277 mPopupMenu = eventPopup();
277 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), 278 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()),
278 i18n("Select all"),this, 279 i18n("Select all"),this,
279 SLOT(allSelection()),true); 280 SLOT(allSelection()),true);
280 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), 281 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()),
281 i18n("Deselect all"),this, 282 i18n("Deselect all"),this,
282 SLOT(clearSelection()),true); 283 SLOT(clearSelection()),true);
283 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), 284 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()),
284 i18n("Delete all selected"),this, 285 i18n("Delete all selected"),this,
285 SLOT(deleteAll()),true); 286 SLOT(deleteAll()),true);
286 287
287 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), 288 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()),
288 i18n("Hide all selected"),this, 289 i18n("Hide all selected"),this,
289 SLOT(hideAll()),true); 290 SLOT(hideAll()),true);
290 291
291 mPopupMenu->insertSeparator(); 292 mPopupMenu->insertSeparator();
292#ifdef DESKTOP_VERSION 293#ifdef DESKTOP_VERSION
293 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), 294 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()),
294 i18n("Print complete list"),this, 295 i18n("Print complete list"),this,
295 SLOT(printList()),true); 296 SLOT(printList()),true);
296 mPopupMenu->insertSeparator(); 297 mPopupMenu->insertSeparator();
297#endif 298#endif
299 mCalPopup = new QPopupMenu ( this );
300 mPopupMenu->insertItem( i18n("Set Calendar"), mCalPopup );
301
302 QObject::connect(mCalPopup,SIGNAL(aboutToShow()),this,
303 SLOT( populateCalPopup() ));
304 QObject::connect(mCalPopup,SIGNAL(activated( int )),this,
305 SLOT( setCalendar( int ) ));
298 QPopupMenu * exportPO = new QPopupMenu ( this ); 306 QPopupMenu * exportPO = new QPopupMenu ( this );
299 mPopupMenu->insertItem( i18n("Export selected"), exportPO ); 307 mPopupMenu->insertItem( i18n("Export selected"), exportPO );
300 exportPO->insertItem( i18n("As iCal (ics) file..."),this, 308 exportPO->insertItem( i18n("As iCal (ics) file..."),this,
301 SLOT(saveToFile())); 309 SLOT(saveToFile()));
302 exportPO->insertItem( i18n("As vCal (vcs) file..."),this, 310 exportPO->insertItem( i18n("As vCal (vcs) file..."),this,
303 SLOT(saveToFileVCS())); 311 SLOT(saveToFileVCS()));
304 exportPO->insertItem( i18n("Journal/Details..."),this, 312 exportPO->insertItem( i18n("Journal/Details..."),this,
305 SLOT(saveDescriptionToFile())); 313 SLOT(saveDescriptionToFile()));
306 // mPopupMenu->insertSeparator(); 314 // mPopupMenu->insertSeparator();
307 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), 315 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()),
308 i18n("Add Categ. to selected..."),this, 316 i18n("Add Categ. to selected..."),this,
309 SLOT(addCat()),true); 317 SLOT(addCat()),true);
310 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), 318 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()),
311 i18n("Set Categ. for selected..."),this, 319 i18n("Set Categ. for selected..."),this,
312 SLOT(setCat()),true); 320 SLOT(setCat()),true);
313 //mPopupMenu->insertSeparator(); 321 //mPopupMenu->insertSeparator();
314 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), 322 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()),
315 i18n("Set alarm for selected..."),this, 323 i18n("Set alarm for selected..."),this,
316 SLOT(setAlarm()),true); 324 SLOT(setAlarm()),true);
317 325
318 326
327
319#ifndef DESKTOP_VERSION 328#ifndef DESKTOP_VERSION
320 mPopupMenu->insertSeparator(); 329 mPopupMenu->insertSeparator();
321 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), 330 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()),
322 i18n("Beam selected via IR"),this, 331 i18n("Beam selected via IR"),this,
323 SLOT(beamSelected()),true); 332 SLOT(beamSelected()),true);
324#endif 333#endif
325 /* 334 /*
326 mPopupMenu = new QPopupMenu; 335 mPopupMenu = new QPopupMenu;
327 mPopupMenu->insertItem(i18n("Edit Event"), this, 336 mPopupMenu->insertItem(i18n("Edit Event"), this,
328 SLOT (editEvent())); 337 SLOT (editEvent()));
329 mPopupMenu->insertItem(SmallIcon("delete"), i18n("Delete Event"), this, 338 mPopupMenu->insertItem(SmallIcon("delete"), i18n("Delete Event"), this,
330 SLOT (deleteEvent())); 339 SLOT (deleteEvent()));
331 mPopupMenu->insertSeparator(); 340 mPopupMenu->insertSeparator();
332 mPopupMenu->insertItem(i18n("Show Dates"), this, 341 mPopupMenu->insertItem(i18n("Show Dates"), this,
333 SLOT(showDates())); 342 SLOT(showDates()));
334 mPopupMenu->insertItem(i18n("Hide Dates"), this, 343 mPopupMenu->insertItem(i18n("Hide Dates"), this,
335 SLOT(hideDates())); 344 SLOT(hideDates()));
336 */ 345 */
337 QObject::connect(mListView,SIGNAL( newEvent()), 346 QObject::connect(mListView,SIGNAL( newEvent()),
338 this,SIGNAL(signalNewEvent())); 347 this,SIGNAL(signalNewEvent()));
339 QObject::connect(mListView,SIGNAL(doubleClicked(QListViewItem *)), 348 QObject::connect(mListView,SIGNAL(doubleClicked(QListViewItem *)),
340 this,SLOT(defaultItemAction(QListViewItem *))); 349 this,SLOT(defaultItemAction(QListViewItem *)));
341 QObject::connect(mListView,SIGNAL(rightButtonPressed( QListViewItem *, 350 QObject::connect(mListView,SIGNAL(rightButtonPressed( QListViewItem *,
342 const QPoint &, int )), 351 const QPoint &, int )),
343 this,SLOT(popupMenu(QListViewItem *,const QPoint &,int))); 352 this,SLOT(popupMenu(QListViewItem *,const QPoint &,int)));
344 QObject::connect(mListView,SIGNAL(currentChanged(QListViewItem *)), 353 QObject::connect(mListView,SIGNAL(currentChanged(QListViewItem *)),
345 SLOT(processSelectionChange(QListViewItem *))); 354 SLOT(processSelectionChange(QListViewItem *)));
346 QObject::connect(mListView,SIGNAL(showIncidence(Incidence *)), 355 QObject::connect(mListView,SIGNAL(showIncidence(Incidence *)),
347 SIGNAL(showIncidenceSignal(Incidence *)) ); 356 SIGNAL(showIncidenceSignal(Incidence *)) );
348 357
349 readSettings(KOGlobals::config(),"KOListView Layout"); 358 readSettings(KOGlobals::config(),"KOListView Layout");
350} 359}
351 360
352KOListView::~KOListView() 361KOListView::~KOListView()
353{ 362{
354 delete mPopupMenu; 363 delete mPopupMenu;
355#if QT_VERSION >= 0x030000 364#if QT_VERSION >= 0x030000
356 365
357#else 366#else
358 delete mKOListViewWhatsThis; 367 delete mKOListViewWhatsThis;
359#endif 368#endif
360} 369}
361 370
362QString KOListView::getWhatsThisText(QPoint p) 371QString KOListView::getWhatsThisText(QPoint p)
363{ 372{
364 KOListViewItem* item = ( KOListViewItem* ) mListView->itemAt( p ); 373 KOListViewItem* item = ( KOListViewItem* ) mListView->itemAt( p );
365 if ( item ) 374 if ( item )
366 return KIncidenceFormatter::instance()->getFormattedText( item->data(), 375 return KIncidenceFormatter::instance()->getFormattedText( item->data(),
367 KOPrefs::instance()->mWTshowDetails, 376 KOPrefs::instance()->mWTshowDetails,
368 KOPrefs::instance()->mWTshowCreated, 377 KOPrefs::instance()->mWTshowCreated,
369 KOPrefs::instance()->mWTshowChanged); 378 KOPrefs::instance()->mWTshowChanged);
370 return i18n("That is the list view" ); 379 return i18n("That is the list view" );
371 380
372} 381}
373 382
383void KOListView::setCalendar( int c )
384{
385 int result = QMessageBox::warning( this, i18n("KO/Pi: Information!"),
386 i18n("This adds the selected\nitems to the calendar\n%1\nand removes them from\ntheir current calendar!").arg( KOPrefs::instance()->calName( c ) ),
387 i18n("Continue"), i18n("Cancel"), 0,
388 0, 1 );
389 if ( result != 0 ) {
390 return;
391 }
392
393 QPtrList<Incidence> delSel = getSelectedIncidences() ;
394 int icount = delSel.count();
395 if ( icount ) {
396 Incidence *incidence = delSel.first();
397 while ( incidence ) {
398 incidence->setCalID( c );
399 KOListViewItem * item = getItemForEvent( incidence );
400 if ( item ) {
401 ListItemVisitor v(item, mStartDate );
402 incidence->accept(v);
403 }
404 incidence = delSel.next();
405 }
406 }
407 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars;
408 KopiCalendarFile * cal = calendars.first();
409 while ( cal ) {
410 mCalendar->setCalendarEnabled( cal->mCalNumber,cal->isEnabled );
411 mCalendar->setAlarmEnabled( cal->mCalNumber, cal->isAlarmEnabled );
412 mCalendar->setReadOnly( cal->mCalNumber, cal->isReadOnly );
413 if ( cal->isStandard )
414 mCalendar->setDefaultCalendar( cal->mCalNumber );
415 cal = calendars.next();
416 }
417 mCalendar->setSyncEventsReadOnly();
418 mCalendar->reInitAlarmSettings();
419
420}
421void KOListView::populateCalPopup()
422{
423 mCalPopup->clear();
424 KopiCalendarFile * kkf = KOPrefs::instance()->mCalendars.first();
425 while ( kkf ) {
426 mCalPopup->insertItem( kkf->mName, kkf->mCalNumber);
427 kkf = KOPrefs::instance()->mCalendars.next();
428 }
429}
374void KOListView::updateList() 430void KOListView::updateList()
375{ 431{
376 // qDebug(" KOListView::updateList() "); 432 // qDebug(" KOListView::updateList() ");
377 433
378} 434}
379 435
380void KOListView::clearList() 436void KOListView::clearList()
381{ 437{
382 clear (); 438 clear ();
383} 439}
384void KOListView::addCat( ) 440void KOListView::addCat( )
385{ 441{
386 setCategories( false ); 442 setCategories( false );
387} 443}
388void KOListView::setCat() 444void KOListView::setCat()
389{ 445{
390 setCategories( true ); 446 setCategories( true );
391} 447}
392 448
393void KOListView::setAlarm() 449void KOListView::setAlarm()
394{ 450{
395 KOAlarmPrefs kap( this); 451 KOAlarmPrefs kap( this);
396 if ( !kap.exec() ) 452 if ( !kap.exec() )
397 return; 453 return;
398 QStringList itemList; 454 QStringList itemList;
399 QPtrList<KOListViewItem> sel ; 455 QPtrList<KOListViewItem> sel ;
400 QListViewItem *qitem = mListView->firstChild (); 456 QListViewItem *qitem = mListView->firstChild ();
401 while ( qitem ) { 457 while ( qitem ) {
402 if ( qitem->isSelected() ) { 458 if ( qitem->isSelected() ) {
403 Incidence* inc = ((KOListViewItem *) qitem)->data(); 459 Incidence* inc = ((KOListViewItem *) qitem)->data();
404 if ( inc->typeID() != journalID ) { 460 if ( inc->typeID() != journalID ) {
405 if ( inc->typeID() == todoID ) { 461 if ( inc->typeID() == todoID ) {
406 if ( ((Todo*)inc)->hasDueDate() ) 462 if ( ((Todo*)inc)->hasDueDate() )
407 sel.append(((KOListViewItem *)qitem)); 463 sel.append(((KOListViewItem *)qitem));
408 } else 464 } else
409 sel.append(((KOListViewItem *)qitem)); 465 sel.append(((KOListViewItem *)qitem));
410 } 466 }
411 } 467 }
412 qitem = qitem->nextSibling(); 468 qitem = qitem->nextSibling();
413 } 469 }
414 int count = 0; 470 int count = 0;
415 KOListViewItem * item, *temp; 471 KOListViewItem * item, *temp;
416 item = sel.first(); 472 item = sel.first();
417 Incidence* inc; 473 Incidence* inc;
418 while ( item ) { 474 while ( item ) {
419 inc = item->data(); 475 inc = item->data();
420 ++count; 476 ++count;
421 if (kap.mAlarmButton->isChecked()) { 477 if (kap.mAlarmButton->isChecked()) {
422 if (inc->alarms().count() == 0) 478 if (inc->alarms().count() == 0)
423 inc->newAlarm(); 479 inc->newAlarm();
424 QPtrList<Alarm> alarms = inc->alarms(); 480 QPtrList<Alarm> alarms = inc->alarms();
425 Alarm *alarm; 481 Alarm *alarm;
426 for (alarm = alarms.first(); alarm; alarm = alarms.next() ) { 482 for (alarm = alarms.first(); alarm; alarm = alarms.next() ) {
427 alarm->setEnabled(true); 483 alarm->setEnabled(true);
428 int j = kap.mAlarmTimeEdit->value()* -60; 484 int j = kap.mAlarmTimeEdit->value()* -60;
429 if (kap.mAlarmIncrCombo->currentItem() == 1) 485 if (kap.mAlarmIncrCombo->currentItem() == 1)
430 j = j * 60; 486 j = j * 60;
431 else if (kap.mAlarmIncrCombo->currentItem() == 2) 487 else if (kap.mAlarmIncrCombo->currentItem() == 2)
432 j = j * (60 * 24); 488 j = j * (60 * 24);
433 alarm->setStartOffset( j ); 489 alarm->setStartOffset( j );
434 490
435 if (!kap.mAlarmProgram.isEmpty() && kap.mAlarmProgramButton->isOn()) { 491 if (!kap.mAlarmProgram.isEmpty() && kap.mAlarmProgramButton->isOn()) {
436 alarm->setProcedureAlarm(kap.mAlarmProgram); 492 alarm->setProcedureAlarm(kap.mAlarmProgram);
437 } 493 }
438 else if (!kap.mAlarmSound.isEmpty() && kap.mAlarmSoundButton->isOn()) 494 else if (!kap.mAlarmSound.isEmpty() && kap.mAlarmSoundButton->isOn())
439 alarm->setAudioAlarm(kap.mAlarmSound); 495 alarm->setAudioAlarm(kap.mAlarmSound);
440 else 496 else
441 alarm->setType(Alarm::Invalid); 497 alarm->setType(Alarm::Invalid);
442 //alarm->setAudioAlarm("default"); 498 //alarm->setAudioAlarm("default");
443 // TODO: Deal with multiple alarms 499 // TODO: Deal with multiple alarms
444 break; // For now, stop after the first alarm 500 break; // For now, stop after the first alarm
445 } 501 }
446 } else { 502 } else {
447 Alarm* alarm = inc->alarms().first(); 503 Alarm* alarm = inc->alarms().first();
448 if ( alarm ) { 504 if ( alarm ) {
449 alarm->setEnabled(false); 505 alarm->setEnabled(false);
450 alarm->setType(Alarm::Invalid); 506 alarm->setType(Alarm::Invalid);
451 } 507 }
452 } 508 }
453 ListItemVisitor v(item, mStartDate ); 509 ListItemVisitor v(item, mStartDate );
454 inc->accept(v); 510 inc->accept(v);
455 item = sel.next(); 511 item = sel.next();
456 } 512 }
457 topLevelWidget()->setCaption( i18n("Changed alarm for %1 items").arg( count ) ); 513 topLevelWidget()->setCaption( i18n("Changed alarm for %1 items").arg( count ) );
458 qDebug("KO: Set alarm for %d items", count); 514 qDebug("KO: Set alarm for %d items", count);
459 calendar()->reInitAlarmSettings(); 515 calendar()->reInitAlarmSettings();
460 QTimer::singleShot( 1, this, SLOT ( resetFocus() ) ); 516 QTimer::singleShot( 1, this, SLOT ( resetFocus() ) );
461} 517}
462void KOListView::setCategories( bool removeOld ) 518void KOListView::setCategories( bool removeOld )
463{ 519{
464 520
465 KPIM::CategorySelectDialog* csd = new KPIM::CategorySelectDialog( KOPrefs::instance(), 0 ); 521 KPIM::CategorySelectDialog* csd = new KPIM::CategorySelectDialog( KOPrefs::instance(), 0 );
466 csd->setColorEnabled(); 522 csd->setColorEnabled();
467 if (! csd->exec()) { 523 if (! csd->exec()) {
468 delete csd; 524 delete csd;
469 return; 525 return;
470 } 526 }
471 QStringList catList = csd->selectedCategories(); 527 QStringList catList = csd->selectedCategories();
472 delete csd; 528 delete csd;
473 // if ( catList.count() == 0 ) 529 // if ( catList.count() == 0 )
474 // return; 530 // return;
475 //catList.sort(); 531 //catList.sort();
476 QString categoriesStr = catList.join(","); 532 QString categoriesStr = catList.join(",");
477 int i; 533 int i;
478 QStringList itemList; 534 QStringList itemList;
479 QPtrList<KOListViewItem> sel ; 535 QPtrList<KOListViewItem> sel ;
480 QListViewItem *qitem = mListView->firstChild (); 536 QListViewItem *qitem = mListView->firstChild ();
481 while ( qitem ) { 537 while ( qitem ) {
482 if ( qitem->isSelected() ) { 538 if ( qitem->isSelected() ) {
483 sel.append(((KOListViewItem *)qitem)); 539 sel.append(((KOListViewItem *)qitem));
484 } 540 }
485 qitem = qitem->nextSibling(); 541 qitem = qitem->nextSibling();
486 } 542 }
487 KOListViewItem * item, *temp; 543 KOListViewItem * item, *temp;
488 item = sel.first(); 544 item = sel.first();
489 if( item ) { 545 if( item ) {
490 Incidence* inc = item->data() ; 546 Incidence* inc = item->data() ;
491 bool setSub = false; 547 bool setSub = false;
492 if( inc->typeID() == todoID && sel.count() == 1 && inc->relations().count() > 0 ) { 548 if( inc->typeID() == todoID && sel.count() == 1 && inc->relations().count() > 0 ) {
493 int result = KMessageBox::warningYesNoCancel(this, 549 int result = KMessageBox::warningYesNoCancel(this,
494 i18n("The todo\n%1\nhas subtodos!\nDo you want to set\nthe categories for\nall subtodos as well?").arg( inc->summary().left ( 25 ) ), 550 i18n("The todo\n%1\nhas subtodos!\nDo you want to set\nthe categories for\nall subtodos as well?").arg( inc->summary().left ( 25 ) ),
495 i18n("Todo has subtodos"), 551 i18n("Todo has subtodos"),
496 i18n("Yes"), 552 i18n("Yes"),
497 i18n("No")); 553 i18n("No"));
498 if (result == KMessageBox::Cancel) item = 0; 554 if (result == KMessageBox::Cancel) item = 0;
499 if (result == KMessageBox::Yes) setSub = true; 555 if (result == KMessageBox::Yes) setSub = true;
500 } 556 }
501 while ( item ) { 557 while ( item ) {
502 inc = item->data(); 558 inc = item->data();
503 if ( removeOld ) { 559 if ( removeOld ) {
504 inc->setCategories( catList, setSub ); 560 inc->setCategories( catList, setSub );
505 } else { 561 } else {
506 inc->addCategories( catList, setSub ); 562 inc->addCategories( catList, setSub );
507 } 563 }
508 ListItemVisitor v(item, mStartDate ); 564 ListItemVisitor v(item, mStartDate );
509 inc->accept(v); 565 inc->accept(v);
510 item = sel.next(); 566 item = sel.next();
511 } 567 }
512 } 568 }
513 QTimer::singleShot( 1, this, SLOT ( resetFocus() ) ); 569 QTimer::singleShot( 1, this, SLOT ( resetFocus() ) );
514} 570}
515 571
516void KOListView::beamSelected() 572void KOListView::beamSelected()
517{ 573{
518 QPtrList<Incidence> delSel = getSelectedIncidences() ; 574 QPtrList<Incidence> delSel = getSelectedIncidences() ;
519 int icount = delSel.count(); 575 int icount = delSel.count();
520 if ( icount ) { 576 if ( icount ) {
521 emit beamIncidenceList( delSel ); 577 emit beamIncidenceList( delSel );
522 return; 578 return;
523 QString fn ; 579 QString fn ;
524 fn = QDir::homeDirPath()+"/kopitempbeamfile.vcs"; 580 fn = QDir::homeDirPath()+"/kopitempbeamfile.vcs";
525 QString mes; 581 QString mes;
526 bool createbup = true; 582 bool createbup = true;
527 if ( createbup ) { 583 if ( createbup ) {
528 QString description = "\n"; 584 QString description = "\n";
529 CalendarLocal* cal = new CalendarLocal(); 585 CalendarLocal* cal = new CalendarLocal();
530 cal->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId); 586 cal->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId);
531 Incidence *incidence = delSel.first(); 587 Incidence *incidence = delSel.first();
532 while ( incidence ) { 588 while ( incidence ) {
533 Incidence *in = incidence->clone(); 589 Incidence *in = incidence->clone();
534 description += in->summary() + "\n"; 590 description += in->summary() + "\n";
535 cal->addIncidence( in ); 591 cal->addIncidence( in );
536 incidence = delSel.next(); 592 incidence = delSel.next();
537 } 593 }
538 FileStorage storage( cal, fn, new VCalFormat ); 594 FileStorage storage( cal, fn, new VCalFormat );
539 storage.save(); 595 storage.save();
540 delete cal; 596 delete cal;
541 mes = i18n("KO/Pi: Ready for beaming"); 597 mes = i18n("KO/Pi: Ready for beaming");
542 topLevelWidget()->setCaption(mes); 598 topLevelWidget()->setCaption(mes);
543 599
544#ifndef DESKTOP_VERSION 600#ifndef DESKTOP_VERSION
545 Ir *ir = new Ir( this ); 601 Ir *ir = new Ir( this );
546 connect( ir, SIGNAL( done( Ir * ) ), this, SLOT( beamDone( Ir * ) ) ); 602 connect( ir, SIGNAL( done( Ir * ) ), this, SLOT( beamDone( Ir * ) ) );
547 ir->send( fn, description, "text/x-vCalendar" ); 603 ir->send( fn, description, "text/x-vCalendar" );
548#endif 604#endif
549 } 605 }
550 } 606 }
551} 607}
552void KOListView::beamDone( Ir *ir ) 608void KOListView::beamDone( Ir *ir )
553{ 609{
554#ifndef DESKTOP_VERSION 610#ifndef DESKTOP_VERSION
555 delete ir; 611 delete ir;
556#endif 612#endif
557 topLevelWidget()->setCaption(i18n("KO/Pi:Beaming done")); 613 topLevelWidget()->setCaption(i18n("KO/Pi:Beaming done"));
558} 614}
559 615
560void KOListView::saveDescriptionToFile() 616void KOListView::saveDescriptionToFile()
561{ 617{
562 618
563 int result = QMessageBox::warning( this, i18n("KO/Pi: Information!"), 619 int result = QMessageBox::warning( this, i18n("KO/Pi: Information!"),
564 i18n("This saves the text/details of selected\nJournals and Events/Todos\nto a text file."), 620 i18n("This saves the text/details of selected\nJournals and Events/Todos\nto a text file."),
565 i18n("Continue"), i18n("Cancel"), 0, 621 i18n("Continue"), i18n("Cancel"), 0,
566 0, 1 ); 622 0, 1 );
567 if ( result != 0 ) { 623 if ( result != 0 ) {
568 return; 624 return;
569 } 625 }
570 QPtrList<Incidence> delSel = getSelectedIncidences() ; 626 QPtrList<Incidence> delSel = getSelectedIncidences() ;
571 int icount = delSel.count(); 627 int icount = delSel.count();
572 if ( icount ) { 628 if ( icount ) {
573 QString fn = KOPrefs::instance()->mLastSaveFile; 629 QString fn = KOPrefs::instance()->mLastSaveFile;
574 fn = KFileDialog::getSaveFileName( fn, i18n("Save filename"), this ); 630 fn = KFileDialog::getSaveFileName( fn, i18n("Save filename"), this );
575 631
576 if ( fn == "" ) 632 if ( fn == "" )
577 return; 633 return;
578 QFileInfo info; 634 QFileInfo info;
579 info.setFile( fn ); 635 info.setFile( fn );
580 QString mes; 636 QString mes;
581 bool createbup = true; 637 bool createbup = true;
582 if ( info. exists() ) { 638 if ( info. exists() ) {
583 mes = i18n("File already exists!\nOld file from:\n%1\nOverwrite?\n").arg (KGlobal::locale()->formatDateTime(info.lastModified (), true, false ) ); 639 mes = i18n("File already exists!\nOld file from:\n%1\nOverwrite?\n").arg (KGlobal::locale()->formatDateTime(info.lastModified (), true, false ) );
584 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),mes, 640 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),mes,
585 i18n("Overwrite!"), i18n("Cancel"), 0, 641 i18n("Overwrite!"), i18n("Cancel"), 0,
586 0, 1 ); 642 0, 1 );
587 if ( result != 0 ) { 643 if ( result != 0 ) {
588 createbup = false; 644 createbup = false;
589 } 645 }
590 } 646 }
591 if ( createbup ) { 647 if ( createbup ) {
592 QString text = i18n("KO/Pi Description/Journal save file.\nSave date: ") + 648 QString text = i18n("KO/Pi Description/Journal save file.\nSave date: ") +
593 KGlobal::locale()->formatDateTime(QDateTime::currentDateTime(), false); 649 KGlobal::locale()->formatDateTime(QDateTime::currentDateTime(), false);
594 Incidence *incidence = delSel.first(); 650 Incidence *incidence = delSel.first();
595 icount = 0; 651 icount = 0;
596 while ( incidence ) { 652 while ( incidence ) {
597 if ( incidence->typeID() == journalID ) { 653 if ( incidence->typeID() == journalID ) {
598 text += "\n************************************\n"; 654 text += "\n************************************\n";
599 text += i18n("Journal from: ") +incidence->dtStartDateStr( false ); 655 text += i18n("Journal from: ") +incidence->dtStartDateStr( false );
600 text +="\n" + i18n("Last modified: ") +KGlobal::locale()->formatDateTime(incidence->lastModified(), false); 656 text +="\n" + i18n("Last modified: ") +KGlobal::locale()->formatDateTime(incidence->lastModified(), false);
601 text +="\n" + i18n("Description: ") + "\n"+ incidence->description(); 657 text +="\n" + i18n("Description: ") + "\n"+ incidence->description();
602 ++icount; 658 ++icount;
603 659
604 } else { 660 } else {
605 if ( !incidence->description().isEmpty() ) { 661 if ( !incidence->description().isEmpty() ) {
606 text += "\n************************************\n"; 662 text += "\n************************************\n";
607 if ( incidence->typeID() == todoID ) 663 if ( incidence->typeID() == todoID )
608 text += i18n("To-Do: "); 664 text += i18n("To-Do: ");
609 text += incidence->summary(); 665 text += incidence->summary();
610 if ( incidence->hasStartDate() ) 666 if ( incidence->hasStartDate() )
611 text +="\n"+ i18n("Start Date: ") + incidence->dtStartStr( false ); 667 text +="\n"+ i18n("Start Date: ") + incidence->dtStartStr( false );
612 text +="\n"+ i18n("Last modified: ") +KGlobal::locale()->formatDateTime(incidence->lastModified(), false); 668 text +="\n"+ i18n("Last modified: ") +KGlobal::locale()->formatDateTime(incidence->lastModified(), false);
613 if ( !incidence->location().isEmpty() ) 669 if ( !incidence->location().isEmpty() )
614 text += "\n" +i18n("Location: ") + incidence->location(); 670 text += "\n" +i18n("Location: ") + incidence->location();
615 text += "\n" + i18n("Description: ") + "\n" + incidence->description(); 671 text += "\n" + i18n("Description: ") + "\n" + incidence->description();
616 ++icount; 672 ++icount;
617 673
618 } 674 }
619 } 675 }
620 incidence = delSel.next(); 676 incidence = delSel.next();
621 } 677 }
622 QFile file( fn ); 678 QFile file( fn );
623 if (!file.open( IO_WriteOnly ) ) { 679 if (!file.open( IO_WriteOnly ) ) {
624 topLevelWidget()->setCaption(i18n("File open error - nothing saved!") ); 680 topLevelWidget()->setCaption(i18n("File open error - nothing saved!") );
625 return; 681 return;
626 } 682 }
627 QTextStream ts( &file ); 683 QTextStream ts( &file );
628 ts << text; 684 ts << text;
629 file.close(); 685 file.close();
630 //qDebug("%s ", text.latin1()); 686 //qDebug("%s ", text.latin1());
631 mes = i18n("KO/Pi:Saved %1 descriptions/journals").arg(icount ); 687 mes = i18n("KO/Pi:Saved %1 descriptions/journals").arg(icount );
632 KOPrefs::instance()->mLastSaveFile = fn; 688 KOPrefs::instance()->mLastSaveFile = fn;
633 topLevelWidget()->setCaption(mes); 689 topLevelWidget()->setCaption(mes);
634 } 690 }
635 } 691 }
636} 692}
637void KOListView::saveToFileVCS() 693void KOListView::saveToFileVCS()
638{ 694{
639 writeToFile( false ); 695 writeToFile( false );
640} 696}
641void KOListView::saveToFile() 697void KOListView::saveToFile()
642{ 698{
643 writeToFile( true ); 699 writeToFile( true );
644} 700}
645QPtrList<Incidence> KOListView::getSelectedIncidences( bool includeEvents, bool includeTodos, bool includeJournals, bool onlyDueTodos ) 701QPtrList<Incidence> KOListView::getSelectedIncidences( bool includeEvents, bool includeTodos, bool includeJournals, bool onlyDueTodos )
646{ 702{
647 QPtrList<Incidence> delSel ; 703 QPtrList<Incidence> delSel ;
648 bool addSubTodos = false; 704 bool addSubTodos = false;
649 bool askSubTodos = true; 705 bool askSubTodos = true;
650 QListViewItem *item = mListView->firstChild (); 706 QListViewItem *item = mListView->firstChild ();
651 while ( item ) { 707 while ( item ) {
652 if ( item->isSelected() ) { 708 if ( item->isSelected() ) {
653 Incidence* inc = ((KOListViewItem *)item)->data(); 709 Incidence* inc = ((KOListViewItem *)item)->data();
654 if ( ( addSubTodos && delSel.findRef( inc ) == -1) || !addSubTodos ) { 710 if ( ( addSubTodos && delSel.findRef( inc ) == -1) || !addSubTodos ) {
655 if ( (inc->typeID() == todoID && includeTodos) || 711 if ( (inc->typeID() == todoID && includeTodos) ||
656 (inc->typeID() == eventID && includeEvents) || 712 (inc->typeID() == eventID && includeEvents) ||
657 (inc->typeID() == journalID && includeJournals) ) { 713 (inc->typeID() == journalID && includeJournals) ) {
658 if ( inc->typeID() == todoID && onlyDueTodos ) { 714 if ( inc->typeID() == todoID && onlyDueTodos ) {
659 if ( ((Todo*)inc)->hasDueDate() ) 715 if ( ((Todo*)inc)->hasDueDate() )
660 delSel.append( inc ); 716 delSel.append( inc );
661 } else 717 } else
662 delSel.append( inc ); 718 delSel.append( inc );
663 719
664 } 720 }
665 } 721 }
666 if ( inc->typeID() == todoID ) { 722 if ( inc->typeID() == todoID ) {
667 Todo * todo = (Todo*) inc; 723 Todo * todo = (Todo*) inc;
668 if ( todo->relations().count() ) { 724 if ( todo->relations().count() ) {
669 if ( askSubTodos ) { 725 if ( askSubTodos ) {
670 int result = KMessageBox::warningYesNoCancel(this, 726 int result = KMessageBox::warningYesNoCancel(this,
671 i18n("One (or more) selected\ntodo has subtodos!\nDo you want to select\nall subtodos of all\nselected todos as well?"), 727 i18n("One (or more) selected\ntodo has subtodos!\nDo you want to select\nall subtodos of all\nselected todos as well?"),
672 i18n("Todo has subtodos"), 728 i18n("Todo has subtodos"),
673 i18n("Yes"), 729 i18n("Yes"),
674 i18n("No")); 730 i18n("No"));
675 if ( result == KMessageBox::Cancel ) { 731 if ( result == KMessageBox::Cancel ) {
676 delSel.clear(); 732 delSel.clear();
677 return delSel; 733 return delSel;
678 } 734 }
679 if (result == KMessageBox::Yes) 735 if (result == KMessageBox::Yes)
680 addSubTodos = true; 736 addSubTodos = true;
681 askSubTodos = false; 737 askSubTodos = false;
682 } 738 }
683 if ( addSubTodos ) { 739 if ( addSubTodos ) {
684 inc->addRelationsToList( &delSel ); 740 inc->addRelationsToList( &delSel );
685 } 741 }
686 } 742 }
687 } 743 }
688 } 744 }
689 item = item->nextSibling(); 745 item = item->nextSibling();
690 } 746 }
691 return delSel; 747 return delSel;
692} 748}
693 749
694void KOListView::writeToFile( bool iCal ) 750void KOListView::writeToFile( bool iCal )
695{ 751{
696 QPtrList<Incidence> delSel = getSelectedIncidences(); // all inc allowed; 752 QPtrList<Incidence> delSel = getSelectedIncidences(); // all inc allowed;
697 if ( !iCal ) { 753 if ( !iCal ) {
698 bool journal = false; 754 bool journal = false;
699 Incidence *incidence = delSel.first(); 755 Incidence *incidence = delSel.first();
700 while ( incidence ) { 756 while ( incidence ) {
701 if ( incidence->typeID() == journalID ) { 757 if ( incidence->typeID() == journalID ) {
702 journal = true; 758 journal = true;
703 break; 759 break;
704 } 760 }
705 incidence = delSel.next(); 761 incidence = delSel.next();
706 } 762 }
707 if ( journal ) { 763 if ( journal ) {
708 int result = KMessageBox::warningContinueCancel(this, 764 int result = KMessageBox::warningContinueCancel(this,
709 i18n("The journal entries can not be\nexported to a vCalendar file."), 765 i18n("The journal entries can not be\nexported to a vCalendar file."),
710 i18n("Data Loss Warning"),i18n("Proceed"),i18n("Cancel"), 766 i18n("Data Loss Warning"),i18n("Proceed"),i18n("Cancel"),
711 true); 767 true);
712 if (result != KMessageBox::Continue) return; 768 if (result != KMessageBox::Continue) return;
713 } 769 }
714 } 770 }
715 if ( delSel.count() ) { 771 if ( delSel.count() ) {
716 QString fn = KOPrefs::instance()->mLastSaveFile; 772 QString fn = KOPrefs::instance()->mLastSaveFile;
717 QString extension; 773 QString extension;
718 if ( iCal ) { 774 if ( iCal ) {
719 if ( fn.right( 4 ).lower() == ".vcs" ) { 775 if ( fn.right( 4 ).lower() == ".vcs" ) {
720 fn = fn.left( fn.length() -3) + "ics"; 776 fn = fn.left( fn.length() -3) + "ics";
721 } 777 }
722 } else { 778 } else {
723 if ( fn.right( 4 ).lower() == ".ics" ) { 779 if ( fn.right( 4 ).lower() == ".ics" ) {
724 fn = fn.left( fn.length() -3) + "vcs"; 780 fn = fn.left( fn.length() -3) + "vcs";
725 } 781 }
726 } 782 }
727 fn = KFileDialog::getSaveFileName( fn, i18n("Save filename"), this ); 783 fn = KFileDialog::getSaveFileName( fn, i18n("Save filename"), this );
728 784
729 if ( fn == "" ) 785 if ( fn == "" )
730 return; 786 return;
731 QFileInfo info; 787 QFileInfo info;
732 info.setFile( fn ); 788 info.setFile( fn );
733 QString mes; 789 QString mes;
734 bool createbup = true; 790 bool createbup = true;
735 if ( info. exists() ) { 791 if ( info. exists() ) {
736 mes = i18n("File already exists!\nOld file from:\n%1\nOverwrite?\n").arg (KGlobal::locale()->formatDateTime(info.lastModified (), true, false ) ); 792 mes = i18n("File already exists!\nOld file from:\n%1\nOverwrite?\n").arg (KGlobal::locale()->formatDateTime(info.lastModified (), true, false ) );
737 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),mes, 793 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),mes,
738 i18n("Overwrite!"), i18n("Cancel"), 0, 794 i18n("Overwrite!"), i18n("Cancel"), 0,
739 0, 1 ); 795 0, 1 );
740 if ( result != 0 ) { 796 if ( result != 0 ) {
741 createbup = false; 797 createbup = false;
742 } 798 }
743 } 799 }
744 if ( createbup ) { 800 if ( createbup ) {
745 CalendarLocal cal; 801 CalendarLocal cal;
746 cal.setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId); 802 cal.setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId);
747 Incidence *incidence = delSel.first(); 803 Incidence *incidence = delSel.first();
748 while ( incidence ) { 804 while ( incidence ) {
749 cal.addIncidence( incidence->clone() ); 805 cal.addIncidence( incidence->clone() );
750 incidence = delSel.next(); 806 incidence = delSel.next();
751 } 807 }
752 if ( iCal ) { 808 if ( iCal ) {
753 ICalFormat format; 809 ICalFormat format;
754 format.save( &cal, fn ); 810 format.save( &cal, fn );
755 } else { 811 } else {
756 812
757 VCalFormat format; 813 VCalFormat format;
758 format.save( &cal, fn ); 814 format.save( &cal, fn );
759 } 815 }
760 mes = i18n("KO/Pi:Saved %1").arg(fn ); 816 mes = i18n("KO/Pi:Saved %1").arg(fn );
761 KOPrefs::instance()->mLastSaveFile = fn; 817 KOPrefs::instance()->mLastSaveFile = fn;
762 topLevelWidget()->setCaption(mes); 818 topLevelWidget()->setCaption(mes);
763 } 819 }
764 } 820 }
765 QTimer::singleShot( 1, this, SLOT ( resetFocus() ) ); 821 QTimer::singleShot( 1, this, SLOT ( resetFocus() ) );
766} 822}
767void KOListView::hideAll() 823void KOListView::hideAll()
768{ 824{
769 QPtrList<QListViewItem> delSel ; 825 QPtrList<QListViewItem> delSel ;
770 QListViewItem *item = mListView->firstChild (); 826 QListViewItem *item = mListView->firstChild ();
771 while ( item ) { 827 while ( item ) {
772 if ( item->isSelected() ) { 828 if ( item->isSelected() ) {
773 delSel.append(item); 829 delSel.append(item);
774 } 830 }
775 item = item->nextSibling(); 831 item = item->nextSibling();
776 } 832 }
777 item = delSel.first() ; 833 item = delSel.first() ;
778 while ( item ) { 834 while ( item ) {
779 QListViewItem * del = item; 835 QListViewItem * del = item;
780 item = delSel.next(); 836 item = delSel.next();
781 delete del; 837 delete del;
782 } 838 }
783} 839}
784void KOListView::printList() 840void KOListView::printList()
785{ 841{
786 mListView->printList(); 842 mListView->printList();
787} 843}
788void KOListView::deleteAll() 844void KOListView::deleteAll()
789{ 845{
790 QPtrList<Incidence> delSel = getSelectedIncidences(); // all inc allowed;; 846 QPtrList<Incidence> delSel = getSelectedIncidences(); // all inc allowed;;
791 if ( delSel.count() ) { 847 if ( delSel.count() ) {
792 int icount = delSel.count(); 848 int icount = delSel.count();
793 Incidence *incidence = delSel.first(); 849 Incidence *incidence = delSel.first();
794 Incidence *toDelete; 850 Incidence *toDelete;
795 KOPrefs *p = KOPrefs::instance(); 851 KOPrefs *p = KOPrefs::instance();
796 bool confirm = p->mConfirm; 852 bool confirm = p->mConfirm;
797 QString mess; 853 QString mess;
798 mess = mess.sprintf( i18n("You have %d item(s) selected.\n"), icount ); 854 mess = mess.sprintf( i18n("You have %d item(s) selected.\n"), icount );
799 if ( KMessageBox::Continue == KMessageBox::warningContinueCancel(this, mess + i18n("All selected items will be\npermanently deleted.\n(Deleting items will take\nsome time on a PDA)\n"), i18n("KO/Pi Confirmation"),i18n("Delete")) ) { 855 if ( KMessageBox::Continue == KMessageBox::warningContinueCancel(this, mess + i18n("All selected items will be\npermanently deleted.\n(Deleting items will take\nsome time on a PDA)\n"), i18n("KO/Pi Confirmation"),i18n("Delete")) ) {
800 p->mConfirm = false; 856 p->mConfirm = false;
801 int delCounter = 0; 857 int delCounter = 0;
802 QDialog dia ( this, "p-dialog", true ); 858 QDialog dia ( this, "p-dialog", true );
803 QLabel lab (i18n("Close dialog to abort deletion!"), &dia ); 859 QLabel lab (i18n("Close dialog to abort deletion!"), &dia );
804 QVBoxLayout lay( &dia ); 860 QVBoxLayout lay( &dia );
805 lay.setMargin(7); 861 lay.setMargin(7);
806 lay.setSpacing(7); 862 lay.setSpacing(7);
807 lay.addWidget( &lab); 863 lay.addWidget( &lab);
808 QProgressBar bar( icount, &dia ); 864 QProgressBar bar( icount, &dia );
809 lay.addWidget( &bar); 865 lay.addWidget( &bar);
810 int w = 220; 866 int w = 220;
811 int h = 50; 867 int h = 50;
812 int dw = QApplication::desktop()->width(); 868 int dw = QApplication::desktop()->width();
813 int dh = QApplication::desktop()->height(); 869 int dh = QApplication::desktop()->height();
814 dia.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 870 dia.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
815 //dia.resize( 240,50 ); 871 //dia.resize( 240,50 );
816 dia.show(); 872 dia.show();
817 873
818 while ( incidence ) { 874 while ( incidence ) {
819 bar.setProgress( delCounter ); 875 bar.setProgress( delCounter );
820 mess = mess.sprintf( i18n("Deleting item %d ..."), ++delCounter ); 876 mess = mess.sprintf( i18n("Deleting item %d ..."), ++delCounter );
821 dia.setCaption( mess ); 877 dia.setCaption( mess );
822 qApp->processEvents(); 878 qApp->processEvents();
823 toDelete = (incidence); 879 toDelete = (incidence);
824 incidence = delSel.next(); 880 incidence = delSel.next();
825 emit deleteIncidenceSignal(toDelete ); 881 emit deleteIncidenceSignal(toDelete );
826 if ( dia.result() != 0 ) 882 if ( dia.result() != 0 )
827 break; 883 break;
828 884
829 } 885 }
830 mess = mess.sprintf( i18n("%d items remaining in list."), count() ); 886 mess = mess.sprintf( i18n("%d items remaining in list."), count() );
831 topLevelWidget ()->setCaption( mess ); 887 topLevelWidget ()->setCaption( mess );
832 p->mConfirm = confirm; 888 p->mConfirm = confirm;
833 } 889 }
834 } 890 }
835 891
836 892
837} 893}
838int KOListView::maxDatesHint() 894int KOListView::maxDatesHint()
839{ 895{
840 return 0; 896 return 0;
841} 897}
842 898
843int KOListView::currentDateCount() 899int KOListView::currentDateCount()
844{ 900{
845 return 0; 901 return 0;
846} 902}
847 903
848QPtrList<Incidence> KOListView::selectedIncidences() 904QPtrList<Incidence> KOListView::selectedIncidences()
849{ 905{
850 QPtrList<Incidence> eventList; 906 QPtrList<Incidence> eventList;
851 QListViewItem *item = mListView->firstChild (); 907 QListViewItem *item = mListView->firstChild ();
852 while ( item ) { 908 while ( item ) {
853 if ( item->isSelected() ) { 909 if ( item->isSelected() ) {
854 eventList.append(((KOListViewItem *)item)->data()); 910 eventList.append(((KOListViewItem *)item)->data());
855 } 911 }
856 912
857 item = item->nextSibling(); 913 item = item->nextSibling();
858 } 914 }
859 915
860 // // QListViewItem *item = mListView->selectedItem(); 916 // // QListViewItem *item = mListView->selectedItem();
861 //if (item) eventList.append(((KOListViewItem *)item)->data()); 917 //if (item) eventList.append(((KOListViewItem *)item)->data());
862 918
863 return eventList; 919 return eventList;
864} 920}
865 921
866DateList KOListView::selectedDates() 922DateList KOListView::selectedDates()
867{ 923{
868 DateList eventList; 924 DateList eventList;
869 return eventList; 925 return eventList;
870} 926}
871 927
872void KOListView::showDates(bool show) 928void KOListView::showDates(bool show)
873{ 929{
874 // Shouldn't we set it to a value greater 0? When showDates is called with 930 // Shouldn't we set it to a value greater 0? When showDates is called with
875 // show == true at first, then the columnwidths are set to zero. 931 // show == true at first, then the columnwidths are set to zero.
876 static int oldColWidth1 = 0; 932 static int oldColWidth1 = 0;
877 static int oldColWidth3 = 0; 933 static int oldColWidth3 = 0;
878 934
879 if (!show) { 935 if (!show) {
880 oldColWidth1 = mListView->columnWidth(1); 936 oldColWidth1 = mListView->columnWidth(1);
881 oldColWidth3 = mListView->columnWidth(3); 937 oldColWidth3 = mListView->columnWidth(3);
882 mListView->setColumnWidth(1, 0); 938 mListView->setColumnWidth(1, 0);
883 mListView->setColumnWidth(3, 0); 939 mListView->setColumnWidth(3, 0);
884 } else { 940 } else {
885 mListView->setColumnWidth(1, oldColWidth1); 941 mListView->setColumnWidth(1, oldColWidth1);
886 mListView->setColumnWidth(3, oldColWidth3); 942 mListView->setColumnWidth(3, oldColWidth3);
887 } 943 }
888 mListView->repaint(); 944 mListView->repaint();
889} 945}
890 946
891void KOListView::printPreview(CalPrinter *calPrinter, const QDate &fd, 947void KOListView::printPreview(CalPrinter *calPrinter, const QDate &fd,
892 const QDate &td) 948 const QDate &td)
893{ 949{
894#ifndef KORG_NOPRINTER 950#ifndef KORG_NOPRINTER
895 calPrinter->preview(CalPrinter::Day, fd, td); 951 calPrinter->preview(CalPrinter::Day, fd, td);
896#endif 952#endif
897} 953}
898 954
899void KOListView::showDates() 955void KOListView::showDates()
900{ 956{
901 showDates(true); 957 showDates(true);
902} 958}
903 959
904void KOListView::hideDates() 960void KOListView::hideDates()
905{ 961{
906 showDates(false); 962 showDates(false);
907} 963}
908 964
909void KOListView::resetFocus() 965void KOListView::resetFocus()
910{ 966{
911 topLevelWidget()->setActiveWindow(); 967 topLevelWidget()->setActiveWindow();
912 topLevelWidget()->raise(); 968 topLevelWidget()->raise();
913 mListView->setFocus(); 969 mListView->setFocus();
914} 970}
915void KOListView::updateView() 971void KOListView::updateView()
916{ 972{
917 mListView->setFocus(); 973 mListView->setFocus();
918 if ( mListView->firstChild () ) 974 if ( mListView->firstChild () )
919 mListView->setCurrentItem( mListView->firstChild () ); 975 mListView->setCurrentItem( mListView->firstChild () );
920} 976}
921void KOListView::updateConfig() 977void KOListView::updateConfig()
922{ 978{
923 979
924 mListView->setFont ( KOPrefs::instance()->mListViewFont ); 980 mListView->setFont ( KOPrefs::instance()->mListViewFont );
925 updateView(); 981 updateView();
926 982
927} 983}
928void KOListView::setStartDate(const QDate &start) 984void KOListView::setStartDate(const QDate &start)
929{ 985{
930 mStartDate = start; 986 mStartDate = start;
931} 987}
932 988
933void KOListView::showDates(const QDate &start, const QDate &end) 989void KOListView::showDates(const QDate &start, const QDate &end)
934{ 990{
935 clear(); 991 clear();
936 mStartDate = start; 992 mStartDate = start;
937 QDate date = start; 993 QDate date = start;
938 QPtrList<Journal> j_list; 994 QPtrList<Journal> j_list;
939 while( date <= end ) { 995 while( date <= end ) {
940 addEvents(calendar()->events(date)); 996 addEvents(calendar()->events(date));
941 addTodos(calendar()->todos(date)); 997 addTodos(calendar()->todos(date));
942 Journal* jo = calendar()->journal(date); 998 Journal* jo = calendar()->journal(date);
943 if ( jo ) 999 if ( jo )
944 j_list.append( jo ); 1000 j_list.append( jo );
945 date = date.addDays( 1 ); 1001 date = date.addDays( 1 );
946 } 1002 }
947 addJournals(j_list); 1003 addJournals(j_list);
948 emit incidenceSelected( 0 ); 1004 emit incidenceSelected( 0 );
949 updateView(); 1005 updateView();
950 1006
951} 1007}
952 1008
953void KOListView::addEvents(QPtrList<Event> eventList) 1009void KOListView::addEvents(QPtrList<Event> eventList)
954{ 1010{
955 1011
956 Event *ev; 1012 Event *ev;
957 for(ev = eventList.first(); ev; ev = eventList.next()) { 1013 for(ev = eventList.first(); ev; ev = eventList.next()) {
958 addIncidence(ev); 1014 addIncidence(ev);
959 } 1015 }
960 if ( !mListView->currentItem() ){ 1016 if ( !mListView->currentItem() ){
961 updateView(); 1017 updateView();
962 } 1018 }
963} 1019}
964 1020
965void KOListView::addTodos(QPtrList<Todo> eventList) 1021void KOListView::addTodos(QPtrList<Todo> eventList)
966{ 1022{
967 Todo *ev; 1023 Todo *ev;
968 for(ev = eventList.first(); ev; ev = eventList.next()) { 1024 for(ev = eventList.first(); ev; ev = eventList.next()) {
969 addIncidence(ev); 1025 addIncidence(ev);
970 } 1026 }
971 if ( !mListView->currentItem() ){ 1027 if ( !mListView->currentItem() ){
972 updateView(); 1028 updateView();
973 } 1029 }
974} 1030}
975void KOListView::addJournals(QPtrList<Journal> eventList) 1031void KOListView::addJournals(QPtrList<Journal> eventList)
976{ 1032{
977 Journal *ev; 1033 Journal *ev;
978 for(ev = eventList.first(); ev; ev = eventList.next()) { 1034 for(ev = eventList.first(); ev; ev = eventList.next()) {
979 addIncidence(ev); 1035 addIncidence(ev);
980 } 1036 }
981 if ( !mListView->currentItem() ){ 1037 if ( !mListView->currentItem() ){
982 updateView(); 1038 updateView();
983 } 1039 }
984} 1040}
985 1041
986void KOListView::addIncidence(Incidence *incidence) 1042void KOListView::addIncidence(Incidence *incidence)
987{ 1043{
988 if ( mUidDict.find( incidence->uid() ) ) return; 1044 if ( mUidDict.find( incidence->uid() ) ) return;
989 1045
990 // mListView->setFont ( KOPrefs::instance()->mListViewFont ); 1046 // mListView->setFont ( KOPrefs::instance()->mListViewFont );
991 mUidDict.insert( incidence->uid(), incidence ); 1047 mUidDict.insert( incidence->uid(), incidence );
992 KOListViewItem *item = new KOListViewItem( incidence, mListView ); 1048 KOListViewItem *item = new KOListViewItem( incidence, mListView );
993 ListItemVisitor v(item, mStartDate ); 1049 ListItemVisitor v(item, mStartDate );
994 if (incidence->accept(v)) { 1050 if (incidence->accept(v)) {
995 return; 1051 return;
996 } 1052 }
997 else delete item; 1053 else delete item;
998} 1054}
999 1055
1000void KOListView::showEvents(QPtrList<Event> eventList) 1056void KOListView::showEvents(QPtrList<Event> eventList)
1001{ 1057{
1002 clear(); 1058 clear();
1003 1059
1004 addEvents(eventList); 1060 addEvents(eventList);
1005 1061
1006 // After new creation of list view no events are selected. 1062 // After new creation of list view no events are selected.
1007 emit incidenceSelected( 0 ); 1063 emit incidenceSelected( 0 );
1008} 1064}
1009int KOListView::count() 1065int KOListView::count()
1010{ 1066{
1011 return mListView->childCount(); 1067 return mListView->childCount();
1012} 1068}
1013 1069
1014void KOListView::changeEventDisplay(Event *event, int action) 1070void KOListView::changeEventDisplay(Event *event, int action)
1015{ 1071{
1016 KOListViewItem *item; 1072 KOListViewItem *item;
1017 1073
1018 switch(action) { 1074 switch(action) {
1019 case KOGlobals::EVENTADDED: 1075 case KOGlobals::EVENTADDED:
1020 addIncidence( event ); 1076 addIncidence( event );
1021 break; 1077 break;
1022 case KOGlobals::EVENTEDITED: 1078 case KOGlobals::EVENTEDITED:
1023 item = getItemForEvent(event); 1079 item = getItemForEvent(event);
1024 if (item) { 1080 if (item) {
1025 mUidDict.remove( event->uid() ); 1081 mUidDict.remove( event->uid() );
1026 delete item; 1082 delete item;
1027 addIncidence( event ); 1083 addIncidence( event );
1028 } 1084 }
1029 break; 1085 break;
1030 case KOGlobals::EVENTDELETED: 1086 case KOGlobals::EVENTDELETED:
1031 item = getItemForEvent(event); 1087 item = getItemForEvent(event);
1032 if (item) { 1088 if (item) {
1033 mUidDict.remove( event->uid() ); 1089 mUidDict.remove( event->uid() );
1034 delete item; 1090 delete item;
1035 } 1091 }
1036 break; 1092 break;
1037 default: 1093 default:
1038 ; 1094 ;
1039 } 1095 }
1040} 1096}
1041 1097
1042KOListViewItem *KOListView::getItemForEvent(Event *event) 1098KOListViewItem *KOListView::getItemForEvent(Incidence *event)
1043{ 1099{
1044 KOListViewItem *item = (KOListViewItem *)mListView->firstChild(); 1100 KOListViewItem *item = (KOListViewItem *)mListView->firstChild();
1045 while (item) { 1101 while (item) {
1046 if (item->data() == event) return item; 1102 if (item->data() == event) return item;
1047 item = (KOListViewItem *)item->nextSibling(); 1103 item = (KOListViewItem *)item->nextSibling();
1048 } 1104 }
1049 return 0; 1105 return 0;
1050} 1106}
1051 1107
1052void KOListView::defaultItemAction(QListViewItem *i) 1108void KOListView::defaultItemAction(QListViewItem *i)
1053{ 1109{
1054 KOListViewItem *item = static_cast<KOListViewItem *>( i ); 1110 KOListViewItem *item = static_cast<KOListViewItem *>( i );
1055 if ( item ) defaultAction( item->data() ); 1111 if ( item ) defaultAction( item->data() );
1056 1112
1057} 1113}
1058 1114
1059void KOListView::popupMenu(QListViewItem *item,const QPoint &,int) 1115void KOListView::popupMenu(QListViewItem *item,const QPoint &,int)
1060{ 1116{
1061 mActiveItem = (KOListViewItem *)item; 1117 mActiveItem = (KOListViewItem *)item;
1062 if (mActiveItem) { 1118 if (mActiveItem) {
1063 Incidence *incidence = mActiveItem->data(); 1119 Incidence *incidence = mActiveItem->data();
1064 mPopupMenu->enableDefault( !mListView->hasMultiSelection( item ) ); 1120 mPopupMenu->enableDefault( !mListView->hasMultiSelection( item ) );
1065 mPopupMenu->showIncidencePopup(incidence); 1121 mPopupMenu->showIncidencePopup(incidence);
1066 1122
1067 /* 1123 /*
1068 if ( incidence && incidence->type() == "Event" ) { 1124 if ( incidence && incidence->type() == "Event" ) {
1069 Event *event = static_cast<Event *>( incidence ); 1125 Event *event = static_cast<Event *>( incidence );
1070 mPopupMenu->showEventPopup(event); 1126 mPopupMenu->showEventPopup(event);
1071 } 1127 }
1072 */ 1128 */
1073 } 1129 }
1074} 1130}
1075 1131
1076void KOListView::readSettings(KConfig *config, QString setting) 1132void KOListView::readSettings(KConfig *config, QString setting)
1077{ 1133{
1078 // qDebug("KOListView::readSettings "); 1134 // qDebug("KOListView::readSettings ");
1079 mListView->restoreLayout(config,setting); 1135 mListView->restoreLayout(config,setting);
1080} 1136}
1081 1137
1082void KOListView::writeSettings(KConfig *config, QString setting) 1138void KOListView::writeSettings(KConfig *config, QString setting)
1083{ 1139{
1084 // qDebug("KOListView::writeSettings "); 1140 // qDebug("KOListView::writeSettings ");
1085 mListView->saveLayout(config, setting); 1141 mListView->saveLayout(config, setting);
1086} 1142}
1087 1143
1088void KOListView::processSelectionChange(QListViewItem *) 1144void KOListView::processSelectionChange(QListViewItem *)
1089{ 1145{
1090 1146
1091 KOListViewItem *item = 1147 KOListViewItem *item =
1092 static_cast<KOListViewItem *>( mListView->currentItem() ); 1148 static_cast<KOListViewItem *>( mListView->currentItem() );
1093 1149
1094 if ( !item ) { 1150 if ( !item ) {
1095 emit incidenceSelected( 0 ); 1151 emit incidenceSelected( 0 );
1096 } else { 1152 } else {
1097 emit incidenceSelected( item->data() ); 1153 emit incidenceSelected( item->data() );
1098 } 1154 }
1099} 1155}
1100 1156
1101void KOListView::clearSelection() 1157void KOListView::clearSelection()
1102{ 1158{
1103 mListView->selectAll( false ); 1159 mListView->selectAll( false );
1104} 1160}
1105void KOListView::allSelection() 1161void KOListView::allSelection()
1106{ 1162{
1107 mListView->selectAll( true ); 1163 mListView->selectAll( true );
1108} 1164}
1109 1165
1110void KOListView::clear() 1166void KOListView::clear()
1111{ 1167{
1112 mListView->clear(); 1168 mListView->clear();
1113 mUidDict.clear(); 1169 mUidDict.clear();
1114} 1170}
1115 1171
1116Incidence* KOListView::currentItem() 1172Incidence* KOListView::currentItem()
1117{ 1173{
1118 if ( mListView->currentItem() ) 1174 if ( mListView->currentItem() )
1119 return ((KOListViewItem*) mListView->currentItem())->data(); 1175 return ((KOListViewItem*) mListView->currentItem())->data();
1120 return 0; 1176 return 0;
1121} 1177}
1122void KOListView::keyPressEvent ( QKeyEvent *e) 1178void KOListView::keyPressEvent ( QKeyEvent *e)
1123{ 1179{
1124 1180
1125 if ( e->key() == Qt::Key_Delete || e->key() == Qt::Key_Backspace ) { 1181 if ( e->key() == Qt::Key_Delete || e->key() == Qt::Key_Backspace ) {
1126 deleteAll(); 1182 deleteAll();
1127 return; 1183 return;
1128 } 1184 }
1129 1185
1130 e->ignore(); 1186 e->ignore();
1131} 1187}
1132void KOListViewListView::keyPressEvent ( QKeyEvent *e) 1188void KOListViewListView::keyPressEvent ( QKeyEvent *e)
1133{ 1189{
1134 1190
1135 switch ( e->key() ) { 1191 switch ( e->key() ) {
1136 case Qt::Key_Down: 1192 case Qt::Key_Down:
1137 if ( e->state() == ShiftButton ) { 1193 if ( e->state() == ShiftButton ) {
1138 QListViewItem* cn = currentItem(); 1194 QListViewItem* cn = currentItem();
1139 if ( !cn ) 1195 if ( !cn )
1140 cn = firstChild(); 1196 cn = firstChild();
1141 if ( !cn ) 1197 if ( !cn )
1142 return; 1198 return;
1143 while ( cn->nextSibling() ) 1199 while ( cn->nextSibling() )
1144 cn = cn->nextSibling(); 1200 cn = cn->nextSibling();
1145 setCurrentItem ( cn ); 1201 setCurrentItem ( cn );
1146 ensureItemVisible ( cn ); 1202 ensureItemVisible ( cn );
1147 1203
1148 e->accept(); 1204 e->accept();
1149 return; 1205 return;
1150 } 1206 }
1151 if ( e->state() == ControlButton ) { 1207 if ( e->state() == ControlButton ) {
1152 int count = childCount (); 1208 int count = childCount ();
1153 int jump = count / 5; 1209 int jump = count / 5;
1154 QListViewItem* cn; 1210 QListViewItem* cn;
1155 cn = currentItem(); 1211 cn = currentItem();
1156 if ( ! cn ) 1212 if ( ! cn )
1157 return; 1213 return;
1158 if ( jump == 0 ) 1214 if ( jump == 0 )
1159 jump = 1; 1215 jump = 1;
1160 while ( jump && cn->nextSibling() ) { 1216 while ( jump && cn->nextSibling() ) {
1161 cn = cn->nextSibling(); 1217 cn = cn->nextSibling();
1162 --jump; 1218 --jump;
1163 } 1219 }
1164 setCurrentItem ( cn ); 1220 setCurrentItem ( cn );
1165 ensureItemVisible ( cn ); 1221 ensureItemVisible ( cn );
1166 1222
1167 } else 1223 } else
1168 QListView::keyPressEvent ( e ) ; 1224 QListView::keyPressEvent ( e ) ;
1169 e->accept(); 1225 e->accept();
1170 break; 1226 break;
1171 1227
1172 case Qt::Key_Up: 1228 case Qt::Key_Up:
1173 if ( e->state() == ShiftButton ) { 1229 if ( e->state() == ShiftButton ) {
1174 QListViewItem* cn = firstChild(); 1230 QListViewItem* cn = firstChild();
1175 if ( cn ) { 1231 if ( cn ) {
1176 setCurrentItem ( cn ); 1232 setCurrentItem ( cn );
1177 ensureItemVisible ( cn ); 1233 ensureItemVisible ( cn );
1178 } 1234 }
1179 e->accept(); 1235 e->accept();
1180 return; 1236 return;
1181 } 1237 }
1182 if ( e->state() == ControlButton ) { 1238 if ( e->state() == ControlButton ) {
1183 int count = childCount (); 1239 int count = childCount ();
1184 int jump = count / 5; 1240 int jump = count / 5;
1185 QListViewItem* cn; 1241 QListViewItem* cn;
1186 cn = currentItem(); 1242 cn = currentItem();
1187 if ( ! cn ) 1243 if ( ! cn )
1188 return; 1244 return;
1189 if ( jump == 0 ) 1245 if ( jump == 0 )
1190 jump = 1; 1246 jump = 1;
1191 while ( jump && cn->itemAbove ()) { 1247 while ( jump && cn->itemAbove ()) {
1192 cn = cn->itemAbove (); 1248 cn = cn->itemAbove ();
1193 --jump; 1249 --jump;
1194 } 1250 }
1195 setCurrentItem ( cn ); 1251 setCurrentItem ( cn );
1196 ensureItemVisible ( cn ); 1252 ensureItemVisible ( cn );
1197 } else 1253 } else
1198 QListView::keyPressEvent ( e ) ; 1254 QListView::keyPressEvent ( e ) ;
1199 e->accept(); 1255 e->accept();
1200 break; 1256 break;
1201 case Qt::Key_I: { 1257 case Qt::Key_I: {
1202 QListViewItem* cn; 1258 QListViewItem* cn;
1203 cn = currentItem(); 1259 cn = currentItem();
1204 if ( cn ) { 1260 if ( cn ) {
1205 KOListViewItem* ci = (KOListViewItem*)( cn ); 1261 KOListViewItem* ci = (KOListViewItem*)( cn );
1206 if ( ci ){ 1262 if ( ci ){
1207 //emit showIncidence( ci->data()); 1263 //emit showIncidence( ci->data());
1208 cn = cn->nextSibling(); 1264 cn = cn->nextSibling();
1209 if ( cn ) { 1265 if ( cn ) {
1210 setCurrentItem ( cn ); 1266 setCurrentItem ( cn );
1211 ensureItemVisible ( cn ); 1267 ensureItemVisible ( cn );
1212 } 1268 }
1213 emit showIncidence( ci->data()); 1269 emit showIncidence( ci->data());
1214 } 1270 }
1215 } 1271 }
1216 e->accept(); 1272 e->accept();
1217 } 1273 }
1218 break; 1274 break;
1219 case Qt::Key_Return: 1275 case Qt::Key_Return:
1220 case Qt::Key_Enter: 1276 case Qt::Key_Enter:
1221 { 1277 {
1222 QListViewItem* cn; 1278 QListViewItem* cn;
1223 cn = currentItem(); 1279 cn = currentItem();
1224 if ( cn ) { 1280 if ( cn ) {
1225 KOListViewItem* ci = (KOListViewItem*)( cn ); 1281 KOListViewItem* ci = (KOListViewItem*)( cn );
1226 if ( ci ){ 1282 if ( ci ){
1227 if ( e->state() == ShiftButton ) 1283 if ( e->state() == ShiftButton )
1228 ci->setSelected( false ); 1284 ci->setSelected( false );
1229 else 1285 else
1230 ci->setSelected( true ); 1286 ci->setSelected( true );
1231 cn = cn->nextSibling(); 1287 cn = cn->nextSibling();
1232 if ( cn ) { 1288 if ( cn ) {
1233 setCurrentItem ( cn ); 1289 setCurrentItem ( cn );
1234 ensureItemVisible ( cn ); 1290 ensureItemVisible ( cn );
1235 } 1291 }
1236 } 1292 }
1237 } 1293 }
1238 e->accept(); 1294 e->accept();
1239 } 1295 }
1240 break; 1296 break;
1241 default: 1297 default:
1242 e->ignore(); 1298 e->ignore();
1243 } 1299 }
1244} 1300}
1245KOListViewListView::KOListViewListView(KOListView * lv ) 1301KOListViewListView::KOListViewListView(KOListView * lv )
1246 : KListView( lv, "kolistlistview", false ) 1302 : KListView( lv, "kolistlistview", false )
1247{ 1303{
1248 mYMousePos = 0; 1304 mYMousePos = 0;
1249 mPopupTimer = new QTimer(this); 1305 mPopupTimer = new QTimer(this);
1250 connect(mPopupTimer , SIGNAL(timeout()), this, SLOT(popupMenu())); 1306 connect(mPopupTimer , SIGNAL(timeout()), this, SLOT(popupMenu()));
1251#ifndef DESKTOP_VERSION 1307#ifndef DESKTOP_VERSION
1252 //QPEApplication::setStylusOperation(viewport(), QPEApplication::RightOnHold ); 1308 //QPEApplication::setStylusOperation(viewport(), QPEApplication::RightOnHold );
1253#endif 1309#endif
1254 setSelectionMode( QListView::Multi ); 1310 setSelectionMode( QListView::Multi );
1255 setMultiSelection( true); 1311 setMultiSelection( true);
1256} 1312}
1257bool KOListViewListView::hasMultiSelection(QListViewItem* item) 1313bool KOListViewListView::hasMultiSelection(QListViewItem* item)
1258{ 1314{
1259 int selCount = 0; 1315 int selCount = 0;
1260 QListViewItem *qitem = firstChild (); 1316 QListViewItem *qitem = firstChild ();
1261 while ( qitem ) { 1317 while ( qitem ) {
1262 if ( qitem->isSelected() && item != qitem ) 1318 if ( qitem->isSelected() && item != qitem )
1263 return true; 1319 return true;
1264 qitem = qitem->nextSibling(); 1320 qitem = qitem->nextSibling();
1265 } 1321 }
1266 return false; 1322 return false;
1267} 1323}
1268void KOListViewListView::contentsMouseDoubleClickEvent(QMouseEvent *e) 1324void KOListViewListView::contentsMouseDoubleClickEvent(QMouseEvent *e)
1269{ 1325{
1270 if (!e) return; 1326 if (!e) return;
1271 QPoint vp = contentsToViewport(e->pos()); 1327 QPoint vp = contentsToViewport(e->pos());
1272 QListViewItem *item = itemAt(vp); 1328 QListViewItem *item = itemAt(vp);
1273 if (!item) { 1329 if (!item) {
1274 emit newEvent(); 1330 emit newEvent();
1275 return; 1331 return;
1276 } 1332 }
1277 KListView::contentsMouseDoubleClickEvent(e); 1333 KListView::contentsMouseDoubleClickEvent(e);
1278} 1334}
1279#if 0 1335#if 0
1280void KOListViewListView::contentsMousePressEvent(QMouseEvent *e) 1336void KOListViewListView::contentsMousePressEvent(QMouseEvent *e)
1281{ 1337{
1282 //qDebug("contentsMousePressEvent++++ "); 1338 //qDebug("contentsMousePressEvent++++ ");
1283 KListView::contentsMousePressEvent( e ); 1339 KListView::contentsMousePressEvent( e );
1284 if ( e->button() == RightButton ) { 1340 if ( e->button() == RightButton ) {
1285 QListViewItem* ci = currentItem(); 1341 QListViewItem* ci = currentItem();
1286 clearSelection () ; 1342 clearSelection () ;
1287 if ( ci ) 1343 if ( ci )
1288 ci->setSelected( true ); 1344 ci->setSelected( true );
1289 } 1345 }
1290} 1346}
1291void KOListViewListView::contentsMouseReleaseEvent(QMouseEvent *e) 1347void KOListViewListView::contentsMouseReleaseEvent(QMouseEvent *e)
1292{ 1348{
1293 KListView::contentsMouseReleaseEvent(e); 1349 KListView::contentsMouseReleaseEvent(e);
1294} 1350}
1295void KOListViewListView::contentsMouseMoveEvent(QMouseEvent *e) 1351void KOListViewListView::contentsMouseMoveEvent(QMouseEvent *e)
1296{ 1352{
1297 KListView::contentsMouseMoveEvent(e); 1353 KListView::contentsMouseMoveEvent(e);
1298} 1354}
1299#endif 1355#endif
1300void KOListViewListView::popupMenu() 1356void KOListViewListView::popupMenu()
1301{ 1357{
1302 mPopupTimer->stop(); 1358 mPopupTimer->stop();
1303 QMouseEvent* e = new QMouseEvent( QEvent::MouseButtonPress, mEventPos ,mEventGlobalPos, RightButton , RightButton ); 1359 QMouseEvent* e = new QMouseEvent( QEvent::MouseButtonPress, mEventPos ,mEventGlobalPos, RightButton , RightButton );
1304 QApplication::postEvent( this->viewport(), e ); 1360 QApplication::postEvent( this->viewport(), e );
1305 1361
1306} 1362}
1307void KOListViewListView::contentsMousePressEvent(QMouseEvent *e) 1363void KOListViewListView::contentsMousePressEvent(QMouseEvent *e)
1308{ 1364{
1309 //qDebug("contentsMousePressEvent++++ %d %d", e->pos().y(), e->globalPos().y()); 1365 //qDebug("contentsMousePressEvent++++ %d %d", e->pos().y(), e->globalPos().y());
1310 mYMousePos = mapToGlobal( (e->pos())).y(); 1366 mYMousePos = mapToGlobal( (e->pos())).y();
1311 if ( e->button() == LeftButton ) { 1367 if ( e->button() == LeftButton ) {
1312 mPopupTimer->start( 600 ); 1368 mPopupTimer->start( 600 );
1313 mEventPos = contentsToViewport(e->pos()); 1369 mEventPos = contentsToViewport(e->pos());
1314 mEventGlobalPos = e->globalPos(); 1370 mEventGlobalPos = e->globalPos();
1315 } 1371 }
1316 KListView::contentsMousePressEvent( e ); 1372 KListView::contentsMousePressEvent( e );
1317 if ( e->button() == RightButton ) { 1373 if ( e->button() == RightButton ) {
1318 QListViewItem* ci = currentItem(); 1374 QListViewItem* ci = currentItem();
1319 //clearSelection(); 1375 //clearSelection();
1320 if ( ci ) 1376 if ( ci )
1321 ci->setSelected( true ); 1377 ci->setSelected( true );
1322 } 1378 }
1323} 1379}
1324void KOListViewListView::contentsMouseReleaseEvent(QMouseEvent *e) 1380void KOListViewListView::contentsMouseReleaseEvent(QMouseEvent *e)
1325{ 1381{
1326 mPopupTimer->stop(); 1382 mPopupTimer->stop();
1327 KListView::contentsMouseReleaseEvent(e); 1383 KListView::contentsMouseReleaseEvent(e);
1328} 1384}
1329void KOListViewListView::contentsMouseMoveEvent(QMouseEvent *e) 1385void KOListViewListView::contentsMouseMoveEvent(QMouseEvent *e)
1330{ 1386{
1331 // qDebug("contentsMouseMoveEv....... "); 1387 // qDebug("contentsMouseMoveEv....... ");
1332 // qDebug("start: %d current %d ",mYMousePos , mapToGlobal( (e->pos())).y() ); 1388 // qDebug("start: %d current %d ",mYMousePos , mapToGlobal( (e->pos())).y() );
1333 int diff = mYMousePos - mapToGlobal( (e->pos())).y(); 1389 int diff = mYMousePos - mapToGlobal( (e->pos())).y();
1334 if ( diff < 0 ) diff = -diff; 1390 if ( diff < 0 ) diff = -diff;
1335 if ( diff > 15 ) 1391 if ( diff > 15 )
1336 mPopupTimer->stop(); 1392 mPopupTimer->stop();
1337 else { 1393 else {
1338 mEventPos = contentsToViewport(e->pos()); 1394 mEventPos = contentsToViewport(e->pos());
1339 mEventGlobalPos = e->globalPos(); 1395 mEventGlobalPos = e->globalPos();
1340 } 1396 }
1341 KListView::contentsMouseMoveEvent(e); 1397 KListView::contentsMouseMoveEvent(e);
1342} 1398}
1343 1399
1344#define protected public 1400#define protected public
1345#include <qheader.h> 1401#include <qheader.h>
1346#undef protected 1402#undef protected
1347void KOListViewListView::printList() 1403void KOListViewListView::printList()
1348{ 1404{
1349#ifdef DESKTOP_VERSION 1405#ifdef DESKTOP_VERSION
1350 KOPrintPrefs pp ( this ); 1406 KOPrintPrefs pp ( this );
1351 if (!pp.exec() ) 1407 if (!pp.exec() )
1352 return; 1408 return;
1353 int scaleval = pp.printMode() ; 1409 int scaleval = pp.printMode() ;
1354 1410
1355 QPrinter printer; 1411 QPrinter printer;
1356 if (!printer.setup() ) 1412 if (!printer.setup() )
1357 return; 1413 return;
1358 clearSelection (); 1414 clearSelection ();
1359 QPainter p; 1415 QPainter p;
1360 p.begin ( &printer ); 1416 p.begin ( &printer );
1361 QPaintDeviceMetrics m = QPaintDeviceMetrics ( &printer ); 1417 QPaintDeviceMetrics m = QPaintDeviceMetrics ( &printer );
1362 float dx, dy; 1418 float dx, dy;
1363 int wid = (m.width() * 9)/10; 1419 int wid = (m.width() * 9)/10;
1364 dx = (float) wid/(float)contentsWidth (); 1420 dx = (float) wid/(float)contentsWidth ();
1365 dy = (float)(m.height()) / (float)contentsHeight (); 1421 dy = (float)(m.height()) / (float)contentsHeight ();
1366 float scale; 1422 float scale;
1367 // scale to fit the width or height of the paper 1423 // scale to fit the width or height of the paper
1368 if ( dx < dy ) 1424 if ( dx < dy )
1369 scale = dx; 1425 scale = dx;
1370 else 1426 else
1371 scale = dy; 1427 scale = dy;
1372 1428
1373 p.translate( m.width()/10,m.width()/10 ); 1429 p.translate( m.width()/10,m.width()/10 );
1374 if ( scaleval == 2 || scaleval == 1 && scale < 1.0 ) { 1430 if ( scaleval == 2 || scaleval == 1 && scale < 1.0 ) {
1375 p.scale( scale, scale ); 1431 p.scale( scale, scale );
1376 } 1432 }
1377 1433
1378 int cou = header()->count(); 1434 int cou = header()->count();
1379 int iii; 1435 int iii;
1380 QRect rect ( 0,0,0, header()->height()); 1436 QRect rect ( 0,0,0, header()->height());
1381 for ( iii = 0; iii < cou; ++iii ) { 1437 for ( iii = 0; iii < cou; ++iii ) {
1382 rect.setLeft ( header()->sectionPos( iii ) ); 1438 rect.setLeft ( header()->sectionPos( iii ) );
1383 rect.setRight ( header()->sectionPos( iii ) + header()->sectionSize (iii)); 1439 rect.setRight ( header()->sectionPos( iii ) + header()->sectionSize (iii));
1384 header()->paintSection ( & p, header()->mapToIndex (iii), rect ); 1440 header()->paintSection ( & p, header()->mapToIndex (iii), rect );
1385 } 1441 }
1386 p.translate( 0, header()->height()); 1442 p.translate( 0, header()->height());
1387 drawContentsOffset ( &p, 0,0, 0,0, contentsWidth (), contentsHeight () ); 1443 drawContentsOffset ( &p, 0,0, 0,0, contentsWidth (), contentsHeight () );
1388 p.end(); 1444 p.end();
1389#endif 1445#endif
1390} 1446}
diff --git a/korganizer/kolistview.h b/korganizer/kolistview.h
index 9da5497..d384af0 100644
--- a/korganizer/kolistview.h
+++ b/korganizer/kolistview.h
@@ -1,318 +1,321 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 1999 Preston Brown 3 Copyright (c) 1999 Preston Brown
4 Copyright (c) 2000,2001 Cornelius Schumacher <schumacher@kde.org> 4 Copyright (c) 2000,2001 Cornelius Schumacher <schumacher@kde.org>
5 5
6 This program is free software; you can redistribute it and/or modify 6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by 7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or 8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version. 9 (at your option) any later version.
10 10
11 This program is distributed in the hope that it will be useful, 11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details. 14 GNU General Public License for more details.
15 15
16 You should have received a copy of the GNU General Public License 16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software 17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
19 19
20 As a special exception, permission is given to link this program 20 As a special exception, permission is given to link this program
21 with any edition of Qt, and distribute the resulting executable, 21 with any edition of Qt, and distribute the resulting executable,
22 without including the source code for Qt in the source distribution. 22 without including the source code for Qt in the source distribution.
23*/ 23*/
24#ifndef _KOLISTVIEW_H 24#ifndef _KOLISTVIEW_H
25#define _KOLISTVIEW_H 25#define _KOLISTVIEW_H
26 26
27#include <qlistview.h> 27#include <qlistview.h>
28#include <qmap.h> 28#include <qmap.h>
29#include <qdict.h> 29#include <qdict.h>
30 30
31#include <klistview.h> 31#include <klistview.h>
32 32
33#ifndef DESKTOP_VERSION 33#ifndef DESKTOP_VERSION
34#include <qtopia/ir.h> 34#include <qtopia/ir.h>
35#else 35#else
36#define Ir char 36#define Ir char
37#endif 37#endif
38#include <libkcal/incidence.h> 38#include <libkcal/incidence.h>
39 39
40#include "koeventview.h" 40#include "koeventview.h"
41#include "customlistviewitem.h" 41#include "customlistviewitem.h"
42 42
43using namespace KCal; 43using namespace KCal;
44 44
45class KOListViewWhatsThis; 45class KOListViewWhatsThis;
46 46
47#include <qpushbutton.h> 47#include <qpushbutton.h>
48#include <qlayout.h> 48#include <qlayout.h>
49#include <qdialog.h> 49#include <qdialog.h>
50#include <qtimer.h> 50#include <qtimer.h>
51#include <qcombobox.h> 51#include <qcombobox.h>
52#include <qspinbox.h> 52#include <qspinbox.h>
53#include <qtooltip.h> 53#include <qtooltip.h>
54#include <qcheckbox.h> 54#include <qcheckbox.h>
55#include <qhbox.h> 55#include <qhbox.h>
56#include <qlabel.h> 56#include <qlabel.h>
57#include <kiconloader.h> 57#include <kiconloader.h>
58#include "kfiledialog.h" 58#include "kfiledialog.h"
59#include "koprefs.h" 59#include "koprefs.h"
60class KOAlarmPrefs : public QDialog 60class KOAlarmPrefs : public QDialog
61{ 61{
62 Q_OBJECT 62 Q_OBJECT
63 public: 63 public:
64 KOAlarmPrefs( QWidget *par=0, const char *name=0 ) : 64 KOAlarmPrefs( QWidget *par=0, const char *name=0 ) :
65 QDialog( par, name, true ) 65 QDialog( par, name, true )
66 { 66 {
67 setCaption( i18n("Alarm Options") ); 67 setCaption( i18n("Alarm Options") );
68 QVBoxLayout* alarmLayout = new QVBoxLayout( this ); 68 QVBoxLayout* alarmLayout = new QVBoxLayout( this );
69 alarmLayout->setSpacing( 3 ); 69 alarmLayout->setSpacing( 3 );
70 alarmLayout->setMargin( 3 ); 70 alarmLayout->setMargin( 3 );
71 QWidget *parent = this; 71 QWidget *parent = this;
72 mAlarmButton = new QCheckBox(i18n("Set reminder ON with offset to:"),parent); 72 mAlarmButton = new QCheckBox(i18n("Set reminder ON with offset to:"),parent);
73 alarmLayout->addWidget(mAlarmButton); 73 alarmLayout->addWidget(mAlarmButton);
74 mAlarmTimeEdit = new QSpinBox ( 0, 9999, 1, parent, "mAlarmTimeEdit " ) ; 74 mAlarmTimeEdit = new QSpinBox ( 0, 9999, 1, parent, "mAlarmTimeEdit " ) ;
75 mAlarmTimeEdit->setValue( 15 ); 75 mAlarmTimeEdit->setValue( 15 );
76 alarmLayout->addWidget(mAlarmTimeEdit); 76 alarmLayout->addWidget(mAlarmTimeEdit);
77 mAlarmIncrCombo = new QComboBox(false, parent); 77 mAlarmIncrCombo = new QComboBox(false, parent);
78 mAlarmIncrCombo->insertItem(i18n("minute(s)")); 78 mAlarmIncrCombo->insertItem(i18n("minute(s)"));
79 mAlarmIncrCombo->insertItem(i18n("hour(s)")); 79 mAlarmIncrCombo->insertItem(i18n("hour(s)"));
80 mAlarmIncrCombo->insertItem(i18n("day(s)")); 80 mAlarmIncrCombo->insertItem(i18n("day(s)"));
81 alarmLayout->addWidget(mAlarmIncrCombo); 81 alarmLayout->addWidget(mAlarmIncrCombo);
82 QHBox * hb = new QHBox ( parent ); 82 QHBox * hb = new QHBox ( parent );
83 alarmLayout->addWidget(hb); 83 alarmLayout->addWidget(hb);
84 mAlarmSoundButton = new QPushButton(hb); 84 mAlarmSoundButton = new QPushButton(hb);
85 mAlarmSoundButton->setPixmap(SmallIcon("playsound")); 85 mAlarmSoundButton->setPixmap(SmallIcon("playsound"));
86 mAlarmSoundButton->setToggleButton(true); 86 mAlarmSoundButton->setToggleButton(true);
87 connect(mAlarmSoundButton, SIGNAL(clicked()), SLOT(pickAlarmSound())); 87 connect(mAlarmSoundButton, SIGNAL(clicked()), SLOT(pickAlarmSound()));
88 mAlarmProgramButton = new QPushButton(hb); 88 mAlarmProgramButton = new QPushButton(hb);
89 mAlarmProgramButton->setPixmap(SmallIcon("run")); 89 mAlarmProgramButton->setPixmap(SmallIcon("run"));
90 mAlarmProgramButton->setToggleButton(true); 90 mAlarmProgramButton->setToggleButton(true);
91 connect(mAlarmProgramButton, SIGNAL(clicked()), SLOT(pickAlarmProgram())); 91 connect(mAlarmProgramButton, SIGNAL(clicked()), SLOT(pickAlarmProgram()));
92 mAlarmSoundButton->setMaximumWidth( mAlarmSoundButton->sizeHint().width() + 4 ); 92 mAlarmSoundButton->setMaximumWidth( mAlarmSoundButton->sizeHint().width() + 4 );
93 mAlarmProgramButton->setMaximumWidth(mAlarmProgramButton->sizeHint().width() + 4 ); 93 mAlarmProgramButton->setMaximumWidth(mAlarmProgramButton->sizeHint().width() + 4 );
94 mAlarmLabel = new QLabel( this ); 94 mAlarmLabel = new QLabel( this );
95 alarmLayout->addWidget( mAlarmLabel ); 95 alarmLayout->addWidget( mAlarmLabel );
96 mAlarmLabel->setText( "..."+KOPrefs::instance()->mDefaultAlarmFile.right( 30 ) ); 96 mAlarmLabel->setText( "..."+KOPrefs::instance()->mDefaultAlarmFile.right( 30 ) );
97 mAlarmSound = KOPrefs::instance()->mDefaultAlarmFile; 97 mAlarmSound = KOPrefs::instance()->mDefaultAlarmFile;
98 mAlarmSoundButton->setOn( true ); 98 mAlarmSoundButton->setOn( true );
99 QPushButton * ok = new QPushButton( i18n("Set Alarm!"), this ); 99 QPushButton * ok = new QPushButton( i18n("Set Alarm!"), this );
100 alarmLayout->addWidget( ok ); 100 alarmLayout->addWidget( ok );
101 QPushButton * cancel = new QPushButton( i18n("Cancel"), this ); 101 QPushButton * cancel = new QPushButton( i18n("Cancel"), this );
102 alarmLayout->addWidget( cancel ); 102 alarmLayout->addWidget( cancel );
103 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) ); 103 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) );
104 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) ); 104 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) );
105 resize( 200, 200 ); 105 resize( 200, 200 );
106 106
107 } 107 }
108 108
109 109
110 110
111 QString mAlarmSound, mAlarmProgram ; 111 QString mAlarmSound, mAlarmProgram ;
112 QCheckBox* mAlarmButton; 112 QCheckBox* mAlarmButton;
113 QSpinBox* mAlarmTimeEdit; 113 QSpinBox* mAlarmTimeEdit;
114 QLabel* mAlarmLabel; 114 QLabel* mAlarmLabel;
115 QComboBox* mAlarmIncrCombo ; 115 QComboBox* mAlarmIncrCombo ;
116 QPushButton* mAlarmSoundButton ,*mAlarmProgramButton; 116 QPushButton* mAlarmSoundButton ,*mAlarmProgramButton;
117private slots: 117private slots:
118 118
119void pickAlarmSound() 119void pickAlarmSound()
120{ 120{
121 //QString prefix = mAlarmSound; 121 //QString prefix = mAlarmSound;
122 if (!mAlarmSoundButton->isOn()) { 122 if (!mAlarmSoundButton->isOn()) {
123 //mAlarmSound = ""; 123 //mAlarmSound = "";
124 QToolTip::remove(mAlarmSoundButton); 124 QToolTip::remove(mAlarmSoundButton);
125 QToolTip::add(mAlarmSoundButton, i18n("No sound set")); 125 QToolTip::add(mAlarmSoundButton, i18n("No sound set"));
126 mAlarmProgramButton->setOn(true); 126 mAlarmProgramButton->setOn(true);
127 mAlarmSoundButton->setOn(false); 127 mAlarmSoundButton->setOn(false);
128 } else { 128 } else {
129 QString fileName(KFileDialog::getOpenFileName(mAlarmSound, 129 QString fileName(KFileDialog::getOpenFileName(mAlarmSound,
130 i18n("*.wav|Wav Files"), 0)); 130 i18n("*.wav|Wav Files"), 0));
131 if (!fileName.isEmpty()) { 131 if (!fileName.isEmpty()) {
132 mAlarmSound = fileName; 132 mAlarmSound = fileName;
133 mAlarmLabel->setText( "..."+fileName.right( 30 ) ); 133 mAlarmLabel->setText( "..."+fileName.right( 30 ) );
134 QToolTip::remove(mAlarmSoundButton); 134 QToolTip::remove(mAlarmSoundButton);
135 QString dispStr = i18n("Playing '%1'").arg(fileName); 135 QString dispStr = i18n("Playing '%1'").arg(fileName);
136 QToolTip::add(mAlarmSoundButton, dispStr); 136 QToolTip::add(mAlarmSoundButton, dispStr);
137 mAlarmProgramButton->setOn(false); 137 mAlarmProgramButton->setOn(false);
138 mAlarmSoundButton->setOn(true); 138 mAlarmSoundButton->setOn(true);
139 } else { 139 } else {
140 mAlarmProgramButton->setOn(true); 140 mAlarmProgramButton->setOn(true);
141 mAlarmSoundButton->setOn(false); 141 mAlarmSoundButton->setOn(false);
142 142
143 } 143 }
144 } 144 }
145}; 145};
146 146
147void pickAlarmProgram() 147void pickAlarmProgram()
148{ 148{
149 if (!mAlarmProgramButton->isOn()) { 149 if (!mAlarmProgramButton->isOn()) {
150 //mAlarmProgram = ""; 150 //mAlarmProgram = "";
151 QToolTip::remove(mAlarmProgramButton); 151 QToolTip::remove(mAlarmProgramButton);
152 QToolTip::add(mAlarmProgramButton, i18n("No program set")); 152 QToolTip::add(mAlarmProgramButton, i18n("No program set"));
153 mAlarmProgramButton->setOn(false); 153 mAlarmProgramButton->setOn(false);
154 mAlarmSoundButton->setOn(true); 154 mAlarmSoundButton->setOn(true);
155 } else { 155 } else {
156 QString fileName(KFileDialog::getOpenFileName(mAlarmProgram,i18n("Procedure Alarm.: ") , 0)); 156 QString fileName(KFileDialog::getOpenFileName(mAlarmProgram,i18n("Procedure Alarm.: ") , 0));
157 if (!fileName.isEmpty()) { 157 if (!fileName.isEmpty()) {
158 mAlarmProgram = fileName; 158 mAlarmProgram = fileName;
159 mAlarmLabel->setText( "..."+fileName.right( 30 ) ); 159 mAlarmLabel->setText( "..."+fileName.right( 30 ) );
160 QToolTip::remove(mAlarmProgramButton); 160 QToolTip::remove(mAlarmProgramButton);
161 QString dispStr = i18n("Running '%1'").arg(fileName); 161 QString dispStr = i18n("Running '%1'").arg(fileName);
162 QToolTip::add(mAlarmProgramButton, dispStr); 162 QToolTip::add(mAlarmProgramButton, dispStr);
163 mAlarmSoundButton->setOn(false); 163 mAlarmSoundButton->setOn(false);
164 mAlarmProgramButton->setOn(true); 164 mAlarmProgramButton->setOn(true);
165 } else { 165 } else {
166 mAlarmProgramButton->setOn(false); 166 mAlarmProgramButton->setOn(false);
167 mAlarmSoundButton->setOn(true); 167 mAlarmSoundButton->setOn(true);
168 } 168 }
169 } 169 }
170}; 170};
171 171
172}; 172};
173 173
174 174
175 175
176 176
177 177
178 178
179 179
180typedef CustomListViewItem<Incidence *> KOListViewItem; 180typedef CustomListViewItem<Incidence *> KOListViewItem;
181 181
182/** 182/**
183 This class provides the initialisation of a KOListViewItem for calendar 183 This class provides the initialisation of a KOListViewItem for calendar
184 components using the Incidence::Visitor. 184 components using the Incidence::Visitor.
185*/ 185*/
186class ListItemVisitor : public Incidence::Visitor 186class ListItemVisitor : public Incidence::Visitor
187{ 187{
188 public: 188 public:
189 ListItemVisitor(KOListViewItem *, QDate d); 189 ListItemVisitor(KOListViewItem *, QDate d);
190 ~ListItemVisitor(); 190 ~ListItemVisitor();
191 191
192 bool visit(Event *); 192 bool visit(Event *);
193 bool visit(Todo *); 193 bool visit(Todo *);
194 bool visit(Journal *); 194 bool visit(Journal *);
195 195
196 private: 196 private:
197 KOListViewItem *mItem; 197 KOListViewItem *mItem;
198 QDate mDate; 198 QDate mDate;
199}; 199};
200 200
201/** 201/**
202 This class provides a multi-column list view of events. It can 202 This class provides a multi-column list view of events. It can
203 display events from one particular day or several days, it doesn't 203 display events from one particular day or several days, it doesn't
204 matter. To use a view that only handles one day at a time, use 204 matter. To use a view that only handles one day at a time, use
205 KODayListView. 205 KODayListView.
206 206
207 @short multi-column list view of various events. 207 @short multi-column list view of various events.
208 @author Preston Brown <pbrown@kde.org> 208 @author Preston Brown <pbrown@kde.org>
209 @see KOBaseView, KODayListView 209 @see KOBaseView, KODayListView
210*/ 210*/
211class KOListView; 211class KOListView;
212 212
213class KOListViewListView : public KListView 213class KOListViewListView : public KListView
214{ 214{
215 Q_OBJECT 215 Q_OBJECT
216 public: 216 public:
217 KOListViewListView(KOListView * lv ); 217 KOListViewListView(KOListView * lv );
218 bool hasMultiSelection(QListViewItem*); 218 bool hasMultiSelection(QListViewItem*);
219 void printList(); 219 void printList();
220 signals: 220 signals:
221 void newEvent(); 221 void newEvent();
222 void showIncidence( Incidence* ); 222 void showIncidence( Incidence* );
223 public slots: 223 public slots:
224 void popupMenu(); 224 void popupMenu();
225 private: 225 private:
226 QPoint mEventPos; 226 QPoint mEventPos;
227 QPoint mEventGlobalPos; 227 QPoint mEventGlobalPos;
228 QTimer* mPopupTimer; 228 QTimer* mPopupTimer;
229 int mYMousePos; 229 int mYMousePos;
230 void keyPressEvent ( QKeyEvent * ) ; 230 void keyPressEvent ( QKeyEvent * ) ;
231 void contentsMouseDoubleClickEvent(QMouseEvent *e); 231 void contentsMouseDoubleClickEvent(QMouseEvent *e);
232 void contentsMousePressEvent(QMouseEvent *e); 232 void contentsMousePressEvent(QMouseEvent *e);
233 void contentsMouseReleaseEvent(QMouseEvent *e); 233 void contentsMouseReleaseEvent(QMouseEvent *e);
234 void contentsMouseMoveEvent(QMouseEvent *e); 234 void contentsMouseMoveEvent(QMouseEvent *e);
235 bool mMouseDown; 235 bool mMouseDown;
236}; 236};
237 237
238class KOListView : public KOEventView 238class KOListView : public KOEventView
239{ 239{
240 Q_OBJECT 240 Q_OBJECT
241 public: 241 public:
242 KOListView(Calendar *calendar, QWidget *parent = 0, 242 KOListView(Calendar *calendar, QWidget *parent = 0,
243 const char *name = 0); 243 const char *name = 0);
244 ~KOListView(); 244 ~KOListView();
245 245
246 virtual int maxDatesHint(); 246 virtual int maxDatesHint();
247 virtual int currentDateCount(); 247 virtual int currentDateCount();
248 virtual QPtrList<Incidence> selectedIncidences(); 248 virtual QPtrList<Incidence> selectedIncidences();
249 virtual DateList selectedDates(); 249 virtual DateList selectedDates();
250 250
251 void showDates(bool show); 251 void showDates(bool show);
252 Incidence* currentItem(); 252 Incidence* currentItem();
253 void addTodos(QPtrList<Todo> eventList); 253 void addTodos(QPtrList<Todo> eventList);
254 void addJournals(QPtrList<Journal> eventList); 254 void addJournals(QPtrList<Journal> eventList);
255 virtual void printPreview(CalPrinter *calPrinter, 255 virtual void printPreview(CalPrinter *calPrinter,
256 const QDate &, const QDate &); 256 const QDate &, const QDate &);
257 257
258 void readSettings(KConfig *config, QString setting = "KOListView Layout"); 258 void readSettings(KConfig *config, QString setting = "KOListView Layout");
259 void writeSettings(KConfig *config, QString setting = "KOListView Layout"); 259 void writeSettings(KConfig *config, QString setting = "KOListView Layout");
260 void updateList(); 260 void updateList();
261 void clearList(); 261 void clearList();
262 void setStartDate(const QDate &start); 262 void setStartDate(const QDate &start);
263 int count(); 263 int count();
264 QString getWhatsThisText(QPoint p); 264 QString getWhatsThisText(QPoint p);
265 QPtrList<Incidence> KOListView::getSelectedIncidences( bool includeEvents = true, bool includeTodos = true , bool includeJournals = true, bool onlyDueTodos = false ); 265 QPtrList<Incidence> KOListView::getSelectedIncidences( bool includeEvents = true, bool includeTodos = true , bool includeJournals = true, bool onlyDueTodos = false );
266 signals: 266 signals:
267 void signalNewEvent(); 267 void signalNewEvent();
268 void beamIncidenceList(QPtrList<Incidence>); 268 void beamIncidenceList(QPtrList<Incidence>);
269 269
270 public slots: 270 public slots:
271 void hideAll(); 271 void hideAll();
272 void printList(); 272 void printList();
273 void resetFocus(); 273 void resetFocus();
274 virtual void updateView(); 274 virtual void updateView();
275 virtual void showDates(const QDate &start, const QDate &end); 275 virtual void showDates(const QDate &start, const QDate &end);
276 virtual void showEvents(QPtrList<Event> eventList); 276 virtual void showEvents(QPtrList<Event> eventList);
277 void clearSelection(); 277 void clearSelection();
278 void allSelection(); 278 void allSelection();
279 279
280 void clear(); 280 void clear();
281 void beamDone( Ir *ir ); 281 void beamDone( Ir *ir );
282 void showDates(); 282 void showDates();
283 void hideDates(); 283 void hideDates();
284 void deleteAll(); 284 void deleteAll();
285 void saveToFile(); 285 void saveToFile();
286 void saveToFileVCS(); 286 void saveToFileVCS();
287 void saveDescriptionToFile(); 287 void saveDescriptionToFile();
288 void beamSelected(); 288 void beamSelected();
289 void updateConfig(); 289 void updateConfig();
290 void addCat(); 290 void addCat();
291 void setCat(); 291 void setCat();
292 void setAlarm(); 292 void setAlarm();
293 void setCategories( bool removeOld ); 293 void setCategories( bool removeOld );
294 void changeEventDisplay(Event *, int); 294 void changeEventDisplay(Event *, int);
295 295
296 void defaultItemAction(QListViewItem *item); 296 void defaultItemAction(QListViewItem *item);
297 void popupMenu(QListViewItem *item,const QPoint &,int); 297 void popupMenu(QListViewItem *item,const QPoint &,int);
298 void setCalendar( int c );
299 void populateCalPopup();
298 300
299 protected slots: 301 protected slots:
300 void processSelectionChange(QListViewItem *); 302 void processSelectionChange(QListViewItem *);
301 303
302 protected: 304 protected:
303 void writeToFile( bool iCal ); 305 void writeToFile( bool iCal );
304 void addEvents(QPtrList<Event> eventList); 306 void addEvents(QPtrList<Event> eventList);
305 void addIncidence(Incidence *); 307 void addIncidence(Incidence *);
306 KOListViewItem *getItemForEvent(Event *event); 308 KOListViewItem *getItemForEvent(Incidence *event);
307 309
308 private: 310 private:
311 QPopupMenu* mCalPopup;
309 KOListViewWhatsThis *mKOListViewWhatsThis; 312 KOListViewWhatsThis *mKOListViewWhatsThis;
310 KOListViewListView *mListView; 313 KOListViewListView *mListView;
311 KOEventPopupMenu *mPopupMenu; 314 KOEventPopupMenu *mPopupMenu;
312 KOListViewItem *mActiveItem; 315 KOListViewItem *mActiveItem;
313 QDict<Incidence> mUidDict; 316 QDict<Incidence> mUidDict;
314 QDate mStartDate; 317 QDate mStartDate;
315 void keyPressEvent ( QKeyEvent * ) ; 318 void keyPressEvent ( QKeyEvent * ) ;
316}; 319};
317 320
318#endif 321#endif
diff --git a/korganizer/koprefs.cpp b/korganizer/koprefs.cpp
index 65f0342..a4ea3d3 100644
--- a/korganizer/koprefs.cpp
+++ b/korganizer/koprefs.cpp
@@ -114,482 +114,486 @@ KOPrefs::KOPrefs() :
114 addItemBool("ToolBarHorN",&mToolBarHorN, true ); 114 addItemBool("ToolBarHorN",&mToolBarHorN, true );
115 addItemBool("ToolBarUpN",&mToolBarUpN, false ); 115 addItemBool("ToolBarUpN",&mToolBarUpN, false );
116 addItemBool("ToolBarHorF",&mToolBarHorF, true ); 116 addItemBool("ToolBarHorF",&mToolBarHorF, true );
117 addItemBool("ToolBarUpF",&mToolBarUpF, false ); 117 addItemBool("ToolBarUpF",&mToolBarUpF, false );
118 addItemBool("ToolBarMiniIcons",&mToolBarMiniIcons, false ); 118 addItemBool("ToolBarMiniIcons",&mToolBarMiniIcons, false );
119 addItemInt("Whats Next Days",&mWhatsNextDays,3); 119 addItemInt("Whats Next Days",&mWhatsNextDays,3);
120 addItemInt("Whats Next Prios",&mWhatsNextPrios,1); 120 addItemInt("Whats Next Prios",&mWhatsNextPrios,1);
121 121
122 addItemBool("ShowTodoInAgenda",&mShowTodoInAgenda,true); 122 addItemBool("ShowTodoInAgenda",&mShowTodoInAgenda,true);
123 addItemBool("ShowCompletedTodoInAgenda",&mShowCompletedTodoInAgenda,true); 123 addItemBool("ShowCompletedTodoInAgenda",&mShowCompletedTodoInAgenda,true);
124 addItemBool("ShowTimeInAgenda",&mShowTimeInAgenda,true); 124 addItemBool("ShowTimeInAgenda",&mShowTimeInAgenda,true);
125 addItemBool("HideNonStartedTodos",&mHideNonStartedTodos,false); 125 addItemBool("HideNonStartedTodos",&mHideNonStartedTodos,false);
126 addItemBool("ShowCompletedTodo",&mShowCompletedTodo,true); 126 addItemBool("ShowCompletedTodo",&mShowCompletedTodo,true);
127 addItemInt("AllDay Size",&mAllDaySize,28); 127 addItemInt("AllDay Size",&mAllDaySize,28);
128 QString defAlarm = KGlobal::iconLoader()->iconPath()+"koalarm.wav"; 128 QString defAlarm = KGlobal::iconLoader()->iconPath()+"koalarm.wav";
129 addItemString("DefaultAlarmFile",&mDefaultAlarmFile,defAlarm ); 129 addItemString("DefaultAlarmFile",&mDefaultAlarmFile,defAlarm );
130 130
131 addItemStringList("LocationDefaults",&mLocationDefaults ); 131 addItemStringList("LocationDefaults",&mLocationDefaults );
132 addItemStringList("EventSummary User",&mEventSummaryUser); 132 addItemStringList("EventSummary User",&mEventSummaryUser);
133 addItemStringList("TodoSummary User",&mTodoSummaryUser); 133 addItemStringList("TodoSummary User",&mTodoSummaryUser);
134 134
135 addItemBool("Enable Group Scheduling",&mEnableGroupScheduling,false); 135 addItemBool("Enable Group Scheduling",&mEnableGroupScheduling,false);
136 addItemBool("Enable Project View",&mEnableProjectView,false); 136 addItemBool("Enable Project View",&mEnableProjectView,false);
137 addItemBool("Auto Save",&mAutoSave,false); 137 addItemBool("Auto Save",&mAutoSave,false);
138 addItemInt("Auto Save Interval",&mAutoSaveInterval,3); 138 addItemInt("Auto Save Interval",&mAutoSaveInterval,3);
139 addItemBool("Confirm Deletes",&mConfirm,true); 139 addItemBool("Confirm Deletes",&mConfirm,true);
140 addItemString("Archive File",&mArchiveFile); 140 addItemString("Archive File",&mArchiveFile);
141 addItemString("Html Export File",&mHtmlExportFile, 141 addItemString("Html Export File",&mHtmlExportFile,
142 QDir::homeDirPath() + "/" + i18n("Default export file", "calendar.html")); 142 QDir::homeDirPath() + "/" + i18n("Default export file", "calendar.html"));
143 addItemBool("Html With Save",&mHtmlWithSave,false); 143 addItemBool("Html With Save",&mHtmlWithSave,false);
144 144
145 KPrefs::setCurrentGroup("Personal Settings"); 145 KPrefs::setCurrentGroup("Personal Settings");
146 146
147 addItemInt("Mail Client",&mMailClient,MailClientKMail); 147 addItemInt("Mail Client",&mMailClient,MailClientKMail);
148 addItemBool("Use Control Center Email",&mEmailControlCenter,false); 148 addItemBool("Use Control Center Email",&mEmailControlCenter,false);
149 addItemBool("Bcc",&mBcc,false); 149 addItemBool("Bcc",&mBcc,false);
150 150
151 KPrefs::setCurrentGroup("Time & Date"); 151 KPrefs::setCurrentGroup("Time & Date");
152 152
153 153
154 addItemInt("Default Start Time",&mStartTime,10); 154 addItemInt("Default Start Time",&mStartTime,10);
155 addItemInt("Default Duration",&mDefaultDuration,2); 155 addItemInt("Default Duration",&mDefaultDuration,2);
156 addItemInt("Default Alarm Time",&mAlarmTime,3); 156 addItemInt("Default Alarm Time",&mAlarmTime,3);
157 KPrefs::setCurrentGroup("AlarmSettings"); 157 KPrefs::setCurrentGroup("AlarmSettings");
158 addItemInt("AlarmPlayBeeps",&mAlarmPlayBeeps,20); 158 addItemInt("AlarmPlayBeeps",&mAlarmPlayBeeps,20);
159 addItemInt("AlarmSuspendTime",&mAlarmSuspendTime,7); 159 addItemInt("AlarmSuspendTime",&mAlarmSuspendTime,7);
160 addItemInt("AlarmSuspendCount",&mAlarmSuspendCount,5); 160 addItemInt("AlarmSuspendCount",&mAlarmSuspendCount,5);
161 addItemInt("AlarmBeepInterval",&mAlarmBeepInterval,3); 161 addItemInt("AlarmBeepInterval",&mAlarmBeepInterval,3);
162 162
163 163
164 KPrefs::setCurrentGroup("Calendar"); 164 KPrefs::setCurrentGroup("Calendar");
165 165
166 addItemInt("Default Calendar Format",&mDefaultFormat,FormatICalendar); 166 addItemInt("Default Calendar Format",&mDefaultFormat,FormatICalendar);
167 167
168 KPrefs::setCurrentGroup("Fonts"); 168 KPrefs::setCurrentGroup("Fonts");
169 // qDebug(" KPrefs::setCurrentGroup(Fonts); "); 169 // qDebug(" KPrefs::setCurrentGroup(Fonts); ");
170 QFont fon = KGlobalSettings::generalFont(); 170 QFont fon = KGlobalSettings::generalFont();
171 addItemFont("TimeBar Font",&mTimeBarFont,fon ); 171 addItemFont("TimeBar Font",&mTimeBarFont,fon );
172 addItemFont("MonthView Font",&mMonthViewFont,fon); 172 addItemFont("MonthView Font",&mMonthViewFont,fon);
173 addItemFont("AgendaView Font",&mAgendaViewFont,fon); 173 addItemFont("AgendaView Font",&mAgendaViewFont,fon);
174 addItemFont("MarcusBains Font",&mMarcusBainsFont,fon); 174 addItemFont("MarcusBains Font",&mMarcusBainsFont,fon);
175 addItemFont("TimeLabels Font",&mTimeLabelsFont,fon); 175 addItemFont("TimeLabels Font",&mTimeLabelsFont,fon);
176 addItemFont("TodoView Font",&mTodoViewFont,fon); 176 addItemFont("TodoView Font",&mTodoViewFont,fon);
177 addItemFont("ListView Font",&mListViewFont,fon); 177 addItemFont("ListView Font",&mListViewFont,fon);
178 addItemFont("DateNavigator Font",&mDateNavigatorFont,fon); 178 addItemFont("DateNavigator Font",&mDateNavigatorFont,fon);
179 addItemFont("EditBox Font",&mEditBoxFont,fon); 179 addItemFont("EditBox Font",&mEditBoxFont,fon);
180 addItemFont("JournalView Font",&mJornalViewFont,fon); 180 addItemFont("JournalView Font",&mJornalViewFont,fon);
181 addItemFont("WhatsNextView Font",&mWhatsNextFont,fon); 181 addItemFont("WhatsNextView Font",&mWhatsNextFont,fon);
182 addItemFont("EventView Font",&mEventViewFont,fon); 182 addItemFont("EventView Font",&mEventViewFont,fon);
183 183
184 KPrefs::setCurrentGroup("RemoteSyncing"); 184 KPrefs::setCurrentGroup("RemoteSyncing");
185 addItemString("ActiveSyncPort",&mActiveSyncPort,"9197" ); 185 addItemString("ActiveSyncPort",&mActiveSyncPort,"9197" );
186 addItemString("ActiveSyncIP",&mActiveSyncIP,"192.168.0.40" ); 186 addItemString("ActiveSyncIP",&mActiveSyncIP,"192.168.0.40" );
187 addItemBool("ShowSyncEvents",&mShowSyncEvents,false); 187 addItemBool("ShowSyncEvents",&mShowSyncEvents,false);
188 addItemInt("LastSyncTime",&mLastSyncTime,0); 188 addItemInt("LastSyncTime",&mLastSyncTime,0);
189 189
190#ifdef _WIN32_ 190#ifdef _WIN32_
191 QString hdp= locateLocal("data","korganizer")+"\\\\"; 191 QString hdp= locateLocal("data","korganizer")+"\\\\";
192#else 192#else
193 QString hdp= locateLocal("data","korganizer")+"/"; 193 QString hdp= locateLocal("data","korganizer")+"/";
194#endif 194#endif
195 195
196 KPrefs::setCurrentGroup("LoadSaveFileNames"); 196 KPrefs::setCurrentGroup("LoadSaveFileNames");
197 197
198 addItemString("LastImportFile", &mLastImportFile ,hdp +"import.ics" ); 198 addItemString("LastImportFile", &mLastImportFile ,hdp +"import.ics" );
199 addItemString("LastVcalFile", &mLastVcalFile ,hdp +"export.vcs" ); 199 addItemString("LastVcalFile", &mLastVcalFile ,hdp +"export.vcs" );
200 addItemString("LastSaveFile", &mLastSaveFile ,hdp +"mybackup.ics" ); 200 addItemString("LastSaveFile", &mLastSaveFile ,hdp +"mybackup.ics" );
201 addItemString("LastLoadFile", &mLastLoadFile ,hdp +"mybackup.ics" ); 201 addItemString("LastLoadFile", &mLastLoadFile ,hdp +"mybackup.ics" );
202 202
203 203
204 KPrefs::setCurrentGroup("Locale"); 204 KPrefs::setCurrentGroup("Locale");
205 addItemBool("ShortDateInViewer",&mShortDateInViewer,false); 205 addItemBool("ShortDateInViewer",&mShortDateInViewer,false);
206 206
207 207
208 KPrefs::setCurrentGroup("Colors"); 208 KPrefs::setCurrentGroup("Colors");
209 addItemColor("Holiday Color",&mHolidayColor,defaultHolidayColor); 209 addItemColor("Holiday Color",&mHolidayColor,defaultHolidayColor);
210 addItemColor("Highlight Color",&mHighlightColor,defaultHighlightColor); 210 addItemColor("Highlight Color",&mHighlightColor,defaultHighlightColor);
211 addItemColor("Event Color",&mEventColor,mDefaultCategoryColor); 211 addItemColor("Event Color",&mEventColor,mDefaultCategoryColor);
212 addItemColor("Todo done Color",&mTodoDoneColor,QColor(111,255,115) ); 212 addItemColor("Todo done Color",&mTodoDoneColor,QColor(111,255,115) );
213 addItemColor("Agenda Background Color",&mAgendaBgColor,defaultAgendaBgColor); 213 addItemColor("Agenda Background Color",&mAgendaBgColor,defaultAgendaBgColor);
214 addItemColor("WorkingHours Color",&mWorkingHoursColor,defaultWorkingHoursColor); 214 addItemColor("WorkingHours Color",&mWorkingHoursColor,defaultWorkingHoursColor);
215 addItemColor("Todo due today Color",&mTodoDueTodayColor,defaultTodoDueTodayColor); 215 addItemColor("Todo due today Color",&mTodoDueTodayColor,defaultTodoDueTodayColor);
216 addItemColor("Todo overdue Color",&mTodoOverdueColor,defaultTodoOverdueColor); 216 addItemColor("Todo overdue Color",&mTodoOverdueColor,defaultTodoOverdueColor);
217 addItemColor("Todo running Color",&mTodoRunColor,defaultTodoRunColor); 217 addItemColor("Todo running Color",&mTodoRunColor,defaultTodoRunColor);
218 addItemColor("MonthViewEvenColor",&mMonthViewEvenColor,QColor( 160,160,255 )); 218 addItemColor("MonthViewEvenColor",&mMonthViewEvenColor,QColor( 160,160,255 ));
219 addItemColor("MonthViewOddColor",&mMonthViewOddColor,QColor( 160,255,160 )); 219 addItemColor("MonthViewOddColor",&mMonthViewOddColor,QColor( 160,255,160 ));
220 addItemColor("MonthViewHolidayColor",&mMonthViewHolidayColor,QColor( 255,160,160 )); 220 addItemColor("MonthViewHolidayColor",&mMonthViewHolidayColor,QColor( 255,160,160 ));
221 addItemBool("MonthViewUsesDayColors",&mMonthViewUsesDayColors,true); 221 addItemBool("MonthViewUsesDayColors",&mMonthViewUsesDayColors,true);
222 addItemBool("MonthViewSatSunTog",&mMonthViewSatSunTog,true); 222 addItemBool("MonthViewSatSunTog",&mMonthViewSatSunTog,true);
223 addItemBool("MonthViewWeek",&mMonthViewWeek,false); 223 addItemBool("MonthViewWeek",&mMonthViewWeek,false);
224 addItemBool("HightlightDateTimeEdit",&mHightlightDateTimeEdit,false); 224 addItemBool("HightlightDateTimeEdit",&mHightlightDateTimeEdit,false);
225 addItemColor("AppColor1",&mAppColor1,QColor( 130,170,255 )); 225 addItemColor("AppColor1",&mAppColor1,QColor( 130,170,255 ));
226 addItemColor("AppColor2",&mAppColor2,QColor( 174,216,255 )); 226 addItemColor("AppColor2",&mAppColor2,QColor( 174,216,255 ));
227 addItemBool("UseAppColors",&mUseAppColors,false); 227 addItemBool("UseAppColors",&mUseAppColors,false);
228 228
229 229
230 230
231 KPrefs::setCurrentGroup("Views"); 231 KPrefs::setCurrentGroup("Views");
232 addItemBool("Block Popup Menu",&mBlockPopupMenu,true); 232 addItemBool("Block Popup Menu",&mBlockPopupMenu,true);
233 addItemBool("Show Date Navigator",&mShowDateNavigator,true); 233 addItemBool("Show Date Navigator",&mShowDateNavigator,true);
234 addItemInt("Hour Size",&mHourSize,8); 234 addItemInt("Hour Size",&mHourSize,8);
235 addItemBool("Show Daily Recurrences",&mDailyRecur,true); 235 addItemBool("Show Daily Recurrences",&mDailyRecur,true);
236 addItemBool("Show Weekly Recurrences",&mWeeklyRecur,true); 236 addItemBool("Show Weekly Recurrences",&mWeeklyRecur,true);
237 addItemBool("Show Month Daily Recurrences",&mMonthDailyRecur,true); 237 addItemBool("Show Month Daily Recurrences",&mMonthDailyRecur,true);
238 addItemBool("Show Month Weekly Recurrences",&mMonthWeeklyRecur,true); 238 addItemBool("Show Month Weekly Recurrences",&mMonthWeeklyRecur,true);
239 addItemBool("ShowShortMonthName",&mMonthShowShort,false); 239 addItemBool("ShowShortMonthName",&mMonthShowShort,false);
240 addItemBool("ShowIconsInMonthCell",&mMonthShowIcons,true); 240 addItemBool("ShowIconsInMonthCell",&mMonthShowIcons,true);
241 addItemBool("ShowTimesInMonthCell",&mMonthShowTimes,true); 241 addItemBool("ShowTimesInMonthCell",&mMonthShowTimes,true);
242#ifdef DESKTOP_VERION 242#ifdef DESKTOP_VERION
243 addItemBool("Enable ToolTips",&mEnableToolTips,true); 243 addItemBool("Enable ToolTips",&mEnableToolTips,true);
244#else 244#else
245 addItemBool("Enable ToolTips",&mEnableToolTips,false); 245 addItemBool("Enable ToolTips",&mEnableToolTips,false);
246#endif 246#endif
247 addItemBool("Enable MonthView ScrollBars",&mEnableMonthScroll,false); 247 addItemBool("Enable MonthView ScrollBars",&mEnableMonthScroll,false);
248 addItemBool("Marcus Bains shows seconds",&mMarcusBainsShowSeconds,false); 248 addItemBool("Marcus Bains shows seconds",&mMarcusBainsShowSeconds,false);
249 addItemBool("Show Marcus Bains",&mMarcusBainsEnabled,true); 249 addItemBool("Show Marcus Bains",&mMarcusBainsEnabled,true);
250 addItemBool("EditOnDoubleClick",&mEditOnDoubleClick,true); 250 addItemBool("EditOnDoubleClick",&mEditOnDoubleClick,true);
251 addItemBool("ViewChangeHoldFullscreen",&mViewChangeHoldFullscreen,true); 251 addItemBool("ViewChangeHoldFullscreen",&mViewChangeHoldFullscreen,true);
252 addItemBool("ViewChangeHoldNonFullscreen",&mViewChangeHoldNonFullscreen,false); 252 addItemBool("ViewChangeHoldNonFullscreen",&mViewChangeHoldNonFullscreen,false);
253 addItemBool("CenterOnCurrentTime",&mCenterOnCurrentTime,false); 253 addItemBool("CenterOnCurrentTime",&mCenterOnCurrentTime,false);
254 addItemBool("SetTimeToDayStartAt",&mSetTimeToDayStartAt,true); 254 addItemBool("SetTimeToDayStartAt",&mSetTimeToDayStartAt,true);
255 addItemBool("HighlightCurrentDay",&mHighlightCurrentDay,true); 255 addItemBool("HighlightCurrentDay",&mHighlightCurrentDay,true);
256 addItemBool("WNViewShowsParents",&mWNViewShowsParents,true);; 256 addItemBool("WNViewShowsParents",&mWNViewShowsParents,true);;
257 addItemBool("WNViewShowsPast",&mWNViewShowsPast,true); 257 addItemBool("WNViewShowsPast",&mWNViewShowsPast,true);
258 addItemBool("WNViewShowLocation",&mWNViewShowLocation,false); 258 addItemBool("WNViewShowLocation",&mWNViewShowLocation,false);
259 addItemBool("UseHighlightLightColor",&mUseHighlightLightColor,false); 259 addItemBool("UseHighlightLightColor",&mUseHighlightLightColor,false);
260 addItemBool("ListViewMonthTimespan",&mListViewMonthTimespan,true); 260 addItemBool("ListViewMonthTimespan",&mListViewMonthTimespan,true);
261 addItemBool("TodoViewUsesCatColors",&mTodoViewUsesCatColors,false); 261 addItemBool("TodoViewUsesCatColors",&mTodoViewUsesCatColors,false);
262 addItemBool("TodoViewShowsPercentage",&mTodoViewShowsPercentage,false); 262 addItemBool("TodoViewShowsPercentage",&mTodoViewShowsPercentage,false);
263 addItemBool("TodoViewUsesSmallFont",&mTodoViewUsesSmallFont,true); 263 addItemBool("TodoViewUsesSmallFont",&mTodoViewUsesSmallFont,true);
264 addItemBool("MonthViewUsesBigFont",&mMonthViewUsesBigFont,true); 264 addItemBool("MonthViewUsesBigFont",&mMonthViewUsesBigFont,true);
265 addItemBool("TodoViewUsesForegroundColor",&mTodoViewUsesForegroundColor,false); 265 addItemBool("TodoViewUsesForegroundColor",&mTodoViewUsesForegroundColor,false);
266 addItemBool("MonthViewUsesForegroundColor",&mMonthViewUsesForegroundColor,false); 266 addItemBool("MonthViewUsesForegroundColor",&mMonthViewUsesForegroundColor,false);
267#ifdef DESKTOP_VERSION 267#ifdef DESKTOP_VERSION
268 addItemBool("UseInternalAlarmNotification",&mUseInternalAlarmNotification,true); 268 addItemBool("UseInternalAlarmNotification",&mUseInternalAlarmNotification,true);
269#else 269#else
270 addItemBool("UseInternalAlarmNotification",&mUseInternalAlarmNotification,false); 270 addItemBool("UseInternalAlarmNotification",&mUseInternalAlarmNotification,false);
271#endif 271#endif
272 addItemInt("Day Begins",&mDayBegins,7); 272 addItemInt("Day Begins",&mDayBegins,7);
273 addItemInt("Working Hours Start",&mWorkingHoursStart,8); 273 addItemInt("Working Hours Start",&mWorkingHoursStart,8);
274 addItemInt("Working Hours End",&mWorkingHoursEnd,17); 274 addItemInt("Working Hours End",&mWorkingHoursEnd,17);
275 addItemBool("Exclude Holidays",&mExcludeHolidays,true); 275 addItemBool("Exclude Holidays",&mExcludeHolidays,true);
276 addItemBool("Exclude Saturdays",&mExcludeSaturdays,true); 276 addItemBool("Exclude Saturdays",&mExcludeSaturdays,true);
277 277
278 addItemBool("Month View Uses Category Color",&mMonthViewUsesCategoryColor,false); 278 addItemBool("Month View Uses Category Color",&mMonthViewUsesCategoryColor,false);
279 addItemBool("Full View Month",&mFullViewMonth,true); 279 addItemBool("Full View Month",&mFullViewMonth,true);
280 addItemBool("Full View Todo",&mFullViewTodo,true); 280 addItemBool("Full View Todo",&mFullViewTodo,true);
281 addItemBool("Quick Todo",&mEnableQuickTodo,false); 281 addItemBool("Quick Todo",&mEnableQuickTodo,false);
282 282
283 addItemInt("Next X Days",&mNextXDays,3); 283 addItemInt("Next X Days",&mNextXDays,3);
284 284
285 KPrefs::setCurrentGroup("Printer"); 285 KPrefs::setCurrentGroup("Printer");
286 286
287 KPrefs::setCurrentGroup("Layout"); 287 KPrefs::setCurrentGroup("Layout");
288 288
289 addItemBool("CompactDialogs",&mCompactDialogs,false); 289 addItemBool("CompactDialogs",&mCompactDialogs,false);
290 addItemBool("VerticalScreen",&mVerticalScreen,true); 290 addItemBool("VerticalScreen",&mVerticalScreen,true);
291 291
292 KPrefs::setCurrentGroup("KOrganizer Plugins"); 292 KPrefs::setCurrentGroup("KOrganizer Plugins");
293 293
294 addItemStringList("SelectedPlugins",&mSelectedPlugins,"holidays"); 294 addItemStringList("SelectedPlugins",&mSelectedPlugins,"holidays");
295 295
296 KPrefs::setCurrentGroup("Group Scheduling"); 296 KPrefs::setCurrentGroup("Group Scheduling");
297 297
298 addItemInt("IMIPScheduler",&mIMIPScheduler,IMIPKMail); 298 addItemInt("IMIPScheduler",&mIMIPScheduler,IMIPKMail);
299 addItemInt("IMIPSend",&mIMIPSend,IMIPdirectsend); 299 addItemInt("IMIPSend",&mIMIPSend,IMIPdirectsend);
300 addItemStringList("AdditionalMails",&mAdditionalMails,""); 300 addItemStringList("AdditionalMails",&mAdditionalMails,"");
301 addItemInt("IMIP auto refresh",&mIMIPAutoRefresh,neverAuto); 301 addItemInt("IMIP auto refresh",&mIMIPAutoRefresh,neverAuto);
302 addItemInt("IMIP auto insert request",&mIMIPAutoInsertRequest,neverAuto); 302 addItemInt("IMIP auto insert request",&mIMIPAutoInsertRequest,neverAuto);
303 addItemInt("IMIP auto insert reply",&mIMIPAutoInsertReply,neverAuto); 303 addItemInt("IMIP auto insert reply",&mIMIPAutoInsertReply,neverAuto);
304 addItemInt("IMIP auto FreeBusy",&mIMIPAutoFreeBusy,neverAuto); 304 addItemInt("IMIP auto FreeBusy",&mIMIPAutoFreeBusy,neverAuto);
305 addItemInt("IMIP auto save FreeBusy",&mIMIPAutoFreeBusyReply,neverAuto); 305 addItemInt("IMIP auto save FreeBusy",&mIMIPAutoFreeBusyReply,neverAuto);
306 306
307 KPrefs::setCurrentGroup( "Editors" ); 307 KPrefs::setCurrentGroup( "Editors" );
308 308
309 addItemStringList( "EventTemplates", &mEventTemplates ); 309 addItemStringList( "EventTemplates", &mEventTemplates );
310 addItemStringList( "TodoTemplates", &mTodoTemplates ); 310 addItemStringList( "TodoTemplates", &mTodoTemplates );
311 311
312 addItemInt("DestinationPolicy",&mDestination,standardDestination); 312 addItemInt("DestinationPolicy",&mDestination,standardDestination);
313 313
314 KPrefs::setCurrentGroup( "ViewOptions" ); 314 KPrefs::setCurrentGroup( "ViewOptions" );
315 addItemBool("EVshowDetails",&mEVshowDetails,true); 315 addItemBool("EVshowDetails",&mEVshowDetails,true);
316 addItemBool("EVshowCreated",&mEVshowCreated,true); 316 addItemBool("EVshowCreated",&mEVshowCreated,true);
317 addItemBool("EVshowChanged",&mEVshowChanged,true); 317 addItemBool("EVshowChanged",&mEVshowChanged,true);
318 addItemBool("WTshowDetails",&mWTshowDetails,false); 318 addItemBool("WTshowDetails",&mWTshowDetails,false);
319 addItemBool("WTshowCreated",&mWTshowCreated,false); 319 addItemBool("WTshowCreated",&mWTshowCreated,false);
320 addItemBool("WTshowChanged",&mWTshowChanged,false); 320 addItemBool("WTshowChanged",&mWTshowChanged,false);
321 mCalendars.setAutoDelete( true ); 321 mCalendars.setAutoDelete( true );
322} 322}
323 323
324 324
325KOPrefs::~KOPrefs() 325KOPrefs::~KOPrefs()
326{ 326{
327 if (mInstance == this) 327 if (mInstance == this)
328 mInstance = insd.setObject(0); 328 mInstance = insd.setObject(0);
329 mCalendars.setAutoDelete( true ); 329 mCalendars.setAutoDelete( true );
330 mCalendars.clear(); 330 mCalendars.clear();
331 //qDebug("KOPrefs::~KOPrefs() "); 331 //qDebug("KOPrefs::~KOPrefs() ");
332} 332}
333 333
334 334
335KOPrefs *KOPrefs::instance() 335KOPrefs *KOPrefs::instance()
336{ 336{
337 if (!mInstance) { 337 if (!mInstance) {
338 mInstance = insd.setObject(new KOPrefs()); 338 mInstance = insd.setObject(new KOPrefs());
339 mInstance->readConfig(); 339 mInstance->readConfig();
340 } 340 }
341 341
342 return mInstance; 342 return mInstance;
343} 343}
344 344
345void KOPrefs::usrSetDefaults() 345void KOPrefs::usrSetDefaults()
346{ 346{
347 347
348} 348}
349 349
350void KOPrefs::fillMailDefaults() 350void KOPrefs::fillMailDefaults()
351{ 351{
352 if (mName.isEmpty()) mName = i18n("Anonymous"); 352 if (mName.isEmpty()) mName = i18n("Anonymous");
353 if (mEmail.isEmpty()) mEmail = i18n("nobody@nowhere"); 353 if (mEmail.isEmpty()) mEmail = i18n("nobody@nowhere");
354} 354}
355 355
356void KOPrefs::setTimeZoneIdDefault() 356void KOPrefs::setTimeZoneIdDefault()
357{ 357{
358 ; 358 ;
359} 359}
360 360
361void KOPrefs::setAllDefaults() 361void KOPrefs::setAllDefaults()
362{ 362{
363 setCategoryDefaults(); 363 setCategoryDefaults();
364 mEventSummaryUser = getDefaultList() ; 364 mEventSummaryUser = getDefaultList() ;
365 mTodoSummaryUser = getDefaultList() ; 365 mTodoSummaryUser = getDefaultList() ;
366 mLocationDefaults = getLocationDefaultList(); 366 mLocationDefaults = getLocationDefaultList();
367} 367}
368 368
369void KOPrefs::setCategoryDefaults() 369void KOPrefs::setCategoryDefaults()
370{ 370{
371 mCustomCategories.clear(); 371 mCustomCategories.clear();
372 mCustomCategories = getDefaultList(); 372 mCustomCategories = getDefaultList();
373 373
374 QStringList::Iterator it; 374 QStringList::Iterator it;
375 for (it = mCustomCategories.begin();it != mCustomCategories.end();++it ) { 375 for (it = mCustomCategories.begin();it != mCustomCategories.end();++it ) {
376 setCategoryColor(*it,mDefaultCategoryColor); 376 setCategoryColor(*it,mDefaultCategoryColor);
377 } 377 }
378} 378}
379QStringList KOPrefs::getLocationDefaultList() 379QStringList KOPrefs::getLocationDefaultList()
380{ 380{
381 QStringList retval ; 381 QStringList retval ;
382 retval << i18n("Home") << i18n("Office") << i18n("Library") << i18n("School") << i18n("Doctor") << i18n("Beach") 382 retval << i18n("Home") << i18n("Office") << i18n("Library") << i18n("School") << i18n("Doctor") << i18n("Beach")
383 << i18n("University") << i18n("Restaurant") << i18n("Bar") << i18n("Conference room") 383 << i18n("University") << i18n("Restaurant") << i18n("Bar") << i18n("Conference room")
384 << i18n("Cinema") << i18n("Lake") << i18n("Kindergarten") 384 << i18n("Cinema") << i18n("Lake") << i18n("Kindergarten")
385 << i18n("Germany") << i18n("Sweden") << i18n("Forest") << i18n("Desert") << i18n("Kitchen") ; 385 << i18n("Germany") << i18n("Sweden") << i18n("Forest") << i18n("Desert") << i18n("Kitchen") ;
386 // << i18n("") << i18n("") << i18n("") << i18n("") << i18n("") << i18n("") << i18n("") << i18n("") 386 // << i18n("") << i18n("") << i18n("") << i18n("") << i18n("") << i18n("") << i18n("") << i18n("")
387 387
388 retval.sort(); 388 retval.sort();
389 return retval; 389 return retval;
390} 390}
391QStringList KOPrefs::getDefaultList() 391QStringList KOPrefs::getDefaultList()
392{ 392{
393 QStringList retval ; 393 QStringList retval ;
394 retval << i18n("Anniversary") << i18n("Appointment") << i18n("Birthday") << i18n("Business") << i18n("Business Travel") << i18n("Cinema") << i18n("Customer") 394 retval << i18n("Anniversary") << i18n("Appointment") << i18n("Birthday") << i18n("Business") << i18n("Business Travel") << i18n("Cinema") << i18n("Customer")
395 << i18n("Break")<< i18n("Breakfast")<< i18n("Competition")<< i18n("Dinner") 395 << i18n("Break")<< i18n("Breakfast")<< i18n("Competition")<< i18n("Dinner")
396 << i18n("Education")<< i18n("Family") << i18n("Favorites") << i18n("Festival")<< i18n("Fishing")<< i18n("Flight") << i18n("Gifts") 396 << i18n("Education")<< i18n("Family") << i18n("Favorites") << i18n("Festival")<< i18n("Fishing")<< i18n("Flight") << i18n("Gifts")
397 << i18n("Holiday") << i18n("Holiday Cards")<< i18n("Hot Contacts") << i18n("Hiking") << i18n("Hunting") << i18n("Key Customer") << i18n("Kids") 397 << i18n("Holiday") << i18n("Holiday Cards")<< i18n("Hot Contacts") << i18n("Hiking") << i18n("Hunting") << i18n("Key Customer") << i18n("Kids")
398 << i18n("Lunch") << i18n("Meeting") << i18n("Miscellaneous") << i18n("Partner")<< i18n("Party") << i18n("Personal") << i18n("Personal Travel") 398 << i18n("Lunch") << i18n("Meeting") << i18n("Miscellaneous") << i18n("Partner")<< i18n("Party") << i18n("Personal") << i18n("Personal Travel")
399 << i18n("PHB") << i18n("Phone Calls") << i18n("Projects") << i18n("Recurring") << i18n("School") << i18n("Shopping") 399 << i18n("PHB") << i18n("Phone Calls") << i18n("Projects") << i18n("Recurring") << i18n("School") << i18n("Shopping")
400 << i18n("Speach") << i18n("Special Occasion") << i18n("Sports") << i18n("Talk") << i18n("Travel") << i18n("TV")<< i18n("University") 400 << i18n("Speach") << i18n("Special Occasion") << i18n("Sports") << i18n("Talk") << i18n("Travel") << i18n("TV")<< i18n("University")
401 << i18n("Vacation") << i18n("VIP") << i18n("SyncEvent") ; 401 << i18n("Vacation") << i18n("VIP") << i18n("SyncEvent") ;
402 retval.sort(); 402 retval.sort();
403 //qDebug("cat %s ", retval.join("-").latin1()); 403 //qDebug("cat %s ", retval.join("-").latin1());
404 return retval; 404 return retval;
405} 405}
406 406
407void KOPrefs::usrReadConfig() 407void KOPrefs::usrReadConfig()
408{ 408{
409 config()->setGroup("General"); 409 config()->setGroup("General");
410 410
411 //qDebug("KOPrefs::usrReadConfig() "); 411 //qDebug("KOPrefs::usrReadConfig() ");
412 mCustomCategories = config()->readListEntry("Custom Categories"); 412 mCustomCategories = config()->readListEntry("Custom Categories");
413 mOldLoadedLanguage = mOldLanguage ; 413 mOldLoadedLanguage = mOldLanguage ;
414 mOldLanguage = KPimGlobalPrefs::instance()->mPreferredLanguage; 414 mOldLanguage = KPimGlobalPrefs::instance()->mPreferredLanguage;
415 if (mLocationDefaults.isEmpty()) { 415 if (mLocationDefaults.isEmpty()) {
416 mLocationDefaults = getLocationDefaultList(); 416 mLocationDefaults = getLocationDefaultList();
417 } 417 }
418 418
419 if (mEventSummaryUser.isEmpty()) { 419 if (mEventSummaryUser.isEmpty()) {
420 mEventSummaryUser = getDefaultList() ; 420 mEventSummaryUser = getDefaultList() ;
421 } 421 }
422 if (mTodoSummaryUser.isEmpty()) { 422 if (mTodoSummaryUser.isEmpty()) {
423 mTodoSummaryUser = getDefaultList() ; 423 mTodoSummaryUser = getDefaultList() ;
424 } 424 }
425 425
426 if (mCustomCategories.isEmpty()) setCategoryDefaults(); 426 if (mCustomCategories.isEmpty()) setCategoryDefaults();
427 427
428 config()->setGroup("Personal Settings"); 428 config()->setGroup("Personal Settings");
429 mName = config()->readEntry("user_name",""); 429 mName = config()->readEntry("user_name","");
430 mEmail = config()->readEntry("user_email",""); 430 mEmail = config()->readEntry("user_email","");
431 fillMailDefaults(); 431 fillMailDefaults();
432 432
433 config()->setGroup("Category Colors"); 433 config()->setGroup("Category Colors");
434 QStringList::Iterator it; 434 QStringList::Iterator it;
435 for (it = mCustomCategories.begin();it != mCustomCategories.end();++it ) { 435 for (it = mCustomCategories.begin();it != mCustomCategories.end();++it ) {
436 setCategoryColor(*it,config()->readColorEntry(*it,&mDefaultCategoryColor)); 436 setCategoryColor(*it,config()->readColorEntry(*it,&mDefaultCategoryColor));
437 437
438 } 438 }
439 KConfig fc (locateLocal("config","kopicalendarrc")); 439 KConfig fc (locateLocal("config","kopicalendarrc"));
440 fc.setGroup("CC"); 440 fc.setGroup("CC");
441 int numCals = fc.readNumEntry("NumberCalendars",0 ); 441 int numCals = fc.readNumEntry("NumberCalendars",0 );
442 mNextAvailableCalendar = 1; 442 mNextAvailableCalendar = 1;
443 if ( numCals == 0 ) { 443 if ( numCals == 0 ) {
444 KopiCalendarFile *kkf = getNewCalendar(); 444 KopiCalendarFile *kkf = getNewCalendar();
445 kkf->isStandard = true; 445 kkf->isStandard = true;
446 kkf->mName = i18n("Standard"); 446 kkf->mName = i18n("Standard");
447 kkf->mFileName = locateLocal( "data", "korganizer/mycalendar.ics" ); 447 kkf->mFileName = locateLocal( "data", "korganizer/mycalendar.ics" );
448 } 448 }
449 while ( mNextAvailableCalendar <= numCals ) { 449 while ( mNextAvailableCalendar <= numCals ) {
450 //qDebug("Read cal #%d ", mNextAvailableCalendar ); 450 //qDebug("Read cal #%d ", mNextAvailableCalendar );
451 QString prefix = "Cal_" +QString::number( mNextAvailableCalendar ); 451 QString prefix = "Cal_" +QString::number( mNextAvailableCalendar );
452 KopiCalendarFile *kkf = getNewCalendar(); 452 KopiCalendarFile *kkf = getNewCalendar();
453 kkf->isStandard = fc.readBoolEntry( prefix+"_isStandard", false ); 453 kkf->isStandard = fc.readBoolEntry( prefix+"_isStandard", false );
454 kkf->isEnabled = fc.readBoolEntry( prefix+"_isEnabled", true); 454 kkf->isEnabled = fc.readBoolEntry( prefix+"_isEnabled", true);
455 kkf->isAlarmEnabled = fc.readBoolEntry( prefix+"_isAlarmEnabled", true); 455 kkf->isAlarmEnabled = fc.readBoolEntry( prefix+"_isAlarmEnabled", true);
456 kkf->isReadOnly = fc.readBoolEntry( prefix+"_isReadOnly", false); 456 kkf->isReadOnly = fc.readBoolEntry( prefix+"_isReadOnly", false);
457 kkf->mName = fc.readEntry( prefix+"_Name", "Calendar"); 457 kkf->mName = fc.readEntry( prefix+"_Name", "Calendar");
458 kkf->mFileName = fc.readEntry( prefix+"_FileName", kkf->mFileName); 458 kkf->mFileName = fc.readEntry( prefix+"_FileName", kkf->mFileName);
459 kkf->mDefaultColor = fc.readColorEntry( prefix+"_Color",&mEventColor); 459 kkf->mDefaultColor = fc.readColorEntry( prefix+"_Color",&mEventColor);
460 if ( kkf->mCalNumber == 1 ) { 460 if ( kkf->mCalNumber == 1 ) {
461 kkf->mFileName = locateLocal( "data", "korganizer/mycalendar.ics" ); 461 kkf->mFileName = locateLocal( "data", "korganizer/mycalendar.ics" );
462 } 462 }
463 } 463 }
464 464
465 KPimPrefs::usrReadConfig(); 465 KPimPrefs::usrReadConfig();
466} 466}
467 467
468KopiCalendarFile * KOPrefs::getCalendar( int num ) 468KopiCalendarFile * KOPrefs::getCalendar( int num )
469{ 469{
470 return mDefCalColors[num-1]; 470 return mDefCalColors[num-1];
471} 471}
472 472
473KopiCalendarFile * KOPrefs::getNewCalendar() 473KopiCalendarFile * KOPrefs::getNewCalendar()
474{ 474{
475 KopiCalendarFile * kkf = new KopiCalendarFile(); 475 KopiCalendarFile * kkf = new KopiCalendarFile();
476 kkf->mCalNumber = mNextAvailableCalendar; 476 kkf->mCalNumber = mNextAvailableCalendar;
477 mDefCalColors.resize( mNextAvailableCalendar ); 477 mDefCalColors.resize( mNextAvailableCalendar );
478 mDefCalColors[mNextAvailableCalendar-1] = kkf; 478 mDefCalColors[mNextAvailableCalendar-1] = kkf;
479 ++mNextAvailableCalendar; 479 ++mNextAvailableCalendar;
480 kkf->mDefaultColor = mEventColor; 480 kkf->mDefaultColor = mEventColor;
481 kkf->mName = i18n("New Calendar"); 481 kkf->mName = i18n("New Calendar");
482 mCalendars.append( kkf ); 482 mCalendars.append( kkf );
483 return kkf; 483 return kkf;
484} 484}
485void KOPrefs::deleteCalendar( int num ) 485void KOPrefs::deleteCalendar( int num )
486{ 486{
487 KopiCalendarFile * kkf = mCalendars.first(); 487 KopiCalendarFile * kkf = mCalendars.first();
488 while ( kkf ) { 488 while ( kkf ) {
489 if ( kkf->mCalNumber == num ) { 489 if ( kkf->mCalNumber == num ) {
490 qDebug("KOPrefs::deleteCalendar %d ", num ); 490 qDebug("KOPrefs::deleteCalendar %d ", num );
491 mCalendars.remove( kkf ); 491 mCalendars.remove( kkf );
492 delete kkf; 492 delete kkf;
493 return; 493 return;
494 } 494 }
495 kkf = mCalendars.next(); 495 kkf = mCalendars.next();
496 } 496 }
497} 497}
498QString KOPrefs::calName( int calNum) const
499{
500 return (mDefCalColors[calNum-1])->mName;
501}
498QColor KOPrefs::defaultColor( int calNum ) const 502QColor KOPrefs::defaultColor( int calNum ) const
499{ 503{
500 if ( calNum == 1 ) return mEventColor; 504 if ( calNum == 1 ) return mEventColor;
501 return (mDefCalColors[calNum-1])->mDefaultColor; 505 return (mDefCalColors[calNum-1])->mDefaultColor;
502} 506}
503void KOPrefs::usrWriteConfig() 507void KOPrefs::usrWriteConfig()
504{ 508{
505 config()->setGroup("General"); 509 config()->setGroup("General");
506 config()->writeEntry("Custom Categories",mCustomCategories); 510 config()->writeEntry("Custom Categories",mCustomCategories);
507 511
508 config()->setGroup("Personal Settings"); 512 config()->setGroup("Personal Settings");
509 config()->writeEntry("user_name",mName); 513 config()->writeEntry("user_name",mName);
510 config()->writeEntry("user_email",mEmail); 514 config()->writeEntry("user_email",mEmail);
511 515
512 config()->setGroup("Category Colors"); 516 config()->setGroup("Category Colors");
513 QDictIterator<QColor> it(mCategoryColors); 517 QDictIterator<QColor> it(mCategoryColors);
514 while (it.current()) { 518 while (it.current()) {
515 config()->writeEntry(it.currentKey(),*(it.current())); 519 config()->writeEntry(it.currentKey(),*(it.current()));
516 ++it; 520 ++it;
517 } 521 }
518 KConfig fc (locateLocal("config","kopicalendarrc")); 522 KConfig fc (locateLocal("config","kopicalendarrc"));
519 fc.setGroup("CC"); 523 fc.setGroup("CC");
520 fc.writeEntry("NumberCalendars",mCalendars.count()); 524 fc.writeEntry("NumberCalendars",mCalendars.count());
521 int numCal = 1; 525 int numCal = 1;
522 int writeCal = 0; 526 int writeCal = 0;
523 while ( numCal < mNextAvailableCalendar ) { 527 while ( numCal < mNextAvailableCalendar ) {
524 KopiCalendarFile * kkf = mCalendars.first(); 528 KopiCalendarFile * kkf = mCalendars.first();
525 while ( kkf ) { 529 while ( kkf ) {
526 //qDebug("cal num %d %d ", kkf->mCalNumber, numCal); 530 //qDebug("cal num %d %d ", kkf->mCalNumber, numCal);
527 if ( kkf->mCalNumber == numCal ) { 531 if ( kkf->mCalNumber == numCal ) {
528 ++writeCal; 532 ++writeCal;
529 //qDebug("Write calendar %d %d ", numCal , writeCal); 533 //qDebug("Write calendar %d %d ", numCal , writeCal);
530 QString prefix = "Cal_" + QString::number( writeCal ); 534 QString prefix = "Cal_" + QString::number( writeCal );
531 fc.writeEntry( prefix+"_isStandard", kkf->isStandard ); 535 fc.writeEntry( prefix+"_isStandard", kkf->isStandard );
532 fc.writeEntry( prefix+"_isEnabled", kkf->isEnabled ); 536 fc.writeEntry( prefix+"_isEnabled", kkf->isEnabled );
533 fc.writeEntry( prefix+"_isAlarmEnabled", kkf->isAlarmEnabled ); 537 fc.writeEntry( prefix+"_isAlarmEnabled", kkf->isAlarmEnabled );
534 fc.writeEntry( prefix+"_isReadOnly", kkf->isReadOnly ); 538 fc.writeEntry( prefix+"_isReadOnly", kkf->isReadOnly );
535 fc.writeEntry( prefix+"_Name", kkf->mName); 539 fc.writeEntry( prefix+"_Name", kkf->mName);
536 fc.writeEntry( prefix+"_FileName", kkf->mFileName); 540 fc.writeEntry( prefix+"_FileName", kkf->mFileName);
537 fc.writeEntry( prefix+"_Color",kkf->mDefaultColor); 541 fc.writeEntry( prefix+"_Color",kkf->mDefaultColor);
538 } 542 }
539 kkf = mCalendars.next(); 543 kkf = mCalendars.next();
540 } 544 }
541 ++numCal; 545 ++numCal;
542 } 546 }
543 fc.sync(); 547 fc.sync();
544 KPimPrefs::usrWriteConfig(); 548 KPimPrefs::usrWriteConfig();
545} 549}
546 550
547void KOPrefs::setCategoryColor(QString cat,const QColor & color) 551void KOPrefs::setCategoryColor(QString cat,const QColor & color)
548{ 552{
549 mCategoryColors.replace(cat,new QColor(color)); 553 mCategoryColors.replace(cat,new QColor(color));
550} 554}
551 555
552QColor *KOPrefs::categoryColor(QString cat) 556QColor *KOPrefs::categoryColor(QString cat)
553{ 557{
554 QColor *color = 0; 558 QColor *color = 0;
555 559
556 if (!cat.isEmpty()) color = mCategoryColors[cat]; 560 if (!cat.isEmpty()) color = mCategoryColors[cat];
557 561
558 if (color) return color; 562 if (color) return color;
559 else return &mDefaultCategoryColor; 563 else return &mDefaultCategoryColor;
560} 564}
561 565
562void KOPrefs::setFullName(const QString &name) 566void KOPrefs::setFullName(const QString &name)
563{ 567{
564 mName = name; 568 mName = name;
565} 569}
566 570
567void KOPrefs::setEmail(const QString &email) 571void KOPrefs::setEmail(const QString &email)
568{ 572{
569 //qDebug(" KOPrefs::setEmai*********** %s",email.latin1() ); 573 //qDebug(" KOPrefs::setEmai*********** %s",email.latin1() );
570 mEmail = email; 574 mEmail = email;
571} 575}
572 576
573QString KOPrefs::fullName() 577QString KOPrefs::fullName()
574{ 578{
575 if (mEmailControlCenter) { 579 if (mEmailControlCenter) {
576 KEMailSettings settings; 580 KEMailSettings settings;
577 return settings.getSetting(KEMailSettings::RealName); 581 return settings.getSetting(KEMailSettings::RealName);
578 } else { 582 } else {
579 return mName; 583 return mName;
580 } 584 }
581} 585}
582 586
583QString KOPrefs::email() 587QString KOPrefs::email()
584{ 588{
585 if (mEmailControlCenter) { 589 if (mEmailControlCenter) {
586 KEMailSettings settings; 590 KEMailSettings settings;
587 return settings.getSetting(KEMailSettings::EmailAddress); 591 return settings.getSetting(KEMailSettings::EmailAddress);
588 } else { 592 } else {
589 return mEmail; 593 return mEmail;
590 } 594 }
591} 595}
592KConfig* KOPrefs::getConfig() 596KConfig* KOPrefs::getConfig()
593{ 597{
594 return config(); 598 return config();
595} 599}
diff --git a/korganizer/koprefs.h b/korganizer/koprefs.h
index 463fc33..5cc9bfa 100644
--- a/korganizer/koprefs.h
+++ b/korganizer/koprefs.h
@@ -1,355 +1,356 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 2000,2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2000,2001 Cornelius Schumacher <schumacher@kde.org>
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18 18
19 As a special exception, permission is given to link this program 19 As a special exception, permission is given to link this program
20 with any edition of Qt, and distribute the resulting executable, 20 with any edition of Qt, and distribute the resulting executable,
21 without including the source code for Qt in the source distribution. 21 without including the source code for Qt in the source distribution.
22*/ 22*/
23#ifndef KOPREFS_H 23#ifndef KOPREFS_H
24#define KOPREFS_H 24#define KOPREFS_H
25 25
26 26
27#include <libkdepim/kpimprefs.h> 27#include <libkdepim/kpimprefs.h>
28#include <qdict.h> 28#include <qdict.h>
29#include <qdir.h> 29#include <qdir.h>
30#include <qobject.h> 30#include <qobject.h>
31 31
32class KConfig; 32class KConfig;
33class QFont; 33class QFont;
34class QColor; 34class QColor;
35class QStringList; 35class QStringList;
36 36
37#define VIEW_WN_VIEW 1 37#define VIEW_WN_VIEW 1
38#define VIEW_NX_VIEW 2 38#define VIEW_NX_VIEW 2
39#define VIEW_J_VIEW 3 39#define VIEW_J_VIEW 3
40#define VIEW_A_VIEW 4 40#define VIEW_A_VIEW 4
41#define VIEW_ML_VIEW 5 41#define VIEW_ML_VIEW 5
42#define VIEW_M_VIEW 6 42#define VIEW_M_VIEW 6
43#define VIEW_L_VIEW 7 43#define VIEW_L_VIEW 7
44#define VIEW_T_VIEW 8 44#define VIEW_T_VIEW 8
45 45
46class KopiCalendarFile : public QObject 46class KopiCalendarFile : public QObject
47{ 47{
48 public: 48 public:
49 KopiCalendarFile( ) : QObject( ) 49 KopiCalendarFile( ) : QObject( )
50 { 50 {
51 isStandard = false; 51 isStandard = false;
52 isEnabled = true; 52 isEnabled = true;
53 isAlarmEnabled = true; 53 isAlarmEnabled = true;
54 isReadOnly = false; 54 isReadOnly = false;
55 mName = "Calendar"; 55 mName = "Calendar";
56 mFileName = QDir::homeDirPath() + "/icalfile.ics"; 56 mFileName = QDir::homeDirPath() + "/icalfile.ics";
57 mCalNumber = 0; 57 mCalNumber = 0;
58 mDefaultColor = Qt::red; 58 mDefaultColor = Qt::red;
59 mErrorOnLoad = false; 59 mErrorOnLoad = false;
60 } 60 }
61 bool isStandard; 61 bool isStandard;
62 bool isEnabled; 62 bool isEnabled;
63 bool isAlarmEnabled; 63 bool isAlarmEnabled;
64 bool isReadOnly; 64 bool isReadOnly;
65 bool mErrorOnLoad; 65 bool mErrorOnLoad;
66 QString mName; 66 QString mName;
67 QString mFileName; 67 QString mFileName;
68 int mCalNumber; 68 int mCalNumber;
69 QColor mDefaultColor; 69 QColor mDefaultColor;
70 QDateTime mLoadDt; 70 QDateTime mLoadDt;
71}; 71};
72class KOPrefs : public KPimPrefs 72class KOPrefs : public KPimPrefs
73{ 73{
74 public: 74 public:
75 enum { FormatVCalendar, FormatICalendar }; 75 enum { FormatVCalendar, FormatICalendar };
76 enum { MailClientKMail, MailClientSendmail }; 76 enum { MailClientKMail, MailClientSendmail };
77 enum { IMIPDummy, IMIPKMail }; 77 enum { IMIPDummy, IMIPKMail };
78 enum { IMIPOutbox, IMIPdirectsend }; 78 enum { IMIPOutbox, IMIPdirectsend };
79 enum { neverAuto, addressbookAuto, selectedAuto }; 79 enum { neverAuto, addressbookAuto, selectedAuto };
80 enum { standardDestination, askDestination }; 80 enum { standardDestination, askDestination };
81 81
82 virtual ~KOPrefs(); 82 virtual ~KOPrefs();
83 83
84 /** Get instance of KOPrefs. It is made sure that there is only one 84 /** Get instance of KOPrefs. It is made sure that there is only one
85 instance. */ 85 instance. */
86 static KOPrefs *instance(); 86 static KOPrefs *instance();
87 87
88 /** Set preferences to default values */ 88 /** Set preferences to default values */
89 void usrSetDefaults(); 89 void usrSetDefaults();
90 90
91 /** Read preferences from config file */ 91 /** Read preferences from config file */
92 void usrReadConfig(); 92 void usrReadConfig();
93 93
94 /** Write preferences to config file */ 94 /** Write preferences to config file */
95 void usrWriteConfig(); 95 void usrWriteConfig();
96 void setCategoryDefaults(); 96 void setCategoryDefaults();
97 void setAllDefaults(); 97 void setAllDefaults();
98 KopiCalendarFile * getNewCalendar(); 98 KopiCalendarFile * getNewCalendar();
99 KopiCalendarFile * getCalendar( int ); 99 KopiCalendarFile * getCalendar( int );
100 void deleteCalendar( int ); 100 void deleteCalendar( int );
101 QColor defaultColor( int ) const; 101 QColor defaultColor( int ) const;
102 QString calName( int ) const;
102 protected: 103 protected:
103 void setTimeZoneIdDefault(); 104 void setTimeZoneIdDefault();
104 105
105 /** Fill empty mail fields with default values. */ 106 /** Fill empty mail fields with default values. */
106 void fillMailDefaults(); 107 void fillMailDefaults();
107 108
108 private: 109 private:
109 /** Constructor disabled for public. Use instance() to create a KOPrefs 110 /** Constructor disabled for public. Use instance() to create a KOPrefs
110 object. */ 111 object. */
111 KOPrefs(); 112 KOPrefs();
112 113
113 static KOPrefs *mInstance; 114 static KOPrefs *mInstance;
114 QStringList getDefaultList(); 115 QStringList getDefaultList();
115 QStringList getLocationDefaultList(); 116 QStringList getLocationDefaultList();
116 public: 117 public:
117 // preferences data 118 // preferences data
118 KConfig* getConfig(); 119 KConfig* getConfig();
119 void setFullName(const QString &); 120 void setFullName(const QString &);
120 QString fullName(); 121 QString fullName();
121 void setEmail(const QString &); 122 void setEmail(const QString &);
122 QString email(); 123 QString email();
123 124
124 QString mAdditional; 125 QString mAdditional;
125 126
126 bool mEmailControlCenter; 127 bool mEmailControlCenter;
127 128
128 bool mBcc; 129 bool mBcc;
129 bool mAutoSave; 130 bool mAutoSave;
130 int mAutoSaveInterval; 131 int mAutoSaveInterval;
131 bool mConfirm; 132 bool mConfirm;
132 133
133 bool mEnableGroupScheduling; 134 bool mEnableGroupScheduling;
134 bool mEnableProjectView; 135 bool mEnableProjectView;
135 136
136 int mDefaultFormat; 137 int mDefaultFormat;
137 int mMailClient; 138 int mMailClient;
138 139
139 int mStartTime; 140 int mStartTime;
140 int mDefaultDuration; 141 int mDefaultDuration;
141 int mAlarmTime; 142 int mAlarmTime;
142 143
143 int mWorkingHoursStart; 144 int mWorkingHoursStart;
144 int mWorkingHoursEnd; 145 int mWorkingHoursEnd;
145 bool mExcludeHolidays; 146 bool mExcludeHolidays;
146 bool mExcludeSaturdays; 147 bool mExcludeSaturdays;
147 bool mMarcusBainsShowSeconds; 148 bool mMarcusBainsShowSeconds;
148 149
149 QFont mTimeBarFont; 150 QFont mTimeBarFont;
150 QFont mMonthViewFont; 151 QFont mMonthViewFont;
151 QFont mAgendaViewFont; 152 QFont mAgendaViewFont;
152 QFont mMarcusBainsFont; 153 QFont mMarcusBainsFont;
153 QFont mTimeLabelsFont; 154 QFont mTimeLabelsFont;
154 QFont mTodoViewFont; 155 QFont mTodoViewFont;
155 QFont mListViewFont; 156 QFont mListViewFont;
156 QFont mDateNavigatorFont; 157 QFont mDateNavigatorFont;
157 QFont mEditBoxFont; 158 QFont mEditBoxFont;
158 QFont mJornalViewFont; 159 QFont mJornalViewFont;
159 QFont mWhatsNextFont; 160 QFont mWhatsNextFont;
160 QFont mEventViewFont; 161 QFont mEventViewFont;
161 162
162 163
163 164
164 165
165 QColor mHolidayColor; 166 QColor mHolidayColor;
166 QColor mHighlightColor; 167 QColor mHighlightColor;
167 QColor mEventColor; 168 QColor mEventColor;
168 QColor mTodoDoneColor; 169 QColor mTodoDoneColor;
169 QColor mAgendaBgColor; 170 QColor mAgendaBgColor;
170 QColor mWorkingHoursColor; 171 QColor mWorkingHoursColor;
171 QColor mTodoDueTodayColor; 172 QColor mTodoDueTodayColor;
172 QColor mTodoOverdueColor; 173 QColor mTodoOverdueColor;
173 QColor mTodoRunColor; 174 QColor mTodoRunColor;
174 QColor mMonthViewEvenColor; 175 QColor mMonthViewEvenColor;
175 QColor mMonthViewOddColor; 176 QColor mMonthViewOddColor;
176 QColor mMonthViewHolidayColor; 177 QColor mMonthViewHolidayColor;
177 bool mMonthViewUsesDayColors; 178 bool mMonthViewUsesDayColors;
178 bool mMonthViewSatSunTog; 179 bool mMonthViewSatSunTog;
179 bool mMonthViewWeek; 180 bool mMonthViewWeek;
180 QColor mAppColor1; 181 QColor mAppColor1;
181 QColor mAppColor2; 182 QColor mAppColor2;
182 bool mUseAppColors; 183 bool mUseAppColors;
183 184
184 int mDayBegins; 185 int mDayBegins;
185 int mHourSize; 186 int mHourSize;
186 int mAllDaySize; 187 int mAllDaySize;
187 bool mShowFullMenu; 188 bool mShowFullMenu;
188 bool mDailyRecur; 189 bool mDailyRecur;
189 bool mWeeklyRecur; 190 bool mWeeklyRecur;
190 bool mMonthDailyRecur; 191 bool mMonthDailyRecur;
191 bool mMonthWeeklyRecur; 192 bool mMonthWeeklyRecur;
192 bool mMonthShowIcons; 193 bool mMonthShowIcons;
193 bool mMonthShowTimes; 194 bool mMonthShowTimes;
194 bool mMonthShowShort; 195 bool mMonthShowShort;
195 bool mEnableToolTips; 196 bool mEnableToolTips;
196 bool mEnableMonthScroll; 197 bool mEnableMonthScroll;
197 bool mFullViewMonth; 198 bool mFullViewMonth;
198 bool mMonthViewUsesCategoryColor; 199 bool mMonthViewUsesCategoryColor;
199 bool mFullViewTodo; 200 bool mFullViewTodo;
200 bool mShowCompletedTodo; 201 bool mShowCompletedTodo;
201 bool mMarcusBainsEnabled; 202 bool mMarcusBainsEnabled;
202 int mNextXDays; 203 int mNextXDays;
203 int mWhatsNextDays; 204 int mWhatsNextDays;
204 int mWhatsNextPrios; 205 int mWhatsNextPrios;
205 bool mEnableQuickTodo; 206 bool mEnableQuickTodo;
206 207
207 bool mCompactDialogs; 208 bool mCompactDialogs;
208 bool mVerticalScreen; 209 bool mVerticalScreen;
209 210
210 bool mShowIconNewTodo; 211 bool mShowIconNewTodo;
211 bool mShowIconNewEvent; 212 bool mShowIconNewEvent;
212 bool mShowIconSearch; 213 bool mShowIconSearch;
213 bool mShowIconList; 214 bool mShowIconList;
214 bool mShowIconDay1; 215 bool mShowIconDay1;
215 bool mShowIconDay5; 216 bool mShowIconDay5;
216 bool mShowIconDay6; 217 bool mShowIconDay6;
217 bool mShowIconDay7; 218 bool mShowIconDay7;
218 bool mShowIconMonth; 219 bool mShowIconMonth;
219 bool mShowIconTodoview; 220 bool mShowIconTodoview;
220 bool mShowIconBackFast; 221 bool mShowIconBackFast;
221 bool mShowIconBack; 222 bool mShowIconBack;
222 bool mShowIconToday; 223 bool mShowIconToday;
223 bool mShowIconForward; 224 bool mShowIconForward;
224 bool mShowIconForwardFast; 225 bool mShowIconForwardFast;
225 bool mShowIconWhatsThis; 226 bool mShowIconWhatsThis;
226 bool mShowIconWeekNum; 227 bool mShowIconWeekNum;
227 bool mShowIconNextDays; 228 bool mShowIconNextDays;
228 bool mShowIconNext; 229 bool mShowIconNext;
229 bool mShowIconJournal; 230 bool mShowIconJournal;
230 bool mShowIconFilter; 231 bool mShowIconFilter;
231 bool mShowIconOnetoolbar; 232 bool mShowIconOnetoolbar;
232 bool mShowIconNavigator; 233 bool mShowIconNavigator;
233 bool mShowIconAllday; 234 bool mShowIconAllday;
234 bool mShowIconFilterview; 235 bool mShowIconFilterview;
235 bool mShowIconToggleFull; 236 bool mShowIconToggleFull;
236 237
237 bool mShowIconStretch; 238 bool mShowIconStretch;
238 239
239 bool mToolBarHor; 240 bool mToolBarHor;
240 bool mToolBarUp; 241 bool mToolBarUp;
241 bool mToolBarHorV; 242 bool mToolBarHorV;
242 bool mToolBarUpV; 243 bool mToolBarUpV;
243 bool mToolBarHorN; 244 bool mToolBarHorN;
244 bool mToolBarUpN; 245 bool mToolBarUpN;
245 bool mToolBarHorF; 246 bool mToolBarHorF;
246 bool mToolBarUpF; 247 bool mToolBarUpF;
247 bool mToolBarMiniIcons; 248 bool mToolBarMiniIcons;
248 249
249 bool mAskForQuit; 250 bool mAskForQuit;
250 bool mUsePassWd; 251 bool mUsePassWd;
251 bool mShowSyncEvents; 252 bool mShowSyncEvents;
252 bool mShowTodoInAgenda; 253 bool mShowTodoInAgenda;
253 bool mShowCompletedTodoInAgenda; 254 bool mShowCompletedTodoInAgenda;
254 bool mShowTimeInAgenda; 255 bool mShowTimeInAgenda;
255 bool mHideNonStartedTodos; 256 bool mHideNonStartedTodos;
256 257
257 bool mBlockPopupMenu; 258 bool mBlockPopupMenu;
258 259
259 int mLastSyncTime; 260 int mLastSyncTime;
260 void setCategoryColor(QString cat,const QColor & color); 261 void setCategoryColor(QString cat,const QColor & color);
261 QColor *categoryColor(QString cat); 262 QColor *categoryColor(QString cat);
262 263
263 QString mArchiveFile; 264 QString mArchiveFile;
264 QString mHtmlExportFile; 265 QString mHtmlExportFile;
265 bool mHtmlWithSave; 266 bool mHtmlWithSave;
266 267
267 QStringList mSelectedPlugins; 268 QStringList mSelectedPlugins;
268 269
269 QString mLastImportFile; 270 QString mLastImportFile;
270 QString mLastVcalFile; 271 QString mLastVcalFile;
271 QString mLastSaveFile; 272 QString mLastSaveFile;
272 QString mLastLoadFile; 273 QString mLastLoadFile;
273 274
274 275
275 QString mDefaultAlarmFile; 276 QString mDefaultAlarmFile;
276 int mIMIPScheduler; 277 int mIMIPScheduler;
277 int mIMIPSend; 278 int mIMIPSend;
278 QStringList mAdditionalMails; 279 QStringList mAdditionalMails;
279 int mIMIPAutoRefresh; 280 int mIMIPAutoRefresh;
280 int mIMIPAutoInsertReply; 281 int mIMIPAutoInsertReply;
281 int mIMIPAutoInsertRequest; 282 int mIMIPAutoInsertRequest;
282 int mIMIPAutoFreeBusy; 283 int mIMIPAutoFreeBusy;
283 int mIMIPAutoFreeBusyReply; 284 int mIMIPAutoFreeBusyReply;
284 285
285 QStringList mTodoTemplates; 286 QStringList mTodoTemplates;
286 QStringList mEventTemplates; 287 QStringList mEventTemplates;
287 288
288 int mDestination; 289 int mDestination;
289 290
290 291
291 bool mEditOnDoubleClick; 292 bool mEditOnDoubleClick;
292 bool mViewChangeHoldFullscreen; 293 bool mViewChangeHoldFullscreen;
293 bool mViewChangeHoldNonFullscreen; 294 bool mViewChangeHoldNonFullscreen;
294 bool mCenterOnCurrentTime; 295 bool mCenterOnCurrentTime;
295 bool mSetTimeToDayStartAt; 296 bool mSetTimeToDayStartAt;
296 bool mHighlightCurrentDay; 297 bool mHighlightCurrentDay;
297 bool mUseHighlightLightColor; 298 bool mUseHighlightLightColor;
298 bool mListViewMonthTimespan; 299 bool mListViewMonthTimespan;
299 bool mWNViewShowsParents; 300 bool mWNViewShowsParents;
300 bool mWNViewShowsPast; 301 bool mWNViewShowsPast;
301 bool mWNViewShowLocation; 302 bool mWNViewShowLocation;
302 bool mTodoViewShowsPercentage; 303 bool mTodoViewShowsPercentage;
303 bool mTodoViewUsesCatColors; 304 bool mTodoViewUsesCatColors;
304 bool mMonthViewUsesBigFont; 305 bool mMonthViewUsesBigFont;
305 bool mTodoViewUsesSmallFont; 306 bool mTodoViewUsesSmallFont;
306 bool mTodoViewUsesForegroundColor; 307 bool mTodoViewUsesForegroundColor;
307 bool mMonthViewUsesForegroundColor; 308 bool mMonthViewUsesForegroundColor;
308 309
309 bool mHightlightDateTimeEdit; 310 bool mHightlightDateTimeEdit;
310 bool mShortDateInViewer; 311 bool mShortDateInViewer;
311 312
312 bool mShowDateNavigator; 313 bool mShowDateNavigator;
313 314
314 QStringList mLocationDefaults; 315 QStringList mLocationDefaults;
315 QStringList mEventSummaryUser; 316 QStringList mEventSummaryUser;
316 QStringList mTodoSummaryUser; 317 QStringList mTodoSummaryUser;
317 318
318 bool mUseInternalAlarmNotification; 319 bool mUseInternalAlarmNotification;
319 int mAlarmPlayBeeps; 320 int mAlarmPlayBeeps;
320 int mAlarmSuspendTime; 321 int mAlarmSuspendTime;
321 int mAlarmSuspendCount; 322 int mAlarmSuspendCount;
322 int mAlarmBeepInterval; 323 int mAlarmBeepInterval;
323 int mOldLanguage; 324 int mOldLanguage;
324 int mOldLoadedLanguage; 325 int mOldLoadedLanguage;
325 326
326 327
327 QString mActiveSyncPort; 328 QString mActiveSyncPort;
328 QString mActiveSyncIP; 329 QString mActiveSyncIP;
329 330
330 // settings for eventviewer 331 // settings for eventviewer
331 bool mEVshowDetails; 332 bool mEVshowDetails;
332 bool mEVshowCreated; 333 bool mEVshowCreated;
333 bool mEVshowChanged; 334 bool mEVshowChanged;
334 bool mWTshowDetails; 335 bool mWTshowDetails;
335 bool mWTshowCreated; 336 bool mWTshowCreated;
336 bool mWTshowChanged; 337 bool mWTshowChanged;
337 338
338 int mCurrentDisplayedView; 339 int mCurrentDisplayedView;
339 QPtrList<KopiCalendarFile> mCalendars; 340 QPtrList<KopiCalendarFile> mCalendars;
340 int mNextAvailableCalendar; 341 int mNextAvailableCalendar;
341 342
342 private: 343 private:
343 QDict<QColor> mCategoryColors; 344 QDict<QColor> mCategoryColors;
344 QArray<KopiCalendarFile*> mDefCalColors; 345 QArray<KopiCalendarFile*> mDefCalColors;
345 QColor mDefaultCategoryColor; 346 QColor mDefaultCategoryColor;
346 347
347 QFont mDefaultTimeBarFont; 348 QFont mDefaultTimeBarFont;
348 QFont mDefaultViewFont; 349 QFont mDefaultViewFont;
349 QFont mDefaultMonthViewFont; 350 QFont mDefaultMonthViewFont;
350 351
351 QString mName; 352 QString mName;
352 QString mEmail; 353 QString mEmail;
353}; 354};
354 355
355#endif 356#endif