summaryrefslogtreecommitdiffabout
path: root/korganizer
Unidiff
Diffstat (limited to 'korganizer') (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/calendarview.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp
index f8d752a..2321087 100644
--- a/korganizer/calendarview.cpp
+++ b/korganizer/calendarview.cpp
@@ -1538,1537 +1538,1538 @@ bool CalendarView::importQtopia( const QString &categories,
1538 1538
1539 if ( loadOk ) { 1539 if ( loadOk ) {
1540 getEventViewerDialog()->setSyncMode( true ); 1540 getEventViewerDialog()->setSyncMode( true );
1541 syncOK = synchronizeCalendar( mCalendar, calendar, mSyncManager->mSyncAlgoPrefs ); 1541 syncOK = synchronizeCalendar( mCalendar, calendar, mSyncManager->mSyncAlgoPrefs );
1542 getEventViewerDialog()->setSyncMode( false ); 1542 getEventViewerDialog()->setSyncMode( false );
1543 qApp->processEvents(); 1543 qApp->processEvents();
1544 if ( syncOK ) { 1544 if ( syncOK ) {
1545 if ( mSyncManager->mWriteBackFile ) 1545 if ( mSyncManager->mWriteBackFile )
1546 { 1546 {
1547 // write back XML file 1547 // write back XML file
1548 1548
1549 } 1549 }
1550 setModified( true ); 1550 setModified( true );
1551 } 1551 }
1552 } else { 1552 } else {
1553 QString question = i18n("Sorry, the file loading\ncommand failed!\n\nNothing synced!\n") ; 1553 QString question = i18n("Sorry, the file loading\ncommand failed!\n\nNothing synced!\n") ;
1554 QMessageBox::information( 0, i18n("KO/Pi Sync - ERROR"), 1554 QMessageBox::information( 0, i18n("KO/Pi Sync - ERROR"),
1555 question, i18n("Ok")) ; 1555 question, i18n("Ok")) ;
1556 } 1556 }
1557 delete calendar; 1557 delete calendar;
1558 updateView(); 1558 updateView();
1559 return syncOK; 1559 return syncOK;
1560 1560
1561 1561
1562#endif 1562#endif
1563 1563
1564} 1564}
1565 1565
1566void CalendarView::setSyncEventsReadOnly() 1566void CalendarView::setSyncEventsReadOnly()
1567{ 1567{
1568 Event * ev; 1568 Event * ev;
1569 QPtrList<Event> eL = mCalendar->rawEvents(); 1569 QPtrList<Event> eL = mCalendar->rawEvents();
1570 ev = eL.first(); 1570 ev = eL.first();
1571 while ( ev ) { 1571 while ( ev ) {
1572 if ( ev->uid().left(15) == QString("last-syncEvent-") ) 1572 if ( ev->uid().left(15) == QString("last-syncEvent-") )
1573 ev->setReadOnly( true ); 1573 ev->setReadOnly( true );
1574 ev = eL.next(); 1574 ev = eL.next();
1575 } 1575 }
1576} 1576}
1577bool CalendarView::openCalendar(QString filename, bool merge) 1577bool CalendarView::openCalendar(QString filename, bool merge)
1578{ 1578{
1579 1579
1580 if (filename.isEmpty()) { 1580 if (filename.isEmpty()) {
1581 return false; 1581 return false;
1582 } 1582 }
1583 1583
1584 if (!QFile::exists(filename)) { 1584 if (!QFile::exists(filename)) {
1585 KMessageBox::error(this,i18n("File does not exist:\n '%1'.").arg(filename)); 1585 KMessageBox::error(this,i18n("File does not exist:\n '%1'.").arg(filename));
1586 return false; 1586 return false;
1587 } 1587 }
1588 1588
1589 globalFlagBlockAgenda = 1; 1589 globalFlagBlockAgenda = 1;
1590 if (!merge) mCalendar->close(); 1590 if (!merge) mCalendar->close();
1591 1591
1592 mStorage->setFileName( filename ); 1592 mStorage->setFileName( filename );
1593 1593
1594 if ( mStorage->load() ) { 1594 if ( mStorage->load() ) {
1595 if ( merge ) ;//setModified( true ); 1595 if ( merge ) ;//setModified( true );
1596 else { 1596 else {
1597 //setModified( true ); 1597 //setModified( true );
1598 mViewManager->setDocumentId( filename ); 1598 mViewManager->setDocumentId( filename );
1599 mDialogManager->setDocumentId( filename ); 1599 mDialogManager->setDocumentId( filename );
1600 mTodoList->setDocumentId( filename ); 1600 mTodoList->setDocumentId( filename );
1601 } 1601 }
1602 globalFlagBlockAgenda = 2; 1602 globalFlagBlockAgenda = 2;
1603 // if ( getLastSyncEvent() ) 1603 // if ( getLastSyncEvent() )
1604 // getLastSyncEvent()->setReadOnly( true ); 1604 // getLastSyncEvent()->setReadOnly( true );
1605 mCalendar->reInitAlarmSettings(); 1605 mCalendar->reInitAlarmSettings();
1606 setSyncEventsReadOnly(); 1606 setSyncEventsReadOnly();
1607 updateUnmanagedViews(); 1607 updateUnmanagedViews();
1608 updateView(); 1608 updateView();
1609 if ( filename != MainWindow::defaultFileName() ) { 1609 if ( filename != MainWindow::defaultFileName() ) {
1610 saveCalendar( MainWindow::defaultFileName() ); 1610 saveCalendar( MainWindow::defaultFileName() );
1611 } else { 1611 } else {
1612 QFileInfo finf ( MainWindow::defaultFileName()); 1612 QFileInfo finf ( MainWindow::defaultFileName());
1613 if ( finf.exists() ) { 1613 if ( finf.exists() ) {
1614 setLoadedFileVersion( finf.lastModified () ); 1614 setLoadedFileVersion( finf.lastModified () );
1615 } 1615 }
1616 } 1616 }
1617 return true; 1617 return true;
1618 } else { 1618 } else {
1619 // while failing to load, the calendar object could 1619 // while failing to load, the calendar object could
1620 // have become partially populated. Clear it out. 1620 // have become partially populated. Clear it out.
1621 if ( !merge ) { 1621 if ( !merge ) {
1622 mCalendar->close(); 1622 mCalendar->close();
1623 mViewManager->setDocumentId( filename ); 1623 mViewManager->setDocumentId( filename );
1624 mDialogManager->setDocumentId( filename ); 1624 mDialogManager->setDocumentId( filename );
1625 mTodoList->setDocumentId( filename ); 1625 mTodoList->setDocumentId( filename );
1626 } 1626 }
1627 1627
1628 //KMessageBox::error(this,i18n("Couldn't load calendar\n '%1'.").arg(filename)); 1628 //KMessageBox::error(this,i18n("Couldn't load calendar\n '%1'.").arg(filename));
1629 1629
1630 QTimer::singleShot ( 1, this, SLOT ( showOpenError() ) ); 1630 QTimer::singleShot ( 1, this, SLOT ( showOpenError() ) );
1631 globalFlagBlockAgenda = 2; 1631 globalFlagBlockAgenda = 2;
1632 mCalendar->reInitAlarmSettings(); 1632 mCalendar->reInitAlarmSettings();
1633 setSyncEventsReadOnly(); 1633 setSyncEventsReadOnly();
1634 updateUnmanagedViews(); 1634 updateUnmanagedViews();
1635 updateView(); 1635 updateView();
1636 } 1636 }
1637 return false; 1637 return false;
1638} 1638}
1639void CalendarView::showOpenError() 1639void CalendarView::showOpenError()
1640{ 1640{
1641 KMessageBox::error(this,i18n("Couldn't load calendar\n.")); 1641 KMessageBox::error(this,i18n("Couldn't load calendar\n."));
1642} 1642}
1643void CalendarView::setLoadedFileVersion(QDateTime dt) 1643void CalendarView::setLoadedFileVersion(QDateTime dt)
1644{ 1644{
1645 loadedFileVersion = dt; 1645 loadedFileVersion = dt;
1646} 1646}
1647bool CalendarView::checkFileChanged(QString fn) 1647bool CalendarView::checkFileChanged(QString fn)
1648{ 1648{
1649 QFileInfo finf ( fn ); 1649 QFileInfo finf ( fn );
1650 if ( !finf.exists() ) 1650 if ( !finf.exists() )
1651 return true; 1651 return true;
1652 QDateTime dt = finf.lastModified (); 1652 QDateTime dt = finf.lastModified ();
1653 if ( dt <= loadedFileVersion ) 1653 if ( dt <= loadedFileVersion )
1654 return false; 1654 return false;
1655 return true; 1655 return true;
1656 1656
1657} 1657}
1658void CalendarView::watchSavedFile() 1658void CalendarView::watchSavedFile()
1659{ 1659{
1660 QFileInfo finf ( MainWindow::defaultFileName()); 1660 QFileInfo finf ( MainWindow::defaultFileName());
1661 if ( !finf.exists() ) 1661 if ( !finf.exists() )
1662 return; 1662 return;
1663 QDateTime dt = finf.lastModified (); 1663 QDateTime dt = finf.lastModified ();
1664 if ( dt < loadedFileVersion ) { 1664 if ( dt < loadedFileVersion ) {
1665 //qDebug("watch %s %s ", dt.toString().latin1(), loadedFileVersion.toString().latin1()); 1665 //qDebug("watch %s %s ", dt.toString().latin1(), loadedFileVersion.toString().latin1());
1666 QTimer::singleShot( 1000 , this, SLOT ( watchSavedFile() ) ); 1666 QTimer::singleShot( 1000 , this, SLOT ( watchSavedFile() ) );
1667 return; 1667 return;
1668 } 1668 }
1669 loadedFileVersion = dt; 1669 loadedFileVersion = dt;
1670} 1670}
1671 1671
1672bool CalendarView::checkFileVersion(QString fn) 1672bool CalendarView::checkFileVersion(QString fn)
1673{ 1673{
1674 QFileInfo finf ( fn ); 1674 QFileInfo finf ( fn );
1675 if ( !finf.exists() ) 1675 if ( !finf.exists() )
1676 return true; 1676 return true;
1677 QDateTime dt = finf.lastModified (); 1677 QDateTime dt = finf.lastModified ();
1678 //qDebug("loaded file version %s",loadedFileVersion.toString().latin1()); 1678 //qDebug("loaded file version %s",loadedFileVersion.toString().latin1());
1679 //qDebug("file on disk version %s",dt.toString().latin1()); 1679 //qDebug("file on disk version %s",dt.toString().latin1());
1680 if ( dt <= loadedFileVersion ) 1680 if ( dt <= loadedFileVersion )
1681 return true; 1681 return true;
1682 int km = KMessageBox::warningYesNoCancel(this, i18n("\nThe file on disk has changed!\nFile size: %1 bytes.\nLast modified: %2\nDo you want to:\n\n - Save and overwrite file?\n - Sync with file, then save?\n - Cancel without saving? \n").arg( QString::number( finf.size())).arg( KGlobal::locale()->formatDateTime(finf.lastModified (), true, true)) , 1682 int km = KMessageBox::warningYesNoCancel(this, i18n("\nThe file on disk has changed!\nFile size: %1 bytes.\nLast modified: %2\nDo you want to:\n\n - Save and overwrite file?\n - Sync with file, then save?\n - Cancel without saving? \n").arg( QString::number( finf.size())).arg( KGlobal::locale()->formatDateTime(finf.lastModified (), true, true)) ,
1683 i18n("KO/Pi Warning"),i18n("Overwrite"), 1683 i18n("KO/Pi Warning"),i18n("Overwrite"),
1684 i18n("Sync+save")); 1684 i18n("Sync+save"));
1685 1685
1686 if ( km == KMessageBox::Cancel ) 1686 if ( km == KMessageBox::Cancel )
1687 return false; 1687 return false;
1688 if ( km == KMessageBox::Yes ) 1688 if ( km == KMessageBox::Yes )
1689 return true; 1689 return true;
1690 1690
1691 setSyncDevice("deleteaftersync" ); 1691 setSyncDevice("deleteaftersync" );
1692 mSyncManager->mAskForPreferences = true; 1692 mSyncManager->mAskForPreferences = true;
1693 mSyncManager->mSyncAlgoPrefs = 3; 1693 mSyncManager->mSyncAlgoPrefs = 3;
1694 mSyncManager->mWriteBackFile = false; 1694 mSyncManager->mWriteBackFile = false;
1695 mSyncManager->mWriteBackExistingOnly = false; 1695 mSyncManager->mWriteBackExistingOnly = false;
1696 mSyncManager->mShowSyncSummary = false; 1696 mSyncManager->mShowSyncSummary = false;
1697 syncCalendar( fn, 3 ); 1697 syncCalendar( fn, 3 );
1698 Event * e = getLastSyncEvent(); 1698 Event * e = getLastSyncEvent();
1699 mCalendar->deleteEvent ( e ); 1699 mCalendar->deleteEvent ( e );
1700 updateView(); 1700 updateView();
1701 return true; 1701 return true;
1702} 1702}
1703 1703
1704bool CalendarView::saveCalendar( QString filename ) 1704bool CalendarView::saveCalendar( QString filename )
1705{ 1705{
1706 1706
1707 // Store back all unsaved data into calendar object 1707 // Store back all unsaved data into calendar object
1708 // qDebug("file %s %d ", filename.latin1() , mViewManager->currentView() ); 1708 // qDebug("file %s %d ", filename.latin1() , mViewManager->currentView() );
1709 if ( mViewManager->currentView() ) 1709 if ( mViewManager->currentView() )
1710 mViewManager->currentView()->flushView(); 1710 mViewManager->currentView()->flushView();
1711 1711
1712 1712
1713 QDateTime lfv = QDateTime::currentDateTime().addSecs( -2); 1713 QDateTime lfv = QDateTime::currentDateTime().addSecs( -2);
1714 mStorage->setSaveFormat( new ICalFormat() ); 1714 mStorage->setSaveFormat( new ICalFormat() );
1715 mStorage->setFileName( filename ); 1715 mStorage->setFileName( filename );
1716 bool success; 1716 bool success;
1717 success = mStorage->save(); 1717 success = mStorage->save();
1718 if ( !success ) { 1718 if ( !success ) {
1719 return false; 1719 return false;
1720 } 1720 }
1721 if ( filename == MainWindow::defaultFileName() ) { 1721 if ( filename == MainWindow::defaultFileName() ) {
1722 setLoadedFileVersion( lfv ); 1722 setLoadedFileVersion( lfv );
1723 watchSavedFile(); 1723 watchSavedFile();
1724 } 1724 }
1725 return true; 1725 return true;
1726} 1726}
1727 1727
1728void CalendarView::closeCalendar() 1728void CalendarView::closeCalendar()
1729{ 1729{
1730 1730
1731 // child windows no longer valid 1731 // child windows no longer valid
1732 emit closingDown(); 1732 emit closingDown();
1733 1733
1734 mCalendar->close(); 1734 mCalendar->close();
1735 setModified(false); 1735 setModified(false);
1736 updateView(); 1736 updateView();
1737} 1737}
1738 1738
1739void CalendarView::archiveCalendar() 1739void CalendarView::archiveCalendar()
1740{ 1740{
1741 mDialogManager->showArchiveDialog(); 1741 mDialogManager->showArchiveDialog();
1742} 1742}
1743 1743
1744 1744
1745void CalendarView::readSettings() 1745void CalendarView::readSettings()
1746{ 1746{
1747 1747
1748 1748
1749 // mViewManager->showAgendaView(); 1749 // mViewManager->showAgendaView();
1750 QString str; 1750 QString str;
1751 //qDebug("CalendarView::readSettings() "); 1751 //qDebug("CalendarView::readSettings() ");
1752 // read settings from the KConfig, supplying reasonable 1752 // read settings from the KConfig, supplying reasonable
1753 // defaults where none are to be found 1753 // defaults where none are to be found
1754 KConfig *config = KOGlobals::config(); 1754 KConfig *config = KOGlobals::config();
1755#ifndef KORG_NOSPLITTER 1755#ifndef KORG_NOSPLITTER
1756 config->setGroup("KOrganizer Geometry"); 1756 config->setGroup("KOrganizer Geometry");
1757 1757
1758 QValueList<int> sizes = config->readIntListEntry("Separator1"); 1758 QValueList<int> sizes = config->readIntListEntry("Separator1");
1759 if (sizes.count() != 2) { 1759 if (sizes.count() != 2) {
1760 sizes << mDateNavigator->minimumSizeHint().width(); 1760 sizes << mDateNavigator->minimumSizeHint().width();
1761 sizes << 300; 1761 sizes << 300;
1762 } 1762 }
1763 mPanner->setSizes(sizes); 1763 mPanner->setSizes(sizes);
1764 1764
1765 sizes = config->readIntListEntry("Separator2"); 1765 sizes = config->readIntListEntry("Separator2");
1766 if ( ( mResourceView && sizes.count() == 4 ) || 1766 if ( ( mResourceView && sizes.count() == 4 ) ||
1767 ( !mResourceView && sizes.count() == 3 ) ) { 1767 ( !mResourceView && sizes.count() == 3 ) ) {
1768 mLeftSplitter->setSizes(sizes); 1768 mLeftSplitter->setSizes(sizes);
1769 } 1769 }
1770#endif 1770#endif
1771 globalFlagBlockAgenda = 1; 1771 globalFlagBlockAgenda = 1;
1772 mViewManager->showAgendaView(); 1772 mViewManager->showAgendaView();
1773 //mViewManager->readSettings( config ); 1773 //mViewManager->readSettings( config );
1774 mTodoList->restoreLayout(config,QString("Todo Layout")); 1774 mTodoList->restoreLayout(config,QString("Todo Layout"));
1775 readFilterSettings(config); 1775 readFilterSettings(config);
1776 config->setGroup( "Views" ); 1776 config->setGroup( "Views" );
1777 int dateCount = config->readNumEntry( "ShownDatesCount", 7 ); 1777 int dateCount = config->readNumEntry( "ShownDatesCount", 7 );
1778 if ( dateCount == 5 ) mNavigator->selectWorkWeek(); 1778 if ( dateCount == 5 ) mNavigator->selectWorkWeek();
1779 else if ( dateCount == 7 ) mNavigator->selectWeek(); 1779 else if ( dateCount == 7 ) mNavigator->selectWeek();
1780 else mNavigator->selectDates( dateCount ); 1780 else mNavigator->selectDates( dateCount );
1781 // mViewManager->readSettings( config ); 1781 // mViewManager->readSettings( config );
1782 updateConfig(); 1782 updateConfig();
1783 globalFlagBlockAgenda = 2; 1783 globalFlagBlockAgenda = 2;
1784 mViewManager->readSettings( config ); 1784 mViewManager->readSettings( config );
1785#ifdef DESKTOP_VERSION 1785#ifdef DESKTOP_VERSION
1786 config->setGroup("WidgetLayout"); 1786 config->setGroup("WidgetLayout");
1787 QStringList list; 1787 QStringList list;
1788 list = config->readListEntry("MainLayout"); 1788 list = config->readListEntry("MainLayout");
1789 int x,y,w,h; 1789 int x,y,w,h;
1790 if ( ! list.isEmpty() ) { 1790 if ( ! list.isEmpty() ) {
1791 x = list[0].toInt(); 1791 x = list[0].toInt();
1792 y = list[1].toInt(); 1792 y = list[1].toInt();
1793 w = list[2].toInt(); 1793 w = list[2].toInt();
1794 h = list[3].toInt(); 1794 h = list[3].toInt();
1795 topLevelWidget()->setGeometry(x,y,w,h); 1795 topLevelWidget()->setGeometry(x,y,w,h);
1796 1796
1797 } else { 1797 } else {
1798 topLevelWidget()->setGeometry( 40 ,40 , 640, 440); 1798 topLevelWidget()->setGeometry( 40 ,40 , 640, 440);
1799 } 1799 }
1800 list = config->readListEntry("EditEventLayout"); 1800 list = config->readListEntry("EditEventLayout");
1801 if ( ! list.isEmpty() ) { 1801 if ( ! list.isEmpty() ) {
1802 x = list[0].toInt(); 1802 x = list[0].toInt();
1803 y = list[1].toInt(); 1803 y = list[1].toInt();
1804 w = list[2].toInt(); 1804 w = list[2].toInt();
1805 h = list[3].toInt(); 1805 h = list[3].toInt();
1806 mEventEditor->setGeometry(x,y,w,h); 1806 mEventEditor->setGeometry(x,y,w,h);
1807 1807
1808 } 1808 }
1809 list = config->readListEntry("EditTodoLayout"); 1809 list = config->readListEntry("EditTodoLayout");
1810 if ( ! list.isEmpty() ) { 1810 if ( ! list.isEmpty() ) {
1811 x = list[0].toInt(); 1811 x = list[0].toInt();
1812 y = list[1].toInt(); 1812 y = list[1].toInt();
1813 w = list[2].toInt(); 1813 w = list[2].toInt();
1814 h = list[3].toInt(); 1814 h = list[3].toInt();
1815 mTodoEditor->setGeometry(x,y,w,h); 1815 mTodoEditor->setGeometry(x,y,w,h);
1816 1816
1817 } 1817 }
1818 list = config->readListEntry("ViewerLayout"); 1818 list = config->readListEntry("ViewerLayout");
1819 if ( ! list.isEmpty() ) { 1819 if ( ! list.isEmpty() ) {
1820 x = list[0].toInt(); 1820 x = list[0].toInt();
1821 y = list[1].toInt(); 1821 y = list[1].toInt();
1822 w = list[2].toInt(); 1822 w = list[2].toInt();
1823 h = list[3].toInt(); 1823 h = list[3].toInt();
1824 getEventViewerDialog()->setGeometry(x,y,w,h); 1824 getEventViewerDialog()->setGeometry(x,y,w,h);
1825 } 1825 }
1826#endif 1826#endif
1827 1827
1828} 1828}
1829 1829
1830 1830
1831void CalendarView::writeSettings() 1831void CalendarView::writeSettings()
1832{ 1832{
1833 // kdDebug() << "CalendarView::writeSettings" << endl; 1833 // kdDebug() << "CalendarView::writeSettings" << endl;
1834 1834
1835 KConfig *config = KOGlobals::config(); 1835 KConfig *config = KOGlobals::config();
1836 1836
1837#ifndef KORG_NOSPLITTER 1837#ifndef KORG_NOSPLITTER
1838 config->setGroup("KOrganizer Geometry"); 1838 config->setGroup("KOrganizer Geometry");
1839 1839
1840 QValueList<int> list = mPanner->sizes(); 1840 QValueList<int> list = mPanner->sizes();
1841 config->writeEntry("Separator1",list); 1841 config->writeEntry("Separator1",list);
1842 1842
1843 list = mLeftSplitter->sizes(); 1843 list = mLeftSplitter->sizes();
1844 config->writeEntry("Separator2",list); 1844 config->writeEntry("Separator2",list);
1845#endif 1845#endif
1846 1846
1847 mViewManager->writeSettings( config ); 1847 mViewManager->writeSettings( config );
1848 mTodoList->saveLayout(config,QString("Todo Layout")); 1848 mTodoList->saveLayout(config,QString("Todo Layout"));
1849 mDialogManager->writeSettings( config ); 1849 mDialogManager->writeSettings( config );
1850 //KOPrefs::instance()->usrWriteConfig(); 1850 //KOPrefs::instance()->usrWriteConfig();
1851 KOPrefs::instance()->writeConfig(); 1851 KOPrefs::instance()->writeConfig();
1852 1852
1853 writeFilterSettings(config); 1853 writeFilterSettings(config);
1854 1854
1855 config->setGroup( "Views" ); 1855 config->setGroup( "Views" );
1856 config->writeEntry( "ShownDatesCount", mNavigator->selectedDates().count() ); 1856 config->writeEntry( "ShownDatesCount", mNavigator->selectedDates().count() );
1857 1857
1858#ifdef DESKTOP_VERSION 1858#ifdef DESKTOP_VERSION
1859 config->setGroup("WidgetLayout"); 1859 config->setGroup("WidgetLayout");
1860 QStringList list ;//= config->readListEntry("MainLayout"); 1860 QStringList list ;//= config->readListEntry("MainLayout");
1861 int x,y,w,h; 1861 int x,y,w,h;
1862 QWidget* wid; 1862 QWidget* wid;
1863 wid = topLevelWidget(); 1863 wid = topLevelWidget();
1864 x = wid->geometry().x(); 1864 x = wid->geometry().x();
1865 y = wid->geometry().y(); 1865 y = wid->geometry().y();
1866 w = wid->width(); 1866 w = wid->width();
1867 h = wid->height(); 1867 h = wid->height();
1868 list.clear(); 1868 list.clear();
1869 list << QString::number( x ); 1869 list << QString::number( x );
1870 list << QString::number( y ); 1870 list << QString::number( y );
1871 list << QString::number( w ); 1871 list << QString::number( w );
1872 list << QString::number( h ); 1872 list << QString::number( h );
1873 config->writeEntry("MainLayout",list ); 1873 config->writeEntry("MainLayout",list );
1874 1874
1875 wid = mEventEditor; 1875 wid = mEventEditor;
1876 x = wid->geometry().x(); 1876 x = wid->geometry().x();
1877 y = wid->geometry().y(); 1877 y = wid->geometry().y();
1878 w = wid->width(); 1878 w = wid->width();
1879 h = wid->height(); 1879 h = wid->height();
1880 list.clear(); 1880 list.clear();
1881 list << QString::number( x ); 1881 list << QString::number( x );
1882 list << QString::number( y ); 1882 list << QString::number( y );
1883 list << QString::number( w ); 1883 list << QString::number( w );
1884 list << QString::number( h ); 1884 list << QString::number( h );
1885 config->writeEntry("EditEventLayout",list ); 1885 config->writeEntry("EditEventLayout",list );
1886 1886
1887 wid = mTodoEditor; 1887 wid = mTodoEditor;
1888 x = wid->geometry().x(); 1888 x = wid->geometry().x();
1889 y = wid->geometry().y(); 1889 y = wid->geometry().y();
1890 w = wid->width(); 1890 w = wid->width();
1891 h = wid->height(); 1891 h = wid->height();
1892 list.clear(); 1892 list.clear();
1893 list << QString::number( x ); 1893 list << QString::number( x );
1894 list << QString::number( y ); 1894 list << QString::number( y );
1895 list << QString::number( w ); 1895 list << QString::number( w );
1896 list << QString::number( h ); 1896 list << QString::number( h );
1897 config->writeEntry("EditTodoLayout",list ); 1897 config->writeEntry("EditTodoLayout",list );
1898 wid = getEventViewerDialog(); 1898 wid = getEventViewerDialog();
1899 x = wid->geometry().x(); 1899 x = wid->geometry().x();
1900 y = wid->geometry().y(); 1900 y = wid->geometry().y();
1901 w = wid->width(); 1901 w = wid->width();
1902 h = wid->height(); 1902 h = wid->height();
1903 list.clear(); 1903 list.clear();
1904 list << QString::number( x ); 1904 list << QString::number( x );
1905 list << QString::number( y ); 1905 list << QString::number( y );
1906 list << QString::number( w ); 1906 list << QString::number( w );
1907 list << QString::number( h ); 1907 list << QString::number( h );
1908 config->writeEntry("ViewerLayout",list ); 1908 config->writeEntry("ViewerLayout",list );
1909 wid = mDialogManager->getSearchDialog(); 1909 wid = mDialogManager->getSearchDialog();
1910 if ( wid ) { 1910 if ( wid ) {
1911 x = wid->geometry().x(); 1911 x = wid->geometry().x();
1912 y = wid->geometry().y(); 1912 y = wid->geometry().y();
1913 w = wid->width(); 1913 w = wid->width();
1914 h = wid->height(); 1914 h = wid->height();
1915 list.clear(); 1915 list.clear();
1916 list << QString::number( x ); 1916 list << QString::number( x );
1917 list << QString::number( y ); 1917 list << QString::number( y );
1918 list << QString::number( w ); 1918 list << QString::number( w );
1919 list << QString::number( h ); 1919 list << QString::number( h );
1920 config->writeEntry("SearchLayout",list ); 1920 config->writeEntry("SearchLayout",list );
1921 } 1921 }
1922#endif 1922#endif
1923 1923
1924 1924
1925 config->sync(); 1925 config->sync();
1926} 1926}
1927 1927
1928void CalendarView::readFilterSettings(KConfig *config) 1928void CalendarView::readFilterSettings(KConfig *config)
1929{ 1929{
1930 // kdDebug() << "CalendarView::readFilterSettings()" << endl; 1930 // kdDebug() << "CalendarView::readFilterSettings()" << endl;
1931 1931
1932 mFilters.clear(); 1932 mFilters.clear();
1933 1933
1934 config->setGroup("General"); 1934 config->setGroup("General");
1935 QStringList filterList = config->readListEntry("CalendarFilters"); 1935 QStringList filterList = config->readListEntry("CalendarFilters");
1936 1936
1937 QStringList::ConstIterator it = filterList.begin(); 1937 QStringList::ConstIterator it = filterList.begin();
1938 QStringList::ConstIterator end = filterList.end(); 1938 QStringList::ConstIterator end = filterList.end();
1939 while(it != end) { 1939 while(it != end) {
1940 // kdDebug() << " filter: " << (*it) << endl; 1940 // kdDebug() << " filter: " << (*it) << endl;
1941 1941
1942 CalFilter *filter; 1942 CalFilter *filter;
1943 filter = new CalFilter(*it); 1943 filter = new CalFilter(*it);
1944 config->setGroup("Filter_" + (*it)); 1944 config->setGroup("Filter_" + (*it));
1945 //qDebug("readFilterSettings %d ",config->readNumEntry("Criteria",0) ); 1945 //qDebug("readFilterSettings %d ",config->readNumEntry("Criteria",0) );
1946 filter->setCriteria(config->readNumEntry("Criteria",0)); 1946 filter->setCriteria(config->readNumEntry("Criteria",0));
1947 filter->setCategoryList(config->readListEntry("CategoryList")); 1947 filter->setCategoryList(config->readListEntry("CategoryList"));
1948 mFilters.append(filter); 1948 mFilters.append(filter);
1949 1949
1950 ++it; 1950 ++it;
1951 } 1951 }
1952 1952
1953 if (mFilters.count() == 0) { 1953 if (mFilters.count() == 0) {
1954 CalFilter *filter = new CalFilter(i18n("Default")); 1954 CalFilter *filter = new CalFilter(i18n("Default"));
1955 mFilters.append(filter); 1955 mFilters.append(filter);
1956 } 1956 }
1957 mFilterView->updateFilters(); 1957 mFilterView->updateFilters();
1958 config->setGroup("FilterView"); 1958 config->setGroup("FilterView");
1959 1959
1960 mFilterView->blockSignals(true); 1960 mFilterView->blockSignals(true);
1961 mFilterView->setFiltersEnabled(config->readBoolEntry("FilterEnabled")); 1961 mFilterView->setFiltersEnabled(config->readBoolEntry("FilterEnabled"));
1962 mFilterView->setSelectedFilter(config->readEntry("Current Filter")); 1962 mFilterView->setSelectedFilter(config->readEntry("Current Filter"));
1963 mFilterView->blockSignals(false); 1963 mFilterView->blockSignals(false);
1964 // We do it manually to avoid it being done twice by the above calls 1964 // We do it manually to avoid it being done twice by the above calls
1965 updateFilter(); 1965 updateFilter();
1966} 1966}
1967 1967
1968void CalendarView::writeFilterSettings(KConfig *config) 1968void CalendarView::writeFilterSettings(KConfig *config)
1969{ 1969{
1970 // kdDebug() << "CalendarView::writeFilterSettings()" << endl; 1970 // kdDebug() << "CalendarView::writeFilterSettings()" << endl;
1971 1971
1972 QStringList filterList; 1972 QStringList filterList;
1973 1973
1974 CalFilter *filter = mFilters.first(); 1974 CalFilter *filter = mFilters.first();
1975 while(filter) { 1975 while(filter) {
1976 // kdDebug() << " fn: " << filter->name() << endl; 1976 // kdDebug() << " fn: " << filter->name() << endl;
1977 filterList << filter->name(); 1977 filterList << filter->name();
1978 config->setGroup("Filter_" + filter->name()); 1978 config->setGroup("Filter_" + filter->name());
1979 config->writeEntry("Criteria",filter->criteria()); 1979 config->writeEntry("Criteria",filter->criteria());
1980 config->writeEntry("CategoryList",filter->categoryList()); 1980 config->writeEntry("CategoryList",filter->categoryList());
1981 filter = mFilters.next(); 1981 filter = mFilters.next();
1982 } 1982 }
1983 config->setGroup("General"); 1983 config->setGroup("General");
1984 config->writeEntry("CalendarFilters",filterList); 1984 config->writeEntry("CalendarFilters",filterList);
1985 1985
1986 config->setGroup("FilterView"); 1986 config->setGroup("FilterView");
1987 config->writeEntry("FilterEnabled",mFilterView->filtersEnabled()); 1987 config->writeEntry("FilterEnabled",mFilterView->filtersEnabled());
1988 config->writeEntry("Current Filter",mFilterView->selectedFilter()->name()); 1988 config->writeEntry("Current Filter",mFilterView->selectedFilter()->name());
1989} 1989}
1990 1990
1991 1991
1992void CalendarView::goToday() 1992void CalendarView::goToday()
1993{ 1993{
1994 mNavigator->selectToday(); 1994 mNavigator->selectToday();
1995} 1995}
1996 1996
1997void CalendarView::goNext() 1997void CalendarView::goNext()
1998{ 1998{
1999 mNavigator->selectNext(); 1999 mNavigator->selectNext();
2000} 2000}
2001 2001
2002void CalendarView::goPrevious() 2002void CalendarView::goPrevious()
2003{ 2003{
2004 mNavigator->selectPrevious(); 2004 mNavigator->selectPrevious();
2005} 2005}
2006void CalendarView::goNextMonth() 2006void CalendarView::goNextMonth()
2007{ 2007{
2008 mNavigator->selectNextMonth(); 2008 mNavigator->selectNextMonth();
2009} 2009}
2010 2010
2011void CalendarView::goPreviousMonth() 2011void CalendarView::goPreviousMonth()
2012{ 2012{
2013 mNavigator->selectPreviousMonth(); 2013 mNavigator->selectPreviousMonth();
2014} 2014}
2015void CalendarView::writeLocale() 2015void CalendarView::writeLocale()
2016{ 2016{
2017 //KPimGlobalPrefs::instance()->setGlobalConfig(); 2017 //KPimGlobalPrefs::instance()->setGlobalConfig();
2018#if 0 2018#if 0
2019 KGlobal::locale()->setHore24Format( !KOPrefs::instance()->mPreferredTime ); 2019 KGlobal::locale()->setHore24Format( !KOPrefs::instance()->mPreferredTime );
2020 KGlobal::locale()->setWeekStartMonday( !KOPrefs::instance()->mWeekStartsOnSunday ); 2020 KGlobal::locale()->setWeekStartMonday( !KOPrefs::instance()->mWeekStartsOnSunday );
2021 KGlobal::locale()->setIntDateFormat( (KLocale::IntDateFormat)KOPrefs::instance()->mPreferredDate ); 2021 KGlobal::locale()->setIntDateFormat( (KLocale::IntDateFormat)KOPrefs::instance()->mPreferredDate );
2022 KGlobal::locale()->setLanguage( KOPrefs::instance()->mPreferredLanguage ); 2022 KGlobal::locale()->setLanguage( KOPrefs::instance()->mPreferredLanguage );
2023 QString dummy = KOPrefs::instance()->mUserDateFormatLong; 2023 QString dummy = KOPrefs::instance()->mUserDateFormatLong;
2024 KGlobal::locale()->setDateFormat(dummy.replace( QRegExp("K"), QString(",") )); 2024 KGlobal::locale()->setDateFormat(dummy.replace( QRegExp("K"), QString(",") ));
2025 dummy = KOPrefs::instance()->mUserDateFormatShort; 2025 dummy = KOPrefs::instance()->mUserDateFormatShort;
2026 KGlobal::locale()->setDateFormatShort(dummy.replace( QRegExp("K"), QString(",") )); 2026 KGlobal::locale()->setDateFormatShort(dummy.replace( QRegExp("K"), QString(",") ));
2027 KGlobal::locale()->setDaylightSaving( KOPrefs::instance()->mUseDaylightsaving, 2027 KGlobal::locale()->setDaylightSaving( KOPrefs::instance()->mUseDaylightsaving,
2028 KOPrefs::instance()->mDaylightsavingStart, 2028 KOPrefs::instance()->mDaylightsavingStart,
2029 KOPrefs::instance()->mDaylightsavingEnd ); 2029 KOPrefs::instance()->mDaylightsavingEnd );
2030 KGlobal::locale()->setTimezone( KPimGlobalPrefs::instance()->mTimeZoneId ); 2030 KGlobal::locale()->setTimezone( KPimGlobalPrefs::instance()->mTimeZoneId );
2031#endif 2031#endif
2032} 2032}
2033void CalendarView::updateConfig() 2033void CalendarView::updateConfig()
2034{ 2034{
2035 writeLocale(); 2035 writeLocale();
2036 if ( KOPrefs::instance()->mUseAppColors ) 2036 if ( KOPrefs::instance()->mUseAppColors )
2037 QApplication::setPalette( QPalette (KOPrefs::instance()->mAppColor1, KOPrefs::instance()->mAppColor2), true ); 2037 QApplication::setPalette( QPalette (KOPrefs::instance()->mAppColor1, KOPrefs::instance()->mAppColor2), true );
2038 emit configChanged(); 2038 emit configChanged();
2039 mTodoList->updateConfig(); 2039 mTodoList->updateConfig();
2040 // mDateNavigator->setFont ( KOPrefs::instance()->mDateNavigatorFont); 2040 // mDateNavigator->setFont ( KOPrefs::instance()->mDateNavigatorFont);
2041 mCalendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId); 2041 mCalendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId);
2042 // To make the "fill window" configurations work 2042 // To make the "fill window" configurations work
2043 //mViewManager->raiseCurrentView(); 2043 //mViewManager->raiseCurrentView();
2044} 2044}
2045 2045
2046 2046
2047void CalendarView::eventChanged(Event *event) 2047void CalendarView::eventChanged(Event *event)
2048{ 2048{
2049 changeEventDisplay(event,KOGlobals::EVENTEDITED); 2049 changeEventDisplay(event,KOGlobals::EVENTEDITED);
2050 //updateUnmanagedViews(); 2050 //updateUnmanagedViews();
2051} 2051}
2052 2052
2053void CalendarView::eventAdded(Event *event) 2053void CalendarView::eventAdded(Event *event)
2054{ 2054{
2055 changeEventDisplay(event,KOGlobals::EVENTADDED); 2055 changeEventDisplay(event,KOGlobals::EVENTADDED);
2056} 2056}
2057 2057
2058void CalendarView::eventToBeDeleted(Event *) 2058void CalendarView::eventToBeDeleted(Event *)
2059{ 2059{
2060 kdDebug() << "CalendarView::eventToBeDeleted(): to be implemented" << endl; 2060 kdDebug() << "CalendarView::eventToBeDeleted(): to be implemented" << endl;
2061} 2061}
2062 2062
2063void CalendarView::eventDeleted() 2063void CalendarView::eventDeleted()
2064{ 2064{
2065 changeEventDisplay(0,KOGlobals::EVENTDELETED); 2065 changeEventDisplay(0,KOGlobals::EVENTDELETED);
2066} 2066}
2067void CalendarView::changeTodoDisplay(Todo *which, int action) 2067void CalendarView::changeTodoDisplay(Todo *which, int action)
2068{ 2068{
2069 changeIncidenceDisplay((Incidence *)which, action); 2069 changeIncidenceDisplay((Incidence *)which, action);
2070 mDateNavigator->updateView(); //LR 2070 mDateNavigator->updateView(); //LR
2071 //mDialogManager->updateSearchDialog(); 2071 //mDialogManager->updateSearchDialog();
2072 2072
2073 if (which) { 2073 if (which) {
2074 mViewManager->updateWNview(); 2074 mViewManager->updateWNview();
2075 //mTodoList->updateView(); 2075 //mTodoList->updateView();
2076 } 2076 }
2077 2077
2078} 2078}
2079 2079
2080void CalendarView::changeIncidenceDisplay(Incidence *which, int action) 2080void CalendarView::changeIncidenceDisplay(Incidence *which, int action)
2081{ 2081{
2082 updateUnmanagedViews(); 2082 updateUnmanagedViews();
2083 //qDebug(" CalendarView::changeIncidenceDisplay++++++++++++++++++++++++++ %d %d ",which, action ); 2083 //qDebug(" CalendarView::changeIncidenceDisplay++++++++++++++++++++++++++ %d %d ",which, action );
2084 if ( action == KOGlobals::EVENTDELETED ) { //delete 2084 if ( action == KOGlobals::EVENTDELETED ) { //delete
2085 mCalendar->checkAlarmForIncidence( 0, true ); 2085 mCalendar->checkAlarmForIncidence( 0, true );
2086 if ( mEventViewerDialog ) 2086 if ( mEventViewerDialog )
2087 mEventViewerDialog->hide(); 2087 mEventViewerDialog->hide();
2088 } 2088 }
2089 else 2089 else
2090 mCalendar->checkAlarmForIncidence( which , false ); 2090 mCalendar->checkAlarmForIncidence( which , false );
2091} 2091}
2092 2092
2093// most of the changeEventDisplays() right now just call the view's 2093// most of the changeEventDisplays() right now just call the view's
2094// total update mode, but they SHOULD be recoded to be more refresh-efficient. 2094// total update mode, but they SHOULD be recoded to be more refresh-efficient.
2095void CalendarView::changeEventDisplay(Event *which, int action) 2095void CalendarView::changeEventDisplay(Event *which, int action)
2096{ 2096{
2097 // kdDebug() << "CalendarView::changeEventDisplay" << endl; 2097 // kdDebug() << "CalendarView::changeEventDisplay" << endl;
2098 changeIncidenceDisplay((Incidence *)which, action); 2098 changeIncidenceDisplay((Incidence *)which, action);
2099 mDateNavigator->updateView(); 2099 mDateNavigator->updateView();
2100 //mDialogManager->updateSearchDialog(); 2100 //mDialogManager->updateSearchDialog();
2101 2101
2102 if (which) { 2102 if (which) {
2103 // If there is an event view visible update the display 2103 // If there is an event view visible update the display
2104 mViewManager->currentView()->changeEventDisplay(which,action); 2104 mViewManager->currentView()->changeEventDisplay(which,action);
2105 // TODO: check, if update needed 2105 // TODO: check, if update needed
2106 // if (which->getTodoStatus()) { 2106 // if (which->getTodoStatus()) {
2107 mTodoList->updateView(); 2107 mTodoList->updateView();
2108 // } 2108 // }
2109 } else { 2109 } else {
2110 mViewManager->currentView()->updateView(); 2110 mViewManager->currentView()->updateView();
2111 } 2111 }
2112} 2112}
2113 2113
2114 2114
2115void CalendarView::updateTodoViews() 2115void CalendarView::updateTodoViews()
2116{ 2116{
2117 2117
2118 mTodoList->updateView(); 2118 mTodoList->updateView();
2119 mViewManager->currentView()->updateView(); 2119 mViewManager->currentView()->updateView();
2120 2120
2121} 2121}
2122 2122
2123 2123
2124void CalendarView::updateView(const QDate &start, const QDate &end) 2124void CalendarView::updateView(const QDate &start, const QDate &end)
2125{ 2125{
2126 mTodoList->updateView(); 2126 mTodoList->updateView();
2127 mViewManager->updateView(start, end); 2127 mViewManager->updateView(start, end);
2128 //mDateNavigator->updateView(); 2128 //mDateNavigator->updateView();
2129} 2129}
2130 2130
2131void CalendarView::updateView() 2131void CalendarView::updateView()
2132{ 2132{
2133 DateList tmpList = mNavigator->selectedDates(); 2133 DateList tmpList = mNavigator->selectedDates();
2134 2134
2135 // We assume that the navigator only selects consecutive days. 2135 // We assume that the navigator only selects consecutive days.
2136 updateView( tmpList.first(), tmpList.last() ); 2136 updateView( tmpList.first(), tmpList.last() );
2137} 2137}
2138 2138
2139void CalendarView::updateUnmanagedViews() 2139void CalendarView::updateUnmanagedViews()
2140{ 2140{
2141 mDateNavigator->updateDayMatrix(); 2141 mDateNavigator->updateDayMatrix();
2142} 2142}
2143 2143
2144int CalendarView::msgItemDelete() 2144int CalendarView::msgItemDelete()
2145{ 2145{
2146 return KMessageBox::warningContinueCancel(this, 2146 return KMessageBox::warningContinueCancel(this,
2147 i18n("This item will be\npermanently deleted."), 2147 i18n("This item will be\npermanently deleted."),
2148 i18n("KO/Pi Confirmation"),i18n("Delete")); 2148 i18n("KO/Pi Confirmation"),i18n("Delete"));
2149} 2149}
2150 2150
2151 2151
2152void CalendarView::edit_cut() 2152void CalendarView::edit_cut()
2153{ 2153{
2154 Event *anEvent=0; 2154 Event *anEvent=0;
2155 2155
2156 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 2156 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
2157 2157
2158 if (mViewManager->currentView()->isEventView()) { 2158 if (mViewManager->currentView()->isEventView()) {
2159 if ( incidence && incidence->type() == "Event" ) { 2159 if ( incidence && incidence->type() == "Event" ) {
2160 anEvent = static_cast<Event *>(incidence); 2160 anEvent = static_cast<Event *>(incidence);
2161 } 2161 }
2162 } 2162 }
2163 2163
2164 if (!anEvent) { 2164 if (!anEvent) {
2165 KNotifyClient::beep(); 2165 KNotifyClient::beep();
2166 return; 2166 return;
2167 } 2167 }
2168 DndFactory factory( mCalendar ); 2168 DndFactory factory( mCalendar );
2169 factory.cutEvent(anEvent); 2169 factory.cutEvent(anEvent);
2170 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED); 2170 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED);
2171} 2171}
2172 2172
2173void CalendarView::edit_copy() 2173void CalendarView::edit_copy()
2174{ 2174{
2175 Event *anEvent=0; 2175 Event *anEvent=0;
2176 2176
2177 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 2177 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
2178 2178
2179 if (mViewManager->currentView()->isEventView()) { 2179 if (mViewManager->currentView()->isEventView()) {
2180 if ( incidence && incidence->type() == "Event" ) { 2180 if ( incidence && incidence->type() == "Event" ) {
2181 anEvent = static_cast<Event *>(incidence); 2181 anEvent = static_cast<Event *>(incidence);
2182 } 2182 }
2183 } 2183 }
2184 2184
2185 if (!anEvent) { 2185 if (!anEvent) {
2186 KNotifyClient::beep(); 2186 KNotifyClient::beep();
2187 return; 2187 return;
2188 } 2188 }
2189 DndFactory factory( mCalendar ); 2189 DndFactory factory( mCalendar );
2190 factory.copyEvent(anEvent); 2190 factory.copyEvent(anEvent);
2191} 2191}
2192 2192
2193void CalendarView::edit_paste() 2193void CalendarView::edit_paste()
2194{ 2194{
2195 QDate date = mNavigator->selectedDates().first(); 2195 QDate date = mNavigator->selectedDates().first();
2196 2196
2197 DndFactory factory( mCalendar ); 2197 DndFactory factory( mCalendar );
2198 Event *pastedEvent = factory.pasteEvent( date ); 2198 Event *pastedEvent = factory.pasteEvent( date );
2199 2199
2200 changeEventDisplay( pastedEvent, KOGlobals::EVENTADDED ); 2200 changeEventDisplay( pastedEvent, KOGlobals::EVENTADDED );
2201} 2201}
2202 2202
2203void CalendarView::edit_options() 2203void CalendarView::edit_options()
2204{ 2204{
2205 mDialogManager->showOptionsDialog(); 2205 mDialogManager->showOptionsDialog();
2206 //writeSettings(); 2206 //writeSettings();
2207} 2207}
2208 2208
2209void CalendarView::slotSelectPickerDate( QDate d) 2209void CalendarView::slotSelectPickerDate( QDate d)
2210{ 2210{
2211 mDateFrame->hide(); 2211 mDateFrame->hide();
2212 if ( mDatePickerMode == 1 ) { 2212 if ( mDatePickerMode == 1 ) {
2213 mNavigator->slotDaySelect( d ); 2213 mNavigator->slotDaySelect( d );
2214 } else if ( mDatePickerMode == 2 ) { 2214 } else if ( mDatePickerMode == 2 ) {
2215 if ( mMoveIncidence->type() == "Todo" ) { 2215 if ( mMoveIncidence->type() == "Todo" ) {
2216 Todo * to = (Todo *) mMoveIncidence; 2216 Todo * to = (Todo *) mMoveIncidence;
2217 QTime tim; 2217 QTime tim;
2218 if ( to->hasDueDate() ) 2218 if ( to->hasDueDate() )
2219 tim = to->dtDue().time(); 2219 tim = to->dtDue().time();
2220 else { 2220 else {
2221 tim = QTime ( 0,0,0 ); 2221 tim = QTime ( 0,0,0 );
2222 to->setFloats( true ); 2222 to->setFloats( true );
2223 to->setHasDueDate( true ); 2223 to->setHasDueDate( true );
2224 } 2224 }
2225 QDateTime dt ( d,tim ); 2225 QDateTime dt ( d,tim );
2226 to->setDtDue( dt ); 2226 to->setDtDue( dt );
2227 todoChanged( to ); 2227 todoChanged( to );
2228 } else { 2228 } else {
2229 QTime tim = mMoveIncidence->dtStart().time(); 2229 QTime tim = mMoveIncidence->dtStart().time();
2230 int secs = mMoveIncidence->dtStart().secsTo( mMoveIncidence->dtEnd()); 2230 int secs = mMoveIncidence->dtStart().secsTo( mMoveIncidence->dtEnd());
2231 QDateTime dt ( d,tim ); 2231 QDateTime dt ( d,tim );
2232 mMoveIncidence->setDtStart( dt ); 2232 mMoveIncidence->setDtStart( dt );
2233 ((Event*)mMoveIncidence)->setDtEnd( dt.addSecs( secs ) ); 2233 ((Event*)mMoveIncidence)->setDtEnd( dt.addSecs( secs ) );
2234 changeEventDisplay((Event*)mMoveIncidence, KOGlobals::EVENTEDITED); 2234 changeEventDisplay((Event*)mMoveIncidence, KOGlobals::EVENTEDITED);
2235 } 2235 }
2236 2236
2237 mMoveIncidence->setRevision( mMoveIncidence->revision()+1 ); 2237 mMoveIncidence->setRevision( mMoveIncidence->revision()+1 );
2238 } 2238 }
2239} 2239}
2240 2240
2241void CalendarView::removeCategories() 2241void CalendarView::removeCategories()
2242{ 2242{
2243 QPtrList<Incidence> incList = mCalendar->rawIncidences(); 2243 QPtrList<Incidence> incList = mCalendar->rawIncidences();
2244 QStringList catList = KOPrefs::instance()->mCustomCategories; 2244 QStringList catList = KOPrefs::instance()->mCustomCategories;
2245 QStringList catIncList; 2245 QStringList catIncList;
2246 QStringList newCatList; 2246 QStringList newCatList;
2247 Incidence* inc = incList.first(); 2247 Incidence* inc = incList.first();
2248 int i; 2248 int i;
2249 int count = 0; 2249 int count = 0;
2250 while ( inc ) { 2250 while ( inc ) {
2251 newCatList.clear(); 2251 newCatList.clear();
2252 catIncList = inc->categories() ; 2252 catIncList = inc->categories() ;
2253 for( i = 0; i< catIncList.count(); ++i ) { 2253 for( i = 0; i< catIncList.count(); ++i ) {
2254 if ( catList.contains (catIncList[i])) 2254 if ( catList.contains (catIncList[i]))
2255 newCatList.append( catIncList[i] ); 2255 newCatList.append( catIncList[i] );
2256 } 2256 }
2257 newCatList.sort(); 2257 newCatList.sort();
2258 inc->setCategories( newCatList.join(",") ); 2258 inc->setCategories( newCatList.join(",") );
2259 inc = incList.next(); 2259 inc = incList.next();
2260 } 2260 }
2261} 2261}
2262 2262
2263int CalendarView::addCategories() 2263int CalendarView::addCategories()
2264{ 2264{
2265 QPtrList<Incidence> incList = mCalendar->rawIncidences(); 2265 QPtrList<Incidence> incList = mCalendar->rawIncidences();
2266 QStringList catList = KOPrefs::instance()->mCustomCategories; 2266 QStringList catList = KOPrefs::instance()->mCustomCategories;
2267 QStringList catIncList; 2267 QStringList catIncList;
2268 Incidence* inc = incList.first(); 2268 Incidence* inc = incList.first();
2269 int i; 2269 int i;
2270 int count = 0; 2270 int count = 0;
2271 while ( inc ) { 2271 while ( inc ) {
2272 catIncList = inc->categories() ; 2272 catIncList = inc->categories() ;
2273 for( i = 0; i< catIncList.count(); ++i ) { 2273 for( i = 0; i< catIncList.count(); ++i ) {
2274 if ( !catList.contains (catIncList[i])) { 2274 if ( !catList.contains (catIncList[i])) {
2275 catList.append( catIncList[i] ); 2275 catList.append( catIncList[i] );
2276 //qDebug("add cat %s ", catIncList[i].latin1()); 2276 //qDebug("add cat %s ", catIncList[i].latin1());
2277 ++count; 2277 ++count;
2278 } 2278 }
2279 } 2279 }
2280 inc = incList.next(); 2280 inc = incList.next();
2281 } 2281 }
2282 catList.sort(); 2282 catList.sort();
2283 KOPrefs::instance()->mCustomCategories = catList; 2283 KOPrefs::instance()->mCustomCategories = catList;
2284 return count; 2284 return count;
2285} 2285}
2286 2286
2287void CalendarView::manageCategories() 2287void CalendarView::manageCategories()
2288{ 2288{
2289 KOCatPrefs* cp = new KOCatPrefs(); 2289 KOCatPrefs* cp = new KOCatPrefs();
2290 cp->show(); 2290 cp->show();
2291 int w =cp->sizeHint().width() ; 2291 int w =cp->sizeHint().width() ;
2292 int h = cp->sizeHint().height() ; 2292 int h = cp->sizeHint().height() ;
2293 int dw = QApplication::desktop()->width(); 2293 int dw = QApplication::desktop()->width();
2294 int dh = QApplication::desktop()->height(); 2294 int dh = QApplication::desktop()->height();
2295 cp->setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 2295 cp->setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
2296 if ( !cp->exec() ) { 2296 if ( !cp->exec() ) {
2297 delete cp; 2297 delete cp;
2298 return; 2298 return;
2299 } 2299 }
2300 int count = 0; 2300 int count = 0;
2301 if ( cp->addCat() ) { 2301 if ( cp->addCat() ) {
2302 count = addCategories(); 2302 count = addCategories();
2303 if ( count ) { 2303 if ( count ) {
2304 topLevelWidget()->setCaption(QString::number( count )+ i18n(" Categories added to list! ")); 2304 topLevelWidget()->setCaption(QString::number( count )+ i18n(" Categories added to list! "));
2305 writeSettings(); 2305 writeSettings();
2306 } 2306 } else
2307 topLevelWidget()->setCaption(QString::number( 0 )+ i18n(" Categories added to list! "));
2307 } else { 2308 } else {
2308 removeCategories(); 2309 removeCategories();
2309 updateView(); 2310 updateView();
2310 } 2311 }
2311 delete cp; 2312 delete cp;
2312} 2313}
2313 2314
2314void CalendarView::beamIncidence(Incidence * Inc) 2315void CalendarView::beamIncidence(Incidence * Inc)
2315{ 2316{
2316 QPtrList<Incidence> delSel ; 2317 QPtrList<Incidence> delSel ;
2317 delSel.append(Inc); 2318 delSel.append(Inc);
2318 beamIncidenceList( delSel ); 2319 beamIncidenceList( delSel );
2319} 2320}
2320void CalendarView::beamCalendar() 2321void CalendarView::beamCalendar()
2321{ 2322{
2322 QPtrList<Incidence> delSel = mCalendar->rawIncidences(); 2323 QPtrList<Incidence> delSel = mCalendar->rawIncidences();
2323 //qDebug("beamCalendar() "); 2324 //qDebug("beamCalendar() ");
2324 beamIncidenceList( delSel ); 2325 beamIncidenceList( delSel );
2325} 2326}
2326void CalendarView::beamFilteredCalendar() 2327void CalendarView::beamFilteredCalendar()
2327{ 2328{
2328 QPtrList<Incidence> delSel = mCalendar->incidences(); 2329 QPtrList<Incidence> delSel = mCalendar->incidences();
2329 //qDebug("beamFilteredCalendar() "); 2330 //qDebug("beamFilteredCalendar() ");
2330 beamIncidenceList( delSel ); 2331 beamIncidenceList( delSel );
2331} 2332}
2332void CalendarView::beamIncidenceList(QPtrList<Incidence> delSel ) 2333void CalendarView::beamIncidenceList(QPtrList<Incidence> delSel )
2333{ 2334{
2334 if ( beamDialog->exec () == QDialog::Rejected ) 2335 if ( beamDialog->exec () == QDialog::Rejected )
2335 return; 2336 return;
2336#ifdef DESKTOP_VERSION 2337#ifdef DESKTOP_VERSION
2337 QString fn = locateLocal( "tmp", "kopibeamfile" ); 2338 QString fn = locateLocal( "tmp", "kopibeamfile" );
2338#else 2339#else
2339 QString fn = "/tmp/kopibeamfile"; 2340 QString fn = "/tmp/kopibeamfile";
2340#endif 2341#endif
2341 QString mes; 2342 QString mes;
2342 bool createbup = true; 2343 bool createbup = true;
2343 if ( createbup ) { 2344 if ( createbup ) {
2344 QString description = "\n"; 2345 QString description = "\n";
2345 CalendarLocal* cal = new CalendarLocal(); 2346 CalendarLocal* cal = new CalendarLocal();
2346 if ( beamDialog->beamLocal() ) 2347 if ( beamDialog->beamLocal() )
2347 cal->setLocalTime(); 2348 cal->setLocalTime();
2348 else 2349 else
2349 cal->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId); 2350 cal->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId);
2350 Incidence *incidence = delSel.first(); 2351 Incidence *incidence = delSel.first();
2351 bool addText = false; 2352 bool addText = false;
2352 if ( delSel.count() < 10 ) 2353 if ( delSel.count() < 10 )
2353 addText = true; 2354 addText = true;
2354 else { 2355 else {
2355 description.sprintf(i18n(" %d items?"),delSel.count() ); 2356 description.sprintf(i18n(" %d items?"),delSel.count() );
2356 } 2357 }
2357 while ( incidence ) { 2358 while ( incidence ) {
2358 Incidence *in = incidence->clone(); 2359 Incidence *in = incidence->clone();
2359 if ( ! in->summary().isEmpty() ) { 2360 if ( ! in->summary().isEmpty() ) {
2360 in->setDescription(""); 2361 in->setDescription("");
2361 } else { 2362 } else {
2362 in->setSummary( in->description().left(20)); 2363 in->setSummary( in->description().left(20));
2363 in->setDescription(""); 2364 in->setDescription("");
2364 } 2365 }
2365 if ( addText ) 2366 if ( addText )
2366 description += in->summary() + "\n"; 2367 description += in->summary() + "\n";
2367 cal->addIncidence( in ); 2368 cal->addIncidence( in );
2368 incidence = delSel.next(); 2369 incidence = delSel.next();
2369 } 2370 }
2370 if ( beamDialog->beamVcal() ) { 2371 if ( beamDialog->beamVcal() ) {
2371 fn += ".vcs"; 2372 fn += ".vcs";
2372 FileStorage storage( cal, fn, new VCalFormat ); 2373 FileStorage storage( cal, fn, new VCalFormat );
2373 storage.save(); 2374 storage.save();
2374 } else { 2375 } else {
2375 fn += ".ics"; 2376 fn += ".ics";
2376 FileStorage storage( cal, fn, new ICalFormat( ) ); 2377 FileStorage storage( cal, fn, new ICalFormat( ) );
2377 storage.save(); 2378 storage.save();
2378 } 2379 }
2379 delete cal; 2380 delete cal;
2380 mes = i18n("KO/Pi: Ready for beaming"); 2381 mes = i18n("KO/Pi: Ready for beaming");
2381 topLevelWidget()->setCaption(mes); 2382 topLevelWidget()->setCaption(mes);
2382 KApplication::convert2latin1( fn ); 2383 KApplication::convert2latin1( fn );
2383#ifndef DESKTOP_VERSION 2384#ifndef DESKTOP_VERSION
2384 Ir *ir = new Ir( this ); 2385 Ir *ir = new Ir( this );
2385 connect( ir, SIGNAL( done( Ir * ) ), this, SLOT( beamDone( Ir * ) ) ); 2386 connect( ir, SIGNAL( done( Ir * ) ), this, SLOT( beamDone( Ir * ) ) );
2386 ir->send( fn, description, "text/x-vCalendar" ); 2387 ir->send( fn, description, "text/x-vCalendar" );
2387#endif 2388#endif
2388 } 2389 }
2389} 2390}
2390void CalendarView::beamDone( Ir *ir ) 2391void CalendarView::beamDone( Ir *ir )
2391{ 2392{
2392#ifndef DESKTOP_VERSION 2393#ifndef DESKTOP_VERSION
2393 delete ir; 2394 delete ir;
2394#endif 2395#endif
2395 topLevelWidget()->setCaption( i18n("KO/Pi: Beaming done.") ); 2396 topLevelWidget()->setCaption( i18n("KO/Pi: Beaming done.") );
2396 topLevelWidget()->raise(); 2397 topLevelWidget()->raise();
2397} 2398}
2398 2399
2399void CalendarView::moveIncidence(Incidence * inc ) 2400void CalendarView::moveIncidence(Incidence * inc )
2400{ 2401{
2401 if ( !inc ) return; 2402 if ( !inc ) return;
2402 // qDebug("showDatePickerForIncidence( ) "); 2403 // qDebug("showDatePickerForIncidence( ) ");
2403 if ( mDateFrame->isVisible() ) 2404 if ( mDateFrame->isVisible() )
2404 mDateFrame->hide(); 2405 mDateFrame->hide();
2405 else { 2406 else {
2406 int w =mDatePicker->sizeHint().width()+2*mDateFrame->lineWidth() ; 2407 int w =mDatePicker->sizeHint().width()+2*mDateFrame->lineWidth() ;
2407 int h = mDatePicker->sizeHint().height()+2*mDateFrame->lineWidth() ; 2408 int h = mDatePicker->sizeHint().height()+2*mDateFrame->lineWidth() ;
2408 int dw = QApplication::desktop()->width(); 2409 int dw = QApplication::desktop()->width();
2409 int dh = QApplication::desktop()->height(); 2410 int dh = QApplication::desktop()->height();
2410 mDateFrame->setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 2411 mDateFrame->setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
2411 mDateFrame->show(); 2412 mDateFrame->show();
2412 } 2413 }
2413 mDatePickerMode = 2; 2414 mDatePickerMode = 2;
2414 mMoveIncidence = inc ; 2415 mMoveIncidence = inc ;
2415 QDate da; 2416 QDate da;
2416 if ( mMoveIncidence->type() == "Todo" ) { 2417 if ( mMoveIncidence->type() == "Todo" ) {
2417 Todo * to = (Todo *) mMoveIncidence; 2418 Todo * to = (Todo *) mMoveIncidence;
2418 if ( to->hasDueDate() ) 2419 if ( to->hasDueDate() )
2419 da = to->dtDue().date(); 2420 da = to->dtDue().date();
2420 else 2421 else
2421 da = QDate::currentDate(); 2422 da = QDate::currentDate();
2422 } else { 2423 } else {
2423 da = mMoveIncidence->dtStart().date(); 2424 da = mMoveIncidence->dtStart().date();
2424 } 2425 }
2425 mDatePicker->setDate( da ); 2426 mDatePicker->setDate( da );
2426} 2427}
2427void CalendarView::showDatePicker( ) 2428void CalendarView::showDatePicker( )
2428{ 2429{
2429 //qDebug("CalendarView::showDatePicker( ) "); 2430 //qDebug("CalendarView::showDatePicker( ) ");
2430 if ( mDateFrame->isVisible() ) 2431 if ( mDateFrame->isVisible() )
2431 mDateFrame->hide(); 2432 mDateFrame->hide();
2432 else { 2433 else {
2433 int w =mDatePicker->sizeHint().width() ; 2434 int w =mDatePicker->sizeHint().width() ;
2434 int h = mDatePicker->sizeHint().height() ; 2435 int h = mDatePicker->sizeHint().height() ;
2435 int dw = QApplication::desktop()->width(); 2436 int dw = QApplication::desktop()->width();
2436 int dh = QApplication::desktop()->height(); 2437 int dh = QApplication::desktop()->height();
2437 mDateFrame->setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 2438 mDateFrame->setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
2438 mDateFrame->show(); 2439 mDateFrame->show();
2439 } 2440 }
2440 mDatePickerMode = 1; 2441 mDatePickerMode = 1;
2441 mDatePicker->setDate( mNavigator->selectedDates().first() ); 2442 mDatePicker->setDate( mNavigator->selectedDates().first() );
2442} 2443}
2443 2444
2444void CalendarView::showEventEditor() 2445void CalendarView::showEventEditor()
2445{ 2446{
2446#ifdef DESKTOP_VERSION 2447#ifdef DESKTOP_VERSION
2447 mEventEditor->show(); 2448 mEventEditor->show();
2448#else 2449#else
2449 mEventEditor->showMaximized(); 2450 mEventEditor->showMaximized();
2450#endif 2451#endif
2451} 2452}
2452void CalendarView::showTodoEditor() 2453void CalendarView::showTodoEditor()
2453{ 2454{
2454#ifdef DESKTOP_VERSION 2455#ifdef DESKTOP_VERSION
2455 mTodoEditor->show(); 2456 mTodoEditor->show();
2456#else 2457#else
2457 mTodoEditor->showMaximized(); 2458 mTodoEditor->showMaximized();
2458#endif 2459#endif
2459} 2460}
2460 2461
2461void CalendarView::cloneIncidence() 2462void CalendarView::cloneIncidence()
2462{ 2463{
2463 Incidence *incidence = currentSelection(); 2464 Incidence *incidence = currentSelection();
2464 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 2465 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
2465 if ( incidence ) { 2466 if ( incidence ) {
2466 cloneIncidence(incidence); 2467 cloneIncidence(incidence);
2467 } 2468 }
2468} 2469}
2469void CalendarView::moveIncidence() 2470void CalendarView::moveIncidence()
2470{ 2471{
2471 Incidence *incidence = currentSelection(); 2472 Incidence *incidence = currentSelection();
2472 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 2473 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
2473 if ( incidence ) { 2474 if ( incidence ) {
2474 moveIncidence(incidence); 2475 moveIncidence(incidence);
2475 } 2476 }
2476} 2477}
2477void CalendarView::beamIncidence() 2478void CalendarView::beamIncidence()
2478{ 2479{
2479 Incidence *incidence = currentSelection(); 2480 Incidence *incidence = currentSelection();
2480 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 2481 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
2481 if ( incidence ) { 2482 if ( incidence ) {
2482 beamIncidence(incidence); 2483 beamIncidence(incidence);
2483 } 2484 }
2484} 2485}
2485void CalendarView::toggleCancelIncidence() 2486void CalendarView::toggleCancelIncidence()
2486{ 2487{
2487 Incidence *incidence = currentSelection(); 2488 Incidence *incidence = currentSelection();
2488 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 2489 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
2489 if ( incidence ) { 2490 if ( incidence ) {
2490 cancelIncidence(incidence); 2491 cancelIncidence(incidence);
2491 } 2492 }
2492} 2493}
2493 2494
2494 2495
2495void CalendarView::cancelIncidence(Incidence * inc ) 2496void CalendarView::cancelIncidence(Incidence * inc )
2496{ 2497{
2497 inc->setCancelled( ! inc->cancelled() ); 2498 inc->setCancelled( ! inc->cancelled() );
2498 changeIncidenceDisplay( inc,KOGlobals::EVENTEDITED ); 2499 changeIncidenceDisplay( inc,KOGlobals::EVENTEDITED );
2499 updateView(); 2500 updateView();
2500} 2501}
2501void CalendarView::cloneIncidence(Incidence * orgInc ) 2502void CalendarView::cloneIncidence(Incidence * orgInc )
2502{ 2503{
2503 Incidence * newInc = orgInc->clone(); 2504 Incidence * newInc = orgInc->clone();
2504 newInc->recreate(); 2505 newInc->recreate();
2505 2506
2506 if ( newInc->type() == "Todo" ) { 2507 if ( newInc->type() == "Todo" ) {
2507 Todo* t = (Todo*) newInc; 2508 Todo* t = (Todo*) newInc;
2508 mTodoEditor->editTodo( t ); 2509 mTodoEditor->editTodo( t );
2509 showTodoEditor(); 2510 showTodoEditor();
2510 if ( mTodoEditor->exec() ) { 2511 if ( mTodoEditor->exec() ) {
2511 mCalendar->addTodo( t ); 2512 mCalendar->addTodo( t );
2512 updateView(); 2513 updateView();
2513 } else { 2514 } else {
2514 delete t; 2515 delete t;
2515 } 2516 }
2516 } 2517 }
2517 else { 2518 else {
2518 Event* e = (Event*) newInc; 2519 Event* e = (Event*) newInc;
2519 mEventEditor->editEvent( e ); 2520 mEventEditor->editEvent( e );
2520 showEventEditor(); 2521 showEventEditor();
2521 if ( mEventEditor->exec() ) { 2522 if ( mEventEditor->exec() ) {
2522 mCalendar->addEvent( e ); 2523 mCalendar->addEvent( e );
2523 updateView(); 2524 updateView();
2524 } else { 2525 } else {
2525 delete e; 2526 delete e;
2526 } 2527 }
2527 } 2528 }
2528} 2529}
2529 2530
2530void CalendarView::newEvent() 2531void CalendarView::newEvent()
2531{ 2532{
2532 // TODO: Replace this code by a common eventDurationHint of KOBaseView. 2533 // TODO: Replace this code by a common eventDurationHint of KOBaseView.
2533 KOAgendaView *aView = mViewManager->agendaView(); 2534 KOAgendaView *aView = mViewManager->agendaView();
2534 if (aView) { 2535 if (aView) {
2535 if (aView->selectionStart().isValid()) { 2536 if (aView->selectionStart().isValid()) {
2536 if (aView->selectedIsAllDay()) { 2537 if (aView->selectedIsAllDay()) {
2537 newEvent(aView->selectionStart(),aView->selectionEnd(),true); 2538 newEvent(aView->selectionStart(),aView->selectionEnd(),true);
2538 } else { 2539 } else {
2539 newEvent(aView->selectionStart(),aView->selectionEnd()); 2540 newEvent(aView->selectionStart(),aView->selectionEnd());
2540 } 2541 }
2541 return; 2542 return;
2542 } 2543 }
2543 } 2544 }
2544 2545
2545 QDate date = mNavigator->selectedDates().first(); 2546 QDate date = mNavigator->selectedDates().first();
2546 QDateTime current = QDateTime::currentDateTime(); 2547 QDateTime current = QDateTime::currentDateTime();
2547 if ( date <= current.date() ) { 2548 if ( date <= current.date() ) {
2548 int hour = current.time().hour() +1; 2549 int hour = current.time().hour() +1;
2549 newEvent( QDateTime( current.date(), QTime( hour, 0, 0 ) ), 2550 newEvent( QDateTime( current.date(), QTime( hour, 0, 0 ) ),
2550 QDateTime( current.date(), QTime( hour+ KOPrefs::instance()->mDefaultDuration, 0, 0 ) ) ); 2551 QDateTime( current.date(), QTime( hour+ KOPrefs::instance()->mDefaultDuration, 0, 0 ) ) );
2551 } else 2552 } else
2552 newEvent( QDateTime( date, QTime( KOPrefs::instance()->mStartTime, 0, 0 ) ), 2553 newEvent( QDateTime( date, QTime( KOPrefs::instance()->mStartTime, 0, 0 ) ),
2553 QDateTime( date, QTime( KOPrefs::instance()->mStartTime + 2554 QDateTime( date, QTime( KOPrefs::instance()->mStartTime +
2554 KOPrefs::instance()->mDefaultDuration, 0, 0 ) ) ); 2555 KOPrefs::instance()->mDefaultDuration, 0, 0 ) ) );
2555} 2556}
2556 2557
2557void CalendarView::newEvent(QDateTime fh) 2558void CalendarView::newEvent(QDateTime fh)
2558{ 2559{
2559 newEvent(fh, 2560 newEvent(fh,
2560 QDateTime(fh.addSecs(3600*KOPrefs::instance()->mDefaultDuration))); 2561 QDateTime(fh.addSecs(3600*KOPrefs::instance()->mDefaultDuration)));
2561} 2562}
2562 2563
2563void CalendarView::newEvent(QDate dt) 2564void CalendarView::newEvent(QDate dt)
2564{ 2565{
2565 newEvent(QDateTime(dt, QTime(0,0,0)), 2566 newEvent(QDateTime(dt, QTime(0,0,0)),
2566 QDateTime(dt, QTime(0,0,0)), true); 2567 QDateTime(dt, QTime(0,0,0)), true);
2567} 2568}
2568 2569
2569void CalendarView::newEvent(QDateTime fromHint, QDateTime toHint, bool allDay) 2570void CalendarView::newEvent(QDateTime fromHint, QDateTime toHint, bool allDay)
2570{ 2571{
2571 2572
2572 mEventEditor->newEvent(fromHint,toHint,allDay); 2573 mEventEditor->newEvent(fromHint,toHint,allDay);
2573 if ( mFilterView->filtersEnabled() ) { 2574 if ( mFilterView->filtersEnabled() ) {
2574 CalFilter *filter = mFilterView->selectedFilter(); 2575 CalFilter *filter = mFilterView->selectedFilter();
2575 if (filter && filter->showCategories()) { 2576 if (filter && filter->showCategories()) {
2576 mEventEditor->setCategories(filter->categoryList().join(",") ); 2577 mEventEditor->setCategories(filter->categoryList().join(",") );
2577 } 2578 }
2578 if ( filter ) 2579 if ( filter )
2579 mEventEditor->setSecrecy( filter->getSecrecy() ); 2580 mEventEditor->setSecrecy( filter->getSecrecy() );
2580 } 2581 }
2581 showEventEditor(); 2582 showEventEditor();
2582} 2583}
2583void CalendarView::todoAdded(Todo * t) 2584void CalendarView::todoAdded(Todo * t)
2584{ 2585{
2585 2586
2586 changeTodoDisplay ( t ,KOGlobals::EVENTADDED); 2587 changeTodoDisplay ( t ,KOGlobals::EVENTADDED);
2587 updateTodoViews(); 2588 updateTodoViews();
2588} 2589}
2589void CalendarView::todoChanged(Todo * t) 2590void CalendarView::todoChanged(Todo * t)
2590{ 2591{
2591 emit todoModified( t, 4 ); 2592 emit todoModified( t, 4 );
2592 // updateTodoViews(); 2593 // updateTodoViews();
2593} 2594}
2594void CalendarView::todoToBeDeleted(Todo *) 2595void CalendarView::todoToBeDeleted(Todo *)
2595{ 2596{
2596 //qDebug("todoToBeDeleted(Todo *) "); 2597 //qDebug("todoToBeDeleted(Todo *) ");
2597 updateTodoViews(); 2598 updateTodoViews();
2598} 2599}
2599void CalendarView::todoDeleted() 2600void CalendarView::todoDeleted()
2600{ 2601{
2601 //qDebug(" todoDeleted()"); 2602 //qDebug(" todoDeleted()");
2602 updateTodoViews(); 2603 updateTodoViews();
2603} 2604}
2604 2605
2605 2606
2606 2607
2607void CalendarView::newTodo() 2608void CalendarView::newTodo()
2608{ 2609{
2609 2610
2610 mTodoEditor->newTodo(QDateTime::currentDateTime().addDays(7),0,true); 2611 mTodoEditor->newTodo(QDateTime::currentDateTime().addDays(7),0,true);
2611 if ( mFilterView->filtersEnabled() ) { 2612 if ( mFilterView->filtersEnabled() ) {
2612 CalFilter *filter = mFilterView->selectedFilter(); 2613 CalFilter *filter = mFilterView->selectedFilter();
2613 if (filter && filter->showCategories()) { 2614 if (filter && filter->showCategories()) {
2614 mTodoEditor->setCategories(filter->categoryList().join(",") ); 2615 mTodoEditor->setCategories(filter->categoryList().join(",") );
2615 } 2616 }
2616 if ( filter ) 2617 if ( filter )
2617 mTodoEditor->setSecrecy( filter->getSecrecy() ); 2618 mTodoEditor->setSecrecy( filter->getSecrecy() );
2618 } 2619 }
2619 showTodoEditor(); 2620 showTodoEditor();
2620} 2621}
2621 2622
2622void CalendarView::newSubTodo() 2623void CalendarView::newSubTodo()
2623{ 2624{
2624 Todo *todo = selectedTodo(); 2625 Todo *todo = selectedTodo();
2625 if ( todo ) newSubTodo( todo ); 2626 if ( todo ) newSubTodo( todo );
2626} 2627}
2627 2628
2628void CalendarView::newSubTodo(Todo *parentEvent) 2629void CalendarView::newSubTodo(Todo *parentEvent)
2629{ 2630{
2630 2631
2631 mTodoEditor->newTodo(QDateTime::currentDateTime().addDays(7),parentEvent,true); 2632 mTodoEditor->newTodo(QDateTime::currentDateTime().addDays(7),parentEvent,true);
2632 showTodoEditor(); 2633 showTodoEditor();
2633} 2634}
2634 2635
2635void CalendarView::newFloatingEvent() 2636void CalendarView::newFloatingEvent()
2636{ 2637{
2637 DateList tmpList = mNavigator->selectedDates(); 2638 DateList tmpList = mNavigator->selectedDates();
2638 QDate date = tmpList.first(); 2639 QDate date = tmpList.first();
2639 2640
2640 newEvent( QDateTime( date, QTime( 12, 0, 0 ) ), 2641 newEvent( QDateTime( date, QTime( 12, 0, 0 ) ),
2641 QDateTime( date, QTime( 12, 0, 0 ) ), true ); 2642 QDateTime( date, QTime( 12, 0, 0 ) ), true );
2642} 2643}
2643 2644
2644 2645
2645void CalendarView::editEvent( Event *event ) 2646void CalendarView::editEvent( Event *event )
2646{ 2647{
2647 2648
2648 if ( !event ) return; 2649 if ( !event ) return;
2649 if ( event->isReadOnly() ) { 2650 if ( event->isReadOnly() ) {
2650 showEvent( event ); 2651 showEvent( event );
2651 return; 2652 return;
2652 } 2653 }
2653 mEventEditor->editEvent( event , mFlagEditDescription); 2654 mEventEditor->editEvent( event , mFlagEditDescription);
2654 showEventEditor(); 2655 showEventEditor();
2655} 2656}
2656void CalendarView::editJournal( Journal *jour ) 2657void CalendarView::editJournal( Journal *jour )
2657{ 2658{
2658 if ( !jour ) return; 2659 if ( !jour ) return;
2659 mDialogManager->hideSearchDialog(); 2660 mDialogManager->hideSearchDialog();
2660 mViewManager->showJournalView(); 2661 mViewManager->showJournalView();
2661 mNavigator->slotDaySelect( jour->dtStart().date() ); 2662 mNavigator->slotDaySelect( jour->dtStart().date() );
2662} 2663}
2663void CalendarView::editTodo( Todo *todo ) 2664void CalendarView::editTodo( Todo *todo )
2664{ 2665{
2665 if ( !todo ) return; 2666 if ( !todo ) return;
2666 2667
2667 if ( todo->isReadOnly() ) { 2668 if ( todo->isReadOnly() ) {
2668 showTodo( todo ); 2669 showTodo( todo );
2669 return; 2670 return;
2670 } 2671 }
2671 mTodoEditor->editTodo( todo ,mFlagEditDescription); 2672 mTodoEditor->editTodo( todo ,mFlagEditDescription);
2672 showTodoEditor(); 2673 showTodoEditor();
2673 2674
2674} 2675}
2675 2676
2676KOEventViewerDialog* CalendarView::getEventViewerDialog() 2677KOEventViewerDialog* CalendarView::getEventViewerDialog()
2677{ 2678{
2678 if ( !mEventViewerDialog ) { 2679 if ( !mEventViewerDialog ) {
2679 mEventViewerDialog = new KOEventViewerDialog(this); 2680 mEventViewerDialog = new KOEventViewerDialog(this);
2680 connect( mEventViewerDialog, SIGNAL( editIncidence( Incidence* )), this, SLOT(editIncidence( Incidence* ) ) ); 2681 connect( mEventViewerDialog, SIGNAL( editIncidence( Incidence* )), this, SLOT(editIncidence( Incidence* ) ) );
2681 connect( this, SIGNAL(configChanged()), mEventViewerDialog, SLOT(updateConfig())); 2682 connect( this, SIGNAL(configChanged()), mEventViewerDialog, SLOT(updateConfig()));
2682 connect( mEventViewerDialog, SIGNAL(jumpToTime( const QDate &)), 2683 connect( mEventViewerDialog, SIGNAL(jumpToTime( const QDate &)),
2683 dateNavigator(), SLOT( selectWeek( const QDate & ) ) ); 2684 dateNavigator(), SLOT( selectWeek( const QDate & ) ) );
2684 connect( mEventViewerDialog, SIGNAL(showAgendaView( bool ) ), 2685 connect( mEventViewerDialog, SIGNAL(showAgendaView( bool ) ),
2685 viewManager(), SLOT( showAgendaView( bool ) ) ); 2686 viewManager(), SLOT( showAgendaView( bool ) ) );
2686 mEventViewerDialog->resize( 640, 480 ); 2687 mEventViewerDialog->resize( 640, 480 );
2687 2688
2688 } 2689 }
2689 return mEventViewerDialog; 2690 return mEventViewerDialog;
2690} 2691}
2691void CalendarView::showEvent(Event *event) 2692void CalendarView::showEvent(Event *event)
2692{ 2693{
2693 getEventViewerDialog()->setEvent(event); 2694 getEventViewerDialog()->setEvent(event);
2694 getEventViewerDialog()->showMe(); 2695 getEventViewerDialog()->showMe();
2695} 2696}
2696 2697
2697void CalendarView::showTodo(Todo *event) 2698void CalendarView::showTodo(Todo *event)
2698{ 2699{
2699 getEventViewerDialog()->setTodo(event); 2700 getEventViewerDialog()->setTodo(event);
2700 getEventViewerDialog()->showMe(); 2701 getEventViewerDialog()->showMe();
2701} 2702}
2702void CalendarView::showJournal( Journal *jour ) 2703void CalendarView::showJournal( Journal *jour )
2703{ 2704{
2704 getEventViewerDialog()->setJournal(jour); 2705 getEventViewerDialog()->setJournal(jour);
2705 getEventViewerDialog()->showMe(); 2706 getEventViewerDialog()->showMe();
2706 2707
2707} 2708}
2708// void CalendarView::todoModified (Todo *event, int changed) 2709// void CalendarView::todoModified (Todo *event, int changed)
2709// { 2710// {
2710// // if (mDialogList.find (event) != mDialogList.end ()) { 2711// // if (mDialogList.find (event) != mDialogList.end ()) {
2711// // kdDebug() << "Todo modified and open" << endl; 2712// // kdDebug() << "Todo modified and open" << endl;
2712// // KOTodoEditor* temp = (KOTodoEditor *) mDialogList[event]; 2713// // KOTodoEditor* temp = (KOTodoEditor *) mDialogList[event];
2713// // temp->modified (changed); 2714// // temp->modified (changed);
2714 2715
2715// // } 2716// // }
2716 2717
2717// mViewManager->updateView(); 2718// mViewManager->updateView();
2718// } 2719// }
2719 2720
2720void CalendarView::appointment_show() 2721void CalendarView::appointment_show()
2721{ 2722{
2722 Event *anEvent = 0; 2723 Event *anEvent = 0;
2723 2724
2724 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 2725 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
2725 2726
2726 if (mViewManager->currentView()->isEventView()) { 2727 if (mViewManager->currentView()->isEventView()) {
2727 if ( incidence && incidence->type() == "Event" ) { 2728 if ( incidence && incidence->type() == "Event" ) {
2728 anEvent = static_cast<Event *>(incidence); 2729 anEvent = static_cast<Event *>(incidence);
2729 } 2730 }
2730 } 2731 }
2731 2732
2732 if (!anEvent) { 2733 if (!anEvent) {
2733 KNotifyClient::beep(); 2734 KNotifyClient::beep();
2734 return; 2735 return;
2735 } 2736 }
2736 2737
2737 showEvent(anEvent); 2738 showEvent(anEvent);
2738} 2739}
2739 2740
2740void CalendarView::appointment_edit() 2741void CalendarView::appointment_edit()
2741{ 2742{
2742 Event *anEvent = 0; 2743 Event *anEvent = 0;
2743 2744
2744 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 2745 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
2745 2746
2746 if (mViewManager->currentView()->isEventView()) { 2747 if (mViewManager->currentView()->isEventView()) {
2747 if ( incidence && incidence->type() == "Event" ) { 2748 if ( incidence && incidence->type() == "Event" ) {
2748 anEvent = static_cast<Event *>(incidence); 2749 anEvent = static_cast<Event *>(incidence);
2749 } 2750 }
2750 } 2751 }
2751 2752
2752 if (!anEvent) { 2753 if (!anEvent) {
2753 KNotifyClient::beep(); 2754 KNotifyClient::beep();
2754 return; 2755 return;
2755 } 2756 }
2756 2757
2757 editEvent(anEvent); 2758 editEvent(anEvent);
2758} 2759}
2759 2760
2760void CalendarView::appointment_delete() 2761void CalendarView::appointment_delete()
2761{ 2762{
2762 Event *anEvent = 0; 2763 Event *anEvent = 0;
2763 2764
2764 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 2765 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
2765 2766
2766 if (mViewManager->currentView()->isEventView()) { 2767 if (mViewManager->currentView()->isEventView()) {
2767 if ( incidence && incidence->type() == "Event" ) { 2768 if ( incidence && incidence->type() == "Event" ) {
2768 anEvent = static_cast<Event *>(incidence); 2769 anEvent = static_cast<Event *>(incidence);
2769 } 2770 }
2770 } 2771 }
2771 2772
2772 if (!anEvent) { 2773 if (!anEvent) {
2773 KNotifyClient::beep(); 2774 KNotifyClient::beep();
2774 return; 2775 return;
2775 } 2776 }
2776 2777
2777 deleteEvent(anEvent); 2778 deleteEvent(anEvent);
2778} 2779}
2779 2780
2780void CalendarView::todo_resub( Todo * parent, Todo * sub ) 2781void CalendarView::todo_resub( Todo * parent, Todo * sub )
2781{ 2782{
2782 if (!sub) return; 2783 if (!sub) return;
2783 if (!parent) return; 2784 if (!parent) return;
2784 if ( sub->relatedTo() ) 2785 if ( sub->relatedTo() )
2785 sub->relatedTo()->removeRelation(sub); 2786 sub->relatedTo()->removeRelation(sub);
2786 sub->setRelatedTo(parent); 2787 sub->setRelatedTo(parent);
2787 sub->setRelatedToUid(parent->uid()); 2788 sub->setRelatedToUid(parent->uid());
2788 parent->addRelation(sub); 2789 parent->addRelation(sub);
2789 sub->updated(); 2790 sub->updated();
2790 parent->updated(); 2791 parent->updated();
2791 setModified(true); 2792 setModified(true);
2792 updateView(); 2793 updateView();
2793} 2794}
2794void CalendarView::todo_unsub(Todo *anTodo ) 2795void CalendarView::todo_unsub(Todo *anTodo )
2795{ 2796{
2796 // Todo *anTodo = selectedTodo(); 2797 // Todo *anTodo = selectedTodo();
2797 if (!anTodo) return; 2798 if (!anTodo) return;
2798 if (!anTodo->relatedTo()) return; 2799 if (!anTodo->relatedTo()) return;
2799 anTodo->relatedTo()->removeRelation(anTodo); 2800 anTodo->relatedTo()->removeRelation(anTodo);
2800 anTodo->setRelatedTo(0); 2801 anTodo->setRelatedTo(0);
2801 anTodo->updated(); 2802 anTodo->updated();
2802 anTodo->setRelatedToUid(""); 2803 anTodo->setRelatedToUid("");
2803 setModified(true); 2804 setModified(true);
2804 updateView(); 2805 updateView();
2805} 2806}
2806 2807
2807void CalendarView::deleteTodo(Todo *todo) 2808void CalendarView::deleteTodo(Todo *todo)
2808{ 2809{
2809 if (!todo) { 2810 if (!todo) {
2810 KNotifyClient::beep(); 2811 KNotifyClient::beep();
2811 return; 2812 return;
2812 } 2813 }
2813 if (KOPrefs::instance()->mConfirm) { 2814 if (KOPrefs::instance()->mConfirm) {
2814 switch (msgItemDelete()) { 2815 switch (msgItemDelete()) {
2815 case KMessageBox::Continue: // OK 2816 case KMessageBox::Continue: // OK
2816 if (!todo->relations().isEmpty()) { 2817 if (!todo->relations().isEmpty()) {
2817 KMessageBox::sorry(this,i18n("Cannot delete To-Do\nwhich has children."), 2818 KMessageBox::sorry(this,i18n("Cannot delete To-Do\nwhich has children."),
2818 i18n("Delete To-Do")); 2819 i18n("Delete To-Do"));
2819 } else { 2820 } else {
2820 checkExternalId( todo ); 2821 checkExternalId( todo );
2821 calendar()->deleteTodo(todo); 2822 calendar()->deleteTodo(todo);
2822 changeTodoDisplay( todo,KOGlobals::EVENTDELETED ); 2823 changeTodoDisplay( todo,KOGlobals::EVENTDELETED );
2823 updateView(); 2824 updateView();
2824 } 2825 }
2825 break; 2826 break;
2826 } // switch 2827 } // switch
2827 } else { 2828 } else {
2828 if (!todo->relations().isEmpty()) { 2829 if (!todo->relations().isEmpty()) {
2829 KMessageBox::sorry(this,i18n("Cannot delete To-Do\nwhich has children."), 2830 KMessageBox::sorry(this,i18n("Cannot delete To-Do\nwhich has children."),
2830 i18n("Delete To-Do")); 2831 i18n("Delete To-Do"));
2831 } else { 2832 } else {
2832 checkExternalId( todo ); 2833 checkExternalId( todo );
2833 mCalendar->deleteTodo(todo); 2834 mCalendar->deleteTodo(todo);
2834 changeTodoDisplay( todo,KOGlobals::EVENTDELETED ); 2835 changeTodoDisplay( todo,KOGlobals::EVENTDELETED );
2835 updateView(); 2836 updateView();
2836 } 2837 }
2837 } 2838 }
2838 emit updateSearchDialog(); 2839 emit updateSearchDialog();
2839} 2840}
2840void CalendarView::deleteJournal(Journal *jour) 2841void CalendarView::deleteJournal(Journal *jour)
2841{ 2842{
2842 if (!jour) { 2843 if (!jour) {
2843 KNotifyClient::beep(); 2844 KNotifyClient::beep();
2844 return; 2845 return;
2845 } 2846 }
2846 if (KOPrefs::instance()->mConfirm) { 2847 if (KOPrefs::instance()->mConfirm) {
2847 switch (msgItemDelete()) { 2848 switch (msgItemDelete()) {
2848 case KMessageBox::Continue: // OK 2849 case KMessageBox::Continue: // OK
2849 calendar()->deleteJournal(jour); 2850 calendar()->deleteJournal(jour);
2850 updateView(); 2851 updateView();
2851 break; 2852 break;
2852 } // switch 2853 } // switch
2853 } else { 2854 } else {
2854 calendar()->deleteJournal(jour);; 2855 calendar()->deleteJournal(jour);;
2855 updateView(); 2856 updateView();
2856 } 2857 }
2857 emit updateSearchDialog(); 2858 emit updateSearchDialog();
2858} 2859}
2859 2860
2860void CalendarView::deleteEvent(Event *anEvent) 2861void CalendarView::deleteEvent(Event *anEvent)
2861{ 2862{
2862 if (!anEvent) { 2863 if (!anEvent) {
2863 KNotifyClient::beep(); 2864 KNotifyClient::beep();
2864 return; 2865 return;
2865 } 2866 }
2866 2867
2867 if (anEvent->recurrence()->doesRecur()) { 2868 if (anEvent->recurrence()->doesRecur()) {
2868 QDate itemDate = mViewManager->currentSelectionDate(); 2869 QDate itemDate = mViewManager->currentSelectionDate();
2869 int km; 2870 int km;
2870 if (!itemDate.isValid()) { 2871 if (!itemDate.isValid()) {
2871 //kdDebug() << "Date Not Valid" << endl; 2872 //kdDebug() << "Date Not Valid" << endl;
2872 if (KOPrefs::instance()->mConfirm) { 2873 if (KOPrefs::instance()->mConfirm) {
2873 km = KMessageBox::warningContinueCancel(this,anEvent->summary() + 2874 km = KMessageBox::warningContinueCancel(this,anEvent->summary() +
2874 i18n("\nThis event recurs\nover multiple dates.\nAre you sure you want\nto delete this event\nand all its recurrences?"), 2875 i18n("\nThis event recurs\nover multiple dates.\nAre you sure you want\nto delete this event\nand all its recurrences?"),
2875 i18n("KO/Pi Confirmation"),i18n("Delete All")); 2876 i18n("KO/Pi Confirmation"),i18n("Delete All"));
2876 if ( km == KMessageBox::Continue ) 2877 if ( km == KMessageBox::Continue )
2877 km = KMessageBox::No; // No = all below 2878 km = KMessageBox::No; // No = all below
2878 } else 2879 } else
2879 km = KMessageBox::No; 2880 km = KMessageBox::No;
2880 } else { 2881 } else {
2881 km = KMessageBox::warningYesNoCancel(this,anEvent->summary() + 2882 km = KMessageBox::warningYesNoCancel(this,anEvent->summary() +
2882 i18n("\nThis event recurs\nover multiple dates.\nDo you want to delete\nall it's recurrences,\nor only the current one on:\n")+ 2883 i18n("\nThis event recurs\nover multiple dates.\nDo you want to delete\nall it's recurrences,\nor only the current one on:\n")+
2883 KGlobal::locale()->formatDate(itemDate)+i18n(" ?\n\nDelete:\n"), 2884 KGlobal::locale()->formatDate(itemDate)+i18n(" ?\n\nDelete:\n"),
2884 i18n("KO/Pi Confirmation"),i18n("Current"), 2885 i18n("KO/Pi Confirmation"),i18n("Current"),
2885 i18n("All")); 2886 i18n("All"));
2886 } 2887 }
2887 switch(km) { 2888 switch(km) {
2888 2889
2889 case KMessageBox::No: // Continue // all 2890 case KMessageBox::No: // Continue // all
2890 //qDebug("KMessageBox::No "); 2891 //qDebug("KMessageBox::No ");
2891 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0) 2892 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0)
2892 schedule(Scheduler::Cancel,anEvent); 2893 schedule(Scheduler::Cancel,anEvent);
2893 2894
2894 checkExternalId( anEvent); 2895 checkExternalId( anEvent);
2895 mCalendar->deleteEvent(anEvent); 2896 mCalendar->deleteEvent(anEvent);
2896 changeEventDisplay(anEvent,KOGlobals::EVENTDELETED); 2897 changeEventDisplay(anEvent,KOGlobals::EVENTDELETED);
2897 break; 2898 break;
2898 2899
2899 // Disabled because it does not work 2900 // Disabled because it does not work
2900 //#if 0 2901 //#if 0
2901 case KMessageBox::Yes: // just this one 2902 case KMessageBox::Yes: // just this one
2902 //QDate qd = mNavigator->selectedDates().first(); 2903 //QDate qd = mNavigator->selectedDates().first();
2903 //if (!qd.isValid()) { 2904 //if (!qd.isValid()) {
2904 // kdDebug() << "no date selected, or invalid date" << endl; 2905 // kdDebug() << "no date selected, or invalid date" << endl;
2905 // KNotifyClient::beep(); 2906 // KNotifyClient::beep();
2906 // return; 2907 // return;
2907 //} 2908 //}
2908 //while (!anEvent->recursOn(qd)) qd = qd.addDays(1); 2909 //while (!anEvent->recursOn(qd)) qd = qd.addDays(1);
2909 if (itemDate!=QDate(1,1,1) || itemDate.isValid()) { 2910 if (itemDate!=QDate(1,1,1) || itemDate.isValid()) {
2910 anEvent->addExDate(itemDate); 2911 anEvent->addExDate(itemDate);
2911 int duration = anEvent->recurrence()->duration(); 2912 int duration = anEvent->recurrence()->duration();
2912 if ( duration > 0 ) { 2913 if ( duration > 0 ) {
2913 anEvent->recurrence()->setDuration( duration - 1 ); 2914 anEvent->recurrence()->setDuration( duration - 1 );
2914 } 2915 }
2915 changeEventDisplay(anEvent, KOGlobals::EVENTEDITED); 2916 changeEventDisplay(anEvent, KOGlobals::EVENTEDITED);
2916 } 2917 }
2917 break; 2918 break;
2918 //#endif 2919 //#endif
2919 } // switch 2920 } // switch
2920 } else { 2921 } else {
2921 if (KOPrefs::instance()->mConfirm) { 2922 if (KOPrefs::instance()->mConfirm) {
2922 switch (KMessageBox::warningContinueCancel(this,anEvent->summary() + 2923 switch (KMessageBox::warningContinueCancel(this,anEvent->summary() +
2923 i18n("\nAre you sure you want\nto delete this event?"), 2924 i18n("\nAre you sure you want\nto delete this event?"),
2924 i18n("KO/Pi Confirmation"),i18n("Delete"))) { 2925 i18n("KO/Pi Confirmation"),i18n("Delete"))) {
2925 case KMessageBox::Continue: // OK 2926 case KMessageBox::Continue: // OK
2926 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0) 2927 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0)
2927 schedule(Scheduler::Cancel,anEvent); 2928 schedule(Scheduler::Cancel,anEvent);
2928 checkExternalId( anEvent); 2929 checkExternalId( anEvent);
2929 mCalendar->deleteEvent(anEvent); 2930 mCalendar->deleteEvent(anEvent);
2930 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED); 2931 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED);
2931 break; 2932 break;
2932 } // switch 2933 } // switch
2933 } else { 2934 } else {
2934 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0) 2935 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0)
2935 schedule(Scheduler::Cancel,anEvent); 2936 schedule(Scheduler::Cancel,anEvent);
2936 checkExternalId( anEvent); 2937 checkExternalId( anEvent);
2937 mCalendar->deleteEvent(anEvent); 2938 mCalendar->deleteEvent(anEvent);
2938 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED); 2939 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED);
2939 } 2940 }
2940 } // if-else 2941 } // if-else
2941 emit updateSearchDialog(); 2942 emit updateSearchDialog();
2942} 2943}
2943 2944
2944bool CalendarView::deleteEvent(const QString &uid) 2945bool CalendarView::deleteEvent(const QString &uid)
2945{ 2946{
2946 Event *ev = mCalendar->event(uid); 2947 Event *ev = mCalendar->event(uid);
2947 if (ev) { 2948 if (ev) {
2948 deleteEvent(ev); 2949 deleteEvent(ev);
2949 return true; 2950 return true;
2950 } else { 2951 } else {
2951 return false; 2952 return false;
2952 } 2953 }
2953} 2954}
2954 2955
2955/*****************************************************************************/ 2956/*****************************************************************************/
2956 2957
2957void CalendarView::action_mail() 2958void CalendarView::action_mail()
2958{ 2959{
2959#ifndef KORG_NOMAIL 2960#ifndef KORG_NOMAIL
2960 KOMailClient mailClient; 2961 KOMailClient mailClient;
2961 2962
2962 Incidence *incidence = currentSelection(); 2963 Incidence *incidence = currentSelection();
2963 2964
2964 if (!incidence) { 2965 if (!incidence) {
2965 KMessageBox::sorry(this,i18n("Can't generate mail:\nNo event selected.")); 2966 KMessageBox::sorry(this,i18n("Can't generate mail:\nNo event selected."));
2966 return; 2967 return;
2967 } 2968 }
2968 if(incidence->attendeeCount() == 0 ) { 2969 if(incidence->attendeeCount() == 0 ) {
2969 KMessageBox::sorry(this, 2970 KMessageBox::sorry(this,
2970 i18n("Can't generate mail:\nNo attendees defined.\n")); 2971 i18n("Can't generate mail:\nNo attendees defined.\n"));
2971 return; 2972 return;
2972 } 2973 }
2973 2974
2974 CalendarLocal cal_tmp; 2975 CalendarLocal cal_tmp;
2975 Event *event = 0; 2976 Event *event = 0;
2976 Event *ev = 0; 2977 Event *ev = 0;
2977 if ( incidence && incidence->type() == "Event" ) { 2978 if ( incidence && incidence->type() == "Event" ) {
2978 event = static_cast<Event *>(incidence); 2979 event = static_cast<Event *>(incidence);
2979 ev = new Event(*event); 2980 ev = new Event(*event);
2980 cal_tmp.addEvent(ev); 2981 cal_tmp.addEvent(ev);
2981 } 2982 }
2982 ICalFormat mForm(); 2983 ICalFormat mForm();
2983 QString attachment = mForm.toString( &cal_tmp ); 2984 QString attachment = mForm.toString( &cal_tmp );
2984 if (ev) delete(ev); 2985 if (ev) delete(ev);
2985 2986
2986 mailClient.mailAttendees(currentSelection(), attachment); 2987 mailClient.mailAttendees(currentSelection(), attachment);
2987 2988
2988#endif 2989#endif
2989 2990
2990#if 0 2991#if 0
2991 Event *anEvent = 0; 2992 Event *anEvent = 0;
2992 if (mViewManager->currentView()->isEventView()) { 2993 if (mViewManager->currentView()->isEventView()) {
2993 anEvent = dynamic_cast<Event *>((mViewManager->currentView()->selectedIncidences()).first()); 2994 anEvent = dynamic_cast<Event *>((mViewManager->currentView()->selectedIncidences()).first());
2994 } 2995 }
2995 2996
2996 if (!anEvent) { 2997 if (!anEvent) {
2997 KMessageBox::sorry(this,i18n("Can't generate mail:\nNo event selected.")); 2998 KMessageBox::sorry(this,i18n("Can't generate mail:\nNo event selected."));
2998 return; 2999 return;
2999 } 3000 }
3000 if(anEvent->attendeeCount() == 0 ) { 3001 if(anEvent->attendeeCount() == 0 ) {
3001 KMessageBox::sorry(this, 3002 KMessageBox::sorry(this,
3002 i18n("Can't generate mail:\nNo attendees defined.\n")); 3003 i18n("Can't generate mail:\nNo attendees defined.\n"));
3003 return; 3004 return;
3004 } 3005 }
3005 3006
3006 mailobject.emailEvent(anEvent); 3007 mailobject.emailEvent(anEvent);
3007#endif 3008#endif
3008} 3009}
3009 3010
3010 3011
3011void CalendarView::schedule_publish(Incidence *incidence) 3012void CalendarView::schedule_publish(Incidence *incidence)
3012{ 3013{
3013 Event *event = 0; 3014 Event *event = 0;
3014 Todo *todo = 0; 3015 Todo *todo = 0;
3015 3016
3016 if (incidence == 0) { 3017 if (incidence == 0) {
3017 incidence = mViewManager->currentView()->selectedIncidences().first(); 3018 incidence = mViewManager->currentView()->selectedIncidences().first();
3018 if (incidence == 0) { 3019 if (incidence == 0) {
3019 incidence = mTodoList->selectedIncidences().first(); 3020 incidence = mTodoList->selectedIncidences().first();
3020 } 3021 }
3021 } 3022 }
3022 if ( incidence && incidence->type() == "Event" ) { 3023 if ( incidence && incidence->type() == "Event" ) {
3023 event = static_cast<Event *>(incidence); 3024 event = static_cast<Event *>(incidence);
3024 } else { 3025 } else {
3025 if ( incidence && incidence->type() == "Todo" ) { 3026 if ( incidence && incidence->type() == "Todo" ) {
3026 todo = static_cast<Todo *>(incidence); 3027 todo = static_cast<Todo *>(incidence);
3027 } 3028 }
3028 } 3029 }
3029 3030
3030 if (!event && !todo) { 3031 if (!event && !todo) {
3031 KMessageBox::sorry(this,i18n("No event selected.")); 3032 KMessageBox::sorry(this,i18n("No event selected."));
3032 return; 3033 return;
3033 } 3034 }
3034 3035
3035 PublishDialog *publishdlg = new PublishDialog(); 3036 PublishDialog *publishdlg = new PublishDialog();
3036 if (incidence->attendeeCount()>0) { 3037 if (incidence->attendeeCount()>0) {
3037 QPtrList<Attendee> attendees = incidence->attendees(); 3038 QPtrList<Attendee> attendees = incidence->attendees();
3038 attendees.first(); 3039 attendees.first();
3039 while ( attendees.current()!=0 ) { 3040 while ( attendees.current()!=0 ) {
3040 publishdlg->addAttendee(attendees.current()); 3041 publishdlg->addAttendee(attendees.current());
3041 attendees.next(); 3042 attendees.next();
3042 } 3043 }
3043 } 3044 }
3044 bool send = true; 3045 bool send = true;
3045 if ( KOPrefs::instance()->mMailClient == KOPrefs::MailClientSendmail ) { 3046 if ( KOPrefs::instance()->mMailClient == KOPrefs::MailClientSendmail ) {
3046 if ( publishdlg->exec() != QDialog::Accepted ) 3047 if ( publishdlg->exec() != QDialog::Accepted )
3047 send = false; 3048 send = false;
3048 } 3049 }
3049 if ( send ) { 3050 if ( send ) {
3050 OutgoingDialog *dlg = mDialogManager->outgoingDialog(); 3051 OutgoingDialog *dlg = mDialogManager->outgoingDialog();
3051 if ( event ) { 3052 if ( event ) {
3052 Event *ev = new Event(*event); 3053 Event *ev = new Event(*event);
3053 ev->registerObserver(0); 3054 ev->registerObserver(0);
3054 ev->clearAttendees(); 3055 ev->clearAttendees();
3055 if (!dlg->addMessage(ev,Scheduler::Publish,publishdlg->addresses())) { 3056 if (!dlg->addMessage(ev,Scheduler::Publish,publishdlg->addresses())) {
3056 delete(ev); 3057 delete(ev);
3057 } 3058 }
3058 } else { 3059 } else {
3059 if ( todo ) { 3060 if ( todo ) {
3060 Todo *ev = new Todo(*todo); 3061 Todo *ev = new Todo(*todo);
3061 ev->registerObserver(0); 3062 ev->registerObserver(0);
3062 ev->clearAttendees(); 3063 ev->clearAttendees();
3063 if (!dlg->addMessage(ev,Scheduler::Publish,publishdlg->addresses())) { 3064 if (!dlg->addMessage(ev,Scheduler::Publish,publishdlg->addresses())) {
3064 delete(ev); 3065 delete(ev);
3065 } 3066 }
3066 } 3067 }
3067 } 3068 }
3068 } 3069 }
3069 delete publishdlg; 3070 delete publishdlg;
3070} 3071}
3071 3072
3072void CalendarView::schedule_request(Incidence *incidence) 3073void CalendarView::schedule_request(Incidence *incidence)
3073{ 3074{
3074 schedule(Scheduler::Request,incidence); 3075 schedule(Scheduler::Request,incidence);