summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/calendarview.cpp2
-rw-r--r--libkcal/calendarlocal.cpp2
-rw-r--r--libkdepim/ksyncmanager.cpp8
3 files changed, 6 insertions, 6 deletions
diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp
index 6128137..538325e 100644
--- a/korganizer/calendarview.cpp
+++ b/korganizer/calendarview.cpp
@@ -1656,513 +1656,513 @@ bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int
1656 if ( eventLSync->dtStart() == mLastCalendarSync ) 1656 if ( eventLSync->dtStart() == mLastCalendarSync )
1657 fullDateRange = true; 1657 fullDateRange = true;
1658 1658
1659 if ( ! fullDateRange ) { 1659 if ( ! fullDateRange ) {
1660 if ( eventLSync->dtStart() != eventRSync->dtStart() ) { 1660 if ( eventLSync->dtStart() != eventRSync->dtStart() ) {
1661 1661
1662 qDebug("KO: Sync: Set fulldate to true! Local: %s --- Remote: %s" ,eventLSync->dtStart().toString().latin1(), eventRSync->dtStart().toString().latin1() ); 1662 qDebug("KO: Sync: Set fulldate to true! Local: %s --- Remote: %s" ,eventLSync->dtStart().toString().latin1(), eventRSync->dtStart().toString().latin1() );
1663 //qDebug("%d %d %d %d ", eventLSync->dtStart().time().second(), eventLSync->dtStart().time().msec() , eventRSync->dtStart().time().second(), eventRSync->dtStart().time().msec()); 1663 //qDebug("%d %d %d %d ", eventLSync->dtStart().time().second(), eventLSync->dtStart().time().msec() , eventRSync->dtStart().time().second(), eventRSync->dtStart().time().msec());
1664 fullDateRange = true; 1664 fullDateRange = true;
1665 } 1665 }
1666 } 1666 }
1667 if ( mSyncManager->syncWithDesktop() ) { 1667 if ( mSyncManager->syncWithDesktop() ) {
1668 fullDateRange = ( eventLSync->dtStart() <= mLastCalendarSync && eventLSync->dtStart().addSecs(1) >= mLastCalendarSync ); 1668 fullDateRange = ( eventLSync->dtStart() <= mLastCalendarSync && eventLSync->dtStart().addSecs(1) >= mLastCalendarSync );
1669 } 1669 }
1670 if ( fullDateRange ) 1670 if ( fullDateRange )
1671 mLastCalendarSync = QDateTime::currentDateTime().addDays( -100*365); 1671 mLastCalendarSync = QDateTime::currentDateTime().addDays( -100*365);
1672 else 1672 else
1673 mLastCalendarSync = eventLSync->dtStart(); 1673 mLastCalendarSync = eventLSync->dtStart();
1674 // for resyncing if own file has changed 1674 // for resyncing if own file has changed
1675 if ( mCurrentSyncDevice == "deleteaftersync" ) { 1675 if ( mCurrentSyncDevice == "deleteaftersync" ) {
1676 mLastCalendarSync = loadedFileVersion; 1676 mLastCalendarSync = loadedFileVersion;
1677 //qDebug("setting mLastCalendarSync "); 1677 //qDebug("setting mLastCalendarSync ");
1678 } 1678 }
1679 //qDebug("*************************** "); 1679 //qDebug("*************************** ");
1680 qDebug("KO: mLastCalendarSync %s .Full: %d",mLastCalendarSync.toString().latin1(), fullDateRange); 1680 qDebug("KO: mLastCalendarSync %s .Full: %d",mLastCalendarSync.toString().latin1(), fullDateRange);
1681 QPtrList<Incidence> er = remote->rawIncidences(); 1681 QPtrList<Incidence> er = remote->rawIncidences();
1682 Incidence* inR = er.first(); 1682 Incidence* inR = er.first();
1683 Incidence* inL; 1683 Incidence* inL;
1684 QProgressBar bar( er.count(),0 ); 1684 QProgressBar bar( er.count(),0 );
1685 bar.setCaption (i18n("Syncing - close to abort!") ); 1685 bar.setCaption (i18n("Syncing - close to abort!") );
1686 1686
1687 // ************** setting up filter ************* 1687 // ************** setting up filter *************
1688 CalFilter *filterIN = 0; 1688 CalFilter *filterIN = 0;
1689 CalFilter *filterOUT = 0; 1689 CalFilter *filterOUT = 0;
1690 CalFilter *filter = mFilters.first(); 1690 CalFilter *filter = mFilters.first();
1691 while(filter) { 1691 while(filter) {
1692 if ( filter->name() == mSyncManager->mFilterInCal ) 1692 if ( filter->name() == mSyncManager->mFilterInCal )
1693 filterIN = filter; 1693 filterIN = filter;
1694 if ( filter->name() == mSyncManager->mFilterOutCal ) 1694 if ( filter->name() == mSyncManager->mFilterOutCal )
1695 filterOUT = filter; 1695 filterOUT = filter;
1696 filter = mFilters.next(); 1696 filter = mFilters.next();
1697 } 1697 }
1698 int w = 300; 1698 int w = 300;
1699 if ( QApplication::desktop()->width() < 320 ) 1699 if ( QApplication::desktop()->width() < 320 )
1700 w = 220; 1700 w = 220;
1701 int h = bar.sizeHint().height() ; 1701 int h = bar.sizeHint().height() ;
1702 int dw = QApplication::desktop()->width(); 1702 int dw = QApplication::desktop()->width();
1703 int dh = QApplication::desktop()->height(); 1703 int dh = QApplication::desktop()->height();
1704 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 1704 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
1705 bar.show(); 1705 bar.show();
1706 int modulo = (er.count()/10)+1; 1706 int modulo = (er.count()/10)+1;
1707 int incCounter = 0; 1707 int incCounter = 0;
1708 while ( inR ) { 1708 while ( inR ) {
1709 if ( ! bar.isVisible() ) 1709 if ( ! bar.isVisible() )
1710 return false; 1710 return false;
1711 if ( incCounter % modulo == 0 ) 1711 if ( incCounter % modulo == 0 )
1712 bar.setProgress( incCounter ); 1712 bar.setProgress( incCounter );
1713 ++incCounter; 1713 ++incCounter;
1714 uid = inR->uid(); 1714 uid = inR->uid();
1715 bool skipIncidence = false; 1715 bool skipIncidence = false;
1716 if ( uid.left(15) == QString("last-syncEvent-") ) 1716 if ( uid.left(15) == QString("last-syncEvent-") )
1717 skipIncidence = true; 1717 skipIncidence = true;
1718 QString idS; 1718 QString idS;
1719 qApp->processEvents(); 1719 qApp->processEvents();
1720 if ( !skipIncidence ) { 1720 if ( !skipIncidence ) {
1721 inL = local->incidenceForUid( uid , false ); 1721 inL = local->incidenceForUid( uid , false );
1722 if ( inL ) { // maybe conflict - same uid in both calendars 1722 if ( inL ) { // maybe conflict - same uid in both calendars
1723 if ( (take = takeEvent( inL, inR, mode, fullDateRange )) > 0 ) { 1723 if ( (take = takeEvent( inL, inR, mode, fullDateRange )) > 0 ) {
1724 //qDebug("take %d %s ", take, inL->summary().latin1()); 1724 //qDebug("take %d %s ", take, inL->summary().latin1());
1725 if ( take == 3 ) 1725 if ( take == 3 )
1726 return false; 1726 return false;
1727 if ( take == 1 ) {// take local ********************** 1727 if ( take == 1 ) {// take local **********************
1728 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) 1728 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL )
1729 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) ); 1729 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) );
1730 else 1730 else
1731 idS = inR->IDStr(); 1731 idS = inR->IDStr();
1732 int calID = inR->calID(); 1732 int calID = inR->calID();
1733 remote->deleteIncidence( inR ); 1733 remote->deleteIncidence( inR );
1734 inR = inL->clone(); 1734 inR = inL->clone();
1735 inR->setCalID( calID ); 1735 inR->setCalID( calID );
1736 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL ); 1736 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL );
1737 if ( mGlobalSyncMode != SYNC_MODE_EXTERNAL ) 1737 if ( mGlobalSyncMode != SYNC_MODE_EXTERNAL )
1738 inR->setIDStr( idS ); 1738 inR->setIDStr( idS );
1739 remote->addIncidence( inR ); 1739 remote->addIncidence( inR );
1740 if ( mSyncManager->syncWithDesktop() ) 1740 if ( mSyncManager->syncWithDesktop() )
1741 inR->setPilotId( 2 ); 1741 inR->setPilotId( 2 );
1742 ++changedRemote; 1742 ++changedRemote;
1743 } else {// take remote ********************** 1743 } else {// take remote **********************
1744 if ( !inL->isReadOnly() ) { 1744 if ( !inL->isReadOnly() ) {
1745 idS = inL->IDStr(); 1745 idS = inL->IDStr();
1746 int pid = inL->pilotId(); 1746 int pid = inL->pilotId();
1747 int calID = inL->calID(); 1747 int calID = inL->calID();
1748 local->deleteIncidence( inL ); 1748 local->deleteIncidence( inL );
1749 inL = inR->clone(); 1749 inL = inR->clone();
1750 inL->setCalID( calID ); 1750 inL->setCalID( calID );
1751 if ( mSyncManager->syncWithDesktop() ) 1751 if ( mSyncManager->syncWithDesktop() )
1752 inL->setPilotId( pid ); 1752 inL->setPilotId( pid );
1753 inL->setIDStr( idS ); 1753 inL->setIDStr( idS );
1754 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1754 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1755 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) ); 1755 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) );
1756 inL->setID( mCurrentSyncDevice, inR->getID(mCurrentSyncDevice) ); 1756 inL->setID( mCurrentSyncDevice, inR->getID(mCurrentSyncDevice) );
1757 } 1757 }
1758 local->addIncidence( inL ); 1758 local->addIncidence( inL );
1759 ++changedLocal; 1759 ++changedLocal;
1760 } 1760 }
1761 } 1761 }
1762 } 1762 }
1763 } else { // no conflict ********** add or delete remote 1763 } else { // no conflict ********** add or delete remote
1764 if ( !filterIN || filterIN->filterCalendarItem( inR ) ){ 1764 if ( !filterIN || filterIN->filterCalendarItem( inR ) ){
1765 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1765 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1766 QString des = eventLSync->description(); 1766 QString des = eventLSync->description();
1767 QString pref = "e"; 1767 QString pref = "e";
1768 if ( inR->typeID() == todoID ) 1768 if ( inR->typeID() == todoID )
1769 pref = "t"; 1769 pref = "t";
1770 if ( des.find(pref+ inR->getID(mCurrentSyncDevice) +"," ) >= 0 && mode != 5) { // delete it 1770 if ( des.find(pref+ inR->getID(mCurrentSyncDevice) +"," ) >= 0 && mode != 5) { // delete it
1771 inR->setTempSyncStat( SYNC_TEMPSTATE_DELETE ); 1771 inR->setTempSyncStat( SYNC_TEMPSTATE_DELETE );
1772 //remote->deleteIncidence( inR ); 1772 //remote->deleteIncidence( inR );
1773 ++deletedEventR; 1773 ++deletedEventR;
1774 } else { 1774 } else {
1775 inR->setLastModified( modifiedCalendar ); 1775 inR->setLastModified( modifiedCalendar );
1776 inL = inR->clone(); 1776 inL = inR->clone();
1777 inL->setIDStr( ":" ); 1777 inL->setIDStr( ":" );
1778 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) ); 1778 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) );
1779 inL->setID( mCurrentSyncDevice, inR->getID(mCurrentSyncDevice) ); 1779 inL->setID( mCurrentSyncDevice, inR->getID(mCurrentSyncDevice) );
1780 1780
1781 inL->setCalID( 0 );// add to default cal 1781 inL->setCalID( 0 );// add to default cal
1782 local->addIncidence( inL ); 1782 local->addIncidence( inL );
1783 ++addedEvent; 1783 ++addedEvent;
1784 1784
1785 } 1785 }
1786 } else { 1786 } else {
1787 if ( inR->lastModified() > mLastCalendarSync || mode == 5 ) { 1787 if ( inR->lastModified() > mLastCalendarSync || mode == 5 ) {
1788 inR->setLastModified( modifiedCalendar ); 1788 inR->setLastModified( modifiedCalendar );
1789 inL = inR->clone(); 1789 inL = inR->clone();
1790 inL->setIDStr( ":" ); 1790 inL->setIDStr( ":" );
1791 inL->setCalID( 0 );// add to default cal 1791 inL->setCalID( 0 );// add to default cal
1792 local->addIncidence( inL ); 1792 local->addIncidence( inL );
1793 ++addedEvent; 1793 ++addedEvent;
1794 1794
1795 } else { 1795 } else {
1796 checkExternSyncEvent(eventRSyncSharp, inR); 1796 checkExternSyncEvent(eventRSyncSharp, inR);
1797 remote->deleteIncidence( inR ); 1797 remote->deleteIncidence( inR );
1798 ++deletedEventR; 1798 ++deletedEventR;
1799 } 1799 }
1800 } 1800 }
1801 } else { 1801 } else {
1802 ++filteredIN; 1802 ++filteredIN;
1803 } 1803 }
1804 } 1804 }
1805 } 1805 }
1806 inR = er.next(); 1806 inR = er.next();
1807 } 1807 }
1808 QPtrList<Incidence> el = local->rawIncidences(); 1808 QPtrList<Incidence> el = local->rawIncidences();
1809 inL = el.first(); 1809 inL = el.first();
1810 modulo = (el.count()/10)+1; 1810 modulo = (el.count()/10)+1;
1811 bar.setCaption (i18n("Add / remove events") ); 1811 bar.setCaption (i18n("Add / remove events") );
1812 bar.setTotalSteps ( el.count() ) ; 1812 bar.setTotalSteps ( el.count() ) ;
1813 bar.show(); 1813 bar.show();
1814 incCounter = 0; 1814 incCounter = 0;
1815 1815
1816 while ( inL ) { 1816 while ( inL ) {
1817 1817
1818 qApp->processEvents(); 1818 qApp->processEvents();
1819 if ( ! bar.isVisible() ) 1819 if ( ! bar.isVisible() )
1820 return false; 1820 return false;
1821 if ( incCounter % modulo == 0 ) 1821 if ( incCounter % modulo == 0 )
1822 bar.setProgress( incCounter ); 1822 bar.setProgress( incCounter );
1823 ++incCounter; 1823 ++incCounter;
1824 uid = inL->uid(); 1824 uid = inL->uid();
1825 bool skipIncidence = false; 1825 bool skipIncidence = false;
1826 if ( uid.left(15) == QString("last-syncEvent-") ) 1826 if ( uid.left(15) == QString("last-syncEvent-") )
1827 skipIncidence = true; 1827 skipIncidence = true;
1828 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL && inL->typeID() == journalID ) 1828 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL && inL->typeID() == journalID )
1829 skipIncidence = true; 1829 skipIncidence = true;
1830 if ( !skipIncidence ) { 1830 if ( !skipIncidence ) {
1831 inR = remote->incidenceForUid( uid , true ); 1831 inR = remote->incidenceForUid( uid , true );
1832 if ( ! inR ) { 1832 if ( ! inR ) {
1833 if ( !filterOUT || filterOUT->filterCalendarItem( inL ) ){ 1833 if ( !filterOUT || filterOUT->filterCalendarItem( inL ) ){
1834 // no conflict ********** add or delete local 1834 // no conflict ********** add or delete local
1835 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1835 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1836 if ( !inL->getID(mCurrentSyncDevice).isEmpty() && mode != 4 ) { 1836 if ( !inL->getID(mCurrentSyncDevice).isEmpty() && mode != 4 ) {
1837 checkExternSyncEvent(eventLSyncSharp, inL); 1837 checkExternSyncEvent(eventLSyncSharp, inL);
1838 local->deleteIncidence( inL ); 1838 local->deleteIncidence( inL );
1839 ++deletedEventL; 1839 ++deletedEventL;
1840 } else { 1840 } else {
1841 if ( ! mSyncManager->mWriteBackExistingOnly ) { 1841 if ( ! mSyncManager->mWriteBackExistingOnly ) {
1842 inL->removeID(mCurrentSyncDevice ); 1842 inL->removeID(mCurrentSyncDevice );
1843 ++addedEventR; 1843 ++addedEventR;
1844 //qDebug("remote added Incidence %s ", inL->summary().latin1()); 1844 //qDebug("remote added Incidence %s ", inL->summary().latin1());
1845 inL->setLastModified( modifiedCalendar ); 1845 inL->setLastModified( modifiedCalendar );
1846 inR = inL->clone(); 1846 inR = inL->clone();
1847 inR->setIDStr( ":" ); 1847 inR->setIDStr( ":" );
1848 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL ); 1848 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL );
1849 inR->setCalID( 0 );// add to default cal 1849 inR->setCalID( 0 );// add to default cal
1850 remote->addIncidence( inR ); 1850 remote->addIncidence( inR );
1851 } 1851 }
1852 } 1852 }
1853 } else { 1853 } else {
1854 if ( inL->lastModified() < mLastCalendarSync && mode != 4 ) { 1854 if ( inL->lastModified() < mLastCalendarSync && mode != 4 ) {
1855 checkExternSyncEvent(eventLSyncSharp, inL); 1855 checkExternSyncEvent(eventLSyncSharp, inL);
1856 local->deleteIncidence( inL ); 1856 local->deleteIncidence( inL );
1857 ++deletedEventL; 1857 ++deletedEventL;
1858 } else { 1858 } else {
1859 if ( ! mSyncManager->mWriteBackExistingOnly ) { 1859 if ( ! mSyncManager->mWriteBackExistingOnly ) {
1860 ++addedEventR; 1860 ++addedEventR;
1861 inL->setLastModified( modifiedCalendar ); 1861 inL->setLastModified( modifiedCalendar );
1862 inR = inL->clone(); 1862 inR = inL->clone();
1863 inR->setIDStr( ":" ); 1863 inR->setIDStr( ":" );
1864 inR->setCalID( 0 );// add to default cal 1864 inR->setCalID( 0 );// add to default cal
1865 remote->addIncidence( inR ); 1865 remote->addIncidence( inR );
1866 } 1866 }
1867 } 1867 }
1868 } 1868 }
1869 } else { 1869 } else {
1870 ++filteredOUT; 1870 ++filteredOUT;
1871 } 1871 }
1872 } 1872 }
1873 } 1873 }
1874 inL = el.next(); 1874 inL = el.next();
1875 } 1875 }
1876 int delFut = 0; 1876 int delFut = 0;
1877 int remRem = 0; 1877 int remRem = 0;
1878 if ( mSyncManager->mWriteBackInFuture ) { 1878 if ( mSyncManager->mWriteBackInFuture ) {
1879 er = remote->rawIncidences(); 1879 er = remote->rawIncidences();
1880 remRem = er.count(); 1880 remRem = er.count();
1881 inR = er.first(); 1881 inR = er.first();
1882 QDateTime dt; 1882 QDateTime dt;
1883 QDateTime cur = QDateTime::currentDateTime().addDays( -(mSyncManager->mWriteBackInPast * 7) ); 1883 QDateTime cur = QDateTime::currentDateTime().addDays( -(mSyncManager->mWriteBackInPast * 7) );
1884 QDateTime end = QDateTime::currentDateTime().addDays( (mSyncManager->mWriteBackInFuture ) *7 ); 1884 QDateTime end = QDateTime::currentDateTime().addDays( (mSyncManager->mWriteBackInFuture ) *7 );
1885 while ( inR ) { 1885 while ( inR ) {
1886 if ( inR->typeID() == todoID ) { 1886 if ( inR->typeID() == todoID ) {
1887 Todo * t = (Todo*)inR; 1887 Todo * t = (Todo*)inR;
1888 if ( t->hasDueDate() ) 1888 if ( t->hasDueDate() )
1889 dt = t->dtDue(); 1889 dt = t->dtDue();
1890 else 1890 else
1891 dt = cur.addSecs( 62 ); 1891 dt = cur.addSecs( 62 );
1892 } 1892 }
1893 else if (inR->typeID() == eventID ) { 1893 else if (inR->typeID() == eventID ) {
1894 bool ok; 1894 bool ok;
1895 dt = inR->getNextOccurence( cur, &ok ); 1895 dt = inR->getNextOccurence( cur, &ok );
1896 if ( !ok ) 1896 if ( !ok )
1897 dt = cur.addSecs( -62 ); 1897 dt = cur.addSecs( -62 );
1898 } 1898 }
1899 else 1899 else
1900 dt = inR->dtStart(); 1900 dt = inR->dtStart();
1901 if ( dt < cur || dt > end ) { 1901 if ( dt < cur || dt > end ) {
1902 remote->deleteIncidence( inR ); 1902 remote->deleteIncidence( inR );
1903 ++delFut; 1903 ++delFut;
1904 } 1904 }
1905 inR = er.next(); 1905 inR = er.next();
1906 } 1906 }
1907 } 1907 }
1908 bar.hide(); 1908 bar.hide();
1909 mLastCalendarSync = QDateTime::currentDateTime().addSecs( 1 ); 1909 mLastCalendarSync = QDateTime::currentDateTime().addSecs( 1 );
1910 if ( mMultiResourceSync ) { 1910 if ( mMultiResourceSync ) {
1911 remote->removeSyncInfo( "" ); //all 1911 remote->removeSyncInfo( "" ); //all
1912 1912 qDebug("KO: Remoing all sync info on remote ");
1913 } else { 1913 } else {
1914 eventLSync->setReadOnly( false ); 1914 eventLSync->setReadOnly( false );
1915 eventLSync->setDtStart( mLastCalendarSync ); 1915 eventLSync->setDtStart( mLastCalendarSync );
1916 eventRSync->setDtStart( mLastCalendarSync ); 1916 eventRSync->setDtStart( mLastCalendarSync );
1917 eventLSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) ); 1917 eventLSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) );
1918 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) ); 1918 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) );
1919 eventRSync->setLocation( i18n("Remote from: ")+mCurrentSyncName ) ; 1919 eventRSync->setLocation( i18n("Remote from: ")+mCurrentSyncName ) ;
1920 eventLSync->setLocation(i18n("Local from: ") + mCurrentSyncName ); 1920 eventLSync->setLocation(i18n("Local from: ") + mCurrentSyncName );
1921 eventLSync->setReadOnly( true ); 1921 eventLSync->setReadOnly( true );
1922 } 1922 }
1923 qDebug("KO: Normal sync: %d ",mGlobalSyncMode == SYNC_MODE_NORMAL ); 1923 qDebug("KO: Normal sync: %d ",mGlobalSyncMode == SYNC_MODE_NORMAL );
1924 if ( mGlobalSyncMode == SYNC_MODE_NORMAL && !mSyncManager->syncWithDesktop() && !mMultiResourceSync ) // kde is abnormal... 1924 if ( mGlobalSyncMode == SYNC_MODE_NORMAL && !mSyncManager->syncWithDesktop() && !mMultiResourceSync ) // kde is abnormal...
1925 remote->addEvent( eventRSync ); 1925 remote->addEvent( eventRSync );
1926 else 1926 else
1927 delete eventRSync; 1927 delete eventRSync;
1928 qDebug("KO: Sync with desktop %d ",mSyncManager->syncWithDesktop() ); 1928 qDebug("KO: Sync with desktop %d ",mSyncManager->syncWithDesktop() );
1929 QString mes; 1929 QString mes;
1930 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 ); 1930 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 );
1931 QString delmess; 1931 QString delmess;
1932 if ( delFut ) { 1932 if ( delFut ) {
1933 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); 1933 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);
1934 mes += delmess; 1934 mes += delmess;
1935 } 1935 }
1936 mes = i18n("Local calendar changed!\n") +mes; 1936 mes = i18n("Local calendar changed!\n") +mes;
1937 mCalendar->checkAlarmForIncidence( 0, true ); 1937 mCalendar->checkAlarmForIncidence( 0, true );
1938 qDebug( mes ); 1938 qDebug( mes );
1939 if ( mSyncManager->mShowSyncSummary ) { 1939 if ( mSyncManager->mShowSyncSummary ) {
1940 if ( KMessageBox::Cancel == KMessageBox::warningContinueCancel(this, mes, 1940 if ( KMessageBox::Cancel == KMessageBox::warningContinueCancel(this, mes,
1941 i18n("KO/Pi Synchronization"),i18n("Write back"))) { 1941 i18n("KO/Pi Synchronization"),i18n("Write back"))) {
1942 qDebug("KO: WB cancelled "); 1942 qDebug("KO: WB cancelled ");
1943 mSyncManager->mWriteBackFile = false; 1943 mSyncManager->mWriteBackFile = false;
1944 return syncOK; 1944 return syncOK;
1945 } 1945 }
1946 } 1946 }
1947 return syncOK; 1947 return syncOK;
1948} 1948}
1949 1949
1950void CalendarView::setSyncDevice( QString s ) 1950void CalendarView::setSyncDevice( QString s )
1951{ 1951{
1952 mCurrentSyncDevice= s; 1952 mCurrentSyncDevice= s;
1953} 1953}
1954void CalendarView::setSyncName( QString s ) 1954void CalendarView::setSyncName( QString s )
1955{ 1955{
1956 mCurrentSyncName= s; 1956 mCurrentSyncName= s;
1957} 1957}
1958bool CalendarView::syncCalendar(QString filename, int mode) 1958bool CalendarView::syncCalendar(QString filename, int mode)
1959{ 1959{
1960 //qDebug("syncCalendar %s ", filename.latin1()); 1960 //qDebug("syncCalendar %s ", filename.latin1());
1961 mGlobalSyncMode = SYNC_MODE_NORMAL; 1961 mGlobalSyncMode = SYNC_MODE_NORMAL;
1962 CalendarLocal* calendar = new CalendarLocal(); 1962 CalendarLocal* calendar = new CalendarLocal();
1963 calendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId); 1963 calendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId);
1964 FileStorage* storage = new FileStorage( calendar ); 1964 FileStorage* storage = new FileStorage( calendar );
1965 bool syncOK = false; 1965 bool syncOK = false;
1966 storage->setFileName( filename ); 1966 storage->setFileName( filename );
1967 // qDebug("loading ... "); 1967 // qDebug("loading ... ");
1968 if ( storage->load() ) { 1968 if ( storage->load() ) {
1969 getEventViewerDialog()->setSyncMode( true ); 1969 getEventViewerDialog()->setSyncMode( true );
1970 syncOK = synchronizeCalendar( mCalendar, calendar, mode ); 1970 syncOK = synchronizeCalendar( mCalendar, calendar, mode );
1971 getEventViewerDialog()->setSyncMode( false ); 1971 getEventViewerDialog()->setSyncMode( false );
1972 if ( syncOK ) { 1972 if ( syncOK ) {
1973 if ( mSyncManager->mWriteBackFile ) 1973 if ( mSyncManager->mWriteBackFile )
1974 { 1974 {
1975 storage->setSaveFormat( new ICalFormat() ); 1975 storage->setSaveFormat( new ICalFormat() );
1976 storage->save(); 1976 storage->save();
1977 } 1977 }
1978 } 1978 }
1979 setModified( true ); 1979 setModified( true );
1980 } 1980 }
1981 delete storage; 1981 delete storage;
1982 delete calendar; 1982 delete calendar;
1983 if ( syncOK ) 1983 if ( syncOK )
1984 updateView(); 1984 updateView();
1985 return syncOK; 1985 return syncOK;
1986} 1986}
1987 1987
1988void CalendarView::syncExternal( int mode ) 1988void CalendarView::syncExternal( int mode )
1989{ 1989{
1990 mGlobalSyncMode = SYNC_MODE_EXTERNAL; 1990 mGlobalSyncMode = SYNC_MODE_EXTERNAL;
1991 qApp->processEvents(); 1991 qApp->processEvents();
1992 CalendarLocal* calendar = new CalendarLocal(); 1992 CalendarLocal* calendar = new CalendarLocal();
1993 calendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId); 1993 calendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId);
1994 bool syncOK = false; 1994 bool syncOK = false;
1995 bool loadSuccess = false; 1995 bool loadSuccess = false;
1996 PhoneFormat* phoneFormat = 0; 1996 PhoneFormat* phoneFormat = 0;
1997 emit tempDisableBR(true); 1997 emit tempDisableBR(true);
1998#ifndef DESKTOP_VERSION 1998#ifndef DESKTOP_VERSION
1999 SharpFormat* sharpFormat = 0; 1999 SharpFormat* sharpFormat = 0;
2000 if ( mode == 0 ) { // sharp 2000 if ( mode == 0 ) { // sharp
2001 sharpFormat = new SharpFormat () ; 2001 sharpFormat = new SharpFormat () ;
2002 loadSuccess = sharpFormat->load( calendar, mCalendar ); 2002 loadSuccess = sharpFormat->load( calendar, mCalendar );
2003 2003
2004 } else 2004 } else
2005#endif 2005#endif
2006 if ( mode == 1 ) { // phone 2006 if ( mode == 1 ) { // phone
2007 phoneFormat = new PhoneFormat (mCurrentSyncDevice, 2007 phoneFormat = new PhoneFormat (mCurrentSyncDevice,
2008 mSyncManager->mPhoneDevice, 2008 mSyncManager->mPhoneDevice,
2009 mSyncManager->mPhoneConnection, 2009 mSyncManager->mPhoneConnection,
2010 mSyncManager->mPhoneModel); 2010 mSyncManager->mPhoneModel);
2011 loadSuccess = phoneFormat->load( calendar,mCalendar); 2011 loadSuccess = phoneFormat->load( calendar,mCalendar);
2012 2012
2013 } else { 2013 } else {
2014 emit tempDisableBR(false); 2014 emit tempDisableBR(false);
2015 return; 2015 return;
2016 } 2016 }
2017 if ( loadSuccess ) { 2017 if ( loadSuccess ) {
2018 getEventViewerDialog()->setSyncMode( true ); 2018 getEventViewerDialog()->setSyncMode( true );
2019 syncOK = synchronizeCalendar( mCalendar, calendar, mSyncManager->mSyncAlgoPrefs ); 2019 syncOK = synchronizeCalendar( mCalendar, calendar, mSyncManager->mSyncAlgoPrefs );
2020 getEventViewerDialog()->setSyncMode( false ); 2020 getEventViewerDialog()->setSyncMode( false );
2021 qApp->processEvents(); 2021 qApp->processEvents();
2022 if ( syncOK ) { 2022 if ( syncOK ) {
2023 if ( mSyncManager->mWriteBackFile ) 2023 if ( mSyncManager->mWriteBackFile )
2024 { 2024 {
2025 QPtrList<Incidence> iL = mCalendar->rawIncidences(); 2025 QPtrList<Incidence> iL = mCalendar->rawIncidences();
2026 Incidence* inc = iL.first(); 2026 Incidence* inc = iL.first();
2027 if ( phoneFormat ) { 2027 if ( phoneFormat ) {
2028 while ( inc ) { 2028 while ( inc ) {
2029 inc->removeID(mCurrentSyncDevice); 2029 inc->removeID(mCurrentSyncDevice);
2030 inc = iL.next(); 2030 inc = iL.next();
2031 } 2031 }
2032 } 2032 }
2033#ifndef DESKTOP_VERSION 2033#ifndef DESKTOP_VERSION
2034 if ( sharpFormat ) 2034 if ( sharpFormat )
2035 sharpFormat->save(calendar); 2035 sharpFormat->save(calendar);
2036#endif 2036#endif
2037 if ( phoneFormat ) 2037 if ( phoneFormat )
2038 phoneFormat->save(calendar); 2038 phoneFormat->save(calendar);
2039 iL = calendar->rawIncidences(); 2039 iL = calendar->rawIncidences();
2040 inc = iL.first(); 2040 inc = iL.first();
2041 Incidence* loc; 2041 Incidence* loc;
2042 while ( inc ) { 2042 while ( inc ) {
2043 if ( inc->tempSyncStat() == SYNC_TEMPSTATE_NEW_ID ) { 2043 if ( inc->tempSyncStat() == SYNC_TEMPSTATE_NEW_ID ) {
2044 loc = mCalendar->incidence(inc->uid() ); 2044 loc = mCalendar->incidence(inc->uid() );
2045 if ( loc ) { 2045 if ( loc ) {
2046 loc->setID(mCurrentSyncDevice, inc->getID(mCurrentSyncDevice) ); 2046 loc->setID(mCurrentSyncDevice, inc->getID(mCurrentSyncDevice) );
2047 loc->setCsum( mCurrentSyncDevice, inc->getCsum(mCurrentSyncDevice) ); 2047 loc->setCsum( mCurrentSyncDevice, inc->getCsum(mCurrentSyncDevice) );
2048 } 2048 }
2049 } 2049 }
2050 inc = iL.next(); 2050 inc = iL.next();
2051 } 2051 }
2052 Incidence* lse = getLastSyncEvent(); 2052 Incidence* lse = getLastSyncEvent();
2053 if ( lse ) { 2053 if ( lse ) {
2054 lse->setReadOnly( false ); 2054 lse->setReadOnly( false );
2055 lse->setDescription( "" ); 2055 lse->setDescription( "" );
2056 lse->setReadOnly( true ); 2056 lse->setReadOnly( true );
2057 } 2057 }
2058 } 2058 }
2059 } else { 2059 } else {
2060 topLevelWidget()->setCaption( i18n("Sync cancelled or failed.") ); 2060 topLevelWidget()->setCaption( i18n("Sync cancelled or failed.") );
2061 } 2061 }
2062 setModified( true ); 2062 setModified( true );
2063 } else { 2063 } else {
2064 QString question = i18n("Sorry, the database access\ncommand failed!\n\nNothing synced!\n") ; 2064 QString question = i18n("Sorry, the database access\ncommand failed!\n\nNothing synced!\n") ;
2065 QMessageBox::information( 0, i18n("KO/Pi Import - ERROR"), 2065 QMessageBox::information( 0, i18n("KO/Pi Import - ERROR"),
2066 question, i18n("Ok")) ; 2066 question, i18n("Ok")) ;
2067 2067
2068 } 2068 }
2069 delete calendar; 2069 delete calendar;
2070 updateView(); 2070 updateView();
2071 emit tempDisableBR(false); 2071 emit tempDisableBR(false);
2072 return ;//syncOK; 2072 return ;//syncOK;
2073 2073
2074} 2074}
2075 2075
2076bool CalendarView::importBday() 2076bool CalendarView::importBday()
2077{ 2077{
2078#ifndef KORG_NOKABC 2078#ifndef KORG_NOKABC
2079 2079
2080#ifdef DESKTOP_VERSION 2080#ifdef DESKTOP_VERSION
2081 int curCal = mCalendar->defaultCalendar(); 2081 int curCal = mCalendar->defaultCalendar();
2082 int bd = mCalEditView->getBirtdayID(); 2082 int bd = mCalEditView->getBirtdayID();
2083 if ( bd == 0 ) 2083 if ( bd == 0 )
2084 return false; 2084 return false;
2085 mCalendar->setDefaultCalendar( bd ); 2085 mCalendar->setDefaultCalendar( bd );
2086 KABC::StdAddressBook* AddressBook = KABC::StdAddressBook::self( true ); 2086 KABC::StdAddressBook* AddressBook = KABC::StdAddressBook::self( true );
2087 KABC::AddressBook::Iterator it; 2087 KABC::AddressBook::Iterator it;
2088 int count = 0; 2088 int count = 0;
2089 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) { 2089 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) {
2090 ++count; 2090 ++count;
2091 } 2091 }
2092 QProgressBar bar(count,0 ); 2092 QProgressBar bar(count,0 );
2093 int w = 300; 2093 int w = 300;
2094 if ( QApplication::desktop()->width() < 320 ) 2094 if ( QApplication::desktop()->width() < 320 )
2095 w = 220; 2095 w = 220;
2096 int h = bar.sizeHint().height() ; 2096 int h = bar.sizeHint().height() ;
2097 int dw = QApplication::desktop()->width(); 2097 int dw = QApplication::desktop()->width();
2098 int dh = QApplication::desktop()->height(); 2098 int dh = QApplication::desktop()->height();
2099 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 2099 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
2100 bar.show(); 2100 bar.show();
2101 bar.setCaption (i18n("Reading addressbook - close to abort!") ); 2101 bar.setCaption (i18n("Reading addressbook - close to abort!") );
2102 qApp->processEvents(); 2102 qApp->processEvents();
2103 count = 0; 2103 count = 0;
2104 int addCount = 0; 2104 int addCount = 0;
2105 KCal::Attendee* a = 0; 2105 KCal::Attendee* a = 0;
2106 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) { 2106 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) {
2107 if ( ! bar.isVisible() ) 2107 if ( ! bar.isVisible() )
2108 return false; 2108 return false;
2109 bar.setProgress( count++ ); 2109 bar.setProgress( count++ );
2110 qApp->processEvents(); 2110 qApp->processEvents();
2111 //qDebug("add BDay %s %s", (*it).realName().latin1(),(*it).birthday().date().toString().latin1() ); 2111 //qDebug("add BDay %s %s", (*it).realName().latin1(),(*it).birthday().date().toString().latin1() );
2112 if ( (*it).birthday().date().isValid() ){ 2112 if ( (*it).birthday().date().isValid() ){
2113 a = new KCal::Attendee( (*it).realName(), (*it).preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,(*it).uid()) ; 2113 a = new KCal::Attendee( (*it).realName(), (*it).preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,(*it).uid()) ;
2114 if ( addAnniversary( (*it).birthday().date(), (*it).assembledName(), a, true ) ) 2114 if ( addAnniversary( (*it).birthday().date(), (*it).assembledName(), a, true ) )
2115 ++addCount; 2115 ++addCount;
2116 } 2116 }
2117 QDate anni = KGlobal::locale()->readDate( (*it).custom("KADDRESSBOOK", "X-Anniversary" ), "%Y-%m-%d"); 2117 QDate anni = KGlobal::locale()->readDate( (*it).custom("KADDRESSBOOK", "X-Anniversary" ), "%Y-%m-%d");
2118 if ( anni.isValid() ){ 2118 if ( anni.isValid() ){
2119 a = new KCal::Attendee( (*it).realName(), (*it).preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,(*it).uid()) ; 2119 a = new KCal::Attendee( (*it).realName(), (*it).preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,(*it).uid()) ;
2120 if ( addAnniversary( anni, (*it).assembledName(), a, false ) ) 2120 if ( addAnniversary( anni, (*it).assembledName(), a, false ) )
2121 ++addCount; 2121 ++addCount;
2122 } 2122 }
2123 } 2123 }
2124 mCalendar->setDefaultCalendar( curCal ); 2124 mCalendar->setDefaultCalendar( curCal );
2125 updateView(); 2125 updateView();
2126 topLevelWidget()->setCaption(QString::number( addCount )+ i18n(" birthdays/anniversaries added!")); 2126 topLevelWidget()->setCaption(QString::number( addCount )+ i18n(" birthdays/anniversaries added!"));
2127#else //DESKTOP_VERSION 2127#else //DESKTOP_VERSION
2128 2128
2129 ExternalAppHandler::instance()->requestBirthdayListFromKAPI("QPE/Application/kopi", this->name() /* name is here the unique uid*/); 2129 ExternalAppHandler::instance()->requestBirthdayListFromKAPI("QPE/Application/kopi", this->name() /* name is here the unique uid*/);
2130 // the result should now arrive through method insertBirthdays 2130 // the result should now arrive through method insertBirthdays
2131 2131
2132#endif //DESKTOP_VERSION 2132#endif //DESKTOP_VERSION
2133 2133
2134#endif //KORG_NOKABC 2134#endif //KORG_NOKABC
2135 2135
2136 2136
2137 return true; 2137 return true;
2138} 2138}
2139 2139
2140// This method will be called from Ka/Pi as a response to requestBirthdayListFromKAPI 2140// This method will be called from Ka/Pi as a response to requestBirthdayListFromKAPI
2141void CalendarView::insertBirthdays(const QString& uid, const QStringList& birthdayList, 2141void CalendarView::insertBirthdays(const QString& uid, const QStringList& birthdayList,
2142 const QStringList& anniversaryList, const QStringList& realNameList, 2142 const QStringList& anniversaryList, const QStringList& realNameList,
2143 const QStringList& emailList, const QStringList& assembledNameList, 2143 const QStringList& emailList, const QStringList& assembledNameList,
2144 const QStringList& uidList) 2144 const QStringList& uidList)
2145{ 2145{
2146 2146
2147 //qDebug("KO::CalendarView::insertBirthdays"); 2147 //qDebug("KO::CalendarView::insertBirthdays");
2148 if (uid == this->name()) 2148 if (uid == this->name())
2149 { 2149 {
2150 int curCal = mCalendar->defaultCalendar(); 2150 int curCal = mCalendar->defaultCalendar();
2151 int bd = mCalEditView->getBirtdayID(); 2151 int bd = mCalEditView->getBirtdayID();
2152 if ( bd == 0 ) 2152 if ( bd == 0 )
2153 return; 2153 return;
2154 mCalendar->setDefaultCalendar( bd ); 2154 mCalendar->setDefaultCalendar( bd );
2155 2155
2156 2156
2157 int count = birthdayList.count(); 2157 int count = birthdayList.count();
2158 int addCount = 0; 2158 int addCount = 0;
2159 KCal::Attendee* a = 0; 2159 KCal::Attendee* a = 0;
2160 2160
2161 //qDebug("CalView 1 %i", count); 2161 //qDebug("CalView 1 %i", count);
2162 2162
2163 QProgressBar bar(count,0 ); 2163 QProgressBar bar(count,0 );
2164 int w = 300; 2164 int w = 300;
2165 if ( QApplication::desktop()->width() < 320 ) 2165 if ( QApplication::desktop()->width() < 320 )
2166 w = 220; 2166 w = 220;
2167 int h = bar.sizeHint().height() ; 2167 int h = bar.sizeHint().height() ;
2168 int dw = QApplication::desktop()->width(); 2168 int dw = QApplication::desktop()->width();
diff --git a/libkcal/calendarlocal.cpp b/libkcal/calendarlocal.cpp
index c33581c..c82ea92 100644
--- a/libkcal/calendarlocal.cpp
+++ b/libkcal/calendarlocal.cpp
@@ -732,349 +732,349 @@ void CalendarLocal::appendAlarms( Alarm::List &alarms, Incidence *incidence,
732 732
733void CalendarLocal::appendRecurringAlarms( Alarm::List &alarms, 733void CalendarLocal::appendRecurringAlarms( Alarm::List &alarms,
734 Incidence *incidence, 734 Incidence *incidence,
735 const QDateTime &from, 735 const QDateTime &from,
736 const QDateTime &to ) 736 const QDateTime &to )
737{ 737{
738 738
739 QPtrList<Alarm> alarmList = incidence->alarms(); 739 QPtrList<Alarm> alarmList = incidence->alarms();
740 Alarm *alarm; 740 Alarm *alarm;
741 QDateTime qdt; 741 QDateTime qdt;
742 for( alarm = alarmList.first(); alarm; alarm = alarmList.next() ) { 742 for( alarm = alarmList.first(); alarm; alarm = alarmList.next() ) {
743 if (incidence->recursOn(from.date())) { 743 if (incidence->recursOn(from.date())) {
744 qdt.setTime(alarm->time().time()); 744 qdt.setTime(alarm->time().time());
745 qdt.setDate(from.date()); 745 qdt.setDate(from.date());
746 } 746 }
747 else qdt = alarm->time(); 747 else qdt = alarm->time();
748 // qDebug("1 %s %s %s", qdt.toString().latin1(), from.toString().latin1(), to.toString().latin1()); 748 // qDebug("1 %s %s %s", qdt.toString().latin1(), from.toString().latin1(), to.toString().latin1());
749 if ( alarm->enabled() ) { 749 if ( alarm->enabled() ) {
750 if ( qdt >= from && qdt <= to ) { 750 if ( qdt >= from && qdt <= to ) {
751 alarms.append( alarm ); 751 alarms.append( alarm );
752 } 752 }
753 } 753 }
754 } 754 }
755} 755}
756 756
757 757
758/****************************** PROTECTED METHODS ****************************/ 758/****************************** PROTECTED METHODS ****************************/
759 759
760// after changes are made to an event, this should be called. 760// after changes are made to an event, this should be called.
761void CalendarLocal::update( IncidenceBase *incidence ) 761void CalendarLocal::update( IncidenceBase *incidence )
762{ 762{
763 incidence->setSyncStatus( Event::SYNCMOD ); 763 incidence->setSyncStatus( Event::SYNCMOD );
764 incidence->setLastModified( QDateTime::currentDateTime() ); 764 incidence->setLastModified( QDateTime::currentDateTime() );
765 // we should probably update the revision number here, 765 // we should probably update the revision number here,
766 // or internally in the Event itself when certain things change. 766 // or internally in the Event itself when certain things change.
767 // need to verify with ical documentation. 767 // need to verify with ical documentation.
768 768
769 setModified( true ); 769 setModified( true );
770} 770}
771 771
772void CalendarLocal::insertEvent( Event *event ) 772void CalendarLocal::insertEvent( Event *event )
773{ 773{
774 if ( mEventList.findRef( event ) < 0 ) mEventList.append( event ); 774 if ( mEventList.findRef( event ) < 0 ) mEventList.append( event );
775} 775}
776 776
777 777
778QPtrList<Event> CalendarLocal::rawEventsForDate( const QDate &qd, bool sorted ) 778QPtrList<Event> CalendarLocal::rawEventsForDate( const QDate &qd, bool sorted )
779{ 779{
780 QPtrList<Event> eventList; 780 QPtrList<Event> eventList;
781 781
782 Event *event; 782 Event *event;
783 for( event = mEventList.first(); event; event = mEventList.next() ) { 783 for( event = mEventList.first(); event; event = mEventList.next() ) {
784 if ( !event->calEnabled() ) continue; 784 if ( !event->calEnabled() ) continue;
785 if ( event->doesRecur() ) { 785 if ( event->doesRecur() ) {
786 if ( event->isMultiDay() ) { 786 if ( event->isMultiDay() ) {
787 int extraDays = event->dtStart().date().daysTo( event->dtEnd().date() ); 787 int extraDays = event->dtStart().date().daysTo( event->dtEnd().date() );
788 int i; 788 int i;
789 for ( i = 0; i <= extraDays; i++ ) { 789 for ( i = 0; i <= extraDays; i++ ) {
790 if ( event->recursOn( qd.addDays( -i ) ) ) { 790 if ( event->recursOn( qd.addDays( -i ) ) ) {
791 eventList.append( event ); 791 eventList.append( event );
792 break; 792 break;
793 } 793 }
794 } 794 }
795 } else { 795 } else {
796 if ( event->recursOn( qd ) ) 796 if ( event->recursOn( qd ) )
797 eventList.append( event ); 797 eventList.append( event );
798 } 798 }
799 } else { 799 } else {
800 if ( event->dtStart().date() <= qd && event->dtEnd().date() >= qd ) { 800 if ( event->dtStart().date() <= qd && event->dtEnd().date() >= qd ) {
801 eventList.append( event ); 801 eventList.append( event );
802 } 802 }
803 } 803 }
804 } 804 }
805 805
806 if ( !sorted ) { 806 if ( !sorted ) {
807 return eventList; 807 return eventList;
808 } 808 }
809 809
810 // kdDebug(5800) << "Sorting events for date\n" << endl; 810 // kdDebug(5800) << "Sorting events for date\n" << endl;
811 // now, we have to sort it based on dtStart.time() 811 // now, we have to sort it based on dtStart.time()
812 QPtrList<Event> eventListSorted; 812 QPtrList<Event> eventListSorted;
813 Event *sortEvent; 813 Event *sortEvent;
814 for ( event = eventList.first(); event; event = eventList.next() ) { 814 for ( event = eventList.first(); event; event = eventList.next() ) {
815 sortEvent = eventListSorted.first(); 815 sortEvent = eventListSorted.first();
816 int i = 0; 816 int i = 0;
817 while ( sortEvent && event->dtStart().time()>=sortEvent->dtStart().time() ) 817 while ( sortEvent && event->dtStart().time()>=sortEvent->dtStart().time() )
818 { 818 {
819 i++; 819 i++;
820 sortEvent = eventListSorted.next(); 820 sortEvent = eventListSorted.next();
821 } 821 }
822 eventListSorted.insert( i, event ); 822 eventListSorted.insert( i, event );
823 } 823 }
824 return eventListSorted; 824 return eventListSorted;
825} 825}
826 826
827 827
828QPtrList<Event> CalendarLocal::rawEvents( const QDate &start, const QDate &end, 828QPtrList<Event> CalendarLocal::rawEvents( const QDate &start, const QDate &end,
829 bool inclusive ) 829 bool inclusive )
830{ 830{
831 Event *event = 0; 831 Event *event = 0;
832 832
833 QPtrList<Event> eventList; 833 QPtrList<Event> eventList;
834 834
835 // Get non-recurring events 835 // Get non-recurring events
836 for( event = mEventList.first(); event; event = mEventList.next() ) { 836 for( event = mEventList.first(); event; event = mEventList.next() ) {
837 if ( !event->calEnabled() ) continue; 837 if ( !event->calEnabled() ) continue;
838 if ( event->doesRecur() ) { 838 if ( event->doesRecur() ) {
839 QDate rStart = event->dtStart().date(); 839 QDate rStart = event->dtStart().date();
840 bool found = false; 840 bool found = false;
841 if ( inclusive ) { 841 if ( inclusive ) {
842 if ( rStart >= start && rStart <= end ) { 842 if ( rStart >= start && rStart <= end ) {
843 // Start date of event is in range. Now check for end date. 843 // Start date of event is in range. Now check for end date.
844 // if duration is negative, event recurs forever, so do not include it. 844 // if duration is negative, event recurs forever, so do not include it.
845 if ( event->recurrence()->duration() == 0 ) { // End date set 845 if ( event->recurrence()->duration() == 0 ) { // End date set
846 QDate rEnd = event->recurrence()->endDate(); 846 QDate rEnd = event->recurrence()->endDate();
847 if ( rEnd >= start && rEnd <= end ) { // End date within range 847 if ( rEnd >= start && rEnd <= end ) { // End date within range
848 found = true; 848 found = true;
849 } 849 }
850 } else if ( event->recurrence()->duration() > 0 ) { // Duration set 850 } else if ( event->recurrence()->duration() > 0 ) { // Duration set
851 // TODO: Calculate end date from duration. Should be done in Event 851 // TODO: Calculate end date from duration. Should be done in Event
852 // For now exclude all events with a duration. 852 // For now exclude all events with a duration.
853 } 853 }
854 } 854 }
855 } else { 855 } else {
856 bool founOne; 856 bool founOne;
857 QDate next = event->getNextOccurence( start, &founOne ).date(); 857 QDate next = event->getNextOccurence( start, &founOne ).date();
858 if ( founOne ) { 858 if ( founOne ) {
859 if ( next <= end ) { 859 if ( next <= end ) {
860 found = true; 860 found = true;
861 } 861 }
862 } 862 }
863 863
864 /* 864 /*
865 // crap !!! 865 // crap !!!
866 if ( rStart <= end ) { // Start date not after range 866 if ( rStart <= end ) { // Start date not after range
867 if ( rStart >= start ) { // Start date within range 867 if ( rStart >= start ) { // Start date within range
868 found = true; 868 found = true;
869 } else if ( event->recurrence()->duration() == -1 ) { // Recurs forever 869 } else if ( event->recurrence()->duration() == -1 ) { // Recurs forever
870 found = true; 870 found = true;
871 } else if ( event->recurrence()->duration() == 0 ) { // End date set 871 } else if ( event->recurrence()->duration() == 0 ) { // End date set
872 QDate rEnd = event->recurrence()->endDate(); 872 QDate rEnd = event->recurrence()->endDate();
873 if ( rEnd >= start && rEnd <= end ) { // End date within range 873 if ( rEnd >= start && rEnd <= end ) { // End date within range
874 found = true; 874 found = true;
875 } 875 }
876 } else { // Duration set 876 } else { // Duration set
877 // TODO: Calculate end date from duration. Should be done in Event 877 // TODO: Calculate end date from duration. Should be done in Event
878 // For now include all events with a duration. 878 // For now include all events with a duration.
879 found = true; 879 found = true;
880 } 880 }
881 } 881 }
882 */ 882 */
883 883
884 } 884 }
885 885
886 if ( found ) eventList.append( event ); 886 if ( found ) eventList.append( event );
887 } else { 887 } else {
888 QDate s = event->dtStart().date(); 888 QDate s = event->dtStart().date();
889 QDate e = event->dtEnd().date(); 889 QDate e = event->dtEnd().date();
890 890
891 if ( inclusive ) { 891 if ( inclusive ) {
892 if ( s >= start && e <= end ) { 892 if ( s >= start && e <= end ) {
893 eventList.append( event ); 893 eventList.append( event );
894 } 894 }
895 } else { 895 } else {
896 if ( ( e >= start && s <= end ) ) { 896 if ( ( e >= start && s <= end ) ) {
897 eventList.append( event ); 897 eventList.append( event );
898 } 898 }
899 } 899 }
900 } 900 }
901 } 901 }
902 902
903 return eventList; 903 return eventList;
904} 904}
905 905
906QPtrList<Event> CalendarLocal::rawEventsForDate( const QDateTime &qdt ) 906QPtrList<Event> CalendarLocal::rawEventsForDate( const QDateTime &qdt )
907{ 907{
908 return rawEventsForDate( qdt.date() ); 908 return rawEventsForDate( qdt.date() );
909} 909}
910 910
911QPtrList<Event> CalendarLocal::rawEvents() 911QPtrList<Event> CalendarLocal::rawEvents()
912{ 912{
913 QPtrList<Event> el; 913 QPtrList<Event> el;
914 for ( Event *it = mEventList.first(); it; it = mEventList.next() ) 914 for ( Event *it = mEventList.first(); it; it = mEventList.next() )
915 if ( it->calEnabled() ) el.append( it ); 915 if ( it->calEnabled() ) el.append( it );
916 return el; 916 return el;
917} 917}
918 918
919bool CalendarLocal::addJournal(Journal *journal) 919bool CalendarLocal::addJournal(Journal *journal)
920{ 920{
921 mJournalList.append(journal); 921 mJournalList.append(journal);
922 922
923 journal->registerObserver( this ); 923 journal->registerObserver( this );
924 924
925 setModified( true ); 925 setModified( true );
926 if ( journal->calID() == 0 ) 926 if ( journal->calID() == 0 )
927 journal->setCalID( mDefaultCalendar ); 927 journal->setCalID( mDefaultCalendar );
928 journal->setCalEnabled( true ); 928 journal->setCalEnabled( true );
929 return true; 929 return true;
930} 930}
931 931
932void CalendarLocal::deleteJournal( Journal *journal ) 932void CalendarLocal::deleteJournal( Journal *journal )
933{ 933{
934 clearUndo(journal); 934 clearUndo(journal);
935 if ( mJournalList.removeRef(journal) ) { 935 if ( mJournalList.removeRef(journal) ) {
936 setModified( true ); 936 setModified( true );
937 } 937 }
938} 938}
939 939
940QPtrList<Journal> CalendarLocal::journals4Date( const QDate & date ) 940QPtrList<Journal> CalendarLocal::journals4Date( const QDate & date )
941{ 941{
942 QPtrList<Journal> el; 942 QPtrList<Journal> el;
943 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() ) 943 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() )
944 if ( it->calEnabled() && it->dtStart().date() == date) el.append( it ); 944 if ( it->calEnabled() && it->dtStart().date() == date) el.append( it );
945 return el; 945 return el;
946} 946}
947Journal *CalendarLocal::journal( const QDate &date ) 947Journal *CalendarLocal::journal( const QDate &date )
948{ 948{
949// kdDebug(5800) << "CalendarLocal::journal() " << date.toString() << endl; 949// kdDebug(5800) << "CalendarLocal::journal() " << date.toString() << endl;
950 950
951 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() ) 951 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() )
952 if ( it->calEnabled() && it->dtStart().date() == date ) 952 if ( it->calEnabled() && it->dtStart().date() == date )
953 return it; 953 return it;
954 954
955 return 0; 955 return 0;
956} 956}
957 957
958Journal *CalendarLocal::journal( const QString &uid ) 958Journal *CalendarLocal::journal( const QString &uid )
959{ 959{
960 Journal * retVal = 0; 960 Journal * retVal = 0;
961 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() ) 961 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() )
962 if ( it->calEnabled() && it->uid() == uid ) { 962 if ( it->calEnabled() && it->uid() == uid ) {
963 if ( retVal ) { 963 if ( retVal ) {
964 if ( retVal->calID() > it->calID() ) { 964 if ( retVal->calID() > it->calID() ) {
965 retVal = it; 965 retVal = it;
966 } 966 }
967 } else { 967 } else {
968 retVal = it; 968 retVal = it;
969 } 969 }
970 } 970 }
971 return retVal; 971 return retVal;
972} 972}
973 973
974QPtrList<Journal> CalendarLocal::journals() 974QPtrList<Journal> CalendarLocal::journals()
975{ 975{
976 QPtrList<Journal> el; 976 QPtrList<Journal> el;
977 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() ) 977 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() )
978 if ( it->calEnabled() ) el.append( it ); 978 if ( it->calEnabled() ) el.append( it );
979 return el; 979 return el;
980} 980}
981void CalendarLocal::setCalendarRemove( int id ) 981void CalendarLocal::setCalendarRemove( int id )
982{ 982{
983 983
984 { 984 {
985 QPtrList<Event> EventList = mEventList; 985 QPtrList<Event> EventList = mEventList;
986 Event * ev = EventList.first(); 986 Event * ev = EventList.first();
987 while ( ev ) { 987 while ( ev ) {
988 if ( ev->calID() == id ) 988 if ( ev->calID() == id && ev->uid().left( 15 ) != QString("last-syncEvent-") )
989 deleteEvent( ev ); 989 deleteEvent( ev );
990 ev = EventList.next(); 990 ev = EventList.next();
991 } 991 }
992 } 992 }
993 { 993 {
994 994
995 QPtrList<Todo> TodoList = mTodoList; 995 QPtrList<Todo> TodoList = mTodoList;
996 Todo * ev = TodoList.first(); 996 Todo * ev = TodoList.first();
997 while ( ev ) { 997 while ( ev ) {
998 if ( ev->calID() == id ) 998 if ( ev->calID() == id )
999 deleteTodo( ev ); 999 deleteTodo( ev );
1000 ev = TodoList.next(); 1000 ev = TodoList.next();
1001 } 1001 }
1002 } 1002 }
1003 { 1003 {
1004 QPtrList<Journal> JournalList = mJournalList; 1004 QPtrList<Journal> JournalList = mJournalList;
1005 Journal * ev = JournalList.first(); 1005 Journal * ev = JournalList.first();
1006 while ( ev ) { 1006 while ( ev ) {
1007 if ( ev->calID() == id ) 1007 if ( ev->calID() == id )
1008 deleteJournal( ev ); 1008 deleteJournal( ev );
1009 ev = JournalList.next(); 1009 ev = JournalList.next();
1010 } 1010 }
1011 } 1011 }
1012 1012
1013 clearUndo(0); 1013 clearUndo(0);
1014 1014
1015} 1015}
1016 1016
1017void CalendarLocal::setAllCalendarEnabled( bool enable ) 1017void CalendarLocal::setAllCalendarEnabled( bool enable )
1018{ 1018{
1019 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() ) 1019 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() )
1020 it->setCalEnabled( enable ); 1020 it->setCalEnabled( enable );
1021 1021
1022 for ( Event *it = mEventList.first(); it; it = mEventList.next() ) 1022 for ( Event *it = mEventList.first(); it; it = mEventList.next() )
1023 it->setCalEnabled( enable ); 1023 it->setCalEnabled( enable );
1024 1024
1025 for ( Todo *it = mTodoList.first(); it; it = mTodoList.next() ) 1025 for ( Todo *it = mTodoList.first(); it; it = mTodoList.next() )
1026 it->setCalEnabled( enable ); 1026 it->setCalEnabled( enable );
1027 1027
1028 1028
1029} 1029}
1030void CalendarLocal::setCalendarEnabled( int id, bool enable ) 1030void CalendarLocal::setCalendarEnabled( int id, bool enable )
1031{ 1031{
1032 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() ) 1032 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() )
1033 if ( it->calID() == id ) it->setCalEnabled( enable ); 1033 if ( it->calID() == id ) it->setCalEnabled( enable );
1034 1034
1035 for ( Event *it = mEventList.first(); it; it = mEventList.next() ) 1035 for ( Event *it = mEventList.first(); it; it = mEventList.next() )
1036 if ( it->calID() == id ) it->setCalEnabled( enable ); 1036 if ( it->calID() == id ) it->setCalEnabled( enable );
1037 1037
1038 for ( Todo *it = mTodoList.first(); it; it = mTodoList.next() ) 1038 for ( Todo *it = mTodoList.first(); it; it = mTodoList.next() )
1039 if ( it->calID() == id ) it->setCalEnabled( enable ); 1039 if ( it->calID() == id ) it->setCalEnabled( enable );
1040 1040
1041} 1041}
1042 1042
1043void CalendarLocal::setReadOnly( int id, bool enable ) 1043void CalendarLocal::setReadOnly( int id, bool enable )
1044{ 1044{
1045 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() ) 1045 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() )
1046 if ( it->calID() == id ) it->setReadOnly( enable ); 1046 if ( it->calID() == id ) it->setReadOnly( enable );
1047 1047
1048 for ( Event *it = mEventList.first(); it; it = mEventList.next() ) 1048 for ( Event *it = mEventList.first(); it; it = mEventList.next() )
1049 if ( it->calID() == id ) it->setReadOnly( enable ); 1049 if ( it->calID() == id ) it->setReadOnly( enable );
1050 1050
1051 for ( Todo *it = mTodoList.first(); it; it = mTodoList.next() ) 1051 for ( Todo *it = mTodoList.first(); it; it = mTodoList.next() )
1052 if ( it->calID() == id ) it->setReadOnly( enable ); 1052 if ( it->calID() == id ) it->setReadOnly( enable );
1053 1053
1054} 1054}
1055 1055
1056void CalendarLocal::setAlarmEnabled( int id, bool enable ) 1056void CalendarLocal::setAlarmEnabled( int id, bool enable )
1057{ 1057{
1058 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() ) 1058 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() )
1059 if ( it->calID() == id ) it->setAlarmEnabled( enable ); 1059 if ( it->calID() == id ) it->setAlarmEnabled( enable );
1060 1060
1061 for ( Event *it = mEventList.first(); it; it = mEventList.next() ) 1061 for ( Event *it = mEventList.first(); it; it = mEventList.next() )
1062 if ( it->calID() == id ) it->setAlarmEnabled( enable ); 1062 if ( it->calID() == id ) it->setAlarmEnabled( enable );
1063 1063
1064 for ( Todo *it = mTodoList.first(); it; it = mTodoList.next() ) 1064 for ( Todo *it = mTodoList.first(); it; it = mTodoList.next() )
1065 if ( it->calID() == id ) it->setAlarmEnabled( enable ); 1065 if ( it->calID() == id ) it->setAlarmEnabled( enable );
1066 reInitAlarmSettings(); 1066 reInitAlarmSettings();
1067 1067
1068} 1068}
1069void CalendarLocal::setDefaultCalendarEnabledOnly() 1069void CalendarLocal::setDefaultCalendarEnabledOnly()
1070{ 1070{
1071 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() ) 1071 for ( Journal *it = mJournalList.first(); it; it = mJournalList.next() )
1072 it->setCalEnabled( it->calID() == mDefaultCalendar ); 1072 it->setCalEnabled( it->calID() == mDefaultCalendar );
1073 1073
1074 for ( Event *it = mEventList.first(); it; it = mEventList.next() ) 1074 for ( Event *it = mEventList.first(); it; it = mEventList.next() )
1075 it->setCalEnabled( it->calID() == mDefaultCalendar); 1075 it->setCalEnabled( it->calID() == mDefaultCalendar);
1076 1076
1077 for ( Todo *it = mTodoList.first(); it; it = mTodoList.next() ) 1077 for ( Todo *it = mTodoList.first(); it; it = mTodoList.next() )
1078 it->setCalEnabled( it->calID() == mDefaultCalendar); 1078 it->setCalEnabled( it->calID() == mDefaultCalendar);
1079 1079
1080} 1080}
diff --git a/libkdepim/ksyncmanager.cpp b/libkdepim/ksyncmanager.cpp
index 8bf0d27..fa7804e 100644
--- a/libkdepim/ksyncmanager.cpp
+++ b/libkdepim/ksyncmanager.cpp
@@ -1022,791 +1022,791 @@ void KSyncManager::syncKDE()
1022 } 1022 }
1023 break; 1023 break;
1024 case (PWMPI): 1024 case (PWMPI):
1025 1025
1026 break; 1026 break;
1027 default: 1027 default:
1028 qDebug("KSM::slotSyncMenu: invalid apptype selected"); 1028 qDebug("KSM::slotSyncMenu: invalid apptype selected");
1029 break; 1029 break;
1030 1030
1031 } 1031 }
1032} 1032}
1033 1033
1034void KSyncManager::syncSharp() 1034void KSyncManager::syncSharp()
1035{ 1035{
1036 1036
1037 if ( ! syncExternalApplication("sharp") ) 1037 if ( ! syncExternalApplication("sharp") )
1038 qDebug("KSM::ERROR sync sharp "); 1038 qDebug("KSM::ERROR sync sharp ");
1039} 1039}
1040 1040
1041bool KSyncManager::syncExternalApplication(QString resource) 1041bool KSyncManager::syncExternalApplication(QString resource)
1042{ 1042{
1043 1043
1044 emit save(); 1044 emit save();
1045 1045
1046 if ( mAskForPreferences ) 1046 if ( mAskForPreferences )
1047 if ( !edit_sync_options()) { 1047 if ( !edit_sync_options()) {
1048 mParent->topLevelWidget()->setCaption( i18n("Syncing aborted. Nothing synced.") ); 1048 mParent->topLevelWidget()->setCaption( i18n("Syncing aborted. Nothing synced.") );
1049 return false; 1049 return false;
1050 } 1050 }
1051 1051
1052 qDebug("KSM::Sync extern %s", resource.latin1()); 1052 qDebug("KSM::Sync extern %s", resource.latin1());
1053 1053
1054 bool syncOK = mImplementation->syncExternal(this, resource); 1054 bool syncOK = mImplementation->syncExternal(this, resource);
1055 1055
1056 return syncOK; 1056 return syncOK;
1057 1057
1058} 1058}
1059 1059
1060void KSyncManager::syncPhone() 1060void KSyncManager::syncPhone()
1061{ 1061{
1062 1062
1063 syncExternalApplication("phone"); 1063 syncExternalApplication("phone");
1064 1064
1065} 1065}
1066 1066
1067void KSyncManager::showProgressBar(int percentage, QString caption, int total) 1067void KSyncManager::showProgressBar(int percentage, QString caption, int total)
1068{ 1068{
1069 if (!bar->isVisible()) 1069 if (!bar->isVisible())
1070 { 1070 {
1071 int w = 300; 1071 int w = 300;
1072 if ( QApplication::desktop()->width() < 320 ) 1072 if ( QApplication::desktop()->width() < 320 )
1073 w = 220; 1073 w = 220;
1074 int h = bar->sizeHint().height() ; 1074 int h = bar->sizeHint().height() ;
1075 int dw = QApplication::desktop()->width(); 1075 int dw = QApplication::desktop()->width();
1076 int dh = QApplication::desktop()->height(); 1076 int dh = QApplication::desktop()->height();
1077 bar->setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 1077 bar->setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
1078 bar->setCaption (caption); 1078 bar->setCaption (caption);
1079 bar->setTotalSteps ( total ) ; 1079 bar->setTotalSteps ( total ) ;
1080 bar->show(); 1080 bar->show();
1081 } 1081 }
1082 bar->raise(); 1082 bar->raise();
1083 bar->setProgress( percentage ); 1083 bar->setProgress( percentage );
1084 qApp->processEvents(); 1084 qApp->processEvents();
1085} 1085}
1086 1086
1087void KSyncManager::hideProgressBar() 1087void KSyncManager::hideProgressBar()
1088{ 1088{
1089 bar->hide(); 1089 bar->hide();
1090 qApp->processEvents(); 1090 qApp->processEvents();
1091} 1091}
1092 1092
1093bool KSyncManager::isProgressBarCanceled() 1093bool KSyncManager::isProgressBarCanceled()
1094{ 1094{
1095 return !bar->isVisible(); 1095 return !bar->isVisible();
1096} 1096}
1097 1097
1098QString KSyncManager::syncFileName() 1098QString KSyncManager::syncFileName()
1099{ 1099{
1100 1100
1101 QString fn = "tempfile"; 1101 QString fn = "tempfile";
1102 switch(mTargetApp) 1102 switch(mTargetApp)
1103 { 1103 {
1104 case (KAPI): 1104 case (KAPI):
1105 fn = "tempsyncab.vcf"; 1105 fn = "tempsyncab.vcf";
1106 break; 1106 break;
1107 case (KOPI): 1107 case (KOPI):
1108 fn = "tempsynccal.ics"; 1108 fn = "tempsynccal.ics";
1109 break; 1109 break;
1110 case (PWMPI): 1110 case (PWMPI):
1111 fn = "tempsyncpw.pwm"; 1111 fn = "tempsyncpw.pwm";
1112 break; 1112 break;
1113 default: 1113 default:
1114 break; 1114 break;
1115 } 1115 }
1116#ifdef DESKTOP_VERSION 1116#ifdef DESKTOP_VERSION
1117 return locateLocal( "tmp", fn ); 1117 return locateLocal( "tmp", fn );
1118#else 1118#else
1119 return (QString( "/tmp/" )+ fn ); 1119 return (QString( "/tmp/" )+ fn );
1120#endif 1120#endif
1121} 1121}
1122 1122
1123void KSyncManager::syncPi() 1123void KSyncManager::syncPi()
1124{ 1124{
1125 mIsKapiFile = true; 1125 mIsKapiFile = true;
1126 mPisyncFinished = false; 1126 mPisyncFinished = false;
1127 qApp->processEvents(); 1127 qApp->processEvents();
1128 if ( mAskForPreferences ) 1128 if ( mAskForPreferences )
1129 if ( !edit_pisync_options()) { 1129 if ( !edit_pisync_options()) {
1130 mParent->topLevelWidget()->setCaption( i18n("Syncing aborted. Nothing synced.") ); 1130 mParent->topLevelWidget()->setCaption( i18n("Syncing aborted. Nothing synced.") );
1131 mPisyncFinished = true; 1131 mPisyncFinished = true;
1132 return; 1132 return;
1133 } 1133 }
1134 bool ok; 1134 bool ok;
1135 Q_UINT16 port = mActiveSyncPort.toUInt(&ok); 1135 Q_UINT16 port = mActiveSyncPort.toUInt(&ok);
1136 if ( ! ok ) { 1136 if ( ! ok ) {
1137 mParent->topLevelWidget()->setCaption( i18n("Sorry, no valid port.Syncing cancelled.") ); 1137 mParent->topLevelWidget()->setCaption( i18n("Sorry, no valid port.Syncing cancelled.") );
1138 mPisyncFinished = true; 1138 mPisyncFinished = true;
1139 return; 1139 return;
1140 } 1140 }
1141 mCurrentResourceLocal = ""; 1141 mCurrentResourceLocal = "";
1142 mCurrentResourceRemote = ""; 1142 mCurrentResourceRemote = "";
1143 if ( mSpecificResources.count() ) { 1143 if ( mSpecificResources.count() ) {
1144 int lastSyncRes = mSpecificResources.count()/2; 1144 int lastSyncRes = mSpecificResources.count()/2;
1145 int ccc = mSpecificResources.count()-1; 1145 int ccc = mSpecificResources.count()-1;
1146 while ( lastSyncRes > 0 && ccc > 0 && mSpecificResources[ ccc ].isEmpty() ) { 1146 while ( lastSyncRes > 0 && ccc > 0 && mSpecificResources[ ccc ].isEmpty() ) {
1147 --ccc; 1147 --ccc;
1148 --lastSyncRes; 1148 --lastSyncRes;
1149 //qDebug ( "KSM: sync pi %d",ccc ); 1149 //qDebug ( "KSM: sync pi %d",ccc );
1150 } 1150 }
1151 int startLocal = 0; 1151 int startLocal = 0;
1152 int startRemote = mSpecificResources.count()/2; 1152 int startRemote = mSpecificResources.count()/2;
1153 emit multiResourceSyncStart( true ); 1153 emit multiResourceSyncStart( true );
1154 while ( startLocal < mSpecificResources.count()/2 ) { 1154 while ( startLocal < mSpecificResources.count()/2 ) {
1155 if ( startLocal+1 >= lastSyncRes ) 1155 if ( startLocal+1 >= lastSyncRes )
1156 emit multiResourceSyncStart( false ); 1156 emit multiResourceSyncStart( false );
1157 mPisyncFinished = false; 1157 mPisyncFinished = false;
1158 mCurrentResourceLocal = mSpecificResources[ startLocal ]; 1158 mCurrentResourceLocal = mSpecificResources[ startLocal ];
1159 mCurrentResourceRemote = mSpecificResources[ startRemote ]; 1159 mCurrentResourceRemote = mSpecificResources[ startRemote ];
1160 //qDebug ( "KSM: AAASyncing resources: Local: %s --- Remote: %s ",mCurrentResourceLocal.latin1(), mCurrentResourceRemote.latin1() ); 1160 //qDebug ( "KSM: AAASyncing resources: Local: %s --- Remote: %s ",mCurrentResourceLocal.latin1(), mCurrentResourceRemote.latin1() );
1161 if ( !mCurrentResourceRemote.isEmpty() ) { 1161 if ( !mCurrentResourceRemote.isEmpty() ) {
1162 qDebug ( "KSM: Syncing resources: Local: %s --- Remote: %s ",mCurrentResourceLocal.latin1(), mCurrentResourceRemote.latin1() ); 1162 qDebug ( "KSM: Syncing resources: Local: %s --- Remote: %s ",mCurrentResourceLocal.latin1(), mCurrentResourceRemote.latin1() );
1163 1163
1164 KCommandSocket* commandSocket = new KCommandSocket( mCurrentResourceRemote, mPassWordPiSync, port, mActiveSyncIP, this, mParent->topLevelWidget() ); 1164 KCommandSocket* commandSocket = new KCommandSocket( mCurrentResourceRemote, mPassWordPiSync, port, mActiveSyncIP, this, mParent->topLevelWidget() );
1165 connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int )), this, SLOT(deleteCommandSocket(KCommandSocket*, int)) ); 1165 connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int )), this, SLOT(deleteCommandSocket(KCommandSocket*, int)) );
1166 commandSocket->readFile( syncFileName() ); 1166 commandSocket->readFile( syncFileName() );
1167 mParent->topLevelWidget()->setCaption( i18n("Syncing %1 <-> %2").arg( mCurrentResourceLocal ).arg( mCurrentResourceRemote ) ); 1167 mParent->topLevelWidget()->setCaption( i18n("Syncing %1 <-> %2").arg( mCurrentResourceLocal ).arg( mCurrentResourceRemote ) );
1168 while ( !mPisyncFinished ) { 1168 while ( !mPisyncFinished ) {
1169 //qDebug("waiting "); 1169 //qDebug("waiting ");
1170 qApp->processEvents(); 1170 qApp->processEvents();
1171 } 1171 }
1172 if ( startLocal+1 < mSpecificResources.count()/2 ) { 1172 if ( startLocal+1 < mSpecificResources.count()/2 ) {
1173 mParent->topLevelWidget()->setCaption( i18n("Waiting 2 secs before syncing next resource...") ); 1173 mParent->topLevelWidget()->setCaption( i18n("Waiting 2 secs before syncing next resource...") );
1174 QTime timer; 1174 QTime timer;
1175 timer.start(); 1175 timer.start();
1176 while ( timer.elapsed () < 2000 ) { 1176 while ( timer.elapsed () < 2000 ) {
1177 qApp->processEvents(); 1177 qApp->processEvents();
1178 } 1178 }
1179 } 1179 }
1180 } 1180 }
1181 ++startRemote; 1181 ++startRemote;
1182 ++startLocal; 1182 ++startLocal;
1183 1183
1184 } 1184 }
1185 mPisyncFinished = true; 1185 mPisyncFinished = true;
1186 } else { 1186 } else {
1187 KCommandSocket* commandSocket = new KCommandSocket( "", mPassWordPiSync, port, mActiveSyncIP, this, mParent->topLevelWidget() ); 1187 KCommandSocket* commandSocket = new KCommandSocket( "", mPassWordPiSync, port, mActiveSyncIP, this, mParent->topLevelWidget() );
1188 connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int )), this, SLOT(deleteCommandSocket(KCommandSocket*, int)) ); 1188 connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int )), this, SLOT(deleteCommandSocket(KCommandSocket*, int)) );
1189 commandSocket->readFile( syncFileName() ); 1189 commandSocket->readFile( syncFileName() );
1190 } 1190 }
1191} 1191}
1192 1192
1193void KSyncManager::deleteCommandSocket(KCommandSocket*s, int state) 1193void KSyncManager::deleteCommandSocket(KCommandSocket*s, int state)
1194{ 1194{
1195 //enum { success, errorW, errorR, quiet }; 1195 //enum { success, errorW, errorR, quiet };
1196 1196
1197 1197
1198 1198
1199 if ( state == KCommandSocket::errorR ||state == KCommandSocket::errorTO ||state == KCommandSocket::errorPW || 1199 if ( state == KCommandSocket::errorR ||state == KCommandSocket::errorTO ||state == KCommandSocket::errorPW ||
1200 state == KCommandSocket::errorCA ||state == KCommandSocket::errorFI ||state == KCommandSocket::errorUN||state == KCommandSocket::errorED ) { 1200 state == KCommandSocket::errorCA ||state == KCommandSocket::errorFI ||state == KCommandSocket::errorUN||state == KCommandSocket::errorED ) {
1201 if ( state == KCommandSocket::errorPW ) 1201 if ( state == KCommandSocket::errorPW )
1202 mParent->topLevelWidget()->setCaption( i18n("Wrong password: Receiving remote file failed.") ); 1202 mParent->topLevelWidget()->setCaption( i18n("Wrong password: Receiving remote file failed.") );
1203 else if ( state == KCommandSocket::errorR ||state == KCommandSocket::errorTO ) 1203 else if ( state == KCommandSocket::errorR ||state == KCommandSocket::errorTO )
1204 mParent->topLevelWidget()->setCaption( i18n("ERROR: Receiving remote file failed.") ); 1204 mParent->topLevelWidget()->setCaption( i18n("ERROR: Receiving remote file failed.") );
1205 else if ( state == KCommandSocket::errorCA ) 1205 else if ( state == KCommandSocket::errorCA )
1206 mParent->topLevelWidget()->setCaption( i18n("Sync cancelled from remote.") ); 1206 mParent->topLevelWidget()->setCaption( i18n("Sync cancelled from remote.") );
1207 else if ( state == KCommandSocket::errorFI ) 1207 else if ( state == KCommandSocket::errorFI )
1208 mParent->topLevelWidget()->setCaption( i18n("File error on remote.") ); 1208 mParent->topLevelWidget()->setCaption( i18n("File error on remote.") );
1209 else if ( state == KCommandSocket::errorED ) 1209 else if ( state == KCommandSocket::errorED )
1210 mParent->topLevelWidget()->setCaption( i18n("Please close error dialog on remote.") ); 1210 mParent->topLevelWidget()->setCaption( i18n("Please close error dialog on remote.") );
1211 else if ( state == KCommandSocket::errorUN ) 1211 else if ( state == KCommandSocket::errorUN )
1212 mParent->topLevelWidget()->setCaption( i18n("Unknown error on remote.") ); 1212 mParent->topLevelWidget()->setCaption( i18n("Unknown error on remote.") );
1213 delete s; 1213 delete s;
1214 if ( state == KCommandSocket::errorR ) { 1214 if ( state == KCommandSocket::errorR ) {
1215 KCommandSocket* commandSocket = new KCommandSocket( "",mPassWordPiSync, mActiveSyncPort.toUInt(), mActiveSyncIP, this, mParent->topLevelWidget()); 1215 KCommandSocket* commandSocket = new KCommandSocket( "",mPassWordPiSync, mActiveSyncPort.toUInt(), mActiveSyncIP, this, mParent->topLevelWidget());
1216 connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int)), this, SLOT(deleteCommandSocket(KCommandSocket*, int )) ); 1216 connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int)), this, SLOT(deleteCommandSocket(KCommandSocket*, int )) );
1217 commandSocket->sendStop(); 1217 commandSocket->sendStop();
1218 } 1218 }
1219 mPisyncFinished = true; 1219 mPisyncFinished = true;
1220 return; 1220 return;
1221 1221
1222 } else if ( state == KCommandSocket::errorW ) { 1222 } else if ( state == KCommandSocket::errorW ) {
1223 mParent->topLevelWidget()->setCaption( i18n("ERROR:Writing back file failed.") ); 1223 mParent->topLevelWidget()->setCaption( i18n("ERROR:Writing back file failed.") );
1224 mPisyncFinished = true; 1224 mPisyncFinished = true;
1225 1225
1226 } else if ( state == KCommandSocket::successR ) { 1226 } else if ( state == KCommandSocket::successR ) {
1227 QTimer::singleShot( 1, this , SLOT ( readFileFromSocket())); 1227 QTimer::singleShot( 1, this , SLOT ( readFileFromSocket()));
1228 1228
1229 } else if ( state == KCommandSocket::successW ) { 1229 } else if ( state == KCommandSocket::successW ) {
1230 mParent->topLevelWidget()->setCaption( i18n("Pi-Sync successful!") ); 1230 mParent->topLevelWidget()->setCaption( i18n("Pi-Sync successful!") );
1231 mPisyncFinished = true; 1231 mPisyncFinished = true;
1232 } else if ( state == KCommandSocket::quiet ){ 1232 } else if ( state == KCommandSocket::quiet ){
1233 qDebug("KSS: quiet "); 1233 qDebug("KSS: quiet ");
1234 mPisyncFinished = true; 1234 mPisyncFinished = true;
1235 } else { 1235 } else {
1236 qDebug("KSS: Error: unknown state: %d ", state); 1236 qDebug("KSS: Error: unknown state: %d ", state);
1237 mPisyncFinished = true; 1237 mPisyncFinished = true;
1238 } 1238 }
1239 1239
1240 delete s; 1240 delete s;
1241} 1241}
1242 1242
1243void KSyncManager::readFileFromSocket() 1243void KSyncManager::readFileFromSocket()
1244{ 1244{
1245 QString fileName = syncFileName(); 1245 QString fileName = syncFileName();
1246 bool syncOK = true; 1246 bool syncOK = true;
1247 mParent->topLevelWidget()->setCaption( i18n("Remote file saved to temp file.") ); 1247 mParent->topLevelWidget()->setCaption( i18n("Remote file saved to temp file.") );
1248 if ( ! syncWithFile( fileName , true ) ) { 1248 if ( ! syncWithFile( fileName , true ) ) {
1249 mParent->topLevelWidget()->setCaption( i18n("Syncing failed.") ); 1249 mParent->topLevelWidget()->setCaption( i18n("Syncing failed.") );
1250 syncOK = false; 1250 syncOK = false;
1251 } 1251 }
1252 KCommandSocket* commandSocket = new KCommandSocket( mCurrentResourceRemote,mPassWordPiSync, mActiveSyncPort.toUInt(), mActiveSyncIP, this, mParent->topLevelWidget() ); 1252 KCommandSocket* commandSocket = new KCommandSocket( mCurrentResourceRemote,mPassWordPiSync, mActiveSyncPort.toUInt(), mActiveSyncIP, this, mParent->topLevelWidget() );
1253 connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int)), this, SLOT(deleteCommandSocket(KCommandSocket*, int )) ); 1253 connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int)), this, SLOT(deleteCommandSocket(KCommandSocket*, int )) );
1254 if ( mWriteBackFile && syncOK ) { 1254 if ( mWriteBackFile && syncOK ) {
1255 mParent->topLevelWidget()->setCaption( i18n("Sending back file ...") ); 1255 mParent->topLevelWidget()->setCaption( i18n("Sending back file ...") );
1256 commandSocket->writeFile( fileName ); 1256 commandSocket->writeFile( fileName );
1257 } 1257 }
1258 else { 1258 else {
1259 commandSocket->sendStop(); 1259 commandSocket->sendStop();
1260 if ( syncOK ) 1260 if ( syncOK )
1261 mParent->topLevelWidget()->setCaption( i18n("Pi-Sync succesful!") ); 1261 mParent->topLevelWidget()->setCaption( i18n("Pi-Sync succesful!") );
1262 mPisyncFinished = true; 1262 mPisyncFinished = true;
1263 } 1263 }
1264} 1264}
1265 1265
1266KServerSocket:: KServerSocket ( QString pw, Q_UINT16 port, int backlog, QObject * parent, const char * name ) : QServerSocket( port, backlog, parent, name ) 1266KServerSocket:: KServerSocket ( QString pw, Q_UINT16 port, int backlog, QObject * parent, const char * name ) : QServerSocket( port, backlog, parent, name )
1267{ 1267{
1268 mPendingConnect = 0; 1268 mPendingConnect = 0;
1269 mPassWord = pw; 1269 mPassWord = pw;
1270 mSocket = 0; 1270 mSocket = 0;
1271 mSyncActionDialog = 0; 1271 mSyncActionDialog = 0;
1272 blockRC = false; 1272 blockRC = false;
1273 mErrorMessage = 0; 1273 mErrorMessage = 0;
1274} 1274}
1275void KServerSocket::waitForSocketFinish() 1275void KServerSocket::waitForSocketFinish()
1276{ 1276{
1277 if ( mSocket ) { 1277 if ( mSocket ) {
1278 qDebug("KSS:: waiting for finish operation"); 1278 //qDebug("KSS:: waiting for finish operation");
1279 QTimer::singleShot( 250, this , SLOT ( waitForSocketFinish())); 1279 QTimer::singleShot( 250, this , SLOT ( waitForSocketFinish()));
1280 return; 1280 return;
1281 } 1281 }
1282 mSocket = new QSocket( this ); 1282 mSocket = new QSocket( this );
1283 connect( mSocket , SIGNAL(readyRead()), this, SLOT(readClient()) ); 1283 connect( mSocket , SIGNAL(readyRead()), this, SLOT(readClient()) );
1284 connect( mSocket , SIGNAL(delayedCloseFinished()), this, SLOT(discardClient()) ); 1284 connect( mSocket , SIGNAL(delayedCloseFinished()), this, SLOT(discardClient()) );
1285 mSocket->setSocket( mPendingConnect ); 1285 mSocket->setSocket( mPendingConnect );
1286 mPendingConnect = 0; 1286 mPendingConnect = 0;
1287} 1287}
1288void KServerSocket::newConnection ( int socket ) 1288void KServerSocket::newConnection ( int socket )
1289{ 1289{
1290 // qDebug("KServerSocket:New connection %d ", socket); 1290 // qDebug("KServerSocket:New connection %d ", socket);
1291 if ( mPendingConnect ) { 1291 if ( mPendingConnect ) {
1292 qDebug("KSS::Error : new Connection"); 1292 qDebug("KSS::Error : new Connection");
1293 return; 1293 return;
1294 } 1294 }
1295 if ( mSocket ) { 1295 if ( mSocket ) {
1296 mPendingConnect = socket; 1296 mPendingConnect = socket;
1297 QTimer::singleShot( 250, this , SLOT ( waitForSocketFinish())); 1297 QTimer::singleShot( 250, this , SLOT ( waitForSocketFinish()));
1298 return; 1298 return;
1299 qDebug("KSS::newConnection Socket deleted! "); 1299 qDebug("KSS::newConnection Socket deleted! ");
1300 delete mSocket; 1300 delete mSocket;
1301 mSocket = 0; 1301 mSocket = 0;
1302 } 1302 }
1303 mPendingConnect = 0; 1303 mPendingConnect = 0;
1304 mSocket = new QSocket( this ); 1304 mSocket = new QSocket( this );
1305 connect( mSocket , SIGNAL(readyRead()), this, SLOT(readClient()) ); 1305 connect( mSocket , SIGNAL(readyRead()), this, SLOT(readClient()) );
1306 connect( mSocket , SIGNAL(delayedCloseFinished()), this, SLOT(discardClient()) ); 1306 connect( mSocket , SIGNAL(delayedCloseFinished()), this, SLOT(discardClient()) );
1307 mSocket->setSocket( socket ); 1307 mSocket->setSocket( socket );
1308} 1308}
1309 1309
1310void KServerSocket::discardClient() 1310void KServerSocket::discardClient()
1311{ 1311{
1312 QTimer::singleShot( 10, this , SLOT ( deleteSocket())); 1312 QTimer::singleShot( 10, this , SLOT ( deleteSocket()));
1313} 1313}
1314void KServerSocket::deleteSocket() 1314void KServerSocket::deleteSocket()
1315{ 1315{
1316 qDebug("KSS::deleteSocket"); 1316 qDebug("KSS::deleteSocket");
1317 if ( mSocket ) { 1317 if ( mSocket ) {
1318 delete mSocket; 1318 delete mSocket;
1319 mSocket = 0; 1319 mSocket = 0;
1320 } 1320 }
1321 if ( mErrorMessage ) 1321 if ( mErrorMessage )
1322 QTimer::singleShot( 10, this , SLOT ( displayErrorMessage())); 1322 QTimer::singleShot( 10, this , SLOT ( displayErrorMessage()));
1323} 1323}
1324void KServerSocket::readClient() 1324void KServerSocket::readClient()
1325{ 1325{
1326 if ( blockRC ) 1326 if ( blockRC )
1327 return; 1327 return;
1328 if ( mSocket == 0 ) { 1328 if ( mSocket == 0 ) {
1329 qDebug("ERROR::KSS::readClient(): mSocket == 0 "); 1329 qDebug("ERROR::KSS::readClient(): mSocket == 0 ");
1330 return; 1330 return;
1331 } 1331 }
1332 if ( mErrorMessage ) { 1332 if ( mErrorMessage ) {
1333 mErrorMessage = 999; 1333 mErrorMessage = 999;
1334 error_connect("ERROR_ED\r\n\r\n"); 1334 error_connect("ERROR_ED\r\n\r\n");
1335 return; 1335 return;
1336 } 1336 }
1337 mResource = ""; 1337 mResource = "";
1338 mErrorMessage = 0; 1338 mErrorMessage = 0;
1339 //qDebug("KServerSocket::readClient()"); 1339 //qDebug("KServerSocket::readClient()");
1340 if ( mSocket->canReadLine() ) { 1340 if ( mSocket->canReadLine() ) {
1341 QString line = mSocket->readLine(); 1341 QString line = mSocket->readLine();
1342 //qDebug("KServerSocket readline: %s ", line.latin1()); 1342 //qDebug("KServerSocket readline: %s ", line.latin1());
1343 QStringList tokens = QStringList::split( QRegExp("[ \r\n][ \r\n]*"), line ); 1343 QStringList tokens = QStringList::split( QRegExp("[ \r\n][ \r\n]*"), line );
1344 if ( tokens[0] == "GET" ) { 1344 if ( tokens[0] == "GET" ) {
1345 if ( tokens[1] == mPassWord ) { 1345 if ( tokens[1] == mPassWord ) {
1346 //emit sendFile( mSocket ); 1346 //emit sendFile( mSocket );
1347 bool ok = false; 1347 bool ok = false;
1348 QDateTime dt = KGlobal::locale()->readDateTime( tokens[2], KLocale::ISODate, &ok); 1348 QDateTime dt = KGlobal::locale()->readDateTime( tokens[2], KLocale::ISODate, &ok);
1349 if ( ok ) { 1349 if ( ok ) {
1350 KSyncManager::mRequestedSyncEvent = dt; 1350 KSyncManager::mRequestedSyncEvent = dt;
1351 } 1351 }
1352 else 1352 else
1353 KSyncManager::mRequestedSyncEvent = QDateTime(); 1353 KSyncManager::mRequestedSyncEvent = QDateTime();
1354 mResource =tokens[3]; 1354 mResource =tokens[3];
1355 send_file(); 1355 send_file();
1356 } 1356 }
1357 else { 1357 else {
1358 mErrorMessage = 1; 1358 mErrorMessage = 1;
1359 error_connect("ERROR_PW\r\n\r\n"); 1359 error_connect("ERROR_PW\r\n\r\n");
1360 } 1360 }
1361 } 1361 }
1362 if ( tokens[0] == "PUT" ) { 1362 if ( tokens[0] == "PUT" ) {
1363 if ( tokens[1] == mPassWord ) { 1363 if ( tokens[1] == mPassWord ) {
1364 //emit getFile( mSocket ); 1364 //emit getFile( mSocket );
1365 blockRC = true; 1365 blockRC = true;
1366 mResource =tokens[2]; 1366 mResource =tokens[2];
1367 get_file(); 1367 get_file();
1368 } 1368 }
1369 else { 1369 else {
1370 mErrorMessage = 2; 1370 mErrorMessage = 2;
1371 error_connect("ERROR_PW\r\n\r\n"); 1371 error_connect("ERROR_PW\r\n\r\n");
1372 end_connect(); 1372 end_connect();
1373 } 1373 }
1374 } 1374 }
1375 if ( tokens[0] == "STOP" ) { 1375 if ( tokens[0] == "STOP" ) {
1376 //emit endConnect(); 1376 //emit endConnect();
1377 end_connect(); 1377 end_connect();
1378 } 1378 }
1379 } 1379 }
1380} 1380}
1381void KServerSocket::displayErrorMessage() 1381void KServerSocket::displayErrorMessage()
1382{ 1382{
1383 if ( mErrorMessage == 1 ) { 1383 if ( mErrorMessage == 1 ) {
1384 KMessageBox::error( 0, i18n("Got send file request\nwith invalid password"), i18n("Pi-Sync Error")); 1384 KMessageBox::error( 0, i18n("Got send file request\nwith invalid password"), i18n("Pi-Sync Error"));
1385 mErrorMessage = 0; 1385 mErrorMessage = 0;
1386 } 1386 }
1387 else if ( mErrorMessage == 2 ) { 1387 else if ( mErrorMessage == 2 ) {
1388 KMessageBox::error( 0, i18n("Got receive file request\nwith invalid password"), i18n("Pi-Sync Error")); 1388 KMessageBox::error( 0, i18n("Got receive file request\nwith invalid password"), i18n("Pi-Sync Error"));
1389 mErrorMessage = 0; 1389 mErrorMessage = 0;
1390 } 1390 }
1391} 1391}
1392void KServerSocket::error_connect( QString errmess ) 1392void KServerSocket::error_connect( QString errmess )
1393{ 1393{
1394 QTextStream os( mSocket ); 1394 QTextStream os( mSocket );
1395 os.setEncoding( QTextStream::Latin1 ); 1395 os.setEncoding( QTextStream::Latin1 );
1396 os << errmess ; 1396 os << errmess ;
1397 mSocket->close(); 1397 mSocket->close();
1398 if ( mSocket->state() == QSocket::Idle ) { 1398 if ( mSocket->state() == QSocket::Idle ) {
1399 QTimer::singleShot( 0, this , SLOT ( discardClient())); 1399 QTimer::singleShot( 0, this , SLOT ( discardClient()));
1400 } 1400 }
1401} 1401}
1402void KServerSocket::end_connect() 1402void KServerSocket::end_connect()
1403{ 1403{
1404 delete mSyncActionDialog; 1404 delete mSyncActionDialog;
1405 mSyncActionDialog = 0; 1405 mSyncActionDialog = 0;
1406} 1406}
1407void KServerSocket::send_file() 1407void KServerSocket::send_file()
1408{ 1408{
1409 //qDebug("MainWindow::sendFile(QSocket* s) "); 1409 //qDebug("MainWindow::sendFile(QSocket* s) ");
1410 if ( mSyncActionDialog ) 1410 if ( mSyncActionDialog )
1411 delete mSyncActionDialog; 1411 delete mSyncActionDialog;
1412 mSyncActionDialog = new QDialog ( 0, "input-dialog", true ); 1412 mSyncActionDialog = new QDialog ( 0, "input-dialog", true );
1413 mSyncActionDialog->setCaption(i18n("Received sync request")); 1413 mSyncActionDialog->setCaption(i18n("Received sync request"));
1414 QLabel* label = new QLabel( i18n("Synchronizing from remote ...\n\nDo not use this application!\n\nIf syncing fails\nyou can close this dialog."), mSyncActionDialog ); 1414 QLabel* label = new QLabel( i18n("Synchronizing from remote ...\n\nDo not use this application!\n\nIf syncing fails\nyou can close this dialog."), mSyncActionDialog );
1415 label->setAlignment ( Qt::AlignHCenter ); 1415 label->setAlignment ( Qt::AlignHCenter );
1416 QVBoxLayout* lay = new QVBoxLayout( mSyncActionDialog ); 1416 QVBoxLayout* lay = new QVBoxLayout( mSyncActionDialog );
1417 lay->addWidget( label); 1417 lay->addWidget( label);
1418 lay->setMargin(7); 1418 lay->setMargin(7);
1419 lay->setSpacing(7); 1419 lay->setSpacing(7);
1420 if ( KSyncManager::mRequestedSyncEvent.isValid() ) { 1420 if ( KSyncManager::mRequestedSyncEvent.isValid() ) {
1421 int secs = QDateTime::currentDateTime().secsTo( KSyncManager::mRequestedSyncEvent ); 1421 int secs = QDateTime::currentDateTime().secsTo( KSyncManager::mRequestedSyncEvent );
1422 //secs = 333; 1422 //secs = 333;
1423 if ( secs < 0 ) 1423 if ( secs < 0 )
1424 secs = secs * (-1); 1424 secs = secs * (-1);
1425 if ( secs > 30 ) 1425 if ( secs > 30 )
1426 //if ( true ) 1426 //if ( true )
1427 { 1427 {
1428 QString warning = i18n("Clock skew of\nsyncing devices\nis %1 seconds!").arg( secs ); 1428 QString warning = i18n("Clock skew of\nsyncing devices\nis %1 seconds!").arg( secs );
1429 QLabel* label = new QLabel( warning, mSyncActionDialog ); 1429 QLabel* label = new QLabel( warning, mSyncActionDialog );
1430 label->setAlignment ( Qt::AlignHCenter ); 1430 label->setAlignment ( Qt::AlignHCenter );
1431 lay->addWidget( label); 1431 lay->addWidget( label);
1432 if ( secs > 180 ) 1432 if ( secs > 180 )
1433 { 1433 {
1434 if ( secs > 300 ) { 1434 if ( secs > 300 ) {
1435 if ( KMessageBox::Cancel == KMessageBox::warningContinueCancel(0, i18n("The clocks of the syncing\ndevices have a difference\nof more than 5 minutes.\nPlease adjust your clocks.\nYou may get wrong syncing results!\nPlease confirm synchronization!"), i18n("High clock skew!"),i18n("Synchronize!"))) { 1435 if ( KMessageBox::Cancel == KMessageBox::warningContinueCancel(0, i18n("The clocks of the syncing\ndevices have a difference\nof more than 5 minutes.\nPlease adjust your clocks.\nYou may get wrong syncing results!\nPlease confirm synchronization!"), i18n("High clock skew!"),i18n("Synchronize!"))) {
1436 qDebug("KSS::Sync cancelled ,cs"); 1436 qDebug("KSS::Sync cancelled ,cs");
1437 mErrorMessage = 0; 1437 mErrorMessage = 0;
1438 end_connect(); 1438 end_connect();
1439 error_connect("ERROR_CA\r\n\r\n"); 1439 error_connect("ERROR_CA\r\n\r\n");
1440 return ; 1440 return ;
1441 } 1441 }
1442 } 1442 }
1443 QFont f = label->font(); 1443 QFont f = label->font();
1444 f.setPointSize ( f.pointSize() *2 ); 1444 f.setPointSize ( f.pointSize() *2 );
1445 f. setBold (true ); 1445 f. setBold (true );
1446 QLabel* label = new QLabel( warning, mSyncActionDialog ); 1446 QLabel* label = new QLabel( warning, mSyncActionDialog );
1447 label->setFont( f ); 1447 label->setFont( f );
1448 warning = i18n("ADJUST\nYOUR\nCLOCKS!"); 1448 warning = i18n("ADJUST\nYOUR\nCLOCKS!");
1449 label->setText( warning ); 1449 label->setText( warning );
1450 label->setAlignment ( Qt::AlignHCenter ); 1450 label->setAlignment ( Qt::AlignHCenter );
1451 lay->addWidget( label); 1451 lay->addWidget( label);
1452 mSyncActionDialog->setFixedSize( 230, 300); 1452 mSyncActionDialog->setFixedSize( 230, 300);
1453 } else { 1453 } else {
1454 mSyncActionDialog->setFixedSize( 230, 200); 1454 mSyncActionDialog->setFixedSize( 230, 200);
1455 } 1455 }
1456 } else { 1456 } else {
1457 mSyncActionDialog->setFixedSize( 230, 120); 1457 mSyncActionDialog->setFixedSize( 230, 120);
1458 } 1458 }
1459 } else 1459 } else
1460 mSyncActionDialog->setFixedSize( 230, 120); 1460 mSyncActionDialog->setFixedSize( 230, 120);
1461 mSyncActionDialog->show(); 1461 mSyncActionDialog->show();
1462 mSyncActionDialog->raise(); 1462 mSyncActionDialog->raise();
1463 emit request_file(mResource); 1463 emit request_file(mResource);
1464 emit request_file(); 1464 emit request_file();
1465 qApp->processEvents(); 1465 qApp->processEvents();
1466 QString fileName = mFileName; 1466 QString fileName = mFileName;
1467 QFile file( fileName ); 1467 QFile file( fileName );
1468 if (!file.open( IO_ReadOnly ) ) { 1468 if (!file.open( IO_ReadOnly ) ) {
1469 mErrorMessage = 0; 1469 mErrorMessage = 0;
1470 end_connect(); 1470 end_connect();
1471 error_connect("ERROR_FI\r\n\r\n"); 1471 error_connect("ERROR_FI\r\n\r\n");
1472 return ; 1472 return ;
1473 } 1473 }
1474 mSyncActionDialog->setCaption( i18n("Sending file...") ); 1474 mSyncActionDialog->setCaption( i18n("Sending file...") );
1475 QTextStream ts( &file ); 1475 QTextStream ts( &file );
1476 ts.setEncoding( QTextStream::Latin1 ); 1476 ts.setEncoding( QTextStream::Latin1 );
1477 1477
1478 QTextStream os( mSocket ); 1478 QTextStream os( mSocket );
1479 os.setEncoding( QTextStream::Latin1 ); 1479 os.setEncoding( QTextStream::Latin1 );
1480 while ( ! ts.atEnd() ) { 1480 while ( ! ts.atEnd() ) {
1481 os << ts.readLine() << "\r\n"; 1481 os << ts.readLine() << "\r\n";
1482 } 1482 }
1483 os << "\r\n"; 1483 os << "\r\n";
1484 //os << ts.read(); 1484 //os << ts.read();
1485 file.close(); 1485 file.close();
1486 mSyncActionDialog->setCaption( i18n("Waiting for synced file...") ); 1486 mSyncActionDialog->setCaption( i18n("Waiting for synced file...") );
1487 mSocket->close(); 1487 mSocket->close();
1488 if ( mSocket->state() == QSocket::Idle ) 1488 if ( mSocket->state() == QSocket::Idle )
1489 QTimer::singleShot( 10, this , SLOT ( discardClient())); 1489 QTimer::singleShot( 10, this , SLOT ( discardClient()));
1490} 1490}
1491void KServerSocket::get_file() 1491void KServerSocket::get_file()
1492{ 1492{
1493 mSyncActionDialog->setCaption( i18n("Receiving synced file...") ); 1493 mSyncActionDialog->setCaption( i18n("Receiving synced file...") );
1494 1494
1495 piTime.start(); 1495 piTime.start();
1496 piFileString = ""; 1496 piFileString = "";
1497 QTimer::singleShot( 1, this , SLOT (readBackFileFromSocket( ) )); 1497 QTimer::singleShot( 1, this , SLOT (readBackFileFromSocket( ) ));
1498} 1498}
1499 1499
1500 1500
1501void KServerSocket::readBackFileFromSocket() 1501void KServerSocket::readBackFileFromSocket()
1502{ 1502{
1503 //qDebug("readBackFileFromSocket() %d ", piTime.elapsed ()); 1503 //qDebug("readBackFileFromSocket() %d ", piTime.elapsed ());
1504 while ( mSocket->canReadLine () ) { 1504 while ( mSocket->canReadLine () ) {
1505 piTime.restart(); 1505 piTime.restart();
1506 QString line = mSocket->readLine (); 1506 QString line = mSocket->readLine ();
1507 piFileString += line; 1507 piFileString += line;
1508 //qDebug("readline: %s ", line.latin1()); 1508 //qDebug("readline: %s ", line.latin1());
1509 mSyncActionDialog->setCaption( i18n("Received %1 bytes").arg( piFileString.length() ) ); 1509 mSyncActionDialog->setCaption( i18n("Received %1 bytes").arg( piFileString.length() ) );
1510 1510
1511 } 1511 }
1512 if ( piTime.elapsed () < 3000 ) { 1512 if ( piTime.elapsed () < 3000 ) {
1513 // wait for more 1513 // wait for more
1514 //qDebug("waitformore "); 1514 //qDebug("waitformore ");
1515 QTimer::singleShot( 100, this , SLOT (readBackFileFromSocket( ) )); 1515 QTimer::singleShot( 100, this , SLOT (readBackFileFromSocket( ) ));
1516 return; 1516 return;
1517 } 1517 }
1518 QString fileName = mFileName; 1518 QString fileName = mFileName;
1519 QFile file ( fileName ); 1519 QFile file ( fileName );
1520 if (!file.open( IO_WriteOnly ) ) { 1520 if (!file.open( IO_WriteOnly ) ) {
1521 delete mSyncActionDialog; 1521 delete mSyncActionDialog;
1522 mSyncActionDialog = 0; 1522 mSyncActionDialog = 0;
1523 qDebug("KSS:Error open read back file "); 1523 qDebug("KSS:Error open read back file ");
1524 piFileString = ""; 1524 piFileString = "";
1525 emit file_received( false, mResource); 1525 emit file_received( false, mResource);
1526 emit file_received( false); 1526 emit file_received( false);
1527 blockRC = false; 1527 blockRC = false;
1528 return ; 1528 return ;
1529 1529
1530 } 1530 }
1531 1531
1532 // mView->setLoadedFileVersion(QDateTime::currentDateTime().addSecs( -1)); 1532 // mView->setLoadedFileVersion(QDateTime::currentDateTime().addSecs( -1));
1533 QTextStream ts ( &file ); 1533 QTextStream ts ( &file );
1534 ts.setEncoding( QTextStream::Latin1 ); 1534 ts.setEncoding( QTextStream::Latin1 );
1535 mSyncActionDialog->setCaption( i18n("Writing file to disk...") ); 1535 mSyncActionDialog->setCaption( i18n("Writing file to disk...") );
1536 ts << piFileString; 1536 ts << piFileString;
1537 mSocket->close(); 1537 mSocket->close();
1538 if ( mSocket->state() == QSocket::Idle ) 1538 if ( mSocket->state() == QSocket::Idle )
1539 QTimer::singleShot( 10, this , SLOT ( discardClient())); 1539 QTimer::singleShot( 10, this , SLOT ( discardClient()));
1540 file.close(); 1540 file.close();
1541 piFileString = ""; 1541 piFileString = "";
1542 emit file_received( true, mResource ); 1542 emit file_received( true, mResource );
1543 emit file_received( true); 1543 emit file_received( true);
1544 delete mSyncActionDialog; 1544 delete mSyncActionDialog;
1545 mSyncActionDialog = 0; 1545 mSyncActionDialog = 0;
1546 blockRC = false; 1546 blockRC = false;
1547 1547
1548} 1548}
1549 1549
1550KCommandSocket::KCommandSocket ( QString remres, QString password, Q_UINT16 port, QString host, QObject * parent, QWidget * cap, const char * name ): QObject( parent, name ) 1550KCommandSocket::KCommandSocket ( QString remres, QString password, Q_UINT16 port, QString host, QObject * parent, QWidget * cap, const char * name ): QObject( parent, name )
1551{ 1551{
1552 mRemoteResource = remres; 1552 mRemoteResource = remres;
1553 if ( mRemoteResource.isEmpty() ) 1553 if ( mRemoteResource.isEmpty() )
1554 mRemoteResource = "ALL"; 1554 mRemoteResource = "ALL";
1555 else 1555 else
1556 mRemoteResource.replace (QRegExp (" "),"_" ); 1556 mRemoteResource.replace (QRegExp (" "),"_" );
1557 mPassWord = password; 1557 mPassWord = password;
1558 mSocket = 0; 1558 mSocket = 0;
1559 mFirst = false; 1559 mFirst = false;
1560 mFirstLine = true; 1560 mFirstLine = true;
1561 mPort = port; 1561 mPort = port;
1562 mHost = host; 1562 mHost = host;
1563 tlw = cap; 1563 tlw = cap;
1564 mRetVal = quiet; 1564 mRetVal = quiet;
1565 mTimerSocket = new QTimer ( this ); 1565 mTimerSocket = new QTimer ( this );
1566 connect( mTimerSocket, SIGNAL ( timeout () ), this, SLOT ( updateConnectDialog() ) ); 1566 connect( mTimerSocket, SIGNAL ( timeout () ), this, SLOT ( updateConnectDialog() ) );
1567 mConnectProgress.setCaption( i18n("Pi-Sync") ); 1567 mConnectProgress.setCaption( i18n("Pi-Sync") );
1568 connect( &mConnectProgress, SIGNAL ( cancelled () ), this, SLOT ( deleteSocket() ) ); 1568 connect( &mConnectProgress, SIGNAL ( cancelled () ), this, SLOT ( deleteSocket() ) );
1569 mConnectCount = -1; 1569 mConnectCount = -1;
1570} 1570}
1571void KCommandSocket::sendFileRequest() 1571void KCommandSocket::sendFileRequest()
1572{ 1572{
1573 if ( tlw ) 1573 if ( tlw )
1574 tlw->setCaption( i18n("Connected! Sending request for remote file ...") ); 1574 tlw->setCaption( i18n("Connected! Sending request for remote file ...") );
1575 mConnectProgress.hide(); 1575 mConnectProgress.hide();
1576 mConnectCount = 300;mConnectMax = 300; 1576 mConnectCount = 300;mConnectMax = 300;
1577 mConnectProgress.setCaption( i18n("Pi-Sync: Connected!") ); 1577 mConnectProgress.setCaption( i18n("Pi-Sync: Connected!") );
1578 mConnectProgress.setLabelText( i18n("Waiting for remote file...") ); 1578 mConnectProgress.setLabelText( i18n("Waiting for remote file...") );
1579 mTimerSocket->start( 100, true ); 1579 mTimerSocket->start( 100, true );
1580 QTextStream os( mSocket ); 1580 QTextStream os( mSocket );
1581 os.setEncoding( QTextStream::Latin1 ); 1581 os.setEncoding( QTextStream::Latin1 );
1582 1582
1583 QString curDt = " " +KGlobal::locale()->formatDateTime(QDateTime::currentDateTime().addSecs(-1),true, true,KLocale::ISODate ); 1583 QString curDt = " " +KGlobal::locale()->formatDateTime(QDateTime::currentDateTime().addSecs(-1),true, true,KLocale::ISODate );
1584 os << "GET " << mPassWord << curDt << " " << mRemoteResource << "\r\n\r\n"; 1584 os << "GET " << mPassWord << curDt << " " << mRemoteResource << "\r\n\r\n";
1585} 1585}
1586 1586
1587void KCommandSocket::readFile( QString fn ) 1587void KCommandSocket::readFile( QString fn )
1588{ 1588{
1589 if ( !mSocket ) { 1589 if ( !mSocket ) {
1590 mSocket = new QSocket( this ); 1590 mSocket = new QSocket( this );
1591 qDebug("KCS: read file - new socket"); 1591 //qDebug("KCS: read file - new socket");
1592 connect( mSocket, SIGNAL(readyRead()), this, SLOT(startReadFileFromSocket()) ); 1592 connect( mSocket, SIGNAL(readyRead()), this, SLOT(startReadFileFromSocket()) );
1593 connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) ); 1593 connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) );
1594 connect( mSocket, SIGNAL(connected ()), this, SLOT(sendFileRequest() )); 1594 connect( mSocket, SIGNAL(connected ()), this, SLOT(sendFileRequest() ));
1595 } 1595 }
1596 mFileString = ""; 1596 mFileString = "";
1597 mFileName = fn; 1597 mFileName = fn;
1598 mFirst = true; 1598 mFirst = true;
1599 if ( tlw ) 1599 if ( tlw )
1600 tlw->setCaption( i18n("Trying to connect to remote...") ); 1600 tlw->setCaption( i18n("Trying to connect to remote...") );
1601 mConnectCount = 30;mConnectMax = 30; 1601 mConnectCount = 30;mConnectMax = 30;
1602 mTimerSocket->start( 1000, true ); 1602 mTimerSocket->start( 1000, true );
1603 mSocket->connectToHost( mHost, mPort ); 1603 mSocket->connectToHost( mHost, mPort );
1604 qDebug("KCS: Waiting for connection"); 1604 qDebug("KCS: Waiting for connection");
1605} 1605}
1606void KCommandSocket::updateConnectDialog() 1606void KCommandSocket::updateConnectDialog()
1607{ 1607{
1608 1608
1609 if ( mConnectCount == mConnectMax ) { 1609 if ( mConnectCount == mConnectMax ) {
1610 qDebug("MAXX %d", mConnectMax); 1610 //qDebug("MAXX %d", mConnectMax);
1611 mConnectProgress.setTotalSteps ( 30 ); 1611 mConnectProgress.setTotalSteps ( 30 );
1612 mConnectProgress.show(); 1612 mConnectProgress.show();
1613 mConnectProgress.setLabelText( i18n("Trying to connect to remote...") ); 1613 mConnectProgress.setLabelText( i18n("Trying to connect to remote...") );
1614 } 1614 }
1615 qDebug("updateConnectDialog() %d", mConnectCount); 1615 //qDebug("updateConnectDialog() %d", mConnectCount);
1616 mConnectProgress.raise(); 1616 mConnectProgress.raise();
1617 mConnectProgress.setProgress( (mConnectMax - mConnectCount)%30 ); 1617 mConnectProgress.setProgress( (mConnectMax - mConnectCount)%30 );
1618 --mConnectCount; 1618 --mConnectCount;
1619 if ( mConnectCount > 0 ) 1619 if ( mConnectCount > 0 )
1620 mTimerSocket->start( 1000, true ); 1620 mTimerSocket->start( 1000, true );
1621 else 1621 else
1622 deleteSocket(); 1622 deleteSocket();
1623 1623
1624} 1624}
1625void KCommandSocket::writeFile( QString fileName ) 1625void KCommandSocket::writeFile( QString fileName )
1626{ 1626{
1627 if ( !mSocket ) { 1627 if ( !mSocket ) {
1628 mSocket = new QSocket( this ); 1628 mSocket = new QSocket( this );
1629 connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) ); 1629 connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) );
1630 connect( mSocket, SIGNAL(connected ()), this, SLOT(writeFileToSocket()) ); 1630 connect( mSocket, SIGNAL(connected ()), this, SLOT(writeFileToSocket()) );
1631 } 1631 }
1632 mFileName = fileName ; 1632 mFileName = fileName ;
1633 mConnectCount = 30;mConnectMax = 30; 1633 mConnectCount = 30;mConnectMax = 30;
1634 mTimerSocket->start( 1000, true ); 1634 mTimerSocket->start( 1000, true );
1635 mSocket->connectToHost( mHost, mPort ); 1635 mSocket->connectToHost( mHost, mPort );
1636} 1636}
1637void KCommandSocket::writeFileToSocket() 1637void KCommandSocket::writeFileToSocket()
1638{ 1638{
1639 mTimerSocket->stop(); 1639 mTimerSocket->stop();
1640 QFile file2( mFileName ); 1640 QFile file2( mFileName );
1641 if (!file2.open( IO_ReadOnly ) ) { 1641 if (!file2.open( IO_ReadOnly ) ) {
1642 mConnectProgress.hide(); 1642 mConnectProgress.hide();
1643 mConnectCount = -1; 1643 mConnectCount = -1;
1644 mRetVal= errorW; 1644 mRetVal= errorW;
1645 mSocket->close(); 1645 mSocket->close();
1646 if ( mSocket->state() == QSocket::Idle ) 1646 if ( mSocket->state() == QSocket::Idle )
1647 QTimer::singleShot( 10, this , SLOT ( deleteSocket())); 1647 QTimer::singleShot( 10, this , SLOT ( deleteSocket()));
1648 return ; 1648 return ;
1649 } 1649 }
1650 mConnectProgress.setTotalSteps ( file2.size() ); 1650 mConnectProgress.setTotalSteps ( file2.size() );
1651 mConnectProgress.show(); 1651 mConnectProgress.show();
1652 int count = 0; 1652 int count = 0;
1653 mConnectProgress.setLabelText( i18n("Sending back synced file...") ); 1653 mConnectProgress.setLabelText( i18n("Sending back synced file...") );
1654 mConnectProgress.setProgress( count ); 1654 mConnectProgress.setProgress( count );
1655 mConnectProgress.blockSignals( true ); 1655 mConnectProgress.blockSignals( true );
1656 QTextStream ts2( &file2 ); 1656 QTextStream ts2( &file2 );
1657 ts2.setEncoding( QTextStream::Latin1 ); 1657 ts2.setEncoding( QTextStream::Latin1 );
1658 QTextStream os2( mSocket ); 1658 QTextStream os2( mSocket );
1659 os2.setEncoding( QTextStream::Latin1 ); 1659 os2.setEncoding( QTextStream::Latin1 );
1660 os2 << "PUT " << mPassWord << " " << mRemoteResource << "\r\n\r\n";; 1660 os2 << "PUT " << mPassWord << " " << mRemoteResource << "\r\n\r\n";;
1661 int byteCount = 0; 1661 int byteCount = 0;
1662 int byteMax = file2.size()/53; 1662 int byteMax = file2.size()/53;
1663 while ( ! ts2.atEnd() ) { 1663 while ( ! ts2.atEnd() ) {
1664 qApp->processEvents(); 1664 qApp->processEvents();
1665 if ( byteCount > byteMax ) { 1665 if ( byteCount > byteMax ) {
1666 byteCount = 0; 1666 byteCount = 0;
1667 mConnectProgress.setProgress( count ); 1667 mConnectProgress.setProgress( count );
1668 } 1668 }
1669 QString temp = ts2.readLine(); 1669 QString temp = ts2.readLine();
1670 count += temp.length(); 1670 count += temp.length();
1671 byteCount += temp.length(); 1671 byteCount += temp.length();
1672 os2 << temp << "\r\n"; 1672 os2 << temp << "\r\n";
1673 } 1673 }
1674 file2.close(); 1674 file2.close();
1675 mConnectProgress.hide(); 1675 mConnectProgress.hide();
1676 mConnectCount = -1; 1676 mConnectCount = -1;
1677 os2 << "\r\n"; 1677 os2 << "\r\n";
1678 mRetVal= successW; 1678 mRetVal= successW;
1679 mSocket->close(); 1679 mSocket->close();
1680 if ( mSocket->state() == QSocket::Idle ) 1680 if ( mSocket->state() == QSocket::Idle )
1681 QTimer::singleShot( 10, this , SLOT ( deleteSocket())); 1681 QTimer::singleShot( 10, this , SLOT ( deleteSocket()));
1682 mConnectProgress.blockSignals( false ); 1682 mConnectProgress.blockSignals( false );
1683} 1683}
1684void KCommandSocket::sendStop() 1684void KCommandSocket::sendStop()
1685{ 1685{
1686 if ( !mSocket ) { 1686 if ( !mSocket ) {
1687 mSocket = new QSocket( this ); 1687 mSocket = new QSocket( this );
1688 connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) ); 1688 connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) );
1689 } 1689 }
1690 mSocket->connectToHost( mHost, mPort ); 1690 mSocket->connectToHost( mHost, mPort );
1691 QTextStream os2( mSocket ); 1691 QTextStream os2( mSocket );
1692 os2.setEncoding( QTextStream::Latin1 ); 1692 os2.setEncoding( QTextStream::Latin1 );
1693 os2 << "STOP\r\n\r\n"; 1693 os2 << "STOP\r\n\r\n";
1694 mSocket->close(); 1694 mSocket->close();
1695 if ( mSocket->state() == QSocket::Idle ) 1695 if ( mSocket->state() == QSocket::Idle )
1696 QTimer::singleShot( 10, this , SLOT ( deleteSocket())); 1696 QTimer::singleShot( 10, this , SLOT ( deleteSocket()));
1697} 1697}
1698 1698
1699void KCommandSocket::startReadFileFromSocket() 1699void KCommandSocket::startReadFileFromSocket()
1700{ 1700{
1701 if ( ! mFirst ) 1701 if ( ! mFirst )
1702 return; 1702 return;
1703 mConnectProgress.setLabelText( i18n("Receiving file from remote...") ); 1703 mConnectProgress.setLabelText( i18n("Receiving file from remote...") );
1704 mFirst = false; 1704 mFirst = false;
1705 mFileString = ""; 1705 mFileString = "";
1706 mTime.start(); 1706 mTime.start();
1707 mFirstLine = true; 1707 mFirstLine = true;
1708 QTimer::singleShot( 1, this , SLOT (readFileFromSocket( ) )); 1708 QTimer::singleShot( 1, this , SLOT (readFileFromSocket( ) ));
1709 1709
1710} 1710}
1711void KCommandSocket::readFileFromSocket() 1711void KCommandSocket::readFileFromSocket()
1712{ 1712{
1713 //qDebug("readBackFileFromSocket() %d ", mTime.elapsed ()); 1713 //qDebug("readBackFileFromSocket() %d ", mTime.elapsed ());
1714 while ( mSocket->canReadLine () ) { 1714 while ( mSocket->canReadLine () ) {
1715 mTime.restart(); 1715 mTime.restart();
1716 QString line = mSocket->readLine (); 1716 QString line = mSocket->readLine ();
1717 if ( mFirstLine ) { 1717 if ( mFirstLine ) {
1718 mFirstLine = false; 1718 mFirstLine = false;
1719 if ( line.left( 6 ) == "ERROR_" ) { 1719 if ( line.left( 6 ) == "ERROR_" ) {
1720 mTimerSocket->stop(); 1720 mTimerSocket->stop();
1721 mConnectCount = -1; 1721 mConnectCount = -1;
1722 if ( line.left( 8 ) == "ERROR_PW" ) { 1722 if ( line.left( 8 ) == "ERROR_PW" ) {
1723 mRetVal = errorPW; 1723 mRetVal = errorPW;
1724 deleteSocket(); 1724 deleteSocket();
1725 return ; 1725 return ;
1726 } 1726 }
1727 if ( line.left( 8 ) == "ERROR_CA" ) { 1727 if ( line.left( 8 ) == "ERROR_CA" ) {
1728 mRetVal = errorCA; 1728 mRetVal = errorCA;
1729 deleteSocket(); 1729 deleteSocket();
1730 return ; 1730 return ;
1731 } 1731 }
1732 if ( line.left( 8 ) == "ERROR_FI" ) { 1732 if ( line.left( 8 ) == "ERROR_FI" ) {
1733 mRetVal = errorFI; 1733 mRetVal = errorFI;
1734 deleteSocket(); 1734 deleteSocket();
1735 return ; 1735 return ;
1736 } 1736 }
1737 if ( line.left( 8 ) == "ERROR_ED" ) { 1737 if ( line.left( 8 ) == "ERROR_ED" ) {
1738 mRetVal = errorED; 1738 mRetVal = errorED;
1739 deleteSocket(); 1739 deleteSocket();
1740 return ; 1740 return ;
1741 } 1741 }
1742 mRetVal = errorUN; 1742 mRetVal = errorUN;
1743 deleteSocket(); 1743 deleteSocket();
1744 return ; 1744 return ;
1745 } 1745 }
1746 } 1746 }
1747 mFileString += line; 1747 mFileString += line;
1748 //qDebug("readline: %s ", line.latin1()); 1748 //qDebug("readline: %s ", line.latin1());
1749 } 1749 }
1750 if ( mTime.elapsed () < 3000 ) { 1750 if ( mTime.elapsed () < 3000 ) {
1751 // wait for more 1751 // wait for more
1752 //qDebug("waitformore "); 1752 //qDebug("waitformore ");
1753 QTimer::singleShot( 100, this , SLOT (readFileFromSocket( ) )); 1753 QTimer::singleShot( 100, this , SLOT (readFileFromSocket( ) ));
1754 return; 1754 return;
1755 } 1755 }
1756 mTimerSocket->stop(); 1756 mTimerSocket->stop();
1757 mConnectCount = -1; 1757 mConnectCount = -1;
1758 mConnectProgress.hide(); 1758 mConnectProgress.hide();
1759 QString fileName = mFileName; 1759 QString fileName = mFileName;
1760 QFile file ( fileName ); 1760 QFile file ( fileName );
1761 if (!file.open( IO_WriteOnly ) ) { 1761 if (!file.open( IO_WriteOnly ) ) {
1762 mFileString = ""; 1762 mFileString = "";
1763 mRetVal = errorR; 1763 mRetVal = errorR;
1764 qDebug("KSS:Error open temp sync file for writing: %s",fileName.latin1() ); 1764 qDebug("KSS:Error open temp sync file for writing: %s",fileName.latin1() );
1765 deleteSocket(); 1765 deleteSocket();
1766 return ; 1766 return ;
1767 1767
1768 } 1768 }
1769 // mView->setLoadedFileVersion(QDateTime::currentDateTime().addSecs( -1)); 1769 // mView->setLoadedFileVersion(QDateTime::currentDateTime().addSecs( -1));
1770 QTextStream ts ( &file ); 1770 QTextStream ts ( &file );
1771 ts.setEncoding( QTextStream::Latin1 ); 1771 ts.setEncoding( QTextStream::Latin1 );
1772 ts << mFileString; 1772 ts << mFileString;
1773 file.close(); 1773 file.close();
1774 mFileString = ""; 1774 mFileString = "";
1775 mRetVal = successR; 1775 mRetVal = successR;
1776 mSocket->close(); 1776 mSocket->close();
1777 // if state is not idle, deleteSocket(); is called via 1777 // if state is not idle, deleteSocket(); is called via
1778 // connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) ); 1778 // connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) );
1779 if ( mSocket->state() == QSocket::Idle ) 1779 if ( mSocket->state() == QSocket::Idle )
1780 deleteSocket(); 1780 deleteSocket();
1781} 1781}
1782 1782
1783void KCommandSocket::deleteSocket() 1783void KCommandSocket::deleteSocket()
1784{ 1784{
1785 //qDebug("KCommandSocket::deleteSocket() "); 1785 //qDebug("KCommandSocket::deleteSocket() ");
1786 mConnectProgress.hide(); 1786 mConnectProgress.hide();
1787 1787
1788 if ( mConnectCount >= 0 ) { 1788 if ( mConnectCount >= 0 ) {
1789 mTimerSocket->stop(); 1789 mTimerSocket->stop();
1790 mRetVal = errorTO; 1790 mRetVal = errorTO;
1791 qDebug("KCS::Connection to remote host timed out"); 1791 qDebug("KCS::Connection to remote host timed out");
1792 if ( mSocket ) { 1792 if ( mSocket ) {
1793 mSocket->close(); 1793 mSocket->close();
1794 //if ( mSocket->state() == QSocket::Idle ) 1794 //if ( mSocket->state() == QSocket::Idle )
1795 // deleteSocket(); 1795 // deleteSocket();
1796 delete mSocket; 1796 delete mSocket;
1797 mSocket = 0; 1797 mSocket = 0;
1798 } 1798 }
1799 if ( mConnectCount == 0 ) 1799 if ( mConnectCount == 0 )
1800 KMessageBox::error( 0, i18n("Connection to remote\nhost timed out!\nDid you forgot to enable\nsyncing on remote host?")); 1800 KMessageBox::error( 0, i18n("Connection to remote\nhost timed out!\nDid you forgot to enable\nsyncing on remote host?"));
1801 else if ( tlw ) 1801 else if ( tlw )
1802 tlw->setCaption( i18n("Connection to remote host cancelled!") ); 1802 tlw->setCaption( i18n("Connection to remote host cancelled!") );
1803 emit commandFinished( this, mRetVal ); 1803 emit commandFinished( this, mRetVal );
1804 return; 1804 return;
1805 } 1805 }
1806 //qDebug("KCommandSocket::deleteSocket() %d", mRetVal ); 1806 //qDebug("KCommandSocket::deleteSocket() %d", mRetVal );
1807 if ( mSocket) 1807 if ( mSocket)
1808 delete mSocket; 1808 delete mSocket;
1809 mSocket = 0; 1809 mSocket = 0;
1810 //qDebug("commandFinished "); 1810 //qDebug("commandFinished ");
1811 emit commandFinished( this, mRetVal ); 1811 emit commandFinished( this, mRetVal );
1812} 1812}