summaryrefslogtreecommitdiffabout
authorzautrix <zautrix>2004-08-01 12:56:11 (UTC)
committer zautrix <zautrix>2004-08-01 12:56:11 (UTC)
commitcc2643f4be54269db8c24f66fdcbbf6954d5f537 (patch) (unidiff)
tree3562598dac624305dfb9fd1911a4b314ae40945d
parentc31e99f265dbe8762efca20667f8ccd973840f8f (diff)
downloadkdepimpi-cc2643f4be54269db8c24f66fdcbbf6954d5f537.zip
kdepimpi-cc2643f4be54269db8c24f66fdcbbf6954d5f537.tar.gz
kdepimpi-cc2643f4be54269db8c24f66fdcbbf6954d5f537.tar.bz2
Made sync profile dialog korganizer independent
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/calendarview.cpp28
-rw-r--r--korganizer/calendarview.h2
-rw-r--r--korganizer/kosyncprefsdialog.cpp44
-rw-r--r--korganizer/kosyncprefsdialog.h4
-rw-r--r--korganizer/mainwindow.cpp21
5 files changed, 47 insertions, 52 deletions
diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp
index b543eca..c75d10e 100644
--- a/korganizer/calendarview.cpp
+++ b/korganizer/calendarview.cpp
@@ -143,193 +143,192 @@ class KOBeamPrefs : public QDialog
143 lay->setMargin( 3 ); 143 lay->setMargin( 3 );
144 QButtonGroup* format = new QButtonGroup( 1, Horizontal, i18n("File format"), this ); 144 QButtonGroup* format = new QButtonGroup( 1, Horizontal, i18n("File format"), this );
145 lay->addWidget( format ); 145 lay->addWidget( format );
146 format->setExclusive ( true ) ; 146 format->setExclusive ( true ) ;
147 QButtonGroup* time = new QButtonGroup(1, Horizontal, i18n("Time format"), this ); 147 QButtonGroup* time = new QButtonGroup(1, Horizontal, i18n("Time format"), this );
148 lay->addWidget( time ); time->setExclusive ( true ) ; 148 lay->addWidget( time ); time->setExclusive ( true ) ;
149 vcal = new QRadioButton(" vCalendar ", format ); 149 vcal = new QRadioButton(" vCalendar ", format );
150 ical = new QRadioButton(" iCalendar ", format ); 150 ical = new QRadioButton(" iCalendar ", format );
151 vcal->setChecked( true ); 151 vcal->setChecked( true );
152 tz = new QRadioButton(i18n(" With timezone "), time ); 152 tz = new QRadioButton(i18n(" With timezone "), time );
153 local = new QRadioButton(i18n(" Local time "), time ); 153 local = new QRadioButton(i18n(" Local time "), time );
154 tz->setChecked( true ); 154 tz->setChecked( true );
155 QPushButton * ok = new QPushButton( i18n("Beam via IR!"), this ); 155 QPushButton * ok = new QPushButton( i18n("Beam via IR!"), this );
156 lay->addWidget( ok ); 156 lay->addWidget( ok );
157 QPushButton * cancel = new QPushButton( i18n("Cancel"), this ); 157 QPushButton * cancel = new QPushButton( i18n("Cancel"), this );
158 lay->addWidget( cancel ); 158 lay->addWidget( cancel );
159 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) ); 159 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) );
160 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) ); 160 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) );
161 resize( 200, 200 ); 161 resize( 200, 200 );
162 } 162 }
163 163
164 bool beamVcal() { return vcal->isChecked(); } 164 bool beamVcal() { return vcal->isChecked(); }
165 bool beamLocal() { return local->isChecked(); } 165 bool beamLocal() { return local->isChecked(); }
166private: 166private:
167 QRadioButton* vcal, *ical, *local, *tz; 167 QRadioButton* vcal, *ical, *local, *tz;
168}; 168};
169class KOCatPrefs : public QDialog 169class KOCatPrefs : public QDialog
170{ 170{
171 public: 171 public:
172 KOCatPrefs( QWidget *parent=0, const char *name=0 ) : 172 KOCatPrefs( QWidget *parent=0, const char *name=0 ) :
173 QDialog( parent, name, true ) 173 QDialog( parent, name, true )
174 { 174 {
175 setCaption( i18n("Manage new Categories") ); 175 setCaption( i18n("Manage new Categories") );
176 QVBoxLayout* lay = new QVBoxLayout( this ); 176 QVBoxLayout* lay = new QVBoxLayout( this );
177 lay->setSpacing( 3 ); 177 lay->setSpacing( 3 );
178 lay->setMargin( 3 ); 178 lay->setMargin( 3 );
179 QLabel * lab = new QLabel( i18n("After importing/loading/syncing\nthere may be new categories in\nevents or todos\nwhich are not in the category list.\nPlease choose what to do:\n "), this ); 179 QLabel * lab = new QLabel( i18n("After importing/loading/syncing\nthere may be new categories in\nevents or todos\nwhich are not in the category list.\nPlease choose what to do:\n "), this );
180 lay->addWidget( lab ); 180 lay->addWidget( lab );
181 QButtonGroup* format = new QButtonGroup( 1, Horizontal, i18n("New categories not in list:"), this ); 181 QButtonGroup* format = new QButtonGroup( 1, Horizontal, i18n("New categories not in list:"), this );
182 lay->addWidget( format ); 182 lay->addWidget( format );
183 format->setExclusive ( true ) ; 183 format->setExclusive ( true ) ;
184 addCatBut = new QRadioButton(i18n("Add to category list"), format ); 184 addCatBut = new QRadioButton(i18n("Add to category list"), format );
185 new QRadioButton(i18n("Remove from Events/Todos"), format ); 185 new QRadioButton(i18n("Remove from Events/Todos"), format );
186 addCatBut->setChecked( true ); 186 addCatBut->setChecked( true );
187 QPushButton * ok = new QPushButton( i18n("OK"), this ); 187 QPushButton * ok = new QPushButton( i18n("OK"), this );
188 lay->addWidget( ok ); 188 lay->addWidget( ok );
189 QPushButton * cancel = new QPushButton( i18n("Cancel"), this ); 189 QPushButton * cancel = new QPushButton( i18n("Cancel"), this );
190 lay->addWidget( cancel ); 190 lay->addWidget( cancel );
191 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) ); 191 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) );
192 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) ); 192 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) );
193 resize( 200, 200 ); 193 resize( 200, 200 );
194 } 194 }
195 195
196 bool addCat() { return addCatBut->isChecked(); } 196 bool addCat() { return addCatBut->isChecked(); }
197private: 197private:
198 QRadioButton* addCatBut; 198 QRadioButton* addCatBut;
199}; 199};
200 200
201 201
202 202
203CalendarView::CalendarView( CalendarResources *calendar, 203CalendarView::CalendarView( CalendarResources *calendar,
204 QWidget *parent, const char *name ) 204 QWidget *parent, const char *name )
205 : CalendarViewBase( parent, name ), 205 : CalendarViewBase( parent, name ),
206 mCalendar( calendar ), 206 mCalendar( calendar ),
207 mResourceManager( calendar->resourceManager() ) 207 mResourceManager( calendar->resourceManager() )
208{ 208{
209 209
210 mEventEditor = 0; 210 mEventEditor = 0;
211 mTodoEditor = 0; 211 mTodoEditor = 0;
212 212
213 init(); 213 init();
214} 214}
215 215
216CalendarView::CalendarView( Calendar *calendar, 216CalendarView::CalendarView( Calendar *calendar,
217 QWidget *parent, const char *name ) 217 QWidget *parent, const char *name )
218 : CalendarViewBase( parent, name ), 218 : CalendarViewBase( parent, name ),
219 mCalendar( calendar ), 219 mCalendar( calendar ),
220 mResourceManager( 0 ) 220 mResourceManager( 0 )
221{ 221{
222 222
223 mEventEditor = 0; 223 mEventEditor = 0;
224 mTodoEditor = 0; 224 mTodoEditor = 0;
225 init();} 225 init();}
226 226
227void CalendarView::init() 227void CalendarView::init()
228{ 228{
229 beamDialog = new KOBeamPrefs(); 229 beamDialog = new KOBeamPrefs();
230 mDatePickerMode = 0; 230 mDatePickerMode = 0;
231 mCurrentSyncDevice = ""; 231 mCurrentSyncDevice = "";
232 writeLocale(); 232 writeLocale();
233 mViewManager = new KOViewManager( this ); 233 mViewManager = new KOViewManager( this );
234 mDialogManager = new KODialogManager( this ); 234 mDialogManager = new KODialogManager( this );
235 mEventViewerDialog = 0; 235 mEventViewerDialog = 0;
236 mModified = false; 236 mModified = false;
237 mReadOnly = false; 237 mReadOnly = false;
238 mSelectedIncidence = 0; 238 mSelectedIncidence = 0;
239 mSyncProfiles.setAutoDelete(true);
240 mCalPrinter = 0; 239 mCalPrinter = 0;
241 mFilters.setAutoDelete(true); 240 mFilters.setAutoDelete(true);
242 241
243 mCalendar->registerObserver( this ); 242 mCalendar->registerObserver( this );
244 // TODO: Make sure that view is updated, when calendar is changed. 243 // TODO: Make sure that view is updated, when calendar is changed.
245 244
246 mStorage = new FileStorage( mCalendar ); 245 mStorage = new FileStorage( mCalendar );
247 mNavigator = new DateNavigator( this, "datevav", mViewManager ); 246 mNavigator = new DateNavigator( this, "datevav", mViewManager );
248 247
249 QBoxLayout *topLayout = (QBoxLayout*)layout(); 248 QBoxLayout *topLayout = (QBoxLayout*)layout();
250#ifndef KORG_NOSPLITTER 249#ifndef KORG_NOSPLITTER
251 // create the main layout frames. 250 // create the main layout frames.
252 mPanner = new QSplitter(QSplitter::Horizontal,this,"CalendarView::Panner"); 251 mPanner = new QSplitter(QSplitter::Horizontal,this,"CalendarView::Panner");
253 topLayout->addWidget(mPanner); 252 topLayout->addWidget(mPanner);
254 253
255 mLeftSplitter = new QSplitter(QSplitter::Vertical,mPanner, 254 mLeftSplitter = new QSplitter(QSplitter::Vertical,mPanner,
256 "CalendarView::LeftFrame"); 255 "CalendarView::LeftFrame");
257 mPanner->setResizeMode(mLeftSplitter,QSplitter::KeepSize); 256 mPanner->setResizeMode(mLeftSplitter,QSplitter::KeepSize);
258 257
259 mDateNavigator = new KDateNavigator(mLeftSplitter, mCalendar, TRUE, 258 mDateNavigator = new KDateNavigator(mLeftSplitter, mCalendar, TRUE,
260 "CalendarView::DateNavigator", QDate::currentDate() ); 259 "CalendarView::DateNavigator", QDate::currentDate() );
261 mLeftSplitter->setResizeMode(mDateNavigator,QSplitter::KeepSize); 260 mLeftSplitter->setResizeMode(mDateNavigator,QSplitter::KeepSize);
262 mTodoList = new KOTodoView(mCalendar, mLeftSplitter, "todolist_small2"); 261 mTodoList = new KOTodoView(mCalendar, mLeftSplitter, "todolist_small2");
263 mFilterView = new KOFilterView(&mFilters,mLeftSplitter,"CalendarView::FilterView"); 262 mFilterView = new KOFilterView(&mFilters,mLeftSplitter,"CalendarView::FilterView");
264 263
265#ifdef KORG_NORESOURCEVIEW 264#ifdef KORG_NORESOURCEVIEW
266 mResourceView = 0; 265 mResourceView = 0;
267#else 266#else
268 if ( mResourceManager ) { 267 if ( mResourceManager ) {
269 mResourceView = new ResourceView( mResourceManager, mLeftSplitter ); 268 mResourceView = new ResourceView( mResourceManager, mLeftSplitter );
270 mResourceView->updateView(); 269 mResourceView->updateView();
271 connect( mResourceView, SIGNAL( resourcesChanged() ), 270 connect( mResourceView, SIGNAL( resourcesChanged() ),
272 SLOT( updateView() ) ); 271 SLOT( updateView() ) );
273 } else { 272 } else {
274 mResourceView = 0; 273 mResourceView = 0;
275 } 274 }
276#endif 275#endif
277 QWidget *rightBox = new QWidget( mPanner ); 276 QWidget *rightBox = new QWidget( mPanner );
278 QBoxLayout *rightLayout = new QVBoxLayout( rightBox ); 277 QBoxLayout *rightLayout = new QVBoxLayout( rightBox );
279 278
280 mNavigatorBar = new NavigatorBar( QDate::currentDate(), rightBox, "useBigPixmaps" ); 279 mNavigatorBar = new NavigatorBar( QDate::currentDate(), rightBox, "useBigPixmaps" );
281 rightLayout->addWidget( mNavigatorBar ); 280 rightLayout->addWidget( mNavigatorBar );
282 281
283 mRightFrame = new QWidgetStack( rightBox ); 282 mRightFrame = new QWidgetStack( rightBox );
284 rightLayout->addWidget( mRightFrame, 1 ); 283 rightLayout->addWidget( mRightFrame, 1 );
285 284
286 mLeftFrame = mLeftSplitter; 285 mLeftFrame = mLeftSplitter;
287#else 286#else
288 QWidget *mainBox = new QWidget( this ); 287 QWidget *mainBox = new QWidget( this );
289 QWidget *leftFrame = new QWidget( mainBox ); 288 QWidget *leftFrame = new QWidget( mainBox );
290 289
291 QBoxLayout * mainBoxLayout; 290 QBoxLayout * mainBoxLayout;
292 QBoxLayout * leftFrameLayout; 291 QBoxLayout * leftFrameLayout;
293 if ( KOPrefs::instance()->mVerticalScreen ) { 292 if ( KOPrefs::instance()->mVerticalScreen ) {
294 mainBoxLayout = new QVBoxLayout(mainBox); 293 mainBoxLayout = new QVBoxLayout(mainBox);
295 leftFrameLayout = new QHBoxLayout(leftFrame ); 294 leftFrameLayout = new QHBoxLayout(leftFrame );
296 } else { 295 } else {
297 mainBoxLayout = new QHBoxLayout(mainBox); 296 mainBoxLayout = new QHBoxLayout(mainBox);
298 leftFrameLayout = new QVBoxLayout(leftFrame ); 297 leftFrameLayout = new QVBoxLayout(leftFrame );
299 } 298 }
300 topLayout->addWidget( mainBox ); 299 topLayout->addWidget( mainBox );
301 mainBoxLayout->addWidget (leftFrame); 300 mainBoxLayout->addWidget (leftFrame);
302 mDateNavigator = new KDateNavigator(leftFrame, mCalendar, TRUE, 301 mDateNavigator = new KDateNavigator(leftFrame, mCalendar, TRUE,
303 "CalendarView::DateNavigator", QDate::currentDate()); 302 "CalendarView::DateNavigator", QDate::currentDate());
304 // mDateNavigator->blockSignals( true ); 303 // mDateNavigator->blockSignals( true );
305 leftFrameLayout->addWidget( mDateNavigator ); 304 leftFrameLayout->addWidget( mDateNavigator );
306 mFilterView = new KOFilterView(&mFilters,leftFrame,"CalendarView::FilterView"); 305 mFilterView = new KOFilterView(&mFilters,leftFrame,"CalendarView::FilterView");
307 mTodoList = new KOTodoView(mCalendar, leftFrame, "todolist"); 306 mTodoList = new KOTodoView(mCalendar, leftFrame, "todolist");
308 307
309 if ( QApplication::desktop()->width() < 480 ) { 308 if ( QApplication::desktop()->width() < 480 ) {
310 leftFrameLayout->addWidget(mFilterView); 309 leftFrameLayout->addWidget(mFilterView);
311 leftFrameLayout->addWidget(mTodoList, 2 ); 310 leftFrameLayout->addWidget(mTodoList, 2 );
312 311
313 } else { 312 } else {
314 leftFrameLayout->addWidget(mTodoList,2 ); 313 leftFrameLayout->addWidget(mTodoList,2 );
315 leftFrameLayout->addWidget(mFilterView ); 314 leftFrameLayout->addWidget(mFilterView );
316 } 315 }
317 mFilterView->hide(); 316 mFilterView->hide();
318 QWidget *rightBox = new QWidget( mainBox ); 317 QWidget *rightBox = new QWidget( mainBox );
319 mainBoxLayout->addWidget ( rightBox, 10 ); 318 mainBoxLayout->addWidget ( rightBox, 10 );
320 QBoxLayout *rightLayout = new QVBoxLayout( rightBox ); 319 QBoxLayout *rightLayout = new QVBoxLayout( rightBox );
321 mNavigatorBar = new NavigatorBar( QDate::currentDate(), rightBox, "useBigPixmaps" ); 320 mNavigatorBar = new NavigatorBar( QDate::currentDate(), rightBox, "useBigPixmaps" );
322 mRightFrame = new QWidgetStack( rightBox ); 321 mRightFrame = new QWidgetStack( rightBox );
323 rightLayout->addWidget( mNavigatorBar ); 322 rightLayout->addWidget( mNavigatorBar );
324 rightLayout->addWidget( mRightFrame, 10 ); 323 rightLayout->addWidget( mRightFrame, 10 );
325 324
326 mLeftFrame = leftFrame; 325 mLeftFrame = leftFrame;
327 if ( KOPrefs::instance()->mVerticalScreen ) { 326 if ( KOPrefs::instance()->mVerticalScreen ) {
328 mTodoList->setFixedHeight( mDateNavigator->sizeHint().height() ); 327 mTodoList->setFixedHeight( mDateNavigator->sizeHint().height() );
329 leftFrame->setFixedHeight( mDateNavigator->sizeHint().height() ); 328 leftFrame->setFixedHeight( mDateNavigator->sizeHint().height() );
330 } else { 329 } else {
331 mTodoList->setFixedWidth( mDateNavigator->sizeHint().width() ); 330 mTodoList->setFixedWidth( mDateNavigator->sizeHint().width() );
332 leftFrame->setFixedWidth( mDateNavigator->sizeHint().width() ); 331 leftFrame->setFixedWidth( mDateNavigator->sizeHint().width() );
333 } 332 }
334 333
335 //qDebug("Calendarview Size %d %d ", width(), height()); 334 //qDebug("Calendarview Size %d %d ", width(), height());
@@ -597,200 +596,202 @@ void CalendarView::addSuspendAlarm(const QDateTime &qdt, const QString &noti )
597 int ms = QDateTime::currentDateTime().secsTo( qdt )*1000; 596 int ms = QDateTime::currentDateTime().secsTo( qdt )*1000;
598 //qDebug("Suspend Alarm timer started with secs: %d ", ms/1000); 597 //qDebug("Suspend Alarm timer started with secs: %d ", ms/1000);
599 mSuspendTimer->start( ms , true ); 598 mSuspendTimer->start( ms , true );
600 599
601} 600}
602 601
603void CalendarView::addAlarm(const QDateTime &qdt, const QString &noti ) 602void CalendarView::addAlarm(const QDateTime &qdt, const QString &noti )
604{ 603{
605 //qDebug("+++++addAlarm %s %s ", qdt.toString().latin1() , noti.latin1() ); 604 //qDebug("+++++addAlarm %s %s ", qdt.toString().latin1() , noti.latin1() );
606 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) { 605 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) {
607#ifndef DESKTOP_VERSION 606#ifndef DESKTOP_VERSION
608 AlarmServer::addAlarm ( qdt,"koalarm", noti.latin1() ); 607 AlarmServer::addAlarm ( qdt,"koalarm", noti.latin1() );
609#endif 608#endif
610 return; 609 return;
611 } 610 }
612 int maxSec; 611 int maxSec;
613 //maxSec = 5; //testing only 612 //maxSec = 5; //testing only
614 maxSec = 86400+3600; // one day+1hour 613 maxSec = 86400+3600; // one day+1hour
615 mAlarmNotification = noti; 614 mAlarmNotification = noti;
616 int sec = QDateTime::currentDateTime().secsTo( qdt ); 615 int sec = QDateTime::currentDateTime().secsTo( qdt );
617 if ( sec > maxSec ) { 616 if ( sec > maxSec ) {
618 mRecheckAlarmTimer->start( maxSec * 1000 ); 617 mRecheckAlarmTimer->start( maxSec * 1000 );
619 // qDebug("recheck Alarm timer started with secs: %d next alarm in sec:%d", maxSec,sec ); 618 // qDebug("recheck Alarm timer started with secs: %d next alarm in sec:%d", maxSec,sec );
620 return; 619 return;
621 } else { 620 } else {
622 mRecheckAlarmTimer->stop(); 621 mRecheckAlarmTimer->stop();
623 } 622 }
624 //qDebug("Alarm timer started with secs: %d ", sec); 623 //qDebug("Alarm timer started with secs: %d ", sec);
625 mAlarmTimer->start( sec *1000 , true ); 624 mAlarmTimer->start( sec *1000 , true );
626 625
627} 626}
628// called by mRecheckAlarmTimer to get next alarm 627// called by mRecheckAlarmTimer to get next alarm
629// we need this, because a QTimer has only a max range of 25 days 628// we need this, because a QTimer has only a max range of 25 days
630void CalendarView::recheckTimerAlarm() 629void CalendarView::recheckTimerAlarm()
631{ 630{
632 mAlarmTimer->stop(); 631 mAlarmTimer->stop();
633 mRecheckAlarmTimer->stop(); 632 mRecheckAlarmTimer->stop();
634 mCalendar->checkAlarmForIncidence( 0, true ); 633 mCalendar->checkAlarmForIncidence( 0, true );
635} 634}
636void CalendarView::removeAlarm(const QDateTime &qdt, const QString &noti ) 635void CalendarView::removeAlarm(const QDateTime &qdt, const QString &noti )
637{ 636{
638 //qDebug("-----removeAlarm %s %s ", qdt.toString().latin1() , noti.latin1() ); 637 //qDebug("-----removeAlarm %s %s ", qdt.toString().latin1() , noti.latin1() );
639 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) { 638 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) {
640#ifndef DESKTOP_VERSION 639#ifndef DESKTOP_VERSION
641 AlarmServer::deleteAlarm (qdt ,"koalarm" ,noti.latin1() ); 640 AlarmServer::deleteAlarm (qdt ,"koalarm" ,noti.latin1() );
642#endif 641#endif
643 return; 642 return;
644 } 643 }
645 mAlarmTimer->stop(); 644 mAlarmTimer->stop();
646} 645}
647void CalendarView::selectWeekNum ( int num ) 646void CalendarView::selectWeekNum ( int num )
648{ 647{
649 dateNavigator()->selectWeek( num ); 648 dateNavigator()->selectWeek( num );
650 mViewManager->showWeekView(); 649 mViewManager->showWeekView();
651} 650}
652KOViewManager *CalendarView::viewManager() 651KOViewManager *CalendarView::viewManager()
653{ 652{
654 return mViewManager; 653 return mViewManager;
655} 654}
656 655
657KODialogManager *CalendarView::dialogManager() 656KODialogManager *CalendarView::dialogManager()
658{ 657{
659 return mDialogManager; 658 return mDialogManager;
660} 659}
661 660
662QDate CalendarView::startDate() 661QDate CalendarView::startDate()
663{ 662{
664 DateList dates = mNavigator->selectedDates(); 663 DateList dates = mNavigator->selectedDates();
665 664
666 return dates.first(); 665 return dates.first();
667} 666}
668 667
669QDate CalendarView::endDate() 668QDate CalendarView::endDate()
670{ 669{
671 DateList dates = mNavigator->selectedDates(); 670 DateList dates = mNavigator->selectedDates();
672 671
673 return dates.last(); 672 return dates.last();
674} 673}
675 674
676 675
677void CalendarView::createPrinter() 676void CalendarView::createPrinter()
678{ 677{
679#ifndef KORG_NOPRINTER 678#ifndef KORG_NOPRINTER
680 if (!mCalPrinter) { 679 if (!mCalPrinter) {
681 mCalPrinter = new CalPrinter(this, mCalendar); 680 mCalPrinter = new CalPrinter(this, mCalendar);
682 connect(this, SIGNAL(configChanged()), mCalPrinter, SLOT(updateConfig())); 681 connect(this, SIGNAL(configChanged()), mCalPrinter, SLOT(updateConfig()));
683 } 682 }
684#endif 683#endif
685} 684}
686 685
687void CalendarView::confSync() 686void CalendarView::confSync()
688{ 687{
689 static KOSyncPrefsDialog* sp = 0; 688 static KOSyncPrefsDialog* sp = 0;
690 if ( ! sp ) { 689 if ( ! sp ) {
691 sp = new KOSyncPrefsDialog( this, "syncprefs", true ); 690 sp = new KOSyncPrefsDialog( this, "syncprefs", true );
692 } 691 }
692 sp->setLocalMachineName ( KOPrefs::instance()->mLocalMachineName );
693 sp->usrReadConfig(); 693 sp->usrReadConfig();
694#ifndef DESKTOP_VERSION 694#ifndef DESKTOP_VERSION
695 sp->showMaximized(); 695 sp->showMaximized();
696#else 696#else
697 sp->show(); 697 sp->show();
698#endif 698#endif
699 sp->exec(); 699 sp->exec();
700 700 KOPrefs::instance()->mSyncProfileNames = sp->getSyncProfileNames();
701 KOPrefs::instance()->mLocalMachineName = sp->getLocalMachineName ();
701} 702}
702 703
703 704
704//KOPrefs::instance()->mWriteBackFile 705//KOPrefs::instance()->mWriteBackFile
705//KOPrefs::instance()->mWriteBackExistingOnly 706//KOPrefs::instance()->mWriteBackExistingOnly
706 707
707// 0 syncPrefsGroup->addRadio(i18n("Take local entry on conflict")); 708// 0 syncPrefsGroup->addRadio(i18n("Take local entry on conflict"));
708// 1 syncPrefsGroup->addRadio(i18n("Take remote entry on conflict")); 709// 1 syncPrefsGroup->addRadio(i18n("Take remote entry on conflict"));
709// 2 syncPrefsGroup->addRadio(i18n("Take newest entry on conflict")); 710// 2 syncPrefsGroup->addRadio(i18n("Take newest entry on conflict"));
710// 3 syncPrefsGroup->addRadio(i18n("Ask for every entry on conflict")); 711// 3 syncPrefsGroup->addRadio(i18n("Ask for every entry on conflict"));
711// 4 syncPrefsGroup->addRadio(i18n("Force take local entry always")); 712// 4 syncPrefsGroup->addRadio(i18n("Force take local entry always"));
712// 5 syncPrefsGroup->addRadio(i18n("Force take remote entry always")); 713// 5 syncPrefsGroup->addRadio(i18n("Force take remote entry always"));
713 714
714int CalendarView::takeEvent( Incidence* local, Incidence* remote, int mode , bool full ) 715int CalendarView::takeEvent( Incidence* local, Incidence* remote, int mode , bool full )
715{ 716{
716 717
717 //void setZaurusId(int id); 718 //void setZaurusId(int id);
718 // int zaurusId() const; 719 // int zaurusId() const;
719 // void setZaurusUid(int id); 720 // void setZaurusUid(int id);
720 // int zaurusUid() const; 721 // int zaurusUid() const;
721 // void setZaurusStat(int id); 722 // void setZaurusStat(int id);
722 // int zaurusStat() const; 723 // int zaurusStat() const;
723 // 0 equal 724 // 0 equal
724 // 1 take local 725 // 1 take local
725 // 2 take remote 726 // 2 take remote
726 // 3 cancel 727 // 3 cancel
727 QDateTime lastSync = mLastCalendarSync; 728 QDateTime lastSync = mLastCalendarSync;
728 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 729 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
729 bool remCh, locCh; 730 bool remCh, locCh;
730 remCh = ( remote->zaurusUid() != local->zaurusUid() ); 731 remCh = ( remote->zaurusUid() != local->zaurusUid() );
731 locCh = ( local->lastModified() > mLastCalendarSync ); 732 locCh = ( local->lastModified() > mLastCalendarSync );
732 //qDebug("locCh %d remCh %d locuid %d remuid %d", locCh, remCh,local->zaurusUid(), remote->zaurusUid() ); 733 //qDebug("locCh %d remCh %d locuid %d remuid %d", locCh, remCh,local->zaurusUid(), remote->zaurusUid() );
733 if ( !remCh && ! locCh ) { 734 if ( !remCh && ! locCh ) {
734 //qDebug("both not changed "); 735 //qDebug("both not changed ");
735 lastSync = local->lastModified().addDays(1); 736 lastSync = local->lastModified().addDays(1);
736 } else { 737 } else {
737 if ( locCh ) { 738 if ( locCh ) {
738 //qDebug("loc changed %d %d", local->zaurusStat(), local->revision() ); 739 //qDebug("loc changed %d %d", local->zaurusStat(), local->revision() );
739 lastSync = local->lastModified().addDays( -1 ); 740 lastSync = local->lastModified().addDays( -1 );
740 if ( !remCh ) 741 if ( !remCh )
741 remote->setLastModified( lastSync.addDays( -1 ) ); 742 remote->setLastModified( lastSync.addDays( -1 ) );
742 } else { 743 } else {
743 //qDebug(" not loc changed "); 744 //qDebug(" not loc changed ");
744 lastSync = local->lastModified().addDays( 1 ); 745 lastSync = local->lastModified().addDays( 1 );
745 if ( remCh ) 746 if ( remCh )
746 remote->setLastModified( lastSync.addDays( 1 ) ); 747 remote->setLastModified( lastSync.addDays( 1 ) );
747 748
748 } 749 }
749 } 750 }
750 full = true; 751 full = true;
751 if ( mode < SYNC_PREF_ASK ) 752 if ( mode < SYNC_PREF_ASK )
752 mode = SYNC_PREF_ASK; 753 mode = SYNC_PREF_ASK;
753 } else { 754 } else {
754 if ( local->lastModified() == remote->lastModified() ) 755 if ( local->lastModified() == remote->lastModified() )
755 if ( local->revision() == remote->revision() ) 756 if ( local->revision() == remote->revision() )
756 return 0; 757 return 0;
757 758
758 } 759 }
759 // qDebug(" %d %d conflict on %s %s ", mode, full, local->summary().latin1(), remote->summary().latin1() ); 760 // qDebug(" %d %d conflict on %s %s ", mode, full, local->summary().latin1(), remote->summary().latin1() );
760 761
761 //qDebug("%s %d %s %d", local->lastModified().toString().latin1() , local->revision(), remote->lastModified().toString().latin1(), remote->revision()); 762 //qDebug("%s %d %s %d", local->lastModified().toString().latin1() , local->revision(), remote->lastModified().toString().latin1(), remote->revision());
762 //qDebug("%d %d %d %d ", local->lastModified().time().second(), local->lastModified().time().msec(), remote->lastModified().time().second(), remote->lastModified().time().msec() ); 763 //qDebug("%d %d %d %d ", local->lastModified().time().second(), local->lastModified().time().msec(), remote->lastModified().time().second(), remote->lastModified().time().msec() );
763 //full = true; //debug only 764 //full = true; //debug only
764 if ( full ) { 765 if ( full ) {
765 bool equ = false; 766 bool equ = false;
766 if ( local->type() == "Event" ) { 767 if ( local->type() == "Event" ) {
767 equ = (*((Event*) local) == *((Event*) remote)); 768 equ = (*((Event*) local) == *((Event*) remote));
768 } 769 }
769 else if ( local->type() =="Todo" ) 770 else if ( local->type() =="Todo" )
770 equ = (*((Todo*) local) == (*(Todo*) remote)); 771 equ = (*((Todo*) local) == (*(Todo*) remote));
771 else if ( local->type() =="Journal" ) 772 else if ( local->type() =="Journal" )
772 equ = (*((Journal*) local) == *((Journal*) remote)); 773 equ = (*((Journal*) local) == *((Journal*) remote));
773 if ( equ ) { 774 if ( equ ) {
774 //qDebug("equal "); 775 //qDebug("equal ");
775 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 776 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
776 local->setZaurusUid( remote->zaurusUid() ); 777 local->setZaurusUid( remote->zaurusUid() );
777 } 778 }
778 if ( mode < SYNC_PREF_FORCE_LOCAL ) 779 if ( mode < SYNC_PREF_FORCE_LOCAL )
779 return 0; 780 return 0;
780 781
781 }//else //debug only 782 }//else //debug only
782 //qDebug("not equal %s %s ", local->summary().latin1(), remote->summary().latin1()); 783 //qDebug("not equal %s %s ", local->summary().latin1(), remote->summary().latin1());
783 } 784 }
784 int result; 785 int result;
785 bool localIsNew; 786 bool localIsNew;
786 if ( full && mode < SYNC_PREF_NEWEST ) 787 if ( full && mode < SYNC_PREF_NEWEST )
787 mode = SYNC_PREF_ASK; 788 mode = SYNC_PREF_ASK;
788 789
789 switch( mode ) { 790 switch( mode ) {
790 case SYNC_PREF_LOCAL: 791 case SYNC_PREF_LOCAL:
791 if ( lastSync > remote->lastModified() ) 792 if ( lastSync > remote->lastModified() )
792 return 1; 793 return 1;
793 if ( lastSync > local->lastModified() ) 794 if ( lastSync > local->lastModified() )
794 return 2; 795 return 2;
795 return 1; 796 return 1;
796 break; 797 break;
@@ -1470,215 +1471,192 @@ void CalendarView::closeCalendar()
1470 emit closingDown(); 1471 emit closingDown();
1471 1472
1472 mCalendar->close(); 1473 mCalendar->close();
1473 setModified(false); 1474 setModified(false);
1474 updateView(); 1475 updateView();
1475} 1476}
1476 1477
1477void CalendarView::archiveCalendar() 1478void CalendarView::archiveCalendar()
1478{ 1479{
1479 mDialogManager->showArchiveDialog(); 1480 mDialogManager->showArchiveDialog();
1480} 1481}
1481 1482
1482 1483
1483void CalendarView::readSettings() 1484void CalendarView::readSettings()
1484{ 1485{
1485 1486
1486 1487
1487 // mViewManager->showAgendaView(); 1488 // mViewManager->showAgendaView();
1488 QString str; 1489 QString str;
1489 //qDebug("CalendarView::readSettings() "); 1490 //qDebug("CalendarView::readSettings() ");
1490 // read settings from the KConfig, supplying reasonable 1491 // read settings from the KConfig, supplying reasonable
1491 // defaults where none are to be found 1492 // defaults where none are to be found
1492 KConfig *config = KOGlobals::config(); 1493 KConfig *config = KOGlobals::config();
1493#ifndef KORG_NOSPLITTER 1494#ifndef KORG_NOSPLITTER
1494 config->setGroup("KOrganizer Geometry"); 1495 config->setGroup("KOrganizer Geometry");
1495 1496
1496 QValueList<int> sizes = config->readIntListEntry("Separator1"); 1497 QValueList<int> sizes = config->readIntListEntry("Separator1");
1497 if (sizes.count() != 2) { 1498 if (sizes.count() != 2) {
1498 sizes << mDateNavigator->minimumSizeHint().width(); 1499 sizes << mDateNavigator->minimumSizeHint().width();
1499 sizes << 300; 1500 sizes << 300;
1500 } 1501 }
1501 mPanner->setSizes(sizes); 1502 mPanner->setSizes(sizes);
1502 1503
1503 sizes = config->readIntListEntry("Separator2"); 1504 sizes = config->readIntListEntry("Separator2");
1504 if ( ( mResourceView && sizes.count() == 4 ) || 1505 if ( ( mResourceView && sizes.count() == 4 ) ||
1505 ( !mResourceView && sizes.count() == 3 ) ) { 1506 ( !mResourceView && sizes.count() == 3 ) ) {
1506 mLeftSplitter->setSizes(sizes); 1507 mLeftSplitter->setSizes(sizes);
1507 } 1508 }
1508#endif 1509#endif
1509 globalFlagBlockAgenda = 1; 1510 globalFlagBlockAgenda = 1;
1510 mViewManager->showAgendaView(); 1511 mViewManager->showAgendaView();
1511 //mViewManager->readSettings( config ); 1512 //mViewManager->readSettings( config );
1512 mTodoList->restoreLayout(config,QString("Todo Layout")); 1513 mTodoList->restoreLayout(config,QString("Todo Layout"));
1513 readFilterSettings(config); 1514 readFilterSettings(config);
1514 config->setGroup( "Views" ); 1515 config->setGroup( "Views" );
1515 int dateCount = config->readNumEntry( "ShownDatesCount", 7 ); 1516 int dateCount = config->readNumEntry( "ShownDatesCount", 7 );
1516 if ( dateCount == 5 ) mNavigator->selectWorkWeek(); 1517 if ( dateCount == 5 ) mNavigator->selectWorkWeek();
1517 else if ( dateCount == 7 ) mNavigator->selectWeek(); 1518 else if ( dateCount == 7 ) mNavigator->selectWeek();
1518 else mNavigator->selectDates( dateCount ); 1519 else mNavigator->selectDates( dateCount );
1519 // mViewManager->readSettings( config ); 1520 // mViewManager->readSettings( config );
1520 updateConfig(); 1521 updateConfig();
1521 globalFlagBlockAgenda = 2; 1522 globalFlagBlockAgenda = 2;
1522 mViewManager->readSettings( config ); 1523 mViewManager->readSettings( config );
1523#ifdef DESKTOP_VERSION 1524#ifdef DESKTOP_VERSION
1524 config->setGroup("WidgetLayout"); 1525 config->setGroup("WidgetLayout");
1525 QStringList list; 1526 QStringList list;
1526 list = config->readListEntry("MainLayout"); 1527 list = config->readListEntry("MainLayout");
1527 int x,y,w,h; 1528 int x,y,w,h;
1528 if ( ! list.isEmpty() ) { 1529 if ( ! list.isEmpty() ) {
1529 x = list[0].toInt(); 1530 x = list[0].toInt();
1530 y = list[1].toInt(); 1531 y = list[1].toInt();
1531 w = list[2].toInt(); 1532 w = list[2].toInt();
1532 h = list[3].toInt(); 1533 h = list[3].toInt();
1533 topLevelWidget()->setGeometry(x,y,w,h); 1534 topLevelWidget()->setGeometry(x,y,w,h);
1534 1535
1535 } else { 1536 } else {
1536 topLevelWidget()->setGeometry( 40 ,40 , 640, 440); 1537 topLevelWidget()->setGeometry( 40 ,40 , 640, 440);
1537 } 1538 }
1538 list = config->readListEntry("EditEventLayout"); 1539 list = config->readListEntry("EditEventLayout");
1539 if ( ! list.isEmpty() ) { 1540 if ( ! list.isEmpty() ) {
1540 x = list[0].toInt(); 1541 x = list[0].toInt();
1541 y = list[1].toInt(); 1542 y = list[1].toInt();
1542 w = list[2].toInt(); 1543 w = list[2].toInt();
1543 h = list[3].toInt(); 1544 h = list[3].toInt();
1544 mEventEditor->setGeometry(x,y,w,h); 1545 mEventEditor->setGeometry(x,y,w,h);
1545 1546
1546 } 1547 }
1547 list = config->readListEntry("EditTodoLayout"); 1548 list = config->readListEntry("EditTodoLayout");
1548 if ( ! list.isEmpty() ) { 1549 if ( ! list.isEmpty() ) {
1549 x = list[0].toInt(); 1550 x = list[0].toInt();
1550 y = list[1].toInt(); 1551 y = list[1].toInt();
1551 w = list[2].toInt(); 1552 w = list[2].toInt();
1552 h = list[3].toInt(); 1553 h = list[3].toInt();
1553 mTodoEditor->setGeometry(x,y,w,h); 1554 mTodoEditor->setGeometry(x,y,w,h);
1554 1555
1555 } 1556 }
1556 list = config->readListEntry("ViewerLayout"); 1557 list = config->readListEntry("ViewerLayout");
1557 if ( ! list.isEmpty() ) { 1558 if ( ! list.isEmpty() ) {
1558 x = list[0].toInt(); 1559 x = list[0].toInt();
1559 y = list[1].toInt(); 1560 y = list[1].toInt();
1560 w = list[2].toInt(); 1561 w = list[2].toInt();
1561 h = list[3].toInt(); 1562 h = list[3].toInt();
1562 getEventViewerDialog()->setGeometry(x,y,w,h); 1563 getEventViewerDialog()->setGeometry(x,y,w,h);
1563 } 1564 }
1564#endif 1565#endif
1565 1566
1566
1567 // pending read sync settings;
1568 mSyncProfileNames.clear();
1569 mSyncProfileNames << "Profile_1";
1570 mSyncProfileNames << "Profile_2";
1571 mSyncProfileNames << "Profile_3";
1572 mSyncProfileNames << "Profile_4";
1573 mSyncProfileNames << "Profile_5";
1574 KSyncProfile* temp = new KSyncProfile ();
1575 temp->setName("Profile_1" );
1576 mSyncProfiles.append( temp );
1577 temp = new KSyncProfile ();
1578 temp->setName("Profile_2" );
1579 mSyncProfiles.append( temp );
1580 temp = new KSyncProfile ();
1581 temp->setName("Profile_3" );
1582 mSyncProfiles.append( temp );
1583 temp = new KSyncProfile ();
1584 temp->setName("Profile_4" );
1585 mSyncProfiles.append( temp );
1586 temp = new KSyncProfile ();
1587 temp->setName("Profile_5" );
1588 mSyncProfiles.append( temp );
1589} 1567}
1590 1568
1591 1569
1592void CalendarView::writeSettings() 1570void CalendarView::writeSettings()
1593{ 1571{
1594 // kdDebug() << "CalendarView::writeSettings" << endl; 1572 // kdDebug() << "CalendarView::writeSettings" << endl;
1595 1573
1596 KConfig *config = KOGlobals::config(); 1574 KConfig *config = KOGlobals::config();
1597 1575
1598#ifndef KORG_NOSPLITTER 1576#ifndef KORG_NOSPLITTER
1599 config->setGroup("KOrganizer Geometry"); 1577 config->setGroup("KOrganizer Geometry");
1600 1578
1601 QValueList<int> list = mPanner->sizes(); 1579 QValueList<int> list = mPanner->sizes();
1602 config->writeEntry("Separator1",list); 1580 config->writeEntry("Separator1",list);
1603 1581
1604 list = mLeftSplitter->sizes(); 1582 list = mLeftSplitter->sizes();
1605 config->writeEntry("Separator2",list); 1583 config->writeEntry("Separator2",list);
1606#endif 1584#endif
1607 1585
1608 mViewManager->writeSettings( config ); 1586 mViewManager->writeSettings( config );
1609 mTodoList->saveLayout(config,QString("Todo Layout")); 1587 mTodoList->saveLayout(config,QString("Todo Layout"));
1610 mDialogManager->writeSettings( config ); 1588 mDialogManager->writeSettings( config );
1611 //KOPrefs::instance()->usrWriteConfig(); 1589 //KOPrefs::instance()->usrWriteConfig();
1612 KOPrefs::instance()->writeConfig(); 1590 KOPrefs::instance()->writeConfig();
1613 1591
1614 writeFilterSettings(config); 1592 writeFilterSettings(config);
1615 1593
1616 config->setGroup( "Views" ); 1594 config->setGroup( "Views" );
1617 config->writeEntry( "ShownDatesCount", mNavigator->selectedDates().count() ); 1595 config->writeEntry( "ShownDatesCount", mNavigator->selectedDates().count() );
1618 1596
1619#ifdef DESKTOP_VERSION 1597#ifdef DESKTOP_VERSION
1620 config->setGroup("WidgetLayout"); 1598 config->setGroup("WidgetLayout");
1621 QStringList list ;//= config->readListEntry("MainLayout"); 1599 QStringList list ;//= config->readListEntry("MainLayout");
1622 int x,y,w,h; 1600 int x,y,w,h;
1623 QWidget* wid; 1601 QWidget* wid;
1624 wid = topLevelWidget(); 1602 wid = topLevelWidget();
1625 x = wid->geometry().x(); 1603 x = wid->geometry().x();
1626 y = wid->geometry().y(); 1604 y = wid->geometry().y();
1627 w = wid->width(); 1605 w = wid->width();
1628 h = wid->height(); 1606 h = wid->height();
1629 list.clear(); 1607 list.clear();
1630 list << QString::number( x ); 1608 list << QString::number( x );
1631 list << QString::number( y ); 1609 list << QString::number( y );
1632 list << QString::number( w ); 1610 list << QString::number( w );
1633 list << QString::number( h ); 1611 list << QString::number( h );
1634 config->writeEntry("MainLayout",list ); 1612 config->writeEntry("MainLayout",list );
1635 1613
1636 wid = mEventEditor; 1614 wid = mEventEditor;
1637 x = wid->geometry().x(); 1615 x = wid->geometry().x();
1638 y = wid->geometry().y(); 1616 y = wid->geometry().y();
1639 w = wid->width(); 1617 w = wid->width();
1640 h = wid->height(); 1618 h = wid->height();
1641 list.clear(); 1619 list.clear();
1642 list << QString::number( x ); 1620 list << QString::number( x );
1643 list << QString::number( y ); 1621 list << QString::number( y );
1644 list << QString::number( w ); 1622 list << QString::number( w );
1645 list << QString::number( h ); 1623 list << QString::number( h );
1646 config->writeEntry("EditEventLayout",list ); 1624 config->writeEntry("EditEventLayout",list );
1647 1625
1648 wid = mTodoEditor; 1626 wid = mTodoEditor;
1649 x = wid->geometry().x(); 1627 x = wid->geometry().x();
1650 y = wid->geometry().y(); 1628 y = wid->geometry().y();
1651 w = wid->width(); 1629 w = wid->width();
1652 h = wid->height(); 1630 h = wid->height();
1653 list.clear(); 1631 list.clear();
1654 list << QString::number( x ); 1632 list << QString::number( x );
1655 list << QString::number( y ); 1633 list << QString::number( y );
1656 list << QString::number( w ); 1634 list << QString::number( w );
1657 list << QString::number( h ); 1635 list << QString::number( h );
1658 config->writeEntry("EditTodoLayout",list ); 1636 config->writeEntry("EditTodoLayout",list );
1659 wid = getEventViewerDialog(); 1637 wid = getEventViewerDialog();
1660 x = wid->geometry().x(); 1638 x = wid->geometry().x();
1661 y = wid->geometry().y(); 1639 y = wid->geometry().y();
1662 w = wid->width(); 1640 w = wid->width();
1663 h = wid->height(); 1641 h = wid->height();
1664 list.clear(); 1642 list.clear();
1665 list << QString::number( x ); 1643 list << QString::number( x );
1666 list << QString::number( y ); 1644 list << QString::number( y );
1667 list << QString::number( w ); 1645 list << QString::number( w );
1668 list << QString::number( h ); 1646 list << QString::number( h );
1669 config->writeEntry("ViewerLayout",list ); 1647 config->writeEntry("ViewerLayout",list );
1670 wid = mDialogManager->getSearchDialog(); 1648 wid = mDialogManager->getSearchDialog();
1671 if ( wid ) { 1649 if ( wid ) {
1672 x = wid->geometry().x(); 1650 x = wid->geometry().x();
1673 y = wid->geometry().y(); 1651 y = wid->geometry().y();
1674 w = wid->width(); 1652 w = wid->width();
1675 h = wid->height(); 1653 h = wid->height();
1676 list.clear(); 1654 list.clear();
1677 list << QString::number( x ); 1655 list << QString::number( x );
1678 list << QString::number( y ); 1656 list << QString::number( y );
1679 list << QString::number( w ); 1657 list << QString::number( w );
1680 list << QString::number( h ); 1658 list << QString::number( h );
1681 config->writeEntry("SearchLayout",list ); 1659 config->writeEntry("SearchLayout",list );
1682 } 1660 }
1683#endif 1661#endif
1684 1662
diff --git a/korganizer/calendarview.h b/korganizer/calendarview.h
index fda02f7..8aa5e1c 100644
--- a/korganizer/calendarview.h
+++ b/korganizer/calendarview.h
@@ -389,194 +389,192 @@ class CalendarView : public KOrg::CalendarViewBase, public KCal::Calendar::Obser
389 void goToday(); 389 void goToday();
390 390
391 /** Move to the next date(s) in the current view */ 391 /** Move to the next date(s) in the current view */
392 void goNext(); 392 void goNext();
393 393
394 /** Move to the previous date(s) in the current view */ 394 /** Move to the previous date(s) in the current view */
395 void goPrevious(); 395 void goPrevious();
396 /** Move to the next date(s) in the current view */ 396 /** Move to the next date(s) in the current view */
397 void goNextMonth(); 397 void goNextMonth();
398 398
399 /** Move to the previous date(s) in the current view */ 399 /** Move to the previous date(s) in the current view */
400 void goPreviousMonth(); 400 void goPreviousMonth();
401 401
402 void toggleExpand(); 402 void toggleExpand();
403 void toggleDateNavigatorWidget(); 403 void toggleDateNavigatorWidget();
404 void toggleAllDaySize(); 404 void toggleAllDaySize();
405 void dialogClosing(Incidence *); 405 void dialogClosing(Incidence *);
406 406
407 /** Look for new messages in the inbox */ 407 /** Look for new messages in the inbox */
408 void lookForIncomingMessages(); 408 void lookForIncomingMessages();
409 /** Look for new messages in the outbox */ 409 /** Look for new messages in the outbox */
410 void lookForOutgoingMessages(); 410 void lookForOutgoingMessages();
411 411
412 void processMainViewSelection( Incidence * ); 412 void processMainViewSelection( Incidence * );
413 void processTodoListSelection( Incidence * ); 413 void processTodoListSelection( Incidence * );
414 414
415 void processIncidenceSelection( Incidence * ); 415 void processIncidenceSelection( Incidence * );
416 416
417 void purgeCompleted(); 417 void purgeCompleted();
418 bool removeCompletedSubTodos( Todo* ); 418 bool removeCompletedSubTodos( Todo* );
419 void slotCalendarChanged(); 419 void slotCalendarChanged();
420 bool importBday(); 420 bool importBday();
421 bool addAnniversary( QDate data, QString name, KCal::Attendee* a , bool birthday ); 421 bool addAnniversary( QDate data, QString name, KCal::Attendee* a , bool birthday );
422 bool importQtopia( const QString &categoriesFile, 422 bool importQtopia( const QString &categoriesFile,
423 const QString &datebookFile, 423 const QString &datebookFile,
424 const QString &tasklistFile ); 424 const QString &tasklistFile );
425 void syncSharp( ); 425 void syncSharp( );
426 void slotSelectPickerDate( QDate ) ; 426 void slotSelectPickerDate( QDate ) ;
427 void showDatePicker( ) ; 427 void showDatePicker( ) ;
428 void moveIncidence(Incidence *) ; 428 void moveIncidence(Incidence *) ;
429 void beamIncidence(Incidence *) ; 429 void beamIncidence(Incidence *) ;
430 void beamCalendar() ; 430 void beamCalendar() ;
431 void beamFilteredCalendar() ; 431 void beamFilteredCalendar() ;
432 void beamIncidenceList(QPtrList<Incidence>) ; 432 void beamIncidenceList(QPtrList<Incidence>) ;
433 void manageCategories(); 433 void manageCategories();
434 int addCategories(); 434 int addCategories();
435 void removeCategories(); 435 void removeCategories();
436 void setSyncDevice( QString ); 436 void setSyncDevice( QString );
437 void setSyncName( QString ); 437 void setSyncName( QString );
438 protected slots: 438 protected slots:
439 void timerAlarm(); 439 void timerAlarm();
440 void suspendAlarm(); 440 void suspendAlarm();
441 void beamDone( Ir *ir ); 441 void beamDone( Ir *ir );
442 /** Select a view or adapt the current view to display the specified dates. */ 442 /** Select a view or adapt the current view to display the specified dates. */
443 void showDates( const KCal::DateList & ); 443 void showDates( const KCal::DateList & );
444 void selectWeekNum ( int ); 444 void selectWeekNum ( int );
445 445
446 public: 446 public:
447 // show a standard warning 447 // show a standard warning
448 // returns KMsgBox::yesNoCancel() 448 // returns KMsgBox::yesNoCancel()
449 int msgCalModified(); 449 int msgCalModified();
450 void confSync(); 450 void confSync();
451 void setLoadedFileVersion(QDateTime); 451 void setLoadedFileVersion(QDateTime);
452 bool checkFileVersion(QString fn); 452 bool checkFileVersion(QString fn);
453 bool checkFileChanged(QString fn); 453 bool checkFileChanged(QString fn);
454 Event* getLastSyncEvent(); 454 Event* getLastSyncEvent();
455 /** Adapt navigation units correpsonding to step size of navigation of the 455 /** Adapt navigation units correpsonding to step size of navigation of the
456 * current view. 456 * current view.
457 */ 457 */
458 void adaptNavigationUnits(); 458 void adaptNavigationUnits();
459 bool synchronizeCalendar( Calendar* local, Calendar* remote, int mode ); 459 bool synchronizeCalendar( Calendar* local, Calendar* remote, int mode );
460 int takeEvent( Incidence* local, Incidence* remote, int mode, bool full = false ); 460 int takeEvent( Incidence* local, Incidence* remote, int mode, bool full = false );
461 //Attendee* getYourAttendee(Event *event); 461 //Attendee* getYourAttendee(Event *event);
462 protected: 462 protected:
463 void schedule(Scheduler::Method, Incidence *incidence = 0); 463 void schedule(Scheduler::Method, Incidence *incidence = 0);
464 464
465 // returns KMsgBox::OKCandel() 465 // returns KMsgBox::OKCandel()
466 int msgItemDelete(); 466 int msgItemDelete();
467 void showEventEditor(); 467 void showEventEditor();
468 void showTodoEditor(); 468 void showTodoEditor();
469 void writeLocale(); 469 void writeLocale();
470 Todo *selectedTodo(); 470 Todo *selectedTodo();
471 471
472 private: 472 private:
473 AlarmDialog * mAlarmDialog; 473 AlarmDialog * mAlarmDialog;
474 QString mAlarmNotification; 474 QString mAlarmNotification;
475 QString mSuspendAlarmNotification; 475 QString mSuspendAlarmNotification;
476 QTimer* mSuspendTimer; 476 QTimer* mSuspendTimer;
477 QTimer* mAlarmTimer; 477 QTimer* mAlarmTimer;
478 QTimer* mRecheckAlarmTimer; 478 QTimer* mRecheckAlarmTimer;
479 void computeAlarm( QString ); 479 void computeAlarm( QString );
480 void startAlarm( QString, QString ); 480 void startAlarm( QString, QString );
481 void setSyncEventsReadOnly(); 481 void setSyncEventsReadOnly();
482 482
483 QDateTime loadedFileVersion; 483 QDateTime loadedFileVersion;
484 void checkSharpEvent( Event* lastSync, Incidence* toDelete ); 484 void checkSharpEvent( Event* lastSync, Incidence* toDelete );
485 QPtrList<KSyncProfile> mSyncProfiles;
486 QStringList mSyncProfileNames;
487 void checkZaurusId( int id, bool todo = false ); 485 void checkZaurusId( int id, bool todo = false );
488 int mGlobalSyncMode; 486 int mGlobalSyncMode;
489 QString mCurrentSyncDevice; 487 QString mCurrentSyncDevice;
490 QString mCurrentSyncName; 488 QString mCurrentSyncName;
491 KOBeamPrefs* beamDialog; 489 KOBeamPrefs* beamDialog;
492 void init(); 490 void init();
493 int mDatePickerMode; 491 int mDatePickerMode;
494 bool mFlagEditDescription; 492 bool mFlagEditDescription;
495 QDateTime mLastCalendarSync; 493 QDateTime mLastCalendarSync;
496 void createPrinter(); 494 void createPrinter();
497 495
498 void calendarModified( bool, Calendar * ); 496 void calendarModified( bool, Calendar * );
499 497
500 CalPrinter *mCalPrinter; 498 CalPrinter *mCalPrinter;
501 499
502 QSplitter *mPanner; 500 QSplitter *mPanner;
503 QSplitter *mLeftSplitter; 501 QSplitter *mLeftSplitter;
504 QWidget *mLeftFrame; 502 QWidget *mLeftFrame;
505 QWidgetStack *mRightFrame; 503 QWidgetStack *mRightFrame;
506 504
507 KDatePicker* mDatePicker; 505 KDatePicker* mDatePicker;
508 QVBox* mDateFrame; 506 QVBox* mDateFrame;
509 NavigatorBar *mNavigatorBar; 507 NavigatorBar *mNavigatorBar;
510 508
511 KDateNavigator *mDateNavigator; // widget showing small month view. 509 KDateNavigator *mDateNavigator; // widget showing small month view.
512 510
513 KOFilterView *mFilterView; 511 KOFilterView *mFilterView;
514 512
515 ResourceView *mResourceView; 513 ResourceView *mResourceView;
516 514
517 // calendar object for this viewing instance 515 // calendar object for this viewing instance
518 Calendar *mCalendar; 516 Calendar *mCalendar;
519 517
520 CalendarResourceManager *mResourceManager; 518 CalendarResourceManager *mResourceManager;
521 519
522 FileStorage *mStorage; 520 FileStorage *mStorage;
523 521
524 DateNavigator *mNavigator; 522 DateNavigator *mNavigator;
525 523
526 KOViewManager *mViewManager; 524 KOViewManager *mViewManager;
527 KODialogManager *mDialogManager; 525 KODialogManager *mDialogManager;
528 526
529 // Calendar filters 527 // Calendar filters
530 QPtrList<CalFilter> mFilters; 528 QPtrList<CalFilter> mFilters;
531 529
532 // various housekeeping variables. 530 // various housekeeping variables.
533 bool mModified; // flag indicating if calendar is modified 531 bool mModified; // flag indicating if calendar is modified
534 bool mReadOnly; // flag indicating if calendar is read-only 532 bool mReadOnly; // flag indicating if calendar is read-only
535 QDate mSaveSingleDate; 533 QDate mSaveSingleDate;
536 534
537 Incidence *mSelectedIncidence; 535 Incidence *mSelectedIncidence;
538 Incidence *mMoveIncidence; 536 Incidence *mMoveIncidence;
539 537
540 KOTodoView *mTodoList; 538 KOTodoView *mTodoList;
541 KOEventEditor * mEventEditor; 539 KOEventEditor * mEventEditor;
542 KOTodoEditor * mTodoEditor; 540 KOTodoEditor * mTodoEditor;
543 KOEventViewerDialog * mEventViewerDialog; 541 KOEventViewerDialog * mEventViewerDialog;
544 void keyPressEvent ( QKeyEvent *e) ; 542 void keyPressEvent ( QKeyEvent *e) ;
545 //QMap<Incidence*,KOIncidenceEditor*> mDialogList; 543 //QMap<Incidence*,KOIncidenceEditor*> mDialogList;
546}; 544};
547 545
548 546
549class CalendarViewVisitor : public Incidence::Visitor 547class CalendarViewVisitor : public Incidence::Visitor
550{ 548{
551 public: 549 public:
552 CalendarViewVisitor() : mView( 0 ) {} 550 CalendarViewVisitor() : mView( 0 ) {}
553 551
554 bool act( Incidence *incidence, CalendarView *view ) 552 bool act( Incidence *incidence, CalendarView *view )
555 { 553 {
556 mView = view; 554 mView = view;
557 return incidence->accept( *this ); 555 return incidence->accept( *this );
558 } 556 }
559 557
560 protected: 558 protected:
561 CalendarView *mView; 559 CalendarView *mView;
562}; 560};
563 561
564class ShowIncidenceVisitor : public CalendarViewVisitor 562class ShowIncidenceVisitor : public CalendarViewVisitor
565{ 563{
566 protected: 564 protected:
567 bool visit( Event *event ) { mView->showEvent( event ); return true; } 565 bool visit( Event *event ) { mView->showEvent( event ); return true; }
568 bool visit( Todo *todo ) { mView->showTodo( todo ); return true; } 566 bool visit( Todo *todo ) { mView->showTodo( todo ); return true; }
569 bool visit( Journal * j ) { mView->showJournal( j );return true; } 567 bool visit( Journal * j ) { mView->showJournal( j );return true; }
570}; 568};
571 569
572class EditIncidenceVisitor : public CalendarViewVisitor 570class EditIncidenceVisitor : public CalendarViewVisitor
573{ 571{
574 protected: 572 protected:
575 bool visit( Event *event ) { mView->editEvent( event ); return true; } 573 bool visit( Event *event ) { mView->editEvent( event ); return true; }
576 bool visit( Todo *todo ) { mView->editTodo( todo ); return true; } 574 bool visit( Todo *todo ) { mView->editTodo( todo ); return true; }
577 bool visit( Journal *j ) { mView->editJournal( j); return true; } 575 bool visit( Journal *j ) { mView->editJournal( j); return true; }
578}; 576};
579 577
580class DeleteIncidenceVisitor : public CalendarViewVisitor 578class DeleteIncidenceVisitor : public CalendarViewVisitor
581{ 579{
582 protected: 580 protected:
diff --git a/korganizer/kosyncprefsdialog.cpp b/korganizer/kosyncprefsdialog.cpp
index b7e4265..7c838f5 100644
--- a/korganizer/kosyncprefsdialog.cpp
+++ b/korganizer/kosyncprefsdialog.cpp
@@ -1,452 +1,468 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 2004 Lutz Rogowski <rogowski@kde.org> 3 Copyright (c) 2004 Lutz Rogowski <rogowski@kde.org>
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18 18
19 As a special exception, permission is given to link this program 19 As a special exception, permission is given to link this program
20 with any edition of Qt, and distribute the resulting executable, 20 with any edition of Qt, and distribute the resulting executable,
21 without including the source code for Qt in the source distribution. 21 without including the source code for Qt in the source distribution.
22*/ 22*/
23 23
24#include <qlayout.h> 24#include <qlayout.h>
25#include <qlabel.h> 25#include <qlabel.h>
26#include <qgroupbox.h> 26#include <qgroupbox.h>
27#include <qbuttongroup.h> 27#include <qbuttongroup.h>
28#include <qlineedit.h> 28#include <qlineedit.h>
29#include <qfont.h> 29#include <qfont.h>
30#include <qslider.h> 30#include <qslider.h>
31#include <qfile.h> 31#include <qfile.h>
32#include <qdir.h>
32#include <qtextstream.h> 33#include <qtextstream.h>
33#include <qcombobox.h> 34#include <qcombobox.h>
34#include <qvbox.h> 35#include <qvbox.h>
35#include <qhbox.h> 36#include <qhbox.h>
36#include <qspinbox.h> 37#include <qspinbox.h>
37#include <qdatetime.h> 38#include <qdatetime.h>
38#include <qcheckbox.h> 39#include <qcheckbox.h>
39#include <qradiobutton.h> 40#include <qradiobutton.h>
40#include <qpushbutton.h> 41#include <qpushbutton.h>
41#include <qstrlist.h> 42#include <qstrlist.h>
42#include <qapplication.h> 43#include <qapplication.h>
43 44
44#include <kcolorbutton.h> 45#include <kcolorbutton.h>
45#include <kdebug.h> 46#include <kdebug.h>
46#include <klocale.h> 47#include <klocale.h>
47#include <kglobal.h> 48#include <kglobal.h>
48#include <kfontdialog.h> 49#include <kfontdialog.h>
49#include <kmessagebox.h> 50#include <kmessagebox.h>
50#include <kcolordialog.h> 51#include <kcolordialog.h>
51#include <kiconloader.h> 52#include <kiconloader.h>
52#include <kemailsettings.h> 53#include <kemailsettings.h>
53#include <kstandarddirs.h> 54#include <kstandarddirs.h>
54#include <kfiledialog.h> 55#include <kfiledialog.h>
55#include <kmessagebox.h> 56#include <kmessagebox.h>
56 57
57#include <kurlrequester.h> 58#include <kurlrequester.h>
58#include <klineedit.h> 59#include <klineedit.h>
59#include <libkdepim/ksyncprofile.h> 60#include <libkdepim/ksyncprofile.h>
60 61
61 62
62#include "koprefs.h" 63//#include "koprefs.h"
63 64
64#include "kosyncprefsdialog.h" 65#include "kosyncprefsdialog.h"
65#include "koglobals.h" 66//#include "koglobals.h"
66 67
67 68
68KOSyncPrefsDialog::KOSyncPrefsDialog(QWidget *parent, char *name, bool modal) : 69KOSyncPrefsDialog::KOSyncPrefsDialog(QWidget *parent, char *name, bool modal) :
69 KDialog(parent,name,true) 70 KDialog(parent,name,true)
70{ 71{
71 72
72 setCaption( i18n("Synchronization Preferences")); 73 setCaption( i18n("Synchronization Preferences"));
73 74
74 mSyncProfiles.setAutoDelete( true ); 75 mSyncProfiles.setAutoDelete( true );
75 setupSyncAlgTab(); 76 setupSyncAlgTab();
76} 77}
77 78
78 79
79KOSyncPrefsDialog::~KOSyncPrefsDialog() 80KOSyncPrefsDialog::~KOSyncPrefsDialog()
80{ 81{
81} 82}
82 83
83#include <qlayout.h> 84#include <qlayout.h>
84#include <qscrollview.h> 85#include <qscrollview.h>
85void KOSyncPrefsDialog::setupSyncAlgTab() 86void KOSyncPrefsDialog::setupSyncAlgTab()
86{ 87{
87 QLabel * lab; 88 QLabel * lab;
88 //QFrame *page = addPage(i18n("Sync Prefs"),0,0); 89 //QFrame *page = addPage(i18n("Sync Prefs"),0,0);
89 QVBox * mainbox = new QVBox( this ); 90 QVBox * mainbox = new QVBox( this );
90 QScrollView* sv = new QScrollView( mainbox ); 91 QScrollView* sv = new QScrollView( mainbox );
91 QHBoxLayout * lay = new QHBoxLayout( this ); 92 QHBoxLayout * lay = new QHBoxLayout( this );
92 lay->addWidget( mainbox ); 93 lay->addWidget( mainbox );
93 QHBox * b_box = new QHBox( mainbox ); 94 QHBox * b_box = new QHBox( mainbox );
94 95
95 QPushButton* button = new QPushButton( i18n("Ok"), b_box ); 96 QPushButton* button = new QPushButton( i18n("Ok"), b_box );
96 connect ( button, SIGNAL( clicked()), this, SLOT (slotOK() ) ); 97 connect ( button, SIGNAL( clicked()), this, SLOT (slotOK() ) );
97 button = new QPushButton( i18n("Cancel"), b_box ); 98 button = new QPushButton( i18n("Cancel"), b_box );
98 connect ( button, SIGNAL( clicked()), this, SLOT (reject() ) ); 99 connect ( button, SIGNAL( clicked()), this, SLOT (reject() ) );
99 //QBoxLayout * sl = new QVBoxLayout(this ); 100 //QBoxLayout * sl = new QVBoxLayout(this );
100 //sl->addWidget ( sv ); 101 //sl->addWidget ( sv );
101 sv->setResizePolicy ( QScrollView::AutoOneFit ); 102 sv->setResizePolicy ( QScrollView::AutoOneFit );
102 QFrame *topFrame = new QFrame ( sv ); 103 QFrame *topFrame = new QFrame ( sv );
103 sv->addChild( topFrame ); 104 sv->addChild( topFrame );
104 mSetupSyncAlgTab = topFrame; 105 mSetupSyncAlgTab = topFrame;
105 QGridLayout *topLayout = new QGridLayout(topFrame,6,2); 106 QGridLayout *topLayout = new QGridLayout(topFrame,6,2);
106 topLayout->setSpacing(spacingHint()); 107 topLayout->setSpacing(spacingHint());
107 topLayout->setMargin(marginHint()); 108 topLayout->setMargin(marginHint());
108 109
109 //lab = new QLabel(i18n("Sync settings not yet implemented. DO NOT USE!"), topFrame); 110 //lab = new QLabel(i18n("Sync settings not yet implemented. DO NOT USE!"), topFrame);
110 int iii = 0; 111 int iii = 0;
111 //topLayout->addMultiCellWidget(lab , iii,iii,0,1); 112 //topLayout->addMultiCellWidget(lab , iii,iii,0,1);
112 //++iii; 113 //++iii;
113 114
114 mMyMachineName = new QLineEdit(topFrame); 115 mMyMachineName = new QLineEdit(topFrame);
115 lab = new QLabel(mMyMachineName, i18n("Local device name:"), topFrame); 116 lab = new QLabel(mMyMachineName, i18n("Local device name:"), topFrame);
116 topLayout->addWidget(lab ,iii,0); 117 topLayout->addWidget(lab ,iii,0);
117 topLayout->addWidget(mMyMachineName,iii,1); 118 topLayout->addWidget(mMyMachineName,iii,1);
118 ++iii; 119 ++iii;
119 120
120 QHBox* buttonbox = new QHBox( topFrame); 121 QHBox* buttonbox = new QHBox( topFrame);
121 topLayout->addMultiCellWidget(buttonbox, iii,iii,0,1); 122 topLayout->addMultiCellWidget(buttonbox, iii,iii,0,1);
122 ++iii; 123 ++iii;
123 button = new QPushButton( i18n("New profile"), buttonbox ); 124 button = new QPushButton( i18n("New profile"), buttonbox );
124 connect ( button, SIGNAL( clicked()), this, SLOT (newProfile() ) ); 125 connect ( button, SIGNAL( clicked()), this, SLOT (newProfile() ) );
125 126
126 button = new QPushButton( i18n("Clone profile"), buttonbox ); 127 button = new QPushButton( i18n("Clone profile"), buttonbox );
127 connect ( button, SIGNAL( clicked()), this, SLOT ( cloneProfile() ) ); 128 connect ( button, SIGNAL( clicked()), this, SLOT ( cloneProfile() ) );
128 129
129 button = new QPushButton( i18n("Delete profile"), buttonbox ); 130 button = new QPushButton( i18n("Delete profile"), buttonbox );
130 connect ( button, SIGNAL( clicked()), this, SLOT (deleteProfile() ) ); 131 connect ( button, SIGNAL( clicked()), this, SLOT (deleteProfile() ) );
131 132
132 mProfileBox = new QComboBox(topFrame); 133 mProfileBox = new QComboBox(topFrame);
133 mProfileBox->setEditable ( true ); 134 mProfileBox->setEditable ( true );
134 connect ( mProfileBox, SIGNAL(activated ( int ) ), this, SLOT (profileChanged( int ) ) ); 135 connect ( mProfileBox, SIGNAL(activated ( int ) ), this, SLOT (profileChanged( int ) ) );
135 connect ( mProfileBox, SIGNAL( textChanged ( const QString & ) ), this, SLOT (textChanged( const QString & ) ) ); 136 connect ( mProfileBox, SIGNAL( textChanged ( const QString & ) ), this, SLOT (textChanged( const QString & ) ) );
136 137
137 lab = new QLabel(mProfileBox, i18n("Profile:"), topFrame); 138 lab = new QLabel(mProfileBox, i18n("Profile:"), topFrame);
138 topLayout->addWidget(lab ,iii,0); 139 topLayout->addWidget(lab ,iii,0);
139 topLayout->addWidget(mProfileBox, iii,1); 140 topLayout->addWidget(mProfileBox, iii,1);
140 ++iii; 141 ++iii;
141 142
142 mIncludeInRing = new QCheckBox( i18n("Include in multiple sync"), topFrame ); 143 mIncludeInRing = new QCheckBox( i18n("Include in multiple sync"), topFrame );
143 topLayout->addMultiCellWidget(mIncludeInRing, iii,iii,0,1); 144 topLayout->addMultiCellWidget(mIncludeInRing, iii,iii,0,1);
144 ++iii; 145 ++iii;
145 146
146 mAskForPreferences = new QCheckBox( i18n("Ask for preferences before sync"), topFrame ); 147 mAskForPreferences = new QCheckBox( i18n("Ask for preferences before sync"), topFrame );
147 topLayout->addMultiCellWidget(mAskForPreferences, iii,iii,0,1); 148 topLayout->addMultiCellWidget(mAskForPreferences, iii,iii,0,1);
148 ++iii; 149 ++iii;
149 QButtonGroup* gr = new QButtonGroup ( 1, Qt::Horizontal, i18n("Sync preferences"), topFrame); 150 QButtonGroup* gr = new QButtonGroup ( 1, Qt::Horizontal, i18n("Sync preferences"), topFrame);
150 topLayout->addMultiCellWidget(gr, iii,iii,0,1); 151 topLayout->addMultiCellWidget(gr, iii,iii,0,1);
151 ++iii; 152 ++iii;
152 loc = new QRadioButton ( i18n("Take local entry on conflict"), gr ); 153 loc = new QRadioButton ( i18n("Take local entry on conflict"), gr );
153 rem = new QRadioButton ( i18n("Take remote entry on conflict"), gr ); 154 rem = new QRadioButton ( i18n("Take remote entry on conflict"), gr );
154 newest = new QRadioButton ( i18n("Take newest entry on conflict"), gr ); 155 newest = new QRadioButton ( i18n("Take newest entry on conflict"), gr );
155 ask = new QRadioButton ( i18n("Ask for every entry on conflict"), gr ); 156 ask = new QRadioButton ( i18n("Ask for every entry on conflict"), gr );
156 f_loc= new QRadioButton ( i18n("Force: Take local entry always"), gr ); 157 f_loc= new QRadioButton ( i18n("Force: Take local entry always"), gr );
157 f_rem = new QRadioButton ( i18n("Force: Take remote entry always"), gr ); 158 f_rem = new QRadioButton ( i18n("Force: Take remote entry always"), gr );
158 // both = new QRadioButton ( i18n("Take both on conflict"), gr ); 159 // both = new QRadioButton ( i18n("Take both on conflict"), gr );
159 160
160 mShowSummaryAfterSync = new QCheckBox( i18n("Show summary after sync"), topFrame ); 161 mShowSummaryAfterSync = new QCheckBox( i18n("Show summary after sync"), topFrame );
161 topLayout->addMultiCellWidget(mShowSummaryAfterSync, iii,iii,0,1); 162 topLayout->addMultiCellWidget(mShowSummaryAfterSync, iii,iii,0,1);
162 ++iii; 163 ++iii;
163 164
164 mWriteBackExisting= new QCheckBox( i18n("Write back existing entries only"), topFrame ); 165 mWriteBackExisting= new QCheckBox( i18n("Write back existing entries only"), topFrame );
165 topLayout->addMultiCellWidget(mWriteBackExisting, iii,iii,0,1); 166 topLayout->addMultiCellWidget(mWriteBackExisting, iii,iii,0,1);
166 ++iii; 167 ++iii;
167 168
168 mWriteBackFile = new QCheckBox( i18n("Write back file"), topFrame ); 169 mWriteBackFile = new QCheckBox( i18n("Write back file"), topFrame );
169 topLayout->addMultiCellWidget(mWriteBackFile, iii,iii,0,1); 170 topLayout->addMultiCellWidget(mWriteBackFile, iii,iii,0,1);
170 ++iii; 171 ++iii;
171 172
172 proGr = new QButtonGroup ( 1, Qt::Horizontal, i18n("Profile kind"), topFrame); 173 proGr = new QButtonGroup ( 1, Qt::Horizontal, i18n("Profile kind"), topFrame);
173 gr = proGr; 174 gr = proGr;
174 topLayout->addMultiCellWidget(gr, iii,iii,0,1); 175 topLayout->addMultiCellWidget(gr, iii,iii,0,1);
175 ++iii; 176 ++iii;
176 mIsLocal = new QRadioButton ( i18n("Local file"), gr ); 177 mIsLocal = new QRadioButton ( i18n("Local file"), gr );
177 mIsNotLocal = new QRadioButton ( i18n("Remote file (w down/upload command)"), gr ); 178 mIsNotLocal = new QRadioButton ( i18n("Remote file (w down/upload command)"), gr );
178 connect (mIsLocal, SIGNAL( toggled(bool)), this, SLOT (kindChanged(bool) ) ); 179 connect (mIsLocal, SIGNAL( toggled(bool)), this, SLOT (kindChanged(bool) ) );
179 180
180 localFileWidget = new QVBox( topFrame); 181 localFileWidget = new QVBox( topFrame);
181 topLayout->addMultiCellWidget(localFileWidget, iii,iii,0,1); 182 topLayout->addMultiCellWidget(localFileWidget, iii,iii,0,1);
182 ++iii; 183 ++iii;
183 QHBox* temphb = new QHBox( localFileWidget ); 184 QHBox* temphb = new QHBox( localFileWidget );
184 lab = new QLabel( i18n("Local file:"), temphb); 185 lab = new QLabel( i18n("Local file:"), temphb);
185 mRemoteFile = new QLineEdit(localFileWidget); 186 mRemoteFile = new QLineEdit(localFileWidget);
186 187
187 button = new QPushButton( i18n("Choose..."), temphb ); 188 button = new QPushButton( i18n("Choose..."), temphb );
188 connect ( button, SIGNAL( clicked()), this, SLOT ( chooseFile() ) ); 189 connect ( button, SIGNAL( clicked()), this, SLOT ( chooseFile() ) );
189 190
190 191
191 remoteFileWidget = new QVBox( topFrame); 192 remoteFileWidget = new QVBox( topFrame);
192 topLayout->addMultiCellWidget(remoteFileWidget, iii,iii,0,1); 193 topLayout->addMultiCellWidget(remoteFileWidget, iii,iii,0,1);
193 ++iii; 194 ++iii;
194 lab = new QLabel( i18n("Pre sync (download) command:"), remoteFileWidget); 195 lab = new QLabel( i18n("Pre sync (download) command:"), remoteFileWidget);
195 mRemotePrecommand = new QLineEdit(remoteFileWidget); 196 mRemotePrecommand = new QLineEdit(remoteFileWidget);
196 197
197 lab = new QLabel( i18n("Local temp file:"), remoteFileWidget); 198 lab = new QLabel( i18n("Local temp file:"), remoteFileWidget);
198 mLocalTempFile = new QLineEdit(remoteFileWidget); 199 mLocalTempFile = new QLineEdit(remoteFileWidget);
199 200
200 201
201 lab = new QLabel( i18n("Post sync (upload) command:"), remoteFileWidget); 202 lab = new QLabel( i18n("Post sync (upload) command:"), remoteFileWidget);
202 mRemotePostcommand = new QLineEdit(remoteFileWidget); 203 mRemotePostcommand = new QLineEdit(remoteFileWidget);
203 204
204 lab = new QLabel( i18n("Fill in default values for:"), remoteFileWidget); 205 lab = new QLabel( i18n("Fill in default values for:"), remoteFileWidget);
205 temphb = new QHBox( remoteFileWidget ); 206 temphb = new QHBox( remoteFileWidget );
206 button = new QPushButton( i18n("ssh/scp"), temphb ); 207 button = new QPushButton( i18n("ssh/scp"), temphb );
207 connect ( button, SIGNAL( clicked()), this, SLOT (fillSSH() ) ); 208 connect ( button, SIGNAL( clicked()), this, SLOT (fillSSH() ) );
208 button = new QPushButton( i18n("ftp"), temphb ); 209 button = new QPushButton( i18n("ftp"), temphb );
209 connect ( button, SIGNAL( clicked()), this, SLOT (fillFTP() ) ); 210 connect ( button, SIGNAL( clicked()), this, SLOT (fillFTP() ) );
210 lab = new QLabel( i18n("Hint: Use $PWD$ for placeholder of password!"), remoteFileWidget); 211 lab = new QLabel( i18n("Hint: Use $PWD$ for placeholder of password!"), remoteFileWidget);
211 212
212 213
213} 214}
214void KOSyncPrefsDialog::slotOK() 215void KOSyncPrefsDialog::slotOK()
215{ 216{
216 if ( mMyMachineName->text() == "undefined" ) { 217 if ( mMyMachineName->text() == "undefined" ) {
217 KMessageBox::error(this,i18n("Local device name undefined!\nPlease define device name!"),i18n("KO/Pi config error")); 218 KMessageBox::error(this,i18n("Local device name undefined!\nPlease define device name!"),i18n("KO/Pi config error"));
218 return; 219 return;
219 } 220 }
220 int i; 221 int i;
221 for (i = 0; i < mSyncProfileNames.count(); ++ i) { 222 for (i = 0; i < mSyncProfileNames.count(); ++ i) {
222 if ( mSyncProfileNames.contains( mSyncProfileNames[i]) > 1 ) { 223 if ( mSyncProfileNames.contains( mSyncProfileNames[i]) > 1 ) {
223 KMessageBox::error(this,i18n("Multiple profiles with same name!\nPlease use unique profile names!"),i18n("KO/Pi config error")); 224 KMessageBox::error(this,i18n("Multiple profiles with same name!\nPlease use unique profile names!"),i18n("KO/Pi config error"));
224 return; 225 return;
225 } 226 }
226 } 227 }
227 usrWriteConfig(); 228 usrWriteConfig();
228 QDialog::accept(); 229 QDialog::accept();
229} 230}
230void KOSyncPrefsDialog::accept() 231void KOSyncPrefsDialog::accept()
231{ 232{
232 slotOK(); 233 slotOK();
233} 234}
234void KOSyncPrefsDialog::chooseFile() 235void KOSyncPrefsDialog::chooseFile()
235{ 236{
236 QString fn =KOPrefs::instance()->mLastSyncedLocalFile; 237 QString fn = QDir::homeDirPath();
237 238
238 fn =KFileDialog:: getOpenFileName( fn, i18n("Sync filename(*.ics/*.vcs)"), this ); 239 fn =KFileDialog:: getOpenFileName( fn, i18n("Sync filename(*.ics/*.vcs)"), this );
239 if ( fn == "" ) 240 if ( fn == "" )
240 return; 241 return;
241 mRemoteFile->setText( fn ); 242 mRemoteFile->setText( fn );
242} 243}
243 244
244void KOSyncPrefsDialog::textChanged( const QString & s ) 245void KOSyncPrefsDialog::textChanged( const QString & s )
245{ 246{
246 if ( mProfileBox->count() == 0 ) 247 if ( mProfileBox->count() == 0 )
247 return; 248 return;
248 if ( currentSelection < 3 ) { 249 if ( currentSelection < 3 ) {
249 //KMessageBox::error(this,i18n("This profil name\ncannot be edited!\n"),i18n("KO/Pi config error")); 250 //KMessageBox::error(this,i18n("This profil name\ncannot be edited!\n"),i18n("KO/Pi config error"));
250 mProfileBox->blockSignals( true ); 251 mProfileBox->blockSignals( true );
251 mProfileBox->setCurrentItem(mProfileBox-> currentItem ()); 252 mProfileBox->setCurrentItem(mProfileBox-> currentItem ());
252 mProfileBox->blockSignals( false ); 253 mProfileBox->blockSignals( false );
253 return; 254 return;
254 } 255 }
255 //qDebug("cur i %d ",mProfileBox-> currentItem () ); 256 //qDebug("cur i %d ",mProfileBox-> currentItem () );
256 mProfileBox->changeItem ( s, mProfileBox-> currentItem () ) ; 257 mProfileBox->changeItem ( s, mProfileBox-> currentItem () ) ;
257 KSyncProfile* prof = mSyncProfiles.at(mProfileBox-> currentItem ()) ; 258 KSyncProfile* prof = mSyncProfiles.at(mProfileBox-> currentItem ()) ;
258 prof->setName( s ); 259 prof->setName( s );
259 mSyncProfileNames[mProfileBox-> currentItem ()] = s; 260 mSyncProfileNames[mProfileBox-> currentItem ()] = s;
260} 261}
261void KOSyncPrefsDialog::profileChanged( int item ) 262void KOSyncPrefsDialog::profileChanged( int item )
262{ 263{
263 //qDebug("KOSyncPrefsDialog::profileChanged %d ", item ); 264 //qDebug("KOSyncPrefsDialog::profileChanged %d ", item );
264 KSyncProfile* prof; 265 KSyncProfile* prof;
265 saveProfile(); 266 saveProfile();
266 currentSelection = item; 267 currentSelection = item;
267 prof = mSyncProfiles.at(item) ; 268 prof = mSyncProfiles.at(item) ;
268 mRemotePrecommand->setText(prof->getPreSyncCommand()); 269 mRemotePrecommand->setText(prof->getPreSyncCommand());
269 mRemotePostcommand->setText(prof->getPostSyncCommand()); 270 mRemotePostcommand->setText(prof->getPostSyncCommand());
270 mLocalTempFile->setText(prof->getLocalTempFile()); 271 mLocalTempFile->setText(prof->getLocalTempFile());
271 mRemoteFile->setText(prof->getRemoteFileName()) ; 272 mRemoteFile->setText(prof->getRemoteFileName()) ;
272 mShowSummaryAfterSync->setChecked( prof->getShowSummaryAfterSync()); 273 mShowSummaryAfterSync->setChecked( prof->getShowSummaryAfterSync());
273 mAskForPreferences->setChecked( prof->getAskForPreferences()); 274 mAskForPreferences->setChecked( prof->getAskForPreferences());
274 mWriteBackExisting->setChecked( prof->getWriteBackExisting() ); 275 mWriteBackExisting->setChecked( prof->getWriteBackExisting() );
275 mWriteBackFile->setChecked( prof->getWriteBackFile()); 276 mWriteBackFile->setChecked( prof->getWriteBackFile());
276 mIncludeInRing->setChecked( prof->getIncludeInRingSync() ); 277 mIncludeInRing->setChecked( prof->getIncludeInRingSync() );
277 278
278 switch ( prof->getSyncPrefs() ) { 279 switch ( prof->getSyncPrefs() ) {
279 case 0: 280 case 0:
280 loc->setChecked( true); 281 loc->setChecked( true);
281 break; 282 break;
282 case 1: 283 case 1:
283 rem->setChecked( true ); 284 rem->setChecked( true );
284 break; 285 break;
285 case 2: 286 case 2:
286 newest->setChecked( true); 287 newest->setChecked( true);
287 break; 288 break;
288 case 3: 289 case 3:
289 ask->setChecked( true); 290 ask->setChecked( true);
290 break; 291 break;
291 case 4: 292 case 4:
292 f_loc->setChecked( true); 293 f_loc->setChecked( true);
293 break; 294 break;
294 case 5: 295 case 5:
295 f_rem->setChecked( true); 296 f_rem->setChecked( true);
296 break; 297 break;
297 case 6: 298 case 6:
298 //both->setChecked( true); 299 //both->setChecked( true);
299 break; 300 break;
300 default: 301 default:
301 break; 302 break;
302 } 303 }
303 mIsLocal->setChecked(prof->getIsLocalFileSync()) ; 304 mIsLocal->setChecked(prof->getIsLocalFileSync()) ;
304 mIsNotLocal->setChecked(!prof->getIsLocalFileSync()); 305 mIsNotLocal->setChecked(!prof->getIsLocalFileSync());
305 proGr->setEnabled( item > 2 ); 306 proGr->setEnabled( item > 2 );
306 if ( item < 3 ) { 307 if ( item < 3 ) {
307 localFileWidget->setEnabled(false); 308 localFileWidget->setEnabled(false);
308 remoteFileWidget->setEnabled(false); 309 remoteFileWidget->setEnabled(false);
309 310
310 } else 311 } else
311 kindChanged( prof->getIsLocalFileSync() ); 312 kindChanged( prof->getIsLocalFileSync() );
312} 313}
313 314
314void KOSyncPrefsDialog::fillSSH() 315void KOSyncPrefsDialog::fillSSH()
315{ 316{
316 mRemotePrecommand->setText("scp zaurus@192.168.0.65:/home/zaurus/kdepim/apps/korganizer/mycalendar.ics /tmp/mycalendar.ics" ); 317 mRemotePrecommand->setText("scp zaurus@192.168.0.65:/home/zaurus/kdepim/apps/korganizer/mycalendar.ics /tmp/mycalendar.ics" );
317 mLocalTempFile->setText("/tmp/mycalendar.ics" ); 318 mLocalTempFile->setText("/tmp/mycalendar.ics" );
318 mRemotePostcommand->setText("scp /tmp/mycalendar.ics zaurus@192.168.0.65:/home/zaurus/kdepim/apps/korganizer/mycalendar.ics" ); 319 mRemotePostcommand->setText("scp /tmp/mycalendar.ics zaurus@192.168.0.65:/home/zaurus/kdepim/apps/korganizer/mycalendar.ics" );
319} 320}
320void KOSyncPrefsDialog::fillFTP() 321void KOSyncPrefsDialog::fillFTP()
321{ 322{
322 mRemotePrecommand->setText("cd /tmp;ftp ftp://zaurus:a@192.168.0.65/kdepim/apps/korganizer/mycalendar.ics" ); 323 mRemotePrecommand->setText("cd /tmp;ftp ftp://zaurus:a@192.168.0.65/kdepim/apps/korganizer/mycalendar.ics" );
323 mLocalTempFile->setText("/tmp/mycalendar.ics" ); 324 mLocalTempFile->setText("/tmp/mycalendar.ics" );
324 mRemotePostcommand->setText("ftp -u ftp://zaurus:a@192.168.0.65/kdepim/apps/korganizer/mycalendar.ics /tmp/mycalendar.ics" ); 325 mRemotePostcommand->setText("ftp -u ftp://zaurus:a@192.168.0.65/kdepim/apps/korganizer/mycalendar.ics /tmp/mycalendar.ics" );
325 326
326} 327}
327void KOSyncPrefsDialog::kindChanged( bool b ) 328void KOSyncPrefsDialog::kindChanged( bool b )
328{ 329{
329 330
330 localFileWidget->setEnabled(b); 331 localFileWidget->setEnabled(b);
331 remoteFileWidget->setEnabled(!b); 332 remoteFileWidget->setEnabled(!b);
332 333
333} 334}
334void KOSyncPrefsDialog::deleteProfile() 335void KOSyncPrefsDialog::deleteProfile()
335{ 336{
336 //qDebug("KOSyncPrefsDialog::deleteProfile() "); 337 //qDebug("KOSyncPrefsDialog::deleteProfile() ");
337 if ( currentSelection >= 0 ) { 338 if ( currentSelection >= 0 ) {
338 if ( currentSelection < 3 ) { 339 if ( currentSelection < 3 ) {
339 KMessageBox::error(this,i18n("This profil cannot be deleted!\n"),i18n("KO/Pi config error")); 340 KMessageBox::error(this,i18n("This profil cannot be deleted!\n"),i18n("KO/Pi config error"));
340 return; 341 return;
341 } 342 }
342 KSyncProfile* temp = mSyncProfiles.at(currentSelection); 343 KSyncProfile* temp = mSyncProfiles.at(currentSelection);
343 mSyncProfiles.remove( temp ); 344 mSyncProfiles.remove( temp );
344 mSyncProfileNames.remove( mSyncProfileNames.at( currentSelection )); 345 mSyncProfileNames.remove( mSyncProfileNames.at( currentSelection ));
345 insertProfiles(); 346 insertProfiles();
346 } 347 }
347} 348}
348 349
349void KOSyncPrefsDialog::saveProfile() 350void KOSyncPrefsDialog::saveProfile()
350{ 351{
351 KSyncProfile* prof; 352 KSyncProfile* prof;
352 if ( currentSelection >= 0 ) { 353 if ( currentSelection >= 0 ) {
353 prof = mSyncProfiles.at(currentSelection) ; 354 prof = mSyncProfiles.at(currentSelection) ;
354 prof->setPreSyncCommand( mRemotePrecommand->text()); 355 prof->setPreSyncCommand( mRemotePrecommand->text());
355 prof->setPostSyncCommand( mRemotePostcommand->text() ); 356 prof->setPostSyncCommand( mRemotePostcommand->text() );
356 prof->setLocalTempFile( mLocalTempFile->text()); 357 prof->setLocalTempFile( mLocalTempFile->text());
357 prof->setRemoteFileName( mRemoteFile->text() ); 358 prof->setRemoteFileName( mRemoteFile->text() );
358 prof->setShowSummaryAfterSync( mShowSummaryAfterSync->isChecked() ); 359 prof->setShowSummaryAfterSync( mShowSummaryAfterSync->isChecked() );
359 prof->setAskForPreferences( mAskForPreferences->isChecked()); 360 prof->setAskForPreferences( mAskForPreferences->isChecked());
360 prof->setWriteBackExisting(mWriteBackExisting->isChecked() ); 361 prof->setWriteBackExisting(mWriteBackExisting->isChecked() );
361 prof->setWriteBackFile( mWriteBackFile->isChecked()); 362 prof->setWriteBackFile( mWriteBackFile->isChecked());
362 prof->setIncludeInRingSync( mIncludeInRing->isChecked() ); 363 prof->setIncludeInRingSync( mIncludeInRing->isChecked() );
363 int syncprefs = rem->isChecked()*1+newest->isChecked()*2+ ask->isChecked()*3+ f_loc->isChecked()*4+ f_rem->isChecked()*5 ;//+ both->isChecked()*6 ; 364 int syncprefs = rem->isChecked()*1+newest->isChecked()*2+ ask->isChecked()*3+ f_loc->isChecked()*4+ f_rem->isChecked()*5 ;//+ both->isChecked()*6 ;
364 prof->setSyncPrefs( syncprefs); 365 prof->setSyncPrefs( syncprefs);
365 prof->setIsLocalFileSync( mIsLocal->isChecked() ); 366 prof->setIsLocalFileSync( mIsLocal->isChecked() );
366 } 367 }
367 368
368} 369}
369 370
370void KOSyncPrefsDialog::insertProfiles() 371void KOSyncPrefsDialog::insertProfiles()
371{ 372{
372 int curItem = mProfileBox->currentItem(); 373 int curItem = mProfileBox->currentItem();
373 mProfileBox->blockSignals( true ); 374 mProfileBox->blockSignals( true );
374 mProfileBox->clear(); 375 mProfileBox->clear();
375 mProfileBox->insertStringList (mSyncProfileNames ); 376 mProfileBox->insertStringList (mSyncProfileNames );
376 int item = mSyncProfileNames.count() -1; 377 int item = mSyncProfileNames.count() -1;
377 if ( curItem >= 0 && mSyncProfileNames.count() > 0 && curItem < mSyncProfileNames.count() ) 378 if ( curItem >= 0 && mSyncProfileNames.count() > 0 && curItem < mSyncProfileNames.count() )
378 mProfileBox->setCurrentItem( curItem ); 379 mProfileBox->setCurrentItem( curItem );
379 else if ( item >= 0 ) { 380 else if ( item >= 0 ) {
380 mProfileBox->setCurrentItem( item ); 381 mProfileBox->setCurrentItem( item );
381 } 382 }
382 currentSelection = -1; 383 currentSelection = -1;
383 if ( mSyncProfileNames.count() > 0 ) { 384 if ( mSyncProfileNames.count() > 0 ) {
384 //qDebug(" profileChanged( mProfileBox->currentItem() "); 385 //qDebug(" profileChanged( mProfileBox->currentItem() ");
385 profileChanged( mProfileBox->currentItem() ); 386 profileChanged( mProfileBox->currentItem() );
386 currentSelection = mProfileBox->currentItem(); 387 currentSelection = mProfileBox->currentItem();
387 } 388 }
388 mProfileBox->blockSignals( false ); 389 mProfileBox->blockSignals( false );
389} 390}
390 391
391void KOSyncPrefsDialog::addProfile ( KSyncProfile* temp ) 392void KOSyncPrefsDialog::addProfile ( KSyncProfile* temp )
392{ 393{
393 saveProfile(); 394 saveProfile();
394 mSyncProfiles.append( temp ); 395 mSyncProfiles.append( temp );
395 mSyncProfileNames << temp->getName(); 396 mSyncProfileNames << temp->getName();
396 insertProfiles(); 397 insertProfiles();
397 int last = mProfileBox->count() -1; 398 int last = mProfileBox->count() -1;
398 mProfileBox->blockSignals( true ); 399 mProfileBox->blockSignals( true );
399 mProfileBox->setCurrentItem( last ); 400 mProfileBox->setCurrentItem( last );
400 mProfileBox->blockSignals( false ); 401 mProfileBox->blockSignals( false );
401 profileChanged(last); 402 profileChanged(last);
402} 403}
403void KOSyncPrefsDialog::newProfile() 404void KOSyncPrefsDialog::newProfile()
404{ 405{
405 addProfile ( new KSyncProfile () ); 406 addProfile ( new KSyncProfile () );
406} 407}
407 408
408void KOSyncPrefsDialog::cloneProfile() 409void KOSyncPrefsDialog::cloneProfile()
409{ 410{
410 if ( currentSelection >= 0 ) 411 if ( currentSelection >= 0 )
411 addProfile (mSyncProfiles.at(currentSelection)->clone()) ; 412 addProfile (mSyncProfiles.at(currentSelection)->clone()) ;
412 else 413 else
413 newProfile(); 414 newProfile();
414} 415}
415 416
417void KOSyncPrefsDialog::setLocalMachineName ( const QString& name )
418{
419 mMyMachineName->setText( name );
416 420
421}
422QString KOSyncPrefsDialog::getLocalMachineName ( )
423{
424 return mMyMachineName->text();
425}
426
427QStringList KOSyncPrefsDialog::getSyncProfileNames()
428{
429 return mSyncProfileNames;
430}
417void KOSyncPrefsDialog::usrReadConfig() 431void KOSyncPrefsDialog::usrReadConfig()
418{ 432{
419 KConfig *config = KOGlobals::config(); 433 //KConfig *config = KOGlobals::config();
420 config->setGroup("SyncProfiles"); 434 KConfig config ( locateLocal( "config","syncprofilesrc" ) );
421 mSyncProfileNames = KOPrefs::instance()->mSyncProfileNames; 435 config.setGroup("SyncProfiles");
436 mSyncProfileNames =config.readListEntry("SyncProfileNames");
422 int i; 437 int i;
423 KSyncProfile* temp ; 438 KSyncProfile* temp ;
424 mSyncProfiles.clear(); 439 mSyncProfiles.clear();
425 for ( i = 0; i < mSyncProfileNames.count();++i ) { 440 for ( i = 0; i < mSyncProfileNames.count();++i ) {
426 temp = new KSyncProfile (); 441 temp = new KSyncProfile ();
427 temp->setName( mSyncProfileNames[i] ); 442 temp->setName( mSyncProfileNames[i] );
428 temp->readConfig( config ); 443 temp->readConfig( &config );
429 mSyncProfiles.append( temp ); 444 mSyncProfiles.append( temp );
430 } 445 }
431 insertProfiles(); 446 insertProfiles();
432 mMyMachineName->setText(KOPrefs::instance()->mLocalMachineName ); 447 //mMyMachineName->setText(KOPrefs::instance()->mLocalMachineName );
433} 448}
434 449
435 450
436void KOSyncPrefsDialog::usrWriteConfig() 451void KOSyncPrefsDialog::usrWriteConfig()
437{ 452{
438 saveProfile(); 453 saveProfile();
439 if ( currentSelection >= 0 ) 454 if ( currentSelection >= 0 )
440 profileChanged(currentSelection); 455 profileChanged(currentSelection);
441 KConfig *config = KOGlobals::config(); 456 //KConfig *config = KOGlobals::config();
442 config->setGroup("SyncProfiles"); 457 KConfig config ( locateLocal( "config","syncprofilesrc" ) );
458 config.setGroup("SyncProfiles");
443 KSyncProfile* prof = mSyncProfiles.first(); 459 KSyncProfile* prof = mSyncProfiles.first();
444 while ( prof ) { 460 while ( prof ) {
445 prof->writeConfig(config); 461 prof->writeConfig(&config);
446 prof = mSyncProfiles.next(); 462 prof = mSyncProfiles.next();
447 } 463 }
448 KOPrefs::instance()->mSyncProfileNames = mSyncProfileNames; 464 //KOPrefs::instance()->mSyncProfileNames = mSyncProfileNames;
449 KOPrefs::instance()->mLocalMachineName = mMyMachineName->text(); 465 //KOPrefs::instance()->mLocalMachineName = mMyMachineName->text();
450 config->writeEntry("SyncProfileNames",&mSyncProfileNames); 466 config.writeEntry("SyncProfileNames",&mSyncProfileNames);
451} 467}
452 468
diff --git a/korganizer/kosyncprefsdialog.h b/korganizer/kosyncprefsdialog.h
index d2d8c6f..541d18b 100644
--- a/korganizer/kosyncprefsdialog.h
+++ b/korganizer/kosyncprefsdialog.h
@@ -1,109 +1,113 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 2000,2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2000,2001 Cornelius Schumacher <schumacher@kde.org>
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18 18
19 As a special exception, permission is given to link this program 19 As a special exception, permission is given to link this program
20 with any edition of Qt, and distribute the resulting executable, 20 with any edition of Qt, and distribute the resulting executable,
21 without including the source code for Qt in the source distribution. 21 without including the source code for Qt in the source distribution.
22*/ 22*/
23#ifndef _KOPREFSDIALOG_H 23#ifndef _KOPREFSDIALOG_H
24#define _KOPREFSDIALOG_H 24#define _KOPREFSDIALOG_H
25 25
26//#include <qframe.h> 26//#include <qframe.h>
27//#include <qdict.h> 27//#include <qdict.h>
28#include <qvbox.h> 28#include <qvbox.h>
29#include <qhbox.h> 29#include <qhbox.h>
30//#include <qcolor.h> 30//#include <qcolor.h>
31//#include <qlistview.h> 31//#include <qlistview.h>
32 32
33#include <kdialogbase.h> 33#include <kdialogbase.h>
34 34
35#include <libkdepim/kprefsdialog.h> 35#include <libkdepim/kprefsdialog.h>
36 36
37class KColorButton; 37class KColorButton;
38class QSpinBox;; 38class QSpinBox;;
39class QRadioButton; 39class QRadioButton;
40class QCheckBox; 40class QCheckBox;
41class QSlider; 41class QSlider;
42class KURLRequester; 42class KURLRequester;
43class QComboBox; 43class QComboBox;
44class QLineEdit; 44class QLineEdit;
45class QStringList; 45class QStringList;
46class KSyncProfile; 46class KSyncProfile;
47 47
48/** Dialog to change the korganizer configuration. 48/** Dialog to change the korganizer configuration.
49 */ 49 */
50class KOSyncPrefsDialog : public KDialog 50class KOSyncPrefsDialog : public KDialog
51{ 51{
52 Q_OBJECT 52 Q_OBJECT
53 public: 53 public:
54 /** Initialize dialog and pages */ 54 /** Initialize dialog and pages */
55 KOSyncPrefsDialog(QWidget *parent=0,char *name=0,bool modal=false); 55 KOSyncPrefsDialog(QWidget *parent=0,char *name=0,bool modal=false);
56 ~KOSyncPrefsDialog(); 56 ~KOSyncPrefsDialog();
57 void usrReadConfig(); 57 void usrReadConfig();
58 void setLocalMachineName ( const QString& name );
59 QString getLocalMachineName ( );
60
61 QStringList getSyncProfileNames();
58 62
59 public slots: 63 public slots:
60 protected slots: 64 protected slots:
61 void accept(); 65 void accept();
62 void deleteProfile(); 66 void deleteProfile();
63 void newProfile(); 67 void newProfile();
64 void cloneProfile(); 68 void cloneProfile();
65 void kindChanged(bool); 69 void kindChanged(bool);
66 void fillSSH(); 70 void fillSSH();
67 void fillFTP(); 71 void fillFTP();
68 void textChanged( const QString & ); 72 void textChanged( const QString & );
69 void profileChanged( int ); 73 void profileChanged( int );
70 void chooseFile(); 74 void chooseFile();
71 void slotOK(); 75 void slotOK();
72 76
73 protected: 77 protected:
74 void usrWriteConfig(); 78 void usrWriteConfig();
75 79
76 void setupSyncAlgTab(); 80 void setupSyncAlgTab();
77 81
78 private: 82 private:
79 int currentSelection; 83 int currentSelection;
80 QPtrList<KSyncProfile> mSyncProfiles; 84 QPtrList<KSyncProfile> mSyncProfiles;
81 QStringList mSyncProfileNames; 85 QStringList mSyncProfileNames;
82 QLineEdit * mMyMachineName; 86 QLineEdit * mMyMachineName;
83 QComboBox * mProfileBox; 87 QComboBox * mProfileBox;
84 QRadioButton* mIsLocal; 88 QRadioButton* mIsLocal;
85 QRadioButton* mIsNotLocal; 89 QRadioButton* mIsNotLocal;
86 QCheckBox* mIncludeInRing; 90 QCheckBox* mIncludeInRing;
87 void addProfile ( KSyncProfile* ); 91 void addProfile ( KSyncProfile* );
88 void insertProfiles(); 92 void insertProfiles();
89 void saveProfile(); 93 void saveProfile();
90 QButtonGroup* proGr; 94 QButtonGroup* proGr;
91 95
92 QRadioButton* loc, *rem, *newest, *ask, *f_loc,* f_rem, *both; 96 QRadioButton* loc, *rem, *newest, *ask, *f_loc,* f_rem, *both;
93 97
94 98
95 QLineEdit * mRemotePostcommand; 99 QLineEdit * mRemotePostcommand;
96 QLineEdit * mRemotePrecommand; 100 QLineEdit * mRemotePrecommand;
97 QLineEdit * mRemoteFile; 101 QLineEdit * mRemoteFile;
98 QLineEdit * mLocalTempFile; 102 QLineEdit * mLocalTempFile;
99 QWidget* mSetupSyncAlgTab; 103 QWidget* mSetupSyncAlgTab;
100 104
101 QVBox* localFileWidget; 105 QVBox* localFileWidget;
102 QVBox* remoteFileWidget; 106 QVBox* remoteFileWidget;
103 QCheckBox* mWriteBackFile; 107 QCheckBox* mWriteBackFile;
104 QCheckBox* mWriteBackExisting; 108 QCheckBox* mWriteBackExisting;
105 QCheckBox* mAskForPreferences; 109 QCheckBox* mAskForPreferences;
106 QCheckBox* mShowSummaryAfterSync; 110 QCheckBox* mShowSummaryAfterSync;
107}; 111};
108 112
109#endif 113#endif
diff --git a/korganizer/mainwindow.cpp b/korganizer/mainwindow.cpp
index a487f14..589ab2d 100644
--- a/korganizer/mainwindow.cpp
+++ b/korganizer/mainwindow.cpp
@@ -725,213 +725,212 @@ void MainWindow::initActions()
725 if (p-> mShowIconJournal) 725 if (p-> mShowIconJournal)
726 viewjournal_action->addTo( iconToolBar ); 726 viewjournal_action->addTo( iconToolBar );
727 icon = loadPixmap( pathString + "2leftarrowB" ); 727 icon = loadPixmap( pathString + "2leftarrowB" );
728 configureToolBarMenu->insertItem(icon, i18n("Prev. month"), 200, 14); 728 configureToolBarMenu->insertItem(icon, i18n("Prev. month"), 200, 14);
729 if (p-> mShowIconBackFast) { 729 if (p-> mShowIconBackFast) {
730 action = new QAction( i18n("Prev. month"), icon, i18n("Prev. month"),0 , this ); 730 action = new QAction( i18n("Prev. month"), icon, i18n("Prev. month"),0 , this );
731 connect( action, SIGNAL( activated() ), 731 connect( action, SIGNAL( activated() ),
732 mView, SLOT( goPreviousMonth() ) ); 732 mView, SLOT( goPreviousMonth() ) );
733 action->addTo( iconToolBar ); 733 action->addTo( iconToolBar );
734 } 734 }
735 icon = loadPixmap( pathString + "1leftarrowB" ); 735 icon = loadPixmap( pathString + "1leftarrowB" );
736 configureToolBarMenu->insertItem(icon, i18n("Go backward"), 210,15); 736 configureToolBarMenu->insertItem(icon, i18n("Go backward"), 210,15);
737 if (p-> mShowIconBack) { 737 if (p-> mShowIconBack) {
738 action = new QAction( i18n("Go backward"), icon, i18n("Go backward"),0 , this ); 738 action = new QAction( i18n("Go backward"), icon, i18n("Go backward"),0 , this );
739 connect( action, SIGNAL( activated() ), 739 connect( action, SIGNAL( activated() ),
740 mView, SLOT( goPrevious() ) ); 740 mView, SLOT( goPrevious() ) );
741 action->addTo( iconToolBar ); 741 action->addTo( iconToolBar );
742 } 742 }
743 if (p-> mShowIconToday) 743 if (p-> mShowIconToday)
744 today_action->addTo( iconToolBar ); 744 today_action->addTo( iconToolBar );
745 icon = loadPixmap( pathString + "1rightarrowB" ); 745 icon = loadPixmap( pathString + "1rightarrowB" );
746 configureToolBarMenu->insertItem(icon, i18n("Go forward"), 220); 746 configureToolBarMenu->insertItem(icon, i18n("Go forward"), 220);
747 if (p-> mShowIconForward) { 747 if (p-> mShowIconForward) {
748 action = new QAction( i18n("Go forward"), icon, i18n("Go forward"),0 , this ); 748 action = new QAction( i18n("Go forward"), icon, i18n("Go forward"),0 , this );
749 connect( action, SIGNAL( activated() ), 749 connect( action, SIGNAL( activated() ),
750 mView, SLOT( goNext() ) ); 750 mView, SLOT( goNext() ) );
751 action->addTo( iconToolBar ); 751 action->addTo( iconToolBar );
752 } 752 }
753 icon = loadPixmap( pathString + "2rightarrowB" ); 753 icon = loadPixmap( pathString + "2rightarrowB" );
754 configureToolBarMenu->insertItem(icon, i18n("Next month"), 230); 754 configureToolBarMenu->insertItem(icon, i18n("Next month"), 230);
755 if (p-> mShowIconForwardFast) { 755 if (p-> mShowIconForwardFast) {
756 action = new QAction( i18n("Next month"), icon, i18n("Next month"),0 , this ); 756 action = new QAction( i18n("Next month"), icon, i18n("Next month"),0 , this );
757 connect( action, SIGNAL( activated() ), 757 connect( action, SIGNAL( activated() ),
758 mView, SLOT( goNextMonth() ) ); 758 mView, SLOT( goNextMonth() ) );
759 action->addTo( iconToolBar ); 759 action->addTo( iconToolBar );
760 } 760 }
761 761
762 762
763 configureToolBarMenu->insertItem(i18n("What's This?"), 300); 763 configureToolBarMenu->insertItem(i18n("What's This?"), 300);
764 764
765 if (p-> mShowIconNewEvent) 765 if (p-> mShowIconNewEvent)
766 configureToolBarMenu->setItemChecked( 10, true ); 766 configureToolBarMenu->setItemChecked( 10, true );
767 if (p->mShowIconNewTodo ) 767 if (p->mShowIconNewTodo )
768 configureToolBarMenu->setItemChecked( 20, true ); 768 configureToolBarMenu->setItemChecked( 20, true );
769 if (p-> mShowIconSearch) 769 if (p-> mShowIconSearch)
770 configureToolBarMenu->setItemChecked( 120, true ); 770 configureToolBarMenu->setItemChecked( 120, true );
771 if (p-> mShowIconList) 771 if (p-> mShowIconList)
772 configureToolBarMenu->setItemChecked( 30, true ); 772 configureToolBarMenu->setItemChecked( 30, true );
773 if (p-> mShowIconDay1) 773 if (p-> mShowIconDay1)
774 configureToolBarMenu->setItemChecked( 40, true ); 774 configureToolBarMenu->setItemChecked( 40, true );
775 if (p-> mShowIconDay5) 775 if (p-> mShowIconDay5)
776 configureToolBarMenu->setItemChecked( 50, true ); 776 configureToolBarMenu->setItemChecked( 50, true );
777 if (p-> mShowIconDay7) 777 if (p-> mShowIconDay7)
778 configureToolBarMenu->setItemChecked( 60, true ); 778 configureToolBarMenu->setItemChecked( 60, true );
779 if (p-> mShowIconMonth) 779 if (p-> mShowIconMonth)
780 configureToolBarMenu->setItemChecked( 70, true ); 780 configureToolBarMenu->setItemChecked( 70, true );
781 if (p-> mShowIconTodoview) 781 if (p-> mShowIconTodoview)
782 configureToolBarMenu->setItemChecked( 80, true ); 782 configureToolBarMenu->setItemChecked( 80, true );
783 if (p-> mShowIconBackFast) 783 if (p-> mShowIconBackFast)
784 configureToolBarMenu->setItemChecked( 200, true ); 784 configureToolBarMenu->setItemChecked( 200, true );
785 if (p-> mShowIconBack) 785 if (p-> mShowIconBack)
786 configureToolBarMenu->setItemChecked( 210, true ); 786 configureToolBarMenu->setItemChecked( 210, true );
787 if (p-> mShowIconToday) 787 if (p-> mShowIconToday)
788 configureToolBarMenu->setItemChecked( 130, true ); 788 configureToolBarMenu->setItemChecked( 130, true );
789 if (p-> mShowIconForward) 789 if (p-> mShowIconForward)
790 configureToolBarMenu->setItemChecked( 220, true ); 790 configureToolBarMenu->setItemChecked( 220, true );
791 if (p-> mShowIconForwardFast) 791 if (p-> mShowIconForwardFast)
792 configureToolBarMenu->setItemChecked( 230, true ); 792 configureToolBarMenu->setItemChecked( 230, true );
793 if (p-> mShowIconNextDays) 793 if (p-> mShowIconNextDays)
794 configureToolBarMenu->setItemChecked( 100, true ); 794 configureToolBarMenu->setItemChecked( 100, true );
795 if (p-> mShowIconNext) 795 if (p-> mShowIconNext)
796 configureToolBarMenu->setItemChecked( 110, true ); 796 configureToolBarMenu->setItemChecked( 110, true );
797 if (p-> mShowIconJournal) 797 if (p-> mShowIconJournal)
798 configureToolBarMenu->setItemChecked( 90, true ); 798 configureToolBarMenu->setItemChecked( 90, true );
799 if (p-> mShowIconWhatsThis) 799 if (p-> mShowIconWhatsThis)
800 configureToolBarMenu->setItemChecked( 300, true ); 800 configureToolBarMenu->setItemChecked( 300, true );
801 801
802 QLabel* dummy = new QLabel( iconToolBar ); 802 QLabel* dummy = new QLabel( iconToolBar );
803 dummy->setBackgroundColor( iconToolBar->backgroundColor() ); 803 dummy->setBackgroundColor( iconToolBar->backgroundColor() );
804 if (!p-> mShowIconStretch) 804 if (!p-> mShowIconStretch)
805 iconToolBar->setStretchableWidget ( dummy ) ; 805 iconToolBar->setStretchableWidget ( dummy ) ;
806 else 806 else
807 configureToolBarMenu->setItemChecked( 5, true ); 807 configureToolBarMenu->setItemChecked( 5, true );
808 if (p-> mShowIconWhatsThis) 808 if (p-> mShowIconWhatsThis)
809 QWhatsThis::whatsThisButton ( iconToolBar ); 809 QWhatsThis::whatsThisButton ( iconToolBar );
810 connect( configureToolBarMenu, SIGNAL( activated( int ) ),this, SLOT(configureToolBar( int ) ) ); 810 connect( configureToolBarMenu, SIGNAL( activated( int ) ),this, SLOT(configureToolBar( int ) ) );
811 configureAgenda( p->mHourSize ); 811 configureAgenda( p->mHourSize );
812 connect( configureAgendaMenu, SIGNAL( activated( int ) ),this, SLOT(configureAgenda( int ) ) ); 812 connect( configureAgendaMenu, SIGNAL( activated( int ) ),this, SLOT(configureAgenda( int ) ) );
813} 813}
814void MainWindow::fillSyncMenu() 814void MainWindow::fillSyncMenu()
815{ 815{
816 syncMenu->clear(); 816 syncMenu->clear();
817 syncMenu->insertItem( i18n("Configure..."), 0 ); 817 syncMenu->insertItem( i18n("Configure..."), 0 );
818 syncMenu->insertSeparator(); 818 syncMenu->insertSeparator();
819 syncMenu->insertItem( i18n("Multiple sync"), 1 ); 819 syncMenu->insertItem( i18n("Multiple sync"), 1 );
820 syncMenu->insertSeparator(); 820 syncMenu->insertSeparator();
821 821 KConfig config ( locateLocal( "config","syncprofilesrc" ) );
822 QStringList prof = KOPrefs::instance()->mSyncProfileNames; 822 config.setGroup("SyncProfiles");
823 823 QStringList prof = config.readListEntry("SyncProfileNames");
824
824 if ( prof.count() < 3 ) { 825 if ( prof.count() < 3 ) {
825 KConfig *config = KOGlobals::config();
826 prof.clear(); 826 prof.clear();
827 prof << i18n("Sharp-DTM"); 827 prof << i18n("Sharp-DTM");
828 prof << i18n("Local file"); 828 prof << i18n("Local file");
829 prof << i18n("Last file"); 829 prof << i18n("Last file");
830 KSyncProfile* temp = new KSyncProfile (); 830 KSyncProfile* temp = new KSyncProfile ();
831 temp->setName( prof[0] ); 831 temp->setName( prof[0] );
832 temp->writeConfig(config); 832 temp->writeConfig(&config);
833 temp->setName( prof[1] ); 833 temp->setName( prof[1] );
834 temp->writeConfig(config); 834 temp->writeConfig(&config);
835 temp->setName( prof[2] ); 835 temp->setName( prof[2] );
836 temp->writeConfig(config); 836 temp->writeConfig(&config);
837 config->sync(); 837 config.sync();
838 delete temp; 838 delete temp;
839 KOPrefs::instance()->mSyncProfileNames = prof;
840 } 839 }
841 840 KOPrefs::instance()->mSyncProfileNames = prof;
842 int i; 841 int i;
843 for ( i = 0; i < prof.count(); ++i ) { 842 for ( i = 0; i < prof.count(); ++i ) {
844 843
845 syncMenu->insertItem( prof[i], 1000+i ); 844 syncMenu->insertItem( prof[i], 1000+i );
846 if ( i == 2 ) 845 if ( i == 2 )
847 syncMenu->insertSeparator(); 846 syncMenu->insertSeparator();
848 } 847 }
849 QDir app_dir; 848 QDir app_dir;
850 if ( !app_dir.exists(QDir::homeDirPath()+"/Applications/dtm" ) ) { 849 if ( !app_dir.exists(QDir::homeDirPath()+"/Applications/dtm" ) ) {
851 syncMenu->setItemEnabled( false , 1000 ); 850 syncMenu->setItemEnabled( false , 1000 );
852 } 851 }
853} 852}
854 853
855int MainWindow::ringSync() 854int MainWindow::ringSync()
856{ 855{
857 int syncedProfiles = 0; 856 int syncedProfiles = 0;
858 int i; 857 int i;
859 QTime timer; 858 QTime timer;
860 KConfig *config = KOGlobals::config(); 859 KConfig *config = KOGlobals::config();
861 QStringList syncProfileNames = KOPrefs::instance()->mSyncProfileNames; 860 QStringList syncProfileNames = KOPrefs::instance()->mSyncProfileNames;
862 KSyncProfile* temp = new KSyncProfile (); 861 KSyncProfile* temp = new KSyncProfile ();
863 KOPrefs::instance()->mAskForPreferences = false; 862 KOPrefs::instance()->mAskForPreferences = false;
864 for ( i = 0; i < syncProfileNames.count(); ++i ) { 863 for ( i = 0; i < syncProfileNames.count(); ++i ) {
865 mCurrentSyncProfile = i; 864 mCurrentSyncProfile = i;
866 temp->setName(syncProfileNames[mCurrentSyncProfile]); 865 temp->setName(syncProfileNames[mCurrentSyncProfile]);
867 temp->readConfig(config); 866 temp->readConfig(config);
868 if ( temp->getIncludeInRingSync() && ( i < 1 || i > 2 )) { 867 if ( temp->getIncludeInRingSync() && ( i < 1 || i > 2 )) {
869 setCaption(i18n("Profile ")+syncProfileNames[mCurrentSyncProfile]+ i18n(" is synced ... ")); 868 setCaption(i18n("Profile ")+syncProfileNames[mCurrentSyncProfile]+ i18n(" is synced ... "));
870 ++syncedProfiles; 869 ++syncedProfiles;
871 // KOPrefs::instance()->mAskForPreferences = temp->getAskForPreferences(); 870 // KOPrefs::instance()->mAskForPreferences = temp->getAskForPreferences();
872 KOPrefs::instance()->mWriteBackFile = temp->getWriteBackFile(); 871 KOPrefs::instance()->mWriteBackFile = temp->getWriteBackFile();
873 KOPrefs::instance()->mWriteBackExistingOnly = temp->getWriteBackExisting(); 872 KOPrefs::instance()->mWriteBackExistingOnly = temp->getWriteBackExisting();
874 KOPrefs::instance()->mShowSyncSummary = false; 873 KOPrefs::instance()->mShowSyncSummary = false;
875 mView->setSyncDevice(syncProfileNames[i] ); 874 mView->setSyncDevice(syncProfileNames[i] );
876 mView->setSyncName( KOPrefs::instance()->mLocalMachineName ); 875 mView->setSyncName( KOPrefs::instance()->mLocalMachineName );
877 if ( i == 0 ) { 876 if ( i == 0 ) {
878 syncSharp(); 877 syncSharp();
879 } else { 878 } else {
880 if ( temp->getIsLocalFileSync() ) { 879 if ( temp->getIsLocalFileSync() ) {
881 if ( syncWithFile( temp->getRemoteFileName( ), true ) ) 880 if ( syncWithFile( temp->getRemoteFileName( ), true ) )
882 KOPrefs::instance()->mLastSyncedLocalFile = temp->getRemoteFileName(); 881 KOPrefs::instance()->mLastSyncedLocalFile = temp->getRemoteFileName();
883 } else { 882 } else {
884 syncRemote( temp, false ); 883 syncRemote( temp, false );
885 884
886 } 885 }
887 } 886 }
888 timer.start(); 887 timer.start();
889 setCaption(i18n("Multiple sync in progress ... please wait!") ); 888 setCaption(i18n("Multiple sync in progress ... please wait!") );
890 while ( timer.elapsed () < 2000 ) { 889 while ( timer.elapsed () < 2000 ) {
891 qApp->processEvents(); 890 qApp->processEvents();
892#ifndef _WIN32_ 891#ifndef _WIN32_
893 sleep (1); 892 sleep (1);
894#endif 893#endif
895 } 894 }
896 895
897 } 896 }
898 897
899 } 898 }
900 delete temp; 899 delete temp;
901 return syncedProfiles; 900 return syncedProfiles;
902} 901}
903 902
904void MainWindow::multiSync( bool askforPrefs ) 903void MainWindow::multiSync( bool askforPrefs )
905{ 904{
906 if (mBlockSaveFlag) 905 if (mBlockSaveFlag)
907 return; 906 return;
908 mBlockSaveFlag = true; 907 mBlockSaveFlag = true;
909 QString question = i18n("Do you really want\nto multiple sync\nwith all checked profiles?\nSyncing takes some\ntime - all profiles\nare synced twice!"); 908 QString question = i18n("Do you really want\nto multiple sync\nwith all checked profiles?\nSyncing takes some\ntime - all profiles\nare synced twice!");
910 if ( QMessageBox::information( this, i18n("KO/Pi Sync"), 909 if ( QMessageBox::information( this, i18n("KO/Pi Sync"),
911 question, 910 question,
912 i18n("Yes"), i18n("No"), 911 i18n("Yes"), i18n("No"),
913 0, 0 ) != 0 ) { 912 0, 0 ) != 0 ) {
914 mBlockSaveFlag = false; 913 mBlockSaveFlag = false;
915 setCaption(i18n("Aborted! Nothing synced!")); 914 setCaption(i18n("Aborted! Nothing synced!"));
916 return; 915 return;
917 } 916 }
918 mView->setSyncDevice(i18n("Multiple profiles") ); 917 mView->setSyncDevice(i18n("Multiple profiles") );
919 KOPrefs::instance()->mSyncAlgoPrefs = KOPrefs::instance()->mRingSyncAlgoPrefs; 918 KOPrefs::instance()->mSyncAlgoPrefs = KOPrefs::instance()->mRingSyncAlgoPrefs;
920 if ( askforPrefs ) { 919 if ( askforPrefs ) {
921 mView->edit_sync_options(); 920 mView->edit_sync_options();
922 KOPrefs::instance()->mRingSyncAlgoPrefs = KOPrefs::instance()->mSyncAlgoPrefs; 921 KOPrefs::instance()->mRingSyncAlgoPrefs = KOPrefs::instance()->mSyncAlgoPrefs;
923 } 922 }
924 setCaption(i18n("Multiple sync started.") ); 923 setCaption(i18n("Multiple sync started.") );
925 qApp->processEvents(); 924 qApp->processEvents();
926 int num = ringSync() ; 925 int num = ringSync() ;
927 if ( num > 1 ) 926 if ( num > 1 )
928 ringSync(); 927 ringSync();
929 mBlockSaveFlag = false; 928 mBlockSaveFlag = false;
930 if ( num ) 929 if ( num )
931 save(); 930 save();
932 if ( num ) 931 if ( num )
933 setCaption(i18n("%1 profiles synced. Multiple sync completed!").arg(num) ); 932 setCaption(i18n("%1 profiles synced. Multiple sync completed!").arg(num) );
934 else 933 else
935 setCaption(i18n("Nothing synced! No profiles defined for multisync!")); 934 setCaption(i18n("Nothing synced! No profiles defined for multisync!"));
936 return; 935 return;
937} 936}
@@ -1707,193 +1706,193 @@ QString MainWindow::getPassword( )
1707{ 1706{
1708 QString retfile = ""; 1707 QString retfile = "";
1709 QDialog dia ( this, "input-dialog", true ); 1708 QDialog dia ( this, "input-dialog", true );
1710 QLineEdit lab ( &dia ); 1709 QLineEdit lab ( &dia );
1711 lab.setEchoMode( QLineEdit::Password ); 1710 lab.setEchoMode( QLineEdit::Password );
1712 QVBoxLayout lay( &dia ); 1711 QVBoxLayout lay( &dia );
1713 lay.setMargin(7); 1712 lay.setMargin(7);
1714 lay.setSpacing(7); 1713 lay.setSpacing(7);
1715 lay.addWidget( &lab); 1714 lay.addWidget( &lab);
1716 dia.setFixedSize( 230,50 ); 1715 dia.setFixedSize( 230,50 );
1717 dia.setCaption( i18n("Enter password") ); 1716 dia.setCaption( i18n("Enter password") );
1718 QPushButton pb ( "OK", &dia); 1717 QPushButton pb ( "OK", &dia);
1719 lay.addWidget( &pb ); 1718 lay.addWidget( &pb );
1720 connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) ); 1719 connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) );
1721 dia.show(); 1720 dia.show();
1722 int res = dia.exec(); 1721 int res = dia.exec();
1723 if ( res ) 1722 if ( res )
1724 retfile = lab.text(); 1723 retfile = lab.text();
1725 dia.hide(); 1724 dia.hide();
1726 qApp->processEvents(); 1725 qApp->processEvents();
1727 return retfile; 1726 return retfile;
1728 1727
1729} 1728}
1730 1729
1731void MainWindow::syncLocalFile() 1730void MainWindow::syncLocalFile()
1732{ 1731{
1733 1732
1734 QString fn =KOPrefs::instance()->mLastSyncedLocalFile; 1733 QString fn =KOPrefs::instance()->mLastSyncedLocalFile;
1735 1734
1736 fn =KFileDialog:: getOpenFileName( fn, i18n("Sync filename(*.ics/*.vcs)"), this ); 1735 fn =KFileDialog:: getOpenFileName( fn, i18n("Sync filename(*.ics/*.vcs)"), this );
1737 if ( fn == "" ) 1736 if ( fn == "" )
1738 return; 1737 return;
1739 //mView->setSyncDevice("local-file" ); 1738 //mView->setSyncDevice("local-file" );
1740 if ( syncWithFile( fn, false ) ) { 1739 if ( syncWithFile( fn, false ) ) {
1741 // Event* e = mView->getLastSyncEvent(); 1740 // Event* e = mView->getLastSyncEvent();
1742// e->setReadOnly( false ); 1741// e->setReadOnly( false );
1743// e->setLocation( i18n("Local file: ")+ KOPrefs::instance()->mLastSyncedLocalFile); 1742// e->setLocation( i18n("Local file: ")+ KOPrefs::instance()->mLastSyncedLocalFile);
1744// e->setReadOnly( true ); 1743// e->setReadOnly( true );
1745 } 1744 }
1746 1745
1747} 1746}
1748 1747
1749bool MainWindow::syncWithFile( QString fn , bool quick ) 1748bool MainWindow::syncWithFile( QString fn , bool quick )
1750{ 1749{
1751 bool ret = false; 1750 bool ret = false;
1752 QFileInfo info; 1751 QFileInfo info;
1753 info.setFile( fn ); 1752 info.setFile( fn );
1754 QString mess; 1753 QString mess;
1755 bool loadbup = true; 1754 bool loadbup = true;
1756 if ( !info. exists() ) { 1755 if ( !info. exists() ) {
1757 mess = i18n( "Sync file \n...%1\ndoes not exist!\nNothing synced!\n").arg(fn.right( 30) ); 1756 mess = i18n( "Sync file \n...%1\ndoes not exist!\nNothing synced!\n").arg(fn.right( 30) );
1758 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"), 1757 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),
1759 mess ); 1758 mess );
1760 return ret; 1759 return ret;
1761 } 1760 }
1762 int result = 0; 1761 int result = 0;
1763 if ( !quick ) { 1762 if ( !quick ) {
1764 mess = i18n("Sync with file \n...%1\nfrom:\n%2\n").arg(fn.right( 25)).arg(KGlobal::locale()->formatDateTime(info.lastModified (), true, false )); 1763 mess = i18n("Sync with file \n...%1\nfrom:\n%2\n").arg(fn.right( 25)).arg(KGlobal::locale()->formatDateTime(info.lastModified (), true, false ));
1765 result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"), 1764 result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),
1766 mess, 1765 mess,
1767 i18n("Sync"), i18n("Cancel"), 0, 1766 i18n("Sync"), i18n("Cancel"), 0,
1768 0, 1 ); 1767 0, 1 );
1769 if ( result ) 1768 if ( result )
1770 return false; 1769 return false;
1771 } 1770 }
1772 if ( KOPrefs::instance()->mAskForPreferences ) 1771 if ( KOPrefs::instance()->mAskForPreferences )
1773 mView->edit_sync_options(); 1772 mView->edit_sync_options();
1774 if ( result == 0 ) { 1773 if ( result == 0 ) {
1775 //qDebug("Now sycing ... "); 1774 //qDebug("Now sycing ... ");
1776 if ( ret = mView->syncCalendar( fn, KOPrefs::instance()->mSyncAlgoPrefs ) ) 1775 if ( ret = mView->syncCalendar( fn, KOPrefs::instance()->mSyncAlgoPrefs ) )
1777 setCaption( i18n("Synchronization successful") ); 1776 setCaption( i18n("Synchronization successful") );
1778 else 1777 else
1779 setCaption( i18n("Sync cancelled or failed. Nothing synced.") ); 1778 setCaption( i18n("Sync cancelled or failed. Nothing synced.") );
1780 if ( ! quick ) 1779 if ( ! quick )
1781 KOPrefs::instance()->mLastSyncedLocalFile = fn; 1780 KOPrefs::instance()->mLastSyncedLocalFile = fn;
1782 slotModifiedChanged( true ); 1781 slotModifiedChanged( true );
1783 } 1782 }
1784 return ret; 1783 return ret;
1785} 1784}
1786void MainWindow::quickSyncLocalFile() 1785void MainWindow::quickSyncLocalFile()
1787{ 1786{
1788 //mView->setSyncDevice("local-file" ); 1787 //mView->setSyncDevice("local-file" );
1789 //qDebug("quickSyncLocalFile() "); 1788 //qDebug("quickSyncLocalFile() ");
1790 if ( syncWithFile( KOPrefs::instance()->mLastSyncedLocalFile, false ) ) { 1789 if ( syncWithFile( KOPrefs::instance()->mLastSyncedLocalFile, false ) ) {
1791 // Event* e = mView->getLastSyncEvent(); 1790 // Event* e = mView->getLastSyncEvent();
1792// e->setReadOnly( false ); 1791// e->setReadOnly( false );
1793// e->setLocation( i18n("Quick with file: ")+ KOPrefs::instance()->mLastSyncedLocalFile); 1792// e->setLocation( i18n("Quick with file: ")+ KOPrefs::instance()->mLastSyncedLocalFile);
1794// e->setReadOnly( true ); 1793// e->setReadOnly( true );
1795 1794
1796 } 1795 }
1797} 1796}
1798 1797
1799void MainWindow::confSync() 1798void MainWindow::confSync()
1800{ 1799{
1801 mView->confSync(); 1800 mView->confSync();
1802 fillSyncMenu(); 1801 fillSyncMenu();
1803 mView->writeSettings(); 1802 //mView->writeSettings();
1804 1803
1805 1804
1806} 1805}
1807void MainWindow::syncRemote( KSyncProfile* prof, bool ask) 1806void MainWindow::syncRemote( KSyncProfile* prof, bool ask)
1808{ 1807{
1809 QString question; 1808 QString question;
1810 if ( ask ) { 1809 if ( ask ) {
1811 question = i18n("Do you really want\nto remote sync\nwith profile \n")+ prof->getName()+" ?\n"; 1810 question = i18n("Do you really want\nto remote sync\nwith profile \n")+ prof->getName()+" ?\n";
1812 if ( QMessageBox::information( this, i18n("KO/Pi Sync"), 1811 if ( QMessageBox::information( this, i18n("KO/Pi Sync"),
1813 question, 1812 question,
1814 i18n("Yes"), i18n("No"), 1813 i18n("Yes"), i18n("No"),
1815 0, 0 ) != 0 ) 1814 0, 0 ) != 0 )
1816 return; 1815 return;
1817 } 1816 }
1818 QString command = prof->getPreSyncCommand(); 1817 QString command = prof->getPreSyncCommand();
1819 int fi; 1818 int fi;
1820 if ( (fi = command.find("$PWD$")) > 0 ) { 1819 if ( (fi = command.find("$PWD$")) > 0 ) {
1821 QString pwd = getPassword(); 1820 QString pwd = getPassword();
1822 command = command.left( fi )+ pwd + command.mid( fi+5 ); 1821 command = command.left( fi )+ pwd + command.mid( fi+5 );
1823 1822
1824 } 1823 }
1825 int maxlen = 30; 1824 int maxlen = 30;
1826 if ( QApplication::desktop()->width() > 320 ) 1825 if ( QApplication::desktop()->width() > 320 )
1827 maxlen += 25; 1826 maxlen += 25;
1828 setCaption ( i18n( "Copy remote file to local machine..." ) ); 1827 setCaption ( i18n( "Copy remote file to local machine..." ) );
1829 int fileSize = 0; 1828 int fileSize = 0;
1830 int result = system ( command ); 1829 int result = system ( command );
1831 // 0 : okay 1830 // 0 : okay
1832 // 256: no such file or dir 1831 // 256: no such file or dir
1833 // 1832 //
1834 qDebug("KO: Remote copy result(0 = okay): %d ",result ); 1833 qDebug("KO: Remote copy result(0 = okay): %d ",result );
1835 if ( result != 0 ) { 1834 if ( result != 0 ) {
1836 int len = maxlen; 1835 int len = maxlen;
1837 while ( len < command.length() ) { 1836 while ( len < command.length() ) {
1838 command.insert( len , "\n" ); 1837 command.insert( len , "\n" );
1839 len += maxlen +2; 1838 len += maxlen +2;
1840 } 1839 }
1841 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) ; 1840 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) ;
1842 QMessageBox::information( this, i18n("KO/Pi Sync - ERROR"), 1841 QMessageBox::information( this, i18n("KO/Pi Sync - ERROR"),
1843 question, 1842 question,
1844 i18n("Okay!")) ; 1843 i18n("Okay!")) ;
1845 setCaption ("KO/Pi"); 1844 setCaption ("KO/Pi");
1846 return; 1845 return;
1847 } 1846 }
1848 setCaption ( i18n( "Copying succeed." ) ); 1847 setCaption ( i18n( "Copying succeed." ) );
1849 //qDebug(" file **%s** ",prof->getLocalTempFile().latin1() ); 1848 //qDebug(" file **%s** ",prof->getLocalTempFile().latin1() );
1850 if ( syncWithFile( prof->getLocalTempFile(), true ) ) { 1849 if ( syncWithFile( prof->getLocalTempFile(), true ) ) {
1851// Event* e = mView->getLastSyncEvent(); 1850// Event* e = mView->getLastSyncEvent();
1852// e->setReadOnly( false ); 1851// e->setReadOnly( false );
1853// e->setLocation( KOPrefs::instance()->mSyncProfileNames[mCurrentSyncProfile]); 1852// e->setLocation( KOPrefs::instance()->mSyncProfileNames[mCurrentSyncProfile]);
1854// e->setReadOnly( true ); 1853// e->setReadOnly( true );
1855 if ( KOPrefs::instance()->mWriteBackFile ) { 1854 if ( KOPrefs::instance()->mWriteBackFile ) {
1856 command = prof->getPostSyncCommand(); 1855 command = prof->getPostSyncCommand();
1857 setCaption ( i18n( "Writing back file ..." ) ); 1856 setCaption ( i18n( "Writing back file ..." ) );
1858 result = system ( command ); 1857 result = system ( command );
1859 qDebug("KO: Writing back file result: %d ", result); 1858 qDebug("KO: Writing back file result: %d ", result);
1860 if ( result != 0 ) { 1859 if ( result != 0 ) {
1861 setCaption ( i18n( "Writing back file result: " )+QString::number( result ) ); 1860 setCaption ( i18n( "Writing back file result: " )+QString::number( result ) );
1862 return; 1861 return;
1863 } else { 1862 } else {
1864 setCaption ( i18n( "Syncronization sucessfully completed" ) ); 1863 setCaption ( i18n( "Syncronization sucessfully completed" ) );
1865 } 1864 }
1866 } 1865 }
1867 } 1866 }
1868 return; 1867 return;
1869} 1868}
1870void MainWindow::syncSSH() 1869void MainWindow::syncSSH()
1871{ 1870{
1872 // not used anymore 1871 // not used anymore
1873 QTime timer; 1872 QTime timer;
1874 timer.start(); 1873 timer.start();
1875 //qDebug("MainWindow::syncssh() "); 1874 //qDebug("MainWindow::syncssh() ");
1876 KOPrefs *p = KOPrefs::instance(); 1875 KOPrefs *p = KOPrefs::instance();
1877 QString localFile = p->mLocalTempFile; 1876 QString localFile = p->mLocalTempFile;
1878 QString remoteIP = p->mRemoteIP; 1877 QString remoteIP = p->mRemoteIP;
1879 QString remoteUser = p->mRemoteUser; 1878 QString remoteUser = p->mRemoteUser;
1880 QString remoteFile = p->mRemoteFile; 1879 QString remoteFile = p->mRemoteFile;
1881 if ( p->mUsePassWd && p->mRemotePassWd.length() > 0 ) 1880 if ( p->mUsePassWd && p->mRemotePassWd.length() > 0 )
1882 remoteUser += ":" + p->mRemotePassWd; 1881 remoteUser += ":" + p->mRemotePassWd;
1883 1882
1884 QString question = i18n("Do you really want\nto remote sync?\n \n") + 1883 QString question = i18n("Do you really want\nto remote sync?\n \n") +
1885 i18n("IP: " ) +remoteIP +"\n" + 1884 i18n("IP: " ) +remoteIP +"\n" +
1886 i18n("User: " ) + remoteUser +"\n" ; 1885 i18n("User: " ) + remoteUser +"\n" ;
1887 int maxlen = 30; 1886 int maxlen = 30;
1888 if ( QApplication::desktop()->width() > 320 ) 1887 if ( QApplication::desktop()->width() > 320 )
1889 maxlen += 25; 1888 maxlen += 25;
1890 if ( remoteFile.length() > maxlen ) 1889 if ( remoteFile.length() > maxlen )
1891 question += i18n("Remote file:\n..." ) + remoteFile.right(maxlen) +"\n"; 1890 question += i18n("Remote file:\n..." ) + remoteFile.right(maxlen) +"\n";
1892 else 1891 else
1893 question += i18n("Remote file:\n " ) + remoteFile +"\n"; 1892 question += i18n("Remote file:\n " ) + remoteFile +"\n";
1894 if ( localFile.length() > maxlen ) 1893 if ( localFile.length() > maxlen )
1895 question += i18n("Local temp file:\n..." ) + localFile.right(maxlen) +"\n"; 1894 question += i18n("Local temp file:\n..." ) + localFile.right(maxlen) +"\n";
1896 else 1895 else
1897 question += i18n("Local temp file:\n " ) + localFile +"\n"; 1896 question += i18n("Local temp file:\n " ) + localFile +"\n";
1898 1897
1899 if ( QMessageBox::information( this, i18n("KO/Pi Sync"), 1898 if ( QMessageBox::information( this, i18n("KO/Pi Sync"),