summaryrefslogtreecommitdiffabout
path: root/kabc/syncprefwidget.cpp
Unidiff
Diffstat (limited to 'kabc/syncprefwidget.cpp') (more/less context) (show whitespace changes)
-rw-r--r--kabc/syncprefwidget.cpp581
1 files changed, 248 insertions, 333 deletions
diff --git a/kabc/syncprefwidget.cpp b/kabc/syncprefwidget.cpp
index 51a8040..a2bde72 100644
--- a/kabc/syncprefwidget.cpp
+++ b/kabc/syncprefwidget.cpp
@@ -22,304 +22,157 @@
22*/ 22*/
23 23
24/* 24/*
25$Id$ 25$Id$
26*/ 26*/
27 27
28/*US
29#include <qlayout.h>
30#include <qlabel.h>
31#include <qgroupbox.h>
32#include <qbuttongroup.h>
33#include <qlineedit.h>
34#include <qfont.h>
35#include <qslider.h>
36#include <qfile.h>
37#include <qtextstream.h>
38#include <qcombobox.h>
39#include <qvbox.h>
40#include <qhbox.h>
41#include <qspinbox.h>
42#include <qdatetime.h>
43#include <qcheckbox.h>
44#include <qradiobutton.h>
45#include <qpushbutton.h>
46#include <qstrlist.h>
47#include <qapplication.h>
48
49#include <kcolorbutton.h>
50#include <kdebug.h>
51#include <klocale.h>
52#include <kglobal.h>
53#include <kfontdialog.h>
54#include <kmessagebox.h>
55#include <kcolordialog.h>
56#include <kiconloader.h>
57#include <kemailsettings.h>
58#include <kstandarddirs.h>
59#include <kfiledialog.h>
60#include <kmessagebox.h>
61
62#include <kurlrequester.h>
63#include <klineedit.h>
64#include <libkdepim/ksyncprofile.h>
65
66
67#include "koprefs.h"
68
69#include "kosyncprefsdialog.h"
70#include "koglobals.h"
71*/
72 28
73#include <qlayout.h> 29#include <qlayout.h>
74#include <qbuttongroup.h> 30#include <qbuttongroup.h>
75#include <qcheckbox.h> 31#include <qcheckbox.h>
76#include <qradiobutton.h> 32#include <qradiobutton.h>
77#include <qvbox.h> 33#include <qvbox.h>
78#include <qhbox.h> 34#include <qhbox.h>
79#include <qlabel.h> 35#include <qlabel.h>
80#include <qlineedit.h> 36#include <qlineedit.h>
81#include <qpushbutton.h> 37#include <qpushbutton.h>
38#include <qscrollview.h>
39#include <qcombobox.h>
82 40
83 41
84#include <klocale.h> 42#include <klocale.h>
85#include <kdialog.h> 43#include <kdialog.h>
86 44
87 45#include "ksyncprofile.h"
46#include "resource.h"
88#include "syncprefwidget.h" 47#include "syncprefwidget.h"
89 48
90 49
91SyncPrefWidget::SyncPrefWidget(QWidget *parent) : 50SyncPrefWidget_Settings::SyncPrefWidget_Settings(QWidget *parent, const char *name) :
92 KRES::SyncWidget(parent) 51 KRES::SyncWidget(parent, name)
93{ 52{
94
95//US setCaption( i18n("Synchronization Preferences"));
96
97//US mSyncProfiles.setAutoDelete( true );
98 init(); 53 init();
99} 54}
100 55
101 56
102SyncPrefWidget::~SyncPrefWidget() 57SyncPrefWidget_Settings::~SyncPrefWidget_Settings()
103{ 58{
104} 59}
105 60
106//US #include <qlayout.h> 61void SyncPrefWidget_Settings::init()
107//US #include <qscrollview.h>
108void SyncPrefWidget::init()
109{ 62{
110 QLabel * lab;
111 QPushButton* button;
112
113/*US
114 //QFrame *page = addPage(i18n("Sync Prefs"),0,0);
115 QVBox * mainbox = new QVBox( this );
116 QScrollView* sv = new QScrollView( mainbox );
117 QHBoxLayout * lay = new QHBoxLayout( this );
118 lay->addWidget( mainbox );
119 QHBox * b_box = new QHBox( mainbox );
120*/
121/*US
122 QPushButton* button = new QPushButton( i18n("Ok"), b_box );
123 connect ( button, SIGNAL( clicked()), this, SLOT (slotOK() ) );
124 button = new QPushButton( i18n("Cancel"), b_box );
125 connect ( button, SIGNAL( clicked()), this, SLOT (reject() ) );
126*/
127 //QBoxLayout * sl = new QVBoxLayout(this );
128 //sl->addWidget ( sv );
129/*US
130 sv->setResizePolicy ( QScrollView::AutoOneFit );
131 QFrame *topFrame = new QFrame ( sv );
132 sv->addChild( topFrame );
133 mSetupSyncAlgTab = topFrame;
134 QGridLayout *topLayout = new QGridLayout(topFrame,6,2);
135 topLayout->setSpacing(spacingHint());
136 topLayout->setMargin(marginHint());
137*/
138//US new code for the layout
139 QGridLayout *topLayout = new QGridLayout( this, 6,2 ); 63 QGridLayout *topLayout = new QGridLayout( this, 6,2 );
140 topLayout->setMargin( KDialog::marginHint() ); 64 topLayout->setMargin( KDialog::marginHint() );
141 topLayout->setSpacing( KDialog::spacingHint() ); 65 topLayout->setSpacing( KDialog::spacingHint() );
142 66
143 //lab = new QLabel(i18n("Sync settings not yet implemented. DO NOT USE!"), topFrame);
144 int iii = 0; 67 int iii = 0;
145 //topLayout->addMultiCellWidget(lab , iii,iii,0,1);
146 //++iii;
147
148/*US
149 mMyMachineName = new QLineEdit(topFrame);
150 lab = new QLabel(mMyMachineName, i18n("Local device name:"), topFrame);
151 topLayout->addWidget(lab ,iii,0);
152 topLayout->addWidget(mMyMachineName,iii,1);
153 ++iii;
154
155 QHBox* buttonbox = new QHBox( topFrame);
156 topLayout->addMultiCellWidget(buttonbox, iii,iii,0,1);
157 ++iii;
158 button = new QPushButton( i18n("New profile"), buttonbox );
159 connect ( button, SIGNAL( clicked()), this, SLOT (newProfile() ) );
160
161 button = new QPushButton( i18n("Clone profile"), buttonbox );
162 connect ( button, SIGNAL( clicked()), this, SLOT ( cloneProfile() ) );
163
164 button = new QPushButton( i18n("Delete profile"), buttonbox );
165 connect ( button, SIGNAL( clicked()), this, SLOT (deleteProfile() ) );
166
167 mProfileBox = new QComboBox(topFrame);
168 mProfileBox->setEditable ( true );
169 connect ( mProfileBox, SIGNAL(activated ( int ) ), this, SLOT (profileChanged( int ) ) );
170 connect ( mProfileBox, SIGNAL( textChanged ( const QString & ) ), this, SLOT (textChanged( const QString & ) ) );
171
172 lab = new QLabel(mProfileBox, i18n("Profile:"), topFrame);
173 topLayout->addWidget(lab ,iii,0);
174 topLayout->addWidget(mProfileBox, iii,1);
175 ++iii;
176*/
177 mIncludeInRing = new QCheckBox( i18n("Include in multiple sync"), this ); 68 mIncludeInRing = new QCheckBox( i18n("Include in multiple sync"), this );
178 topLayout->addMultiCellWidget(mIncludeInRing, iii,iii,0,1); 69 topLayout->addMultiCellWidget(mIncludeInRing, iii,iii,0,1);
179 ++iii; 70 ++iii;
180 71
181 mAskForPreferences = new QCheckBox( i18n("Ask for preferences before sync"), this ); 72 mAskForPreferences = new QCheckBox( i18n("Ask for preferences before sync"), this );
182 topLayout->addMultiCellWidget(mAskForPreferences, iii,iii,0,1); 73 topLayout->addMultiCellWidget(mAskForPreferences, iii,iii,0,1);
183 ++iii; 74 ++iii;
184 QButtonGroup* gr = new QButtonGroup ( 1, Qt::Horizontal, i18n("Sync preferences"), this);
185 topLayout->addMultiCellWidget(gr, iii,iii,0,1);
186 ++iii;
187 loc = new QRadioButton ( i18n("Take local entry on conflict"), gr );
188 rem = new QRadioButton ( i18n("Take remote entry on conflict"), gr );
189 newest = new QRadioButton ( i18n("Take newest entry on conflict"), gr );
190 ask = new QRadioButton ( i18n("Ask for every entry on conflict"), gr );
191 f_loc= new QRadioButton ( i18n("Force: Take local entry always"), gr );
192 f_rem = new QRadioButton ( i18n("Force: Take remote entry always"), gr );
193 // both = new QRadioButton ( i18n("Take both on conflict"), gr );
194 75
195 mShowSummaryAfterSync = new QCheckBox( i18n("Show summary after sync"), this ); 76 mShowSummaryAfterSync = new QCheckBox( i18n("Show summary after sync"), this );
196 topLayout->addMultiCellWidget(mShowSummaryAfterSync, iii,iii,0,1); 77 topLayout->addMultiCellWidget(mShowSummaryAfterSync, iii,iii,0,1);
197 ++iii; 78 ++iii;
198 79
199 mWriteBackExisting= new QCheckBox( i18n("Write back existing entries only"), this ); 80 mWriteBackExisting= new QCheckBox( i18n("Write back existing entries only"), this );
200 topLayout->addMultiCellWidget(mWriteBackExisting, iii,iii,0,1); 81 topLayout->addMultiCellWidget(mWriteBackExisting, iii,iii,0,1);
201 ++iii; 82 ++iii;
202 83
203 mWriteBackFile = new QCheckBox( i18n("Write back file"), this ); 84 mWriteBackFile = new QCheckBox( i18n("Write back synced data"), this );
204 topLayout->addMultiCellWidget(mWriteBackFile, iii,iii,0,1); 85 topLayout->addMultiCellWidget(mWriteBackFile, iii,iii,0,1);
205 ++iii; 86 ++iii;
206 87
207 mIsNotLocal = new QCheckBox( i18n("Remote file (w down/upload command)"), this ); 88}
208 topLayout->addMultiCellWidget(mIsNotLocal, iii,iii,0,1);
209 connect (mIsNotLocal, SIGNAL( checked(bool)), this, SLOT (kindChanged(bool) ) );
210/*US
211 proGr = new QButtonGroup ( 1, Qt::Horizontal, i18n("Profile kind"), this);
212 gr = proGr;
213 topLayout->addMultiCellWidget(gr, iii,iii,0,1);
214 ++iii;
215 mIsLocal = new QRadioButton ( i18n("Local file"), gr );
216 mIsNotLocal = new QRadioButton ( i18n("Remote file (w down/upload command)"), gr );
217 connect (mIsLocal, SIGNAL( toggled(bool)), this, SLOT (kindChanged(bool) ) );
218*/
219 89
220/*US 90void SyncPrefWidget_Settings::loadSettings( KRES::Resource *res )
221 localFileWidget = new QVBox( topFrame); 91{
222 topLayout->addMultiCellWidget(localFileWidget, iii,iii,0,1); 92 KABC::Resource* resource = (KABC::Resource*)( res );
223 ++iii; 93 KSyncProfile* prof = resource->getSyncProfile();
224 QHBox* temphb = new QHBox( localFileWidget );
225 lab = new QLabel( i18n("Local file:"), temphb);
226 mRemoteFile = new QLineEdit(localFileWidget);
227 94
228 button = new QPushButton( i18n("Choose..."), temphb ); 95 if (prof == 0)
229 connect ( button, SIGNAL( clicked()), this, SLOT ( chooseFile() ) ); 96 {
230*/ 97 qDebug("SyncPrefWidget_Settings::loadSettings: something is wrong, because resource does have no syncprofile" );
231 QHBox* temphb; 98 return;
99 }
232 100
233 remoteFileWidget = new QVBox( this); 101 mIncludeInRing->setChecked( prof->getIncludeInRingSync() );
234 topLayout->addMultiCellWidget(remoteFileWidget, iii,iii,0,1); 102 mAskForPreferences->setChecked( prof->getAskForPreferences());
235 ++iii; 103 mShowSummaryAfterSync->setChecked( prof->getShowSummaryAfterSync());
236 lab = new QLabel( i18n("Pre sync (download) command:"), remoteFileWidget); 104 mWriteBackExisting->setChecked( prof->getWriteBackExisting() );
237 mRemotePrecommand = new QLineEdit(remoteFileWidget); 105 mWriteBackFile->setChecked( prof->getWriteBackFile());
106}
238 107
239 lab = new QLabel( i18n("Local temp file:"), remoteFileWidget); 108void SyncPrefWidget_Settings::saveSettings( KRES::Resource *res )
240 mLocalTempFile = new QLineEdit(remoteFileWidget); 109{
110 KABC::Resource* resource = (KABC::Resource*)( res );
111 KSyncProfile* prof = resource->getSyncProfile();
241 112
113 if (prof == 0)
114 {
115 qDebug("SyncPrefWidget_Settings::saveSettings: something is wrong, because resource does have no syncprofile" );
116 return;
117 }
242 118
243 lab = new QLabel( i18n("Post sync (upload) command:"), remoteFileWidget); 119 prof->setIncludeInRingSync( mIncludeInRing->isChecked() );
244 mRemotePostcommand = new QLineEdit(remoteFileWidget); 120 prof->setAskForPreferences( mAskForPreferences->isChecked());
121 prof->setShowSummaryAfterSync( mShowSummaryAfterSync->isChecked() );
122 prof->setWriteBackExisting(mWriteBackExisting->isChecked() );
123 prof->setWriteBackFile( mWriteBackFile->isChecked());
124}
245 125
246 lab = new QLabel( i18n("Fill in default values for:"), remoteFileWidget);
247 temphb = new QHBox( remoteFileWidget );
248 button = new QPushButton( i18n("ssh/scp"), temphb );
249 connect ( button, SIGNAL( clicked()), this, SLOT (fillSSH() ) );
250 button = new QPushButton( i18n("ftp"), temphb );
251 connect ( button, SIGNAL( clicked()), this, SLOT (fillFTP() ) );
252 lab = new QLabel( i18n("Hint: Use $PWD$ for placeholder of password!"), remoteFileWidget);
253 126
127/***********************************************************************
128 *
129 *
130 **********************************************************************/
254 131
255} 132SyncPrefWidget_Conflict::SyncPrefWidget_Conflict(QWidget *parent, const char *name) :
256/*US 133 KRES::SyncWidget(parent, name)
257void SyncPrefWidget::slotOK()
258{ 134{
259 if ( mMyMachineName->text() == "undefined" ) { 135 init();
260 KMessageBox::error(this,i18n("Local device name undefined!\nPlease define device name!"),i18n("KO/Pi config error"));
261 return;
262 }
263 int i;
264 for (i = 0; i < mSyncProfileNames.count(); ++ i) {
265 if ( mSyncProfileNames.contains( mSyncProfileNames[i]) > 1 ) {
266 KMessageBox::error(this,i18n("Multiple profiles with same name!\nPlease use unique profile names!"),i18n("KO/Pi config error"));
267 return;
268 }
269 }
270 usrWriteConfig();
271 QDialog::accept();
272} 136}
273void SyncPrefWidget::accept() 137
138
139SyncPrefWidget_Conflict::~SyncPrefWidget_Conflict()
274{ 140{
275 slotOK();
276} 141}
277void KOSyncPrefsDialog::chooseFile() 142
143void SyncPrefWidget_Conflict::init()
278{ 144{
279 QString fn =KOPrefs::instance()->mLastSyncedLocalFile; 145 QGridLayout *topLayout = new QGridLayout( this, 6,2 );
146 topLayout->setMargin( KDialog::marginHint() );
147 topLayout->setSpacing( KDialog::spacingHint() );
280 148
281 fn =KFileDialog:: getOpenFileName( fn, i18n("Sync filename(*.ics/*.vcs)"), this ); 149 int iii = 0;
282 if ( fn == "" ) 150
283 return; 151 QButtonGroup* gr = new QButtonGroup ( 1, Qt::Horizontal, i18n("In case of conflicts"), this);
284 mRemoteFile->setText( fn ); 152 topLayout->addMultiCellWidget(gr, iii,iii,0,1);
153 ++iii;
154 loc = new QRadioButton ( i18n("Take local entry on conflict"), gr );
155 rem = new QRadioButton ( i18n("Take remote entry on conflict"), gr );
156 newest = new QRadioButton ( i18n("Take newest entry on conflict"), gr );
157 ask = new QRadioButton ( i18n("Ask for every entry on conflict"), gr );
158 f_loc= new QRadioButton ( i18n("Force: Take local entry always"), gr );
159 f_rem = new QRadioButton ( i18n("Force: Take remote entry always"), gr );
160 // both = new QRadioButton ( i18n("Take both on conflict"), gr );
285} 161}
286 162
287void KOSyncPrefsDialog::textChanged( const QString & s ) 163void SyncPrefWidget_Conflict::loadSettings( KRES::Resource *res )
288{ 164{
289 if ( mProfileBox->count() == 0 ) 165 KABC::Resource* resource = (KABC::Resource*)( res );
290 return; 166 KSyncProfile* prof = resource->getSyncProfile();
291 if ( currentSelection < 3 ) { 167
292 //KMessageBox::error(this,i18n("This profil name\ncannot be edited!\n"),i18n("KO/Pi config error")); 168 if (prof == 0)
293 mProfileBox->blockSignals( true ); 169 {
294 mProfileBox->setCurrentItem(mProfileBox-> currentItem ()); 170 qDebug("SyncPrefWidget_Conflict::loadSettings: something is wrong, because resource does have no syncprofile" );
295 mProfileBox->blockSignals( false );
296 return; 171 return;
297 } 172 }
298 //qDebug("cur i %d ",mProfileBox-> currentItem () );
299 mProfileBox->changeItem ( s, mProfileBox-> currentItem () ) ;
300 KSyncProfile* prof = mSyncProfiles.at(mProfileBox-> currentItem ()) ;
301 prof->setName( s );
302 mSyncProfileNames[mProfileBox-> currentItem ()] = s;
303}
304void KOSyncPrefsDialog::profileChanged( int item )
305{
306 //qDebug("KOSyncPrefsDialog::profileChanged %d ", item );
307 KSyncProfile* prof;
308 saveProfile();
309 currentSelection = item;
310 prof = mSyncProfiles.at(item) ;
311 mRemotePrecommand->setText(prof->getPreSyncCommand());
312 mRemotePostcommand->setText(prof->getPostSyncCommand());
313 mLocalTempFile->setText(prof->getLocalTempFile());
314 mRemoteFile->setText(prof->getRemoteFileName()) ;
315 mShowSummaryAfterSync->setChecked( prof->getShowSummaryAfterSync());
316 mAskForPreferences->setChecked( prof->getAskForPreferences());
317 mWriteBackExisting->setChecked( prof->getWriteBackExisting() );
318 mWriteBackFile->setChecked( prof->getWriteBackFile());
319 mIncludeInRing->setChecked( prof->getIncludeInRingSync() );
320 173
321 switch ( prof->getSyncPrefs() ) { 174 switch ( prof->getSyncPrefs() ) {
322 case 0: 175 case 0:
323 loc->setChecked( true); 176 loc->setChecked( true);
324 break; 177 break;
325 case 1: 178 case 1:
@@ -340,156 +193,218 @@ void KOSyncPrefsDialog::profileChanged( int item )
340 case 6: 193 case 6:
341 //both->setChecked( true); 194 //both->setChecked( true);
342 break; 195 break;
343 default: 196 default:
344 break; 197 break;
345 } 198 }
346 mIsLocal->setChecked(prof->getIsLocalFileSync()) ;
347 mIsNotLocal->setChecked(!prof->getIsLocalFileSync());
348 proGr->setEnabled( item > 2 );
349 if ( item < 3 ) {
350 localFileWidget->setEnabled(false);
351 remoteFileWidget->setEnabled(false);
352
353 } else
354 kindChanged( prof->getIsLocalFileSync() );
355} 199}
356 200
357void KOSyncPrefsDialog::fillSSH() 201void SyncPrefWidget_Conflict::saveSettings( KRES::Resource *res )
358{ 202{
359 mRemotePrecommand->setText("scp zaurus@192.168.0.65:/home/zaurus/kdepim/apps/korganizer/mycalendar.ics /tmp/mycalendar.ics" ); 203 KABC::Resource* resource = (KABC::Resource*)( res );
360 mLocalTempFile->setText("/tmp/mycalendar.ics" ); 204 KSyncProfile* prof = resource->getSyncProfile();
361 mRemotePostcommand->setText("scp /tmp/mycalendar.ics zaurus@192.168.0.65:/home/zaurus/kdepim/apps/korganizer/mycalendar.ics" ); 205
206 if (prof == 0)
207 {
208 qDebug("SyncPrefWidget_Conftlict::saveSettings: something is wrong, because resource does have no syncprofile" );
209 return;
362} 210}
363void KOSyncPrefsDialog::fillFTP() 211
212 int syncprefs = rem->isChecked()*1+newest->isChecked()*2+ ask->isChecked()*3+ f_loc->isChecked()*4+ f_rem->isChecked()*5 ;//+ both->isChecked()*6 ;
213 prof->setSyncPrefs( syncprefs );
214
215}
216
217
218/***********************************************************************
219 *
220 *
221 **********************************************************************/
222
223SyncPrefWidget_Remote::SyncPrefWidget_Remote(QWidget *parent, const char *name) :
224 KRES::SyncWidget(parent, name)
364{ 225{
365 mRemotePrecommand->setText("cd /tmp;ftp ftp://zaurus:a@192.168.0.65/kdepim/apps/korganizer/mycalendar.ics" ); 226 init();
366 mLocalTempFile->setText("/tmp/mycalendar.ics" ); 227}
367 mRemotePostcommand->setText("ftp -u ftp://zaurus:a@192.168.0.65/kdepim/apps/korganizer/mycalendar.ics /tmp/mycalendar.ics" ); 228
368 229
230SyncPrefWidget_Remote::~SyncPrefWidget_Remote()
231{
369} 232}
370void KOSyncPrefsDialog::kindChanged( bool b ) 233
234void SyncPrefWidget_Remote::init()
371{ 235{
236 QLabel * lab;
237 QPushButton* button;
238
239
240 QGridLayout *topLayout = new QGridLayout( this, 6,2 );
241 topLayout->setMargin( KDialog::marginHint() );
242 topLayout->setSpacing( KDialog::spacingHint() );
243
244 int iii = 0;
245
246 QButtonGroup* gr;
247
248 QButtonGroup *proGr = new QButtonGroup ( 1, Qt::Horizontal, i18n("Profile kind"), this);
249 gr = proGr;
250 topLayout->addMultiCellWidget(gr, iii,iii,0,1);
251 ++iii;
252 mProfileKind = new QComboBox( gr );
253
254 mProfileKind->insertItem( i18n("Local file"), Local );
255 mProfileKind->insertItem( i18n("Remote file (w down/upload cmd)"),Remote );
256 mProfileKind->insertItem( i18n("Mobile device (cell phone)"), Mobile );
257
258 connect( mProfileKind, SIGNAL( activated( int ) ),
259 this, SLOT (kindChanged( int ) ) );
372 260
373 localFileWidget->setEnabled(b); 261
374 remoteFileWidget->setEnabled(!b); 262 QHBox* temphb;
263
264 remoteFileWidget = new QVBox( this);
265 topLayout->addMultiCellWidget(remoteFileWidget, iii,iii,0,1);
266 ++iii;
267 lab = new QLabel( i18n("Pre sync (download) command:"), remoteFileWidget);
268 mRemotePrecommand = new QLineEdit(remoteFileWidget);
269
270 lab = new QLabel( i18n("Local temp file (=Location):"), remoteFileWidget);
271 mLocalTempFile = new QLineEdit(remoteFileWidget);
272 mLocalTempFile->setEnabled(false);
273
274
275 lab = new QLabel( i18n("Post sync (upload) command:"), remoteFileWidget);
276 mRemotePostcommand = new QLineEdit(remoteFileWidget);
277
278 lab = new QLabel( i18n("Fill in default values for:"), remoteFileWidget);
279 temphb = new QHBox( remoteFileWidget );
280 button = new QPushButton( i18n("ssh/scp"), temphb );
281 connect ( button, SIGNAL( clicked()), this, SLOT (fillSSH() ) );
282 button = new QPushButton( i18n("ftp"), temphb );
283 connect ( button, SIGNAL( clicked()), this, SLOT (fillFTP() ) );
284 lab = new QLabel( i18n("Hint: Use $PWD$ for placeholder of password!"), remoteFileWidget);
375 285
376} 286}
377void KOSyncPrefsDialog::deleteProfile() 287
288void SyncPrefWidget_Remote::loadSettings( KRES::Resource *res )
289{
290 KABC::Resource* resource = (KABC::Resource*)( res );
291 KSyncProfile* prof = resource->getSyncProfile();
292
293 if (prof == 0)
378{ 294{
379 //qDebug("KOSyncPrefsDialog::deleteProfile() "); 295 qDebug("SyncPrefWidget_Remote::loadSettings: something is wrong, because resource does have no syncprofile" );
380 if ( currentSelection >= 0 ) {
381 if ( currentSelection < 3 ) {
382 KMessageBox::error(this,i18n("This profil cannot be deleted!\n"),i18n("KO/Pi config error"));
383 return; 296 return;
384 } 297 }
385 KSyncProfile* temp = mSyncProfiles.at(currentSelection); 298
386 mSyncProfiles.remove( temp ); 299 int val;
387 mSyncProfileNames.remove( mSyncProfileNames.at( currentSelection )); 300
388 insertProfiles(); 301 if (prof->getIsPhoneSync())
302 val = Mobile;
303 else if (!prof->getIsLocalFileSync())
304 val = Remote;
305 else // default value
306 val = Local;
307
308 mProfileKind->setCurrentItem( val );
309 kindChanged( val );
310
311
312 mRemotePrecommand->setText(prof->getPreSyncCommand());
313 mLocalTempFile->setText(resource->fileName());
314 mRemotePostcommand->setText(prof->getPostSyncCommand());
389 } 315 }
316
317void SyncPrefWidget_Remote::saveSettings( KRES::Resource *res )
318{
319 KABC::Resource* resource = (KABC::Resource*)( res );
320 KSyncProfile* prof = resource->getSyncProfile();
321
322 if (prof == 0)
323 {
324 qDebug("SyncPrefWidget_Remote::saveSettings: something is wrong, because resource does have no syncprofile" );
325 return;
390} 326}
391 327
392void KOSyncPrefsDialog::saveProfile() 328 int val = mProfileKind->currentItem();
329
330 if (val == Mobile)
331 {
332 prof->setIsLocalFileSync(true);
333 prof->setIsPhoneSync(true);
334 }
335 else if (val == Remote)
393{ 336{
394 KSyncProfile* prof; 337 prof->setIsLocalFileSync(false);
395 if ( currentSelection >= 0 ) { 338 prof->setIsPhoneSync(false);
396 prof = mSyncProfiles.at(currentSelection) ; 339 }
340 else // default value is Local
341 {
342 prof->setIsLocalFileSync(true);
343 prof->setIsPhoneSync(false);
344 }
345
346
397 prof->setPreSyncCommand( mRemotePrecommand->text()); 347 prof->setPreSyncCommand( mRemotePrecommand->text());
348//US prof->setLocalTempFile( mLocalTempFile->text());
398 prof->setPostSyncCommand( mRemotePostcommand->text() ); 349 prof->setPostSyncCommand( mRemotePostcommand->text() );
399 prof->setLocalTempFile( mLocalTempFile->text());
400 prof->setRemoteFileName( mRemoteFile->text() );
401 prof->setShowSummaryAfterSync( mShowSummaryAfterSync->isChecked() );
402 prof->setAskForPreferences( mAskForPreferences->isChecked());
403 prof->setWriteBackExisting(mWriteBackExisting->isChecked() );
404 prof->setWriteBackFile( mWriteBackFile->isChecked());
405 prof->setIncludeInRingSync( mIncludeInRing->isChecked() );
406 int syncprefs = rem->isChecked()*1+newest->isChecked()*2+ ask->isChecked()*3+ f_loc->isChecked()*4+ f_rem->isChecked()*5 ;//+ both->isChecked()*6 ;
407 prof->setSyncPrefs( syncprefs);
408 prof->setIsLocalFileSync( mIsLocal->isChecked() );
409 } 350 }
410 351
411}
412 352
413void KOSyncPrefsDialog::insertProfiles() 353void SyncPrefWidget_Remote::fillSSH()
414{
415 int curItem = mProfileBox->currentItem();
416 mProfileBox->blockSignals( true );
417 mProfileBox->clear();
418 mProfileBox->insertStringList (mSyncProfileNames );
419 int item = mSyncProfileNames.count() -1;
420 if ( curItem >= 0 && mSyncProfileNames.count() > 0 && curItem < mSyncProfileNames.count() )
421 mProfileBox->setCurrentItem( curItem );
422 else if ( item >= 0 ) {
423 mProfileBox->setCurrentItem( item );
424 }
425 currentSelection = -1;
426 if ( mSyncProfileNames.count() > 0 ) {
427 //qDebug(" profileChanged( mProfileBox->currentItem() ");
428 profileChanged( mProfileBox->currentItem() );
429 currentSelection = mProfileBox->currentItem();
430 }
431 mProfileBox->blockSignals( false );
432}
433
434void KOSyncPrefsDialog::addProfile ( KSyncProfile* temp )
435{ 354{
436 saveProfile(); 355 QString location = mLocalTempFile->text();
437 mSyncProfiles.append( temp ); 356
438 mSyncProfileNames << temp->getName(); 357 mRemotePrecommand->setText("scp zaurus@192.168.0.65:/home/zaurus/kdepim/"+location + " " + location );
439 insertProfiles(); 358//US mLocalTempFile->setText("/tmp/mycalendar.ics" );
440 int last = mProfileBox->count() -1; 359 mRemotePostcommand->setText("scp " + location + " zaurus@192.168.0.65:/home/zaurus/kdepim/"+location );
441 mProfileBox->blockSignals( true ); 360}
442 mProfileBox->setCurrentItem( last ); 361
443 mProfileBox->blockSignals( false ); 362void SyncPrefWidget_Remote::fillFTP()
444 profileChanged(last);
445}
446void KOSyncPrefsDialog::newProfile()
447{ 363{
448 addProfile ( new KSyncProfile () ); 364 QString location = mLocalTempFile->text();
365
366 mRemotePrecommand->setText("cd /tmp;ftp ftp://zaurus:a@192.168.0.65/kdepim/" + location );
367//US mLocalTempFile->setText("/tmp/mycalendar.ics" );
368 mRemotePostcommand->setText("ftp -u ftp://zaurus:a@192.168.0.65/kdepim/"+location+ " " + location);
369
449} 370}
450 371
451void KOSyncPrefsDialog::cloneProfile() 372
373void SyncPrefWidget_Remote::kindChanged( int newKind )
452{ 374{
453 if ( currentSelection >= 0 ) 375
454 addProfile (mSyncProfiles.at(currentSelection)->clone()) ; 376 if (newKind == Mobile)
455 else 377 remoteFileWidget->setEnabled(false);
456 newProfile(); 378 else if (newKind == Remote)
379 remoteFileWidget->setEnabled(true);
380 else // default value is local
381 remoteFileWidget->setEnabled(false);
382
457} 383}
458 384
385/***********************************************************************
386 *
387 *
388 **********************************************************************/
459 389
460void KOSyncPrefsDialog::usrReadConfig() 390
391SyncPrefWidgetContainer::SyncPrefWidgetContainer()
392 : SyncWidgetContainer()
461{ 393{
462 KConfig *config = KOGlobals::config();
463 config->setGroup("SyncProfiles");
464 mSyncProfileNames = KOPrefs::instance()->mSyncProfileNames;
465 int i;
466 KSyncProfile* temp ;
467 mSyncProfiles.clear();
468 for ( i = 0; i < mSyncProfileNames.count();++i ) {
469 temp = new KSyncProfile ();
470 temp->setName( mSyncProfileNames[i] );
471 temp->readConfig( config );
472 mSyncProfiles.append( temp );
473 } 394 }
474 insertProfiles(); 395
475 mMyMachineName->setText(KOPrefs::instance()->mLocalMachineName ); 396KRES::SyncWidget* SyncPrefWidgetContainer::generateSettingsTab(QWidget *parent = 0, const char *name = 0)
397{
398 return new SyncPrefWidget_Settings(parent, name);
476} 399}
477 400
401KRES::SyncWidget* SyncPrefWidgetContainer::generateConflictsTab(QWidget *parent = 0, const char *name = 0)
402{
403 return new SyncPrefWidget_Conflict(parent, name);
404}
478 405
479void KOSyncPrefsDialog::usrWriteConfig() 406KRES::SyncWidget* SyncPrefWidgetContainer::generateRemoteTab(QWidget *parent = 0, const char *name = 0)
480{ 407{
481 saveProfile(); 408 return new SyncPrefWidget_Remote(parent, name);
482 if ( currentSelection >= 0 )
483 profileChanged(currentSelection);
484 KConfig *config = KOGlobals::config();
485 config->setGroup("SyncProfiles");
486 KSyncProfile* prof = mSyncProfiles.first();
487 while ( prof ) {
488 prof->writeConfig(config);
489 prof = mSyncProfiles.next();
490 }
491 KOPrefs::instance()->mSyncProfileNames = mSyncProfileNames;
492 KOPrefs::instance()->mLocalMachineName = mMyMachineName->text();
493 config->writeEntry("SyncProfileNames",&mSyncProfileNames);
494} 409}
495*/ 410