summaryrefslogtreecommitdiffabout
path: root/korganizer/calendarview.cpp
Unidiff
Diffstat (limited to 'korganizer/calendarview.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/calendarview.cpp29
1 files changed, 20 insertions, 9 deletions
diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp
index 9571f16..8d024c1 100644
--- a/korganizer/calendarview.cpp
+++ b/korganizer/calendarview.cpp
@@ -1,19 +1,19 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 3
4 Requires the Qt and KDE widget libraries, available at no cost at 4 Requires the Qt and KDE widget libraries, available at no cost at
5 http://www.troll.no and http://www.kde.org respectively 5 http://www.troll.no and http://www.kde.org respectively
6 6
7 Copyright (c) 1997, 1998, 1999 7 Copyright (c) savecale1997, 1998, 1999
8 Preston Brown (preton.brown@yale.edu) 8 Preston Brown (preton.brown@yale.edu)
9 Fester Zigterman (F.J.F.ZigtermanRustenburg@student.utwente.nl) 9 Fester Zigterman (F.J.F.ZigtermanRustenburg@student.utwente.nl)
10 Ian Dawes (iadawes@globalserve.net) 10 Ian Dawes (iadawes@globalserve.net)
11 Laszlo Boloni (boloni@cs.purdue.edu) 11 Laszlo Boloni (boloni@cs.purdue.edu)
12 12
13 Copyright (c) 2000, 2001, 2002 13 Copyright (c) 2000, 2001, 2002
14 Cornelius Schumacher <schumacher@kde.org> 14 Cornelius Schumacher <schumacher@kde.org>
15 15
16 This program is free software; you can redistribute it and/or modify 16 This program is free software; you can redistribute it and/or modify
17 it under the terms of the GNU General Public License as published by 17 it under the terms of the GNU General Public License as published by
18 the Free Software Foundation; either version 2 of the License, or 18 the Free Software Foundation; either version 2 of the License, or
19 (at your option) any later version. 19 (at your option) any later version.
@@ -770,24 +770,26 @@ void CalendarView::conflictNotAll()
770 770
771void CalendarView::setCalReadOnly( int id, bool readO ) 771void CalendarView::setCalReadOnly( int id, bool readO )
772{ 772{
773 if ( readO ) { 773 if ( readO ) {
774 emit save(); 774 emit save();
775 } 775 }
776 mCalendar->setReadOnly( id, readO ); 776 mCalendar->setReadOnly( id, readO );
777} 777}
778void CalendarView::setScrollBarStep(int val ) 778void CalendarView::setScrollBarStep(int val )
779{ 779{
780#ifdef DESKTOP_VERSION 780#ifdef DESKTOP_VERSION
781 mDateScrollBar->setLineStep ( val ); 781 mDateScrollBar->setLineStep ( val );
782#else
783 Q_UNUSED( val );
782#endif 784#endif
783} 785}
784void CalendarView::scrollBarValue(int val ) 786void CalendarView::scrollBarValue(int val )
785{ 787{
786#ifdef DESKTOP_VERSION 788#ifdef DESKTOP_VERSION
787 if ( QApplication::desktop()->width() < 800 ) return; 789 if ( QApplication::desktop()->width() < 800 ) return;
788 if ( flag_blockScrollBar ) return; 790 if ( flag_blockScrollBar ) return;
789 flag_blockScrollBar = true; 791 flag_blockScrollBar = true;
790 int count = mNavigator->selectedDates().count(); 792 int count = mNavigator->selectedDates().count();
791 int day = mNavigator->selectedDates().first().dayOfYear(); 793 int day = mNavigator->selectedDates().first().dayOfYear();
792 int stepdays = val; 794 int stepdays = val;
793 if ( mDateScrollBar->lineStep () <= count ) { 795 if ( mDateScrollBar->lineStep () <= count ) {
@@ -796,24 +798,26 @@ void CalendarView::scrollBarValue(int val )
796 stepdays = (val-day)/mDateScrollBar->lineStep ()*mDateScrollBar->lineStep(); 798 stepdays = (val-day)/mDateScrollBar->lineStep ()*mDateScrollBar->lineStep();
797 stepdays = day+stepdays; 799 stepdays = day+stepdays;
798 if ( stepdays < 0 ) stepdays = 0; 800 if ( stepdays < 0 ) stepdays = 0;
799 } 801 }
800 if ( stepdays == day ) { 802 if ( stepdays == day ) {
801 flag_blockScrollBar = false; 803 flag_blockScrollBar = false;
802 return; 804 return;
803 } 805 }
804 int year = mNavigator->selectedDates().first().year(); 806 int year = mNavigator->selectedDates().first().year();
805 QDate d ( year,1,1 ); 807 QDate d ( year,1,1 );
806 mNavigator->selectDates( d.addDays( stepdays-1) , count ); 808 mNavigator->selectDates( d.addDays( stepdays-1) , count );
807 flag_blockScrollBar = false; 809 flag_blockScrollBar = false;
810#else
811 Q_UNUSED( val );
808#endif 812#endif
809 813
810} 814}
811void CalendarView::updateView(const QDate &start, const QDate &end) 815void CalendarView::updateView(const QDate &start, const QDate &end)
812{ 816{
813#ifdef DESKTOP_VERSION 817#ifdef DESKTOP_VERSION
814 if ( ! mDateScrollBar->draggingSlider () ) { 818 if ( ! mDateScrollBar->draggingSlider () ) {
815 int dof = start.dayOfYear(); 819 int dof = start.dayOfYear();
816 //qDebug("dof %d day %d val %d ", dof, start.dayOfYear(),mDateScrollBar->value() ); 820 //qDebug("dof %d day %d val %d ", dof, start.dayOfYear(),mDateScrollBar->value() );
817 if ( dof != mDateScrollBar->value() ) { 821 if ( dof != mDateScrollBar->value() ) {
818 mDateScrollBar->blockSignals( true ); 822 mDateScrollBar->blockSignals( true );
819 mDateScrollBar->setValue( start.dayOfYear()); 823 mDateScrollBar->setValue( start.dayOfYear());
@@ -1593,24 +1597,25 @@ void CalendarView::checkExternSyncEvent( QPtrList<Event> lastSync , Incidence* t
1593 eve = lastSync.next(); 1597 eve = lastSync.next();
1594 } 1598 }
1595 1599
1596} 1600}
1597void CalendarView::checkExternalId( Incidence * inc ) 1601void CalendarView::checkExternalId( Incidence * inc )
1598{ 1602{
1599 QPtrList<Event> lastSync = mCalendar->getExternLastSyncEvents() ; 1603 QPtrList<Event> lastSync = mCalendar->getExternLastSyncEvents() ;
1600 checkExternSyncEvent( lastSync, inc ); 1604 checkExternSyncEvent( lastSync, inc );
1601 1605
1602} 1606}
1603bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int mode ) 1607bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int mode )
1604{ 1608{
1609
1605 bool syncOK = true; 1610 bool syncOK = true;
1606 int addedEvent = 0; 1611 int addedEvent = 0;
1607 int addedEventR = 0; 1612 int addedEventR = 0;
1608 int deletedEventR = 0; 1613 int deletedEventR = 0;
1609 int deletedEventL = 0; 1614 int deletedEventL = 0;
1610 int changedLocal = 0; 1615 int changedLocal = 0;
1611 int changedRemote = 0; 1616 int changedRemote = 0;
1612 int filteredIN = 0; 1617 int filteredIN = 0;
1613 int filteredOUT = 0; 1618 int filteredOUT = 0;
1614 //QPtrList<Event> el = local->rawEvents(); 1619 //QPtrList<Event> el = local->rawEvents();
1615 Event* eventR; 1620 Event* eventR;
1616 QString uid; 1621 QString uid;
@@ -1723,40 +1728,40 @@ bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int
1723 if ( (take = takeEvent( inL, inR, mode, fullDateRange )) > 0 ) { 1728 if ( (take = takeEvent( inL, inR, mode, fullDateRange )) > 0 ) {
1724 //qDebug("take %d %s ", take, inL->summary().latin1()); 1729 //qDebug("take %d %s ", take, inL->summary().latin1());
1725 if ( take == 3 ) 1730 if ( take == 3 )
1726 return false; 1731 return false;
1727 if ( take == 1 ) {// take local ********************** 1732 if ( take == 1 ) {// take local **********************
1728 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) 1733 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL )
1729 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) ); 1734 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) );
1730 else 1735 else
1731 idS = inR->IDStr(); 1736 idS = inR->IDStr();
1732 int calID = inR->calID(); 1737 int calID = inR->calID();
1733 remote->deleteIncidence( inR ); 1738 remote->deleteIncidence( inR );
1734 inR = inL->clone(); 1739 inR = inL->clone();
1735 inR->setCalID( calID ); 1740 inR->setCalID_block( calID );
1736 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL ); 1741 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL );
1737 if ( mGlobalSyncMode != SYNC_MODE_EXTERNAL ) 1742 if ( mGlobalSyncMode != SYNC_MODE_EXTERNAL )
1738 inR->setIDStr( idS ); 1743 inR->setIDStr( idS );
1739 remote->addIncidence( inR ); 1744 remote->addIncidence( inR );
1740 if ( mSyncManager->syncWithDesktop() ) 1745 if ( mSyncManager->syncWithDesktop() )
1741 inR->setPilotId( 2 ); 1746 inR->setPilotId( 2 );
1742 ++changedRemote; 1747 ++changedRemote;
1743 } else {// take remote ********************** 1748 } else {// take remote **********************
1744 if ( !inL->isReadOnly() ) { 1749 if ( !inL->isReadOnly() ) {
1745 idS = inL->IDStr(); 1750 idS = inL->IDStr();
1746 int pid = inL->pilotId(); 1751 int pid = inL->pilotId();
1747 int calID = inL->calID(); 1752 int calID = inL->calID();
1748 local->deleteIncidence( inL ); 1753 local->deleteIncidence( inL );
1749 inL = inR->clone(); 1754 inL = inR->clone();
1750 inL->setCalID( calID ); 1755 inL->setCalID_block( calID );
1751 if ( mSyncManager->syncWithDesktop() ) 1756 if ( mSyncManager->syncWithDesktop() )
1752 inL->setPilotId( pid ); 1757 inL->setPilotId( pid );
1753 inL->setIDStr( idS ); 1758 inL->setIDStr( idS );
1754 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1759 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1755 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) ); 1760 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) );
1756 inL->setID( mCurrentSyncDevice, inR->getID(mCurrentSyncDevice) ); 1761 inL->setID( mCurrentSyncDevice, inR->getID(mCurrentSyncDevice) );
1757 } 1762 }
1758 local->addIncidence( inL ); 1763 local->addIncidence( inL );
1759 ++changedLocal; 1764 ++changedLocal;
1760 } 1765 }
1761 } 1766 }
1762 } 1767 }
@@ -1769,35 +1774,35 @@ bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int
1769 pref = "t"; 1774 pref = "t";
1770 if ( des.find(pref+ inR->getID(mCurrentSyncDevice) +"," ) >= 0 && mode != 5) { // delete it 1775 if ( des.find(pref+ inR->getID(mCurrentSyncDevice) +"," ) >= 0 && mode != 5) { // delete it
1771 inR->setTempSyncStat( SYNC_TEMPSTATE_DELETE ); 1776 inR->setTempSyncStat( SYNC_TEMPSTATE_DELETE );
1772 //remote->deleteIncidence( inR ); 1777 //remote->deleteIncidence( inR );
1773 ++deletedEventR; 1778 ++deletedEventR;
1774 } else { 1779 } else {
1775 inR->setLastModified( modifiedCalendar ); 1780 inR->setLastModified( modifiedCalendar );
1776 inL = inR->clone(); 1781 inL = inR->clone();
1777 inL->setIDStr( ":" ); 1782 inL->setIDStr( ":" );
1778 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) ); 1783 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) );
1779 inL->setID( mCurrentSyncDevice, inR->getID(mCurrentSyncDevice) ); 1784 inL->setID( mCurrentSyncDevice, inR->getID(mCurrentSyncDevice) );
1780 1785
1781 inL->setCalID( 0 );// add to default cal 1786 inL->setCalID_block( 0 );// add to default cal
1782 local->addIncidence( inL ); 1787 local->addIncidence( inL );
1783 ++addedEvent; 1788 ++addedEvent;
1784 1789
1785 } 1790 }
1786 } else { 1791 } else {
1787 if ( inR->lastModified() > mLastCalendarSync || mode == 5 ) { 1792 if ( inR->lastModified() > mLastCalendarSync || mode == 5 ) {
1788 inR->setLastModified( modifiedCalendar ); 1793 inR->setLastModified( modifiedCalendar );
1789 inL = inR->clone(); 1794 inL = inR->clone();
1790 inL->setIDStr( ":" ); 1795 inL->setIDStr( ":" );
1791 inL->setCalID( 0 );// add to default cal 1796 inL->setCalID_block( 0 );// add to default cal
1792 local->addIncidence( inL ); 1797 local->addIncidence( inL );
1793 ++addedEvent; 1798 ++addedEvent;
1794 1799
1795 } else { 1800 } else {
1796 checkExternSyncEvent(eventRSyncSharp, inR); 1801 checkExternSyncEvent(eventRSyncSharp, inR);
1797 remote->deleteIncidence( inR ); 1802 remote->deleteIncidence( inR );
1798 ++deletedEventR; 1803 ++deletedEventR;
1799 } 1804 }
1800 } 1805 }
1801 } else { 1806 } else {
1802 ++filteredIN; 1807 ++filteredIN;
1803 } 1808 }
@@ -1837,40 +1842,40 @@ bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int
1837 checkExternSyncEvent(eventLSyncSharp, inL); 1842 checkExternSyncEvent(eventLSyncSharp, inL);
1838 local->deleteIncidence( inL ); 1843 local->deleteIncidence( inL );
1839 ++deletedEventL; 1844 ++deletedEventL;
1840 } else { 1845 } else {
1841 if ( ! mSyncManager->mWriteBackExistingOnly ) { 1846 if ( ! mSyncManager->mWriteBackExistingOnly ) {
1842 inL->removeID(mCurrentSyncDevice ); 1847 inL->removeID(mCurrentSyncDevice );
1843 ++addedEventR; 1848 ++addedEventR;
1844 //qDebug("remote added Incidence %s ", inL->summary().latin1()); 1849 //qDebug("remote added Incidence %s ", inL->summary().latin1());
1845 inL->setLastModified( modifiedCalendar ); 1850 inL->setLastModified( modifiedCalendar );
1846 inR = inL->clone(); 1851 inR = inL->clone();
1847 inR->setIDStr( ":" ); 1852 inR->setIDStr( ":" );
1848 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL ); 1853 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL );
1849 inR->setCalID( 0 );// add to default cal 1854 inR->setCalID_block( 0 );// add to default cal
1850 remote->addIncidence( inR ); 1855 remote->addIncidence( inR );
1851 } 1856 }
1852 } 1857 }
1853 } else { 1858 } else {
1854 if ( inL->lastModified() < mLastCalendarSync && mode != 4 ) { 1859 if ( inL->lastModified() < mLastCalendarSync && mode != 4 ) {
1855 checkExternSyncEvent(eventLSyncSharp, inL); 1860 checkExternSyncEvent(eventLSyncSharp, inL);
1856 local->deleteIncidence( inL ); 1861 local->deleteIncidence( inL );
1857 ++deletedEventL; 1862 ++deletedEventL;
1858 } else { 1863 } else {
1859 if ( ! mSyncManager->mWriteBackExistingOnly ) { 1864 if ( ! mSyncManager->mWriteBackExistingOnly ) {
1860 ++addedEventR; 1865 ++addedEventR;
1861 inL->setLastModified( modifiedCalendar ); 1866 inL->setLastModified( modifiedCalendar );
1862 inR = inL->clone(); 1867 inR = inL->clone();
1863 inR->setIDStr( ":" ); 1868 inR->setIDStr( ":" );
1864 inR->setCalID( 0 );// add to default cal 1869 inR->setCalID_block( 0 );// add to default cal
1865 remote->addIncidence( inR ); 1870 remote->addIncidence( inR );
1866 } 1871 }
1867 } 1872 }
1868 } 1873 }
1869 } else { 1874 } else {
1870 ++filteredOUT; 1875 ++filteredOUT;
1871 } 1876 }
1872 } 1877 }
1873 } 1878 }
1874 inL = el.next(); 1879 inL = el.next();
1875 } 1880 }
1876 int delFut = 0; 1881 int delFut = 0;
@@ -2440,25 +2445,27 @@ void CalendarView::mergeFile( QString fn )
2440{ 2445{
2441 clearAllViews(); 2446 clearAllViews();
2442 mCalendar->mergeCalendarFile( fn ); 2447 mCalendar->mergeCalendarFile( fn );
2443 mCalendar->reInitAlarmSettings(); 2448 mCalendar->reInitAlarmSettings();
2444 setSyncEventsReadOnly(); 2449 setSyncEventsReadOnly();
2445 updateUnmanagedViews(); 2450 updateUnmanagedViews();
2446 updateView(); 2451 updateView();
2447} 2452}
2448void CalendarView::mergeFileResource( QString fn ,QString resource ) 2453void CalendarView::mergeFileResource( QString fn ,QString resource )
2449{ 2454{
2450 2455
2451 if ( resource == "ALL" ) { 2456 if ( resource == "ALL" ) {
2457 mCalendar->setAllCalendarEnabled( true );
2452 mergeFile( fn ); 2458 mergeFile( fn );
2459 restoreCalendarSettings();
2453 return; 2460 return;
2454 } 2461 }
2455 2462
2456 int exclusiveResource = KOPrefs::instance()->getFuzzyCalendarID( resource ); 2463 int exclusiveResource = KOPrefs::instance()->getFuzzyCalendarID( resource );
2457 if ( !exclusiveResource ) { 2464 if ( !exclusiveResource ) {
2458 qDebug("KO: CalendarView::mergeFileResource: resource not found %s", resource.latin1() ); 2465 qDebug("KO: CalendarView::mergeFileResource: resource not found %s", resource.latin1() );
2459 return; 2466 return;
2460 } 2467 }
2461 clearAllViews(); 2468 clearAllViews();
2462 mCalendar->setCalendarRemove( exclusiveResource ); 2469 mCalendar->setCalendarRemove( exclusiveResource );
2463 int def = mCalendar->defaultCalendar(); 2470 int def = mCalendar->defaultCalendar();
2464 mCalendar->setDefaultCalendar(exclusiveResource); 2471 mCalendar->setDefaultCalendar(exclusiveResource);
@@ -2588,26 +2595,30 @@ bool CalendarView::saveCalendars()
2588 } 2595 }
2589 restoreCalendarSettings(); 2596 restoreCalendarSettings();
2590 //saveError = "test error"; 2597 //saveError = "test error";
2591 if ( !saveError.isEmpty() ) { 2598 if ( !saveError.isEmpty() ) {
2592 saveError = KGlobal::formatMessage( i18n("Calendar(s) not saved:"),0 )+"\n" + saveError; 2599 saveError = KGlobal::formatMessage( i18n("Calendar(s) not saved:"),0 )+"\n" + saveError;
2593 KMessageBox::error(this, saveError, i18n("Error saving data")); 2600 KMessageBox::error(this, saveError, i18n("Error saving data"));
2594 return false; 2601 return false;
2595 } 2602 }
2596 return true; 2603 return true;
2597} 2604}
2598bool CalendarView::saveCalendarResource(QString filename, QString resource) 2605bool CalendarView::saveCalendarResource(QString filename, QString resource)
2599{ 2606{
2600 if ( resource == "ALL" ) 2607 if ( resource == "ALL" ) {
2601 return saveCalendar( filename ); 2608 mCalendar->setAllCalendarEnabled( true );
2609 bool retval = saveCalendar( filename );
2610 restoreCalendarSettings();
2611 return retval;
2612 }
2602 int exclusiveResource = KOPrefs::instance()->getFuzzyCalendarID( resource ); 2613 int exclusiveResource = KOPrefs::instance()->getFuzzyCalendarID( resource );
2603 if ( !exclusiveResource ) { 2614 if ( !exclusiveResource ) {
2604 qDebug("KO: CalendarView::saveCalendarResource: resource not found %s", resource.latin1() ); 2615 qDebug("KO: CalendarView::saveCalendarResource: resource not found %s", resource.latin1() );
2605 return false; 2616 return false;
2606 } 2617 }
2607 mCalendar->setDefaultCalendar( exclusiveResource ); 2618 mCalendar->setDefaultCalendar( exclusiveResource );
2608 mCalendar->setDefaultCalendarEnabledOnly(); 2619 mCalendar->setDefaultCalendarEnabledOnly();
2609 mCalendar->setSyncEventsEnabled(); 2620 mCalendar->setSyncEventsEnabled();
2610 bool res = saveCalendar( filename ); 2621 bool res = saveCalendar( filename );
2611 restoreCalendarSettings(); 2622 restoreCalendarSettings();
2612 return res; 2623 return res;
2613 2624