summaryrefslogtreecommitdiffabout
authorzautrix <zautrix>2004-10-04 10:05:42 (UTC)
committer zautrix <zautrix>2004-10-04 10:05:42 (UTC)
commit743f44c45534a6e1df17ddc7b5f3c62b73921455 (patch) (unidiff)
tree83795806d28b2614639082e944558a470f039daf
parentaaea91151fe9a747e9eddfb8ba7d5896744faf30 (diff)
downloadkdepimpi-743f44c45534a6e1df17ddc7b5f3c62b73921455.zip
kdepimpi-743f44c45534a6e1df17ddc7b5f3c62b73921455.tar.gz
kdepimpi-743f44c45534a6e1df17ddc7b5f3c62b73921455.tar.bz2
sync fixes
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/mainwindow.cpp181
-rw-r--r--korganizer/mainwindow.h14
2 files changed, 124 insertions, 71 deletions
diff --git a/korganizer/mainwindow.cpp b/korganizer/mainwindow.cpp
index 7bf33d3..8e2f956 100644
--- a/korganizer/mainwindow.cpp
+++ b/korganizer/mainwindow.cpp
@@ -1,201 +1,203 @@
1#include <stdlib.h> 1#include <stdlib.h>
2 2
3#include <qaction.h> 3#include <qaction.h>
4#include <qpopupmenu.h> 4#include <qpopupmenu.h>
5#include <qpainter.h> 5#include <qpainter.h>
6#include <qwhatsthis.h> 6#include <qwhatsthis.h>
7#include <qpushbutton.h> 7#include <qpushbutton.h>
8#include <qmessagebox.h> 8#include <qmessagebox.h>
9#include <qlineedit.h> 9#include <qlineedit.h>
10#include <qtextcodec.h> 10#include <qtextcodec.h>
11#include <qfile.h> 11#include <qfile.h>
12#include <qdir.h> 12#include <qdir.h>
13#include <qapp.h> 13#include <qapp.h>
14#include <qfileinfo.h> 14#include <qfileinfo.h>
15#include <qlabel.h> 15#include <qlabel.h>
16#include <qmap.h> 16#include <qmap.h>
17#include <qwmatrix.h> 17#include <qwmatrix.h>
18#include <qtextbrowser.h> 18#include <qtextbrowser.h>
19#include <qtextstream.h> 19#include <qtextstream.h>
20#ifndef DESKTOP_VERSION 20#ifndef DESKTOP_VERSION
21#include <qpe/global.h> 21#include <qpe/global.h>
22#include <qpe/qpemenubar.h> 22#include <qpe/qpemenubar.h>
23#include <qpe/qpetoolbar.h> 23#include <qpe/qpetoolbar.h>
24#include <qpe/resource.h> 24#include <qpe/resource.h>
25#include <qpe/qpeapplication.h> 25#include <qpe/qpeapplication.h>
26#include <qtopia/alarmserver.h> 26#include <qtopia/alarmserver.h>
27#include <qtopia/qcopenvelope_qws.h> 27#include <qtopia/qcopenvelope_qws.h>
28#include <unistd.h> // for sleep 28#include <unistd.h> // for sleep
29#else 29#else
30#include <qmenubar.h> 30#include <qmenubar.h>
31#include <qtoolbar.h> 31#include <qtoolbar.h>
32#include <qapplication.h> 32#include <qapplication.h>
33//#include <resource.h> 33//#include <resource.h>
34 34
35#endif 35#endif
36#include <libkcal/calendarlocal.h> 36#include <libkcal/calendarlocal.h>
37#include <libkcal/todo.h> 37#include <libkcal/todo.h>
38#include <libkdepim/ksyncprofile.h> 38#include <libkdepim/ksyncprofile.h>
39#include <libkcal/kincidenceformatter.h> 39#include <libkcal/kincidenceformatter.h>
40#include <libkdepim/kpimglobalprefs.h> 40#include <libkdepim/kpimglobalprefs.h>
41 41
42#include "calendarview.h" 42#include "calendarview.h"
43#include "koviewmanager.h" 43#include "koviewmanager.h"
44#include "datenavigator.h" 44#include "datenavigator.h"
45#include "koagendaview.h" 45#include "koagendaview.h"
46#include "koagenda.h" 46#include "koagenda.h"
47#include "kodialogmanager.h" 47#include "kodialogmanager.h"
48#include "kdialogbase.h" 48#include "kdialogbase.h"
49#include "kapplication.h" 49#include "kapplication.h"
50#include "kofilterview.h" 50#include "kofilterview.h"
51#include "kstandarddirs.h" 51#include "kstandarddirs.h"
52#include "koprefs.h" 52#include "koprefs.h"
53#include "kfiledialog.h" 53#include "kfiledialog.h"
54#include "koglobals.h" 54#include "koglobals.h"
55#include "kglobal.h" 55#include "kglobal.h"
56#include "klocale.h" 56#include "klocale.h"
57#include "kconfig.h" 57#include "kconfig.h"
58#include "simplealarmclient.h" 58#include "simplealarmclient.h"
59#include "externalapphandler.h" 59#include "externalapphandler.h"
60 60
61using namespace KCal; 61using namespace KCal;
62#ifndef _WIN32_ 62#ifndef _WIN32_
63#include <unistd.h> 63#include <unistd.h>
64#else 64#else
65#include "koimportoldialog.h" 65#include "koimportoldialog.h"
66#endif 66#endif
67#include "mainwindow.h" 67#include "mainwindow.h"
68 68
69int globalFlagBlockStartup; 69int globalFlagBlockStartup;
70MainWindow::MainWindow( QWidget *parent, const char *name, QString msg) : 70MainWindow::MainWindow( QWidget *parent, const char *name, QString msg) :
71 QMainWindow( parent, name ) 71 QMainWindow( parent, name )
72{ 72{
73 73 mPassWordPiSync = "abc";
74 mTimerCommandSocket = new QTimer ( this );
75 connect( mTimerCommandSocket, SIGNAL ( timeout () ), this, SLOT ( deleteCommandSocket() ) );
74#ifdef DESKTOP_VERSION 76#ifdef DESKTOP_VERSION
75 setFont( QFont("Arial"), 14 ); 77 setFont( QFont("Arial"), 14 );
76#endif 78#endif
77 mCommandSocket = 0; 79 mCommandSocket = 0;
78 mCommandSocketFinish = 0; 80 mCommandSocketFinish = 0;
79 mSyncActionDialog = 0; 81 mSyncActionDialog = 0;
80 mServerSocket = 0; 82 mServerSocket = 0;
81 mClosed = false; 83 mClosed = false;
82 //QString confFile = KStandardDirs::appDir() + "config/korganizerrc"; 84 //QString confFile = KStandardDirs::appDir() + "config/korganizerrc";
83 QString confFile = locateLocal("config","korganizerrc"); 85 QString confFile = locateLocal("config","korganizerrc");
84 QFileInfo finf ( confFile ); 86 QFileInfo finf ( confFile );
85 bool showWarning = !finf.exists(); 87 bool showWarning = !finf.exists();
86 setIcon(SmallIcon( "ko24" ) ); 88 setIcon(SmallIcon( "ko24" ) );
87 mBlockAtStartup = true; 89 mBlockAtStartup = true;
88 mFlagKeyPressed = false; 90 mFlagKeyPressed = false;
89 setCaption("KOrganizer/Pi"); 91 setCaption("KOrganizer/Pi");
90 KOPrefs *p = KOPrefs::instance(); 92 KOPrefs *p = KOPrefs::instance();
91 KPimGlobalPrefs::instance()->setGlobalConfig(); 93 KPimGlobalPrefs::instance()->setGlobalConfig();
92 // if ( QApplication::desktop()->height() > 480 ) { 94 // if ( QApplication::desktop()->height() > 480 ) {
93// if ( p->mHourSize == 4 ) 95// if ( p->mHourSize == 4 )
94// p->mHourSize = 6; 96// p->mHourSize = 6;
95// } 97// }
96 if ( p->mHourSize > 18 ) 98 if ( p->mHourSize > 18 )
97 p->mHourSize = 18; 99 p->mHourSize = 18;
98 QMainWindow::ToolBarDock tbd; 100 QMainWindow::ToolBarDock tbd;
99 if ( p->mToolBarHor ) { 101 if ( p->mToolBarHor ) {
100 if ( p->mToolBarUp ) 102 if ( p->mToolBarUp )
101 tbd = Bottom; 103 tbd = Bottom;
102 else 104 else
103 tbd = Top; 105 tbd = Top;
104 } 106 }
105 else { 107 else {
106 if ( p->mToolBarUp ) 108 if ( p->mToolBarUp )
107 tbd = Right; 109 tbd = Right;
108 else 110 else
109 tbd = Left; 111 tbd = Left;
110 } 112 }
111 if ( KOPrefs::instance()->mUseAppColors ) 113 if ( KOPrefs::instance()->mUseAppColors )
112 QApplication::setPalette( QPalette (KOPrefs::instance()->mAppColor1, KOPrefs::instance()->mAppColor2), true ); 114 QApplication::setPalette( QPalette (KOPrefs::instance()->mAppColor1, KOPrefs::instance()->mAppColor2), true );
113 globalFlagBlockStartup = 1; 115 globalFlagBlockStartup = 1;
114 iconToolBar = new QPEToolBar( this ); 116 iconToolBar = new QPEToolBar( this );
115 addToolBar (iconToolBar , tbd ); 117 addToolBar (iconToolBar , tbd );
116 mBlockSaveFlag = false; 118 mBlockSaveFlag = false;
117 mCalendarModifiedFlag = false; 119 mCalendarModifiedFlag = false;
118 120
119 QLabel* splash = new QLabel(i18n("KO/Pi is starting ... "), this ); 121 QLabel* splash = new QLabel(i18n("KO/Pi is starting ... "), this );
120 splash->setAlignment ( AlignCenter ); 122 splash->setAlignment ( AlignCenter );
121 setCentralWidget( splash ); 123 setCentralWidget( splash );
122#ifndef DESKTOP_VERSION 124#ifndef DESKTOP_VERSION
123 showMaximized(); 125 showMaximized();
124#endif 126#endif
125 //qDebug("Mainwidget x %d y %d w %d h %d", x(), y(), width(), height ()); 127 //qDebug("Mainwidget x %d y %d w %d h %d", x(), y(), width(), height ());
126 setDefaultPreferences(); 128 setDefaultPreferences();
127 mCalendar = new CalendarLocal(); 129 mCalendar = new CalendarLocal();
128 mView = new CalendarView( mCalendar, this,"mCalendar " ); 130 mView = new CalendarView( mCalendar, this,"mCalendar " );
129 mView->hide(); 131 mView->hide();
130 //mView->resize(splash->size() ); 132 //mView->resize(splash->size() );
131 initActions(); 133 initActions();
132#ifndef DESKTOP_VERSION 134#ifndef DESKTOP_VERSION
133 iconToolBar->show(); 135 iconToolBar->show();
134 qApp->processEvents(); 136 qApp->processEvents();
135#endif 137#endif
136 //qDebug("Splashwidget x %d y %d w %d h %d", splash-> x(), splash->y(), splash->width(),splash-> height ()); 138 //qDebug("Splashwidget x %d y %d w %d h %d", splash-> x(), splash->y(), splash->width(),splash-> height ());
137 int vh = height() ; 139 int vh = height() ;
138 int vw = width(); 140 int vw = width();
139 //qDebug("Toolbar hei %d ",iconToolBar->height() ); 141 //qDebug("Toolbar hei %d ",iconToolBar->height() );
140 if ( iconToolBar->orientation () == Qt:: Horizontal ) { 142 if ( iconToolBar->orientation () == Qt:: Horizontal ) {
141 vh -= iconToolBar->height(); 143 vh -= iconToolBar->height();
142 } else { 144 } else {
143 vw -= iconToolBar->height(); 145 vw -= iconToolBar->height();
144 } 146 }
145 //mView->setMaximumSize( splash->size() ); 147 //mView->setMaximumSize( splash->size() );
146 //mView->resize( splash->size() ); 148 //mView->resize( splash->size() );
147 //qDebug("MainView x %d y %d w %d h %d", mView->x(),mView-> y(), mView->width(), mView->height ()); 149 //qDebug("MainView x %d y %d w %d h %d", mView->x(),mView-> y(), mView->width(), mView->height ());
148 mView->readSettings(); 150 mView->readSettings();
149 bool oldOpened = false; 151 bool oldOpened = false;
150 bool newFile = false; 152 bool newFile = false;
151 if( !QFile::exists( defaultFileName() ) ) { 153 if( !QFile::exists( defaultFileName() ) ) {
152 QFileInfo finfo ( defaultFileName() ); 154 QFileInfo finfo ( defaultFileName() );
153 QString oldFile = QDir::convertSeparators( QDir::homeDirPath()+"/Applications/korganizer/mycalendar.ics"); 155 QString oldFile = QDir::convertSeparators( QDir::homeDirPath()+"/Applications/korganizer/mycalendar.ics");
154 qDebug("oldfile %s ", oldFile.latin1()); 156 qDebug("oldfile %s ", oldFile.latin1());
155 QString message = "You are starting KO/Pi for the\nfirst time after updating to a\nversion >= 1.9.1. The location of the\ndefault calendar file has changed.\nA mycalendar.ics file was detected\nat the old location.\nThis file will be loaded now\nand stored at the new location!\n(Config file location has changed, too!)\nPlease read menu Help-What's New!\n"; 157 QString message = "You are starting KO/Pi for the\nfirst time after updating to a\nversion >= 1.9.1. The location of the\ndefault calendar file has changed.\nA mycalendar.ics file was detected\nat the old location.\nThis file will be loaded now\nand stored at the new location!\n(Config file location has changed, too!)\nPlease read menu Help-What's New!\n";
156 finfo.setFile( oldFile ); 158 finfo.setFile( oldFile );
157 if (finfo.exists() ) { 159 if (finfo.exists() ) {
158 KMessageBox::information( this, message); 160 KMessageBox::information( this, message);
159 mView->openCalendar( oldFile ); 161 mView->openCalendar( oldFile );
160 qApp->processEvents(); 162 qApp->processEvents();
161 } else { 163 } else {
162 oldFile = QDir::convertSeparators( QDir::homeDirPath()+"/korganizer/mycalendar.ics"); 164 oldFile = QDir::convertSeparators( QDir::homeDirPath()+"/korganizer/mycalendar.ics");
163 finfo.setFile( oldFile ); 165 finfo.setFile( oldFile );
164 if (finfo.exists() ) { 166 if (finfo.exists() ) {
165 KMessageBox::information( this, message); 167 KMessageBox::information( this, message);
166 mView->openCalendar( oldFile ); 168 mView->openCalendar( oldFile );
167 qApp->processEvents(); 169 qApp->processEvents();
168 } 170 }
169 } 171 }
170 mView->saveCalendar( defaultFileName() ); 172 mView->saveCalendar( defaultFileName() );
171 newFile = true; 173 newFile = true;
172 } 174 }
173 175
174 QTime neededSaveTime = QDateTime::currentDateTime().time(); 176 QTime neededSaveTime = QDateTime::currentDateTime().time();
175 if ( ! oldOpened ) 177 if ( ! oldOpened )
176 mView->openCalendar( defaultFileName() ); 178 mView->openCalendar( defaultFileName() );
177 int msNeeded = neededSaveTime.msecsTo( QDateTime::currentDateTime().time() ); 179 int msNeeded = neededSaveTime.msecsTo( QDateTime::currentDateTime().time() );
178 qDebug("KO: Calendar loading time: %d ms",msNeeded ); 180 qDebug("KO: Calendar loading time: %d ms",msNeeded );
179 181
180 if ( KOPrefs::instance()->mLanguageChanged ) { 182 if ( KOPrefs::instance()->mLanguageChanged ) {
181 KOPrefs::instance()->setCategoryDefaults(); 183 KOPrefs::instance()->setCategoryDefaults();
182 int count = mView->addCategories(); 184 int count = mView->addCategories();
183 KOPrefs::instance()->mLanguageChanged = false; 185 KOPrefs::instance()->mLanguageChanged = false;
184 } 186 }
185 processIncidenceSelection( 0 ); 187 processIncidenceSelection( 0 );
186 connect( mView, SIGNAL( incidenceSelected( Incidence * ) ), 188 connect( mView, SIGNAL( incidenceSelected( Incidence * ) ),
187 SLOT( processIncidenceSelection( Incidence * ) ) ); 189 SLOT( processIncidenceSelection( Incidence * ) ) );
188 connect( mView, SIGNAL( modifiedChanged( bool ) ), 190 connect( mView, SIGNAL( modifiedChanged( bool ) ),
189 SLOT( slotModifiedChanged( bool ) ) ); 191 SLOT( slotModifiedChanged( bool ) ) );
190 192
191 193
192 connect( &mSaveTimer, SIGNAL( timeout() ), SLOT( save() ) ); 194 connect( &mSaveTimer, SIGNAL( timeout() ), SLOT( save() ) );
193 mView->setModified( false ); 195 mView->setModified( false );
194 mBlockAtStartup = false; 196 mBlockAtStartup = false;
195 mView->setModified( false ); 197 mView->setModified( false );
196 setCentralWidget( mView ); 198 setCentralWidget( mView );
197 globalFlagBlockStartup = 0; 199 globalFlagBlockStartup = 0;
198 mView->show(); 200 mView->show();
199 delete splash; 201 delete splash;
200 if ( newFile ) 202 if ( newFile )
201 mView->updateConfig(); 203 mView->updateConfig();
@@ -1764,581 +1766,610 @@ void MainWindow::loadCalendar()
1764 if ( info. exists() ) { 1766 if ( info. exists() ) {
1765 mess = i18n("Backup file from:\n%1\nLoading backup\nfile will delete\nyour current Data!\n").arg(KGlobal::locale()->formatDateTime(info.lastModified (), true, false )); 1767 mess = i18n("Backup file from:\n%1\nLoading backup\nfile will delete\nyour current Data!\n").arg(KGlobal::locale()->formatDateTime(info.lastModified (), true, false ));
1766 int result = QMessageBox::warning( this, "KO/Pi: Warning!", 1768 int result = QMessageBox::warning( this, "KO/Pi: Warning!",
1767 mess, 1769 mess,
1768 i18n("Load!"), i18n("Cancel"), 0, 1770 i18n("Load!"), i18n("Cancel"), 0,
1769 0, 1 ); 1771 0, 1 );
1770 if ( result != 0 ) { 1772 if ( result != 0 ) {
1771 loadbup = false; 1773 loadbup = false;
1772 } 1774 }
1773 } else { 1775 } else {
1774 QMessageBox::warning( this, i18n("KO/Pi: Warning!"), 1776 QMessageBox::warning( this, i18n("KO/Pi: Warning!"),
1775 i18n("Backup file\ndoes not exist!\nNothing loaded!"), 0, 0, 1777 i18n("Backup file\ndoes not exist!\nNothing loaded!"), 0, 0,
1776 0, 1 ); 1778 0, 1 );
1777 1779
1778 return; 1780 return;
1779 } 1781 }
1780 if ( loadbup ) { 1782 if ( loadbup ) {
1781 mView->openCalendar( fn ); 1783 mView->openCalendar( fn );
1782 KOPrefs::instance()->mLastLoadFile = fn; 1784 KOPrefs::instance()->mLastLoadFile = fn;
1783 mess = i18n("KO/Pi:Loaded %1").arg(fn) ; 1785 mess = i18n("KO/Pi:Loaded %1").arg(fn) ;
1784 setCaption(mess); 1786 setCaption(mess);
1785 } 1787 }
1786 1788
1787} 1789}
1788void MainWindow::quickImportIcal() 1790void MainWindow::quickImportIcal()
1789{ 1791{
1790 importFile( KOPrefs::instance()->mLastImportFile, false ); 1792 importFile( KOPrefs::instance()->mLastImportFile, false );
1791} 1793}
1792void MainWindow::importFile( QString fn, bool quick ) 1794void MainWindow::importFile( QString fn, bool quick )
1793{ 1795{
1794 QFileInfo info; 1796 QFileInfo info;
1795 info.setFile( fn ); 1797 info.setFile( fn );
1796 QString mess; 1798 QString mess;
1797 bool loadbup = true; 1799 bool loadbup = true;
1798 if ( !info. exists() ) { 1800 if ( !info. exists() ) {
1799 mess = i18n("Import file \n...%1\ndoes not exist!\nNothing imported!\n").arg(fn.right( 30)); 1801 mess = i18n("Import file \n...%1\ndoes not exist!\nNothing imported!\n").arg(fn.right( 30));
1800 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"), 1802 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),
1801 mess ); 1803 mess );
1802 return; 1804 return;
1803 } 1805 }
1804 int result = 0; 1806 int result = 0;
1805 if ( !quick ) { 1807 if ( !quick ) {
1806 mess = i18n( "Import file \n...%1\nfrom:\n%2\nDuplicated entries\nwill not be imported!\n").arg(fn.right( 25)).arg(KGlobal::locale()->formatDateTime(info.lastModified (), true, false )); 1808 mess = i18n( "Import file \n...%1\nfrom:\n%2\nDuplicated entries\nwill not be imported!\n").arg(fn.right( 25)).arg(KGlobal::locale()->formatDateTime(info.lastModified (), true, false ));
1807 result = QMessageBox::warning( this, "KO/Pi: Warning!", 1809 result = QMessageBox::warning( this, "KO/Pi: Warning!",
1808 mess, 1810 mess,
1809 "Import", "Cancel", 0, 1811 "Import", "Cancel", 0,
1810 0, 1 ); 1812 0, 1 );
1811 } 1813 }
1812 if ( result == 0 ) { 1814 if ( result == 0 ) {
1813 if ( mView->openCalendar( fn, true )) { 1815 if ( mView->openCalendar( fn, true )) {
1814 KOPrefs::instance()->mLastImportFile = fn; 1816 KOPrefs::instance()->mLastImportFile = fn;
1815 setCaption(i18n("Imported file successfully")); 1817 setCaption(i18n("Imported file successfully"));
1816 } else { 1818 } else {
1817 setCaption(i18n("Error importing file")); 1819 setCaption(i18n("Error importing file"));
1818 } 1820 }
1819 } 1821 }
1820} 1822}
1821 1823
1822void MainWindow::importIcal() 1824void MainWindow::importIcal()
1823{ 1825{
1824 1826
1825 QString fn =KOPrefs::instance()->mLastImportFile; 1827 QString fn =KOPrefs::instance()->mLastImportFile;
1826 1828
1827 fn =KFileDialog:: getOpenFileName( fn, i18n("Import filename(*.ics/*.vcs)"), this ); 1829 fn =KFileDialog:: getOpenFileName( fn, i18n("Import filename(*.ics/*.vcs)"), this );
1828 if ( fn == "" ) 1830 if ( fn == "" )
1829 return; 1831 return;
1830 importFile( fn, true ); 1832 importFile( fn, true );
1831 1833
1832} 1834}
1833 1835
1834void MainWindow::exportVCalendar() 1836void MainWindow::exportVCalendar()
1835{ 1837{
1836 QString fn = KOPrefs::instance()->mLastVcalFile; 1838 QString fn = KOPrefs::instance()->mLastVcalFile;
1837 fn = KFileDialog::getSaveFileName( fn, i18n("Export vcal filename(*.vcs)"), this ); 1839 fn = KFileDialog::getSaveFileName( fn, i18n("Export vcal filename(*.vcs)"), this );
1838 if ( fn == "" ) 1840 if ( fn == "" )
1839 return; 1841 return;
1840 QFileInfo info; 1842 QFileInfo info;
1841 info.setFile( fn ); 1843 info.setFile( fn );
1842 QString mes; 1844 QString mes;
1843 bool createbup = true; 1845 bool createbup = true;
1844 if ( info. exists() ) { 1846 if ( info. exists() ) {
1845 mes = i18n("Save file\nalready exists!\nOld save file from:\n%1\nOverwrite?\n").arg (KGlobal::locale()->formatDateTime(info.lastModified (), true, false ) ); 1847 mes = i18n("Save file\nalready exists!\nOld save file from:\n%1\nOverwrite?\n").arg (KGlobal::locale()->formatDateTime(info.lastModified (), true, false ) );
1846 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),mes, 1848 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),mes,
1847 i18n("Overwrite!"), i18n("Cancel"), 0, 1849 i18n("Overwrite!"), i18n("Cancel"), 0,
1848 0, 1 ); 1850 0, 1 );
1849 if ( result != 0 ) { 1851 if ( result != 0 ) {
1850 createbup = false; 1852 createbup = false;
1851 } 1853 }
1852 } 1854 }
1853 if ( createbup ) { 1855 if ( createbup ) {
1854 if ( mView->exportVCalendar( fn ) ) { 1856 if ( mView->exportVCalendar( fn ) ) {
1855 KOPrefs::instance()->mLastVcalFile = fn; 1857 KOPrefs::instance()->mLastVcalFile = fn;
1856 if ( fn.length() > 20 ) 1858 if ( fn.length() > 20 )
1857 mes = i18n("KO/Pi:Exported to ...%1").arg(fn.right(20)) ; 1859 mes = i18n("KO/Pi:Exported to ...%1").arg(fn.right(20)) ;
1858 else 1860 else
1859 mes = i18n("KO/Pi:Exported to %1").arg(fn ); 1861 mes = i18n("KO/Pi:Exported to %1").arg(fn );
1860 setCaption(mes); 1862 setCaption(mes);
1861 } 1863 }
1862 } 1864 }
1863 1865
1864} 1866}
1865QString MainWindow::getPassword( ) 1867QString MainWindow::getPassword( )
1866{ 1868{
1867 QString retfile = ""; 1869 QString retfile = "";
1868 QDialog dia ( this, "input-dialog", true ); 1870 QDialog dia ( this, "input-dialog", true );
1869 QLineEdit lab ( &dia ); 1871 QLineEdit lab ( &dia );
1870 lab.setEchoMode( QLineEdit::Password ); 1872 lab.setEchoMode( QLineEdit::Password );
1871 QVBoxLayout lay( &dia ); 1873 QVBoxLayout lay( &dia );
1872 lay.setMargin(7); 1874 lay.setMargin(7);
1873 lay.setSpacing(7); 1875 lay.setSpacing(7);
1874 lay.addWidget( &lab); 1876 lay.addWidget( &lab);
1875 dia.setFixedSize( 230,50 ); 1877 dia.setFixedSize( 230,50 );
1876 dia.setCaption( i18n("Enter password") ); 1878 dia.setCaption( i18n("Enter password") );
1877 QPushButton pb ( "OK", &dia); 1879 QPushButton pb ( "OK", &dia);
1878 lay.addWidget( &pb ); 1880 lay.addWidget( &pb );
1879 connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) ); 1881 connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) );
1880 dia.show(); 1882 dia.show();
1881 int res = dia.exec(); 1883 int res = dia.exec();
1882 if ( res ) 1884 if ( res )
1883 retfile = lab.text(); 1885 retfile = lab.text();
1884 dia.hide(); 1886 dia.hide();
1885 qApp->processEvents(); 1887 qApp->processEvents();
1886 return retfile; 1888 return retfile;
1887 1889
1888} 1890}
1889 1891
1890void MainWindow::enableQuick() 1892void MainWindow::enableQuick()
1891{ 1893{
1894 QString passWordPiSync = "bhdrvmk";
1892 QString retfile = ""; 1895 QString retfile = "";
1893 QDialog dia ( this, "input-dialog", true ); 1896 QDialog dia ( this, "input-dialog", true );
1894 QLineEdit lab ( &dia ); 1897 QLineEdit lab ( &dia );
1895 QVBoxLayout lay( &dia ); 1898 QVBoxLayout lay( &dia );
1896 lab.setText( KOPrefs::instance()->mPassiveSyncPort ); 1899 lab.setText( KOPrefs::instance()->mPassiveSyncPort );
1897 lay.setMargin(7); 1900 lay.setMargin(7);
1898 lay.setSpacing(7); 1901 lay.setSpacing(7);
1899 QLabel label ( i18n("Port number (Default: 9197)"), &dia ); 1902 QLabel label ( i18n("Port number (Default: 9197)"), &dia );
1900 lay.addWidget( &label); 1903 lay.addWidget( &label);
1901 lay.addWidget( &lab); 1904 lay.addWidget( &lab);
1905
1906 QLineEdit lepw ( &dia );
1907 lepw.setText( "abc" );
1908 QLabel label2 ( i18n("Password to enable\naccess from remote:"), &dia );
1909 lay.addWidget( &label2);
1910 lay.addWidget( &lepw);
1902 dia.setFixedSize( 230,80 ); 1911 dia.setFixedSize( 230,80 );
1903 dia.setCaption( i18n("Enter port for Easy-Pi-Sync") ); 1912 dia.setCaption( i18n("Enter port for Pi-Sync") );
1904 QPushButton pb ( "OK", &dia); 1913 QPushButton pb ( "OK", &dia);
1905 lay.addWidget( &pb ); 1914 lay.addWidget( &pb );
1906 connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) ); 1915 connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) );
1907 dia.show(); 1916 dia.show();
1908 int res = dia.exec(); 1917 int res = dia.exec();
1909 if ( res ) 1918 if ( res )
1910 retfile = lab.text(); 1919 retfile = lab.text();
1911 else 1920 else
1912 return; 1921 return;
1913 dia.hide(); 1922 dia.hide();
1923 passWordPiSync = lepw.text();
1914 qApp->processEvents(); 1924 qApp->processEvents();
1915 KOPrefs::instance()->mPassiveSyncPort = retfile; 1925 KOPrefs::instance()->mPassiveSyncPort = retfile;
1916 bool ok; 1926 bool ok;
1917 Q_UINT16 port = retfile.toUInt(&ok); 1927 Q_UINT16 port = retfile.toUInt(&ok);
1918 if ( ! ok ) { 1928 if ( ! ok ) {
1919 qDebug("no valid port "); 1929 KMessageBox::information( this, i18n("No valid port"));
1920 return; 1930 return;
1921 } 1931 }
1922 qDebug("port %d ", port); 1932 qDebug("port %d ", port);
1923 mServerSocket = new KServerSocket ( port ,1 ); 1933 mServerSocket = new KServerSocket ( passWordPiSync, port ,1 );
1924 qDebug("connected "); 1934 qDebug("connected ");
1925 if ( !mServerSocket->ok() ) { 1935 if ( !mServerSocket->ok() ) {
1926 qWarning("Failed to bind to port %d", port); 1936 qWarning("Failed to bind to port %d", port);
1927 delete mServerSocket; 1937 delete mServerSocket;
1928 mServerSocket = 0; 1938 mServerSocket = 0;
1929 return; 1939 return;
1930 } 1940 }
1931 connect( mServerSocket, SIGNAL ( sendFile(QSocket*) ), this, SLOT ( sendFile(QSocket*) ) ); 1941 connect( mServerSocket, SIGNAL ( sendFile(QSocket*) ), this, SLOT ( sendFile(QSocket*) ) );
1932 connect( mServerSocket, SIGNAL ( getFile(QSocket*) ), this, SLOT ( getFile(QSocket*) ) ); 1942 connect( mServerSocket, SIGNAL ( getFile(QSocket*) ), this, SLOT ( getFile(QSocket*) ) );
1933} 1943}
1934void MainWindow::sendFile(QSocket* socket) 1944void MainWindow::sendFile(QSocket* socket)
1935{ 1945{
1936 setCaption( i18n("Received request for file") ); 1946 setCaption( i18n("Received request for file") );
1937 qDebug("MainWindow::sendFile(QSocket* s) "); 1947 qDebug("MainWindow::sendFile(QSocket* s) ");
1938 if ( mSyncActionDialog ) 1948 if ( mSyncActionDialog )
1939 delete mSyncActionDialog; 1949 delete mSyncActionDialog;
1940 mSyncActionDialog = new QDialog ( this, "input-dialog", true ); 1950 mSyncActionDialog = new QDialog ( this, "input-dialog", true );
1941 mSyncActionDialog->setCaption(i18n("KO/Pi - WARNING")); 1951 mSyncActionDialog->setCaption(i18n("KO/Pi - WARNING"));
1942 QLabel* label = new QLabel( i18n("Synchronizing...\nDo not use\nthis application!\n"), mSyncActionDialog ); 1952 QLabel* label = new QLabel( i18n("Synchronizing...\nDo not use\nthis application!\n"), mSyncActionDialog );
1943 QVBoxLayout* lay = new QVBoxLayout( mSyncActionDialog ); 1953 QVBoxLayout* lay = new QVBoxLayout( mSyncActionDialog );
1944 lay->addWidget( label); 1954 lay->addWidget( label);
1945 lay->setMargin(7); 1955 lay->setMargin(7);
1946 lay->setSpacing(7); 1956 lay->setSpacing(7);
1947 mSyncActionDialog->setFixedSize( 200,100 ); 1957 mSyncActionDialog->setFixedSize( 200,100 );
1948 mSyncActionDialog->show(); 1958 mSyncActionDialog->show();
1949 qApp->processEvents();
1950 qDebug("saving ... "); 1959 qDebug("saving ... ");
1951 save(); 1960 save();
1961 qApp->processEvents();
1952 QString fileName = defaultFileName(); 1962 QString fileName = defaultFileName();
1953 QFile file( fileName ); 1963 QFile file( fileName );
1954 if (!file.open( IO_ReadOnly ) ) { 1964 if (!file.open( IO_ReadOnly ) ) {
1955 setCaption( i18n("Error open file") ); 1965 setCaption( i18n("Error open file") );
1956 delete mSyncActionDialog; 1966 delete mSyncActionDialog;
1957 mSyncActionDialog = 0; 1967 mSyncActionDialog = 0;
1958 qDebug("error open cal file "); 1968 qDebug("error open cal file ");
1959 return ; 1969 return ;
1960 1970
1961 } 1971 }
1962 setCaption( i18n("Sending file...") ); 1972 setCaption( i18n("Sending file...") );
1963 QTextStream ts( &file ); 1973 QTextStream ts( &file );
1964 ts.setCodec( QTextCodec::codecForName("utf8") ); 1974 ts.setCodec( QTextCodec::codecForName("utf8") );
1965 QTextStream os( socket ); 1975 QTextStream os( socket );
1966 os.setCodec( QTextCodec::codecForName("utf8") ); 1976 os.setCodec( QTextCodec::codecForName("utf8") );
1967 //os.setEncoding( QTextStream::UnicodeUTF8 ); 1977 //os.setEncoding( QTextStream::UnicodeUTF8 );
1968 while ( ! ts.atEnd() ) { 1978 while ( ! ts.atEnd() ) {
1969 os << ts.readLine() << "\n"; 1979 os << ts.readLine() << "\n";
1970 } 1980 }
1971 //os << ts.read(); 1981 //os << ts.read();
1972 socket->close(); 1982 socket->close();
1973 file.close(); 1983 file.close();
1974 setCaption( i18n("File sent. Waiting to get back synced file") ); 1984 setCaption( i18n("File sent. Waiting to get back synced file") );
1975 qDebug("file sent "); 1985 qDebug("file sent ");
1976} 1986}
1977void MainWindow::getFile(QSocket* socket) 1987void MainWindow::getFile(QSocket* socket)
1978{ 1988{
1979 setCaption( i18n("Receiving synced file...") ); 1989 setCaption( i18n("Receiving synced file...") );
1980 1990
1991 piTime.start();
1992 piSocket = socket;
1993 piFileString = "";
1994 QTimer::singleShot( 1, this , SLOT (readBackFileFromSocket( ) ));
1995
1996
1997}
1998void MainWindow::readBackFileFromSocket()
1999{
2000 qDebug("readBackFileFromSocket() %d ", piTime.elapsed ());
2001 while ( piSocket->canReadLine () ) {
2002 piTime.restart();
2003 QString line = piSocket->readLine ();
2004 piFileString += line;
2005 qDebug("readline: %s ", line.latin1());
2006 setCaption( i18n("Received %1 bytes").arg( piFileString.length() ) );
2007
2008 }
2009 if ( piTime.elapsed () < 3000 ) {
2010 // wait for more
2011 qDebug("waitformore ");
2012 QTimer::singleShot( 100, this , SLOT (readBackFileFromSocket( ) ));
2013 return;
2014 }
1981 QString fileName = defaultFileName(); 2015 QString fileName = defaultFileName();
1982 QFile file( fileName ); 2016 QFile file ( fileName );
1983 if (!file.open( IO_WriteOnly ) ) { 2017 if (!file.open( IO_WriteOnly ) ) {
1984 setCaption( i18n("Error open file") ); 2018 setCaption( i18n("Error open file for writing!") );
1985 delete mSyncActionDialog; 2019 delete mSyncActionDialog;
1986 mSyncActionDialog = 0; 2020 mSyncActionDialog = 0;
1987 qDebug("error open cal file "); 2021 qDebug("error open cal file ");
2022 piFileString = "";
1988 return ; 2023 return ;
1989 2024
1990 } 2025 }
1991 2026
1992 mView->setLoadedFileVersion(QDateTime::currentDateTime().addSecs( -1)); 2027 mView->setLoadedFileVersion(QDateTime::currentDateTime().addSecs( -1));
1993 QTextStream ts( &file ); 2028 QTextStream ts ( &file );
1994 ts.setCodec( QTextCodec::codecForName("utf8") ); 2029 ts.setCodec( QTextCodec::codecForName("utf8") );
1995 bool first = true; 2030 qDebug("finish ");
1996 while ( socket->canReadLine () || first ) { 2031 setCaption( i18n("Writing file to disk...") );
1997 first = false; 2032 ts << piFileString;
1998 while ( socket->canReadLine () ) {
1999 qDebug("avail %d ", socket->bytesAvailable () );
2000 ts << socket->readLine ();
2001 }
2002 QTime ti;
2003 ti.start();
2004 while ( ti.elapsed () < 5000 && !socket->canReadLine () ) {
2005 qDebug("waiting1a %d %d ",ti.elapsed (), socket->bytesAvailable () );
2006 //qApp->processEvents();
2007 qDebug("waiting1b %d ",ti.elapsed () );
2008 if ( !socket->canReadLine () ) {
2009 qDebug("waiting1c %d ",ti.elapsed () );
2010#ifndef _WIN32_
2011 usleep( 100000);
2012#endif
2013 }
2014 //socket->waitForMore ( 100 );
2015 }
2016 ts << socket->readLine ();
2017#if 0
2018#ifdef DESKTOP_VERSION
2019 socket->waitForMore ( 5000 );
2020#else
2021 // socket->waitForMore ( 5000 );
2022 // seems to be broken in qt2
2023 bool stop = false;
2024 QTime ti;
2025 ti.start();
2026 while ( ti.elapsed < 5000 && !stop ) {
2027 qApp->processEvents();
2028 if ( socket->canReadLine () )
2029 stop = true ;
2030 else {
2031 usleep( 100000 );
2032
2033 }
2034 }
2035#endif
2036#endif
2037 }
2038 setCaption( i18n("File received - reloading calendar...") ); 2033 setCaption( i18n("File received - reloading calendar...") );
2039 socket->close(); 2034 piSocket->close();
2040 file.close(); 2035 file.close();
2041 mView->watchSavedFile(); 2036 mView->watchSavedFile();
2042 mView->openCalendar( defaultFileName() ); 2037 mView->openCalendar( defaultFileName() );
2043 setCaption( i18n("Easy-Pi-Sync successful!") ); 2038 setCaption( i18n("Pi-Sync successful!") );
2044 delete mSyncActionDialog; 2039 delete mSyncActionDialog;
2045 mSyncActionDialog = 0; 2040 mSyncActionDialog = 0;
2041 piFileString = "";
2046 2042
2047 2043
2048} 2044}
2049void MainWindow::endConnect() 2045void MainWindow::endConnect()
2050{ 2046{
2051 setCaption( i18n("No file received - syncing successful") ); 2047 setCaption( i18n("No file received - syncing successful") );
2052 delete mSyncActionDialog; 2048 delete mSyncActionDialog;
2053 mSyncActionDialog = 0; 2049 mSyncActionDialog = 0;
2054} 2050}
2055void MainWindow::performQuick() 2051void MainWindow::performQuick()
2056{ 2052{
2053
2057 setCaption( i18n("Please input connection settings") ); 2054 setCaption( i18n("Please input connection settings") );
2058 QString retfile = ""; 2055 QString retfile = "";
2059 QDialog dia ( this, "input-dialog", true ); 2056 QDialog dia ( this, "input-dialog", true );
2060 QLineEdit lab ( &dia ); 2057 QLineEdit lab ( &dia );
2061 QVBoxLayout lay( &dia ); 2058 QVBoxLayout lay( &dia );
2062 QLabel label ( i18n("IP address\n(Example: 192.168.0.40)"), &dia ); 2059 QLabel label ( i18n("IP address\n(Example: 192.168.0.40)"), &dia );
2063 lay.addWidget( &label); 2060 lay.addWidget( &label);
2064 lab.setText( KOPrefs::instance()->mActiveSyncIP ); 2061 lab.setText( KOPrefs::instance()->mActiveSyncIP );
2065 lay.setMargin(7); 2062 lay.setMargin(7);
2066 lay.setSpacing(7); 2063 lay.setSpacing(7);
2067 lay.addWidget( &lab); 2064 lay.addWidget( &lab);
2068 QLabel label2 ( i18n("Port number (Default: 9197)"), &dia ); 2065 QLabel label2 ( i18n("Port number (Default: 9197)"), &dia );
2069 lay.addWidget( &label2); 2066 lay.addWidget( &label2);
2070 QLineEdit lab2 ( &dia ); 2067 QLineEdit lab2 ( &dia );
2071 lab2.setText( KOPrefs::instance()->mActiveSyncPort ); 2068 lab2.setText( KOPrefs::instance()->mActiveSyncPort );
2072 lay.addWidget( &lab2); 2069 lay.addWidget( &lab2);
2070
2071 QLineEdit lepw ( &dia );
2072 lepw.setText( mPassWordPiSync );
2073 QLabel label3 ( i18n("Password to enable\naccess to remote:"), &dia );
2074 lay.addWidget( &label3);
2075 lay.addWidget( &lepw);
2076
2073 dia.setFixedSize( 230,200 ); 2077 dia.setFixedSize( 230,200 );
2074 dia.setCaption( i18n("Enter port for Easy-Pi-Sync ") ); 2078 dia.setCaption( i18n("Enter port for Pi-Sync ") );
2075 QPushButton pb ( "OK", &dia); 2079 QPushButton pb ( "OK", &dia);
2076 lay.addWidget( &pb ); 2080 lay.addWidget( &pb );
2077 connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) ); 2081 connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) );
2078 dia.show(); 2082 dia.show();
2079 int res = dia.exec(); 2083 int res = dia.exec();
2080 if ( !res ) { 2084 if ( !res ) {
2081 setCaption( i18n("Syncing cancelled!") ); 2085 setCaption( i18n("Syncing cancelled!") );
2082 return; 2086 return;
2083 } 2087 }
2088 mPassWordPiSync = lepw.text();
2084 dia.hide(); 2089 dia.hide();
2085 KOPrefs::instance()->mActiveSyncPort = lab2.text(); 2090 KOPrefs::instance()->mActiveSyncPort = lab2.text();
2086 KOPrefs::instance()->mActiveSyncIP = lab.text(); 2091 KOPrefs::instance()->mActiveSyncIP = lab.text();
2087 qApp->processEvents(); 2092 qApp->processEvents();
2088 performQuickQuick(); 2093 performQuickQuick();
2089} 2094}
2090 2095
2091void MainWindow::performQuickQuick() 2096void MainWindow::performQuickQuick()
2092{ 2097{
2093 // setCaption( i18n("") ); 2098 // setCaption( i18n("") );
2094 2099
2095 bool ok; 2100 bool ok;
2096 Q_UINT16 port = KOPrefs::instance()->mActiveSyncPort.toUInt(&ok); 2101 Q_UINT16 port = KOPrefs::instance()->mActiveSyncPort.toUInt(&ok);
2097 if ( ! ok ) { 2102 if ( ! ok ) {
2098 setCaption( i18n("Sorry, no valid port.Syncing cancelled.") ); 2103 setCaption( i18n("Sorry, no valid port.Syncing cancelled.") );
2099 return; 2104 return;
2100 } 2105 }
2101 if ( !mCommandSocket ) { 2106 if ( !mCommandSocket ) {
2102 mCommandSocket = new QSocket( this ); 2107 mCommandSocket = new QSocket( this );
2103 // delete mCommandSocket; 2108 // delete mCommandSocket;
2104 //mCommandSocket = new QSocket( this ); 2109 //mCommandSocket = new QSocket( this );
2105 connect( mCommandSocket, SIGNAL(readyRead()), this, SLOT(readFileFromSocket()) ); 2110 connect( mCommandSocket, SIGNAL(readyRead()), this, SLOT(readFileFromSocket()) );
2111 connect( mCommandSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteCommandSocket()) );
2106 } 2112 }
2107 QString host = KOPrefs::instance()->mActiveSyncIP; 2113 QString host = KOPrefs::instance()->mActiveSyncIP;
2108 mCommandSocket->connectToHost( host, port ); 2114 mCommandSocket->connectToHost( host, port );
2109 QTextStream os( mCommandSocket ); 2115 QTextStream os( mCommandSocket );
2110 os.setEncoding( QTextStream::UnicodeUTF8 ); 2116 os.setEncoding( QTextStream::UnicodeUTF8 );
2111 os << "GET\r\n"; 2117 os << "GET " << mPassWordPiSync << "\r\n";
2112 setCaption( i18n("Sending request for remote file ...") ); 2118 setCaption( i18n("Sending request for remote file ...") );
2119 mTimerCommandSocket->start( 15000 );
2113 2120
2114} 2121}
2122void MainWindow::deleteCommandSocket()
2123{
2124 if ( !mCommandSocket)
2125 return;
2126 if ( mTimerCommandSocket->isActive () ) {
2127 KMessageBox::information( 0, i18n("ERROR:\nConnection to remote host timed out "));
2128 mTimerCommandSocket->stop();
2129 }
2130 qDebug("MainWindow::deletemCommandSocket() ");
2131 delete mCommandSocket;
2132 mCommandSocket = 0;
2133}
2134void MainWindow::deleteCommandSocketFinish()
2135{
2136 if ( ! mCommandSocketFinish)
2137 return;
2138 //KMessageBox::information( 0, i18n("MainWindow::deleteCommandSocketFinish() "));
2139 qDebug("MainWindow::deletemCommandSocketFinish() ");
2140 delete mCommandSocketFinish;
2141 mCommandSocketFinish = 0;
2142}
2115void MainWindow::readFileFromSocket() 2143void MainWindow::readFileFromSocket()
2116{ 2144{
2145 mTimerCommandSocket->stop();
2117 setCaption( i18n("Receiving remote file ...") ); 2146 setCaption( i18n("Receiving remote file ...") );
2118 qDebug("MainWindow::readFileFromSocket() "); 2147 qDebug("MainWindow::readFileFromSocket() ");
2119 QString fileName; 2148 QString fileName;
2120#ifdef _WIN32_ 2149#ifdef _WIN32_
2121 fileName = defaultFileName() +"sync"; 2150 fileName = defaultFileName() +"sync";
2122#else 2151#else
2123 fileName = "/tmp/kopitempfile.ics"; 2152 fileName = "/tmp/kopitempfile.ics";
2124#endif 2153#endif
2125 QFile file( fileName ); 2154 QFile file( fileName );
2126 if (!file.open( IO_WriteOnly ) ) { 2155 if (!file.open( IO_WriteOnly ) ) {
2127 setCaption( i18n("Error: Cannot open temp file for write.") ); 2156 setCaption( i18n("Error: Cannot open temp file for write.") );
2128 qDebug("Error open temp calender file for writing: %s",fileName.latin1() ); 2157 qDebug("Error open temp calender file for writing: %s",fileName.latin1() );
2129 return ; 2158 return ;
2130 } 2159 }
2131 2160
2132 //QTextStream os2( mCommandSocket ); 2161 //QTextStream os2( mCommandSocket );
2133 //os2.setEncoding( QTextStream::UnicodeUTF8 ); 2162 //os2.setEncoding( QTextStream::UnicodeUTF8 );
2134 2163
2135 QTextStream ts( &file ); 2164 QTextStream ts( &file );
2136 ts.setCodec( QTextCodec::codecForName("utf8") ); 2165 ts.setCodec( QTextCodec::codecForName("utf8") );
2137 bool first = true; 2166 bool first = true;
2138 while ( mCommandSocket->canReadLine () || first) { 2167 while ( mCommandSocket->canReadLine () || first) {
2139 first = false; 2168 first = false;
2140 while ( mCommandSocket->canReadLine () ) { 2169 while ( mCommandSocket->canReadLine () ) {
2141 ts << mCommandSocket->readLine (); 2170 ts << mCommandSocket->readLine ();
2142 } 2171 }
2143 QTime ti; 2172 QTime ti;
2144 ti.start(); 2173 ti.start();
2145 while ( ti.elapsed () < 5000 && !mCommandSocket->canReadLine () ) { 2174 while ( ti.elapsed () < 5000 && !mCommandSocket->canReadLine () ) {
2146 qApp->processEvents(); 2175 qApp->processEvents();
2147 qDebug("waiting2 %d ",ti.elapsed () ); 2176 qDebug("waiting2 %d ",ti.elapsed () );
2148 if ( !mCommandSocket->canReadLine () ) 2177 if ( !mCommandSocket->canReadLine () )
2149 mCommandSocket->waitForMore ( 100 ); 2178 mCommandSocket->waitForMore ( 100 );
2150 } 2179 }
2151 //mCommandSocket->waitForMore ( 5000 ); 2180 //mCommandSocket->waitForMore ( 5000 );
2152 } 2181 }
2153 file.close(); 2182 file.close();
2154 mCommandSocket->close(); 2183 mCommandSocket->close();
2184 if ( mCommandSocket->state() == QSocket::Idle )
2185 deleteCommandSocket();
2155 // pending: deleting after signal SIGNAL(delayedCloseFinished()) 2186 // pending: deleting after signal SIGNAL(delayedCloseFinished())
2156 //delete mCommandSocket; 2187 //delete mCommandSocket;
2157 setCaption( i18n("Remote file saved to temp file.") ); 2188 setCaption( i18n("Remote file saved to temp file.") );
2158 //mCommandSocket = 0; 2189 //mCommandSocket = 0;
2159 mCurrentSyncProfile = 2 ; // last file 2190 mCurrentSyncProfile = 2 ; // last file
2160 mView->setSyncDevice(KOPrefs::instance()->mSyncProfileNames[mCurrentSyncProfile] ); 2191 mView->setSyncDevice(KOPrefs::instance()->mSyncProfileNames[mCurrentSyncProfile] );
2161 mView->setSyncName( KOPrefs::instance()->mLocalMachineName ); 2192 mView->setSyncName( KOPrefs::instance()->mLocalMachineName );
2162 KConfig config ( locateLocal( "config","ksyncprofilesrc" ) ); 2193 KConfig config ( locateLocal( "config","ksyncprofilesrc" ) );
2163 KSyncProfile* temp = new KSyncProfile (); 2194 KSyncProfile* temp = new KSyncProfile ();
2164 temp->setName(KOPrefs::instance()->mSyncProfileNames[mCurrentSyncProfile]); 2195 temp->setName(KOPrefs::instance()->mSyncProfileNames[mCurrentSyncProfile]);
2165 temp->readConfig(&config); 2196 temp->readConfig(&config);
2166 KOPrefs::instance()->mAskForPreferences = temp->getAskForPreferences(); 2197 KOPrefs::instance()->mAskForPreferences = temp->getAskForPreferences();
2167 KOPrefs::instance()->mSyncAlgoPrefs = temp->getSyncPrefs(); 2198 KOPrefs::instance()->mSyncAlgoPrefs = temp->getSyncPrefs();
2168 KOPrefs::instance()->mWriteBackFile = temp->getWriteBackFile(); 2199 KOPrefs::instance()->mWriteBackFile = temp->getWriteBackFile();
2169 KOPrefs::instance()->mWriteBackExistingOnly = temp->getWriteBackExisting(); 2200 KOPrefs::instance()->mWriteBackExistingOnly = temp->getWriteBackExisting();
2170 KOPrefs::instance()->mWriteBackInFuture = 0; 2201 KOPrefs::instance()->mWriteBackInFuture = 0;
2171 if ( temp->getWriteBackFuture() ) 2202 if ( temp->getWriteBackFuture() )
2172 KOPrefs::instance()->mWriteBackInFuture = temp->getWriteBackFutureWeeks( ); 2203 KOPrefs::instance()->mWriteBackInFuture = temp->getWriteBackFutureWeeks( );
2173 KOPrefs::instance()->mShowSyncSummary = temp->getShowSummaryAfterSync(); 2204 KOPrefs::instance()->mShowSyncSummary = temp->getShowSummaryAfterSync();
2174 2205 delete temp;
2175 setCaption( i18n("Remote file saved to temp file.") ); 2206 setCaption( i18n("Remote file saved to temp file.") );
2176 if ( ! syncWithFile( fileName , true ) ) { 2207 if ( ! syncWithFile( fileName , true ) ) {
2177 setCaption( i18n("Syncing failed.") ); 2208 setCaption( i18n("Syncing failed.") );
2178 qDebug("Syncing failed "); 2209 qDebug("Syncing failed ");
2179 return; 2210 return;
2180 } 2211 }
2181 2212
2182 if ( !mCommandSocketFinish ) { 2213 if ( !mCommandSocketFinish ) {
2183 mCommandSocketFinish = new QSocket( this ); 2214 mCommandSocketFinish = new QSocket( this );
2215 connect( mCommandSocketFinish, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteCommandSocketFinish()) );
2184 } 2216 }
2185 mCommandSocketFinish->connectToHost( KOPrefs::instance()->mActiveSyncIP, KOPrefs::instance()->mActiveSyncPort.toUInt() ); 2217 mCommandSocketFinish->connectToHost( KOPrefs::instance()->mActiveSyncIP, KOPrefs::instance()->mActiveSyncPort.toUInt() );
2186 2218
2187 // pending connect signals connected () and error to new slots 2219 // pending connect signals connected () and error to new slots
2188 QString host = KOPrefs::instance()->mActiveSyncIP; 2220 QString host = KOPrefs::instance()->mActiveSyncIP;
2189 QFile file2( fileName ); 2221 QFile file2( fileName );
2190 if (!file2.open( IO_ReadOnly ) ) { 2222 if (!file2.open( IO_ReadOnly ) ) {
2191 setCaption( i18n("Error: Cannot open temp file for read.") ); 2223 setCaption( i18n("Error: Cannot open temp file for read.") );
2192 qDebug("error open cal file "); 2224 qDebug("error open cal file ");
2193 return ; 2225 return ;
2194 2226
2195 } 2227 }
2196 setCaption( i18n("Sending back synced file...") ); 2228 setCaption( i18n("Sending back synced file...") );
2197 QTextStream ts2( &file2 ); 2229 QTextStream ts2( &file2 );
2198 ts2.setCodec( QTextCodec::codecForName("utf8") ); 2230 ts2.setCodec( QTextCodec::codecForName("utf8") );
2199 QTextStream os2( mCommandSocketFinish ); 2231 QTextStream os2( mCommandSocketFinish );
2200 os2.setCodec( QTextCodec::codecForName("utf8") ); 2232 os2.setCodec( QTextCodec::codecForName("utf8") );
2201 //os.setEncoding( QTextStream::UnicodeUTF8 ); 2233 //os.setEncoding( QTextStream::UnicodeUTF8 );
2202 if ( KOPrefs::instance()->mWriteBackFile ) { 2234 if ( KOPrefs::instance()->mWriteBackFile ) {
2203 os2 << "PUT\r\n"; 2235 os2 << "PUT " << mPassWordPiSync << "\r\n";;
2204 while ( ! ts2.atEnd() ) { 2236 while ( ! ts2.atEnd() ) {
2205 os2 << ts2.readLine() << "\n"; 2237 os2 << ts2.readLine() << "\n";
2206 } 2238 }
2207 } else { 2239 } else {
2208 os2 << "STOP\r\n"; 2240 os2 << "STOP\r\n";
2209 } 2241 }
2210 mCommandSocketFinish->close(); 2242 mCommandSocketFinish->close();
2243 if ( mCommandSocketFinish->state() == QSocket::Idle )
2244 deleteCommandSocketFinish();
2211 file.close(); 2245 file.close();
2212 // pending: deleting after signal SIGNAL(delayedCloseFinished())
2213 //delete ( mCommandSocket);
2214 //mCommandSocket = 0;
2215 qDebug("Syncing succesful! "); 2246 qDebug("Syncing succesful! ");
2216 setCaption( i18n("Easy-Pi-Sync succesful!") ); 2247 setCaption( i18n("Pi-Sync succesful!") );
2217 2248
2218 2249
2219} 2250}
2220 2251
2221void MainWindow::syncLocalFile() 2252void MainWindow::syncLocalFile()
2222{ 2253{
2223 2254
2224 QString fn =KOPrefs::instance()->mLastSyncedLocalFile; 2255 QString fn =KOPrefs::instance()->mLastSyncedLocalFile;
2225 2256
2226 fn =KFileDialog:: getOpenFileName( fn, i18n("Sync filename(*.ics/*.vcs)"), this ); 2257 fn =KFileDialog:: getOpenFileName( fn, i18n("Sync filename(*.ics/*.vcs)"), this );
2227 if ( fn == "" ) 2258 if ( fn == "" )
2228 return; 2259 return;
2229 //mView->setSyncDevice("local-file" ); 2260 //mView->setSyncDevice("local-file" );
2230 if ( syncWithFile( fn, false ) ) { 2261 if ( syncWithFile( fn, false ) ) {
2231 // Event* e = mView->getLastSyncEvent(); 2262 // Event* e = mView->getLastSyncEvent();
2232// e->setReadOnly( false ); 2263// e->setReadOnly( false );
2233// e->setLocation( i18n("Local file: ")+ KOPrefs::instance()->mLastSyncedLocalFile); 2264// e->setLocation( i18n("Local file: ")+ KOPrefs::instance()->mLastSyncedLocalFile);
2234// e->setReadOnly( true ); 2265// e->setReadOnly( true );
2235 } 2266 }
2236 2267
2237} 2268}
2238 2269
2239bool MainWindow::syncWithFile( QString fn , bool quick ) 2270bool MainWindow::syncWithFile( QString fn , bool quick )
2240{ 2271{
2241 bool ret = false; 2272 bool ret = false;
2242 QFileInfo info; 2273 QFileInfo info;
2243 info.setFile( fn ); 2274 info.setFile( fn );
2244 QString mess; 2275 QString mess;
2245 bool loadbup = true; 2276 bool loadbup = true;
2246 if ( !info. exists() ) { 2277 if ( !info. exists() ) {
2247 mess = i18n( "Sync file \n...%1\ndoes not exist!\nNothing synced!\n").arg(fn.right( 30) ); 2278 mess = i18n( "Sync file \n...%1\ndoes not exist!\nNothing synced!\n").arg(fn.right( 30) );
2248 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"), 2279 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),
2249 mess ); 2280 mess );
2250 return ret; 2281 return ret;
2251 } 2282 }
2252 int result = 0; 2283 int result = 0;
2253 if ( !quick ) { 2284 if ( !quick ) {
2254 mess = i18n("Sync with file \n...%1\nfrom:\n%2\n").arg(fn.right( 25)).arg(KGlobal::locale()->formatDateTime(info.lastModified (), true, false )); 2285 mess = i18n("Sync with file \n...%1\nfrom:\n%2\n").arg(fn.right( 25)).arg(KGlobal::locale()->formatDateTime(info.lastModified (), true, false ));
2255 result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"), 2286 result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),
2256 mess, 2287 mess,
2257 i18n("Sync"), i18n("Cancel"), 0, 2288 i18n("Sync"), i18n("Cancel"), 0,
2258 0, 1 ); 2289 0, 1 );
2259 if ( result ) 2290 if ( result )
2260 return false; 2291 return false;
2261 } 2292 }
2262 if ( KOPrefs::instance()->mAskForPreferences ) 2293 if ( KOPrefs::instance()->mAskForPreferences )
2263 mView->edit_sync_options(); 2294 mView->edit_sync_options();
2264 if ( result == 0 ) { 2295 if ( result == 0 ) {
2265 //qDebug("Now sycing ... "); 2296 //qDebug("Now sycing ... ");
2266 if ( ret = mView->syncCalendar( fn, KOPrefs::instance()->mSyncAlgoPrefs ) ) 2297 if ( ret = mView->syncCalendar( fn, KOPrefs::instance()->mSyncAlgoPrefs ) )
2267 setCaption( i18n("Synchronization successful") ); 2298 setCaption( i18n("Synchronization successful") );
2268 else 2299 else
2269 setCaption( i18n("Sync cancelled or failed. Nothing synced.") ); 2300 setCaption( i18n("Sync cancelled or failed. Nothing synced.") );
2270 if ( ! quick ) 2301 if ( ! quick )
2271 KOPrefs::instance()->mLastSyncedLocalFile = fn; 2302 KOPrefs::instance()->mLastSyncedLocalFile = fn;
2272 slotModifiedChanged( true ); 2303 slotModifiedChanged( true );
2273 } 2304 }
2274 return ret; 2305 return ret;
2275} 2306}
2276void MainWindow::quickSyncLocalFile() 2307void MainWindow::quickSyncLocalFile()
2277{ 2308{
2278 //mView->setSyncDevice("local-file" ); 2309 //mView->setSyncDevice("local-file" );
2279 //qDebug("quickSyncLocalFile() "); 2310 //qDebug("quickSyncLocalFile() ");
2280 if ( syncWithFile( KOPrefs::instance()->mLastSyncedLocalFile, false ) ) { 2311 if ( syncWithFile( KOPrefs::instance()->mLastSyncedLocalFile, false ) ) {
2281 // Event* e = mView->getLastSyncEvent(); 2312 // Event* e = mView->getLastSyncEvent();
2282// e->setReadOnly( false ); 2313// e->setReadOnly( false );
2283// e->setLocation( i18n("Quick with file: ")+ KOPrefs::instance()->mLastSyncedLocalFile); 2314// e->setLocation( i18n("Quick with file: ")+ KOPrefs::instance()->mLastSyncedLocalFile);
2284// e->setReadOnly( true ); 2315// e->setReadOnly( true );
2285 2316
2286 } 2317 }
2287} 2318}
2288 2319
2289void MainWindow::confSync() 2320void MainWindow::confSync()
2290{ 2321{
2291 mView->confSync(); 2322 mView->confSync();
2292 fillSyncMenu(); 2323 fillSyncMenu();
2293} 2324}
2294void MainWindow::syncRemote( KSyncProfile* prof, bool ask) 2325void MainWindow::syncRemote( KSyncProfile* prof, bool ask)
2295{ 2326{
2296 QString question; 2327 QString question;
2297 if ( ask ) { 2328 if ( ask ) {
2298 question = i18n("Do you really want\nto remote sync\nwith profile \n")+ prof->getName()+" ?\n"; 2329 question = i18n("Do you really want\nto remote sync\nwith profile \n")+ prof->getName()+" ?\n";
2299 if ( QMessageBox::information( this, i18n("KO/Pi Sync"), 2330 if ( QMessageBox::information( this, i18n("KO/Pi Sync"),
2300 question, 2331 question,
2301 i18n("Yes"), i18n("No"), 2332 i18n("Yes"), i18n("No"),
2302 0, 0 ) != 0 ) 2333 0, 0 ) != 0 )
2303 return; 2334 return;
2304 } 2335 }
2305 QString command = prof->getPreSyncCommand(); 2336 QString command = prof->getPreSyncCommand();
2306 int fi; 2337 int fi;
2307 if ( (fi = command.find("$PWD$")) > 0 ) { 2338 if ( (fi = command.find("$PWD$")) > 0 ) {
2308 QString pwd = getPassword(); 2339 QString pwd = getPassword();
2309 command = command.left( fi )+ pwd + command.mid( fi+5 ); 2340 command = command.left( fi )+ pwd + command.mid( fi+5 );
2310 2341
2311 } 2342 }
2312 int maxlen = 30; 2343 int maxlen = 30;
2313 if ( QApplication::desktop()->width() > 320 ) 2344 if ( QApplication::desktop()->width() > 320 )
2314 maxlen += 25; 2345 maxlen += 25;
2315 setCaption ( i18n( "Copy remote file to local machine..." ) ); 2346 setCaption ( i18n( "Copy remote file to local machine..." ) );
2316 int fileSize = 0; 2347 int fileSize = 0;
2317 int result = system ( command ); 2348 int result = system ( command );
2318 // 0 : okay 2349 // 0 : okay
2319 // 256: no such file or dir 2350 // 256: no such file or dir
2320 // 2351 //
2321 qDebug("KO: Remote copy result(0 = okay): %d ",result ); 2352 qDebug("KO: Remote copy result(0 = okay): %d ",result );
2322 if ( result != 0 ) { 2353 if ( result != 0 ) {
2323 int len = maxlen; 2354 int len = maxlen;
2324 while ( len < command.length() ) { 2355 while ( len < command.length() ) {
2325 command.insert( len , "\n" ); 2356 command.insert( len , "\n" );
2326 len += maxlen +2; 2357 len += maxlen +2;
2327 } 2358 }
2328 question = i18n("Sorry, the copy command failed!\nCommand was:\n%1\n \nTry command on console to get more\ndetailed info about the reason.\n").arg (command) ; 2359 question = i18n("Sorry, the copy command failed!\nCommand was:\n%1\n \nTry command on console to get more\ndetailed info about the reason.\n").arg (command) ;
2329 QMessageBox::information( this, i18n("KO/Pi Sync - ERROR"), 2360 QMessageBox::information( this, i18n("KO/Pi Sync - ERROR"),
2330 question, 2361 question,
2331 i18n("Okay!")) ; 2362 i18n("Okay!")) ;
2332 setCaption ("KO/Pi"); 2363 setCaption ("KO/Pi");
2333 return; 2364 return;
2334 } 2365 }
2335 setCaption ( i18n( "Copying succeed." ) ); 2366 setCaption ( i18n( "Copying succeed." ) );
2336 //qDebug(" file **%s** ",prof->getLocalTempFile().latin1() ); 2367 //qDebug(" file **%s** ",prof->getLocalTempFile().latin1() );
2337 if ( syncWithFile( prof->getLocalTempFile(), true ) ) { 2368 if ( syncWithFile( prof->getLocalTempFile(), true ) ) {
2338// Event* e = mView->getLastSyncEvent(); 2369// Event* e = mView->getLastSyncEvent();
2339// e->setReadOnly( false ); 2370// e->setReadOnly( false );
2340// e->setLocation( KOPrefs::instance()->mSyncProfileNames[mCurrentSyncProfile]); 2371// e->setLocation( KOPrefs::instance()->mSyncProfileNames[mCurrentSyncProfile]);
2341// e->setReadOnly( true ); 2372// e->setReadOnly( true );
2342 if ( KOPrefs::instance()->mWriteBackFile ) { 2373 if ( KOPrefs::instance()->mWriteBackFile ) {
2343 command = prof->getPostSyncCommand(); 2374 command = prof->getPostSyncCommand();
2344 int fi; 2375 int fi;
@@ -2371,191 +2402,201 @@ void MainWindow::syncSSH()
2371 QString remoteIP = p->mRemoteIP; 2402 QString remoteIP = p->mRemoteIP;
2372 QString remoteUser = p->mRemoteUser; 2403 QString remoteUser = p->mRemoteUser;
2373 QString remoteFile = p->mRemoteFile; 2404 QString remoteFile = p->mRemoteFile;
2374 if ( p->mUsePassWd && p->mRemotePassWd.length() > 0 ) 2405 if ( p->mUsePassWd && p->mRemotePassWd.length() > 0 )
2375 remoteUser += ":" + p->mRemotePassWd; 2406 remoteUser += ":" + p->mRemotePassWd;
2376 2407
2377 QString question = i18n("Do you really want\nto remote sync?\n \n") + 2408 QString question = i18n("Do you really want\nto remote sync?\n \n") +
2378 i18n("IP: " ) +remoteIP +"\n" + 2409 i18n("IP: " ) +remoteIP +"\n" +
2379 i18n("User: " ) + remoteUser +"\n" ; 2410 i18n("User: " ) + remoteUser +"\n" ;
2380 int maxlen = 30; 2411 int maxlen = 30;
2381 if ( QApplication::desktop()->width() > 320 ) 2412 if ( QApplication::desktop()->width() > 320 )
2382 maxlen += 25; 2413 maxlen += 25;
2383 if ( remoteFile.length() > maxlen ) 2414 if ( remoteFile.length() > maxlen )
2384 question += i18n("Remote file:\n..." ) + remoteFile.right(maxlen) +"\n"; 2415 question += i18n("Remote file:\n..." ) + remoteFile.right(maxlen) +"\n";
2385 else 2416 else
2386 question += i18n("Remote file:\n " ) + remoteFile +"\n"; 2417 question += i18n("Remote file:\n " ) + remoteFile +"\n";
2387 if ( localFile.length() > maxlen ) 2418 if ( localFile.length() > maxlen )
2388 question += i18n("Local temp file:\n..." ) + localFile.right(maxlen) +"\n"; 2419 question += i18n("Local temp file:\n..." ) + localFile.right(maxlen) +"\n";
2389 else 2420 else
2390 question += i18n("Local temp file:\n " ) + localFile +"\n"; 2421 question += i18n("Local temp file:\n " ) + localFile +"\n";
2391 2422
2392 if ( QMessageBox::information( this, i18n("KO/Pi Sync"), 2423 if ( QMessageBox::information( this, i18n("KO/Pi Sync"),
2393 question, 2424 question,
2394 i18n("Yes"), i18n("No"), 2425 i18n("Yes"), i18n("No"),
2395 0, 0 ) != 0 ) 2426 0, 0 ) != 0 )
2396 return; 2427 return;
2397 // if ( !p->mUsePassWd ) { 2428 // if ( !p->mUsePassWd ) {
2398 // QString pass = getPassword(); 2429 // QString pass = getPassword();
2399 // if ( pass.length() > 0 ) 2430 // if ( pass.length() > 0 )
2400 // remoteUser += ":" + pass; 2431 // remoteUser += ":" + pass;
2401 // } 2432 // }
2402 QString command = "scp " + remoteUser + "@" + remoteIP +":" + remoteFile +" " +localFile; 2433 QString command = "scp " + remoteUser + "@" + remoteIP +":" + remoteFile +" " +localFile;
2403 setCaption ( i18n( "Copy remote file to local machine..." ) ); 2434 setCaption ( i18n( "Copy remote file to local machine..." ) );
2404 int fileSize = 0; 2435 int fileSize = 0;
2405 int result = system ( command ); 2436 int result = system ( command );
2406 // 0 : okay 2437 // 0 : okay
2407 // 256: no such file or dir 2438 // 256: no such file or dir
2408 // 2439 //
2409 qDebug("KO: Remote copy result(0 = okay): %d ",result ); 2440 qDebug("KO: Remote copy result(0 = okay): %d ",result );
2410 if ( result != 0 ) { 2441 if ( result != 0 ) {
2411 int len = maxlen; 2442 int len = maxlen;
2412 while ( len < command.length() ) { 2443 while ( len < command.length() ) {
2413 command.insert( len , "\n" ); 2444 command.insert( len , "\n" );
2414 len += maxlen +2; 2445 len += maxlen +2;
2415 } 2446 }
2416 question = i18n("Sorry, the copy command failed!\nCommand was:\n%1\n \nTry command on console to get more\ndetailed info about the reason.\n").arg (command) ; 2447 question = i18n("Sorry, the copy command failed!\nCommand was:\n%1\n \nTry command on console to get more\ndetailed info about the reason.\n").arg (command) ;
2417 QMessageBox::information( this, i18n("KO/Pi Sync - ERROR"), 2448 QMessageBox::information( this, i18n("KO/Pi Sync - ERROR"),
2418 question, 2449 question,
2419 i18n("Okay!")) ; 2450 i18n("Okay!")) ;
2420 setCaption ("KO/Pi"); 2451 setCaption ("KO/Pi");
2421 return; 2452 return;
2422 } 2453 }
2423 2454
2424 2455
2425 setCaption ( i18n( "Copying succeed." ) ); 2456 setCaption ( i18n( "Copying succeed." ) );
2426 //mView->setSyncDevice("ssh-scp" ); 2457 //mView->setSyncDevice("ssh-scp" );
2427 if ( syncWithFile(localFile , true ) ) { 2458 if ( syncWithFile(localFile , true ) ) {
2428// Event* e = mView->getLastSyncEvent(); 2459// Event* e = mView->getLastSyncEvent();
2429// e->setReadOnly( false ); 2460// e->setReadOnly( false );
2430// e->setLocation( KOPrefs::instance()->mSyncProfileNames[mCurrentSyncProfile]); 2461// e->setLocation( KOPrefs::instance()->mSyncProfileNames[mCurrentSyncProfile]);
2431// e->setReadOnly( true ); 2462// e->setReadOnly( true );
2432 if ( KOPrefs::instance()->mWriteBackFile ) { 2463 if ( KOPrefs::instance()->mWriteBackFile ) {
2433 command = "scp " + localFile +" " +remoteUser + "@" + remoteIP +":" + remoteFile ; 2464 command = "scp " + localFile +" " +remoteUser + "@" + remoteIP +":" + remoteFile ;
2434 setCaption ( i18n( "Writing back file ..." ) ); 2465 setCaption ( i18n( "Writing back file ..." ) );
2435 result = system ( command ); 2466 result = system ( command );
2436 if ( result != 0 ) { 2467 if ( result != 0 ) {
2437 int len = maxlen; 2468 int len = maxlen;
2438 while ( len < command.length() ) { 2469 while ( len < command.length() ) {
2439 command.insert( len , "\n" ); 2470 command.insert( len , "\n" );
2440 len += maxlen +2; 2471 len += maxlen +2;
2441 } 2472 }
2442 question = i18n("Sorry, the copy back command failed!\nCommand was:\n%1\n \nTry command on console to get more\ndetailed info about the reason.\n").arg (command) ; 2473 question = i18n("Sorry, the copy back command failed!\nCommand was:\n%1\n \nTry command on console to get more\ndetailed info about the reason.\n").arg (command) ;
2443 QMessageBox::information( this, i18n("KO/Pi Sync - ERROR"), 2474 QMessageBox::information( this, i18n("KO/Pi Sync - ERROR"),
2444 question, 2475 question,
2445 i18n("Okay!")) ; 2476 i18n("Okay!")) ;
2446 setCaption ("KO/Pi"); 2477 setCaption ("KO/Pi");
2447 return; 2478 return;
2448 } else { 2479 } else {
2449 setCaption ( i18n( "Syncronization sucessfully completed" ) ); 2480 setCaption ( i18n( "Syncronization sucessfully completed" ) );
2450 } 2481 }
2451 } 2482 }
2452 } 2483 }
2453 return; 2484 return;
2454#if 0 2485#if 0
2455 system ("scp zaurus@192.168.0.65:/home/zaurus/Applications/korganizer/mycalendar.ics /home/polo/Applications/korganizer/z_sync.ics"); 2486 system ("scp zaurus@192.168.0.65:/home/zaurus/Applications/korganizer/mycalendar.ics /home/polo/Applications/korganizer/z_sync.ics");
2456 while ( timer.elapsed() < 5000 ) 2487 while ( timer.elapsed() < 5000 )
2457 qApp->processEvents(); 2488 qApp->processEvents();
2458 2489
2459 qDebug("MainWindow::merging) "); 2490 qDebug("MainWindow::merging) ");
2460 mView->syncCalendar( "/home/polo/Applications/korganizer/z_sync.ics", 0 ); 2491 mView->syncCalendar( "/home/polo/Applications/korganizer/z_sync.ics", 0 );
2461 while ( mBlockSaveFlag ) 2492 while ( mBlockSaveFlag )
2462 qApp->processEvents(); 2493 qApp->processEvents();
2463 save(); 2494 save();
2464 system ("scp /home/polo/Applications/korganizer/mycalendar.ics zaurus@192.168.0.65:/home/zaurus/Applications/korganizer/mycalendar.ics"); 2495 system ("scp /home/polo/Applications/korganizer/mycalendar.ics zaurus@192.168.0.65:/home/zaurus/Applications/korganizer/mycalendar.ics");
2465#endif 2496#endif
2466 2497
2467} 2498}
2468 2499
2469 2500
2470void MainWindow::syncSharp() 2501void MainWindow::syncSharp()
2471{ 2502{
2472 if ( mCalendarModifiedFlag ) 2503 if ( mCalendarModifiedFlag )
2473 save(); 2504 save();
2474 mView->syncSharp(); 2505 mView->syncSharp();
2475 slotModifiedChanged( true ); 2506 slotModifiedChanged( true );
2476 2507
2477} 2508}
2478void MainWindow::syncPhone() 2509void MainWindow::syncPhone()
2479{ 2510{
2480 if ( mCalendarModifiedFlag ) 2511 if ( mCalendarModifiedFlag )
2481 save(); 2512 save();
2482 mView->syncPhone(); 2513 mView->syncPhone();
2483 slotModifiedChanged( true ); 2514 slotModifiedChanged( true );
2484 2515
2485} 2516}
2486 2517
2487void MainWindow::printSel( ) 2518void MainWindow::printSel( )
2488{ 2519{
2489 mView->viewManager()->agendaView()->agenda()->printSelection(); 2520 mView->viewManager()->agendaView()->agenda()->printSelection();
2490} 2521}
2491 2522
2492void MainWindow::printCal() 2523void MainWindow::printCal()
2493{ 2524{
2494 mView->print();//mCp->showDialog(); 2525 mView->print();//mCp->showDialog();
2495} 2526}
2496 2527
2497 2528
2498 2529
2499KServerSocket:: KServerSocket ( Q_UINT16 port, int backlog, QObject * parent, const char * name ) : QServerSocket( port, backlog, parent, name ) 2530KServerSocket:: KServerSocket ( QString pw, Q_UINT16 port, int backlog, QObject * parent, const char * name ) : QServerSocket( port, backlog, parent, name )
2500{ 2531{
2501 2532 mPassWord = pw;
2502 mSocket = 0; 2533 mSocket = 0;
2503}; 2534};
2504 2535
2505void KServerSocket::newConnection ( int socket ) 2536void KServerSocket::newConnection ( int socket )
2506{ 2537{
2507 qDebug("KServerSocket:New connection %d ", socket); 2538 qDebug("KServerSocket:New connection %d ", socket);
2508 if ( mSocket ) { 2539 if ( mSocket ) {
2509 qDebug("KServerSocket::newConnection Socket deleted! "); 2540 qDebug("KServerSocket::newConnection Socket deleted! ");
2510 delete mSocket; 2541 delete mSocket;
2511 mSocket = 0; 2542 mSocket = 0;
2512 } 2543 }
2513 mSocket = new QSocket( this ); 2544 mSocket = new QSocket( this );
2514 connect( mSocket , SIGNAL(readyRead()), this, SLOT(readClient()) ); 2545 connect( mSocket , SIGNAL(readyRead()), this, SLOT(readClient()) );
2515 connect( mSocket , SIGNAL(delayedCloseFinished()), this, SLOT(discardClient()) ); 2546 connect( mSocket , SIGNAL(delayedCloseFinished()), this, SLOT(discardClient()) );
2516 mSocket->setSocket( socket ); 2547 mSocket->setSocket( socket );
2517} 2548}
2518 2549
2519void KServerSocket::discardClient() 2550void KServerSocket::discardClient()
2520{ 2551{
2521 qDebug(" KServerSocket::discardClient()"); 2552 qDebug(" KServerSocket::discardClient()");
2522 if ( mSocket ) { 2553 if ( mSocket ) {
2523 qDebug("delete "); 2554 qDebug("delete ");
2524 delete mSocket; 2555 delete mSocket;
2525 mSocket = 0; 2556 mSocket = 0;
2526 } 2557 }
2527 //emit endConnect(); 2558 //emit endConnect();
2528} 2559}
2529void KServerSocket::readClient() 2560void KServerSocket::readClient()
2530{ 2561{
2531 if ( mSocket == 0 ) { 2562 if ( mSocket == 0 ) {
2532 qDebug("ERROR::KServerSocket::readClient(): mSocket == 0 "); 2563 qDebug("ERROR::KServerSocket::readClient(): mSocket == 0 ");
2533 return; 2564 return;
2534 } 2565 }
2535 qDebug("KServerSocket readClient()"); 2566 qDebug("KServerSocket readClient()");
2536 if ( mSocket->canReadLine() ) { 2567 if ( mSocket->canReadLine() ) {
2537 QStringList tokens = QStringList::split( QRegExp("[ \r\n][ \r\n]*"), mSocket->readLine() ); 2568 QStringList tokens = QStringList::split( QRegExp("[ \r\n][ \r\n]*"), mSocket->readLine() );
2538 qDebug("KServerSocket socket->canReadLine()"); 2569 qDebug("KServerSocket socket->canReadLine()");
2539 if ( tokens[0] == "GET" ) { 2570 if ( tokens[0] == "GET" ) {
2540 emit sendFile( mSocket ); 2571 if ( tokens[1] == mPassWord )
2572 emit sendFile( mSocket );
2573 else {
2574 KMessageBox::information( 0, i18n("ERROR:\nGot send file request\nwith invalid password"));
2575 qDebug("password %s, invalid password %s ",mPassWord.latin1(), tokens[1].latin1() );
2576 }
2541 } 2577 }
2542 if ( tokens[0] == "PUT" ) { 2578 if ( tokens[0] == "PUT" ) {
2543 emit getFile( mSocket ); 2579 if ( tokens[1] == mPassWord )
2580 emit getFile( mSocket );
2581 else {
2582 KMessageBox::information( 0, i18n("ERROR:\nGot receive file request\nwith invalid password"));
2583 qDebug("password %s, invalid password %s ",mPassWord.latin1(), tokens[1].latin1() );
2584 }
2544 } 2585 }
2545 if ( tokens[0] == "STOP" ) { 2586 if ( tokens[0] == "STOP" ) {
2546 emit endConnect(); 2587 emit endConnect();
2547 } 2588 }
2548 } 2589 }
2549} 2590}
2550 2591
2551 2592
2552 2593
2553 2594
2554 2595
2555 2596
2556 2597
2557 2598
2558 2599
2559 2600
2560 2601
2561 2602
diff --git a/korganizer/mainwindow.h b/korganizer/mainwindow.h
index cc656a3..d217578 100644
--- a/korganizer/mainwindow.h
+++ b/korganizer/mainwindow.h
@@ -1,161 +1,173 @@
1#ifndef KORGE_MAINWINDOW_H 1#ifndef KORGE_MAINWINDOW_H
2#define KORGE_MAINWINDOW_H 2#define KORGE_MAINWINDOW_H
3 3
4#include <qmainwindow.h> 4#include <qmainwindow.h>
5#include <qtimer.h> 5#include <qtimer.h>
6#include <qdict.h> 6#include <qdict.h>
7#include <qfile.h>
8#include <qsocket.h>
9#include <qtextstream.h>
7#include <qregexp.h> 10#include <qregexp.h>
8 11
9#include <libkcal/incidence.h> 12#include <libkcal/incidence.h>
10#include "simplealarmclient.h" 13#include "simplealarmclient.h"
11 14
12class QAction; 15class QAction;
13class CalendarView; 16class CalendarView;
14class KSyncProfile; 17class KSyncProfile;
15#ifdef DESKTOP_VERSION 18#ifdef DESKTOP_VERSION
16 19
17#define QPEToolBar QToolBar 20#define QPEToolBar QToolBar
18#define QPEMenuBar QMenuBar 21#define QPEMenuBar QMenuBar
19#endif 22#endif
20class QPEToolBar; 23class QPEToolBar;
21#include <qserversocket.h> 24#include <qserversocket.h>
22#include <qsocket.h> 25#include <qsocket.h>
23#include <qnetworkprotocol.h> 26#include <qnetworkprotocol.h>
24 27
25class KServerSocket : public QServerSocket 28class KServerSocket : public QServerSocket
26{ 29{
27 Q_OBJECT 30 Q_OBJECT
28 31
29public: 32public:
30 KServerSocket ( Q_UINT16 port, int backlog = 0, QObject * parent=0, const char * name=0 ); 33 KServerSocket ( QString password, Q_UINT16 port, int backlog = 0, QObject * parent=0, const char * name=0 );
31 34
32 void newConnection ( int socket ) ; 35 void newConnection ( int socket ) ;
33 36
34signals: 37signals:
35 void sendFile(QSocket*); 38 void sendFile(QSocket*);
36 void getFile(QSocket*); 39 void getFile(QSocket*);
37 void endConnect(); 40 void endConnect();
38private slots: 41private slots:
39 void discardClient(); 42 void discardClient();
40 void readClient(); 43 void readClient();
41 private : 44 private :
42 QSocket* mSocket; 45 QSocket* mSocket;
46 QString mPassWord;
43}; 47};
44 48
45 49
46namespace KCal { 50namespace KCal {
47class CalendarLocal; 51class CalendarLocal;
48} 52}
49 53
50using namespace KCal; 54using namespace KCal;
51 55
52class MainWindow : public QMainWindow 56class MainWindow : public QMainWindow
53{ 57{
54 Q_OBJECT 58 Q_OBJECT
55 public: 59 public:
56 MainWindow( QWidget *parent = 0, const char *name = 0, QString command = ""); 60 MainWindow( QWidget *parent = 0, const char *name = 0, QString command = "");
57 ~MainWindow(); 61 ~MainWindow();
58 public slots: 62 public slots:
59 virtual void showMaximized (); 63 virtual void showMaximized ();
60 void configureAgenda( int ); 64 void configureAgenda( int );
61 void recieve( const QCString& msg, const QByteArray& data ); 65 void recieve( const QCString& msg, const QByteArray& data );
62 static QString defaultFileName(); 66 static QString defaultFileName();
63 static QString resourcePath(); 67 static QString resourcePath();
64 protected slots: 68 protected slots:
65 void setCaptionToDates(); 69 void setCaptionToDates();
66 int ringSync(); 70 int ringSync();
67 void multiSync( bool askforPrefs = false ); 71 void multiSync( bool askforPrefs = false );
68 void about(); 72 void about();
69 void licence(); 73 void licence();
70 void faq(); 74 void faq();
71 void usertrans(); 75 void usertrans();
72 void features(); 76 void features();
73 void synchowto(); 77 void synchowto();
74 void whatsNew(); 78 void whatsNew();
75 void keyBindings(); 79 void keyBindings();
76 void aboutAutoSaving();; 80 void aboutAutoSaving();;
77 void aboutKnownBugs(); 81 void aboutKnownBugs();
78 82
79 void processIncidenceSelection( Incidence * ); 83 void processIncidenceSelection( Incidence * );
80 84
81 void importQtopia(); 85 void importQtopia();
82 void importBday(); 86 void importBday();
83 void importOL(); 87 void importOL();
84 void importIcal(); 88 void importIcal();
85 void importFile( QString, bool ); 89 void importFile( QString, bool );
86 void quickImportIcal(); 90 void quickImportIcal();
87 91
88 void slotModifiedChanged( bool ); 92 void slotModifiedChanged( bool );
89 93
90 void save(); 94 void save();
91 void configureToolBar( int ); 95 void configureToolBar( int );
92 void printSel(); 96 void printSel();
93 void printCal(); 97 void printCal();
94 void saveCalendar(); 98 void saveCalendar();
95 void loadCalendar(); 99 void loadCalendar();
96 void exportVCalendar(); 100 void exportVCalendar();
97 void fillFilterMenu(); 101 void fillFilterMenu();
98 void selectFilter( int ); 102 void selectFilter( int );
99 103
100 void slotSyncMenu( int ); 104 void slotSyncMenu( int );
101 void syncSSH(); 105 void syncSSH();
102 void confSync(); 106 void confSync();
103 void syncSharp(); 107 void syncSharp();
104 void syncPhone(); 108 void syncPhone();
105 void syncLocalFile(); 109 void syncLocalFile();
106 bool syncWithFile( QString, bool ); 110 bool syncWithFile( QString, bool );
107 void quickSyncLocalFile(); 111 void quickSyncLocalFile();
108 112
109 113
110 protected: 114 protected:
111 void displayText( QString, QString); 115 void displayText( QString, QString);
112 void displayFile( QString, QString); 116 void displayFile( QString, QString);
113 117
114 void enableIncidenceActions( bool ); 118 void enableIncidenceActions( bool );
115 119
116 private slots: 120 private slots:
121 QSocket* piSocket;
122 QString piFileString;
123 QTime piTime;
124 void deleteCommandSocket();
125 void deleteCommandSocketFinish();
117 void fillSyncMenu(); 126 void fillSyncMenu();
118 void sendFile(QSocket* s); 127 void sendFile(QSocket* s);
119 void getFile(QSocket* socket); 128 void getFile(QSocket* socket);
120 void readFileFromSocket(); 129 void readFileFromSocket();
130 void readBackFileFromSocket();
121 void endConnect(); 131 void endConnect();
122 private: 132 private:
133 QTimer* mTimerCommandSocket;
134 QString mPassWordPiSync;
123 QSocket* mCommandSocket; 135 QSocket* mCommandSocket;
124 QSocket* mCommandSocketFinish; 136 QSocket* mCommandSocketFinish;
125 KServerSocket * mServerSocket; 137 KServerSocket * mServerSocket;
126 bool mClosed; 138 bool mClosed;
127 void saveOnClose(); 139 void saveOnClose();
128 int mCurrentSyncProfile; 140 int mCurrentSyncProfile;
129 void enableQuick(); 141 void enableQuick();
130 void performQuick(); 142 void performQuick();
131 void performQuickQuick(); 143 void performQuickQuick();
132 void syncRemote( KSyncProfile* , bool ask = true); 144 void syncRemote( KSyncProfile* , bool ask = true);
133 bool mFlagKeyPressed; 145 bool mFlagKeyPressed;
134 bool mBlockAtStartup; 146 bool mBlockAtStartup;
135 QPEToolBar *iconToolBar; 147 QPEToolBar *iconToolBar;
136 void initActions(); 148 void initActions();
137 void setDefaultPreferences(); 149 void setDefaultPreferences();
138 void keyPressEvent ( QKeyEvent * ) ; 150 void keyPressEvent ( QKeyEvent * ) ;
139 void keyReleaseEvent ( QKeyEvent * ) ; 151 void keyReleaseEvent ( QKeyEvent * ) ;
140 QPopupMenu *configureToolBarMenu; 152 QPopupMenu *configureToolBarMenu;
141 QPopupMenu *selectFilterMenu; 153 QPopupMenu *selectFilterMenu;
142 QPopupMenu *configureAgendaMenu, *syncMenu; 154 QPopupMenu *configureAgendaMenu, *syncMenu;
143 CalendarLocal *mCalendar; 155 CalendarLocal *mCalendar;
144 CalendarView *mView; 156 CalendarView *mView;
145 QString getPassword(); 157 QString getPassword();
146 QAction *mNewSubTodoAction; 158 QAction *mNewSubTodoAction;
147 159
148 QAction *mShowAction; 160 QAction *mShowAction;
149 QAction *mEditAction; 161 QAction *mEditAction;
150 QAction *mDeleteAction; 162 QAction *mDeleteAction;
151 void closeEvent( QCloseEvent* ce ); 163 void closeEvent( QCloseEvent* ce );
152 SimpleAlarmClient mAlarmClient; 164 SimpleAlarmClient mAlarmClient;
153 QTimer mSaveTimer; 165 QTimer mSaveTimer;
154 bool mBlockSaveFlag; 166 bool mBlockSaveFlag;
155 bool mCalendarModifiedFlag; 167 bool mCalendarModifiedFlag;
156 QPixmap loadPixmap( QString ); 168 QPixmap loadPixmap( QString );
157 QDialog * mSyncActionDialog; 169 QDialog * mSyncActionDialog;
158}; 170};
159 171
160 172
161#endif 173#endif