summaryrefslogtreecommitdiffabout
path: root/korganizer
authorzautrix <zautrix>2005-08-17 19:54:28 (UTC)
committer zautrix <zautrix>2005-08-17 19:54:28 (UTC)
commit7b85cd21eac504f2004df9f3c2b818cbc1478fc0 (patch) (unidiff)
tree8b99349eb4ddb9fb10e44618a03f17a80810a392 /korganizer
parent39f1119563e038a029fd23c4b3af03eda02fe308 (diff)
downloadkdepimpi-7b85cd21eac504f2004df9f3c2b818cbc1478fc0.zip
kdepimpi-7b85cd21eac504f2004df9f3c2b818cbc1478fc0.tar.gz
kdepimpi-7b85cd21eac504f2004df9f3c2b818cbc1478fc0.tar.bz2
uuu
Diffstat (limited to 'korganizer') (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/calendarview.cpp1
1 files changed, 0 insertions, 1 deletions
diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp
index ca071b2..26323b1 100644
--- a/korganizer/calendarview.cpp
+++ b/korganizer/calendarview.cpp
@@ -1782,1537 +1782,1536 @@ bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int
1782 inL->setCalID( 0 );// add to default cal 1782 inL->setCalID( 0 );// add to default cal
1783 local->addIncidence( inL ); 1783 local->addIncidence( inL );
1784 ++addedEvent; 1784 ++addedEvent;
1785 1785
1786 } else { 1786 } else {
1787 checkExternSyncEvent(eventRSyncSharp, inR); 1787 checkExternSyncEvent(eventRSyncSharp, inR);
1788 remote->deleteIncidence( inR ); 1788 remote->deleteIncidence( inR );
1789 ++deletedEventR; 1789 ++deletedEventR;
1790 } 1790 }
1791 } 1791 }
1792 } else { 1792 } else {
1793 ++filteredIN; 1793 ++filteredIN;
1794 } 1794 }
1795 } 1795 }
1796 } 1796 }
1797 inR = er.next(); 1797 inR = er.next();
1798 } 1798 }
1799 QPtrList<Incidence> el = local->rawIncidences(); 1799 QPtrList<Incidence> el = local->rawIncidences();
1800 inL = el.first(); 1800 inL = el.first();
1801 modulo = (el.count()/10)+1; 1801 modulo = (el.count()/10)+1;
1802 bar.setCaption (i18n("Add / remove events") ); 1802 bar.setCaption (i18n("Add / remove events") );
1803 bar.setTotalSteps ( el.count() ) ; 1803 bar.setTotalSteps ( el.count() ) ;
1804 bar.show(); 1804 bar.show();
1805 incCounter = 0; 1805 incCounter = 0;
1806 1806
1807 while ( inL ) { 1807 while ( inL ) {
1808 1808
1809 qApp->processEvents(); 1809 qApp->processEvents();
1810 if ( ! bar.isVisible() ) 1810 if ( ! bar.isVisible() )
1811 return false; 1811 return false;
1812 if ( incCounter % modulo == 0 ) 1812 if ( incCounter % modulo == 0 )
1813 bar.setProgress( incCounter ); 1813 bar.setProgress( incCounter );
1814 ++incCounter; 1814 ++incCounter;
1815 uid = inL->uid(); 1815 uid = inL->uid();
1816 bool skipIncidence = false; 1816 bool skipIncidence = false;
1817 if ( uid.left(15) == QString("last-syncEvent-") ) 1817 if ( uid.left(15) == QString("last-syncEvent-") )
1818 skipIncidence = true; 1818 skipIncidence = true;
1819 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL && inL->typeID() == journalID ) 1819 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL && inL->typeID() == journalID )
1820 skipIncidence = true; 1820 skipIncidence = true;
1821 if ( !skipIncidence ) { 1821 if ( !skipIncidence ) {
1822 inR = remote->incidenceForUid( uid , true ); 1822 inR = remote->incidenceForUid( uid , true );
1823 if ( ! inR ) { 1823 if ( ! inR ) {
1824 if ( !filterOUT || filterOUT->filterCalendarItem( inL ) ){ 1824 if ( !filterOUT || filterOUT->filterCalendarItem( inL ) ){
1825 // no conflict ********** add or delete local 1825 // no conflict ********** add or delete local
1826 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1826 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1827 if ( !inL->getID(mCurrentSyncDevice).isEmpty() && mode != 4 ) { 1827 if ( !inL->getID(mCurrentSyncDevice).isEmpty() && mode != 4 ) {
1828 checkExternSyncEvent(eventLSyncSharp, inL); 1828 checkExternSyncEvent(eventLSyncSharp, inL);
1829 local->deleteIncidence( inL ); 1829 local->deleteIncidence( inL );
1830 ++deletedEventL; 1830 ++deletedEventL;
1831 } else { 1831 } else {
1832 if ( ! mSyncManager->mWriteBackExistingOnly ) { 1832 if ( ! mSyncManager->mWriteBackExistingOnly ) {
1833 inL->removeID(mCurrentSyncDevice ); 1833 inL->removeID(mCurrentSyncDevice );
1834 ++addedEventR; 1834 ++addedEventR;
1835 //qDebug("remote added Incidence %s ", inL->summary().latin1()); 1835 //qDebug("remote added Incidence %s ", inL->summary().latin1());
1836 inL->setLastModified( modifiedCalendar ); 1836 inL->setLastModified( modifiedCalendar );
1837 inR = inL->clone(); 1837 inR = inL->clone();
1838 inR->setIDStr( ":" ); 1838 inR->setIDStr( ":" );
1839 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL ); 1839 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL );
1840 inR->setCalID( 0 );// add to default cal 1840 inR->setCalID( 0 );// add to default cal
1841 remote->addIncidence( inR ); 1841 remote->addIncidence( inR );
1842 } 1842 }
1843 } 1843 }
1844 } else { 1844 } else {
1845 if ( inL->lastModified() < mLastCalendarSync && mode != 4 ) { 1845 if ( inL->lastModified() < mLastCalendarSync && mode != 4 ) {
1846 checkExternSyncEvent(eventLSyncSharp, inL); 1846 checkExternSyncEvent(eventLSyncSharp, inL);
1847 local->deleteIncidence( inL ); 1847 local->deleteIncidence( inL );
1848 ++deletedEventL; 1848 ++deletedEventL;
1849 } else { 1849 } else {
1850 if ( ! mSyncManager->mWriteBackExistingOnly ) { 1850 if ( ! mSyncManager->mWriteBackExistingOnly ) {
1851 ++addedEventR; 1851 ++addedEventR;
1852 inL->setLastModified( modifiedCalendar ); 1852 inL->setLastModified( modifiedCalendar );
1853 inR = inL->clone(); 1853 inR = inL->clone();
1854 inR->setIDStr( ":" ); 1854 inR->setIDStr( ":" );
1855 inR->setCalID( 0 );// add to default cal 1855 inR->setCalID( 0 );// add to default cal
1856 remote->addIncidence( inR ); 1856 remote->addIncidence( inR );
1857 } 1857 }
1858 } 1858 }
1859 } 1859 }
1860 } else { 1860 } else {
1861 ++filteredOUT; 1861 ++filteredOUT;
1862 } 1862 }
1863 } 1863 }
1864 } 1864 }
1865 inL = el.next(); 1865 inL = el.next();
1866 } 1866 }
1867 int delFut = 0; 1867 int delFut = 0;
1868 int remRem = 0; 1868 int remRem = 0;
1869 if ( mSyncManager->mWriteBackInFuture ) { 1869 if ( mSyncManager->mWriteBackInFuture ) {
1870 er = remote->rawIncidences(); 1870 er = remote->rawIncidences();
1871 remRem = er.count(); 1871 remRem = er.count();
1872 inR = er.first(); 1872 inR = er.first();
1873 QDateTime dt; 1873 QDateTime dt;
1874 QDateTime cur = QDateTime::currentDateTime().addDays( -(mSyncManager->mWriteBackInPast * 7) ); 1874 QDateTime cur = QDateTime::currentDateTime().addDays( -(mSyncManager->mWriteBackInPast * 7) );
1875 QDateTime end = QDateTime::currentDateTime().addDays( (mSyncManager->mWriteBackInFuture ) *7 ); 1875 QDateTime end = QDateTime::currentDateTime().addDays( (mSyncManager->mWriteBackInFuture ) *7 );
1876 while ( inR ) { 1876 while ( inR ) {
1877 if ( inR->typeID() == todoID ) { 1877 if ( inR->typeID() == todoID ) {
1878 Todo * t = (Todo*)inR; 1878 Todo * t = (Todo*)inR;
1879 if ( t->hasDueDate() ) 1879 if ( t->hasDueDate() )
1880 dt = t->dtDue(); 1880 dt = t->dtDue();
1881 else 1881 else
1882 dt = cur.addSecs( 62 ); 1882 dt = cur.addSecs( 62 );
1883 } 1883 }
1884 else if (inR->typeID() == eventID ) { 1884 else if (inR->typeID() == eventID ) {
1885 bool ok; 1885 bool ok;
1886 dt = inR->getNextOccurence( cur, &ok ); 1886 dt = inR->getNextOccurence( cur, &ok );
1887 if ( !ok ) 1887 if ( !ok )
1888 dt = cur.addSecs( -62 ); 1888 dt = cur.addSecs( -62 );
1889 } 1889 }
1890 else 1890 else
1891 dt = inR->dtStart(); 1891 dt = inR->dtStart();
1892 if ( dt < cur || dt > end ) { 1892 if ( dt < cur || dt > end ) {
1893 remote->deleteIncidence( inR ); 1893 remote->deleteIncidence( inR );
1894 ++delFut; 1894 ++delFut;
1895 } 1895 }
1896 inR = er.next(); 1896 inR = er.next();
1897 } 1897 }
1898 } 1898 }
1899 bar.hide(); 1899 bar.hide();
1900 mLastCalendarSync = QDateTime::currentDateTime().addSecs( 1 ); 1900 mLastCalendarSync = QDateTime::currentDateTime().addSecs( 1 );
1901 eventLSync->setReadOnly( false ); 1901 eventLSync->setReadOnly( false );
1902 eventLSync->setDtStart( mLastCalendarSync ); 1902 eventLSync->setDtStart( mLastCalendarSync );
1903 eventRSync->setDtStart( mLastCalendarSync ); 1903 eventRSync->setDtStart( mLastCalendarSync );
1904 eventLSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) ); 1904 eventLSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) );
1905 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) ); 1905 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) );
1906 eventRSync->setLocation( i18n("Remote from: ")+mCurrentSyncName ) ; 1906 eventRSync->setLocation( i18n("Remote from: ")+mCurrentSyncName ) ;
1907 eventLSync->setLocation(i18n("Local from: ") + mCurrentSyncName ); 1907 eventLSync->setLocation(i18n("Local from: ") + mCurrentSyncName );
1908 eventLSync->setReadOnly( true ); 1908 eventLSync->setReadOnly( true );
1909 qDebug("KO: Normal sync: %d ",mGlobalSyncMode == SYNC_MODE_NORMAL ); 1909 qDebug("KO: Normal sync: %d ",mGlobalSyncMode == SYNC_MODE_NORMAL );
1910 if ( mGlobalSyncMode == SYNC_MODE_NORMAL && !mSyncManager->syncWithDesktop()) // kde is abnormal... 1910 if ( mGlobalSyncMode == SYNC_MODE_NORMAL && !mSyncManager->syncWithDesktop()) // kde is abnormal...
1911 remote->addEvent( eventRSync ); 1911 remote->addEvent( eventRSync );
1912 else 1912 else
1913 delete eventRSync; 1913 delete eventRSync;
1914 qDebug("KO: Sync with desktop %d ",mSyncManager->syncWithDesktop() ); 1914 qDebug("KO: Sync with desktop %d ",mSyncManager->syncWithDesktop() );
1915 QString mes; 1915 QString mes;
1916 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 ); 1916 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 );
1917 QString delmess; 1917 QString delmess;
1918 if ( delFut ) { 1918 if ( delFut ) {
1919 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); 1919 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);
1920 mes += delmess; 1920 mes += delmess;
1921 } 1921 }
1922 mes = i18n("Local calendar changed!\n") +mes; 1922 mes = i18n("Local calendar changed!\n") +mes;
1923 mCalendar->checkAlarmForIncidence( 0, true ); 1923 mCalendar->checkAlarmForIncidence( 0, true );
1924 qDebug( mes ); 1924 qDebug( mes );
1925 if ( mSyncManager->mShowSyncSummary ) { 1925 if ( mSyncManager->mShowSyncSummary ) {
1926 if ( KMessageBox::Cancel == KMessageBox::warningContinueCancel(this, mes, 1926 if ( KMessageBox::Cancel == KMessageBox::warningContinueCancel(this, mes,
1927 i18n("KO/Pi Synchronization"),i18n("Write back"))) { 1927 i18n("KO/Pi Synchronization"),i18n("Write back"))) {
1928 qDebug("KO: WB cancelled "); 1928 qDebug("KO: WB cancelled ");
1929 mSyncManager->mWriteBackFile = false; 1929 mSyncManager->mWriteBackFile = false;
1930 return syncOK; 1930 return syncOK;
1931 } 1931 }
1932 } 1932 }
1933 return syncOK; 1933 return syncOK;
1934} 1934}
1935 1935
1936void CalendarView::setSyncDevice( QString s ) 1936void CalendarView::setSyncDevice( QString s )
1937{ 1937{
1938 mCurrentSyncDevice= s; 1938 mCurrentSyncDevice= s;
1939} 1939}
1940void CalendarView::setSyncName( QString s ) 1940void CalendarView::setSyncName( QString s )
1941{ 1941{
1942 mCurrentSyncName= s; 1942 mCurrentSyncName= s;
1943} 1943}
1944bool CalendarView::syncCalendar(QString filename, int mode) 1944bool CalendarView::syncCalendar(QString filename, int mode)
1945{ 1945{
1946 //qDebug("syncCalendar %s ", filename.latin1()); 1946 //qDebug("syncCalendar %s ", filename.latin1());
1947 mGlobalSyncMode = SYNC_MODE_NORMAL; 1947 mGlobalSyncMode = SYNC_MODE_NORMAL;
1948 CalendarLocal* calendar = new CalendarLocal(); 1948 CalendarLocal* calendar = new CalendarLocal();
1949 calendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId); 1949 calendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId);
1950 FileStorage* storage = new FileStorage( calendar ); 1950 FileStorage* storage = new FileStorage( calendar );
1951 bool syncOK = false; 1951 bool syncOK = false;
1952 storage->setFileName( filename ); 1952 storage->setFileName( filename );
1953 // qDebug("loading ... "); 1953 // qDebug("loading ... ");
1954 if ( storage->load() ) { 1954 if ( storage->load() ) {
1955 getEventViewerDialog()->setSyncMode( true ); 1955 getEventViewerDialog()->setSyncMode( true );
1956 syncOK = synchronizeCalendar( mCalendar, calendar, mode ); 1956 syncOK = synchronizeCalendar( mCalendar, calendar, mode );
1957 getEventViewerDialog()->setSyncMode( false ); 1957 getEventViewerDialog()->setSyncMode( false );
1958 if ( syncOK ) { 1958 if ( syncOK ) {
1959 if ( mSyncManager->mWriteBackFile ) 1959 if ( mSyncManager->mWriteBackFile )
1960 { 1960 {
1961 storage->setSaveFormat( new ICalFormat() ); 1961 storage->setSaveFormat( new ICalFormat() );
1962 storage->save(); 1962 storage->save();
1963 } 1963 }
1964 } 1964 }
1965 setModified( true ); 1965 setModified( true );
1966 } 1966 }
1967 delete storage; 1967 delete storage;
1968 delete calendar; 1968 delete calendar;
1969 if ( syncOK ) 1969 if ( syncOK )
1970 updateView(); 1970 updateView();
1971 return syncOK; 1971 return syncOK;
1972} 1972}
1973 1973
1974void CalendarView::syncExternal( int mode ) 1974void CalendarView::syncExternal( int mode )
1975{ 1975{
1976 mGlobalSyncMode = SYNC_MODE_EXTERNAL; 1976 mGlobalSyncMode = SYNC_MODE_EXTERNAL;
1977 1977
1978 qApp->processEvents(); 1978 qApp->processEvents();
1979 CalendarLocal* calendar = new CalendarLocal(); 1979 CalendarLocal* calendar = new CalendarLocal();
1980 calendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId); 1980 calendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId);
1981 bool syncOK = false; 1981 bool syncOK = false;
1982 bool loadSuccess = false; 1982 bool loadSuccess = false;
1983 PhoneFormat* phoneFormat = 0; 1983 PhoneFormat* phoneFormat = 0;
1984 emit tempDisableBR(true); 1984 emit tempDisableBR(true);
1985#ifndef DESKTOP_VERSION 1985#ifndef DESKTOP_VERSION
1986 SharpFormat* sharpFormat = 0; 1986 SharpFormat* sharpFormat = 0;
1987 if ( mode == 0 ) { // sharp 1987 if ( mode == 0 ) { // sharp
1988 sharpFormat = new SharpFormat () ; 1988 sharpFormat = new SharpFormat () ;
1989 loadSuccess = sharpFormat->load( calendar, mCalendar ); 1989 loadSuccess = sharpFormat->load( calendar, mCalendar );
1990 1990
1991 } else 1991 } else
1992#endif 1992#endif
1993 if ( mode == 1 ) { // phone 1993 if ( mode == 1 ) { // phone
1994 phoneFormat = new PhoneFormat (mCurrentSyncDevice, 1994 phoneFormat = new PhoneFormat (mCurrentSyncDevice,
1995 mSyncManager->mPhoneDevice, 1995 mSyncManager->mPhoneDevice,
1996 mSyncManager->mPhoneConnection, 1996 mSyncManager->mPhoneConnection,
1997 mSyncManager->mPhoneModel); 1997 mSyncManager->mPhoneModel);
1998 loadSuccess = phoneFormat->load( calendar,mCalendar); 1998 loadSuccess = phoneFormat->load( calendar,mCalendar);
1999 1999
2000 } else { 2000 } else {
2001 emit tempDisableBR(false); 2001 emit tempDisableBR(false);
2002 return; 2002 return;
2003 } 2003 }
2004 if ( loadSuccess ) { 2004 if ( loadSuccess ) {
2005 getEventViewerDialog()->setSyncMode( true ); 2005 getEventViewerDialog()->setSyncMode( true );
2006 syncOK = synchronizeCalendar( mCalendar, calendar, mSyncManager->mSyncAlgoPrefs ); 2006 syncOK = synchronizeCalendar( mCalendar, calendar, mSyncManager->mSyncAlgoPrefs );
2007 getEventViewerDialog()->setSyncMode( false ); 2007 getEventViewerDialog()->setSyncMode( false );
2008 qApp->processEvents(); 2008 qApp->processEvents();
2009 if ( syncOK ) { 2009 if ( syncOK ) {
2010 if ( mSyncManager->mWriteBackFile ) 2010 if ( mSyncManager->mWriteBackFile )
2011 { 2011 {
2012 QPtrList<Incidence> iL = mCalendar->rawIncidences(); 2012 QPtrList<Incidence> iL = mCalendar->rawIncidences();
2013 Incidence* inc = iL.first(); 2013 Incidence* inc = iL.first();
2014 if ( phoneFormat ) { 2014 if ( phoneFormat ) {
2015 while ( inc ) { 2015 while ( inc ) {
2016 inc->removeID(mCurrentSyncDevice); 2016 inc->removeID(mCurrentSyncDevice);
2017 inc = iL.next(); 2017 inc = iL.next();
2018 } 2018 }
2019 } 2019 }
2020#ifndef DESKTOP_VERSION 2020#ifndef DESKTOP_VERSION
2021 if ( sharpFormat ) 2021 if ( sharpFormat )
2022 sharpFormat->save(calendar); 2022 sharpFormat->save(calendar);
2023#endif 2023#endif
2024 if ( phoneFormat ) 2024 if ( phoneFormat )
2025 phoneFormat->save(calendar); 2025 phoneFormat->save(calendar);
2026 iL = calendar->rawIncidences(); 2026 iL = calendar->rawIncidences();
2027 inc = iL.first(); 2027 inc = iL.first();
2028 Incidence* loc; 2028 Incidence* loc;
2029 while ( inc ) { 2029 while ( inc ) {
2030 if ( inc->tempSyncStat() == SYNC_TEMPSTATE_NEW_ID ) { 2030 if ( inc->tempSyncStat() == SYNC_TEMPSTATE_NEW_ID ) {
2031 loc = mCalendar->incidence(inc->uid() ); 2031 loc = mCalendar->incidence(inc->uid() );
2032 if ( loc ) { 2032 if ( loc ) {
2033 loc->setID(mCurrentSyncDevice, inc->getID(mCurrentSyncDevice) ); 2033 loc->setID(mCurrentSyncDevice, inc->getID(mCurrentSyncDevice) );
2034 loc->setCsum( mCurrentSyncDevice, inc->getCsum(mCurrentSyncDevice) ); 2034 loc->setCsum( mCurrentSyncDevice, inc->getCsum(mCurrentSyncDevice) );
2035 } 2035 }
2036 } 2036 }
2037 inc = iL.next(); 2037 inc = iL.next();
2038 } 2038 }
2039 Incidence* lse = getLastSyncEvent(); 2039 Incidence* lse = getLastSyncEvent();
2040 if ( lse ) { 2040 if ( lse ) {
2041 lse->setReadOnly( false ); 2041 lse->setReadOnly( false );
2042 lse->setDescription( "" ); 2042 lse->setDescription( "" );
2043 lse->setReadOnly( true ); 2043 lse->setReadOnly( true );
2044 } 2044 }
2045 } 2045 }
2046 } else { 2046 } else {
2047 topLevelWidget()->setCaption( i18n("Sync cancelled or failed.") ); 2047 topLevelWidget()->setCaption( i18n("Sync cancelled or failed.") );
2048 } 2048 }
2049 setModified( true ); 2049 setModified( true );
2050 } else { 2050 } else {
2051 QString question = i18n("Sorry, the database access\ncommand failed!\n\nNothing synced!\n") ; 2051 QString question = i18n("Sorry, the database access\ncommand failed!\n\nNothing synced!\n") ;
2052 QMessageBox::information( 0, i18n("KO/Pi Import - ERROR"), 2052 QMessageBox::information( 0, i18n("KO/Pi Import - ERROR"),
2053 question, i18n("Ok")) ; 2053 question, i18n("Ok")) ;
2054 2054
2055 } 2055 }
2056 delete calendar; 2056 delete calendar;
2057 updateView(); 2057 updateView();
2058 emit tempDisableBR(false); 2058 emit tempDisableBR(false);
2059 return ;//syncOK; 2059 return ;//syncOK;
2060 2060
2061} 2061}
2062 2062
2063bool CalendarView::importBday() 2063bool CalendarView::importBday()
2064{ 2064{
2065#ifndef KORG_NOKABC 2065#ifndef KORG_NOKABC
2066 2066
2067#ifdef DESKTOP_VERSION 2067#ifdef DESKTOP_VERSION
2068 int curCal = mCalendar->defaultCalendar(); 2068 int curCal = mCalendar->defaultCalendar();
2069 int bd = mCalEditView->getBirtdayID(); 2069 int bd = mCalEditView->getBirtdayID();
2070 if ( bd == 0 ) 2070 if ( bd == 0 )
2071 return false; 2071 return false;
2072 mCalendar->setDefaultCalendar( bd ); 2072 mCalendar->setDefaultCalendar( bd );
2073 KABC::StdAddressBook* AddressBook = KABC::StdAddressBook::self( true ); 2073 KABC::StdAddressBook* AddressBook = KABC::StdAddressBook::self( true );
2074 KABC::AddressBook::Iterator it; 2074 KABC::AddressBook::Iterator it;
2075 int count = 0; 2075 int count = 0;
2076 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) { 2076 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) {
2077 ++count; 2077 ++count;
2078 } 2078 }
2079 QProgressBar bar(count,0 ); 2079 QProgressBar bar(count,0 );
2080 int w = 300; 2080 int w = 300;
2081 if ( QApplication::desktop()->width() < 320 ) 2081 if ( QApplication::desktop()->width() < 320 )
2082 w = 220; 2082 w = 220;
2083 int h = bar.sizeHint().height() ; 2083 int h = bar.sizeHint().height() ;
2084 int dw = QApplication::desktop()->width(); 2084 int dw = QApplication::desktop()->width();
2085 int dh = QApplication::desktop()->height(); 2085 int dh = QApplication::desktop()->height();
2086 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 2086 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
2087 bar.show(); 2087 bar.show();
2088 bar.setCaption (i18n("Reading addressbook - close to abort!") ); 2088 bar.setCaption (i18n("Reading addressbook - close to abort!") );
2089 qApp->processEvents(); 2089 qApp->processEvents();
2090 count = 0; 2090 count = 0;
2091 int addCount = 0; 2091 int addCount = 0;
2092 KCal::Attendee* a = 0; 2092 KCal::Attendee* a = 0;
2093 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) { 2093 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) {
2094 if ( ! bar.isVisible() ) 2094 if ( ! bar.isVisible() )
2095 return false; 2095 return false;
2096 bar.setProgress( count++ ); 2096 bar.setProgress( count++ );
2097 qApp->processEvents(); 2097 qApp->processEvents();
2098 //qDebug("add BDay %s %s", (*it).realName().latin1(),(*it).birthday().date().toString().latin1() ); 2098 //qDebug("add BDay %s %s", (*it).realName().latin1(),(*it).birthday().date().toString().latin1() );
2099 if ( (*it).birthday().date().isValid() ){ 2099 if ( (*it).birthday().date().isValid() ){
2100 a = new KCal::Attendee( (*it).realName(), (*it).preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,(*it).uid()) ; 2100 a = new KCal::Attendee( (*it).realName(), (*it).preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,(*it).uid()) ;
2101 if ( addAnniversary( (*it).birthday().date(), (*it).assembledName(), a, true ) ) 2101 if ( addAnniversary( (*it).birthday().date(), (*it).assembledName(), a, true ) )
2102 ++addCount; 2102 ++addCount;
2103 } 2103 }
2104 QDate anni = KGlobal::locale()->readDate( (*it).custom("KADDRESSBOOK", "X-Anniversary" ), "%Y-%m-%d"); 2104 QDate anni = KGlobal::locale()->readDate( (*it).custom("KADDRESSBOOK", "X-Anniversary" ), "%Y-%m-%d");
2105 if ( anni.isValid() ){ 2105 if ( anni.isValid() ){
2106 a = new KCal::Attendee( (*it).realName(), (*it).preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,(*it).uid()) ; 2106 a = new KCal::Attendee( (*it).realName(), (*it).preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,(*it).uid()) ;
2107 if ( addAnniversary( anni, (*it).assembledName(), a, false ) ) 2107 if ( addAnniversary( anni, (*it).assembledName(), a, false ) )
2108 ++addCount; 2108 ++addCount;
2109 } 2109 }
2110 } 2110 }
2111 mCalendar->setDefaultCalendar( curCal ); 2111 mCalendar->setDefaultCalendar( curCal );
2112 updateView(); 2112 updateView();
2113 topLevelWidget()->setCaption(QString::number( addCount )+ i18n(" birthdays/anniversaries added!")); 2113 topLevelWidget()->setCaption(QString::number( addCount )+ i18n(" birthdays/anniversaries added!"));
2114#else //DESKTOP_VERSION 2114#else //DESKTOP_VERSION
2115 2115
2116 ExternalAppHandler::instance()->requestBirthdayListFromKAPI("QPE/Application/kopi", this->name() /* name is here the unique uid*/); 2116 ExternalAppHandler::instance()->requestBirthdayListFromKAPI("QPE/Application/kopi", this->name() /* name is here the unique uid*/);
2117 // the result should now arrive through method insertBirthdays 2117 // the result should now arrive through method insertBirthdays
2118 2118
2119#endif //DESKTOP_VERSION 2119#endif //DESKTOP_VERSION
2120 2120
2121#endif //KORG_NOKABC 2121#endif //KORG_NOKABC
2122 2122
2123 2123
2124 return true; 2124 return true;
2125} 2125}
2126 2126
2127// This method will be called from Ka/Pi as a response to requestBirthdayListFromKAPI 2127// This method will be called from Ka/Pi as a response to requestBirthdayListFromKAPI
2128void CalendarView::insertBirthdays(const QString& uid, const QStringList& birthdayList, 2128void CalendarView::insertBirthdays(const QString& uid, const QStringList& birthdayList,
2129 const QStringList& anniversaryList, const QStringList& realNameList, 2129 const QStringList& anniversaryList, const QStringList& realNameList,
2130 const QStringList& emailList, const QStringList& assembledNameList, 2130 const QStringList& emailList, const QStringList& assembledNameList,
2131 const QStringList& uidList) 2131 const QStringList& uidList)
2132{ 2132{
2133 2133
2134 //qDebug("KO::CalendarView::insertBirthdays"); 2134 //qDebug("KO::CalendarView::insertBirthdays");
2135 if (uid == this->name()) 2135 if (uid == this->name())
2136 { 2136 {
2137 int curCal = mCalendar->defaultCalendar(); 2137 int curCal = mCalendar->defaultCalendar();
2138 int bd = mCalEditView->getBirtdayID(); 2138 int bd = mCalEditView->getBirtdayID();
2139 if ( bd == 0 ) 2139 if ( bd == 0 )
2140 return; 2140 return;
2141 mCalendar->setDefaultCalendar( bd ); 2141 mCalendar->setDefaultCalendar( bd );
2142 2142
2143 2143
2144 int count = birthdayList.count(); 2144 int count = birthdayList.count();
2145 int addCount = 0; 2145 int addCount = 0;
2146 KCal::Attendee* a = 0; 2146 KCal::Attendee* a = 0;
2147 2147
2148 //qDebug("CalView 1 %i", count); 2148 //qDebug("CalView 1 %i", count);
2149 2149
2150 QProgressBar bar(count,0 ); 2150 QProgressBar bar(count,0 );
2151 int w = 300; 2151 int w = 300;
2152 if ( QApplication::desktop()->width() < 320 ) 2152 if ( QApplication::desktop()->width() < 320 )
2153 w = 220; 2153 w = 220;
2154 int h = bar.sizeHint().height() ; 2154 int h = bar.sizeHint().height() ;
2155 int dw = QApplication::desktop()->width(); 2155 int dw = QApplication::desktop()->width();
2156 int dh = QApplication::desktop()->height(); 2156 int dh = QApplication::desktop()->height();
2157 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 2157 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
2158 bar.show(); 2158 bar.show();
2159 bar.setCaption (i18n("inserting birthdays - close to abort!") ); 2159 bar.setCaption (i18n("inserting birthdays - close to abort!") );
2160 qApp->processEvents(); 2160 qApp->processEvents();
2161 2161
2162 QDate birthday; 2162 QDate birthday;
2163 QDate anniversary; 2163 QDate anniversary;
2164 QString realName; 2164 QString realName;
2165 QString email; 2165 QString email;
2166 QString assembledName; 2166 QString assembledName;
2167 QString uid; 2167 QString uid;
2168 bool ok = true; 2168 bool ok = true;
2169 for ( int i = 0; i < count; i++) 2169 for ( int i = 0; i < count; i++)
2170 { 2170 {
2171 if ( ! bar.isVisible() ) 2171 if ( ! bar.isVisible() )
2172 return; 2172 return;
2173 bar.setProgress( i ); 2173 bar.setProgress( i );
2174 qApp->processEvents(); 2174 qApp->processEvents();
2175 2175
2176 birthday = KGlobal::locale()->readDate(birthdayList[i], KLocale::ISODate, &ok); 2176 birthday = KGlobal::locale()->readDate(birthdayList[i], KLocale::ISODate, &ok);
2177 if (!ok) { 2177 if (!ok) {
2178 ;//qDebug("CalendarView::insertBirthdays found invalid birthday: %s",birthdayList[i].latin1()); 2178 ;//qDebug("CalendarView::insertBirthdays found invalid birthday: %s",birthdayList[i].latin1());
2179 } 2179 }
2180 2180
2181 anniversary = KGlobal::locale()->readDate(anniversaryList[i], KLocale::ISODate, &ok); 2181 anniversary = KGlobal::locale()->readDate(anniversaryList[i], KLocale::ISODate, &ok);
2182 if (!ok) { 2182 if (!ok) {
2183 ;//qDebug("CalendarView::insertBirthdays found invalid anniversary: %s",anniversaryList[i].latin1()); 2183 ;//qDebug("CalendarView::insertBirthdays found invalid anniversary: %s",anniversaryList[i].latin1());
2184 } 2184 }
2185 realName = realNameList[i]; 2185 realName = realNameList[i];
2186 email = emailList[i]; 2186 email = emailList[i];
2187 assembledName = assembledNameList[i]; 2187 assembledName = assembledNameList[i];
2188 uid = uidList[i]; 2188 uid = uidList[i];
2189 //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() ); 2189 //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() );
2190 2190
2191 if ( birthday.isValid() ){ 2191 if ( birthday.isValid() ){
2192 a = new KCal::Attendee( realName, email,false,KCal::Attendee::NeedsAction, 2192 a = new KCal::Attendee( realName, email,false,KCal::Attendee::NeedsAction,
2193 KCal::Attendee::ReqParticipant,uid) ; 2193 KCal::Attendee::ReqParticipant,uid) ;
2194 if ( addAnniversary( birthday, assembledName, a, true ) ) 2194 if ( addAnniversary( birthday, assembledName, a, true ) )
2195 ++addCount; 2195 ++addCount;
2196 } 2196 }
2197 2197
2198 if ( anniversary.isValid() ){ 2198 if ( anniversary.isValid() ){
2199 a = new KCal::Attendee( realName, email,false,KCal::Attendee::NeedsAction, 2199 a = new KCal::Attendee( realName, email,false,KCal::Attendee::NeedsAction,
2200 KCal::Attendee::ReqParticipant,uid) ; 2200 KCal::Attendee::ReqParticipant,uid) ;
2201 if ( addAnniversary( anniversary, assembledName, a, false ) ) 2201 if ( addAnniversary( anniversary, assembledName, a, false ) )
2202 ++addCount; 2202 ++addCount;
2203 } 2203 }
2204 } 2204 }
2205 2205
2206 mCalendar->setDefaultCalendar( curCal ); 2206 mCalendar->setDefaultCalendar( curCal );
2207 updateView(); 2207 updateView();
2208 topLevelWidget()->setCaption(QString::number( addCount )+ i18n(" birthdays/anniversaries added!")); 2208 topLevelWidget()->setCaption(QString::number( addCount )+ i18n(" birthdays/anniversaries added!"));
2209 2209
2210 } 2210 }
2211 2211
2212} 2212}
2213 2213
2214 2214
2215 2215
2216bool CalendarView::addAnniversary( QDate date, QString name, KCal::Attendee* a, bool birthday) 2216bool CalendarView::addAnniversary( QDate date, QString name, KCal::Attendee* a, bool birthday)
2217{ 2217{
2218 //qDebug("addAnni "); 2218 //qDebug("addAnni ");
2219 Event * ev = new Event(); 2219 Event * ev = new Event();
2220 ev->setOrganizer(KOPrefs::instance()->email()); 2220 ev->setOrganizer(KOPrefs::instance()->email());
2221 if ( a ) { 2221 if ( a ) {
2222 ev->addAttendee( a ); 2222 ev->addAttendee( a );
2223 } 2223 }
2224 QString kind; 2224 QString kind;
2225 if ( birthday ) { 2225 if ( birthday ) {
2226 kind = i18n( "Birthday" ); 2226 kind = i18n( "Birthday" );
2227 ev->setSummary( name + " (" + QString::number(date.year()) +")"); 2227 ev->setSummary( name + " (" + QString::number(date.year()) +")");
2228 } 2228 }
2229 else { 2229 else {
2230 kind = i18n( "Anniversary" ); 2230 kind = i18n( "Anniversary" );
2231 ev->setSummary( name + " (" + QString::number(date.year()) +") " + kind ); 2231 ev->setSummary( name + " (" + QString::number(date.year()) +") " + kind );
2232 } 2232 }
2233 ev->setCategories( kind ); 2233 ev->setCategories( kind );
2234 ev->setDtStart( QDateTime(date) ); 2234 ev->setDtStart( QDateTime(date) );
2235 ev->setDtEnd( QDateTime(date) ); 2235 ev->setDtEnd( QDateTime(date) );
2236 ev->setFloats( true ); 2236 ev->setFloats( true );
2237 Recurrence * rec = ev->recurrence(); 2237 Recurrence * rec = ev->recurrence();
2238 rec->setYearly(Recurrence::rYearlyMonth,1,-1); 2238 rec->setYearly(Recurrence::rYearlyMonth,1,-1);
2239 rec->addYearlyNum( date.month() ); 2239 rec->addYearlyNum( date.month() );
2240 if ( !mCalendar->addAnniversaryNoDup( ev ) ) { 2240 if ( !mCalendar->addAnniversaryNoDup( ev ) ) {
2241 delete ev; 2241 delete ev;
2242 return false; 2242 return false;
2243 } 2243 }
2244 return true; 2244 return true;
2245 2245
2246} 2246}
2247bool CalendarView::importQtopia( const QString &categories, 2247bool CalendarView::importQtopia( const QString &categories,
2248 const QString &datebook, 2248 const QString &datebook,
2249 const QString &todolist ) 2249 const QString &todolist )
2250{ 2250{
2251 2251
2252 QtopiaFormat qtopiaFormat; 2252 QtopiaFormat qtopiaFormat;
2253 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories)); 2253 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories));
2254 if ( !categories.isEmpty() ) qtopiaFormat.load( mCalendar, categories ); 2254 if ( !categories.isEmpty() ) qtopiaFormat.load( mCalendar, categories );
2255 if ( !datebook.isEmpty() ) qtopiaFormat.load( mCalendar, datebook ); 2255 if ( !datebook.isEmpty() ) qtopiaFormat.load( mCalendar, datebook );
2256 if ( !todolist.isEmpty() ) qtopiaFormat.load( mCalendar, todolist ); 2256 if ( !todolist.isEmpty() ) qtopiaFormat.load( mCalendar, todolist );
2257 2257
2258 updateView(); 2258 updateView();
2259 return true; 2259 return true;
2260 2260
2261#if 0 2261#if 0
2262 mGlobalSyncMode = SYNC_MODE_QTOPIA; 2262 mGlobalSyncMode = SYNC_MODE_QTOPIA;
2263 mCurrentSyncDevice = "qtopia-XML"; 2263 mCurrentSyncDevice = "qtopia-XML";
2264 if ( mSyncManager->mAskForPreferences ) 2264 if ( mSyncManager->mAskForPreferences )
2265 edit_sync_options(); 2265 edit_sync_options();
2266 qApp->processEvents(); 2266 qApp->processEvents();
2267 CalendarLocal* calendar = new CalendarLocal(); 2267 CalendarLocal* calendar = new CalendarLocal();
2268 calendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId); 2268 calendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId);
2269 bool syncOK = false; 2269 bool syncOK = false;
2270 QtopiaFormat qtopiaFormat; 2270 QtopiaFormat qtopiaFormat;
2271 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories)); 2271 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories));
2272 bool loadOk = true; 2272 bool loadOk = true;
2273 if ( !categories.isEmpty() ) 2273 if ( !categories.isEmpty() )
2274 loadOk = qtopiaFormat.load( calendar, categories ); 2274 loadOk = qtopiaFormat.load( calendar, categories );
2275 if ( loadOk && !datebook.isEmpty() ) 2275 if ( loadOk && !datebook.isEmpty() )
2276 loadOk = qtopiaFormat.load( calendar, datebook ); 2276 loadOk = qtopiaFormat.load( calendar, datebook );
2277 if ( loadOk && !todolist.isEmpty() ) 2277 if ( loadOk && !todolist.isEmpty() )
2278 loadOk = qtopiaFormat.load( calendar, todolist ); 2278 loadOk = qtopiaFormat.load( calendar, todolist );
2279 2279
2280 if ( loadOk ) { 2280 if ( loadOk ) {
2281 getEventViewerDialog()->setSyncMode( true ); 2281 getEventViewerDialog()->setSyncMode( true );
2282 syncOK = synchronizeCalendar( mCalendar, calendar, mSyncManager->mSyncAlgoPrefs ); 2282 syncOK = synchronizeCalendar( mCalendar, calendar, mSyncManager->mSyncAlgoPrefs );
2283 getEventViewerDialog()->setSyncMode( false ); 2283 getEventViewerDialog()->setSyncMode( false );
2284 qApp->processEvents(); 2284 qApp->processEvents();
2285 if ( syncOK ) { 2285 if ( syncOK ) {
2286 if ( mSyncManager->mWriteBackFile ) 2286 if ( mSyncManager->mWriteBackFile )
2287 { 2287 {
2288 // write back XML file 2288 // write back XML file
2289 2289
2290 } 2290 }
2291 setModified( true ); 2291 setModified( true );
2292 } 2292 }
2293 } else { 2293 } else {
2294 QString question = i18n("Sorry, the file loading\ncommand failed!\n\nNothing synced!\n") ; 2294 QString question = i18n("Sorry, the file loading\ncommand failed!\n\nNothing synced!\n") ;
2295 QMessageBox::information( 0, i18n("KO/Pi Sync - ERROR"), 2295 QMessageBox::information( 0, i18n("KO/Pi Sync - ERROR"),
2296 question, i18n("Ok")) ; 2296 question, i18n("Ok")) ;
2297 } 2297 }
2298 delete calendar; 2298 delete calendar;
2299 updateView(); 2299 updateView();
2300 return syncOK; 2300 return syncOK;
2301 2301
2302 2302
2303#endif 2303#endif
2304 2304
2305} 2305}
2306 2306
2307void CalendarView::setSyncEventsReadOnly() 2307void CalendarView::setSyncEventsReadOnly()
2308{ 2308{
2309 mCalendar->setSyncEventsReadOnly(); 2309 mCalendar->setSyncEventsReadOnly();
2310} 2310}
2311 2311
2312bool CalendarView::loadCalendars() 2312bool CalendarView::loadCalendars()
2313{ 2313{
2314 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars; 2314 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars;
2315 KopiCalendarFile * cal = calendars.first(); 2315 KopiCalendarFile * cal = calendars.first();
2316 mCalendar->setDefaultCalendar( 1 ); 2316 mCalendar->setDefaultCalendar( 1 );
2317 openCalendar( MainWindow::defaultFileName(), false ); 2317 openCalendar( MainWindow::defaultFileName(), false );
2318 cal = calendars.next(); 2318 cal = calendars.next();
2319 while ( cal ) { 2319 while ( cal ) {
2320 addCalendar( cal ); 2320 addCalendar( cal );
2321 cal = calendars.next(); 2321 cal = calendars.next();
2322 } 2322 }
2323 restoreCalendarSettings(); 2323 restoreCalendarSettings();
2324 return true; 2324 return true;
2325} 2325}
2326bool CalendarView::restoreCalendarSettings() 2326bool CalendarView::restoreCalendarSettings()
2327{ 2327{
2328 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars; 2328 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars;
2329 KopiCalendarFile * cal = calendars.first(); 2329 KopiCalendarFile * cal = calendars.first();
2330 while ( cal ) { 2330 while ( cal ) {
2331 mCalendar->setCalendarEnabled( cal->mCalNumber,cal->isEnabled ); 2331 mCalendar->setCalendarEnabled( cal->mCalNumber,cal->isEnabled );
2332 mCalendar->setAlarmEnabled( cal->mCalNumber, cal->isAlarmEnabled ); 2332 mCalendar->setAlarmEnabled( cal->mCalNumber, cal->isAlarmEnabled );
2333 mCalendar->setReadOnly( cal->mCalNumber, cal->isReadOnly ); 2333 mCalendar->setReadOnly( cal->mCalNumber, cal->isReadOnly );
2334 if ( cal->isStandard ) 2334 if ( cal->isStandard )
2335 mCalendar->setDefaultCalendar( cal->mCalNumber ); 2335 mCalendar->setDefaultCalendar( cal->mCalNumber );
2336 cal = calendars.next(); 2336 cal = calendars.next();
2337 } 2337 }
2338 setSyncEventsReadOnly(); 2338 setSyncEventsReadOnly();
2339 mCalendar->reInitAlarmSettings(); 2339 mCalendar->reInitAlarmSettings();
2340 updateUnmanagedViews(); 2340 updateUnmanagedViews();
2341 updateView(); 2341 updateView();
2342 return true; 2342 return true;
2343} 2343}
2344void CalendarView::addCalendarId( int id ) 2344void CalendarView::addCalendarId( int id )
2345{ 2345{
2346 KopiCalendarFile * cal = KOPrefs::instance()->getCalendar( id ); 2346 KopiCalendarFile * cal = KOPrefs::instance()->getCalendar( id );
2347 if ( cal ) 2347 if ( cal )
2348 addCalendar( cal ); 2348 addCalendar( cal );
2349} 2349}
2350bool CalendarView::addCalendar( KopiCalendarFile * cal ) 2350bool CalendarView::addCalendar( KopiCalendarFile * cal )
2351{ 2351{
2352 cal->mErrorOnLoad = false; 2352 cal->mErrorOnLoad = false;
2353 if ( mCalendar->addCalendarFile( cal->mFileName, cal->mCalNumber )) { 2353 if ( mCalendar->addCalendarFile( cal->mFileName, cal->mCalNumber )) {
2354 cal->mLoadDt = QDateTime::currentDateTime(); 2354 cal->mLoadDt = QDateTime::currentDateTime();
2355 return true; 2355 return true;
2356 } 2356 }
2357 qDebug("KO: Error adding calendar file %s ",cal->mFileName.latin1() ); 2357 qDebug("KO: Error adding calendar file %s ",cal->mFileName.latin1() );
2358 cal->mErrorOnLoad = true; 2358 cal->mErrorOnLoad = true;
2359 return false; 2359 return false;
2360} 2360}
2361bool CalendarView::openCalendar(QString filename, bool merge) 2361bool CalendarView::openCalendar(QString filename, bool merge)
2362{ 2362{
2363 2363
2364 if (filename.isEmpty()) { 2364 if (filename.isEmpty()) {
2365 return false; 2365 return false;
2366 } 2366 }
2367 2367
2368 if (!QFile::exists(filename)) { 2368 if (!QFile::exists(filename)) {
2369 KMessageBox::error(this,i18n("File does not exist:\n '%1'.").arg(filename)); 2369 KMessageBox::error(this,i18n("File does not exist:\n '%1'.").arg(filename));
2370 return false; 2370 return false;
2371 } 2371 }
2372 2372
2373 globalFlagBlockAgenda = 1; 2373 globalFlagBlockAgenda = 1;
2374 clearAllViews(); 2374 clearAllViews();
2375 if (!merge) { 2375 if (!merge) {
2376 mViewManager->setDocumentId( filename ); 2376 mViewManager->setDocumentId( filename );
2377 mCalendar->close(); 2377 mCalendar->close();
2378 } 2378 }
2379 mStorage->setFileName( filename ); 2379 mStorage->setFileName( filename );
2380 2380
2381 if ( mStorage->load() ) { 2381 if ( mStorage->load() ) {
2382 if ( merge ) ;//setModified( true ); 2382 if ( merge ) ;//setModified( true );
2383 else { 2383 else {
2384 //setModified( true ); 2384 //setModified( true );
2385 mViewManager->setDocumentId( filename ); 2385 mViewManager->setDocumentId( filename );
2386 mDialogManager->setDocumentId( filename ); 2386 mDialogManager->setDocumentId( filename );
2387 mTodoList->setDocumentId( filename ); 2387 mTodoList->setDocumentId( filename );
2388 } 2388 }
2389 globalFlagBlockAgenda = 2; 2389 globalFlagBlockAgenda = 2;
2390 // if ( getLastSyncEvent() ) 2390 // if ( getLastSyncEvent() )
2391 // getLastSyncEvent()->setReadOnly( true ); 2391 // getLastSyncEvent()->setReadOnly( true );
2392 mCalendar->reInitAlarmSettings(); 2392 mCalendar->reInitAlarmSettings();
2393 setSyncEventsReadOnly(); 2393 setSyncEventsReadOnly();
2394 updateUnmanagedViews(); 2394 updateUnmanagedViews();
2395 updateView(); 2395 updateView();
2396 if ( filename != MainWindow::defaultFileName() ) { 2396 if ( filename != MainWindow::defaultFileName() ) {
2397 saveCalendar( MainWindow::defaultFileName() ); 2397 saveCalendar( MainWindow::defaultFileName() );
2398 } else { 2398 } else {
2399 QFileInfo finf ( MainWindow::defaultFileName()); 2399 QFileInfo finf ( MainWindow::defaultFileName());
2400 if ( finf.exists() ) { 2400 if ( finf.exists() ) {
2401 setLoadedFileVersion( finf.lastModified () ); 2401 setLoadedFileVersion( finf.lastModified () );
2402 } 2402 }
2403 } 2403 }
2404 return true; 2404 return true;
2405 } else { 2405 } else {
2406 // while failing to load, the calendar object could 2406 // while failing to load, the calendar object could
2407 // have become partially populated. Clear it out. 2407 // have become partially populated. Clear it out.
2408 if ( !merge ) { 2408 if ( !merge ) {
2409 mCalendar->close(); 2409 mCalendar->close();
2410 mViewManager->setDocumentId( filename ); 2410 mViewManager->setDocumentId( filename );
2411 mDialogManager->setDocumentId( filename ); 2411 mDialogManager->setDocumentId( filename );
2412 mTodoList->setDocumentId( filename ); 2412 mTodoList->setDocumentId( filename );
2413 } 2413 }
2414 2414
2415 //KMessageBox::error(this,i18n("Couldn't load calendar\n '%1'.").arg(filename)); 2415 //KMessageBox::error(this,i18n("Couldn't load calendar\n '%1'.").arg(filename));
2416 2416
2417 QTimer::singleShot ( 1, this, SLOT ( showOpenError() ) ); 2417 QTimer::singleShot ( 1, this, SLOT ( showOpenError() ) );
2418 globalFlagBlockAgenda = 2; 2418 globalFlagBlockAgenda = 2;
2419 mCalendar->reInitAlarmSettings(); 2419 mCalendar->reInitAlarmSettings();
2420 setSyncEventsReadOnly(); 2420 setSyncEventsReadOnly();
2421 updateUnmanagedViews(); 2421 updateUnmanagedViews();
2422 updateView(); 2422 updateView();
2423 } 2423 }
2424 return false; 2424 return false;
2425} 2425}
2426void CalendarView::mergeFile( QString fn ) 2426void CalendarView::mergeFile( QString fn )
2427{ 2427{
2428 clearAllViews(); 2428 clearAllViews();
2429 mCalendar->mergeCalendarFile( fn ); 2429 mCalendar->mergeCalendarFile( fn );
2430 mCalendar->reInitAlarmSettings(); 2430 mCalendar->reInitAlarmSettings();
2431 setSyncEventsReadOnly(); 2431 setSyncEventsReadOnly();
2432 updateUnmanagedViews(); 2432 updateUnmanagedViews();
2433 updateView(); 2433 updateView();
2434} 2434}
2435void CalendarView::showOpenError() 2435void CalendarView::showOpenError()
2436{ 2436{
2437 KMessageBox::error(this,i18n("Couldn't load calendar\n.")); 2437 KMessageBox::error(this,i18n("Couldn't load calendar\n."));
2438} 2438}
2439void CalendarView::setLoadedFileVersion(QDateTime dt) 2439void CalendarView::setLoadedFileVersion(QDateTime dt)
2440{ 2440{
2441 loadedFileVersion = dt; 2441 loadedFileVersion = dt;
2442} 2442}
2443bool CalendarView::checkFileChanged(QString fn) 2443bool CalendarView::checkFileChanged(QString fn)
2444{ 2444{
2445 QFileInfo finf ( fn ); 2445 QFileInfo finf ( fn );
2446 if ( !finf.exists() ) 2446 if ( !finf.exists() )
2447 return true; 2447 return true;
2448 QDateTime dt = finf.lastModified (); 2448 QDateTime dt = finf.lastModified ();
2449 if ( dt <= loadedFileVersion ) 2449 if ( dt <= loadedFileVersion )
2450 return false; 2450 return false;
2451 return true; 2451 return true;
2452 2452
2453} 2453}
2454void CalendarView::watchSavedFile() 2454void CalendarView::watchSavedFile()
2455{ 2455{
2456 QFileInfo finf ( MainWindow::defaultFileName()); 2456 QFileInfo finf ( MainWindow::defaultFileName());
2457 if ( !finf.exists() ) 2457 if ( !finf.exists() )
2458 return; 2458 return;
2459 QDateTime dt = finf.lastModified (); 2459 QDateTime dt = finf.lastModified ();
2460 if ( dt < loadedFileVersion ) { 2460 if ( dt < loadedFileVersion ) {
2461 //qDebug("watch %s %s ", dt.toString().latin1(), loadedFileVersion.toString().latin1()); 2461 //qDebug("watch %s %s ", dt.toString().latin1(), loadedFileVersion.toString().latin1());
2462 QTimer::singleShot( 1000 , this, SLOT ( watchSavedFile() ) ); 2462 QTimer::singleShot( 1000 , this, SLOT ( watchSavedFile() ) );
2463 return; 2463 return;
2464 } 2464 }
2465 loadedFileVersion = dt; 2465 loadedFileVersion = dt;
2466} 2466}
2467bool CalendarView::checkAllFileVersions() 2467bool CalendarView::checkAllFileVersions()
2468{ 2468{
2469 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars; 2469 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars;
2470 KopiCalendarFile * cal = calendars.first(); 2470 KopiCalendarFile * cal = calendars.first();
2471 mCalendar->setDefaultCalendar( 1 ); 2471 mCalendar->setDefaultCalendar( 1 );
2472 mCalendar->setDefaultCalendarEnabledOnly(); 2472 mCalendar->setDefaultCalendarEnabledOnly();
2473 if ( !cal->isReadOnly && !cal->mErrorOnLoad ) { 2473 if ( !cal->isReadOnly && !cal->mErrorOnLoad ) {
2474 if ( !checkFileVersion(MainWindow::defaultFileName())) { 2474 if ( !checkFileVersion(MainWindow::defaultFileName())) {
2475 restoreCalendarSettings(); 2475 restoreCalendarSettings();
2476 return false; 2476 return false;
2477 } 2477 }
2478 } 2478 }
2479 cal = calendars.next(); 2479 cal = calendars.next();
2480 QDateTime storeTemp = loadedFileVersion; 2480 QDateTime storeTemp = loadedFileVersion;
2481 while ( cal ) { 2481 while ( cal ) {
2482 if ( !cal->isReadOnly && !cal->mErrorOnLoad ) { 2482 if ( !cal->isReadOnly && !cal->mErrorOnLoad ) {
2483 mCalendar->setDefaultCalendar( cal->mCalNumber ); 2483 mCalendar->setDefaultCalendar( cal->mCalNumber );
2484 mCalendar->setDefaultCalendarEnabledOnly(); 2484 mCalendar->setDefaultCalendarEnabledOnly();
2485 loadedFileVersion = cal->mLoadDt.addSecs( 15 ); 2485 loadedFileVersion = cal->mLoadDt.addSecs( 15 );
2486 if ( !checkFileVersion(cal->mFileName )) { 2486 if ( !checkFileVersion(cal->mFileName )) {
2487 loadedFileVersion = storeTemp; 2487 loadedFileVersion = storeTemp;
2488 restoreCalendarSettings(); 2488 restoreCalendarSettings();
2489 return false; 2489 return false;
2490 } 2490 }
2491 } 2491 }
2492 cal = calendars.next(); 2492 cal = calendars.next();
2493 } 2493 }
2494 loadedFileVersion = storeTemp; 2494 loadedFileVersion = storeTemp;
2495 return true; 2495 return true;
2496} 2496}
2497bool CalendarView::checkFileVersion(QString fn) 2497bool CalendarView::checkFileVersion(QString fn)
2498{ 2498{
2499 QFileInfo finf ( fn ); 2499 QFileInfo finf ( fn );
2500 if ( !finf.exists() ) 2500 if ( !finf.exists() )
2501 return true; 2501 return true;
2502 QDateTime dt = finf.lastModified (); 2502 QDateTime dt = finf.lastModified ();
2503 qDebug("loaded file version %s %s", fn.latin1(), loadedFileVersion.toString().latin1()); 2503 qDebug("loaded file version %s %s", fn.latin1(), loadedFileVersion.toString().latin1());
2504 qDebug("file on disk version %s %s", fn.latin1(),dt.toString().latin1()); 2504 qDebug("file on disk version %s %s", fn.latin1(),dt.toString().latin1());
2505 if ( dt <= loadedFileVersion ) 2505 if ( dt <= loadedFileVersion )
2506 return true; 2506 return true;
2507 int km = KMessageBox::warningYesNoCancel(this, i18n("\nThe file\n%1\non 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(KGlobal::formatMessage(fn,0)).arg( QString::number( finf.size())).arg( KGlobal::locale()->formatDateTime(finf.lastModified (), true, true)) , 2507 int km = KMessageBox::warningYesNoCancel(this, i18n("\nThe file\n%1\non 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(KGlobal::formatMessage(fn,0)).arg( QString::number( finf.size())).arg( KGlobal::locale()->formatDateTime(finf.lastModified (), true, true)) ,
2508 i18n("KO/Pi Warning"),i18n("Overwrite"), 2508 i18n("KO/Pi Warning"),i18n("Overwrite"),
2509 i18n("Sync+save")); 2509 i18n("Sync+save"));
2510 2510
2511 if ( km == KMessageBox::Cancel ) 2511 if ( km == KMessageBox::Cancel )
2512 return false; 2512 return false;
2513 if ( km == KMessageBox::Yes ) 2513 if ( km == KMessageBox::Yes )
2514 return true; 2514 return true;
2515 2515
2516 setSyncDevice("deleteaftersync" ); 2516 setSyncDevice("deleteaftersync" );
2517 mSyncManager->mAskForPreferences = true; 2517 mSyncManager->mAskForPreferences = true;
2518 mSyncManager->mSyncAlgoPrefs = 3; 2518 mSyncManager->mSyncAlgoPrefs = 3;
2519 mSyncManager->mWriteBackFile = false; 2519 mSyncManager->mWriteBackFile = false;
2520 mSyncManager->mWriteBackExistingOnly = false; 2520 mSyncManager->mWriteBackExistingOnly = false;
2521 mSyncManager->mShowSyncSummary = false; 2521 mSyncManager->mShowSyncSummary = false;
2522 syncCalendar( fn, 3 ); 2522 syncCalendar( fn, 3 );
2523 Event * e = getLastSyncEvent(); 2523 Event * e = getLastSyncEvent();
2524 if ( e ) 2524 if ( e )
2525 mCalendar->deleteEvent( e ); 2525 mCalendar->deleteEvent( e );
2526 return true; 2526 return true;
2527} 2527}
2528bool CalendarView::saveCalendars() 2528bool CalendarView::saveCalendars()
2529{ 2529{
2530 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars; 2530 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars;
2531 KopiCalendarFile * cal = calendars.first(); 2531 KopiCalendarFile * cal = calendars.first();
2532 mCalendar->setDefaultCalendar( 1 ); 2532 mCalendar->setDefaultCalendar( 1 );
2533 mCalendar->setDefaultCalendarEnabledOnly(); 2533 mCalendar->setDefaultCalendarEnabledOnly();
2534 QString saveError; 2534 QString saveError;
2535 if ( !saveCalendar( MainWindow::defaultFileName() ) ) 2535 if ( !saveCalendar( MainWindow::defaultFileName() ) )
2536 saveError = cal->mName +"\n"; 2536 saveError = cal->mName +"\n";
2537 cal = calendars.next(); 2537 cal = calendars.next();
2538 while ( cal ) { 2538 while ( cal ) {
2539 if ( !cal->isReadOnly && !cal->mErrorOnLoad ) { 2539 if ( !cal->isReadOnly && !cal->mErrorOnLoad ) {
2540 mCalendar->setDefaultCalendar( cal->mCalNumber ); 2540 mCalendar->setDefaultCalendar( cal->mCalNumber );
2541 mCalendar->setDefaultCalendarEnabledOnly(); 2541 mCalendar->setDefaultCalendarEnabledOnly();
2542 if ( saveCalendar( cal->mFileName ) ) 2542 if ( saveCalendar( cal->mFileName ) )
2543 cal->mLoadDt = QDateTime::currentDateTime(); 2543 cal->mLoadDt = QDateTime::currentDateTime();
2544 else 2544 else
2545 saveError += cal->mName + "\n"; 2545 saveError += cal->mName + "\n";
2546 } 2546 }
2547 cal = calendars.next(); 2547 cal = calendars.next();
2548 } 2548 }
2549 restoreCalendarSettings(); 2549 restoreCalendarSettings();
2550
2551 if ( !saveError.isEmpty() ) { 2550 if ( !saveError.isEmpty() ) {
2552 saveError = KGlobal::formatMessage( i18n("Calendar(s) not saved:"),0 )+"\n" + saveError; 2551 saveError = KGlobal::formatMessage( i18n("Calendar(s) not saved:"),0 )+"\n" + saveError;
2553 KMessageBox::error(this, saveError, i18n("Error saving data")); 2552 KMessageBox::error(this, saveError, i18n("Error saving data"));
2554 return false; 2553 return false;
2555 } 2554 }
2556 return true; 2555 return true;
2557} 2556}
2558bool CalendarView::saveCalendar( QString filename ) 2557bool CalendarView::saveCalendar( QString filename )
2559{ 2558{
2560 2559
2561 // Store back all unsaved data into calendar object 2560 // Store back all unsaved data into calendar object
2562 // qDebug("file %s %d ", filename.latin1() , mViewManager->currentView() ); 2561 // qDebug("file %s %d ", filename.latin1() , mViewManager->currentView() );
2563 if ( mViewManager->currentView() ) 2562 if ( mViewManager->currentView() )
2564 mViewManager->currentView()->flushView(); 2563 mViewManager->currentView()->flushView();
2565 2564
2566 2565
2567 QDateTime lfv = QDateTime::currentDateTime().addSecs( -2); 2566 QDateTime lfv = QDateTime::currentDateTime().addSecs( -2);
2568 mStorage->setSaveFormat( new ICalFormat() ); 2567 mStorage->setSaveFormat( new ICalFormat() );
2569 mStorage->setFileName( filename ); 2568 mStorage->setFileName( filename );
2570 bool success; 2569 bool success;
2571 success = mStorage->save(); 2570 success = mStorage->save();
2572 if ( !success ) { 2571 if ( !success ) {
2573 return false; 2572 return false;
2574 } 2573 }
2575 if ( filename == MainWindow::defaultFileName() ) { 2574 if ( filename == MainWindow::defaultFileName() ) {
2576 setLoadedFileVersion( lfv ); 2575 setLoadedFileVersion( lfv );
2577 watchSavedFile(); 2576 watchSavedFile();
2578 } 2577 }
2579 return true; 2578 return true;
2580} 2579}
2581 2580
2582void CalendarView::closeCalendar() 2581void CalendarView::closeCalendar()
2583{ 2582{
2584 2583
2585 // child windows no longer valid 2584 // child windows no longer valid
2586 clearAllViews(); 2585 clearAllViews();
2587 emit closingDown(); 2586 emit closingDown();
2588 2587
2589 mCalendar->close(); 2588 mCalendar->close();
2590 setModified(false); 2589 setModified(false);
2591 updateView(); 2590 updateView();
2592} 2591}
2593 2592
2594void CalendarView::archiveCalendar() 2593void CalendarView::archiveCalendar()
2595{ 2594{
2596 mDialogManager->showArchiveDialog(); 2595 mDialogManager->showArchiveDialog();
2597} 2596}
2598 2597
2599 2598
2600void CalendarView::readSettings() 2599void CalendarView::readSettings()
2601{ 2600{
2602 2601
2603 2602
2604 // mViewManager->showAgendaView(); 2603 // mViewManager->showAgendaView();
2605 QString str; 2604 QString str;
2606 //qDebug("CalendarView::readSettings() "); 2605 //qDebug("CalendarView::readSettings() ");
2607 // read settings from the KConfig, supplying reasonable 2606 // read settings from the KConfig, supplying reasonable
2608 // defaults where none are to be found 2607 // defaults where none are to be found
2609 KConfig *config = KOGlobals::config(); 2608 KConfig *config = KOGlobals::config();
2610#ifndef KORG_NOSPLITTER 2609#ifndef KORG_NOSPLITTER
2611 config->setGroup("KOrganizer Geometry"); 2610 config->setGroup("KOrganizer Geometry");
2612 2611
2613 QValueList<int> sizes = config->readIntListEntry("Separator1"); 2612 QValueList<int> sizes = config->readIntListEntry("Separator1");
2614 if (sizes.count() != 2) { 2613 if (sizes.count() != 2) {
2615 sizes << mDateNavigator->minimumSizeHint().width(); 2614 sizes << mDateNavigator->minimumSizeHint().width();
2616 sizes << 300; 2615 sizes << 300;
2617 } 2616 }
2618 mPanner->setSizes(sizes); 2617 mPanner->setSizes(sizes);
2619 2618
2620 sizes = config->readIntListEntry("Separator2"); 2619 sizes = config->readIntListEntry("Separator2");
2621 if ( ( mResourceView && sizes.count() == 4 ) || 2620 if ( ( mResourceView && sizes.count() == 4 ) ||
2622 ( !mResourceView && sizes.count() == 3 ) ) { 2621 ( !mResourceView && sizes.count() == 3 ) ) {
2623 mLeftSplitter->setSizes(sizes); 2622 mLeftSplitter->setSizes(sizes);
2624 } 2623 }
2625#endif 2624#endif
2626 globalFlagBlockAgenda = 1; 2625 globalFlagBlockAgenda = 1;
2627 mViewManager->showAgendaView(); 2626 mViewManager->showAgendaView();
2628 //mViewManager->readSettings( config ); 2627 //mViewManager->readSettings( config );
2629 mTodoList->restoreLayout(config,QString("Todo Layout")); 2628 mTodoList->restoreLayout(config,QString("Todo Layout"));
2630 readFilterSettings(config); 2629 readFilterSettings(config);
2631 2630
2632#ifdef DESKTOP_VERSION 2631#ifdef DESKTOP_VERSION
2633 config->setGroup("WidgetLayout"); 2632 config->setGroup("WidgetLayout");
2634 QStringList list; 2633 QStringList list;
2635 list = config->readListEntry("MainLayout"); 2634 list = config->readListEntry("MainLayout");
2636 int x,y,w,h; 2635 int x,y,w,h;
2637 if ( ! list.isEmpty() ) { 2636 if ( ! list.isEmpty() ) {
2638 x = list[0].toInt(); 2637 x = list[0].toInt();
2639 y = list[1].toInt(); 2638 y = list[1].toInt();
2640 w = list[2].toInt(); 2639 w = list[2].toInt();
2641 h = list[3].toInt(); 2640 h = list[3].toInt();
2642 KApplication::testCoords( &x,&y,&w,&h ); 2641 KApplication::testCoords( &x,&y,&w,&h );
2643 topLevelWidget()->setGeometry(x,y,w,h); 2642 topLevelWidget()->setGeometry(x,y,w,h);
2644 2643
2645 } else { 2644 } else {
2646 topLevelWidget()->setGeometry( 40 ,40 , 640, 440); 2645 topLevelWidget()->setGeometry( 40 ,40 , 640, 440);
2647 } 2646 }
2648 list = config->readListEntry("EditEventLayout"); 2647 list = config->readListEntry("EditEventLayout");
2649 if ( ! list.isEmpty() ) { 2648 if ( ! list.isEmpty() ) {
2650 x = list[0].toInt(); 2649 x = list[0].toInt();
2651 y = list[1].toInt(); 2650 y = list[1].toInt();
2652 w = list[2].toInt(); 2651 w = list[2].toInt();
2653 h = list[3].toInt(); 2652 h = list[3].toInt();
2654 KApplication::testCoords( &x,&y,&w,&h ); 2653 KApplication::testCoords( &x,&y,&w,&h );
2655 mEventEditor->setGeometry(x,y,w,h); 2654 mEventEditor->setGeometry(x,y,w,h);
2656 2655
2657 } 2656 }
2658 list = config->readListEntry("EditTodoLayout"); 2657 list = config->readListEntry("EditTodoLayout");
2659 if ( ! list.isEmpty() ) { 2658 if ( ! list.isEmpty() ) {
2660 x = list[0].toInt(); 2659 x = list[0].toInt();
2661 y = list[1].toInt(); 2660 y = list[1].toInt();
2662 w = list[2].toInt(); 2661 w = list[2].toInt();
2663 h = list[3].toInt(); 2662 h = list[3].toInt();
2664 KApplication::testCoords( &x,&y,&w,&h ); 2663 KApplication::testCoords( &x,&y,&w,&h );
2665 mTodoEditor->setGeometry(x,y,w,h); 2664 mTodoEditor->setGeometry(x,y,w,h);
2666 2665
2667 } 2666 }
2668 list = config->readListEntry("ViewerLayout"); 2667 list = config->readListEntry("ViewerLayout");
2669 if ( ! list.isEmpty() ) { 2668 if ( ! list.isEmpty() ) {
2670 x = list[0].toInt(); 2669 x = list[0].toInt();
2671 y = list[1].toInt(); 2670 y = list[1].toInt();
2672 w = list[2].toInt(); 2671 w = list[2].toInt();
2673 h = list[3].toInt(); 2672 h = list[3].toInt();
2674 KApplication::testCoords( &x,&y,&w,&h ); 2673 KApplication::testCoords( &x,&y,&w,&h );
2675 getEventViewerDialog()->setGeometry(x,y,w,h); 2674 getEventViewerDialog()->setGeometry(x,y,w,h);
2676 } 2675 }
2677#endif 2676#endif
2678 config->setGroup( "Views" ); 2677 config->setGroup( "Views" );
2679 int dateCount = config->readNumEntry( "ShownDatesCount", 7 ); 2678 int dateCount = config->readNumEntry( "ShownDatesCount", 7 );
2680 2679
2681 QValueList<int> sizes = config->readIntListEntry("Left Splitter Frame"); 2680 QValueList<int> sizes = config->readIntListEntry("Left Splitter Frame");
2682 2681
2683 int resetval = 0; 2682 int resetval = 0;
2684 int maxVal = 0; 2683 int maxVal = 0;
2685 if (sizes.count() != 3) { 2684 if (sizes.count() != 3) {
2686 if ( KOPrefs::instance()->mVerticalScreen ) { 2685 if ( KOPrefs::instance()->mVerticalScreen ) {
2687 resetval = mDateNavigator->sizeHint().width()+2; 2686 resetval = mDateNavigator->sizeHint().width()+2;
2688 } else { 2687 } else {
2689 resetval = mDateNavigator->sizeHint().height()+2; 2688 resetval = mDateNavigator->sizeHint().height()+2;
2690 } 2689 }
2691 } 2690 }
2692 if ( resetval ) { 2691 if ( resetval ) {
2693 sizes.clear(); 2692 sizes.clear();
2694 if ( KOPrefs::instance()->mVerticalScreen ) { 2693 if ( KOPrefs::instance()->mVerticalScreen ) {
2695 maxVal = QApplication::desktop()->width() -10; 2694 maxVal = QApplication::desktop()->width() -10;
2696 } else { 2695 } else {
2697 maxVal = QApplication::desktop()->height()-10; 2696 maxVal = QApplication::desktop()->height()-10;
2698 } 2697 }
2699 sizes << resetval; 2698 sizes << resetval;
2700 if ( maxVal < resetval + resetval) 2699 if ( maxVal < resetval + resetval)
2701 resetval = maxVal - resetval; 2700 resetval = maxVal - resetval;
2702 sizes << resetval; 2701 sizes << resetval;
2703 sizes << 100; 2702 sizes << 100;
2704 } 2703 }
2705 mLeftFrame->setSizes(sizes); 2704 mLeftFrame->setSizes(sizes);
2706 sizes = config->readIntListEntry("Main Splitter Frame"); 2705 sizes = config->readIntListEntry("Main Splitter Frame");
2707 resetval = 0; 2706 resetval = 0;
2708 maxVal = 0; 2707 maxVal = 0;
2709 if (sizes.count() != 2) { 2708 if (sizes.count() != 2) {
2710 if ( !KOPrefs::instance()->mVerticalScreen ) { 2709 if ( !KOPrefs::instance()->mVerticalScreen ) {
2711 resetval = mDateNavigator->sizeHint().width()+2; 2710 resetval = mDateNavigator->sizeHint().width()+2;
2712 } else { 2711 } else {
2713 resetval = mDateNavigator->sizeHint().height()+2; 2712 resetval = mDateNavigator->sizeHint().height()+2;
2714 } 2713 }
2715 } 2714 }
2716 if ( resetval ) { 2715 if ( resetval ) {
2717 sizes.clear(); 2716 sizes.clear();
2718 if ( !KOPrefs::instance()->mVerticalScreen ) { 2717 if ( !KOPrefs::instance()->mVerticalScreen ) {
2719 maxVal = QApplication::desktop()->width() -10; 2718 maxVal = QApplication::desktop()->width() -10;
2720 } else { 2719 } else {
2721 maxVal = QApplication::desktop()->height()-10; 2720 maxVal = QApplication::desktop()->height()-10;
2722 } 2721 }
2723 sizes << resetval; 2722 sizes << resetval;
2724 if ( maxVal < resetval + resetval) 2723 if ( maxVal < resetval + resetval)
2725 resetval = maxVal - resetval; 2724 resetval = maxVal - resetval;
2726 sizes << resetval; 2725 sizes << resetval;
2727 } 2726 }
2728 mMainFrame->setSizes(sizes); 2727 mMainFrame->setSizes(sizes);
2729 if ( dateCount == 5 ) mNavigator->selectWorkWeek(); 2728 if ( dateCount == 5 ) mNavigator->selectWorkWeek();
2730 else if ( dateCount == 7 ) mNavigator->selectWeek(); 2729 else if ( dateCount == 7 ) mNavigator->selectWeek();
2731 else mNavigator->selectDates( dateCount ); 2730 else mNavigator->selectDates( dateCount );
2732 // mViewManager->readSettings( config ); 2731 // mViewManager->readSettings( config );
2733 updateConfig(); 2732 updateConfig();
2734 globalFlagBlockAgenda = 2; 2733 globalFlagBlockAgenda = 2;
2735 mViewManager->readSettings( config ); 2734 mViewManager->readSettings( config );
2736 QTimer::singleShot( 1, mDateNavigator, SLOT ( setResizeEnabled() ) ); 2735 QTimer::singleShot( 1, mDateNavigator, SLOT ( setResizeEnabled() ) );
2737} 2736}
2738 2737
2739void CalendarView::checkSuspendAlarm() 2738void CalendarView::checkSuspendAlarm()
2740{ 2739{
2741 if ( mSuspendTimer->isActive() ) { 2740 if ( mSuspendTimer->isActive() ) {
2742 KMessageBox::information( this, i18n("<b>WARNING:</b> There is a pending suspended alarm!"), i18n("Pending Suspend Alarm")); 2741 KMessageBox::information( this, i18n("<b>WARNING:</b> There is a pending suspended alarm!"), i18n("Pending Suspend Alarm"));
2743 } 2742 }
2744} 2743}
2745void CalendarView::writeSettings() 2744void CalendarView::writeSettings()
2746{ 2745{
2747 // kdDebug() << "CalendarView::writeSettings" << endl; 2746 // kdDebug() << "CalendarView::writeSettings" << endl;
2748 2747
2749 KConfig *config = KOGlobals::config(); 2748 KConfig *config = KOGlobals::config();
2750 2749
2751 mViewManager->writeSettings( config ); 2750 mViewManager->writeSettings( config );
2752 mTodoList->saveLayout(config,QString("Todo Layout")); 2751 mTodoList->saveLayout(config,QString("Todo Layout"));
2753 mDialogManager->writeSettings( config ); 2752 mDialogManager->writeSettings( config );
2754 //KOPrefs::instance()->usrWriteConfig(); 2753 //KOPrefs::instance()->usrWriteConfig();
2755 KOPrefs::instance()->writeConfig(); 2754 KOPrefs::instance()->writeConfig();
2756 2755
2757 writeFilterSettings(config); 2756 writeFilterSettings(config);
2758 config->setGroup( "AppRun" ); 2757 config->setGroup( "AppRun" );
2759 QDateTime dt ( QDate (2005,1,1), QTime( 0,0,0 ) ); 2758 QDateTime dt ( QDate (2005,1,1), QTime( 0,0,0 ) );
2760 int days = dt.daysTo( QDate::currentDate() ); 2759 int days = dt.daysTo( QDate::currentDate() );
2761 dt = dt.addDays( days ); 2760 dt = dt.addDays( days );
2762 int secs = dt.secsTo( QDateTime::currentDateTime() ); 2761 int secs = dt.secsTo( QDateTime::currentDateTime() );
2763 config->writeEntry( "LatestProgramStopDays", days ); 2762 config->writeEntry( "LatestProgramStopDays", days );
2764 config->writeEntry( "LatestProgramStopSecs", secs ); 2763 config->writeEntry( "LatestProgramStopSecs", secs );
2765 //qDebug("KO: Writing stop time: %d ", secs); 2764 //qDebug("KO: Writing stop time: %d ", secs);
2766 //qDebug("KO: Current Time %s ",QDateTime::currentDateTime().toString().latin1() ); 2765 //qDebug("KO: Current Time %s ",QDateTime::currentDateTime().toString().latin1() );
2767 //QDateTime latest = dt.addSecs ( secs ); 2766 //QDateTime latest = dt.addSecs ( secs );
2768 //qDebug("KO: Termination on %s ", latest.toString().latin1()); 2767 //qDebug("KO: Termination on %s ", latest.toString().latin1());
2769 config->setGroup( "Views" ); 2768 config->setGroup( "Views" );
2770 config->writeEntry( "ShownDatesCount", mNavigator->selectedDates().count() ); 2769 config->writeEntry( "ShownDatesCount", mNavigator->selectedDates().count() );
2771 2770
2772#if 0 2771#if 0
2773 qDebug("********************* "); 2772 qDebug("********************* ");
2774 qDebug("Testcode secsto "); 2773 qDebug("Testcode secsto ");
2775 QDateTime dt_nodaylight ( QDate (2005,3,26), QTime( 0,0,0 ) ); 2774 QDateTime dt_nodaylight ( QDate (2005,3,26), QTime( 0,0,0 ) );
2776 QDateTime dt_daylight ( QDate (2005,3,29), QTime( 0,0,0 ) ); 2775 QDateTime dt_daylight ( QDate (2005,3,29), QTime( 0,0,0 ) );
2777 int secsto = dt_nodaylight.secsTo( dt_daylight ); 2776 int secsto = dt_nodaylight.secsTo( dt_daylight );
2778 QDateTime dt_daylight_wrong = dt_nodaylight.addSecs( secsto ); 2777 QDateTime dt_daylight_wrong = dt_nodaylight.addSecs( secsto );
2779 qDebug("dt nodaylight %s ",dt_nodaylight.toString().latin1() ); 2778 qDebug("dt nodaylight %s ",dt_nodaylight.toString().latin1() );
2780 qDebug("dt daylight %s ",dt_daylight.toString().latin1() ); 2779 qDebug("dt daylight %s ",dt_daylight.toString().latin1() );
2781 qDebug("dt daylight_wrong %s ",dt_daylight_wrong.toString().latin1() ); 2780 qDebug("dt daylight_wrong %s ",dt_daylight_wrong.toString().latin1() );
2782 qDebug("Computed secsTo %d . in minutes: %d . in hours: %d ", secsto, secsto/60, secsto/3600); 2781 qDebug("Computed secsTo %d . in minutes: %d . in hours: %d ", secsto, secsto/60, secsto/3600);
2783 qDebug("********************* testcode end"); 2782 qDebug("********************* testcode end");
2784 2783
2785#endif 2784#endif
2786 2785
2787 QValueList<int> listINT = mLeftFrame->sizes(); 2786 QValueList<int> listINT = mLeftFrame->sizes();
2788 config->writeEntry("Left Splitter Frame",listINT); 2787 config->writeEntry("Left Splitter Frame",listINT);
2789 QValueList<int> listINT2 = mMainFrame->sizes(); 2788 QValueList<int> listINT2 = mMainFrame->sizes();
2790 config->writeEntry("Main Splitter Frame",listINT2); 2789 config->writeEntry("Main Splitter Frame",listINT2);
2791#ifdef DESKTOP_VERSION 2790#ifdef DESKTOP_VERSION
2792 config->setGroup("WidgetLayout"); 2791 config->setGroup("WidgetLayout");
2793 QStringList list ;//= config->readListEntry("MainLayout"); 2792 QStringList list ;//= config->readListEntry("MainLayout");
2794 int x,y,w,h; 2793 int x,y,w,h;
2795 QWidget* wid; 2794 QWidget* wid;
2796 wid = topLevelWidget(); 2795 wid = topLevelWidget();
2797 x = wid->geometry().x(); 2796 x = wid->geometry().x();
2798 y = wid->geometry().y(); 2797 y = wid->geometry().y();
2799 w = wid->width(); 2798 w = wid->width();
2800 h = wid->height(); 2799 h = wid->height();
2801 list.clear(); 2800 list.clear();
2802 list << QString::number( x ); 2801 list << QString::number( x );
2803 list << QString::number( y ); 2802 list << QString::number( y );
2804 list << QString::number( w ); 2803 list << QString::number( w );
2805 list << QString::number( h ); 2804 list << QString::number( h );
2806 config->writeEntry("MainLayout",list ); 2805 config->writeEntry("MainLayout",list );
2807 2806
2808 wid = mEventEditor; 2807 wid = mEventEditor;
2809 x = wid->geometry().x(); 2808 x = wid->geometry().x();
2810 y = wid->geometry().y(); 2809 y = wid->geometry().y();
2811 w = wid->width(); 2810 w = wid->width();
2812 h = wid->height(); 2811 h = wid->height();
2813 list.clear(); 2812 list.clear();
2814 list << QString::number( x ); 2813 list << QString::number( x );
2815 list << QString::number( y ); 2814 list << QString::number( y );
2816 list << QString::number( w ); 2815 list << QString::number( w );
2817 list << QString::number( h ); 2816 list << QString::number( h );
2818 config->writeEntry("EditEventLayout",list ); 2817 config->writeEntry("EditEventLayout",list );
2819 2818
2820 wid = mTodoEditor; 2819 wid = mTodoEditor;
2821 x = wid->geometry().x(); 2820 x = wid->geometry().x();
2822 y = wid->geometry().y(); 2821 y = wid->geometry().y();
2823 w = wid->width(); 2822 w = wid->width();
2824 h = wid->height(); 2823 h = wid->height();
2825 list.clear(); 2824 list.clear();
2826 list << QString::number( x ); 2825 list << QString::number( x );
2827 list << QString::number( y ); 2826 list << QString::number( y );
2828 list << QString::number( w ); 2827 list << QString::number( w );
2829 list << QString::number( h ); 2828 list << QString::number( h );
2830 config->writeEntry("EditTodoLayout",list ); 2829 config->writeEntry("EditTodoLayout",list );
2831 wid = getEventViewerDialog(); 2830 wid = getEventViewerDialog();
2832 x = wid->geometry().x(); 2831 x = wid->geometry().x();
2833 y = wid->geometry().y(); 2832 y = wid->geometry().y();
2834 w = wid->width(); 2833 w = wid->width();
2835 h = wid->height(); 2834 h = wid->height();
2836 list.clear(); 2835 list.clear();
2837 list << QString::number( x ); 2836 list << QString::number( x );
2838 list << QString::number( y ); 2837 list << QString::number( y );
2839 list << QString::number( w ); 2838 list << QString::number( w );
2840 list << QString::number( h ); 2839 list << QString::number( h );
2841 config->writeEntry("ViewerLayout",list ); 2840 config->writeEntry("ViewerLayout",list );
2842 wid = mDialogManager->getSearchDialog(); 2841 wid = mDialogManager->getSearchDialog();
2843 if ( wid ) { 2842 if ( wid ) {
2844 x = wid->geometry().x(); 2843 x = wid->geometry().x();
2845 y = wid->geometry().y(); 2844 y = wid->geometry().y();
2846 w = wid->width(); 2845 w = wid->width();
2847 h = wid->height(); 2846 h = wid->height();
2848 list.clear(); 2847 list.clear();
2849 list << QString::number( x ); 2848 list << QString::number( x );
2850 list << QString::number( y ); 2849 list << QString::number( y );
2851 list << QString::number( w ); 2850 list << QString::number( w );
2852 list << QString::number( h ); 2851 list << QString::number( h );
2853 config->writeEntry("SearchLayout",list ); 2852 config->writeEntry("SearchLayout",list );
2854 } 2853 }
2855#endif 2854#endif
2856 2855
2857 2856
2858 config->sync(); 2857 config->sync();
2859} 2858}
2860 2859
2861void CalendarView::readFilterSettings(KConfig *config) 2860void CalendarView::readFilterSettings(KConfig *config)
2862{ 2861{
2863 // kdDebug() << "CalendarView::readFilterSettings()" << endl; 2862 // kdDebug() << "CalendarView::readFilterSettings()" << endl;
2864 2863
2865 mFilters.clear(); 2864 mFilters.clear();
2866 2865
2867 config->setGroup("General"); 2866 config->setGroup("General");
2868 QStringList filterList = config->readListEntry("CalendarFilters"); 2867 QStringList filterList = config->readListEntry("CalendarFilters");
2869 2868
2870 QStringList::ConstIterator it = filterList.begin(); 2869 QStringList::ConstIterator it = filterList.begin();
2871 QStringList::ConstIterator end = filterList.end(); 2870 QStringList::ConstIterator end = filterList.end();
2872 while(it != end) { 2871 while(it != end) {
2873 // kdDebug() << " filter: " << (*it) << endl; 2872 // kdDebug() << " filter: " << (*it) << endl;
2874 2873
2875 CalFilter *filter; 2874 CalFilter *filter;
2876 filter = new CalFilter(*it); 2875 filter = new CalFilter(*it);
2877 config->setGroup("Filter_" + (*it).utf8()); 2876 config->setGroup("Filter_" + (*it).utf8());
2878 //qDebug("readFilterSettings %d ",config->readNumEntry("Criteria",0) ); 2877 //qDebug("readFilterSettings %d ",config->readNumEntry("Criteria",0) );
2879 filter->setCriteria(config->readNumEntry("Criteria",0)); 2878 filter->setCriteria(config->readNumEntry("Criteria",0));
2880 filter->setCategoryList(config->readListEntry("CategoryList")); 2879 filter->setCategoryList(config->readListEntry("CategoryList"));
2881 mFilters.append(filter); 2880 mFilters.append(filter);
2882 2881
2883 ++it; 2882 ++it;
2884 } 2883 }
2885 2884
2886 if (mFilters.count() == 0) { 2885 if (mFilters.count() == 0) {
2887 CalFilter *filter = new CalFilter(i18n("Default")); 2886 CalFilter *filter = new CalFilter(i18n("Default"));
2888 mFilters.append(filter); 2887 mFilters.append(filter);
2889 } 2888 }
2890 mFilterView->updateFilters(); 2889 mFilterView->updateFilters();
2891 config->setGroup("FilterView"); 2890 config->setGroup("FilterView");
2892 2891
2893 mFilterView->blockSignals(true); 2892 mFilterView->blockSignals(true);
2894 mFilterView->setFiltersEnabled(config->readBoolEntry("FilterEnabled")); 2893 mFilterView->setFiltersEnabled(config->readBoolEntry("FilterEnabled"));
2895 mFilterView->setSelectedFilter(config->readEntry("Current Filter")); 2894 mFilterView->setSelectedFilter(config->readEntry("Current Filter"));
2896 mFilterView->blockSignals(false); 2895 mFilterView->blockSignals(false);
2897 // We do it manually to avoid it being done twice by the above calls 2896 // We do it manually to avoid it being done twice by the above calls
2898 updateFilter(); 2897 updateFilter();
2899} 2898}
2900 2899
2901void CalendarView::writeFilterSettings(KConfig *config) 2900void CalendarView::writeFilterSettings(KConfig *config)
2902{ 2901{
2903 // kdDebug() << "CalendarView::writeFilterSettings()" << endl; 2902 // kdDebug() << "CalendarView::writeFilterSettings()" << endl;
2904 2903
2905 QStringList filterList; 2904 QStringList filterList;
2906 2905
2907 CalFilter *filter = mFilters.first(); 2906 CalFilter *filter = mFilters.first();
2908 while(filter) { 2907 while(filter) {
2909 // kdDebug() << " fn: " << filter->name() << endl; 2908 // kdDebug() << " fn: " << filter->name() << endl;
2910 filterList << filter->name(); 2909 filterList << filter->name();
2911 config->setGroup("Filter_" + filter->name().utf8()); 2910 config->setGroup("Filter_" + filter->name().utf8());
2912 config->writeEntry("Criteria",filter->criteria()); 2911 config->writeEntry("Criteria",filter->criteria());
2913 config->writeEntry("CategoryList",filter->categoryList()); 2912 config->writeEntry("CategoryList",filter->categoryList());
2914 filter = mFilters.next(); 2913 filter = mFilters.next();
2915 } 2914 }
2916 config->setGroup("General"); 2915 config->setGroup("General");
2917 config->writeEntry("CalendarFilters",filterList); 2916 config->writeEntry("CalendarFilters",filterList);
2918 2917
2919 config->setGroup("FilterView"); 2918 config->setGroup("FilterView");
2920 config->writeEntry("FilterEnabled",mFilterView->filtersEnabled()); 2919 config->writeEntry("FilterEnabled",mFilterView->filtersEnabled());
2921 config->writeEntry("Current Filter",mFilterView->selectedFilter()->name()); 2920 config->writeEntry("Current Filter",mFilterView->selectedFilter()->name());
2922} 2921}
2923 2922
2924 2923
2925void CalendarView::goToday() 2924void CalendarView::goToday()
2926{ 2925{
2927 if ( mViewManager->currentView()->isMonthView() ) 2926 if ( mViewManager->currentView()->isMonthView() )
2928 mNavigator->selectTodayMonth(); 2927 mNavigator->selectTodayMonth();
2929 else 2928 else
2930 mNavigator->selectToday(); 2929 mNavigator->selectToday();
2931} 2930}
2932 2931
2933void CalendarView::goNext() 2932void CalendarView::goNext()
2934{ 2933{
2935 mNavigator->selectNext(); 2934 mNavigator->selectNext();
2936} 2935}
2937 2936
2938void CalendarView::goPrevious() 2937void CalendarView::goPrevious()
2939{ 2938{
2940 mNavigator->selectPrevious(); 2939 mNavigator->selectPrevious();
2941} 2940}
2942void CalendarView::goNextMonth() 2941void CalendarView::goNextMonth()
2943{ 2942{
2944 mNavigator->selectNextMonth(); 2943 mNavigator->selectNextMonth();
2945} 2944}
2946 2945
2947void CalendarView::goPreviousMonth() 2946void CalendarView::goPreviousMonth()
2948{ 2947{
2949 mNavigator->selectPreviousMonth(); 2948 mNavigator->selectPreviousMonth();
2950} 2949}
2951 2950
2952void CalendarView::updateConfig() 2951void CalendarView::updateConfig()
2953{ 2952{
2954 if ( KOPrefs::instance()->mUseAppColors ) 2953 if ( KOPrefs::instance()->mUseAppColors )
2955 QApplication::setPalette( QPalette (KOPrefs::instance()->mAppColor1, KOPrefs::instance()->mAppColor2), true ); 2954 QApplication::setPalette( QPalette (KOPrefs::instance()->mAppColor1, KOPrefs::instance()->mAppColor2), true );
2956 emit configChanged(); 2955 emit configChanged();
2957 mTodoList->updateConfig(); 2956 mTodoList->updateConfig();
2958 // mDateNavigator->setFont ( KOPrefs::instance()->mDateNavigatorFont); 2957 // mDateNavigator->setFont ( KOPrefs::instance()->mDateNavigatorFont);
2959 mCalendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId); 2958 mCalendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId);
2960 // To make the "fill window" configurations work 2959 // To make the "fill window" configurations work
2961 //mViewManager->raiseCurrentView(); 2960 //mViewManager->raiseCurrentView();
2962} 2961}
2963 2962
2964 2963
2965void CalendarView::eventChanged(Event *event) 2964void CalendarView::eventChanged(Event *event)
2966{ 2965{
2967 changeEventDisplay(event,KOGlobals::EVENTEDITED); 2966 changeEventDisplay(event,KOGlobals::EVENTEDITED);
2968 //updateUnmanagedViews(); 2967 //updateUnmanagedViews();
2969} 2968}
2970 2969
2971void CalendarView::eventAdded(Event *event) 2970void CalendarView::eventAdded(Event *event)
2972{ 2971{
2973 changeEventDisplay(event,KOGlobals::EVENTADDED); 2972 changeEventDisplay(event,KOGlobals::EVENTADDED);
2974} 2973}
2975 2974
2976void CalendarView::eventToBeDeleted(Event *) 2975void CalendarView::eventToBeDeleted(Event *)
2977{ 2976{
2978 kdDebug() << "CalendarView::eventToBeDeleted(): to be implemented" << endl; 2977 kdDebug() << "CalendarView::eventToBeDeleted(): to be implemented" << endl;
2979} 2978}
2980 2979
2981void CalendarView::eventDeleted() 2980void CalendarView::eventDeleted()
2982{ 2981{
2983 changeEventDisplay(0,KOGlobals::EVENTDELETED); 2982 changeEventDisplay(0,KOGlobals::EVENTDELETED);
2984} 2983}
2985void CalendarView::changeTodoDisplay(Todo *which, int action) 2984void CalendarView::changeTodoDisplay(Todo *which, int action)
2986{ 2985{
2987 changeIncidenceDisplay((Incidence *)which, action); 2986 changeIncidenceDisplay((Incidence *)which, action);
2988 mDateNavigator->updateView(); //LR 2987 mDateNavigator->updateView(); //LR
2989 //mDialogManager->updateSearchDialog(); 2988 //mDialogManager->updateSearchDialog();
2990 2989
2991 if (which) { 2990 if (which) {
2992 mViewManager->updateWNview(); 2991 mViewManager->updateWNview();
2993 //mTodoList->updateView(); 2992 //mTodoList->updateView();
2994 } 2993 }
2995 2994
2996} 2995}
2997 2996
2998void CalendarView::changeIncidenceDisplay(Incidence *which, int action) 2997void CalendarView::changeIncidenceDisplay(Incidence *which, int action)
2999{ 2998{
3000 updateUnmanagedViews(); 2999 updateUnmanagedViews();
3001 //qDebug(" CalendarView::changeIncidenceDisplay++++++++++++++++++++++++++ %d %d ",which, action ); 3000 //qDebug(" CalendarView::changeIncidenceDisplay++++++++++++++++++++++++++ %d %d ",which, action );
3002 if ( action == KOGlobals::EVENTDELETED ) { //delete 3001 if ( action == KOGlobals::EVENTDELETED ) { //delete
3003 mCalendar->checkAlarmForIncidence( 0, true ); 3002 mCalendar->checkAlarmForIncidence( 0, true );
3004 if ( mEventViewerDialog ) 3003 if ( mEventViewerDialog )
3005 mEventViewerDialog->hide(); 3004 mEventViewerDialog->hide();
3006 } 3005 }
3007 else 3006 else
3008 mCalendar->checkAlarmForIncidence( which , false ); 3007 mCalendar->checkAlarmForIncidence( which , false );
3009} 3008}
3010 3009
3011// most of the changeEventDisplays() right now just call the view's 3010// most of the changeEventDisplays() right now just call the view's
3012// total update mode, but they SHOULD be recoded to be more refresh-efficient. 3011// total update mode, but they SHOULD be recoded to be more refresh-efficient.
3013void CalendarView::changeEventDisplay(Event *which, int action) 3012void CalendarView::changeEventDisplay(Event *which, int action)
3014{ 3013{
3015 // kdDebug() << "CalendarView::changeEventDisplay" << endl; 3014 // kdDebug() << "CalendarView::changeEventDisplay" << endl;
3016 changeIncidenceDisplay((Incidence *)which, action); 3015 changeIncidenceDisplay((Incidence *)which, action);
3017 static bool clearallviews = false; 3016 static bool clearallviews = false;
3018 if ( KOPrefs::instance()->mGlobalUpdateDisabled ) { 3017 if ( KOPrefs::instance()->mGlobalUpdateDisabled ) {
3019 if ( clearallviews ) { 3018 if ( clearallviews ) {
3020 clearAllViews(); 3019 clearAllViews();
3021 clearallviews = false; 3020 clearallviews = false;
3022 } 3021 }
3023 return; 3022 return;
3024 } 3023 }
3025 clearallviews = true; 3024 clearallviews = true;
3026 mDateNavigator->updateView(); 3025 mDateNavigator->updateView();
3027 //mDialogManager->updateSearchDialog(); 3026 //mDialogManager->updateSearchDialog();
3028 if (which) { 3027 if (which) {
3029 // If there is an event view visible update the display 3028 // If there is an event view visible update the display
3030 mViewManager->currentView()->changeEventDisplay(which,action); 3029 mViewManager->currentView()->changeEventDisplay(which,action);
3031 // TODO: check, if update needed 3030 // TODO: check, if update needed
3032 // if (which->getTodoStatus()) { 3031 // if (which->getTodoStatus()) {
3033 mTodoList->updateView(); 3032 mTodoList->updateView();
3034 if ( action != KOGlobals::EVENTDELETED ) { 3033 if ( action != KOGlobals::EVENTDELETED ) {
3035 mConflictingEvent = which ; 3034 mConflictingEvent = which ;
3036 int time = 1000; 3035 int time = 1000;
3037#ifdef DESKTOP_VERSION 3036#ifdef DESKTOP_VERSION
3038 time = 500; 3037 time = 500;
3039#endif 3038#endif
3040 QTimer::singleShot( time, this, SLOT ( checkConflictForEvent() ) ); 3039 QTimer::singleShot( time, this, SLOT ( checkConflictForEvent() ) );
3041 } 3040 }
3042 // } 3041 // }
3043 } else { 3042 } else {
3044 mViewManager->currentView()->updateView(); 3043 mViewManager->currentView()->updateView();
3045 } 3044 }
3046} 3045}
3047void CalendarView::checkConflictForEvent() 3046void CalendarView::checkConflictForEvent()
3048{ 3047{
3049 3048
3050 if (!KOPrefs::instance()->mConfirm) 3049 if (!KOPrefs::instance()->mConfirm)
3051 return; 3050 return;
3052 if ( ! mConflictingEvent ) return; 3051 if ( ! mConflictingEvent ) return;
3053 Event * conflictingEvent = mConflictingEvent; 3052 Event * conflictingEvent = mConflictingEvent;
3054 mConflictingEvent = 0; 3053 mConflictingEvent = 0;
3055 QDateTime current = QDateTime::currentDateTime(); 3054 QDateTime current = QDateTime::currentDateTime();
3056 if ( ! conflictingEvent->matchTime( &current, 0 ) ) { 3055 if ( ! conflictingEvent->matchTime( &current, 0 ) ) {
3057 return; 3056 return;
3058 } 3057 }
3059 QPtrList<Event> testlist = mCalendar->events(); 3058 QPtrList<Event> testlist = mCalendar->events();
3060 Event * test = testlist.first(); 3059 Event * test = testlist.first();
3061 QDateTime conflict; 3060 QDateTime conflict;
3062 QDateTime retVal; 3061 QDateTime retVal;
3063 bool found = false; 3062 bool found = false;
3064 Event * cE = 0; 3063 Event * cE = 0;
3065 topLevelWidget()->setCaption( i18n("Checking conflicts ... please wait") ); 3064 topLevelWidget()->setCaption( i18n("Checking conflicts ... please wait") );
3066 while ( test ) { 3065 while ( test ) {
3067 qApp->processEvents(); 3066 qApp->processEvents();
3068 bool skip = false; 3067 bool skip = false;
3069 if ( found ) 3068 if ( found )
3070 skip = !test->matchTime( &current, &conflict ); 3069 skip = !test->matchTime( &current, &conflict );
3071 else 3070 else
3072 skip = !test->matchTime( &current, 0 ); 3071 skip = !test->matchTime( &current, 0 );
3073 if ( !skip && !test->doesFloat() ) { 3072 if ( !skip && !test->doesFloat() ) {
3074 if ( conflictingEvent->isOverlapping ( test, &retVal, &current ) ) { 3073 if ( conflictingEvent->isOverlapping ( test, &retVal, &current ) ) {
3075 if ( ! found ) { 3074 if ( ! found ) {
3076 conflict = retVal; 3075 conflict = retVal;
3077 cE = test; 3076 cE = test;
3078 } else { 3077 } else {
3079 if ( retVal < conflict ) { 3078 if ( retVal < conflict ) {
3080 conflict = retVal; 3079 conflict = retVal;
3081 cE = test; 3080 cE = test;
3082 } 3081 }
3083 } 3082 }
3084 found = true; 3083 found = true;
3085 } 3084 }
3086 } 3085 }
3087 test = testlist.next(); 3086 test = testlist.next();
3088 } 3087 }
3089 topLevelWidget()->setCaption( i18n("KO/Pi") ); 3088 topLevelWidget()->setCaption( i18n("KO/Pi") );
3090 if ( found ) { 3089 if ( found ) {
3091 QString mess = i18n("The event\n%1\nconflicts with event\n%2\nat date\n%3.\n").arg(KGlobal::formatMessage ( conflictingEvent->summary(),0 ) ).arg( KGlobal::formatMessage ( cE->summary(),0 )).arg(KGlobal::locale()->formatDate(conflict.date()) ) ; 3090 QString mess = i18n("The event\n%1\nconflicts with event\n%2\nat date\n%3.\n").arg(KGlobal::formatMessage ( conflictingEvent->summary(),0 ) ).arg( KGlobal::formatMessage ( cE->summary(),0 )).arg(KGlobal::locale()->formatDate(conflict.date()) ) ;
3092 qApp->processEvents(); 3091 qApp->processEvents();
3093 int km = KMessageBox::warningContinueCancel(this,mess, 3092 int km = KMessageBox::warningContinueCancel(this,mess,
3094 i18n("KO/Pi Conflict delected"),i18n("Show date"),i18n("No problem!")); 3093 i18n("KO/Pi Conflict delected"),i18n("Show date"),i18n("No problem!"));
3095 if ( km != KMessageBox::Continue ) { 3094 if ( km != KMessageBox::Continue ) {
3096 return; 3095 return;
3097 } 3096 }
3098 if ( mViewManager->currentView() != mViewManager->agendaView() || mNavigator->selectedDates().count() > 1 ) 3097 if ( mViewManager->currentView() != mViewManager->agendaView() || mNavigator->selectedDates().count() > 1 )
3099 mViewManager->showDayView(); 3098 mViewManager->showDayView();
3100 mNavigator->slotDaySelect( conflict.date() ); 3099 mNavigator->slotDaySelect( conflict.date() );
3101 int hour = conflict.time().hour(); 3100 int hour = conflict.time().hour();
3102 mViewManager->agendaView()->setStartHour( hour ); 3101 mViewManager->agendaView()->setStartHour( hour );
3103 topLevelWidget()->setCaption( i18n("Conflict %1 <-> %2"). arg( conflictingEvent->summary().left( 20 ) ).arg( cE->summary().left( 20 ) ) ); 3102 topLevelWidget()->setCaption( i18n("Conflict %1 <-> %2"). arg( conflictingEvent->summary().left( 20 ) ).arg( cE->summary().left( 20 ) ) );
3104 } else 3103 } else
3105 topLevelWidget()->setCaption( i18n("No conflict found") ); 3104 topLevelWidget()->setCaption( i18n("No conflict found") );
3106 return; 3105 return;
3107 3106
3108} 3107}
3109 3108
3110void CalendarView::updateTodoViews() 3109void CalendarView::updateTodoViews()
3111{ 3110{
3112 mTodoList->updateView(); 3111 mTodoList->updateView();
3113 mViewManager->currentView()->updateView(); 3112 mViewManager->currentView()->updateView();
3114 3113
3115} 3114}
3116 3115
3117 3116
3118 3117
3119void CalendarView::clearAllViews() 3118void CalendarView::clearAllViews()
3120{ 3119{
3121 mTodoList->clearList(); 3120 mTodoList->clearList();
3122 mViewManager->clearAllViews(); 3121 mViewManager->clearAllViews();
3123 SearchDialog * sd = mDialogManager->getSearchDialog(); 3122 SearchDialog * sd = mDialogManager->getSearchDialog();
3124 if ( sd ) { 3123 if ( sd ) {
3125 KOListView* kol = sd->listview(); 3124 KOListView* kol = sd->listview();
3126 if ( kol ) 3125 if ( kol )
3127 kol->clearList(); 3126 kol->clearList();
3128 } 3127 }
3129} 3128}
3130void CalendarView::updateView() 3129void CalendarView::updateView()
3131{ 3130{
3132 static bool clearallviews = false; 3131 static bool clearallviews = false;
3133 if ( KOPrefs::instance()->mGlobalUpdateDisabled ) { 3132 if ( KOPrefs::instance()->mGlobalUpdateDisabled ) {
3134 if ( clearallviews ) { 3133 if ( clearallviews ) {
3135 clearAllViews(); 3134 clearAllViews();
3136 clearallviews = false; 3135 clearallviews = false;
3137 } 3136 }
3138 return; 3137 return;
3139 } 3138 }
3140 clearallviews = true; 3139 clearallviews = true;
3141 DateList tmpList = mNavigator->selectedDates(); 3140 DateList tmpList = mNavigator->selectedDates();
3142 3141
3143 if ( KOPrefs::instance()->mHideNonStartedTodos ) 3142 if ( KOPrefs::instance()->mHideNonStartedTodos )
3144 mTodoList->updateView(); 3143 mTodoList->updateView();
3145 // We assume that the navigator only selects consecutive days. 3144 // We assume that the navigator only selects consecutive days.
3146 updateView( tmpList.first(), tmpList.last() ); 3145 updateView( tmpList.first(), tmpList.last() );
3147} 3146}
3148 3147
3149void CalendarView::updateUnmanagedViews() 3148void CalendarView::updateUnmanagedViews()
3150{ 3149{
3151 mDateNavigator->updateDayMatrix(); 3150 mDateNavigator->updateDayMatrix();
3152} 3151}
3153 3152
3154int CalendarView::msgItemDelete(const QString name) 3153int CalendarView::msgItemDelete(const QString name)
3155{ 3154{
3156 return KMessageBox::warningContinueCancel(this,name +"\n\n"+ 3155 return KMessageBox::warningContinueCancel(this,name +"\n\n"+
3157 i18n("This item will be\npermanently deleted."), 3156 i18n("This item will be\npermanently deleted."),
3158 i18n("KO/Pi Confirmation"),i18n("Delete")); 3157 i18n("KO/Pi Confirmation"),i18n("Delete"));
3159} 3158}
3160 3159
3161 3160
3162void CalendarView::edit_cut() 3161void CalendarView::edit_cut()
3163{ 3162{
3164 Event *anEvent=0; 3163 Event *anEvent=0;
3165 3164
3166 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 3165 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
3167 3166
3168 if (mViewManager->currentView()->isEventView()) { 3167 if (mViewManager->currentView()->isEventView()) {
3169 if ( incidence && incidence->typeID() == eventID ) { 3168 if ( incidence && incidence->typeID() == eventID ) {
3170 anEvent = static_cast<Event *>(incidence); 3169 anEvent = static_cast<Event *>(incidence);
3171 } 3170 }
3172 } 3171 }
3173 3172
3174 if (!anEvent) { 3173 if (!anEvent) {
3175 KNotifyClient::beep(); 3174 KNotifyClient::beep();
3176 return; 3175 return;
3177 } 3176 }
3178 DndFactory factory( mCalendar ); 3177 DndFactory factory( mCalendar );
3179 factory.cutIncidence(anEvent); 3178 factory.cutIncidence(anEvent);
3180 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED); 3179 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED);
3181} 3180}
3182 3181
3183void CalendarView::edit_copy() 3182void CalendarView::edit_copy()
3184{ 3183{
3185 Event *anEvent=0; 3184 Event *anEvent=0;
3186 3185
3187 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 3186 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
3188 3187
3189 if (mViewManager->currentView()->isEventView()) { 3188 if (mViewManager->currentView()->isEventView()) {
3190 if ( incidence && incidence->typeID() == eventID ) { 3189 if ( incidence && incidence->typeID() == eventID ) {
3191 anEvent = static_cast<Event *>(incidence); 3190 anEvent = static_cast<Event *>(incidence);
3192 } 3191 }
3193 } 3192 }
3194 3193
3195 if (!anEvent) { 3194 if (!anEvent) {
3196 KNotifyClient::beep(); 3195 KNotifyClient::beep();
3197 return; 3196 return;
3198 } 3197 }
3199 DndFactory factory( mCalendar ); 3198 DndFactory factory( mCalendar );
3200 factory.copyIncidence(anEvent); 3199 factory.copyIncidence(anEvent);
3201} 3200}
3202 3201
3203void CalendarView::edit_paste() 3202void CalendarView::edit_paste()
3204{ 3203{
3205 QDate date = mNavigator->selectedDates().first(); 3204 QDate date = mNavigator->selectedDates().first();
3206 3205
3207 DndFactory factory( mCalendar ); 3206 DndFactory factory( mCalendar );
3208 Event *pastedEvent = (Event *)factory.pasteIncidence( date ); 3207 Event *pastedEvent = (Event *)factory.pasteIncidence( date );
3209 3208
3210 changeEventDisplay( pastedEvent, KOGlobals::EVENTADDED ); 3209 changeEventDisplay( pastedEvent, KOGlobals::EVENTADDED );
3211} 3210}
3212void CalendarView::edit_global_options() 3211void CalendarView::edit_global_options()
3213{ 3212{
3214 QString tz = KPimGlobalPrefs::instance()->mTimeZoneId; 3213 QString tz = KPimGlobalPrefs::instance()->mTimeZoneId;
3215 emit save(); 3214 emit save();
3216 emit saveStopTimer(); 3215 emit saveStopTimer();
3217 mDialogManager->showGlobalOptionsDialog(); 3216 mDialogManager->showGlobalOptionsDialog();
3218 if ( tz != KPimGlobalPrefs::instance()->mTimeZoneId) { 3217 if ( tz != KPimGlobalPrefs::instance()->mTimeZoneId) {
3219 emit saveStopTimer(); 3218 emit saveStopTimer();
3220 if ( KMessageBox::Cancel == KMessageBox::warningContinueCancel(this, i18n("The timezone has changed!\nShould the calendar be reloaded\nto shift the time of the events?\nPlease read Menu: Help->FAQ:\n\"How do I change the timezone?\"\nas well!"), 3219 if ( KMessageBox::Cancel == KMessageBox::warningContinueCancel(this, i18n("The timezone has changed!\nShould the calendar be reloaded\nto shift the time of the events?\nPlease read Menu: Help->FAQ:\n\"How do I change the timezone?\"\nas well!"),
3221 i18n("Timezone settings"),i18n("Reload"))) { 3220 i18n("Timezone settings"),i18n("Reload"))) {
3222 qDebug("KO: TZ reload cancelled "); 3221 qDebug("KO: TZ reload cancelled ");
3223 mCalendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId); 3222 mCalendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId);
3224 return; 3223 return;
3225 } 3224 }
3226 qDebug("KO: Timezone change "); 3225 qDebug("KO: Timezone change ");
3227 loadCalendars(); 3226 loadCalendars();
3228 setModified(true); 3227 setModified(true);
3229 } 3228 }
3230 else 3229 else
3231 qDebug("KO: No tz change "); 3230 qDebug("KO: No tz change ");
3232} 3231}
3233void CalendarView::edit_options() 3232void CalendarView::edit_options()
3234{ 3233{
3235 mDialogManager->showOptionsDialog(); 3234 mDialogManager->showOptionsDialog();
3236} 3235}
3237 3236
3238 3237
3239void CalendarView::slotSelectPickerDate( QDate d) 3238void CalendarView::slotSelectPickerDate( QDate d)
3240{ 3239{
3241 mDateFrame->hide(); 3240 mDateFrame->hide();
3242 if ( mDatePickerMode == 1 ) { 3241 if ( mDatePickerMode == 1 ) {
3243 mNavigator->slotDaySelect( d ); 3242 mNavigator->slotDaySelect( d );
3244 } else if ( mDatePickerMode == 2 ) { 3243 } else if ( mDatePickerMode == 2 ) {
3245 if ( mMoveIncidence->typeID() == todoID ) { 3244 if ( mMoveIncidence->typeID() == todoID ) {
3246 Todo * to = (Todo *) mMoveIncidence; 3245 Todo * to = (Todo *) mMoveIncidence;
3247 QTime tim; 3246 QTime tim;
3248 int len = 0; 3247 int len = 0;
3249 if ( to->hasStartDate() && to->hasDueDate() ) 3248 if ( to->hasStartDate() && to->hasDueDate() )
3250 len = to->dtStart().secsTo( to->dtDue()); 3249 len = to->dtStart().secsTo( to->dtDue());
3251 if ( to->hasDueDate() ) 3250 if ( to->hasDueDate() )
3252 tim = to->dtDue().time(); 3251 tim = to->dtDue().time();
3253 else { 3252 else {
3254 tim = QTime ( 0,0,0 ); 3253 tim = QTime ( 0,0,0 );
3255 to->setFloats( true ); 3254 to->setFloats( true );
3256 to->setHasDueDate( true ); 3255 to->setHasDueDate( true );
3257 } 3256 }
3258 QDateTime dt ( d,tim ); 3257 QDateTime dt ( d,tim );
3259 to->setDtDue( dt ); 3258 to->setDtDue( dt );
3260 3259
3261 if ( to->hasStartDate() ) { 3260 if ( to->hasStartDate() ) {
3262 if ( len>0 ) 3261 if ( len>0 )
3263 to->setDtStart(to->dtDue().addSecs( -len )); 3262 to->setDtStart(to->dtDue().addSecs( -len ));
3264 else 3263 else
3265 if (to->dtStart() > to->dtDue() ) 3264 if (to->dtStart() > to->dtDue() )
3266 to->setDtStart(to->dtDue().addDays( -3 )); 3265 to->setDtStart(to->dtDue().addDays( -3 ));
3267 } 3266 }
3268 3267
3269 todoChanged( to ); 3268 todoChanged( to );
3270 } else if ( mMoveIncidence->typeID() == eventID ) { 3269 } else if ( mMoveIncidence->typeID() == eventID ) {
3271 if ( mMoveIncidence->doesRecur() ) { 3270 if ( mMoveIncidence->doesRecur() ) {
3272#if 0 3271#if 0
3273 // PENDING implement this 3272 // PENDING implement this
3274 Incidence* newInc = mMoveIncidence->recreateCloneException( mMoveIncidenceOldDate ); 3273 Incidence* newInc = mMoveIncidence->recreateCloneException( mMoveIncidenceOldDate );
3275 mCalendar()->addIncidence( newInc ); 3274 mCalendar()->addIncidence( newInc );
3276 if ( mMoveIncidence->typeID() == todoID ) 3275 if ( mMoveIncidence->typeID() == todoID )
3277 emit todoMoved((Todo*)mMoveIncidence, KOGlobals::EVENTEDITED ); 3276 emit todoMoved((Todo*)mMoveIncidence, KOGlobals::EVENTEDITED );
3278 else 3277 else
3279 emit incidenceChanged(mMoveIncidence, KOGlobals::EVENTEDITED); 3278 emit incidenceChanged(mMoveIncidence, KOGlobals::EVENTEDITED);
3280 mMoveIncidence = newInc; 3279 mMoveIncidence = newInc;
3281 3280
3282#endif 3281#endif
3283 } 3282 }
3284 QTime tim = mMoveIncidence->dtStart().time(); 3283 QTime tim = mMoveIncidence->dtStart().time();
3285 int secs = mMoveIncidence->dtStart().secsTo( mMoveIncidence->dtEnd()); 3284 int secs = mMoveIncidence->dtStart().secsTo( mMoveIncidence->dtEnd());
3286 QDateTime dt ( d,tim ); 3285 QDateTime dt ( d,tim );
3287 mMoveIncidence->setDtStart( dt ); 3286 mMoveIncidence->setDtStart( dt );
3288 ((Event*)mMoveIncidence)->setDtEnd( dt.addSecs( secs ) ); 3287 ((Event*)mMoveIncidence)->setDtEnd( dt.addSecs( secs ) );
3289 changeEventDisplay((Event*)mMoveIncidence, KOGlobals::EVENTEDITED); 3288 changeEventDisplay((Event*)mMoveIncidence, KOGlobals::EVENTEDITED);
3290 } else if ( mMoveIncidence->typeID() == journalID ) { 3289 } else if ( mMoveIncidence->typeID() == journalID ) {
3291 QTime tim = mMoveIncidence->dtStart().time(); 3290 QTime tim = mMoveIncidence->dtStart().time();
3292 QDateTime dt ( d,tim ); 3291 QDateTime dt ( d,tim );
3293 mMoveIncidence->setDtStart( dt ); 3292 mMoveIncidence->setDtStart( dt );
3294 updateView(); 3293 updateView();
3295 } 3294 }
3296 mMoveIncidence->setRevision( mMoveIncidence->revision()+1 ); 3295 mMoveIncidence->setRevision( mMoveIncidence->revision()+1 );
3297 } 3296 }
3298} 3297}
3299 3298
3300void CalendarView::removeCategories() 3299void CalendarView::removeCategories()
3301{ 3300{
3302 QPtrList<Incidence> incList = mCalendar->rawIncidences(); 3301 QPtrList<Incidence> incList = mCalendar->rawIncidences();
3303 QStringList catList = KOPrefs::instance()->mCustomCategories; 3302 QStringList catList = KOPrefs::instance()->mCustomCategories;
3304 QStringList catIncList; 3303 QStringList catIncList;
3305 QStringList newCatList; 3304 QStringList newCatList;
3306 Incidence* inc = incList.first(); 3305 Incidence* inc = incList.first();
3307 uint i; 3306 uint i;
3308 while ( inc ) { 3307 while ( inc ) {
3309 newCatList.clear(); 3308 newCatList.clear();
3310 catIncList = inc->categories() ; 3309 catIncList = inc->categories() ;
3311 for( i = 0; i< catIncList.count(); ++i ) { 3310 for( i = 0; i< catIncList.count(); ++i ) {
3312 if ( catList.contains (catIncList[i])) 3311 if ( catList.contains (catIncList[i]))
3313 newCatList.append( catIncList[i] ); 3312 newCatList.append( catIncList[i] );
3314 } 3313 }
3315 newCatList.sort(); 3314 newCatList.sort();
3316 inc->setCategories( newCatList.join(",") ); 3315 inc->setCategories( newCatList.join(",") );
3317 inc = incList.next(); 3316 inc = incList.next();
3318 } 3317 }