summaryrefslogtreecommitdiffabout
path: root/korganizer
authorzautrix <zautrix>2004-08-07 15:02:15 (UTC)
committer zautrix <zautrix>2004-08-07 15:02:15 (UTC)
commita9a774e19c02f03de948b6064804b913abd4f08b (patch) (unidiff)
tree351a08e627bc661f9b69a0af7452f9749865e619 /korganizer
parent31764784e8753157a936e42e21dcdc41bd8e2eb7 (diff)
downloadkdepimpi-a9a774e19c02f03de948b6064804b913abd4f08b.zip
kdepimpi-a9a774e19c02f03de948b6064804b913abd4f08b.tar.gz
kdepimpi-a9a774e19c02f03de948b6064804b913abd4f08b.tar.bz2
more Sync fixes
Diffstat (limited to 'korganizer') (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/calendarview.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp
index 5150455..f859b90 100644
--- a/korganizer/calendarview.cpp
+++ b/korganizer/calendarview.cpp
@@ -122,1553 +122,1556 @@
122#include <stdio.h> 122#include <stdio.h>
123#include <unistd.h> 123#include <unistd.h>
124#else 124#else
125#include <qprocess.h> 125#include <qprocess.h>
126#endif 126#endif
127using namespace KOrg; 127using namespace KOrg;
128using namespace KCal; 128using namespace KCal;
129extern int globalFlagBlockAgenda; 129extern int globalFlagBlockAgenda;
130extern int globalFlagBlockStartup; 130extern int globalFlagBlockStartup;
131 131
132 132
133 133
134class KOBeamPrefs : public QDialog 134class KOBeamPrefs : public QDialog
135{ 135{
136 public: 136 public:
137 KOBeamPrefs( QWidget *parent=0, const char *name=0 ) : 137 KOBeamPrefs( QWidget *parent=0, const char *name=0 ) :
138 QDialog( parent, name, true ) 138 QDialog( parent, name, true )
139 { 139 {
140 setCaption( i18n("Beam Options") ); 140 setCaption( i18n("Beam Options") );
141 QVBoxLayout* lay = new QVBoxLayout( this ); 141 QVBoxLayout* lay = new QVBoxLayout( this );
142 lay->setSpacing( 3 ); 142 lay->setSpacing( 3 );
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 mCalPrinter = 0; 239 mCalPrinter = 0;
240 mFilters.setAutoDelete(true); 240 mFilters.setAutoDelete(true);
241 241
242 mCalendar->registerObserver( this ); 242 mCalendar->registerObserver( this );
243 // TODO: Make sure that view is updated, when calendar is changed. 243 // TODO: Make sure that view is updated, when calendar is changed.
244 244
245 mStorage = new FileStorage( mCalendar ); 245 mStorage = new FileStorage( mCalendar );
246 mNavigator = new DateNavigator( this, "datevav", mViewManager ); 246 mNavigator = new DateNavigator( this, "datevav", mViewManager );
247 247
248 QBoxLayout *topLayout = (QBoxLayout*)layout(); 248 QBoxLayout *topLayout = (QBoxLayout*)layout();
249#ifndef KORG_NOSPLITTER 249#ifndef KORG_NOSPLITTER
250 // create the main layout frames. 250 // create the main layout frames.
251 mPanner = new QSplitter(QSplitter::Horizontal,this,"CalendarView::Panner"); 251 mPanner = new QSplitter(QSplitter::Horizontal,this,"CalendarView::Panner");
252 topLayout->addWidget(mPanner); 252 topLayout->addWidget(mPanner);
253 253
254 mLeftSplitter = new QSplitter(QSplitter::Vertical,mPanner, 254 mLeftSplitter = new QSplitter(QSplitter::Vertical,mPanner,
255 "CalendarView::LeftFrame"); 255 "CalendarView::LeftFrame");
256 mPanner->setResizeMode(mLeftSplitter,QSplitter::KeepSize); 256 mPanner->setResizeMode(mLeftSplitter,QSplitter::KeepSize);
257 257
258 mDateNavigator = new KDateNavigator(mLeftSplitter, mCalendar, TRUE, 258 mDateNavigator = new KDateNavigator(mLeftSplitter, mCalendar, TRUE,
259 "CalendarView::DateNavigator", QDate::currentDate() ); 259 "CalendarView::DateNavigator", QDate::currentDate() );
260 mLeftSplitter->setResizeMode(mDateNavigator,QSplitter::KeepSize); 260 mLeftSplitter->setResizeMode(mDateNavigator,QSplitter::KeepSize);
261 mTodoList = new KOTodoView(mCalendar, mLeftSplitter, "todolist_small2"); 261 mTodoList = new KOTodoView(mCalendar, mLeftSplitter, "todolist_small2");
262 mFilterView = new KOFilterView(&mFilters,mLeftSplitter,"CalendarView::FilterView"); 262 mFilterView = new KOFilterView(&mFilters,mLeftSplitter,"CalendarView::FilterView");
263 263
264#ifdef KORG_NORESOURCEVIEW 264#ifdef KORG_NORESOURCEVIEW
265 mResourceView = 0; 265 mResourceView = 0;
266#else 266#else
267 if ( mResourceManager ) { 267 if ( mResourceManager ) {
268 mResourceView = new ResourceView( mResourceManager, mLeftSplitter ); 268 mResourceView = new ResourceView( mResourceManager, mLeftSplitter );
269 mResourceView->updateView(); 269 mResourceView->updateView();
270 connect( mResourceView, SIGNAL( resourcesChanged() ), 270 connect( mResourceView, SIGNAL( resourcesChanged() ),
271 SLOT( updateView() ) ); 271 SLOT( updateView() ) );
272 } else { 272 } else {
273 mResourceView = 0; 273 mResourceView = 0;
274 } 274 }
275#endif 275#endif
276 QWidget *rightBox = new QWidget( mPanner ); 276 QWidget *rightBox = new QWidget( mPanner );
277 QBoxLayout *rightLayout = new QVBoxLayout( rightBox ); 277 QBoxLayout *rightLayout = new QVBoxLayout( rightBox );
278 278
279 mNavigatorBar = new NavigatorBar( QDate::currentDate(), rightBox, "useBigPixmaps" ); 279 mNavigatorBar = new NavigatorBar( QDate::currentDate(), rightBox, "useBigPixmaps" );
280 rightLayout->addWidget( mNavigatorBar ); 280 rightLayout->addWidget( mNavigatorBar );
281 281
282 mRightFrame = new QWidgetStack( rightBox ); 282 mRightFrame = new QWidgetStack( rightBox );
283 rightLayout->addWidget( mRightFrame, 1 ); 283 rightLayout->addWidget( mRightFrame, 1 );
284 284
285 mLeftFrame = mLeftSplitter; 285 mLeftFrame = mLeftSplitter;
286#else 286#else
287 QWidget *mainBox = new QWidget( this ); 287 QWidget *mainBox = new QWidget( this );
288 QWidget *leftFrame = new QWidget( mainBox ); 288 QWidget *leftFrame = new QWidget( mainBox );
289 289
290 QBoxLayout * mainBoxLayout; 290 QBoxLayout * mainBoxLayout;
291 QBoxLayout * leftFrameLayout; 291 QBoxLayout * leftFrameLayout;
292 if ( KOPrefs::instance()->mVerticalScreen ) { 292 if ( KOPrefs::instance()->mVerticalScreen ) {
293 mainBoxLayout = new QVBoxLayout(mainBox); 293 mainBoxLayout = new QVBoxLayout(mainBox);
294 leftFrameLayout = new QHBoxLayout(leftFrame ); 294 leftFrameLayout = new QHBoxLayout(leftFrame );
295 } else { 295 } else {
296 mainBoxLayout = new QHBoxLayout(mainBox); 296 mainBoxLayout = new QHBoxLayout(mainBox);
297 leftFrameLayout = new QVBoxLayout(leftFrame ); 297 leftFrameLayout = new QVBoxLayout(leftFrame );
298 } 298 }
299 topLayout->addWidget( mainBox ); 299 topLayout->addWidget( mainBox );
300 mainBoxLayout->addWidget (leftFrame); 300 mainBoxLayout->addWidget (leftFrame);
301 mDateNavigator = new KDateNavigator(leftFrame, mCalendar, TRUE, 301 mDateNavigator = new KDateNavigator(leftFrame, mCalendar, TRUE,
302 "CalendarView::DateNavigator", QDate::currentDate()); 302 "CalendarView::DateNavigator", QDate::currentDate());
303 // mDateNavigator->blockSignals( true ); 303 // mDateNavigator->blockSignals( true );
304 leftFrameLayout->addWidget( mDateNavigator ); 304 leftFrameLayout->addWidget( mDateNavigator );
305 mFilterView = new KOFilterView(&mFilters,leftFrame,"CalendarView::FilterView"); 305 mFilterView = new KOFilterView(&mFilters,leftFrame,"CalendarView::FilterView");
306 mTodoList = new KOTodoView(mCalendar, leftFrame, "todolist"); 306 mTodoList = new KOTodoView(mCalendar, leftFrame, "todolist");
307 307
308 if ( QApplication::desktop()->width() < 480 ) { 308 if ( QApplication::desktop()->width() < 480 ) {
309 leftFrameLayout->addWidget(mFilterView); 309 leftFrameLayout->addWidget(mFilterView);
310 leftFrameLayout->addWidget(mTodoList, 2 ); 310 leftFrameLayout->addWidget(mTodoList, 2 );
311 311
312 } else { 312 } else {
313 leftFrameLayout->addWidget(mTodoList,2 ); 313 leftFrameLayout->addWidget(mTodoList,2 );
314 leftFrameLayout->addWidget(mFilterView ); 314 leftFrameLayout->addWidget(mFilterView );
315 } 315 }
316 mFilterView->hide(); 316 mFilterView->hide();
317 QWidget *rightBox = new QWidget( mainBox ); 317 QWidget *rightBox = new QWidget( mainBox );
318 mainBoxLayout->addWidget ( rightBox, 10 ); 318 mainBoxLayout->addWidget ( rightBox, 10 );
319 QBoxLayout *rightLayout = new QVBoxLayout( rightBox ); 319 QBoxLayout *rightLayout = new QVBoxLayout( rightBox );
320 mNavigatorBar = new NavigatorBar( QDate::currentDate(), rightBox, "useBigPixmaps" ); 320 mNavigatorBar = new NavigatorBar( QDate::currentDate(), rightBox, "useBigPixmaps" );
321 mRightFrame = new QWidgetStack( rightBox ); 321 mRightFrame = new QWidgetStack( rightBox );
322 rightLayout->addWidget( mNavigatorBar ); 322 rightLayout->addWidget( mNavigatorBar );
323 rightLayout->addWidget( mRightFrame, 10 ); 323 rightLayout->addWidget( mRightFrame, 10 );
324 324
325 mLeftFrame = leftFrame; 325 mLeftFrame = leftFrame;
326 if ( KOPrefs::instance()->mVerticalScreen ) { 326 if ( KOPrefs::instance()->mVerticalScreen ) {
327 mTodoList->setFixedHeight( mDateNavigator->sizeHint().height() ); 327 mTodoList->setFixedHeight( mDateNavigator->sizeHint().height() );
328 leftFrame->setFixedHeight( mDateNavigator->sizeHint().height() ); 328 leftFrame->setFixedHeight( mDateNavigator->sizeHint().height() );
329 } else { 329 } else {
330 mTodoList->setFixedWidth( mDateNavigator->sizeHint().width() ); 330 mTodoList->setFixedWidth( mDateNavigator->sizeHint().width() );
331 leftFrame->setFixedWidth( mDateNavigator->sizeHint().width() ); 331 leftFrame->setFixedWidth( mDateNavigator->sizeHint().width() );
332 } 332 }
333 333
334 //qDebug("Calendarview Size %d %d ", width(), height()); 334 //qDebug("Calendarview Size %d %d ", width(), height());
335#endif 335#endif
336 336
337 connect( mNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ), 337 connect( mNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ),
338 SLOT( showDates( const KCal::DateList & ) ) ); 338 SLOT( showDates( const KCal::DateList & ) ) );
339 connect( mNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ), 339 connect( mNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ),
340 mDateNavigator, SLOT( selectDates( const KCal::DateList & ) ) ); 340 mDateNavigator, SLOT( selectDates( const KCal::DateList & ) ) );
341 341
342 connect( mNavigatorBar, SIGNAL( goPrevYear() ), 342 connect( mNavigatorBar, SIGNAL( goPrevYear() ),
343 mNavigator, SLOT( selectPreviousYear() ) ); 343 mNavigator, SLOT( selectPreviousYear() ) );
344 connect( mNavigatorBar, SIGNAL( goNextYear() ), 344 connect( mNavigatorBar, SIGNAL( goNextYear() ),
345 mNavigator, SLOT( selectNextYear() ) ); 345 mNavigator, SLOT( selectNextYear() ) );
346 connect( mNavigatorBar, SIGNAL( goPrevMonth() ), 346 connect( mNavigatorBar, SIGNAL( goPrevMonth() ),
347 mNavigator, SLOT( selectPreviousMonth() ) ); 347 mNavigator, SLOT( selectPreviousMonth() ) );
348 connect( mNavigatorBar, SIGNAL( goNextMonth() ), 348 connect( mNavigatorBar, SIGNAL( goNextMonth() ),
349 mNavigator, SLOT( selectNextMonth() ) ); 349 mNavigator, SLOT( selectNextMonth() ) );
350 350
351 connect( mNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ), 351 connect( mNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ),
352 mNavigatorBar, SLOT( selectDates( const KCal::DateList & ) ) ); 352 mNavigatorBar, SLOT( selectDates( const KCal::DateList & ) ) );
353 353
354 connect( mDateNavigator, SIGNAL( weekClicked( const QDate & ) ), 354 connect( mDateNavigator, SIGNAL( weekClicked( const QDate & ) ),
355 mNavigator, SLOT( selectWeek( const QDate & ) ) ); 355 mNavigator, SLOT( selectWeek( const QDate & ) ) );
356 356
357 connect( mDateNavigator, SIGNAL( goPrevYear() ), 357 connect( mDateNavigator, SIGNAL( goPrevYear() ),
358 mNavigator, SLOT( selectPreviousYear() ) ); 358 mNavigator, SLOT( selectPreviousYear() ) );
359 connect( mDateNavigator, SIGNAL( goNextYear() ), 359 connect( mDateNavigator, SIGNAL( goNextYear() ),
360 mNavigator, SLOT( selectNextYear() ) ); 360 mNavigator, SLOT( selectNextYear() ) );
361 connect( mDateNavigator, SIGNAL( goPrevMonth() ), 361 connect( mDateNavigator, SIGNAL( goPrevMonth() ),
362 mNavigator, SLOT( selectPreviousMonth() ) ); 362 mNavigator, SLOT( selectPreviousMonth() ) );
363 connect( mDateNavigator, SIGNAL( goNextMonth() ), 363 connect( mDateNavigator, SIGNAL( goNextMonth() ),
364 mNavigator, SLOT( selectNextMonth() ) ); 364 mNavigator, SLOT( selectNextMonth() ) );
365 365
366 connect( mDateNavigator, SIGNAL( goPrevious() ), 366 connect( mDateNavigator, SIGNAL( goPrevious() ),
367 mNavigator, SLOT( selectPrevious() ) ); 367 mNavigator, SLOT( selectPrevious() ) );
368 connect( mDateNavigator, SIGNAL( goNext() ), 368 connect( mDateNavigator, SIGNAL( goNext() ),
369 mNavigator, SLOT( selectNext() ) ); 369 mNavigator, SLOT( selectNext() ) );
370 connect( mDateNavigator, SIGNAL( monthSelected ( int ) ), 370 connect( mDateNavigator, SIGNAL( monthSelected ( int ) ),
371 mNavigator, SLOT( slotMonthSelect( int ) ) ); 371 mNavigator, SLOT( slotMonthSelect( int ) ) );
372 connect( mNavigatorBar, SIGNAL( monthSelected ( int ) ), 372 connect( mNavigatorBar, SIGNAL( monthSelected ( int ) ),
373 mNavigator, SLOT( slotMonthSelect( int ) ) ); 373 mNavigator, SLOT( slotMonthSelect( int ) ) );
374 374
375 connect( mDateNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ), 375 connect( mDateNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ),
376 mNavigator, SLOT( selectDates( const KCal::DateList & ) ) ); 376 mNavigator, SLOT( selectDates( const KCal::DateList & ) ) );
377 377
378 connect( mDateNavigator, SIGNAL( eventDropped( Event * ) ), 378 connect( mDateNavigator, SIGNAL( eventDropped( Event * ) ),
379 SLOT( eventAdded( Event *) ) ); 379 SLOT( eventAdded( Event *) ) );
380 380
381 connect(mDateNavigator,SIGNAL(dayPassed(QDate)),SLOT(updateView())); 381 connect(mDateNavigator,SIGNAL(dayPassed(QDate)),SLOT(updateView()));
382 382
383 connect( this, SIGNAL( configChanged() ), 383 connect( this, SIGNAL( configChanged() ),
384 mDateNavigator, SLOT( updateConfig() ) ); 384 mDateNavigator, SLOT( updateConfig() ) );
385 385
386 connect( mTodoList, SIGNAL( newTodoSignal() ), 386 connect( mTodoList, SIGNAL( newTodoSignal() ),
387 SLOT( newTodo() ) ); 387 SLOT( newTodo() ) );
388 connect( mTodoList, SIGNAL( newSubTodoSignal( Todo *) ), 388 connect( mTodoList, SIGNAL( newSubTodoSignal( Todo *) ),
389 SLOT( newSubTodo( Todo * ) ) ); 389 SLOT( newSubTodo( Todo * ) ) );
390 connect( mTodoList, SIGNAL( editTodoSignal( Todo * ) ), 390 connect( mTodoList, SIGNAL( editTodoSignal( Todo * ) ),
391 SLOT( editTodo( Todo * ) ) ); 391 SLOT( editTodo( Todo * ) ) );
392 connect( mTodoList, SIGNAL( showTodoSignal( Todo * ) ), 392 connect( mTodoList, SIGNAL( showTodoSignal( Todo * ) ),
393 SLOT( showTodo( Todo *) ) ); 393 SLOT( showTodo( Todo *) ) );
394 connect( mTodoList, SIGNAL( deleteTodoSignal( Todo *) ), 394 connect( mTodoList, SIGNAL( deleteTodoSignal( Todo *) ),
395 SLOT( deleteTodo( Todo *) ) ); 395 SLOT( deleteTodo( Todo *) ) );
396 connect( this, SIGNAL( configChanged()), mTodoList, SLOT( updateConfig() ) ); 396 connect( this, SIGNAL( configChanged()), mTodoList, SLOT( updateConfig() ) );
397 connect( mTodoList, SIGNAL( purgeCompletedSignal() ), 397 connect( mTodoList, SIGNAL( purgeCompletedSignal() ),
398 SLOT( purgeCompleted() ) ); 398 SLOT( purgeCompleted() ) );
399 connect( mTodoList, SIGNAL( todoModifiedSignal( Todo *, int ) ), 399 connect( mTodoList, SIGNAL( todoModifiedSignal( Todo *, int ) ),
400 SIGNAL( todoModified( Todo *, int ) ) ); 400 SIGNAL( todoModified( Todo *, int ) ) );
401 401
402 connect( mTodoList, SIGNAL( cloneTodoSignal( Incidence * ) ), 402 connect( mTodoList, SIGNAL( cloneTodoSignal( Incidence * ) ),
403 this, SLOT ( cloneIncidence( Incidence * ) ) ); 403 this, SLOT ( cloneIncidence( Incidence * ) ) );
404 connect( mTodoList, SIGNAL( cancelTodoSignal( Incidence * ) ), 404 connect( mTodoList, SIGNAL( cancelTodoSignal( Incidence * ) ),
405 this, SLOT (cancelIncidence( Incidence * ) ) ); 405 this, SLOT (cancelIncidence( Incidence * ) ) );
406 406
407 connect( mTodoList, SIGNAL( moveTodoSignal( Incidence * ) ), 407 connect( mTodoList, SIGNAL( moveTodoSignal( Incidence * ) ),
408 this, SLOT ( moveIncidence( Incidence * ) ) ); 408 this, SLOT ( moveIncidence( Incidence * ) ) );
409 connect( mTodoList, SIGNAL( beamTodoSignal( Incidence * ) ), 409 connect( mTodoList, SIGNAL( beamTodoSignal( Incidence * ) ),
410 this, SLOT ( beamIncidence( Incidence * ) ) ); 410 this, SLOT ( beamIncidence( Incidence * ) ) );
411 411
412 connect( mTodoList, SIGNAL( unparentTodoSignal( Todo * ) ), 412 connect( mTodoList, SIGNAL( unparentTodoSignal( Todo * ) ),
413 this, SLOT ( todo_unsub( Todo * ) ) ); 413 this, SLOT ( todo_unsub( Todo * ) ) );
414 414
415 connect( this, SIGNAL( todoModified( Todo *, int )), mTodoList, 415 connect( this, SIGNAL( todoModified( Todo *, int )), mTodoList,
416 SLOT( updateTodo( Todo *, int ) ) ); 416 SLOT( updateTodo( Todo *, int ) ) );
417 connect( this, SIGNAL( todoModified( Todo *, int )), this, 417 connect( this, SIGNAL( todoModified( Todo *, int )), this,
418 SLOT( changeTodoDisplay( Todo *, int ) ) ); 418 SLOT( changeTodoDisplay( Todo *, int ) ) );
419 419
420 420
421 connect( mFilterView, SIGNAL( filterChanged() ), SLOT( updateFilter() ) ); 421 connect( mFilterView, SIGNAL( filterChanged() ), SLOT( updateFilter() ) );
422 connect( mFilterView, SIGNAL( editFilters() ), SLOT( editFilters() ) ); 422 connect( mFilterView, SIGNAL( editFilters() ), SLOT( editFilters() ) );
423 connect( mCalendar, SIGNAL( addAlarm(const QDateTime &, const QString & ) ), SLOT( addAlarm(const QDateTime &, const QString & ) ) ); 423 connect( mCalendar, SIGNAL( addAlarm(const QDateTime &, const QString & ) ), SLOT( addAlarm(const QDateTime &, const QString & ) ) );
424 connect( mCalendar, SIGNAL( removeAlarm(const QDateTime &, const QString & ) ), SLOT( removeAlarm(const QDateTime &, const QString & ) ) ); 424 connect( mCalendar, SIGNAL( removeAlarm(const QDateTime &, const QString & ) ), SLOT( removeAlarm(const QDateTime &, const QString & ) ) );
425 425
426 426
427 427
428 428
429 429
430 connect(QApplication::clipboard(),SIGNAL(dataChanged()), 430 connect(QApplication::clipboard(),SIGNAL(dataChanged()),
431 SLOT(checkClipboard())); 431 SLOT(checkClipboard()));
432 connect( mTodoList,SIGNAL( incidenceSelected( Incidence * ) ), 432 connect( mTodoList,SIGNAL( incidenceSelected( Incidence * ) ),
433 SLOT( processTodoListSelection( Incidence * ) ) ); 433 SLOT( processTodoListSelection( Incidence * ) ) );
434 connect(mTodoList,SIGNAL(isModified(bool)),SLOT(setModified(bool))); 434 connect(mTodoList,SIGNAL(isModified(bool)),SLOT(setModified(bool)));
435 435
436 // kdDebug() << "CalendarView::CalendarView() done" << endl; 436 // kdDebug() << "CalendarView::CalendarView() done" << endl;
437 437
438 mDateFrame = new QVBox(0,0,WType_Popup); 438 mDateFrame = new QVBox(0,0,WType_Popup);
439 //mDateFrame->setFrameStyle(QFrame::PopupPanel | QFrame::Raised); 439 //mDateFrame->setFrameStyle(QFrame::PopupPanel | QFrame::Raised);
440 mDateFrame->setFrameStyle( QFrame::WinPanel |QFrame::Raised ); 440 mDateFrame->setFrameStyle( QFrame::WinPanel |QFrame::Raised );
441 mDateFrame->setLineWidth(3); 441 mDateFrame->setLineWidth(3);
442 mDateFrame->hide(); 442 mDateFrame->hide();
443 mDateFrame->setCaption( i18n( "Pick a date to display")); 443 mDateFrame->setCaption( i18n( "Pick a date to display"));
444 mDatePicker = new KDatePicker ( mDateFrame , QDate::currentDate() ); 444 mDatePicker = new KDatePicker ( mDateFrame , QDate::currentDate() );
445 445
446 connect(mDatePicker,SIGNAL(dateSelected(QDate)),SLOT(slotSelectPickerDate(QDate))); 446 connect(mDatePicker,SIGNAL(dateSelected(QDate)),SLOT(slotSelectPickerDate(QDate)));
447 447
448 mEventEditor = mDialogManager->getEventEditor(); 448 mEventEditor = mDialogManager->getEventEditor();
449 mTodoEditor = mDialogManager->getTodoEditor(); 449 mTodoEditor = mDialogManager->getTodoEditor();
450 450
451 mFlagEditDescription = false; 451 mFlagEditDescription = false;
452 452
453 mSuspendTimer = new QTimer( this ); 453 mSuspendTimer = new QTimer( this );
454 mAlarmTimer = new QTimer( this ); 454 mAlarmTimer = new QTimer( this );
455 mRecheckAlarmTimer = new QTimer( this ); 455 mRecheckAlarmTimer = new QTimer( this );
456 connect( mRecheckAlarmTimer, SIGNAL( timeout () ), SLOT( recheckTimerAlarm() ) ); 456 connect( mRecheckAlarmTimer, SIGNAL( timeout () ), SLOT( recheckTimerAlarm() ) );
457 connect( mSuspendTimer, SIGNAL( timeout () ), SLOT( suspendAlarm() ) ); 457 connect( mSuspendTimer, SIGNAL( timeout () ), SLOT( suspendAlarm() ) );
458 connect( mAlarmTimer, SIGNAL( timeout () ), SLOT( timerAlarm() ) ); 458 connect( mAlarmTimer, SIGNAL( timeout () ), SLOT( timerAlarm() ) );
459 mAlarmDialog = new AlarmDialog( this ); 459 mAlarmDialog = new AlarmDialog( this );
460 connect( mAlarmDialog, SIGNAL( addAlarm(const QDateTime &, const QString & ) ), SLOT( addSuspendAlarm(const QDateTime &, const QString & ) ) ); 460 connect( mAlarmDialog, SIGNAL( addAlarm(const QDateTime &, const QString & ) ), SLOT( addSuspendAlarm(const QDateTime &, const QString & ) ) );
461 mAlarmDialog->setServerNotification( false ); 461 mAlarmDialog->setServerNotification( false );
462 mAlarmDialog->setSuspendTime( KOPrefs::instance()->mAlarmSuspendTime ); 462 mAlarmDialog->setSuspendTime( KOPrefs::instance()->mAlarmSuspendTime );
463} 463}
464 464
465 465
466CalendarView::~CalendarView() 466CalendarView::~CalendarView()
467{ 467{
468 // kdDebug() << "~CalendarView()" << endl; 468 // kdDebug() << "~CalendarView()" << endl;
469 //qDebug("CalendarView::~CalendarView() "); 469 //qDebug("CalendarView::~CalendarView() ");
470 delete mDialogManager; 470 delete mDialogManager;
471 delete mViewManager; 471 delete mViewManager;
472 delete mStorage; 472 delete mStorage;
473 delete mDateFrame ; 473 delete mDateFrame ;
474 delete beamDialog; 474 delete beamDialog;
475 //kdDebug() << "~CalendarView() done" << endl; 475 //kdDebug() << "~CalendarView() done" << endl;
476} 476}
477void CalendarView::timerAlarm() 477void CalendarView::timerAlarm()
478{ 478{
479 //qDebug("CalendarView::timerAlarm() "); 479 //qDebug("CalendarView::timerAlarm() ");
480 computeAlarm(mAlarmNotification ); 480 computeAlarm(mAlarmNotification );
481} 481}
482 482
483void CalendarView::suspendAlarm() 483void CalendarView::suspendAlarm()
484{ 484{
485 //qDebug(" CalendarView::suspendAlarm() "); 485 //qDebug(" CalendarView::suspendAlarm() ");
486 computeAlarm(mSuspendAlarmNotification ); 486 computeAlarm(mSuspendAlarmNotification );
487 487
488} 488}
489 489
490void CalendarView::startAlarm( QString mess , QString filename) 490void CalendarView::startAlarm( QString mess , QString filename)
491{ 491{
492 mAlarmDialog->eventNotification( mess, KOPrefs::instance()->mAlarmPlayBeeps, filename, true,KOPrefs::instance()->mAlarmBeepInterval ,KOPrefs::instance()->mAlarmSuspendCount ); 492 mAlarmDialog->eventNotification( mess, KOPrefs::instance()->mAlarmPlayBeeps, filename, true,KOPrefs::instance()->mAlarmBeepInterval ,KOPrefs::instance()->mAlarmSuspendCount );
493 QTimer::singleShot( 3000, this, SLOT( checkNextTimerAlarm() ) ); 493 QTimer::singleShot( 3000, this, SLOT( checkNextTimerAlarm() ) );
494 494
495} 495}
496 496
497void CalendarView::checkNextTimerAlarm() 497void CalendarView::checkNextTimerAlarm()
498{ 498{
499 mCalendar->checkAlarmForIncidence( 0, true ); 499 mCalendar->checkAlarmForIncidence( 0, true );
500} 500}
501 501
502void CalendarView::computeAlarm( QString msg ) 502void CalendarView::computeAlarm( QString msg )
503{ 503{
504 504
505 QString mess = msg; 505 QString mess = msg;
506 QString mAlarmMessage = mess.mid( 9 ); 506 QString mAlarmMessage = mess.mid( 9 );
507 QString filename = MainWindow::resourcePath(); 507 QString filename = MainWindow::resourcePath();
508 filename += "koalarm.wav"; 508 filename += "koalarm.wav";
509 QString tempfilename; 509 QString tempfilename;
510 if ( mess.left( 13 ) == "suspend_alarm") { 510 if ( mess.left( 13 ) == "suspend_alarm") {
511 bool error = false; 511 bool error = false;
512 int len = mess.mid( 13 ).find("+++"); 512 int len = mess.mid( 13 ).find("+++");
513 if ( len < 2 ) 513 if ( len < 2 )
514 error = true; 514 error = true;
515 else { 515 else {
516 tempfilename = mess.mid( 13, len ); 516 tempfilename = mess.mid( 13, len );
517 if ( !QFile::exists( tempfilename ) ) 517 if ( !QFile::exists( tempfilename ) )
518 error = true; 518 error = true;
519 } 519 }
520 if ( ! error ) { 520 if ( ! error ) {
521 filename = tempfilename; 521 filename = tempfilename;
522 } 522 }
523 mAlarmMessage = mess.mid( 13+len+3 ); 523 mAlarmMessage = mess.mid( 13+len+3 );
524 //qDebug("suspend file %s ",tempfilename.latin1() ); 524 //qDebug("suspend file %s ",tempfilename.latin1() );
525 startAlarm( mAlarmMessage, filename); 525 startAlarm( mAlarmMessage, filename);
526 return; 526 return;
527 } 527 }
528 if ( mess.left( 11 ) == "timer_alarm") { 528 if ( mess.left( 11 ) == "timer_alarm") {
529 //mTimerTime = 0; 529 //mTimerTime = 0;
530 startAlarm( mess.mid( 11 ), filename ); 530 startAlarm( mess.mid( 11 ), filename );
531 return; 531 return;
532 } 532 }
533 if ( mess.left( 10 ) == "proc_alarm") { 533 if ( mess.left( 10 ) == "proc_alarm") {
534 bool error = false; 534 bool error = false;
535 int len = mess.mid( 10 ).find("+++"); 535 int len = mess.mid( 10 ).find("+++");
536 if ( len < 2 ) 536 if ( len < 2 )
537 error = true; 537 error = true;
538 else { 538 else {
539 tempfilename = mess.mid( 10, len ); 539 tempfilename = mess.mid( 10, len );
540 if ( !QFile::exists( tempfilename ) ) 540 if ( !QFile::exists( tempfilename ) )
541 error = true; 541 error = true;
542 } 542 }
543 if ( error ) { 543 if ( error ) {
544 mAlarmMessage = "Procedure Alarm\nError - File not found\n"; 544 mAlarmMessage = "Procedure Alarm\nError - File not found\n";
545 mAlarmMessage += mess.mid( 10+len+3+9 ); 545 mAlarmMessage += mess.mid( 10+len+3+9 );
546 } else { 546 } else {
547 //QCopEnvelope e("QPE/Application/kopi", "-writeFileSilent"); 547 //QCopEnvelope e("QPE/Application/kopi", "-writeFileSilent");
548 //qDebug("-----system command %s ",tempfilename.latin1() ); 548 //qDebug("-----system command %s ",tempfilename.latin1() );
549#ifndef _WIN32_ 549#ifndef _WIN32_
550 if ( vfork () == 0 ) { 550 if ( vfork () == 0 ) {
551 execl ( tempfilename.latin1(), 0 ); 551 execl ( tempfilename.latin1(), 0 );
552 return; 552 return;
553 } 553 }
554#else 554#else
555 QProcess* p = new QProcess(); 555 QProcess* p = new QProcess();
556 p->addArgument( tempfilename.latin1() ); 556 p->addArgument( tempfilename.latin1() );
557 p->start(); 557 p->start();
558 return; 558 return;
559#endif 559#endif
560 560
561 return; 561 return;
562 } 562 }
563 563
564 //qDebug("+++++++system command %s ",tempfilename.latin1() ); 564 //qDebug("+++++++system command %s ",tempfilename.latin1() );
565 } 565 }
566 if ( mess.left( 11 ) == "audio_alarm") { 566 if ( mess.left( 11 ) == "audio_alarm") {
567 bool error = false; 567 bool error = false;
568 int len = mess.mid( 11 ).find("+++"); 568 int len = mess.mid( 11 ).find("+++");
569 if ( len < 2 ) 569 if ( len < 2 )
570 error = true; 570 error = true;
571 else { 571 else {
572 tempfilename = mess.mid( 11, len ); 572 tempfilename = mess.mid( 11, len );
573 if ( !QFile::exists( tempfilename ) ) 573 if ( !QFile::exists( tempfilename ) )
574 error = true; 574 error = true;
575 } 575 }
576 if ( ! error ) { 576 if ( ! error ) {
577 filename = tempfilename; 577 filename = tempfilename;
578 } 578 }
579 mAlarmMessage = mess.mid( 11+len+3+9 ); 579 mAlarmMessage = mess.mid( 11+len+3+9 );
580 //qDebug("audio file command %s ",tempfilename.latin1() ); 580 //qDebug("audio file command %s ",tempfilename.latin1() );
581 } 581 }
582 if ( mess.left( 9 ) == "cal_alarm") { 582 if ( mess.left( 9 ) == "cal_alarm") {
583 mAlarmMessage = mess.mid( 9 ) ; 583 mAlarmMessage = mess.mid( 9 ) ;
584 } 584 }
585 585
586 startAlarm( mAlarmMessage, filename ); 586 startAlarm( mAlarmMessage, filename );
587 587
588 588
589} 589}
590 590
591void CalendarView::addSuspendAlarm(const QDateTime &qdt, const QString &noti ) 591void CalendarView::addSuspendAlarm(const QDateTime &qdt, const QString &noti )
592{ 592{
593 //qDebug("+++++addSUSPENDAlarm %s %s ", qdt.toString().latin1() , noti.latin1() ); 593 //qDebug("+++++addSUSPENDAlarm %s %s ", qdt.toString().latin1() , noti.latin1() );
594 594
595 mSuspendAlarmNotification = noti; 595 mSuspendAlarmNotification = noti;
596 int ms = QDateTime::currentDateTime().secsTo( qdt )*1000; 596 int ms = QDateTime::currentDateTime().secsTo( qdt )*1000;
597 //qDebug("Suspend Alarm timer started with secs: %d ", ms/1000); 597 //qDebug("Suspend Alarm timer started with secs: %d ", ms/1000);
598 mSuspendTimer->start( ms , true ); 598 mSuspendTimer->start( ms , true );
599 599
600} 600}
601 601
602void CalendarView::addAlarm(const QDateTime &qdt, const QString &noti ) 602void CalendarView::addAlarm(const QDateTime &qdt, const QString &noti )
603{ 603{
604 //qDebug("+++++addAlarm %s %s ", qdt.toString().latin1() , noti.latin1() ); 604 //qDebug("+++++addAlarm %s %s ", qdt.toString().latin1() , noti.latin1() );
605 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) { 605 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) {
606#ifndef DESKTOP_VERSION 606#ifndef DESKTOP_VERSION
607 AlarmServer::addAlarm ( qdt,"koalarm", noti.latin1() ); 607 AlarmServer::addAlarm ( qdt,"koalarm", noti.latin1() );
608#endif 608#endif
609 return; 609 return;
610 } 610 }
611 int maxSec; 611 int maxSec;
612 //maxSec = 5; //testing only 612 //maxSec = 5; //testing only
613 maxSec = 86400+3600; // one day+1hour 613 maxSec = 86400+3600; // one day+1hour
614 mAlarmNotification = noti; 614 mAlarmNotification = noti;
615 int sec = QDateTime::currentDateTime().secsTo( qdt ); 615 int sec = QDateTime::currentDateTime().secsTo( qdt );
616 if ( sec > maxSec ) { 616 if ( sec > maxSec ) {
617 mRecheckAlarmTimer->start( maxSec * 1000 ); 617 mRecheckAlarmTimer->start( maxSec * 1000 );
618 // 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 );
619 return; 619 return;
620 } else { 620 } else {
621 mRecheckAlarmTimer->stop(); 621 mRecheckAlarmTimer->stop();
622 } 622 }
623 //qDebug("Alarm timer started with secs: %d ", sec); 623 //qDebug("Alarm timer started with secs: %d ", sec);
624 mAlarmTimer->start( sec *1000 , true ); 624 mAlarmTimer->start( sec *1000 , true );
625 625
626} 626}
627// called by mRecheckAlarmTimer to get next alarm 627// called by mRecheckAlarmTimer to get next alarm
628// 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
629void CalendarView::recheckTimerAlarm() 629void CalendarView::recheckTimerAlarm()
630{ 630{
631 mAlarmTimer->stop(); 631 mAlarmTimer->stop();
632 mRecheckAlarmTimer->stop(); 632 mRecheckAlarmTimer->stop();
633 mCalendar->checkAlarmForIncidence( 0, true ); 633 mCalendar->checkAlarmForIncidence( 0, true );
634} 634}
635void CalendarView::removeAlarm(const QDateTime &qdt, const QString &noti ) 635void CalendarView::removeAlarm(const QDateTime &qdt, const QString &noti )
636{ 636{
637 //qDebug("-----removeAlarm %s %s ", qdt.toString().latin1() , noti.latin1() ); 637 //qDebug("-----removeAlarm %s %s ", qdt.toString().latin1() , noti.latin1() );
638 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) { 638 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) {
639#ifndef DESKTOP_VERSION 639#ifndef DESKTOP_VERSION
640 AlarmServer::deleteAlarm (qdt ,"koalarm" ,noti.latin1() ); 640 AlarmServer::deleteAlarm (qdt ,"koalarm" ,noti.latin1() );
641#endif 641#endif
642 return; 642 return;
643 } 643 }
644 mAlarmTimer->stop(); 644 mAlarmTimer->stop();
645} 645}
646void CalendarView::selectWeekNum ( int num ) 646void CalendarView::selectWeekNum ( int num )
647{ 647{
648 dateNavigator()->selectWeek( num ); 648 dateNavigator()->selectWeek( num );
649 mViewManager->showWeekView(); 649 mViewManager->showWeekView();
650} 650}
651KOViewManager *CalendarView::viewManager() 651KOViewManager *CalendarView::viewManager()
652{ 652{
653 return mViewManager; 653 return mViewManager;
654} 654}
655 655
656KODialogManager *CalendarView::dialogManager() 656KODialogManager *CalendarView::dialogManager()
657{ 657{
658 return mDialogManager; 658 return mDialogManager;
659} 659}
660 660
661QDate CalendarView::startDate() 661QDate CalendarView::startDate()
662{ 662{
663 DateList dates = mNavigator->selectedDates(); 663 DateList dates = mNavigator->selectedDates();
664 664
665 return dates.first(); 665 return dates.first();
666} 666}
667 667
668QDate CalendarView::endDate() 668QDate CalendarView::endDate()
669{ 669{
670 DateList dates = mNavigator->selectedDates(); 670 DateList dates = mNavigator->selectedDates();
671 671
672 return dates.last(); 672 return dates.last();
673} 673}
674 674
675 675
676void CalendarView::createPrinter() 676void CalendarView::createPrinter()
677{ 677{
678#ifndef KORG_NOPRINTER 678#ifndef KORG_NOPRINTER
679 if (!mCalPrinter) { 679 if (!mCalPrinter) {
680 mCalPrinter = new CalPrinter(this, mCalendar); 680 mCalPrinter = new CalPrinter(this, mCalendar);
681 connect(this, SIGNAL(configChanged()), mCalPrinter, SLOT(updateConfig())); 681 connect(this, SIGNAL(configChanged()), mCalPrinter, SLOT(updateConfig()));
682 } 682 }
683#endif 683#endif
684} 684}
685 685
686void CalendarView::confSync() 686void CalendarView::confSync()
687{ 687{
688 static KSyncPrefsDialog* sp = 0; 688 static KSyncPrefsDialog* sp = 0;
689 if ( ! sp ) { 689 if ( ! sp ) {
690 sp = new KSyncPrefsDialog( this, "syncprefs", true ); 690 sp = new KSyncPrefsDialog( this, "syncprefs", true );
691 } 691 }
692 sp->usrReadConfig(); 692 sp->usrReadConfig();
693#ifndef DESKTOP_VERSION 693#ifndef DESKTOP_VERSION
694 sp->showMaximized(); 694 sp->showMaximized();
695#else 695#else
696 sp->show(); 696 sp->show();
697#endif 697#endif
698 sp->exec(); 698 sp->exec();
699 KOPrefs::instance()->mSyncProfileNames = sp->getSyncProfileNames(); 699 KOPrefs::instance()->mSyncProfileNames = sp->getSyncProfileNames();
700 KOPrefs::instance()->mLocalMachineName = sp->getLocalMachineName (); 700 KOPrefs::instance()->mLocalMachineName = sp->getLocalMachineName ();
701} 701}
702 702
703 703
704//KOPrefs::instance()->mWriteBackFile 704//KOPrefs::instance()->mWriteBackFile
705//KOPrefs::instance()->mWriteBackExistingOnly 705//KOPrefs::instance()->mWriteBackExistingOnly
706 706
707// 0 syncPrefsGroup->addRadio(i18n("Take local entry on conflict")); 707// 0 syncPrefsGroup->addRadio(i18n("Take local entry on conflict"));
708// 1 syncPrefsGroup->addRadio(i18n("Take remote entry on conflict")); 708// 1 syncPrefsGroup->addRadio(i18n("Take remote entry on conflict"));
709// 2 syncPrefsGroup->addRadio(i18n("Take newest entry on conflict")); 709// 2 syncPrefsGroup->addRadio(i18n("Take newest entry on conflict"));
710// 3 syncPrefsGroup->addRadio(i18n("Ask for every entry on conflict")); 710// 3 syncPrefsGroup->addRadio(i18n("Ask for every entry on conflict"));
711// 4 syncPrefsGroup->addRadio(i18n("Force take local entry always")); 711// 4 syncPrefsGroup->addRadio(i18n("Force take local entry always"));
712// 5 syncPrefsGroup->addRadio(i18n("Force take remote entry always")); 712// 5 syncPrefsGroup->addRadio(i18n("Force take remote entry always"));
713 713
714int CalendarView::takeEvent( Incidence* local, Incidence* remote, int mode , bool full ) 714int CalendarView::takeEvent( Incidence* local, Incidence* remote, int mode , bool full )
715{ 715{
716 716
717 //void setZaurusId(int id); 717 //void setZaurusId(int id);
718 // int zaurusId() const; 718 // int zaurusId() const;
719 // void setZaurusUid(int id); 719 // void setZaurusUid(int id);
720 // int zaurusUid() const; 720 // int zaurusUid() const;
721 // void setZaurusStat(int id); 721 // void setZaurusStat(int id);
722 // int zaurusStat() const; 722 // int zaurusStat() const;
723 // 0 equal 723 // 0 equal
724 // 1 take local 724 // 1 take local
725 // 2 take remote 725 // 2 take remote
726 // 3 cancel 726 // 3 cancel
727 QDateTime lastSync = mLastCalendarSync; 727 QDateTime lastSync = mLastCalendarSync;
728 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 728 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
729 bool remCh, locCh; 729 bool remCh, locCh;
730 remCh = ( remote->getCsum(mCurrentSyncDevice) != local->getCsum(mCurrentSyncDevice) ); 730 remCh = ( remote->getCsum(mCurrentSyncDevice) != local->getCsum(mCurrentSyncDevice) );
731 locCh = ( local->lastModified() > mLastCalendarSync ); 731 locCh = ( local->lastModified() > mLastCalendarSync );
732 //qDebug("locCh %d remCh %d locuid %d remuid %d", locCh, remCh,local->zaurusUid(), remote->zaurusUid() ); 732 //qDebug("locCh %d remCh %d locuid %d remuid %d", locCh, remCh,local->zaurusUid(), remote->zaurusUid() );
733 if ( !remCh && ! locCh ) { 733 if ( !remCh && ! locCh ) {
734 //qDebug("both not changed "); 734 //qDebug("both not changed ");
735 lastSync = local->lastModified().addDays(1); 735 lastSync = local->lastModified().addDays(1);
736 } else { 736 } else {
737 if ( locCh ) { 737 if ( locCh ) {
738 //qDebug("loc changed %d %d", local->zaurusStat(), local->revision() ); 738 //qDebug("loc changed %d %d", local->zaurusStat(), local->revision() );
739 lastSync = local->lastModified().addDays( -1 ); 739 lastSync = local->lastModified().addDays( -1 );
740 if ( !remCh ) 740 if ( !remCh )
741 remote->setLastModified( lastSync.addDays( -1 ) ); 741 remote->setLastModified( lastSync.addDays( -1 ) );
742 } else { 742 } else {
743 //qDebug(" not loc changed "); 743 //qDebug(" not loc changed ");
744 lastSync = local->lastModified().addDays( 1 ); 744 lastSync = local->lastModified().addDays( 1 );
745 if ( remCh ) 745 if ( remCh )
746 remote->setLastModified( lastSync.addDays( 1 ) ); 746 remote->setLastModified( lastSync.addDays( 1 ) );
747 747
748 } 748 }
749 } 749 }
750 full = true; 750 full = true;
751 if ( mode < SYNC_PREF_ASK ) 751 if ( mode < SYNC_PREF_ASK )
752 mode = SYNC_PREF_ASK; 752 mode = SYNC_PREF_ASK;
753 } else { 753 } else {
754 if ( local->lastModified() == remote->lastModified() ) 754 if ( local->lastModified() == remote->lastModified() )
755 if ( local->revision() == remote->revision() ) 755 if ( local->revision() == remote->revision() )
756 return 0; 756 return 0;
757 757
758 } 758 }
759 // qDebug(" %d %d conflict on %s %s ", mode, full, local->summary().latin1(), remote->summary().latin1() ); 759 // qDebug(" %d %d conflict on %s %s ", mode, full, local->summary().latin1(), remote->summary().latin1() );
760 760
761 //qDebug("%s %d %s %d", local->lastModified().toString().latin1() , local->revision(), remote->lastModified().toString().latin1(), remote->revision()); 761 //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() ); 762 //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 763 //full = true; //debug only
764 if ( full ) { 764 if ( full ) {
765 bool equ = false; 765 bool equ = false;
766 if ( local->type() == "Event" ) { 766 if ( local->type() == "Event" ) {
767 equ = (*((Event*) local) == *((Event*) remote)); 767 equ = (*((Event*) local) == *((Event*) remote));
768 } 768 }
769 else if ( local->type() =="Todo" ) 769 else if ( local->type() =="Todo" )
770 equ = (*((Todo*) local) == (*(Todo*) remote)); 770 equ = (*((Todo*) local) == (*(Todo*) remote));
771 else if ( local->type() =="Journal" ) 771 else if ( local->type() =="Journal" )
772 equ = (*((Journal*) local) == *((Journal*) remote)); 772 equ = (*((Journal*) local) == *((Journal*) remote));
773 if ( equ ) { 773 if ( equ ) {
774 //qDebug("equal "); 774 //qDebug("equal ");
775 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 775 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
776 local->setCsum( mCurrentSyncDevice, remote->getCsum(mCurrentSyncDevice) ); 776 local->setCsum( mCurrentSyncDevice, remote->getCsum(mCurrentSyncDevice) );
777 } 777 }
778 if ( mode < SYNC_PREF_FORCE_LOCAL ) 778 if ( mode < SYNC_PREF_FORCE_LOCAL )
779 return 0; 779 return 0;
780 780
781 }//else //debug only 781 }//else //debug only
782 //qDebug("not equal %s %s ", local->summary().latin1(), remote->summary().latin1()); 782 //qDebug("not equal %s %s ", local->summary().latin1(), remote->summary().latin1());
783 } 783 }
784 int result; 784 int result;
785 bool localIsNew; 785 bool localIsNew;
786 if ( full && mode < SYNC_PREF_NEWEST ) 786 if ( full && mode < SYNC_PREF_NEWEST )
787 mode = SYNC_PREF_ASK; 787 mode = SYNC_PREF_ASK;
788 788
789 switch( mode ) { 789 switch( mode ) {
790 case SYNC_PREF_LOCAL: 790 case SYNC_PREF_LOCAL:
791 if ( lastSync > remote->lastModified() ) 791 if ( lastSync > remote->lastModified() )
792 return 1; 792 return 1;
793 if ( lastSync > local->lastModified() ) 793 if ( lastSync > local->lastModified() )
794 return 2; 794 return 2;
795 return 1; 795 return 1;
796 break; 796 break;
797 case SYNC_PREF_REMOTE: 797 case SYNC_PREF_REMOTE:
798 if ( lastSync > remote->lastModified() ) 798 if ( lastSync > remote->lastModified() )
799 return 1; 799 return 1;
800 if ( lastSync > local->lastModified() ) 800 if ( lastSync > local->lastModified() )
801 return 2; 801 return 2;
802 return 2; 802 return 2;
803 break; 803 break;
804 case SYNC_PREF_NEWEST: 804 case SYNC_PREF_NEWEST:
805 if ( local->lastModified() > remote->lastModified() ) 805 if ( local->lastModified() > remote->lastModified() )
806 return 1; 806 return 1;
807 else 807 else
808 return 2; 808 return 2;
809 break; 809 break;
810 case SYNC_PREF_ASK: 810 case SYNC_PREF_ASK:
811 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), local->lastModified().toString().latin1(), remote->lastModified().toString().latin1() ); 811 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), local->lastModified().toString().latin1(), remote->lastModified().toString().latin1() );
812 if ( lastSync > remote->lastModified() ) 812 if ( lastSync > remote->lastModified() )
813 return 1; 813 return 1;
814 if ( lastSync > local->lastModified() ) 814 if ( lastSync > local->lastModified() )
815 return 2; 815 return 2;
816 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), local->lastModified().toString().latin1(), remote->lastModified().toString().latin1() ); 816 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), local->lastModified().toString().latin1(), remote->lastModified().toString().latin1() );
817 localIsNew = local->lastModified() > remote->lastModified(); 817 localIsNew = local->lastModified() > remote->lastModified();
818 if ( localIsNew ) 818 if ( localIsNew )
819 getEventViewerDialog()->setColorMode( 1 ); 819 getEventViewerDialog()->setColorMode( 1 );
820 else 820 else
821 getEventViewerDialog()->setColorMode( 2 ); 821 getEventViewerDialog()->setColorMode( 2 );
822 getEventViewerDialog()->setIncidence(local); 822 getEventViewerDialog()->setIncidence(local);
823 if ( localIsNew ) 823 if ( localIsNew )
824 getEventViewerDialog()->setColorMode( 2 ); 824 getEventViewerDialog()->setColorMode( 2 );
825 else 825 else
826 getEventViewerDialog()->setColorMode( 1 ); 826 getEventViewerDialog()->setColorMode( 1 );
827 getEventViewerDialog()->addIncidence(remote); 827 getEventViewerDialog()->addIncidence(remote);
828 getEventViewerDialog()->setColorMode( 0 ); 828 getEventViewerDialog()->setColorMode( 0 );
829 //qDebug("local %d remote %d ",local->relatedTo(),remote->relatedTo() ); 829 //qDebug("local %d remote %d ",local->relatedTo(),remote->relatedTo() );
830 getEventViewerDialog()->setCaption( mCurrentSyncDevice +i18n(" : Conflict! Please choose entry!")); 830 getEventViewerDialog()->setCaption( mCurrentSyncDevice +i18n(" : Conflict! Please choose entry!"));
831 getEventViewerDialog()->showMe(); 831 getEventViewerDialog()->showMe();
832 result = getEventViewerDialog()->executeS( localIsNew ); 832 result = getEventViewerDialog()->executeS( localIsNew );
833 return result; 833 return result;
834 834
835 break; 835 break;
836 case SYNC_PREF_FORCE_LOCAL: 836 case SYNC_PREF_FORCE_LOCAL:
837 return 1; 837 return 1;
838 break; 838 break;
839 case SYNC_PREF_FORCE_REMOTE: 839 case SYNC_PREF_FORCE_REMOTE:
840 return 2; 840 return 2;
841 break; 841 break;
842 842
843 default: 843 default:
844 // SYNC_PREF_TAKE_BOTH not implemented 844 // SYNC_PREF_TAKE_BOTH not implemented
845 break; 845 break;
846 } 846 }
847 return 0; 847 return 0;
848} 848}
849Event* CalendarView::getLastSyncEvent() 849Event* CalendarView::getLastSyncEvent()
850{ 850{
851 Event* lse; 851 Event* lse;
852 //qDebug("CurrentSyncDevice %s ",mCurrentSyncDevice .latin1() ); 852 //qDebug("CurrentSyncDevice %s ",mCurrentSyncDevice .latin1() );
853 lse = mCalendar->event( "last-syncEvent-"+mCurrentSyncDevice ); 853 lse = mCalendar->event( "last-syncEvent-"+mCurrentSyncDevice );
854 if (!lse) { 854 if (!lse) {
855 lse = new Event(); 855 lse = new Event();
856 lse->setUid( "last-syncEvent-"+mCurrentSyncDevice ); 856 lse->setUid( "last-syncEvent-"+mCurrentSyncDevice );
857 QString sum = ""; 857 QString sum = "";
858 if ( KOPrefs::instance()->mExternSyncProfiles.contains( mCurrentSyncDevice ) ) 858 if ( KOPrefs::instance()->mExternSyncProfiles.contains( mCurrentSyncDevice ) )
859 sum = "E: "; 859 sum = "E: ";
860 lse->setSummary(sum+mCurrentSyncDevice + i18n(" - sync event")); 860 lse->setSummary(sum+mCurrentSyncDevice + i18n(" - sync event"));
861 lse->setDtStart( mLastCalendarSync ); 861 lse->setDtStart( mLastCalendarSync );
862 lse->setDtEnd( mLastCalendarSync.addSecs( 7200 ) ); 862 lse->setDtEnd( mLastCalendarSync.addSecs( 7200 ) );
863 lse->setCategories( i18n("SyncEvent") ); 863 lse->setCategories( i18n("SyncEvent") );
864 lse->setReadOnly( true ); 864 lse->setReadOnly( true );
865 mCalendar->addEvent( lse ); 865 mCalendar->addEvent( lse );
866 } 866 }
867 867
868 return lse; 868 return lse;
869 869
870} 870}
871// probaly useless 871// probaly useless
872void CalendarView::setupExternSyncProfiles() 872void CalendarView::setupExternSyncProfiles()
873{ 873{
874 Event* lse; 874 Event* lse;
875 mExternLastSyncEvent.clear(); 875 mExternLastSyncEvent.clear();
876 int i; 876 int i;
877 for ( i = 0; i < KOPrefs::instance()->mExternSyncProfiles.count(); ++i ) { 877 for ( i = 0; i < KOPrefs::instance()->mExternSyncProfiles.count(); ++i ) {
878 lse = mCalendar->event( "last-syncEvent-"+ KOPrefs::instance()->mExternSyncProfiles[i] ); 878 lse = mCalendar->event( "last-syncEvent-"+ KOPrefs::instance()->mExternSyncProfiles[i] );
879 if ( lse ) 879 if ( lse )
880 mExternLastSyncEvent.append( lse ); 880 mExternLastSyncEvent.append( lse );
881 else 881 else
882 qDebug("Last Sync event not found for %s ", KOPrefs::instance()->mExternSyncProfiles[i].latin1()); 882 qDebug("Last Sync event not found for %s ", KOPrefs::instance()->mExternSyncProfiles[i].latin1());
883 } 883 }
884 884
885} 885}
886// we check, if the to delete event has a id for a profile 886// we check, if the to delete event has a id for a profile
887// if yes, we set this id in the profile to delete 887// if yes, we set this id in the profile to delete
888void CalendarView::checkExternSyncEvent( QPtrList<Event> lastSync , Incidence* toDelete ) 888void CalendarView::checkExternSyncEvent( QPtrList<Event> lastSync , Incidence* toDelete )
889{ 889{
890 if ( ! lastSync.count() == 0 ) 890 if ( lastSync.count() == 0 ) {
891 //qDebug(" lastSync.count() == 0");
891 return; 892 return;
893 }
892 if ( toDelete->type() == "Journal" ) 894 if ( toDelete->type() == "Journal" )
893 return; 895 return;
894 896
895 Event* eve = lastSync.first(); 897 Event* eve = lastSync.first();
896 898
897 while ( eve ) { 899 while ( eve ) {
898 QString id = toDelete->getID( eve->uid().mid( 15 ) ); // this is the sync profile name 900 QString id = toDelete->getID( eve->uid().mid( 15 ) ); // this is the sync profile name
899 if ( !id.isEmpty() ) { 901 if ( !id.isEmpty() ) {
900 QString des = eve->description(); 902 QString des = eve->description();
901 QString pref = "e"; 903 QString pref = "e";
902 if ( toDelete->type() == "Todo" ) 904 if ( toDelete->type() == "Todo" )
903 pref = "t"; 905 pref = "t";
904 des += pref+ id + ","; 906 des += pref+ id + ",";
905 eve->setReadOnly( false ); 907 eve->setReadOnly( false );
906 eve->setDescription( des ); 908 eve->setDescription( des );
909 //qDebug("setdes %s ", des.latin1());
907 eve->setReadOnly( true ); 910 eve->setReadOnly( true );
908 } 911 }
909 eve = lastSync.next(); 912 eve = lastSync.next();
910 } 913 }
911 914
912} 915}
913void CalendarView::checkExternalId( Incidence * inc ) 916void CalendarView::checkExternalId( Incidence * inc )
914{ 917{
915 QPtrList<Event> lastSync = mCalendar->getExternLastSyncEvents() ; 918 QPtrList<Event> lastSync = mCalendar->getExternLastSyncEvents() ;
916 checkExternSyncEvent( lastSync, inc ); 919 checkExternSyncEvent( lastSync, inc );
917 920
918} 921}
919bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int mode ) 922bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int mode )
920{ 923{
921 bool syncOK = true; 924 bool syncOK = true;
922 int addedEvent = 0; 925 int addedEvent = 0;
923 int addedEventR = 0; 926 int addedEventR = 0;
924 int deletedEventR = 0; 927 int deletedEventR = 0;
925 int deletedEventL = 0; 928 int deletedEventL = 0;
926 int changedLocal = 0; 929 int changedLocal = 0;
927 int changedRemote = 0; 930 int changedRemote = 0;
928 //QPtrList<Event> el = local->rawEvents(); 931 //QPtrList<Event> el = local->rawEvents();
929 Event* eventR; 932 Event* eventR;
930 QString uid; 933 QString uid;
931 int take; 934 int take;
932 Event* eventL; 935 Event* eventL;
933 Event* eventRSync; 936 Event* eventRSync;
934 Event* eventLSync; 937 Event* eventLSync;
935 QPtrList<Event> eventRSyncSharp = remote->getExternLastSyncEvents(); 938 QPtrList<Event> eventRSyncSharp = remote->getExternLastSyncEvents();
936 QPtrList<Event> eventLSyncSharp = local->getExternLastSyncEvents(); 939 QPtrList<Event> eventLSyncSharp = local->getExternLastSyncEvents();
937 bool fullDateRange = false; 940 bool fullDateRange = false;
938 mLastCalendarSync = QDateTime::currentDateTime(); 941 mLastCalendarSync = QDateTime::currentDateTime();
939 QDateTime modifiedCalendar = mLastCalendarSync;; 942 QDateTime modifiedCalendar = mLastCalendarSync;;
940 eventR = remote->event("last-syncEvent-"+mCurrentSyncName ); 943 eventR = remote->event("last-syncEvent-"+mCurrentSyncName );
941 if ( eventR ) { 944 if ( eventR ) {
942 eventRSync = (Event*) eventR->clone(); 945 eventRSync = (Event*) eventR->clone();
943 remote->deleteEvent(eventR ); 946 remote->deleteEvent(eventR );
944 947
945 } else { 948 } else {
946 fullDateRange = true; 949 fullDateRange = true;
947 eventRSync = new Event(); 950 eventRSync = new Event();
948 eventRSync->setSummary(mCurrentSyncName + i18n(" - sync event")); 951 eventRSync->setSummary(mCurrentSyncName + i18n(" - sync event"));
949 eventRSync->setUid("last-syncEvent-"+mCurrentSyncName ); 952 eventRSync->setUid("last-syncEvent-"+mCurrentSyncName );
950 eventRSync->setDtStart( mLastCalendarSync ); 953 eventRSync->setDtStart( mLastCalendarSync );
951 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 7200 ) ); 954 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 7200 ) );
952 eventRSync->setCategories( i18n("SyncEvent") ); 955 eventRSync->setCategories( i18n("SyncEvent") );
953 } 956 }
954 eventLSync = getLastSyncEvent(); 957 eventLSync = getLastSyncEvent();
955 if ( eventLSync->dtStart() == mLastCalendarSync ) 958 if ( eventLSync->dtStart() == mLastCalendarSync )
956 fullDateRange = true; 959 fullDateRange = true;
957 960
958 if ( ! fullDateRange ) { 961 if ( ! fullDateRange ) {
959 if ( eventLSync->dtStart() != eventRSync->dtStart() ) { 962 if ( eventLSync->dtStart() != eventRSync->dtStart() ) {
960 963
961 // qDebug("set fulldate to true %s %s" ,eventLSync->dtStart().toString().latin1(), eventRSync->dtStart().toString().latin1() ); 964 // qDebug("set fulldate to true %s %s" ,eventLSync->dtStart().toString().latin1(), eventRSync->dtStart().toString().latin1() );
962 //qDebug("%d %d %d %d ", eventLSync->dtStart().time().second(), eventLSync->dtStart().time().msec() , eventRSync->dtStart().time().second(), eventRSync->dtStart().time().msec()); 965 //qDebug("%d %d %d %d ", eventLSync->dtStart().time().second(), eventLSync->dtStart().time().msec() , eventRSync->dtStart().time().second(), eventRSync->dtStart().time().msec());
963 fullDateRange = true; 966 fullDateRange = true;
964 } 967 }
965 } 968 }
966 if ( fullDateRange ) 969 if ( fullDateRange )
967 mLastCalendarSync = QDateTime::currentDateTime().addDays( -100*365); 970 mLastCalendarSync = QDateTime::currentDateTime().addDays( -100*365);
968 else 971 else
969 mLastCalendarSync = eventLSync->dtStart(); 972 mLastCalendarSync = eventLSync->dtStart();
970 // for resyncing if own file has changed 973 // for resyncing if own file has changed
971 if ( mCurrentSyncDevice == "deleteaftersync" ) { 974 if ( mCurrentSyncDevice == "deleteaftersync" ) {
972 mLastCalendarSync = loadedFileVersion; 975 mLastCalendarSync = loadedFileVersion;
973 qDebug("setting mLastCalendarSync "); 976 qDebug("setting mLastCalendarSync ");
974 } 977 }
975 //qDebug("*************************** "); 978 //qDebug("*************************** ");
976 qDebug("mLastCalendarSync %s ",mLastCalendarSync.toString().latin1() ); 979 qDebug("mLastCalendarSync %s ",mLastCalendarSync.toString().latin1() );
977 QPtrList<Incidence> er = remote->rawIncidences(); 980 QPtrList<Incidence> er = remote->rawIncidences();
978 Incidence* inR = er.first(); 981 Incidence* inR = er.first();
979 Incidence* inL; 982 Incidence* inL;
980 QProgressBar bar( er.count(),0 ); 983 QProgressBar bar( er.count(),0 );
981 bar.setCaption (i18n("Syncing - close to abort!") ); 984 bar.setCaption (i18n("Syncing - close to abort!") );
982 985
983 int w = 300; 986 int w = 300;
984 if ( QApplication::desktop()->width() < 320 ) 987 if ( QApplication::desktop()->width() < 320 )
985 w = 220; 988 w = 220;
986 int h = bar.sizeHint().height() ; 989 int h = bar.sizeHint().height() ;
987 int dw = QApplication::desktop()->width(); 990 int dw = QApplication::desktop()->width();
988 int dh = QApplication::desktop()->height(); 991 int dh = QApplication::desktop()->height();
989 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 992 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
990 bar.show(); 993 bar.show();
991 int modulo = (er.count()/10)+1; 994 int modulo = (er.count()/10)+1;
992 int incCounter = 0; 995 int incCounter = 0;
993 while ( inR ) { 996 while ( inR ) {
994 if ( ! bar.isVisible() ) 997 if ( ! bar.isVisible() )
995 return false; 998 return false;
996 if ( incCounter % modulo == 0 ) 999 if ( incCounter % modulo == 0 )
997 bar.setProgress( incCounter ); 1000 bar.setProgress( incCounter );
998 ++incCounter; 1001 ++incCounter;
999 uid = inR->uid(); 1002 uid = inR->uid();
1000 bool skipIncidence = false; 1003 bool skipIncidence = false;
1001 if ( uid.left(15) == QString("last-syncEvent-") ) 1004 if ( uid.left(15) == QString("last-syncEvent-") )
1002 skipIncidence = true; 1005 skipIncidence = true;
1003 1006
1004 qApp->processEvents(); 1007 qApp->processEvents();
1005 if ( !skipIncidence ) { 1008 if ( !skipIncidence ) {
1006 inL = local->incidence( uid ); 1009 inL = local->incidence( uid );
1007 if ( inL ) { // maybe conflict - same uid in both calendars 1010 if ( inL ) { // maybe conflict - same uid in both calendars
1008 int maxrev = inL->revision(); 1011 int maxrev = inL->revision();
1009 if ( maxrev < inR->revision() ) 1012 if ( maxrev < inR->revision() )
1010 maxrev = inR->revision(); 1013 maxrev = inR->revision();
1011 if ( (take = takeEvent( inL, inR, mode, fullDateRange )) > 0 ) { 1014 if ( (take = takeEvent( inL, inR, mode, fullDateRange )) > 0 ) {
1012 //qDebug("take %d %s ", take, inL->summary().latin1()); 1015 //qDebug("take %d %s ", take, inL->summary().latin1());
1013 if ( take == 3 ) 1016 if ( take == 3 )
1014 return false; 1017 return false;
1015 if ( take == 1 ) {// take local 1018 if ( take == 1 ) {// take local
1016 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) ); 1019 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) );
1017 remote->deleteIncidence( inR ); 1020 remote->deleteIncidence( inR );
1018 if ( inL->revision() < maxrev ) 1021 if ( inL->revision() < maxrev )
1019 inL->setRevision( maxrev ); 1022 inL->setRevision( maxrev );
1020 remote->addIncidence( inL->clone() ); 1023 remote->addIncidence( inL->clone() );
1021 ++changedRemote; 1024 ++changedRemote;
1022 } else { 1025 } else {
1023 if ( inR->revision() < maxrev ) 1026 if ( inR->revision() < maxrev )
1024 inR->setRevision( maxrev ); 1027 inR->setRevision( maxrev );
1025 local->deleteIncidence( inL ); 1028 local->deleteIncidence( inL );
1026 local->addIncidence( inR->clone() ); 1029 local->addIncidence( inR->clone() );
1027 ++changedLocal; 1030 ++changedLocal;
1028 } 1031 }
1029 } 1032 }
1030 } else { // no conflict 1033 } else { // no conflict
1031 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1034 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1032 QString des = eventLSync->description(); 1035 QString des = eventLSync->description();
1033 QString pref = "e"; 1036 QString pref = "e";
1034 if ( inR->type() == "Todo" ) 1037 if ( inR->type() == "Todo" )
1035 pref = "t"; 1038 pref = "t";
1036 if ( des.find(pref+ inR->getID(mCurrentSyncDevice) +"," ) >= 0 && mode != 5) { // delete it 1039 if ( des.find(pref+ inR->getID(mCurrentSyncDevice) +"," ) >= 0 && mode != 5) { // delete it
1037 inR->setTempSyncStat( SYNC_TEMPSTATE_DELETE ); 1040 inR->setTempSyncStat( SYNC_TEMPSTATE_DELETE );
1038 //remote->deleteIncidence( inR ); 1041 //remote->deleteIncidence( inR );
1039 ++deletedEventR; 1042 ++deletedEventR;
1040 } else { 1043 } else {
1041 inR->setLastModified( modifiedCalendar ); 1044 inR->setLastModified( modifiedCalendar );
1042 local->addIncidence( inR->clone() ); 1045 local->addIncidence( inR->clone() );
1043 ++addedEvent; 1046 ++addedEvent;
1044 } 1047 }
1045 } else { 1048 } else {
1046 if ( inR->lastModified() > mLastCalendarSync || mode == 5 ) { 1049 if ( inR->lastModified() > mLastCalendarSync || mode == 5 ) {
1047 inR->setLastModified( modifiedCalendar ); 1050 inR->setLastModified( modifiedCalendar );
1048 local->addIncidence( inR->clone() ); 1051 local->addIncidence( inR->clone() );
1049 ++addedEvent; 1052 ++addedEvent;
1050 } else { 1053 } else {
1051 checkExternSyncEvent(eventRSyncSharp, inR); 1054 checkExternSyncEvent(eventRSyncSharp, inR);
1052 remote->deleteIncidence( inR ); 1055 remote->deleteIncidence( inR );
1053 ++deletedEventR; 1056 ++deletedEventR;
1054 } 1057 }
1055 } 1058 }
1056 } 1059 }
1057 } 1060 }
1058 inR = er.next(); 1061 inR = er.next();
1059 } 1062 }
1060 QPtrList<Incidence> el = local->rawIncidences(); 1063 QPtrList<Incidence> el = local->rawIncidences();
1061 inL = el.first(); 1064 inL = el.first();
1062 modulo = (el.count()/10)+1; 1065 modulo = (el.count()/10)+1;
1063 bar.setCaption (i18n("Add / remove events") ); 1066 bar.setCaption (i18n("Add / remove events") );
1064 bar.setTotalSteps ( el.count() ) ; 1067 bar.setTotalSteps ( el.count() ) ;
1065 bar.show(); 1068 bar.show();
1066 incCounter = 0; 1069 incCounter = 0;
1067 1070
1068 while ( inL ) { 1071 while ( inL ) {
1069 1072
1070 qApp->processEvents(); 1073 qApp->processEvents();
1071 if ( ! bar.isVisible() ) 1074 if ( ! bar.isVisible() )
1072 return false; 1075 return false;
1073 if ( incCounter % modulo == 0 ) 1076 if ( incCounter % modulo == 0 )
1074 bar.setProgress( incCounter ); 1077 bar.setProgress( incCounter );
1075 ++incCounter; 1078 ++incCounter;
1076 uid = inL->uid(); 1079 uid = inL->uid();
1077 bool skipIncidence = false; 1080 bool skipIncidence = false;
1078 if ( uid.left(15) == QString("last-syncEvent-") ) 1081 if ( uid.left(15) == QString("last-syncEvent-") )
1079 skipIncidence = true; 1082 skipIncidence = true;
1080 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL && inL->type() == "Journal" ) 1083 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL && inL->type() == "Journal" )
1081 skipIncidence = true; 1084 skipIncidence = true;
1082 if ( !skipIncidence ) { 1085 if ( !skipIncidence ) {
1083 inR = remote->incidence( uid ); 1086 inR = remote->incidence( uid );
1084 if ( ! inR ) { 1087 if ( ! inR ) {
1085 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1088 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1086 if ( !inL->getID(mCurrentSyncDevice).isEmpty() && mode != 4 ) { 1089 if ( !inL->getID(mCurrentSyncDevice).isEmpty() && mode != 4 ) {
1087 local->deleteIncidence( inL ); 1090 local->deleteIncidence( inL );
1088 ++deletedEventL; 1091 ++deletedEventL;
1089 } else { 1092 } else {
1090 if ( ! KOPrefs::instance()->mWriteBackExistingOnly ) { 1093 if ( ! KOPrefs::instance()->mWriteBackExistingOnly ) {
1091 inL->removeID(mCurrentSyncDevice ); 1094 inL->removeID(mCurrentSyncDevice );
1092 ++addedEventR; 1095 ++addedEventR;
1093 inL->setLastModified( modifiedCalendar ); 1096 inL->setLastModified( modifiedCalendar );
1094 remote->addIncidence( inL->clone() ); 1097 remote->addIncidence( inL->clone() );
1095 } 1098 }
1096 } 1099 }
1097 } else { 1100 } else {
1098 if ( inL->lastModified() < mLastCalendarSync && mode != 4 ) { 1101 if ( inL->lastModified() < mLastCalendarSync && mode != 4 ) {
1099 checkExternSyncEvent(eventLSyncSharp, inL); 1102 checkExternSyncEvent(eventLSyncSharp, inL);
1100 local->deleteIncidence( inL ); 1103 local->deleteIncidence( inL );
1101 ++deletedEventL; 1104 ++deletedEventL;
1102 } else { 1105 } else {
1103 if ( ! KOPrefs::instance()->mWriteBackExistingOnly ) { 1106 if ( ! KOPrefs::instance()->mWriteBackExistingOnly ) {
1104 ++addedEventR; 1107 ++addedEventR;
1105 inL->setLastModified( modifiedCalendar ); 1108 inL->setLastModified( modifiedCalendar );
1106 remote->addIncidence( inL->clone() ); 1109 remote->addIncidence( inL->clone() );
1107 } 1110 }
1108 } 1111 }
1109 } 1112 }
1110 } 1113 }
1111 } 1114 }
1112 inL = el.next(); 1115 inL = el.next();
1113 } 1116 }
1114 1117
1115 bar.hide(); 1118 bar.hide();
1116 mLastCalendarSync = QDateTime::currentDateTime().addSecs( 1 ); 1119 mLastCalendarSync = QDateTime::currentDateTime().addSecs( 1 );
1117 eventLSync->setReadOnly( false ); 1120 eventLSync->setReadOnly( false );
1118 eventLSync->setDtStart( mLastCalendarSync ); 1121 eventLSync->setDtStart( mLastCalendarSync );
1119 eventRSync->setDtStart( mLastCalendarSync ); 1122 eventRSync->setDtStart( mLastCalendarSync );
1120 eventLSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) ); 1123 eventLSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) );
1121 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) ); 1124 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) );
1122 eventRSync->setLocation( i18n("Remote from: ")+mCurrentSyncName ) ; 1125 eventRSync->setLocation( i18n("Remote from: ")+mCurrentSyncName ) ;
1123 eventLSync->setLocation(i18n("Local from: ") + mCurrentSyncName ); 1126 eventLSync->setLocation(i18n("Local from: ") + mCurrentSyncName );
1124 eventLSync->setReadOnly( true ); 1127 eventLSync->setReadOnly( true );
1125 if ( mGlobalSyncMode == SYNC_MODE_NORMAL) 1128 if ( mGlobalSyncMode == SYNC_MODE_NORMAL)
1126 remote->addEvent( eventRSync ); 1129 remote->addEvent( eventRSync );
1127 QString mes; 1130 QString mes;
1128 mes .sprintf( i18n("Synchronization summary:\n\n %d items added to local\n %d items added to remote\n %d items updated on local\n %d items updated on remote\n %d items deleted on local\n %d items deleted on remote\n"),addedEvent, addedEventR, changedLocal, changedRemote, deletedEventL, deletedEventR ); 1131 mes .sprintf( i18n("Synchronization summary:\n\n %d items added to local\n %d items added to remote\n %d items updated on local\n %d items updated on remote\n %d items deleted on local\n %d items deleted on remote\n"),addedEvent, addedEventR, changedLocal, changedRemote, deletedEventL, deletedEventR );
1129 if ( KOPrefs::instance()->mShowSyncSummary ) { 1132 if ( KOPrefs::instance()->mShowSyncSummary ) {
1130 KMessageBox::information(this, mes, i18n("KO/Pi Synchronization") ); 1133 KMessageBox::information(this, mes, i18n("KO/Pi Synchronization") );
1131 } 1134 }
1132 qDebug( mes ); 1135 qDebug( mes );
1133 mCalendar->checkAlarmForIncidence( 0, true ); 1136 mCalendar->checkAlarmForIncidence( 0, true );
1134 return syncOK; 1137 return syncOK;
1135} 1138}
1136 1139
1137void CalendarView::setSyncDevice( QString s ) 1140void CalendarView::setSyncDevice( QString s )
1138{ 1141{
1139 mCurrentSyncDevice= s; 1142 mCurrentSyncDevice= s;
1140} 1143}
1141void CalendarView::setSyncName( QString s ) 1144void CalendarView::setSyncName( QString s )
1142{ 1145{
1143 mCurrentSyncName= s; 1146 mCurrentSyncName= s;
1144} 1147}
1145bool CalendarView::syncCalendar(QString filename, int mode) 1148bool CalendarView::syncCalendar(QString filename, int mode)
1146{ 1149{
1147 mGlobalSyncMode = SYNC_MODE_NORMAL; 1150 mGlobalSyncMode = SYNC_MODE_NORMAL;
1148 CalendarLocal* calendar = new CalendarLocal(); 1151 CalendarLocal* calendar = new CalendarLocal();
1149 calendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId); 1152 calendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId);
1150 FileStorage* storage = new FileStorage( calendar ); 1153 FileStorage* storage = new FileStorage( calendar );
1151 bool syncOK = false; 1154 bool syncOK = false;
1152 storage->setFileName( filename ); 1155 storage->setFileName( filename );
1153 // qDebug("loading ... "); 1156 // qDebug("loading ... ");
1154 if ( storage->load(KOPrefs::instance()->mUseQuicksave) ) { 1157 if ( storage->load(KOPrefs::instance()->mUseQuicksave) ) {
1155 getEventViewerDialog()->setSyncMode( true ); 1158 getEventViewerDialog()->setSyncMode( true );
1156 syncOK = synchronizeCalendar( mCalendar, calendar, mode ); 1159 syncOK = synchronizeCalendar( mCalendar, calendar, mode );
1157 getEventViewerDialog()->setSyncMode( false ); 1160 getEventViewerDialog()->setSyncMode( false );
1158 if ( syncOK ) { 1161 if ( syncOK ) {
1159 if ( KOPrefs::instance()->mWriteBackFile ) 1162 if ( KOPrefs::instance()->mWriteBackFile )
1160 { 1163 {
1161 storage->setSaveFormat( new ICalFormat( KOPrefs::instance()->mUseQuicksave) ); 1164 storage->setSaveFormat( new ICalFormat( KOPrefs::instance()->mUseQuicksave) );
1162 storage->save(); 1165 storage->save();
1163 } 1166 }
1164 } 1167 }
1165 setModified( true ); 1168 setModified( true );
1166 } 1169 }
1167 delete storage; 1170 delete storage;
1168 delete calendar; 1171 delete calendar;
1169 if ( syncOK ) 1172 if ( syncOK )
1170 updateView(); 1173 updateView();
1171 return syncOK; 1174 return syncOK;
1172} 1175}
1173void CalendarView::syncSharp() 1176void CalendarView::syncSharp()
1174{ 1177{
1175#ifndef DESKTOP_VERSION 1178#ifndef DESKTOP_VERSION
1176 mGlobalSyncMode = SYNC_MODE_EXTERNAL; 1179 mGlobalSyncMode = SYNC_MODE_EXTERNAL;
1177 //mCurrentSyncDevice = "sharp-DTM"; 1180 //mCurrentSyncDevice = "sharp-DTM";
1178 if ( KOPrefs::instance()->mAskForPreferences ) 1181 if ( KOPrefs::instance()->mAskForPreferences )
1179 edit_sync_options(); 1182 edit_sync_options();
1180 qApp->processEvents(); 1183 qApp->processEvents();
1181 CalendarLocal* calendar = new CalendarLocal(); 1184 CalendarLocal* calendar = new CalendarLocal();
1182 calendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId); 1185 calendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId);
1183 bool syncOK = false; 1186 bool syncOK = false;
1184 SharpFormat sharpFormat; 1187 SharpFormat sharpFormat;
1185 if ( sharpFormat.load( calendar, mCalendar ) ) { 1188 if ( sharpFormat.load( calendar, mCalendar ) ) {
1186 getEventViewerDialog()->setSyncMode( true ); 1189 getEventViewerDialog()->setSyncMode( true );
1187 syncOK = synchronizeCalendar( mCalendar, calendar, KOPrefs::instance()->mSyncAlgoPrefs ); 1190 syncOK = synchronizeCalendar( mCalendar, calendar, KOPrefs::instance()->mSyncAlgoPrefs );
1188 getEventViewerDialog()->setSyncMode( false ); 1191 getEventViewerDialog()->setSyncMode( false );
1189 qApp->processEvents(); 1192 qApp->processEvents();
1190 if ( syncOK ) { 1193 if ( syncOK ) {
1191 if ( KOPrefs::instance()->mWriteBackFile ) 1194 if ( KOPrefs::instance()->mWriteBackFile )
1192 { 1195 {
1193 QPtrList<Incidence> iL = mCalendar->rawIncidences(); 1196 QPtrList<Incidence> iL = mCalendar->rawIncidences();
1194 Incidence* inc = iL.first(); 1197 Incidence* inc = iL.first();
1195 /* obsolete 1198 /* obsolete
1196 while ( inc ) { 1199 while ( inc ) {
1197 inc->setZaurusStat( inc->revision () ); 1200 inc->setZaurusStat( inc->revision () );
1198 inc = iL.next(); 1201 inc = iL.next();
1199 } 1202 }
1200 */ 1203 */
1201 // pending: clean last sync event description 1204 // pending: clean last sync event description
1202 sharpFormat.save(calendar); 1205 sharpFormat.save(calendar);
1203 iL = calendar->rawIncidences(); 1206 iL = calendar->rawIncidences();
1204 inc = iL.first(); 1207 inc = iL.first();
1205 Incidence* loc; 1208 Incidence* loc;
1206 while ( inc ) { 1209 while ( inc ) {
1207 if ( inc->tempSyncStat() == SYNC_TEMPSTATE_NEW_ID ) { 1210 if ( inc->tempSyncStat() == SYNC_TEMPSTATE_NEW_ID ) {
1208 loc = mCalendar->incidence(inc->uid() ); 1211 loc = mCalendar->incidence(inc->uid() );
1209 if ( loc ) { 1212 if ( loc ) {
1210 loc->setID(mCurrentSyncDevice, inc->getID(mCurrentSyncDevice) ); 1213 loc->setID(mCurrentSyncDevice, inc->getID(mCurrentSyncDevice) );
1211 loc->setCsum( mCurrentSyncDevice, inc->getCsum(mCurrentSyncDevice) ); 1214 loc->setCsum( mCurrentSyncDevice, inc->getCsum(mCurrentSyncDevice) );
1212 } 1215 }
1213 } 1216 }
1214 inc = iL.next(); 1217 inc = iL.next();
1215 } 1218 }
1216 Incidence* lse = getLastSyncEvent(); 1219 Incidence* lse = getLastSyncEvent();
1217 if ( lse ) { 1220 if ( lse ) {
1218 lse->setReadOnly( false ); 1221 lse->setReadOnly( false );
1219 lse->setDescription( "" ); 1222 lse->setDescription( "" );
1220 lse->setReadOnly( true ); 1223 lse->setReadOnly( true );
1221 } 1224 }
1222 } 1225 }
1223 } 1226 }
1224 setModified( true ); 1227 setModified( true );
1225 } else { 1228 } else {
1226 QString question = i18n("Sorry, the database access\ncommand failed!\n\nNothing synced!\n") ; 1229 QString question = i18n("Sorry, the database access\ncommand failed!\n\nNothing synced!\n") ;
1227 QMessageBox::information( 0, i18n("KO/Pi Import - ERROR"), 1230 QMessageBox::information( 0, i18n("KO/Pi Import - ERROR"),
1228 question, i18n("Ok")) ; 1231 question, i18n("Ok")) ;
1229 1232
1230 } 1233 }
1231 delete calendar; 1234 delete calendar;
1232 updateView(); 1235 updateView();
1233 return ;//syncOK; 1236 return ;//syncOK;
1234#endif 1237#endif
1235} 1238}
1236 1239
1237 1240
1238#include <kabc/stdaddressbook.h> 1241#include <kabc/stdaddressbook.h>
1239bool CalendarView::importBday() 1242bool CalendarView::importBday()
1240{ 1243{
1241 KABC::StdAddressBook* AddressBook = KABC::StdAddressBook::self( true ); 1244 KABC::StdAddressBook* AddressBook = KABC::StdAddressBook::self( true );
1242 KABC::AddressBook::Iterator it; 1245 KABC::AddressBook::Iterator it;
1243 int count = 0; 1246 int count = 0;
1244 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) { 1247 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) {
1245 ++count; 1248 ++count;
1246 } 1249 }
1247 QProgressBar bar(count,0 ); 1250 QProgressBar bar(count,0 );
1248 int w = 300; 1251 int w = 300;
1249 if ( QApplication::desktop()->width() < 320 ) 1252 if ( QApplication::desktop()->width() < 320 )
1250 w = 220; 1253 w = 220;
1251 int h = bar.sizeHint().height() ; 1254 int h = bar.sizeHint().height() ;
1252 int dw = QApplication::desktop()->width(); 1255 int dw = QApplication::desktop()->width();
1253 int dh = QApplication::desktop()->height(); 1256 int dh = QApplication::desktop()->height();
1254 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 1257 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
1255 bar.show(); 1258 bar.show();
1256 bar.setCaption (i18n("Reading addressbook - close to abort!") ); 1259 bar.setCaption (i18n("Reading addressbook - close to abort!") );
1257 qApp->processEvents(); 1260 qApp->processEvents();
1258 count = 0; 1261 count = 0;
1259 int addCount = 0; 1262 int addCount = 0;
1260 KCal::Attendee* a = 0; 1263 KCal::Attendee* a = 0;
1261 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) { 1264 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) {
1262 if ( ! bar.isVisible() ) 1265 if ( ! bar.isVisible() )
1263 return false; 1266 return false;
1264 bar.setProgress( count++ ); 1267 bar.setProgress( count++ );
1265 qApp->processEvents(); 1268 qApp->processEvents();
1266 //qDebug("add BDay %s %s", (*it).realName().latin1(),(*it).birthday().date().toString().latin1() ); 1269 //qDebug("add BDay %s %s", (*it).realName().latin1(),(*it).birthday().date().toString().latin1() );
1267 if ( (*it).birthday().date().isValid() ){ 1270 if ( (*it).birthday().date().isValid() ){
1268 a = new KCal::Attendee( (*it).realName(), (*it).preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,(*it).uid()) ; 1271 a = new KCal::Attendee( (*it).realName(), (*it).preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,(*it).uid()) ;
1269 if ( addAnniversary( (*it).birthday().date(), (*it).assembledName(), a, true ) ) 1272 if ( addAnniversary( (*it).birthday().date(), (*it).assembledName(), a, true ) )
1270 ++addCount; 1273 ++addCount;
1271 } 1274 }
1272 QDate anni = KGlobal::locale()->readDate( (*it).custom("KADDRESSBOOK", "X-Anniversary" ), "%Y-%m-%d"); 1275 QDate anni = KGlobal::locale()->readDate( (*it).custom("KADDRESSBOOK", "X-Anniversary" ), "%Y-%m-%d");
1273 if ( anni.isValid() ){ 1276 if ( anni.isValid() ){
1274 a = new KCal::Attendee( (*it).realName(), (*it).preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,(*it).uid()) ; 1277 a = new KCal::Attendee( (*it).realName(), (*it).preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,(*it).uid()) ;
1275 if ( addAnniversary( anni, (*it).assembledName(), a, false ) ) 1278 if ( addAnniversary( anni, (*it).assembledName(), a, false ) )
1276 ++addCount; 1279 ++addCount;
1277 } 1280 }
1278 } 1281 }
1279 updateView(); 1282 updateView();
1280 topLevelWidget()->setCaption(QString::number( addCount )+ i18n(" birthdays/anniversaries added!")); 1283 topLevelWidget()->setCaption(QString::number( addCount )+ i18n(" birthdays/anniversaries added!"));
1281 return true; 1284 return true;
1282} 1285}
1283 1286
1284bool CalendarView::addAnniversary( QDate date, QString name, KCal::Attendee* a, bool birthday) 1287bool CalendarView::addAnniversary( QDate date, QString name, KCal::Attendee* a, bool birthday)
1285{ 1288{
1286 //qDebug("addAnni "); 1289 //qDebug("addAnni ");
1287 Event * ev = new Event(); 1290 Event * ev = new Event();
1288 if ( a ) { 1291 if ( a ) {
1289 ev->addAttendee( a ); 1292 ev->addAttendee( a );
1290 } 1293 }
1291 QString kind; 1294 QString kind;
1292 if ( birthday ) 1295 if ( birthday )
1293 kind = i18n( "Birthday" ); 1296 kind = i18n( "Birthday" );
1294 else 1297 else
1295 kind = i18n( "Anniversary" ); 1298 kind = i18n( "Anniversary" );
1296 ev->setSummary( name + " - " + kind ); 1299 ev->setSummary( name + " - " + kind );
1297 ev->setOrganizer( "nobody@nowhere" ); 1300 ev->setOrganizer( "nobody@nowhere" );
1298 ev->setCategories( kind ); 1301 ev->setCategories( kind );
1299 ev->setDtStart( QDateTime(date) ); 1302 ev->setDtStart( QDateTime(date) );
1300 ev->setDtEnd( QDateTime(date) ); 1303 ev->setDtEnd( QDateTime(date) );
1301 ev->setFloats( true ); 1304 ev->setFloats( true );
1302 Recurrence * rec = ev->recurrence(); 1305 Recurrence * rec = ev->recurrence();
1303 rec->setYearly(Recurrence::rYearlyMonth,1,-1); 1306 rec->setYearly(Recurrence::rYearlyMonth,1,-1);
1304 rec->addYearlyNum( date.month() ); 1307 rec->addYearlyNum( date.month() );
1305 if ( !mCalendar->addAnniversaryNoDup( ev ) ) { 1308 if ( !mCalendar->addAnniversaryNoDup( ev ) ) {
1306 delete ev; 1309 delete ev;
1307 return false; 1310 return false;
1308 } 1311 }
1309 return true; 1312 return true;
1310 1313
1311} 1314}
1312bool CalendarView::importQtopia( const QString &categories, 1315bool CalendarView::importQtopia( const QString &categories,
1313 const QString &datebook, 1316 const QString &datebook,
1314 const QString &todolist ) 1317 const QString &todolist )
1315{ 1318{
1316 1319
1317 QtopiaFormat qtopiaFormat; 1320 QtopiaFormat qtopiaFormat;
1318 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories)); 1321 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories));
1319 if ( !categories.isEmpty() ) qtopiaFormat.load( mCalendar, categories ); 1322 if ( !categories.isEmpty() ) qtopiaFormat.load( mCalendar, categories );
1320 if ( !datebook.isEmpty() ) qtopiaFormat.load( mCalendar, datebook ); 1323 if ( !datebook.isEmpty() ) qtopiaFormat.load( mCalendar, datebook );
1321 if ( !todolist.isEmpty() ) qtopiaFormat.load( mCalendar, todolist ); 1324 if ( !todolist.isEmpty() ) qtopiaFormat.load( mCalendar, todolist );
1322 1325
1323 updateView(); 1326 updateView();
1324 return true; 1327 return true;
1325 1328
1326#if 0 1329#if 0
1327 mGlobalSyncMode = SYNC_MODE_QTOPIA; 1330 mGlobalSyncMode = SYNC_MODE_QTOPIA;
1328 mCurrentSyncDevice = "qtopia-XML"; 1331 mCurrentSyncDevice = "qtopia-XML";
1329 if ( KOPrefs::instance()->mAskForPreferences ) 1332 if ( KOPrefs::instance()->mAskForPreferences )
1330 edit_sync_options(); 1333 edit_sync_options();
1331 qApp->processEvents(); 1334 qApp->processEvents();
1332 CalendarLocal* calendar = new CalendarLocal(); 1335 CalendarLocal* calendar = new CalendarLocal();
1333 calendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId); 1336 calendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId);
1334 bool syncOK = false; 1337 bool syncOK = false;
1335 QtopiaFormat qtopiaFormat; 1338 QtopiaFormat qtopiaFormat;
1336 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories)); 1339 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories));
1337 bool loadOk = true; 1340 bool loadOk = true;
1338 if ( !categories.isEmpty() ) 1341 if ( !categories.isEmpty() )
1339 loadOk = qtopiaFormat.load( calendar, categories ); 1342 loadOk = qtopiaFormat.load( calendar, categories );
1340 if ( loadOk && !datebook.isEmpty() ) 1343 if ( loadOk && !datebook.isEmpty() )
1341 loadOk = qtopiaFormat.load( calendar, datebook ); 1344 loadOk = qtopiaFormat.load( calendar, datebook );
1342 if ( loadOk && !todolist.isEmpty() ) 1345 if ( loadOk && !todolist.isEmpty() )
1343 loadOk = qtopiaFormat.load( calendar, todolist ); 1346 loadOk = qtopiaFormat.load( calendar, todolist );
1344 1347
1345 if ( loadOk ) { 1348 if ( loadOk ) {
1346 getEventViewerDialog()->setSyncMode( true ); 1349 getEventViewerDialog()->setSyncMode( true );
1347 syncOK = synchronizeCalendar( mCalendar, calendar, KOPrefs::instance()->mSyncAlgoPrefs ); 1350 syncOK = synchronizeCalendar( mCalendar, calendar, KOPrefs::instance()->mSyncAlgoPrefs );
1348 getEventViewerDialog()->setSyncMode( false ); 1351 getEventViewerDialog()->setSyncMode( false );
1349 qApp->processEvents(); 1352 qApp->processEvents();
1350 if ( syncOK ) { 1353 if ( syncOK ) {
1351 if ( KOPrefs::instance()->mWriteBackFile ) 1354 if ( KOPrefs::instance()->mWriteBackFile )
1352 { 1355 {
1353 // write back XML file 1356 // write back XML file
1354 1357
1355 } 1358 }
1356 setModified( true ); 1359 setModified( true );
1357 } 1360 }
1358 } else { 1361 } else {
1359 QString question = i18n("Sorry, the file loading\ncommand failed!\n\nNothing synced!\n") ; 1362 QString question = i18n("Sorry, the file loading\ncommand failed!\n\nNothing synced!\n") ;
1360 QMessageBox::information( 0, i18n("KO/Pi Sync - ERROR"), 1363 QMessageBox::information( 0, i18n("KO/Pi Sync - ERROR"),
1361 question, i18n("Ok")) ; 1364 question, i18n("Ok")) ;
1362 } 1365 }
1363 delete calendar; 1366 delete calendar;
1364 updateView(); 1367 updateView();
1365 return syncOK; 1368 return syncOK;
1366 1369
1367 1370
1368#endif 1371#endif
1369 1372
1370} 1373}
1371 1374
1372void CalendarView::setSyncEventsReadOnly() 1375void CalendarView::setSyncEventsReadOnly()
1373{ 1376{
1374 Event * ev; 1377 Event * ev;
1375 QPtrList<Event> eL = mCalendar->rawEvents(); 1378 QPtrList<Event> eL = mCalendar->rawEvents();
1376 ev = eL.first(); 1379 ev = eL.first();
1377 while ( ev ) { 1380 while ( ev ) {
1378 if ( ev->uid().left(15) == QString("last-syncEvent-") ) 1381 if ( ev->uid().left(15) == QString("last-syncEvent-") )
1379 ev->setReadOnly( true ); 1382 ev->setReadOnly( true );
1380 ev = eL.next(); 1383 ev = eL.next();
1381 } 1384 }
1382} 1385}
1383bool CalendarView::openCalendar(QString filename, bool merge) 1386bool CalendarView::openCalendar(QString filename, bool merge)
1384{ 1387{
1385 1388
1386 if (filename.isEmpty()) { 1389 if (filename.isEmpty()) {
1387 return false; 1390 return false;
1388 } 1391 }
1389 1392
1390 if (!QFile::exists(filename)) { 1393 if (!QFile::exists(filename)) {
1391 KMessageBox::error(this,i18n("File does not exist:\n '%1'.").arg(filename)); 1394 KMessageBox::error(this,i18n("File does not exist:\n '%1'.").arg(filename));
1392 return false; 1395 return false;
1393 } 1396 }
1394 1397
1395 globalFlagBlockAgenda = 1; 1398 globalFlagBlockAgenda = 1;
1396 if (!merge) mCalendar->close(); 1399 if (!merge) mCalendar->close();
1397 1400
1398 mStorage->setFileName( filename ); 1401 mStorage->setFileName( filename );
1399 1402
1400 if ( mStorage->load(KOPrefs::instance()->mUseQuicksave) ) { 1403 if ( mStorage->load(KOPrefs::instance()->mUseQuicksave) ) {
1401 if ( merge ) ;//setModified( true ); 1404 if ( merge ) ;//setModified( true );
1402 else { 1405 else {
1403 //setModified( true ); 1406 //setModified( true );
1404 mViewManager->setDocumentId( filename ); 1407 mViewManager->setDocumentId( filename );
1405 mDialogManager->setDocumentId( filename ); 1408 mDialogManager->setDocumentId( filename );
1406 mTodoList->setDocumentId( filename ); 1409 mTodoList->setDocumentId( filename );
1407 } 1410 }
1408 globalFlagBlockAgenda = 2; 1411 globalFlagBlockAgenda = 2;
1409 // if ( getLastSyncEvent() ) 1412 // if ( getLastSyncEvent() )
1410 // getLastSyncEvent()->setReadOnly( true ); 1413 // getLastSyncEvent()->setReadOnly( true );
1411 mCalendar->reInitAlarmSettings(); 1414 mCalendar->reInitAlarmSettings();
1412 setSyncEventsReadOnly(); 1415 setSyncEventsReadOnly();
1413 updateUnmanagedViews(); 1416 updateUnmanagedViews();
1414 updateView(); 1417 updateView();
1415 if ( filename != MainWindow::defaultFileName() ) 1418 if ( filename != MainWindow::defaultFileName() )
1416 saveCalendar( MainWindow::defaultFileName() ); 1419 saveCalendar( MainWindow::defaultFileName() );
1417 loadedFileVersion = QDateTime::currentDateTime(); 1420 loadedFileVersion = QDateTime::currentDateTime();
1418 return true; 1421 return true;
1419 } else { 1422 } else {
1420 // while failing to load, the calendar object could 1423 // while failing to load, the calendar object could
1421 // have become partially populated. Clear it out. 1424 // have become partially populated. Clear it out.
1422 if ( !merge ) mCalendar->close(); 1425 if ( !merge ) mCalendar->close();
1423 1426
1424 KMessageBox::error(this,i18n("Couldn't load calendar\n '%1'.").arg(filename)); 1427 KMessageBox::error(this,i18n("Couldn't load calendar\n '%1'.").arg(filename));
1425 1428
1426 globalFlagBlockAgenda = 2; 1429 globalFlagBlockAgenda = 2;
1427 updateView(); 1430 updateView();
1428 } 1431 }
1429 return false; 1432 return false;
1430} 1433}
1431void CalendarView::setLoadedFileVersion(QDateTime dt) 1434void CalendarView::setLoadedFileVersion(QDateTime dt)
1432{ 1435{
1433 loadedFileVersion = dt; 1436 loadedFileVersion = dt;
1434} 1437}
1435bool CalendarView::checkFileChanged(QString fn) 1438bool CalendarView::checkFileChanged(QString fn)
1436{ 1439{
1437 QFileInfo finf ( fn ); 1440 QFileInfo finf ( fn );
1438 if ( !finf.exists() ) 1441 if ( !finf.exists() )
1439 return true; 1442 return true;
1440 QDateTime dt = finf.lastModified (); 1443 QDateTime dt = finf.lastModified ();
1441 if ( dt <= loadedFileVersion ) 1444 if ( dt <= loadedFileVersion )
1442 return false; 1445 return false;
1443 return true; 1446 return true;
1444 1447
1445} 1448}
1446bool CalendarView::checkFileVersion(QString fn) 1449bool CalendarView::checkFileVersion(QString fn)
1447{ 1450{
1448 QFileInfo finf ( fn ); 1451 QFileInfo finf ( fn );
1449 if ( !finf.exists() ) 1452 if ( !finf.exists() )
1450 return true; 1453 return true;
1451 QDateTime dt = finf.lastModified (); 1454 QDateTime dt = finf.lastModified ();
1452 //qDebug("loaded file version %s",loadedFileVersion.toString().latin1()); 1455 //qDebug("loaded file version %s",loadedFileVersion.toString().latin1());
1453 //qDebug("file on disk version %s",dt.toString().latin1()); 1456 //qDebug("file on disk version %s",dt.toString().latin1());
1454 if ( dt <= loadedFileVersion ) 1457 if ( dt <= loadedFileVersion )
1455 return true; 1458 return true;
1456 int km = KMessageBox::warningYesNoCancel(this, i18n("\nThe file on disk has changed!\nFile size: %1 bytes.\nLast modified: %2\nDo you want to:\n\n - Save and overwrite file?\n - Sync with file, then save?\n - Cancel without saving? \n").arg( QString::number( finf.size())).arg( KGlobal::locale()->formatDateTime(finf.lastModified (), true, false)) , 1459 int km = KMessageBox::warningYesNoCancel(this, i18n("\nThe file on disk has changed!\nFile size: %1 bytes.\nLast modified: %2\nDo you want to:\n\n - Save and overwrite file?\n - Sync with file, then save?\n - Cancel without saving? \n").arg( QString::number( finf.size())).arg( KGlobal::locale()->formatDateTime(finf.lastModified (), true, false)) ,
1457 i18n("KO/Pi Warning"),i18n("Overwrite"), 1460 i18n("KO/Pi Warning"),i18n("Overwrite"),
1458 i18n("Sync+save")); 1461 i18n("Sync+save"));
1459 1462
1460 if ( km == KMessageBox::Cancel ) 1463 if ( km == KMessageBox::Cancel )
1461 return false; 1464 return false;
1462 if ( km == KMessageBox::Yes ) 1465 if ( km == KMessageBox::Yes )
1463 return true; 1466 return true;
1464 1467
1465 setSyncDevice("deleteaftersync" ); 1468 setSyncDevice("deleteaftersync" );
1466 KOPrefs::instance()->mAskForPreferences = true; 1469 KOPrefs::instance()->mAskForPreferences = true;
1467 KOPrefs::instance()->mSyncAlgoPrefs = 3; 1470 KOPrefs::instance()->mSyncAlgoPrefs = 3;
1468 KOPrefs::instance()->mWriteBackFile = false; 1471 KOPrefs::instance()->mWriteBackFile = false;
1469 KOPrefs::instance()->mWriteBackExistingOnly = false; 1472 KOPrefs::instance()->mWriteBackExistingOnly = false;
1470 KOPrefs::instance()->mShowSyncSummary = false; 1473 KOPrefs::instance()->mShowSyncSummary = false;
1471 syncCalendar( fn, 3 ); 1474 syncCalendar( fn, 3 );
1472 Event * e = getLastSyncEvent(); 1475 Event * e = getLastSyncEvent();
1473 mCalendar->deleteEvent ( e ); 1476 mCalendar->deleteEvent ( e );
1474 updateView(); 1477 updateView();
1475 return true; 1478 return true;
1476} 1479}
1477 1480
1478bool CalendarView::saveCalendar( QString filename ) 1481bool CalendarView::saveCalendar( QString filename )
1479{ 1482{
1480 1483
1481 // Store back all unsaved data into calendar object 1484 // Store back all unsaved data into calendar object
1482 // qDebug("file %s %d ", filename.latin1() , mViewManager->currentView() ); 1485 // qDebug("file %s %d ", filename.latin1() , mViewManager->currentView() );
1483 if ( mViewManager->currentView() ) 1486 if ( mViewManager->currentView() )
1484 mViewManager->currentView()->flushView(); 1487 mViewManager->currentView()->flushView();
1485 1488
1486 //mStorage->setFileName( filename ); 1489 //mStorage->setFileName( filename );
1487 1490
1488 mStorage->setSaveFormat( new ICalFormat( KOPrefs::instance()->mUseQuicksave) ); 1491 mStorage->setSaveFormat( new ICalFormat( KOPrefs::instance()->mUseQuicksave) );
1489 mStorage->setFileName( filename ); 1492 mStorage->setFileName( filename );
1490 bool success; 1493 bool success;
1491 success = mStorage->save(); 1494 success = mStorage->save();
1492 if ( !success ) { 1495 if ( !success ) {
1493 return false; 1496 return false;
1494 } 1497 }
1495 1498
1496 return true; 1499 return true;
1497} 1500}
1498 1501
1499void CalendarView::closeCalendar() 1502void CalendarView::closeCalendar()
1500{ 1503{
1501 1504
1502 // child windows no longer valid 1505 // child windows no longer valid
1503 emit closingDown(); 1506 emit closingDown();
1504 1507
1505 mCalendar->close(); 1508 mCalendar->close();
1506 setModified(false); 1509 setModified(false);
1507 updateView(); 1510 updateView();
1508} 1511}
1509 1512
1510void CalendarView::archiveCalendar() 1513void CalendarView::archiveCalendar()
1511{ 1514{
1512 mDialogManager->showArchiveDialog(); 1515 mDialogManager->showArchiveDialog();
1513} 1516}
1514 1517
1515 1518
1516void CalendarView::readSettings() 1519void CalendarView::readSettings()
1517{ 1520{
1518 1521
1519 1522
1520 // mViewManager->showAgendaView(); 1523 // mViewManager->showAgendaView();
1521 QString str; 1524 QString str;
1522 //qDebug("CalendarView::readSettings() "); 1525 //qDebug("CalendarView::readSettings() ");
1523 // read settings from the KConfig, supplying reasonable 1526 // read settings from the KConfig, supplying reasonable
1524 // defaults where none are to be found 1527 // defaults where none are to be found
1525 KConfig *config = KOGlobals::config(); 1528 KConfig *config = KOGlobals::config();
1526#ifndef KORG_NOSPLITTER 1529#ifndef KORG_NOSPLITTER
1527 config->setGroup("KOrganizer Geometry"); 1530 config->setGroup("KOrganizer Geometry");
1528 1531
1529 QValueList<int> sizes = config->readIntListEntry("Separator1"); 1532 QValueList<int> sizes = config->readIntListEntry("Separator1");
1530 if (sizes.count() != 2) { 1533 if (sizes.count() != 2) {
1531 sizes << mDateNavigator->minimumSizeHint().width(); 1534 sizes << mDateNavigator->minimumSizeHint().width();
1532 sizes << 300; 1535 sizes << 300;
1533 } 1536 }
1534 mPanner->setSizes(sizes); 1537 mPanner->setSizes(sizes);
1535 1538
1536 sizes = config->readIntListEntry("Separator2"); 1539 sizes = config->readIntListEntry("Separator2");
1537 if ( ( mResourceView && sizes.count() == 4 ) || 1540 if ( ( mResourceView && sizes.count() == 4 ) ||
1538 ( !mResourceView && sizes.count() == 3 ) ) { 1541 ( !mResourceView && sizes.count() == 3 ) ) {
1539 mLeftSplitter->setSizes(sizes); 1542 mLeftSplitter->setSizes(sizes);
1540 } 1543 }
1541#endif 1544#endif
1542 globalFlagBlockAgenda = 1; 1545 globalFlagBlockAgenda = 1;
1543 mViewManager->showAgendaView(); 1546 mViewManager->showAgendaView();
1544 //mViewManager->readSettings( config ); 1547 //mViewManager->readSettings( config );
1545 mTodoList->restoreLayout(config,QString("Todo Layout")); 1548 mTodoList->restoreLayout(config,QString("Todo Layout"));
1546 readFilterSettings(config); 1549 readFilterSettings(config);
1547 config->setGroup( "Views" ); 1550 config->setGroup( "Views" );
1548 int dateCount = config->readNumEntry( "ShownDatesCount", 7 ); 1551 int dateCount = config->readNumEntry( "ShownDatesCount", 7 );
1549 if ( dateCount == 5 ) mNavigator->selectWorkWeek(); 1552 if ( dateCount == 5 ) mNavigator->selectWorkWeek();
1550 else if ( dateCount == 7 ) mNavigator->selectWeek(); 1553 else if ( dateCount == 7 ) mNavigator->selectWeek();
1551 else mNavigator->selectDates( dateCount ); 1554 else mNavigator->selectDates( dateCount );
1552 // mViewManager->readSettings( config ); 1555 // mViewManager->readSettings( config );
1553 updateConfig(); 1556 updateConfig();
1554 globalFlagBlockAgenda = 2; 1557 globalFlagBlockAgenda = 2;
1555 mViewManager->readSettings( config ); 1558 mViewManager->readSettings( config );
1556#ifdef DESKTOP_VERSION 1559#ifdef DESKTOP_VERSION
1557 config->setGroup("WidgetLayout"); 1560 config->setGroup("WidgetLayout");
1558 QStringList list; 1561 QStringList list;
1559 list = config->readListEntry("MainLayout"); 1562 list = config->readListEntry("MainLayout");
1560 int x,y,w,h; 1563 int x,y,w,h;
1561 if ( ! list.isEmpty() ) { 1564 if ( ! list.isEmpty() ) {
1562 x = list[0].toInt(); 1565 x = list[0].toInt();
1563 y = list[1].toInt(); 1566 y = list[1].toInt();
1564 w = list[2].toInt(); 1567 w = list[2].toInt();
1565 h = list[3].toInt(); 1568 h = list[3].toInt();
1566 topLevelWidget()->setGeometry(x,y,w,h); 1569 topLevelWidget()->setGeometry(x,y,w,h);
1567 1570
1568 } else { 1571 } else {
1569 topLevelWidget()->setGeometry( 40 ,40 , 640, 440); 1572 topLevelWidget()->setGeometry( 40 ,40 , 640, 440);
1570 } 1573 }
1571 list = config->readListEntry("EditEventLayout"); 1574 list = config->readListEntry("EditEventLayout");
1572 if ( ! list.isEmpty() ) { 1575 if ( ! list.isEmpty() ) {
1573 x = list[0].toInt(); 1576 x = list[0].toInt();
1574 y = list[1].toInt(); 1577 y = list[1].toInt();
1575 w = list[2].toInt(); 1578 w = list[2].toInt();
1576 h = list[3].toInt(); 1579 h = list[3].toInt();
1577 mEventEditor->setGeometry(x,y,w,h); 1580 mEventEditor->setGeometry(x,y,w,h);
1578 1581
1579 } 1582 }
1580 list = config->readListEntry("EditTodoLayout"); 1583 list = config->readListEntry("EditTodoLayout");
1581 if ( ! list.isEmpty() ) { 1584 if ( ! list.isEmpty() ) {
1582 x = list[0].toInt(); 1585 x = list[0].toInt();
1583 y = list[1].toInt(); 1586 y = list[1].toInt();
1584 w = list[2].toInt(); 1587 w = list[2].toInt();
1585 h = list[3].toInt(); 1588 h = list[3].toInt();
1586 mTodoEditor->setGeometry(x,y,w,h); 1589 mTodoEditor->setGeometry(x,y,w,h);
1587 1590
1588 } 1591 }
1589 list = config->readListEntry("ViewerLayout"); 1592 list = config->readListEntry("ViewerLayout");
1590 if ( ! list.isEmpty() ) { 1593 if ( ! list.isEmpty() ) {
1591 x = list[0].toInt(); 1594 x = list[0].toInt();
1592 y = list[1].toInt(); 1595 y = list[1].toInt();
1593 w = list[2].toInt(); 1596 w = list[2].toInt();
1594 h = list[3].toInt(); 1597 h = list[3].toInt();
1595 getEventViewerDialog()->setGeometry(x,y,w,h); 1598 getEventViewerDialog()->setGeometry(x,y,w,h);
1596 } 1599 }
1597#endif 1600#endif
1598 1601
1599} 1602}
1600 1603
1601 1604
1602void CalendarView::writeSettings() 1605void CalendarView::writeSettings()
1603{ 1606{
1604 // kdDebug() << "CalendarView::writeSettings" << endl; 1607 // kdDebug() << "CalendarView::writeSettings" << endl;
1605 1608
1606 KConfig *config = KOGlobals::config(); 1609 KConfig *config = KOGlobals::config();
1607 1610
1608#ifndef KORG_NOSPLITTER 1611#ifndef KORG_NOSPLITTER
1609 config->setGroup("KOrganizer Geometry"); 1612 config->setGroup("KOrganizer Geometry");
1610 1613
1611 QValueList<int> list = mPanner->sizes(); 1614 QValueList<int> list = mPanner->sizes();
1612 config->writeEntry("Separator1",list); 1615 config->writeEntry("Separator1",list);
1613 1616
1614 list = mLeftSplitter->sizes(); 1617 list = mLeftSplitter->sizes();
1615 config->writeEntry("Separator2",list); 1618 config->writeEntry("Separator2",list);
1616#endif 1619#endif
1617 1620
1618 mViewManager->writeSettings( config ); 1621 mViewManager->writeSettings( config );
1619 mTodoList->saveLayout(config,QString("Todo Layout")); 1622 mTodoList->saveLayout(config,QString("Todo Layout"));
1620 mDialogManager->writeSettings( config ); 1623 mDialogManager->writeSettings( config );
1621 //KOPrefs::instance()->usrWriteConfig(); 1624 //KOPrefs::instance()->usrWriteConfig();
1622 KOPrefs::instance()->writeConfig(); 1625 KOPrefs::instance()->writeConfig();
1623 1626
1624 writeFilterSettings(config); 1627 writeFilterSettings(config);
1625 1628
1626 config->setGroup( "Views" ); 1629 config->setGroup( "Views" );
1627 config->writeEntry( "ShownDatesCount", mNavigator->selectedDates().count() ); 1630 config->writeEntry( "ShownDatesCount", mNavigator->selectedDates().count() );
1628 1631
1629#ifdef DESKTOP_VERSION 1632#ifdef DESKTOP_VERSION
1630 config->setGroup("WidgetLayout"); 1633 config->setGroup("WidgetLayout");
1631 QStringList list ;//= config->readListEntry("MainLayout"); 1634 QStringList list ;//= config->readListEntry("MainLayout");
1632 int x,y,w,h; 1635 int x,y,w,h;
1633 QWidget* wid; 1636 QWidget* wid;
1634 wid = topLevelWidget(); 1637 wid = topLevelWidget();
1635 x = wid->geometry().x(); 1638 x = wid->geometry().x();
1636 y = wid->geometry().y(); 1639 y = wid->geometry().y();
1637 w = wid->width(); 1640 w = wid->width();
1638 h = wid->height(); 1641 h = wid->height();
1639 list.clear(); 1642 list.clear();
1640 list << QString::number( x ); 1643 list << QString::number( x );
1641 list << QString::number( y ); 1644 list << QString::number( y );
1642 list << QString::number( w ); 1645 list << QString::number( w );
1643 list << QString::number( h ); 1646 list << QString::number( h );
1644 config->writeEntry("MainLayout",list ); 1647 config->writeEntry("MainLayout",list );
1645 1648
1646 wid = mEventEditor; 1649 wid = mEventEditor;
1647 x = wid->geometry().x(); 1650 x = wid->geometry().x();
1648 y = wid->geometry().y(); 1651 y = wid->geometry().y();
1649 w = wid->width(); 1652 w = wid->width();
1650 h = wid->height(); 1653 h = wid->height();
1651 list.clear(); 1654 list.clear();
1652 list << QString::number( x ); 1655 list << QString::number( x );
1653 list << QString::number( y ); 1656 list << QString::number( y );
1654 list << QString::number( w ); 1657 list << QString::number( w );
1655 list << QString::number( h ); 1658 list << QString::number( h );
1656 config->writeEntry("EditEventLayout",list ); 1659 config->writeEntry("EditEventLayout",list );
1657 1660
1658 wid = mTodoEditor; 1661 wid = mTodoEditor;
1659 x = wid->geometry().x(); 1662 x = wid->geometry().x();
1660 y = wid->geometry().y(); 1663 y = wid->geometry().y();
1661 w = wid->width(); 1664 w = wid->width();
1662 h = wid->height(); 1665 h = wid->height();
1663 list.clear(); 1666 list.clear();
1664 list << QString::number( x ); 1667 list << QString::number( x );
1665 list << QString::number( y ); 1668 list << QString::number( y );
1666 list << QString::number( w ); 1669 list << QString::number( w );
1667 list << QString::number( h ); 1670 list << QString::number( h );
1668 config->writeEntry("EditTodoLayout",list ); 1671 config->writeEntry("EditTodoLayout",list );
1669 wid = getEventViewerDialog(); 1672 wid = getEventViewerDialog();
1670 x = wid->geometry().x(); 1673 x = wid->geometry().x();
1671 y = wid->geometry().y(); 1674 y = wid->geometry().y();
1672 w = wid->width(); 1675 w = wid->width();
1673 h = wid->height(); 1676 h = wid->height();
1674 list.clear(); 1677 list.clear();