summaryrefslogtreecommitdiffabout
path: root/korganizer
Unidiff
Diffstat (limited to 'korganizer') (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/calendarview.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp
index 7fae4a9..bc8625d 100644
--- a/korganizer/calendarview.cpp
+++ b/korganizer/calendarview.cpp
@@ -130,2050 +130,2050 @@ using namespace KCal;
130extern int globalFlagBlockAgenda; 130extern int globalFlagBlockAgenda;
131extern int globalFlagBlockStartup; 131extern int globalFlagBlockStartup;
132 132
133 133
134 134
135class KOBeamPrefs : public QDialog 135class KOBeamPrefs : public QDialog
136{ 136{
137 public: 137 public:
138 KOBeamPrefs( QWidget *parent=0, const char *name=0 ) : 138 KOBeamPrefs( QWidget *parent=0, const char *name=0 ) :
139 QDialog( parent, name, true ) 139 QDialog( parent, name, true )
140 { 140 {
141 setCaption( i18n("Beam Options") ); 141 setCaption( i18n("Beam Options") );
142 QVBoxLayout* lay = new QVBoxLayout( this ); 142 QVBoxLayout* lay = new QVBoxLayout( this );
143 lay->setSpacing( 3 ); 143 lay->setSpacing( 3 );
144 lay->setMargin( 3 ); 144 lay->setMargin( 3 );
145 QButtonGroup* format = new QButtonGroup( 1, Horizontal, i18n("File format"), this ); 145 QButtonGroup* format = new QButtonGroup( 1, Horizontal, i18n("File format"), this );
146 lay->addWidget( format ); 146 lay->addWidget( format );
147 format->setExclusive ( true ) ; 147 format->setExclusive ( true ) ;
148 QButtonGroup* time = new QButtonGroup(1, Horizontal, i18n("Time format"), this ); 148 QButtonGroup* time = new QButtonGroup(1, Horizontal, i18n("Time format"), this );
149 lay->addWidget( time ); time->setExclusive ( true ) ; 149 lay->addWidget( time ); time->setExclusive ( true ) ;
150 vcal = new QRadioButton(" vCalendar ", format ); 150 vcal = new QRadioButton(" vCalendar ", format );
151 ical = new QRadioButton(" iCalendar ", format ); 151 ical = new QRadioButton(" iCalendar ", format );
152 vcal->setChecked( true ); 152 vcal->setChecked( true );
153 tz = new QRadioButton(i18n(" With timezone "), time ); 153 tz = new QRadioButton(i18n(" With timezone "), time );
154 local = new QRadioButton(i18n(" Local time "), time ); 154 local = new QRadioButton(i18n(" Local time "), time );
155 tz->setChecked( true ); 155 tz->setChecked( true );
156 QPushButton * ok = new QPushButton( i18n("Beam via IR!"), this ); 156 QPushButton * ok = new QPushButton( i18n("Beam via IR!"), this );
157 lay->addWidget( ok ); 157 lay->addWidget( ok );
158 QPushButton * cancel = new QPushButton( i18n("Cancel"), this ); 158 QPushButton * cancel = new QPushButton( i18n("Cancel"), this );
159 lay->addWidget( cancel ); 159 lay->addWidget( cancel );
160 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) ); 160 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) );
161 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) ); 161 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) );
162 resize( 200, 200 ); 162 resize( 200, 200 );
163 } 163 }
164 164
165 bool beamVcal() { return vcal->isChecked(); } 165 bool beamVcal() { return vcal->isChecked(); }
166 bool beamLocal() { return local->isChecked(); } 166 bool beamLocal() { return local->isChecked(); }
167private: 167private:
168 QRadioButton* vcal, *ical, *local, *tz; 168 QRadioButton* vcal, *ical, *local, *tz;
169}; 169};
170class KOCatPrefs : public QDialog 170class KOCatPrefs : public QDialog
171{ 171{
172 public: 172 public:
173 KOCatPrefs( QWidget *parent=0, const char *name=0 ) : 173 KOCatPrefs( QWidget *parent=0, const char *name=0 ) :
174 QDialog( parent, name, true ) 174 QDialog( parent, name, true )
175 { 175 {
176 setCaption( i18n("Manage new Categories") ); 176 setCaption( i18n("Manage new Categories") );
177 QVBoxLayout* lay = new QVBoxLayout( this ); 177 QVBoxLayout* lay = new QVBoxLayout( this );
178 lay->setSpacing( 3 ); 178 lay->setSpacing( 3 );
179 lay->setMargin( 3 ); 179 lay->setMargin( 3 );
180 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 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 );
181 lay->addWidget( lab ); 181 lay->addWidget( lab );
182 QButtonGroup* format = new QButtonGroup( 1, Horizontal, i18n("New categories not in list:"), this ); 182 QButtonGroup* format = new QButtonGroup( 1, Horizontal, i18n("New categories not in list:"), this );
183 lay->addWidget( format ); 183 lay->addWidget( format );
184 format->setExclusive ( true ) ; 184 format->setExclusive ( true ) ;
185 addCatBut = new QRadioButton(i18n("Add to category list"), format ); 185 addCatBut = new QRadioButton(i18n("Add to category list"), format );
186 new QRadioButton(i18n("Remove from Events/Todos"), format ); 186 new QRadioButton(i18n("Remove from Events/Todos"), format );
187 addCatBut->setChecked( true ); 187 addCatBut->setChecked( true );
188 QPushButton * ok = new QPushButton( i18n("OK"), this ); 188 QPushButton * ok = new QPushButton( i18n("OK"), this );
189 lay->addWidget( ok ); 189 lay->addWidget( ok );
190 QPushButton * cancel = new QPushButton( i18n("Cancel"), this ); 190 QPushButton * cancel = new QPushButton( i18n("Cancel"), this );
191 lay->addWidget( cancel ); 191 lay->addWidget( cancel );
192 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) ); 192 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) );
193 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) ); 193 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) );
194 resize( 200, 200 ); 194 resize( 200, 200 );
195 } 195 }
196 196
197 bool addCat() { return addCatBut->isChecked(); } 197 bool addCat() { return addCatBut->isChecked(); }
198private: 198private:
199 QRadioButton* addCatBut; 199 QRadioButton* addCatBut;
200}; 200};
201 201
202 202
203 203
204CalendarView::CalendarView( CalendarResources *calendar, 204CalendarView::CalendarView( CalendarResources *calendar,
205 QWidget *parent, const char *name ) 205 QWidget *parent, const char *name )
206 : CalendarViewBase( parent, name ), 206 : CalendarViewBase( parent, name ),
207 mCalendar( calendar ), 207 mCalendar( calendar ),
208 mResourceManager( calendar->resourceManager() ) 208 mResourceManager( calendar->resourceManager() )
209{ 209{
210 210
211 mEventEditor = 0; 211 mEventEditor = 0;
212 mTodoEditor = 0; 212 mTodoEditor = 0;
213 213
214 init(); 214 init();
215} 215}
216 216
217CalendarView::CalendarView( Calendar *calendar, 217CalendarView::CalendarView( Calendar *calendar,
218 QWidget *parent, const char *name ) 218 QWidget *parent, const char *name )
219 : CalendarViewBase( parent, name ), 219 : CalendarViewBase( parent, name ),
220 mCalendar( calendar ), 220 mCalendar( calendar ),
221 mResourceManager( 0 ) 221 mResourceManager( 0 )
222{ 222{
223 223
224 mEventEditor = 0; 224 mEventEditor = 0;
225 mTodoEditor = 0; 225 mTodoEditor = 0;
226 init();} 226 init();}
227 227
228void CalendarView::init() 228void CalendarView::init()
229{ 229{
230 beamDialog = new KOBeamPrefs(); 230 beamDialog = new KOBeamPrefs();
231 mDatePickerMode = 0; 231 mDatePickerMode = 0;
232 mCurrentSyncDevice = ""; 232 mCurrentSyncDevice = "";
233 writeLocale(); 233 writeLocale();
234 mViewManager = new KOViewManager( this ); 234 mViewManager = new KOViewManager( this );
235 mDialogManager = new KODialogManager( this ); 235 mDialogManager = new KODialogManager( this );
236 mEventViewerDialog = 0; 236 mEventViewerDialog = 0;
237 mModified = false; 237 mModified = false;
238 mReadOnly = false; 238 mReadOnly = false;
239 mSelectedIncidence = 0; 239 mSelectedIncidence = 0;
240 mCalPrinter = 0; 240 mCalPrinter = 0;
241 mFilters.setAutoDelete(true); 241 mFilters.setAutoDelete(true);
242 242
243 mCalendar->registerObserver( this ); 243 mCalendar->registerObserver( this );
244 // TODO: Make sure that view is updated, when calendar is changed. 244 // TODO: Make sure that view is updated, when calendar is changed.
245 245
246 mStorage = new FileStorage( mCalendar ); 246 mStorage = new FileStorage( mCalendar );
247 mNavigator = new DateNavigator( this, "datevav", mViewManager ); 247 mNavigator = new DateNavigator( this, "datevav", mViewManager );
248 248
249 QBoxLayout *topLayout = (QBoxLayout*)layout(); 249 QBoxLayout *topLayout = (QBoxLayout*)layout();
250#ifndef KORG_NOSPLITTER 250#ifndef KORG_NOSPLITTER
251 // create the main layout frames. 251 // create the main layout frames.
252 mPanner = new QSplitter(QSplitter::Horizontal,this,"CalendarView::Panner"); 252 mPanner = new QSplitter(QSplitter::Horizontal,this,"CalendarView::Panner");
253 topLayout->addWidget(mPanner); 253 topLayout->addWidget(mPanner);
254 254
255 mLeftSplitter = new QSplitter(QSplitter::Vertical,mPanner, 255 mLeftSplitter = new QSplitter(QSplitter::Vertical,mPanner,
256 "CalendarView::LeftFrame"); 256 "CalendarView::LeftFrame");
257 mPanner->setResizeMode(mLeftSplitter,QSplitter::KeepSize); 257 mPanner->setResizeMode(mLeftSplitter,QSplitter::KeepSize);
258 258
259 mDateNavigator = new KDateNavigator(mLeftSplitter, mCalendar, TRUE, 259 mDateNavigator = new KDateNavigator(mLeftSplitter, mCalendar, TRUE,
260 "CalendarView::DateNavigator", QDate::currentDate() ); 260 "CalendarView::DateNavigator", QDate::currentDate() );
261 mLeftSplitter->setResizeMode(mDateNavigator,QSplitter::KeepSize); 261 mLeftSplitter->setResizeMode(mDateNavigator,QSplitter::KeepSize);
262 mTodoList = new KOTodoView(mCalendar, mLeftSplitter, "todolist_small2"); 262 mTodoList = new KOTodoView(mCalendar, mLeftSplitter, "todolist_small2");
263 mFilterView = new KOFilterView(&mFilters,mLeftSplitter,"CalendarView::FilterView"); 263 mFilterView = new KOFilterView(&mFilters,mLeftSplitter,"CalendarView::FilterView");
264 264
265#ifdef KORG_NORESOURCEVIEW 265#ifdef KORG_NORESOURCEVIEW
266 mResourceView = 0; 266 mResourceView = 0;
267#else 267#else
268 if ( mResourceManager ) { 268 if ( mResourceManager ) {
269 mResourceView = new ResourceView( mResourceManager, mLeftSplitter ); 269 mResourceView = new ResourceView( mResourceManager, mLeftSplitter );
270 mResourceView->updateView(); 270 mResourceView->updateView();
271 connect( mResourceView, SIGNAL( resourcesChanged() ), 271 connect( mResourceView, SIGNAL( resourcesChanged() ),
272 SLOT( updateView() ) ); 272 SLOT( updateView() ) );
273 } else { 273 } else {
274 mResourceView = 0; 274 mResourceView = 0;
275 } 275 }
276#endif 276#endif
277 QWidget *rightBox = new QWidget( mPanner ); 277 QWidget *rightBox = new QWidget( mPanner );
278 QBoxLayout *rightLayout = new QVBoxLayout( rightBox ); 278 QBoxLayout *rightLayout = new QVBoxLayout( rightBox );
279 279
280 mNavigatorBar = new NavigatorBar( QDate::currentDate(), rightBox, "useBigPixmaps" ); 280 mNavigatorBar = new NavigatorBar( QDate::currentDate(), rightBox, "useBigPixmaps" );
281 rightLayout->addWidget( mNavigatorBar ); 281 rightLayout->addWidget( mNavigatorBar );
282 282
283 mRightFrame = new QWidgetStack( rightBox ); 283 mRightFrame = new QWidgetStack( rightBox );
284 rightLayout->addWidget( mRightFrame, 1 ); 284 rightLayout->addWidget( mRightFrame, 1 );
285 285
286 mLeftFrame = mLeftSplitter; 286 mLeftFrame = mLeftSplitter;
287#else 287#else
288 QWidget *mainBox = new QWidget( this ); 288 QWidget *mainBox = new QWidget( this );
289 QWidget *leftFrame = new QWidget( mainBox ); 289 QWidget *leftFrame = new QWidget( mainBox );
290 290
291 QBoxLayout * mainBoxLayout; 291 QBoxLayout * mainBoxLayout;
292 QBoxLayout * leftFrameLayout; 292 QBoxLayout * leftFrameLayout;
293 if ( KOPrefs::instance()->mVerticalScreen ) { 293 if ( KOPrefs::instance()->mVerticalScreen ) {
294 mainBoxLayout = new QVBoxLayout(mainBox); 294 mainBoxLayout = new QVBoxLayout(mainBox);
295 leftFrameLayout = new QHBoxLayout(leftFrame ); 295 leftFrameLayout = new QHBoxLayout(leftFrame );
296 } else { 296 } else {
297 mainBoxLayout = new QHBoxLayout(mainBox); 297 mainBoxLayout = new QHBoxLayout(mainBox);
298 leftFrameLayout = new QVBoxLayout(leftFrame ); 298 leftFrameLayout = new QVBoxLayout(leftFrame );
299 } 299 }
300 topLayout->addWidget( mainBox ); 300 topLayout->addWidget( mainBox );
301 mainBoxLayout->addWidget (leftFrame); 301 mainBoxLayout->addWidget (leftFrame);
302 mDateNavigator = new KDateNavigator(leftFrame, mCalendar, TRUE, 302 mDateNavigator = new KDateNavigator(leftFrame, mCalendar, TRUE,
303 "CalendarView::DateNavigator", QDate::currentDate()); 303 "CalendarView::DateNavigator", QDate::currentDate());
304 // mDateNavigator->blockSignals( true ); 304 // mDateNavigator->blockSignals( true );
305 leftFrameLayout->addWidget( mDateNavigator ); 305 leftFrameLayout->addWidget( mDateNavigator );
306 mFilterView = new KOFilterView(&mFilters,leftFrame,"CalendarView::FilterView"); 306 mFilterView = new KOFilterView(&mFilters,leftFrame,"CalendarView::FilterView");
307 mTodoList = new KOTodoView(mCalendar, leftFrame, "todolist"); 307 mTodoList = new KOTodoView(mCalendar, leftFrame, "todolist");
308 308
309 if ( QApplication::desktop()->width() < 480 ) { 309 if ( QApplication::desktop()->width() < 480 ) {
310 leftFrameLayout->addWidget(mFilterView); 310 leftFrameLayout->addWidget(mFilterView);
311 leftFrameLayout->addWidget(mTodoList, 2 ); 311 leftFrameLayout->addWidget(mTodoList, 2 );
312 312
313 } else { 313 } else {
314 leftFrameLayout->addWidget(mTodoList,2 ); 314 leftFrameLayout->addWidget(mTodoList,2 );
315 leftFrameLayout->addWidget(mFilterView ); 315 leftFrameLayout->addWidget(mFilterView );
316 } 316 }
317 mFilterView->hide(); 317 mFilterView->hide();
318 QWidget *rightBox = new QWidget( mainBox ); 318 QWidget *rightBox = new QWidget( mainBox );
319 mainBoxLayout->addWidget ( rightBox, 10 ); 319 mainBoxLayout->addWidget ( rightBox, 10 );
320 QBoxLayout *rightLayout = new QVBoxLayout( rightBox ); 320 QBoxLayout *rightLayout = new QVBoxLayout( rightBox );
321 mNavigatorBar = new NavigatorBar( QDate::currentDate(), rightBox, "useBigPixmaps" ); 321 mNavigatorBar = new NavigatorBar( QDate::currentDate(), rightBox, "useBigPixmaps" );
322 mRightFrame = new QWidgetStack( rightBox ); 322 mRightFrame = new QWidgetStack( rightBox );
323 rightLayout->addWidget( mNavigatorBar ); 323 rightLayout->addWidget( mNavigatorBar );
324 rightLayout->addWidget( mRightFrame, 10 ); 324 rightLayout->addWidget( mRightFrame, 10 );
325 325
326 mLeftFrame = leftFrame; 326 mLeftFrame = leftFrame;
327 if ( KOPrefs::instance()->mVerticalScreen ) { 327 if ( KOPrefs::instance()->mVerticalScreen ) {
328 mTodoList->setFixedHeight( mDateNavigator->sizeHint().height() ); 328 mTodoList->setFixedHeight( mDateNavigator->sizeHint().height() );
329 leftFrame->setFixedHeight( mDateNavigator->sizeHint().height() ); 329 leftFrame->setFixedHeight( mDateNavigator->sizeHint().height() );
330 } else { 330 } else {
331 mTodoList->setFixedWidth( mDateNavigator->sizeHint().width() ); 331 mTodoList->setFixedWidth( mDateNavigator->sizeHint().width() );
332 leftFrame->setFixedWidth( mDateNavigator->sizeHint().width() ); 332 leftFrame->setFixedWidth( mDateNavigator->sizeHint().width() );
333 } 333 }
334 334
335 //qDebug("Calendarview Size %d %d ", width(), height()); 335 //qDebug("Calendarview Size %d %d ", width(), height());
336#endif 336#endif
337 337
338 connect( mNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ), 338 connect( mNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ),
339 SLOT( showDates( const KCal::DateList & ) ) ); 339 SLOT( showDates( const KCal::DateList & ) ) );
340 connect( mNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ), 340 connect( mNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ),
341 mDateNavigator, SLOT( selectDates( const KCal::DateList & ) ) ); 341 mDateNavigator, SLOT( selectDates( const KCal::DateList & ) ) );
342 342
343 connect( mNavigatorBar, SIGNAL( goPrevYear() ), 343 connect( mNavigatorBar, SIGNAL( goPrevYear() ),
344 mNavigator, SLOT( selectPreviousYear() ) ); 344 mNavigator, SLOT( selectPreviousYear() ) );
345 connect( mNavigatorBar, SIGNAL( goNextYear() ), 345 connect( mNavigatorBar, SIGNAL( goNextYear() ),
346 mNavigator, SLOT( selectNextYear() ) ); 346 mNavigator, SLOT( selectNextYear() ) );
347 connect( mNavigatorBar, SIGNAL( goPrevMonth() ), 347 connect( mNavigatorBar, SIGNAL( goPrevMonth() ),
348 mNavigator, SLOT( selectPreviousMonth() ) ); 348 mNavigator, SLOT( selectPreviousMonth() ) );
349 connect( mNavigatorBar, SIGNAL( goNextMonth() ), 349 connect( mNavigatorBar, SIGNAL( goNextMonth() ),
350 mNavigator, SLOT( selectNextMonth() ) ); 350 mNavigator, SLOT( selectNextMonth() ) );
351 351
352 connect( mNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ), 352 connect( mNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ),
353 mNavigatorBar, SLOT( selectDates( const KCal::DateList & ) ) ); 353 mNavigatorBar, SLOT( selectDates( const KCal::DateList & ) ) );
354 354
355 connect( mDateNavigator, SIGNAL( weekClicked( const QDate & ) ), 355 connect( mDateNavigator, SIGNAL( weekClicked( const QDate & ) ),
356 mNavigator, SLOT( selectWeek( const QDate & ) ) ); 356 mNavigator, SLOT( selectWeek( const QDate & ) ) );
357 357
358 connect( mDateNavigator, SIGNAL( goPrevYear() ), 358 connect( mDateNavigator, SIGNAL( goPrevYear() ),
359 mNavigator, SLOT( selectPreviousYear() ) ); 359 mNavigator, SLOT( selectPreviousYear() ) );
360 connect( mDateNavigator, SIGNAL( goNextYear() ), 360 connect( mDateNavigator, SIGNAL( goNextYear() ),
361 mNavigator, SLOT( selectNextYear() ) ); 361 mNavigator, SLOT( selectNextYear() ) );
362 connect( mDateNavigator, SIGNAL( goPrevMonth() ), 362 connect( mDateNavigator, SIGNAL( goPrevMonth() ),
363 mNavigator, SLOT( selectPreviousMonth() ) ); 363 mNavigator, SLOT( selectPreviousMonth() ) );
364 connect( mDateNavigator, SIGNAL( goNextMonth() ), 364 connect( mDateNavigator, SIGNAL( goNextMonth() ),
365 mNavigator, SLOT( selectNextMonth() ) ); 365 mNavigator, SLOT( selectNextMonth() ) );
366 366
367 connect( mDateNavigator, SIGNAL( goPrevious() ), 367 connect( mDateNavigator, SIGNAL( goPrevious() ),
368 mNavigator, SLOT( selectPrevious() ) ); 368 mNavigator, SLOT( selectPrevious() ) );
369 connect( mDateNavigator, SIGNAL( goNext() ), 369 connect( mDateNavigator, SIGNAL( goNext() ),
370 mNavigator, SLOT( selectNext() ) ); 370 mNavigator, SLOT( selectNext() ) );
371 connect( mDateNavigator, SIGNAL( monthSelected ( int ) ), 371 connect( mDateNavigator, SIGNAL( monthSelected ( int ) ),
372 mNavigator, SLOT( slotMonthSelect( int ) ) ); 372 mNavigator, SLOT( slotMonthSelect( int ) ) );
373 connect( mNavigatorBar, SIGNAL( monthSelected ( int ) ), 373 connect( mNavigatorBar, SIGNAL( monthSelected ( int ) ),
374 mNavigator, SLOT( slotMonthSelect( int ) ) ); 374 mNavigator, SLOT( slotMonthSelect( int ) ) );
375 375
376 connect( mDateNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ), 376 connect( mDateNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ),
377 mNavigator, SLOT( selectDates( const KCal::DateList & ) ) ); 377 mNavigator, SLOT( selectDates( const KCal::DateList & ) ) );
378 378
379 connect( mDateNavigator, SIGNAL( eventDropped( Event * ) ), 379 connect( mDateNavigator, SIGNAL( eventDropped( Event * ) ),
380 SLOT( eventAdded( Event *) ) ); 380 SLOT( eventAdded( Event *) ) );
381 381
382 connect(mDateNavigator,SIGNAL(dayPassed(QDate)),SLOT(updateView())); 382 connect(mDateNavigator,SIGNAL(dayPassed(QDate)),SLOT(updateView()));
383 383
384 connect( this, SIGNAL( configChanged() ), 384 connect( this, SIGNAL( configChanged() ),
385 mDateNavigator, SLOT( updateConfig() ) ); 385 mDateNavigator, SLOT( updateConfig() ) );
386 386
387 connect( mTodoList, SIGNAL( newTodoSignal() ), 387 connect( mTodoList, SIGNAL( newTodoSignal() ),
388 SLOT( newTodo() ) ); 388 SLOT( newTodo() ) );
389 connect( mTodoList, SIGNAL( newSubTodoSignal( Todo *) ), 389 connect( mTodoList, SIGNAL( newSubTodoSignal( Todo *) ),
390 SLOT( newSubTodo( Todo * ) ) ); 390 SLOT( newSubTodo( Todo * ) ) );
391 connect( mTodoList, SIGNAL( editTodoSignal( Todo * ) ), 391 connect( mTodoList, SIGNAL( editTodoSignal( Todo * ) ),
392 SLOT( editTodo( Todo * ) ) ); 392 SLOT( editTodo( Todo * ) ) );
393 connect( mTodoList, SIGNAL( showTodoSignal( Todo * ) ), 393 connect( mTodoList, SIGNAL( showTodoSignal( Todo * ) ),
394 SLOT( showTodo( Todo *) ) ); 394 SLOT( showTodo( Todo *) ) );
395 connect( mTodoList, SIGNAL( deleteTodoSignal( Todo *) ), 395 connect( mTodoList, SIGNAL( deleteTodoSignal( Todo *) ),
396 SLOT( deleteTodo( Todo *) ) ); 396 SLOT( deleteTodo( Todo *) ) );
397 connect( this, SIGNAL( configChanged()), mTodoList, SLOT( updateConfig() ) ); 397 connect( this, SIGNAL( configChanged()), mTodoList, SLOT( updateConfig() ) );
398 connect( mTodoList, SIGNAL( purgeCompletedSignal() ), 398 connect( mTodoList, SIGNAL( purgeCompletedSignal() ),
399 SLOT( purgeCompleted() ) ); 399 SLOT( purgeCompleted() ) );
400 connect( mTodoList, SIGNAL( todoModifiedSignal( Todo *, int ) ), 400 connect( mTodoList, SIGNAL( todoModifiedSignal( Todo *, int ) ),
401 SIGNAL( todoModified( Todo *, int ) ) ); 401 SIGNAL( todoModified( Todo *, int ) ) );
402 402
403 connect( mTodoList, SIGNAL( cloneTodoSignal( Incidence * ) ), 403 connect( mTodoList, SIGNAL( cloneTodoSignal( Incidence * ) ),
404 this, SLOT ( cloneIncidence( Incidence * ) ) ); 404 this, SLOT ( cloneIncidence( Incidence * ) ) );
405 connect( mTodoList, SIGNAL( cancelTodoSignal( Incidence * ) ), 405 connect( mTodoList, SIGNAL( cancelTodoSignal( Incidence * ) ),
406 this, SLOT (cancelIncidence( Incidence * ) ) ); 406 this, SLOT (cancelIncidence( Incidence * ) ) );
407 407
408 connect( mTodoList, SIGNAL( moveTodoSignal( Incidence * ) ), 408 connect( mTodoList, SIGNAL( moveTodoSignal( Incidence * ) ),
409 this, SLOT ( moveIncidence( Incidence * ) ) ); 409 this, SLOT ( moveIncidence( Incidence * ) ) );
410 connect( mTodoList, SIGNAL( beamTodoSignal( Incidence * ) ), 410 connect( mTodoList, SIGNAL( beamTodoSignal( Incidence * ) ),
411 this, SLOT ( beamIncidence( Incidence * ) ) ); 411 this, SLOT ( beamIncidence( Incidence * ) ) );
412 412
413 connect( mTodoList, SIGNAL( unparentTodoSignal( Todo * ) ), 413 connect( mTodoList, SIGNAL( unparentTodoSignal( Todo * ) ),
414 this, SLOT ( todo_unsub( Todo * ) ) ); 414 this, SLOT ( todo_unsub( Todo * ) ) );
415 415
416 connect( this, SIGNAL( todoModified( Todo *, int )), mTodoList, 416 connect( this, SIGNAL( todoModified( Todo *, int )), mTodoList,
417 SLOT( updateTodo( Todo *, int ) ) ); 417 SLOT( updateTodo( Todo *, int ) ) );
418 connect( this, SIGNAL( todoModified( Todo *, int )), this, 418 connect( this, SIGNAL( todoModified( Todo *, int )), this,
419 SLOT( changeTodoDisplay( Todo *, int ) ) ); 419 SLOT( changeTodoDisplay( Todo *, int ) ) );
420 420
421 421
422 connect( mFilterView, SIGNAL( filterChanged() ), SLOT( updateFilter() ) ); 422 connect( mFilterView, SIGNAL( filterChanged() ), SLOT( updateFilter() ) );
423 connect( mFilterView, SIGNAL( editFilters() ), SLOT( editFilters() ) ); 423 connect( mFilterView, SIGNAL( editFilters() ), SLOT( editFilters() ) );
424 connect( mCalendar, SIGNAL( addAlarm(const QDateTime &, const QString & ) ), SLOT( addAlarm(const QDateTime &, const QString & ) ) ); 424 connect( mCalendar, SIGNAL( addAlarm(const QDateTime &, const QString & ) ), SLOT( addAlarm(const QDateTime &, const QString & ) ) );
425 connect( mCalendar, SIGNAL( removeAlarm(const QDateTime &, const QString & ) ), SLOT( removeAlarm(const QDateTime &, const QString & ) ) ); 425 connect( mCalendar, SIGNAL( removeAlarm(const QDateTime &, const QString & ) ), SLOT( removeAlarm(const QDateTime &, const QString & ) ) );
426 426
427 427
428 428
429 429
430 430
431 connect(QApplication::clipboard(),SIGNAL(dataChanged()), 431 connect(QApplication::clipboard(),SIGNAL(dataChanged()),
432 SLOT(checkClipboard())); 432 SLOT(checkClipboard()));
433 connect( mTodoList,SIGNAL( incidenceSelected( Incidence * ) ), 433 connect( mTodoList,SIGNAL( incidenceSelected( Incidence * ) ),
434 SLOT( processTodoListSelection( Incidence * ) ) ); 434 SLOT( processTodoListSelection( Incidence * ) ) );
435 connect(mTodoList,SIGNAL(isModified(bool)),SLOT(setModified(bool))); 435 connect(mTodoList,SIGNAL(isModified(bool)),SLOT(setModified(bool)));
436 436
437 // kdDebug() << "CalendarView::CalendarView() done" << endl; 437 // kdDebug() << "CalendarView::CalendarView() done" << endl;
438 438
439 mDateFrame = new QVBox(0,0,WType_Popup); 439 mDateFrame = new QVBox(0,0,WType_Popup);
440 //mDateFrame->setFrameStyle(QFrame::PopupPanel | QFrame::Raised); 440 //mDateFrame->setFrameStyle(QFrame::PopupPanel | QFrame::Raised);
441 mDateFrame->setFrameStyle( QFrame::WinPanel |QFrame::Raised ); 441 mDateFrame->setFrameStyle( QFrame::WinPanel |QFrame::Raised );
442 mDateFrame->setLineWidth(3); 442 mDateFrame->setLineWidth(3);
443 mDateFrame->hide(); 443 mDateFrame->hide();
444 mDateFrame->setCaption( i18n( "Pick a date to display")); 444 mDateFrame->setCaption( i18n( "Pick a date to display"));
445 mDatePicker = new KDatePicker ( mDateFrame , QDate::currentDate() ); 445 mDatePicker = new KDatePicker ( mDateFrame , QDate::currentDate() );
446 446
447 connect(mDatePicker,SIGNAL(dateSelected(QDate)),SLOT(slotSelectPickerDate(QDate))); 447 connect(mDatePicker,SIGNAL(dateSelected(QDate)),SLOT(slotSelectPickerDate(QDate)));
448 448
449 mEventEditor = mDialogManager->getEventEditor(); 449 mEventEditor = mDialogManager->getEventEditor();
450 mTodoEditor = mDialogManager->getTodoEditor(); 450 mTodoEditor = mDialogManager->getTodoEditor();
451 451
452 mFlagEditDescription = false; 452 mFlagEditDescription = false;
453 453
454 mSuspendTimer = new QTimer( this ); 454 mSuspendTimer = new QTimer( this );
455 mAlarmTimer = new QTimer( this ); 455 mAlarmTimer = new QTimer( this );
456 mRecheckAlarmTimer = new QTimer( this ); 456 mRecheckAlarmTimer = new QTimer( this );
457 connect( mRecheckAlarmTimer, SIGNAL( timeout () ), SLOT( recheckTimerAlarm() ) ); 457 connect( mRecheckAlarmTimer, SIGNAL( timeout () ), SLOT( recheckTimerAlarm() ) );
458 connect( mSuspendTimer, SIGNAL( timeout () ), SLOT( suspendAlarm() ) ); 458 connect( mSuspendTimer, SIGNAL( timeout () ), SLOT( suspendAlarm() ) );
459 connect( mAlarmTimer, SIGNAL( timeout () ), SLOT( timerAlarm() ) ); 459 connect( mAlarmTimer, SIGNAL( timeout () ), SLOT( timerAlarm() ) );
460 mAlarmDialog = new AlarmDialog( this ); 460 mAlarmDialog = new AlarmDialog( this );
461 connect( mAlarmDialog, SIGNAL( addAlarm(const QDateTime &, const QString & ) ), SLOT( addSuspendAlarm(const QDateTime &, const QString & ) ) ); 461 connect( mAlarmDialog, SIGNAL( addAlarm(const QDateTime &, const QString & ) ), SLOT( addSuspendAlarm(const QDateTime &, const QString & ) ) );
462 mAlarmDialog->setServerNotification( false ); 462 mAlarmDialog->setServerNotification( false );
463 mAlarmDialog->setSuspendTime( KOPrefs::instance()->mAlarmSuspendTime ); 463 mAlarmDialog->setSuspendTime( KOPrefs::instance()->mAlarmSuspendTime );
464} 464}
465 465
466 466
467CalendarView::~CalendarView() 467CalendarView::~CalendarView()
468{ 468{
469 // kdDebug() << "~CalendarView()" << endl; 469 // kdDebug() << "~CalendarView()" << endl;
470 //qDebug("CalendarView::~CalendarView() "); 470 //qDebug("CalendarView::~CalendarView() ");
471 delete mDialogManager; 471 delete mDialogManager;
472 delete mViewManager; 472 delete mViewManager;
473 delete mStorage; 473 delete mStorage;
474 delete mDateFrame ; 474 delete mDateFrame ;
475 delete beamDialog; 475 delete beamDialog;
476 //kdDebug() << "~CalendarView() done" << endl; 476 //kdDebug() << "~CalendarView() done" << endl;
477} 477}
478void CalendarView::timerAlarm() 478void CalendarView::timerAlarm()
479{ 479{
480 //qDebug("CalendarView::timerAlarm() "); 480 //qDebug("CalendarView::timerAlarm() ");
481 computeAlarm(mAlarmNotification ); 481 computeAlarm(mAlarmNotification );
482} 482}
483 483
484void CalendarView::suspendAlarm() 484void CalendarView::suspendAlarm()
485{ 485{
486 //qDebug(" CalendarView::suspendAlarm() "); 486 //qDebug(" CalendarView::suspendAlarm() ");
487 computeAlarm(mSuspendAlarmNotification ); 487 computeAlarm(mSuspendAlarmNotification );
488 488
489} 489}
490 490
491void CalendarView::startAlarm( QString mess , QString filename) 491void CalendarView::startAlarm( QString mess , QString filename)
492{ 492{
493 mAlarmDialog->eventNotification( mess, KOPrefs::instance()->mAlarmPlayBeeps, filename, true,KOPrefs::instance()->mAlarmBeepInterval ,KOPrefs::instance()->mAlarmSuspendCount ); 493 mAlarmDialog->eventNotification( mess, KOPrefs::instance()->mAlarmPlayBeeps, filename, true,KOPrefs::instance()->mAlarmBeepInterval ,KOPrefs::instance()->mAlarmSuspendCount );
494 QTimer::singleShot( 3000, this, SLOT( checkNextTimerAlarm() ) ); 494 QTimer::singleShot( 3000, this, SLOT( checkNextTimerAlarm() ) );
495 495
496} 496}
497 497
498void CalendarView::checkNextTimerAlarm() 498void CalendarView::checkNextTimerAlarm()
499{ 499{
500 mCalendar->checkAlarmForIncidence( 0, true ); 500 mCalendar->checkAlarmForIncidence( 0, true );
501} 501}
502 502
503void CalendarView::computeAlarm( QString msg ) 503void CalendarView::computeAlarm( QString msg )
504{ 504{
505 505
506 QString mess = msg; 506 QString mess = msg;
507 QString mAlarmMessage = mess.mid( 9 ); 507 QString mAlarmMessage = mess.mid( 9 );
508 QString filename = MainWindow::resourcePath(); 508 QString filename = MainWindow::resourcePath();
509 filename += "koalarm.wav"; 509 filename += "koalarm.wav";
510 QString tempfilename; 510 QString tempfilename;
511 if ( mess.left( 13 ) == "suspend_alarm") { 511 if ( mess.left( 13 ) == "suspend_alarm") {
512 bool error = false; 512 bool error = false;
513 int len = mess.mid( 13 ).find("+++"); 513 int len = mess.mid( 13 ).find("+++");
514 if ( len < 2 ) 514 if ( len < 2 )
515 error = true; 515 error = true;
516 else { 516 else {
517 tempfilename = mess.mid( 13, len ); 517 tempfilename = mess.mid( 13, len );
518 if ( !QFile::exists( tempfilename ) ) 518 if ( !QFile::exists( tempfilename ) )
519 error = true; 519 error = true;
520 } 520 }
521 if ( ! error ) { 521 if ( ! error ) {
522 filename = tempfilename; 522 filename = tempfilename;
523 } 523 }
524 mAlarmMessage = mess.mid( 13+len+3 ); 524 mAlarmMessage = mess.mid( 13+len+3 );
525 //qDebug("suspend file %s ",tempfilename.latin1() ); 525 //qDebug("suspend file %s ",tempfilename.latin1() );
526 startAlarm( mAlarmMessage, filename); 526 startAlarm( mAlarmMessage, filename);
527 return; 527 return;
528 } 528 }
529 if ( mess.left( 11 ) == "timer_alarm") { 529 if ( mess.left( 11 ) == "timer_alarm") {
530 //mTimerTime = 0; 530 //mTimerTime = 0;
531 startAlarm( mess.mid( 11 ), filename ); 531 startAlarm( mess.mid( 11 ), filename );
532 return; 532 return;
533 } 533 }
534 if ( mess.left( 10 ) == "proc_alarm") { 534 if ( mess.left( 10 ) == "proc_alarm") {
535 bool error = false; 535 bool error = false;
536 int len = mess.mid( 10 ).find("+++"); 536 int len = mess.mid( 10 ).find("+++");
537 if ( len < 2 ) 537 if ( len < 2 )
538 error = true; 538 error = true;
539 else { 539 else {
540 tempfilename = mess.mid( 10, len ); 540 tempfilename = mess.mid( 10, len );
541 if ( !QFile::exists( tempfilename ) ) 541 if ( !QFile::exists( tempfilename ) )
542 error = true; 542 error = true;
543 } 543 }
544 if ( error ) { 544 if ( error ) {
545 mAlarmMessage = "Procedure Alarm\nError - File not found\n"; 545 mAlarmMessage = "Procedure Alarm\nError - File not found\n";
546 mAlarmMessage += mess.mid( 10+len+3+9 ); 546 mAlarmMessage += mess.mid( 10+len+3+9 );
547 } else { 547 } else {
548 //QCopEnvelope e("QPE/Application/kopi", "-writeFileSilent"); 548 //QCopEnvelope e("QPE/Application/kopi", "-writeFileSilent");
549 //qDebug("-----system command %s ",tempfilename.latin1() ); 549 //qDebug("-----system command %s ",tempfilename.latin1() );
550#ifndef _WIN32_ 550#ifndef _WIN32_
551 if ( vfork () == 0 ) { 551 if ( vfork () == 0 ) {
552 execl ( tempfilename.latin1(), 0 ); 552 execl ( tempfilename.latin1(), 0 );
553 return; 553 return;
554 } 554 }
555#else 555#else
556 QProcess* p = new QProcess(); 556 QProcess* p = new QProcess();
557 p->addArgument( tempfilename.latin1() ); 557 p->addArgument( tempfilename.latin1() );
558 p->start(); 558 p->start();
559 return; 559 return;
560#endif 560#endif
561 561
562 return; 562 return;
563 } 563 }
564 564
565 //qDebug("+++++++system command %s ",tempfilename.latin1() ); 565 //qDebug("+++++++system command %s ",tempfilename.latin1() );
566 } 566 }
567 if ( mess.left( 11 ) == "audio_alarm") { 567 if ( mess.left( 11 ) == "audio_alarm") {
568 bool error = false; 568 bool error = false;
569 int len = mess.mid( 11 ).find("+++"); 569 int len = mess.mid( 11 ).find("+++");
570 if ( len < 2 ) 570 if ( len < 2 )
571 error = true; 571 error = true;
572 else { 572 else {
573 tempfilename = mess.mid( 11, len ); 573 tempfilename = mess.mid( 11, len );
574 if ( !QFile::exists( tempfilename ) ) 574 if ( !QFile::exists( tempfilename ) )
575 error = true; 575 error = true;
576 } 576 }
577 if ( ! error ) { 577 if ( ! error ) {
578 filename = tempfilename; 578 filename = tempfilename;
579 } 579 }
580 mAlarmMessage = mess.mid( 11+len+3+9 ); 580 mAlarmMessage = mess.mid( 11+len+3+9 );
581 //qDebug("audio file command %s ",tempfilename.latin1() ); 581 //qDebug("audio file command %s ",tempfilename.latin1() );
582 } 582 }
583 if ( mess.left( 9 ) == "cal_alarm") { 583 if ( mess.left( 9 ) == "cal_alarm") {
584 mAlarmMessage = mess.mid( 9 ) ; 584 mAlarmMessage = mess.mid( 9 ) ;
585 } 585 }
586 586
587 startAlarm( mAlarmMessage, filename ); 587 startAlarm( mAlarmMessage, filename );
588 588
589 589
590} 590}
591 591
592void CalendarView::addSuspendAlarm(const QDateTime &qdt, const QString &noti ) 592void CalendarView::addSuspendAlarm(const QDateTime &qdt, const QString &noti )
593{ 593{
594 //qDebug("+++++addSUSPENDAlarm %s %s ", qdt.toString().latin1() , noti.latin1() ); 594 //qDebug("+++++addSUSPENDAlarm %s %s ", qdt.toString().latin1() , noti.latin1() );
595 595
596 mSuspendAlarmNotification = noti; 596 mSuspendAlarmNotification = noti;
597 int ms = QDateTime::currentDateTime().secsTo( qdt )*1000; 597 int ms = QDateTime::currentDateTime().secsTo( qdt )*1000;
598 //qDebug("Suspend Alarm timer started with secs: %d ", ms/1000); 598 //qDebug("Suspend Alarm timer started with secs: %d ", ms/1000);
599 mSuspendTimer->start( ms , true ); 599 mSuspendTimer->start( ms , true );
600 600
601} 601}
602 602
603void CalendarView::addAlarm(const QDateTime &qdt, const QString &noti ) 603void CalendarView::addAlarm(const QDateTime &qdt, const QString &noti )
604{ 604{
605 //qDebug("+++++addAlarm %s %s ", qdt.toString().latin1() , noti.latin1() ); 605 //qDebug("+++++addAlarm %s %s ", qdt.toString().latin1() , noti.latin1() );
606 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) { 606 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) {
607#ifndef DESKTOP_VERSION 607#ifndef DESKTOP_VERSION
608 AlarmServer::addAlarm ( qdt,"koalarm", noti.latin1() ); 608 AlarmServer::addAlarm ( qdt,"koalarm", noti.latin1() );
609#endif 609#endif
610 return; 610 return;
611 } 611 }
612 int maxSec; 612 int maxSec;
613 //maxSec = 5; //testing only 613 //maxSec = 5; //testing only
614 maxSec = 86400+3600; // one day+1hour 614 maxSec = 86400+3600; // one day+1hour
615 mAlarmNotification = noti; 615 mAlarmNotification = noti;
616 int sec = QDateTime::currentDateTime().secsTo( qdt ); 616 int sec = QDateTime::currentDateTime().secsTo( qdt );
617 if ( sec > maxSec ) { 617 if ( sec > maxSec ) {
618 mRecheckAlarmTimer->start( maxSec * 1000 ); 618 mRecheckAlarmTimer->start( maxSec * 1000 );
619 // qDebug("recheck Alarm timer started with secs: %d next alarm in sec:%d", maxSec,sec ); 619 // qDebug("recheck Alarm timer started with secs: %d next alarm in sec:%d", maxSec,sec );
620 return; 620 return;
621 } else { 621 } else {
622 mRecheckAlarmTimer->stop(); 622 mRecheckAlarmTimer->stop();
623 } 623 }
624 //qDebug("Alarm timer started with secs: %d ", sec); 624 //qDebug("Alarm timer started with secs: %d ", sec);
625 mAlarmTimer->start( sec *1000 , true ); 625 mAlarmTimer->start( sec *1000 , true );
626 626
627} 627}
628// called by mRecheckAlarmTimer to get next alarm 628// called by mRecheckAlarmTimer to get next alarm
629// we need this, because a QTimer has only a max range of 25 days 629// we need this, because a QTimer has only a max range of 25 days
630void CalendarView::recheckTimerAlarm() 630void CalendarView::recheckTimerAlarm()
631{ 631{
632 mAlarmTimer->stop(); 632 mAlarmTimer->stop();
633 mRecheckAlarmTimer->stop(); 633 mRecheckAlarmTimer->stop();
634 mCalendar->checkAlarmForIncidence( 0, true ); 634 mCalendar->checkAlarmForIncidence( 0, true );
635} 635}
636void CalendarView::removeAlarm(const QDateTime &qdt, const QString &noti ) 636void CalendarView::removeAlarm(const QDateTime &qdt, const QString &noti )
637{ 637{
638 //qDebug("-----removeAlarm %s %s ", qdt.toString().latin1() , noti.latin1() ); 638 //qDebug("-----removeAlarm %s %s ", qdt.toString().latin1() , noti.latin1() );
639 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) { 639 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) {
640#ifndef DESKTOP_VERSION 640#ifndef DESKTOP_VERSION
641 AlarmServer::deleteAlarm (qdt ,"koalarm" ,noti.latin1() ); 641 AlarmServer::deleteAlarm (qdt ,"koalarm" ,noti.latin1() );
642#endif 642#endif
643 return; 643 return;
644 } 644 }
645 mAlarmTimer->stop(); 645 mAlarmTimer->stop();
646} 646}
647void CalendarView::selectWeekNum ( int num ) 647void CalendarView::selectWeekNum ( int num )
648{ 648{
649 dateNavigator()->selectWeek( num ); 649 dateNavigator()->selectWeek( num );
650 mViewManager->showWeekView(); 650 mViewManager->showWeekView();
651} 651}
652KOViewManager *CalendarView::viewManager() 652KOViewManager *CalendarView::viewManager()
653{ 653{
654 return mViewManager; 654 return mViewManager;
655} 655}
656 656
657KODialogManager *CalendarView::dialogManager() 657KODialogManager *CalendarView::dialogManager()
658{ 658{
659 return mDialogManager; 659 return mDialogManager;
660} 660}
661 661
662QDate CalendarView::startDate() 662QDate CalendarView::startDate()
663{ 663{
664 DateList dates = mNavigator->selectedDates(); 664 DateList dates = mNavigator->selectedDates();
665 665
666 return dates.first(); 666 return dates.first();
667} 667}
668 668
669QDate CalendarView::endDate() 669QDate CalendarView::endDate()
670{ 670{
671 DateList dates = mNavigator->selectedDates(); 671 DateList dates = mNavigator->selectedDates();
672 672
673 return dates.last(); 673 return dates.last();
674} 674}
675 675
676 676
677void CalendarView::createPrinter() 677void CalendarView::createPrinter()
678{ 678{
679#ifndef KORG_NOPRINTER 679#ifndef KORG_NOPRINTER
680 if (!mCalPrinter) { 680 if (!mCalPrinter) {
681 mCalPrinter = new CalPrinter(this, mCalendar); 681 mCalPrinter = new CalPrinter(this, mCalendar);
682 connect(this, SIGNAL(configChanged()), mCalPrinter, SLOT(updateConfig())); 682 connect(this, SIGNAL(configChanged()), mCalPrinter, SLOT(updateConfig()));
683 } 683 }
684#endif 684#endif
685} 685}
686 686
687void CalendarView::confSync() 687void CalendarView::confSync()
688{ 688{
689 static KSyncPrefsDialog* sp = 0; 689 static KSyncPrefsDialog* sp = 0;
690 if ( ! sp ) { 690 if ( ! sp ) {
691 sp = new KSyncPrefsDialog( this, "syncprefs", true ); 691 sp = new KSyncPrefsDialog( this, "syncprefs", true );
692 } 692 }
693 sp->usrReadConfig(); 693 sp->usrReadConfig();
694#ifndef DESKTOP_VERSION 694#ifndef DESKTOP_VERSION
695 sp->showMaximized(); 695 sp->showMaximized();
696#else 696#else
697 sp->show(); 697 sp->show();
698#endif 698#endif
699 sp->exec(); 699 sp->exec();
700 KOPrefs::instance()->mSyncProfileNames = sp->getSyncProfileNames(); 700 KOPrefs::instance()->mSyncProfileNames = sp->getSyncProfileNames();
701 KOPrefs::instance()->mLocalMachineName = sp->getLocalMachineName (); 701 KOPrefs::instance()->mLocalMachineName = sp->getLocalMachineName ();
702} 702}
703 703
704 704
705//KOPrefs::instance()->mWriteBackFile 705//KOPrefs::instance()->mWriteBackFile
706//KOPrefs::instance()->mWriteBackExistingOnly 706//KOPrefs::instance()->mWriteBackExistingOnly
707 707
708// 0 syncPrefsGroup->addRadio(i18n("Take local entry on conflict")); 708// 0 syncPrefsGroup->addRadio(i18n("Take local entry on conflict"));
709// 1 syncPrefsGroup->addRadio(i18n("Take remote entry on conflict")); 709// 1 syncPrefsGroup->addRadio(i18n("Take remote entry on conflict"));
710// 2 syncPrefsGroup->addRadio(i18n("Take newest entry on conflict")); 710// 2 syncPrefsGroup->addRadio(i18n("Take newest entry on conflict"));
711// 3 syncPrefsGroup->addRadio(i18n("Ask for every entry on conflict")); 711// 3 syncPrefsGroup->addRadio(i18n("Ask for every entry on conflict"));
712// 4 syncPrefsGroup->addRadio(i18n("Force take local entry always")); 712// 4 syncPrefsGroup->addRadio(i18n("Force take local entry always"));
713// 5 syncPrefsGroup->addRadio(i18n("Force take remote entry always")); 713// 5 syncPrefsGroup->addRadio(i18n("Force take remote entry always"));
714 714
715int CalendarView::takeEvent( Incidence* local, Incidence* remote, int mode , bool full ) 715int CalendarView::takeEvent( Incidence* local, Incidence* remote, int mode , bool full )
716{ 716{
717 717
718 //void setZaurusId(int id); 718 //void setZaurusId(int id);
719 // int zaurusId() const; 719 // int zaurusId() const;
720 // void setZaurusUid(int id); 720 // void setZaurusUid(int id);
721 // int zaurusUid() const; 721 // int zaurusUid() const;
722 // void setZaurusStat(int id); 722 // void setZaurusStat(int id);
723 // int zaurusStat() const; 723 // int zaurusStat() const;
724 // 0 equal 724 // 0 equal
725 // 1 take local 725 // 1 take local
726 // 2 take remote 726 // 2 take remote
727 // 3 cancel 727 // 3 cancel
728 QDateTime lastSync = mLastCalendarSync; 728 QDateTime lastSync = mLastCalendarSync;
729 QDateTime localMod = local->lastModified(); 729 QDateTime localMod = local->lastModified();
730 QDateTime remoteMod = remote->lastModified(); 730 QDateTime remoteMod = remote->lastModified();
731 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 731 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
732 bool remCh, locCh; 732 bool remCh, locCh;
733 remCh = ( remote->getCsum(mCurrentSyncDevice) != local->getCsum(mCurrentSyncDevice) ); 733 remCh = ( remote->getCsum(mCurrentSyncDevice) != local->getCsum(mCurrentSyncDevice) );
734 //if ( remCh ) 734 //if ( remCh )
735 //qDebug("loc %s rem %s", local->getCsum(mCurrentSyncDevice).latin1(), remote->getCsum(mCurrentSyncDevice).latin1() ); 735 //qDebug("loc %s rem %s", local->getCsum(mCurrentSyncDevice).latin1(), remote->getCsum(mCurrentSyncDevice).latin1() );
736 locCh = ( localMod > mLastCalendarSync ); 736 locCh = ( localMod > mLastCalendarSync );
737 if ( !remCh && ! locCh ) { 737 if ( !remCh && ! locCh ) {
738 //qDebug("both not changed "); 738 //qDebug("both not changed ");
739 lastSync = localMod.addDays(1); 739 lastSync = localMod.addDays(1);
740 if ( mode <= SYNC_PREF_ASK ) 740 if ( mode <= SYNC_PREF_ASK )
741 return 0; 741 return 0;
742 } else { 742 } else {
743 if ( locCh ) { 743 if ( locCh ) {
744 //qDebug("loc changed %d %s %s", local->revision() , localMod.toString().latin1(), mLastCalendarSync.toString().latin1()); 744 //qDebug("loc changed %d %s %s", local->revision() , localMod.toString().latin1(), mLastCalendarSync.toString().latin1());
745 lastSync = localMod.addDays( -1 ); 745 lastSync = localMod.addDays( -1 );
746 if ( !remCh ) 746 if ( !remCh )
747 remoteMod = ( lastSync.addDays( -1 ) ); 747 remoteMod = ( lastSync.addDays( -1 ) );
748 } else { 748 } else {
749 //qDebug(" not loc changed "); 749 //qDebug(" not loc changed ");
750 lastSync = localMod.addDays( 1 ); 750 lastSync = localMod.addDays( 1 );
751 if ( remCh ) 751 if ( remCh )
752 remoteMod =( lastSync.addDays( 1 ) ); 752 remoteMod =( lastSync.addDays( 1 ) );
753 753
754 } 754 }
755 } 755 }
756 full = true; 756 full = true;
757 if ( mode < SYNC_PREF_ASK ) 757 if ( mode < SYNC_PREF_ASK )
758 mode = SYNC_PREF_ASK; 758 mode = SYNC_PREF_ASK;
759 } else { 759 } else {
760 if ( localMod == remoteMod ) 760 if ( localMod == remoteMod )
761 if ( local->revision() == remote->revision() ) 761 if ( local->revision() == remote->revision() )
762 return 0; 762 return 0;
763 763
764 } 764 }
765 // qDebug(" %d %d conflict on %s %s ", mode, full, local->summary().latin1(), remote->summary().latin1() ); 765 // qDebug(" %d %d conflict on %s %s ", mode, full, local->summary().latin1(), remote->summary().latin1() );
766 766
767 //qDebug("%s %d %s %d", localMod.toString().latin1() , local->revision(), remoteMod.toString().latin1(), remote->revision()); 767 //qDebug("%s %d %s %d", localMod.toString().latin1() , local->revision(), remoteMod.toString().latin1(), remote->revision());
768 //qDebug("%d %d %d %d ", localMod.time().second(), localMod.time().msec(), remoteMod.time().second(), remoteMod.time().msec() ); 768 //qDebug("%d %d %d %d ", localMod.time().second(), localMod.time().msec(), remoteMod.time().second(), remoteMod.time().msec() );
769 //full = true; //debug only 769 //full = true; //debug only
770 if ( full ) { 770 if ( full ) {
771 bool equ = false; 771 bool equ = false;
772 if ( local->type() == "Event" ) { 772 if ( local->type() == "Event" ) {
773 equ = (*((Event*) local) == *((Event*) remote)); 773 equ = (*((Event*) local) == *((Event*) remote));
774 } 774 }
775 else if ( local->type() =="Todo" ) 775 else if ( local->type() =="Todo" )
776 equ = (*((Todo*) local) == (*(Todo*) remote)); 776 equ = (*((Todo*) local) == (*(Todo*) remote));
777 else if ( local->type() =="Journal" ) 777 else if ( local->type() =="Journal" )
778 equ = (*((Journal*) local) == *((Journal*) remote)); 778 equ = (*((Journal*) local) == *((Journal*) remote));
779 if ( equ ) { 779 if ( equ ) {
780 //qDebug("equal "); 780 //qDebug("equal ");
781 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 781 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
782 local->setCsum( mCurrentSyncDevice, remote->getCsum(mCurrentSyncDevice) ); 782 local->setCsum( mCurrentSyncDevice, remote->getCsum(mCurrentSyncDevice) );
783 } 783 }
784 if ( mode < SYNC_PREF_FORCE_LOCAL ) 784 if ( mode < SYNC_PREF_FORCE_LOCAL )
785 return 0; 785 return 0;
786 786
787 }//else //debug only 787 }//else //debug only
788 //qDebug("not equal %s %s ", local->summary().latin1(), remote->summary().latin1()); 788 //qDebug("not equal %s %s ", local->summary().latin1(), remote->summary().latin1());
789 } 789 }
790 int result; 790 int result;
791 bool localIsNew; 791 bool localIsNew;
792 //qDebug("%s -- %s mLastCalendarSync %s lastsync %s --- local %s remote %s ",local->summary().latin1(), remote->summary().latin1(),mLastCalendarSync.toString().latin1() ,lastSync.toString().latin1() , localMod.toString().latin1() , remoteMod.toString().latin1() ); 792 //qDebug("%s -- %s mLastCalendarSync %s lastsync %s --- local %s remote %s ",local->summary().latin1(), remote->summary().latin1(),mLastCalendarSync.toString().latin1() ,lastSync.toString().latin1() , localMod.toString().latin1() , remoteMod.toString().latin1() );
793 793
794 if ( full && mode < SYNC_PREF_NEWEST ) 794 if ( full && mode < SYNC_PREF_NEWEST )
795 mode = SYNC_PREF_ASK; 795 mode = SYNC_PREF_ASK;
796 796
797 switch( mode ) { 797 switch( mode ) {
798 case SYNC_PREF_LOCAL: 798 case SYNC_PREF_LOCAL:
799 if ( lastSync > remoteMod ) 799 if ( lastSync > remoteMod )
800 return 1; 800 return 1;
801 if ( lastSync > localMod ) 801 if ( lastSync > localMod )
802 return 2; 802 return 2;
803 return 1; 803 return 1;
804 break; 804 break;
805 case SYNC_PREF_REMOTE: 805 case SYNC_PREF_REMOTE:
806 if ( lastSync > remoteMod ) 806 if ( lastSync > remoteMod )
807 return 1; 807 return 1;
808 if ( lastSync > localMod ) 808 if ( lastSync > localMod )
809 return 2; 809 return 2;
810 return 2; 810 return 2;
811 break; 811 break;
812 case SYNC_PREF_NEWEST: 812 case SYNC_PREF_NEWEST:
813 if ( localMod > remoteMod ) 813 if ( localMod > remoteMod )
814 return 1; 814 return 1;
815 else 815 else
816 return 2; 816 return 2;
817 break; 817 break;
818 case SYNC_PREF_ASK: 818 case SYNC_PREF_ASK:
819 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() ); 819 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() );
820 if ( lastSync > remoteMod ) 820 if ( lastSync > remoteMod )
821 return 1; 821 return 1;
822 if ( lastSync > localMod ) 822 if ( lastSync > localMod )
823 return 2; 823 return 2;
824 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() ); 824 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() );
825 localIsNew = localMod >= remoteMod; 825 localIsNew = localMod >= remoteMod;
826 if ( localIsNew ) 826 if ( localIsNew )
827 getEventViewerDialog()->setColorMode( 1 ); 827 getEventViewerDialog()->setColorMode( 1 );
828 else 828 else
829 getEventViewerDialog()->setColorMode( 2 ); 829 getEventViewerDialog()->setColorMode( 2 );
830 getEventViewerDialog()->setIncidence(local); 830 getEventViewerDialog()->setIncidence(local);
831 if ( localIsNew ) 831 if ( localIsNew )
832 getEventViewerDialog()->setColorMode( 2 ); 832 getEventViewerDialog()->setColorMode( 2 );
833 else 833 else
834 getEventViewerDialog()->setColorMode( 1 ); 834 getEventViewerDialog()->setColorMode( 1 );
835 getEventViewerDialog()->addIncidence(remote); 835 getEventViewerDialog()->addIncidence(remote);
836 getEventViewerDialog()->setColorMode( 0 ); 836 getEventViewerDialog()->setColorMode( 0 );
837 //qDebug("local %d remote %d ",local->relatedTo(),remote->relatedTo() ); 837 //qDebug("local %d remote %d ",local->relatedTo(),remote->relatedTo() );
838 getEventViewerDialog()->setCaption( mCurrentSyncDevice +i18n(" : Conflict! Please choose entry!")); 838 getEventViewerDialog()->setCaption( mCurrentSyncDevice +i18n(" : Conflict! Please choose entry!"));
839 getEventViewerDialog()->showMe(); 839 getEventViewerDialog()->showMe();
840 result = getEventViewerDialog()->executeS( localIsNew ); 840 result = getEventViewerDialog()->executeS( localIsNew );
841 return result; 841 return result;
842 842
843 break; 843 break;
844 case SYNC_PREF_FORCE_LOCAL: 844 case SYNC_PREF_FORCE_LOCAL:
845 return 1; 845 return 1;
846 break; 846 break;
847 case SYNC_PREF_FORCE_REMOTE: 847 case SYNC_PREF_FORCE_REMOTE:
848 return 2; 848 return 2;
849 break; 849 break;
850 850
851 default: 851 default:
852 // SYNC_PREF_TAKE_BOTH not implemented 852 // SYNC_PREF_TAKE_BOTH not implemented
853 break; 853 break;
854 } 854 }
855 return 0; 855 return 0;
856} 856}
857Event* CalendarView::getLastSyncEvent() 857Event* CalendarView::getLastSyncEvent()
858{ 858{
859 Event* lse; 859 Event* lse;
860 //qDebug("CurrentSyncDevice %s ",mCurrentSyncDevice .latin1() ); 860 //qDebug("CurrentSyncDevice %s ",mCurrentSyncDevice .latin1() );
861 lse = mCalendar->event( "last-syncEvent-"+mCurrentSyncDevice ); 861 lse = mCalendar->event( "last-syncEvent-"+mCurrentSyncDevice );
862 if (!lse) { 862 if (!lse) {
863 lse = new Event(); 863 lse = new Event();
864 lse->setUid( "last-syncEvent-"+mCurrentSyncDevice ); 864 lse->setUid( "last-syncEvent-"+mCurrentSyncDevice );
865 QString sum = ""; 865 QString sum = "";
866 if ( KOPrefs::instance()->mExternSyncProfiles.contains( mCurrentSyncDevice ) ) 866 if ( KOPrefs::instance()->mExternSyncProfiles.contains( mCurrentSyncDevice ) )
867 sum = "E: "; 867 sum = "E: ";
868 lse->setSummary(sum+mCurrentSyncDevice + i18n(" - sync event")); 868 lse->setSummary(sum+mCurrentSyncDevice + i18n(" - sync event"));
869 lse->setDtStart( mLastCalendarSync ); 869 lse->setDtStart( mLastCalendarSync );
870 lse->setDtEnd( mLastCalendarSync.addSecs( 7200 ) ); 870 lse->setDtEnd( mLastCalendarSync.addSecs( 7200 ) );
871 lse->setCategories( i18n("SyncEvent") ); 871 lse->setCategories( i18n("SyncEvent") );
872 lse->setReadOnly( true ); 872 lse->setReadOnly( true );
873 mCalendar->addEvent( lse ); 873 mCalendar->addEvent( lse );
874 } 874 }
875 875
876 return lse; 876 return lse;
877 877
878} 878}
879// probaly useless 879// probaly useless
880void CalendarView::setupExternSyncProfiles() 880void CalendarView::setupExternSyncProfiles()
881{ 881{
882 Event* lse; 882 Event* lse;
883 mExternLastSyncEvent.clear(); 883 mExternLastSyncEvent.clear();
884 int i; 884 int i;
885 for ( i = 0; i < KOPrefs::instance()->mExternSyncProfiles.count(); ++i ) { 885 for ( i = 0; i < KOPrefs::instance()->mExternSyncProfiles.count(); ++i ) {
886 lse = mCalendar->event( "last-syncEvent-"+ KOPrefs::instance()->mExternSyncProfiles[i] ); 886 lse = mCalendar->event( "last-syncEvent-"+ KOPrefs::instance()->mExternSyncProfiles[i] );
887 if ( lse ) 887 if ( lse )
888 mExternLastSyncEvent.append( lse ); 888 mExternLastSyncEvent.append( lse );
889 else 889 else
890 qDebug("Last Sync event not found for %s ", KOPrefs::instance()->mExternSyncProfiles[i].latin1()); 890 qDebug("Last Sync event not found for %s ", KOPrefs::instance()->mExternSyncProfiles[i].latin1());
891 } 891 }
892 892
893} 893}
894// we check, if the to delete event has a id for a profile 894// we check, if the to delete event has a id for a profile
895// if yes, we set this id in the profile to delete 895// if yes, we set this id in the profile to delete
896void CalendarView::checkExternSyncEvent( QPtrList<Event> lastSync , Incidence* toDelete ) 896void CalendarView::checkExternSyncEvent( QPtrList<Event> lastSync , Incidence* toDelete )
897{ 897{
898 if ( lastSync.count() == 0 ) { 898 if ( lastSync.count() == 0 ) {
899 //qDebug(" lastSync.count() == 0"); 899 //qDebug(" lastSync.count() == 0");
900 return; 900 return;
901 } 901 }
902 if ( toDelete->type() == "Journal" ) 902 if ( toDelete->type() == "Journal" )
903 return; 903 return;
904 904
905 Event* eve = lastSync.first(); 905 Event* eve = lastSync.first();
906 906
907 while ( eve ) { 907 while ( eve ) {
908 QString id = toDelete->getID( eve->uid().mid( 15 ) ); // this is the sync profile name 908 QString id = toDelete->getID( eve->uid().mid( 15 ) ); // this is the sync profile name
909 if ( !id.isEmpty() ) { 909 if ( !id.isEmpty() ) {
910 QString des = eve->description(); 910 QString des = eve->description();
911 QString pref = "e"; 911 QString pref = "e";
912 if ( toDelete->type() == "Todo" ) 912 if ( toDelete->type() == "Todo" )
913 pref = "t"; 913 pref = "t";
914 des += pref+ id + ","; 914 des += pref+ id + ",";
915 eve->setReadOnly( false ); 915 eve->setReadOnly( false );
916 eve->setDescription( des ); 916 eve->setDescription( des );
917 //qDebug("setdes %s ", des.latin1()); 917 //qDebug("setdes %s ", des.latin1());
918 eve->setReadOnly( true ); 918 eve->setReadOnly( true );
919 } 919 }
920 eve = lastSync.next(); 920 eve = lastSync.next();
921 } 921 }
922 922
923} 923}
924void CalendarView::checkExternalId( Incidence * inc ) 924void CalendarView::checkExternalId( Incidence * inc )
925{ 925{
926 QPtrList<Event> lastSync = mCalendar->getExternLastSyncEvents() ; 926 QPtrList<Event> lastSync = mCalendar->getExternLastSyncEvents() ;
927 checkExternSyncEvent( lastSync, inc ); 927 checkExternSyncEvent( lastSync, inc );
928 928
929} 929}
930bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int mode ) 930bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int mode )
931{ 931{
932 bool syncOK = true; 932 bool syncOK = true;
933 int addedEvent = 0; 933 int addedEvent = 0;
934 int addedEventR = 0; 934 int addedEventR = 0;
935 int deletedEventR = 0; 935 int deletedEventR = 0;
936 int deletedEventL = 0; 936 int deletedEventL = 0;
937 int changedLocal = 0; 937 int changedLocal = 0;
938 int changedRemote = 0; 938 int changedRemote = 0;
939 //QPtrList<Event> el = local->rawEvents(); 939 //QPtrList<Event> el = local->rawEvents();
940 Event* eventR; 940 Event* eventR;
941 QString uid; 941 QString uid;
942 int take; 942 int take;
943 Event* eventL; 943 Event* eventL;
944 Event* eventRSync; 944 Event* eventRSync;
945 Event* eventLSync; 945 Event* eventLSync;
946 QPtrList<Event> eventRSyncSharp = remote->getExternLastSyncEvents(); 946 QPtrList<Event> eventRSyncSharp = remote->getExternLastSyncEvents();
947 QPtrList<Event> eventLSyncSharp = local->getExternLastSyncEvents(); 947 QPtrList<Event> eventLSyncSharp = local->getExternLastSyncEvents();
948 bool fullDateRange = false; 948 bool fullDateRange = false;
949 local->resetTempSyncStat(); 949 local->resetTempSyncStat();
950 mLastCalendarSync = QDateTime::currentDateTime(); 950 mLastCalendarSync = QDateTime::currentDateTime();
951 QDateTime modifiedCalendar = mLastCalendarSync;; 951 QDateTime modifiedCalendar = mLastCalendarSync;;
952 eventLSync = getLastSyncEvent(); 952 eventLSync = getLastSyncEvent();
953 eventR = remote->event("last-syncEvent-"+mCurrentSyncName ); 953 eventR = remote->event("last-syncEvent-"+mCurrentSyncName );
954 if ( eventR ) { 954 if ( eventR ) {
955 eventRSync = (Event*) eventR->clone(); 955 eventRSync = (Event*) eventR->clone();
956 remote->deleteEvent(eventR ); 956 remote->deleteEvent(eventR );
957 957
958 } else { 958 } else {
959 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 959 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
960 eventRSync = (Event*)eventLSync->clone(); 960 eventRSync = (Event*)eventLSync->clone();
961 } else { 961 } else {
962 fullDateRange = true; 962 fullDateRange = true;
963 eventRSync = new Event(); 963 eventRSync = new Event();
964 eventRSync->setSummary(mCurrentSyncName + i18n(" - sync event")); 964 eventRSync->setSummary(mCurrentSyncName + i18n(" - sync event"));
965 eventRSync->setUid("last-syncEvent-"+mCurrentSyncName ); 965 eventRSync->setUid("last-syncEvent-"+mCurrentSyncName );
966 eventRSync->setDtStart( mLastCalendarSync ); 966 eventRSync->setDtStart( mLastCalendarSync );
967 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 7200 ) ); 967 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 7200 ) );
968 eventRSync->setCategories( i18n("SyncEvent") ); 968 eventRSync->setCategories( i18n("SyncEvent") );
969 } 969 }
970 } 970 }
971 if ( eventLSync->dtStart() == mLastCalendarSync ) 971 if ( eventLSync->dtStart() == mLastCalendarSync )
972 fullDateRange = true; 972 fullDateRange = true;
973 973
974 if ( ! fullDateRange ) { 974 if ( ! fullDateRange ) {
975 if ( eventLSync->dtStart() != eventRSync->dtStart() ) { 975 if ( eventLSync->dtStart() != eventRSync->dtStart() ) {
976 976
977 // qDebug("set fulldate to true %s %s" ,eventLSync->dtStart().toString().latin1(), eventRSync->dtStart().toString().latin1() ); 977 // qDebug("set fulldate to true %s %s" ,eventLSync->dtStart().toString().latin1(), eventRSync->dtStart().toString().latin1() );
978 //qDebug("%d %d %d %d ", eventLSync->dtStart().time().second(), eventLSync->dtStart().time().msec() , eventRSync->dtStart().time().second(), eventRSync->dtStart().time().msec()); 978 //qDebug("%d %d %d %d ", eventLSync->dtStart().time().second(), eventLSync->dtStart().time().msec() , eventRSync->dtStart().time().second(), eventRSync->dtStart().time().msec());
979 fullDateRange = true; 979 fullDateRange = true;
980 } 980 }
981 } 981 }
982 if ( fullDateRange ) 982 if ( fullDateRange )
983 mLastCalendarSync = QDateTime::currentDateTime().addDays( -100*365); 983 mLastCalendarSync = QDateTime::currentDateTime().addDays( -100*365);
984 else 984 else
985 mLastCalendarSync = eventLSync->dtStart(); 985 mLastCalendarSync = eventLSync->dtStart();
986 // for resyncing if own file has changed 986 // for resyncing if own file has changed
987 if ( mCurrentSyncDevice == "deleteaftersync" ) { 987 if ( mCurrentSyncDevice == "deleteaftersync" ) {
988 mLastCalendarSync = loadedFileVersion; 988 mLastCalendarSync = loadedFileVersion;
989 qDebug("setting mLastCalendarSync "); 989 qDebug("setting mLastCalendarSync ");
990 } 990 }
991 //qDebug("*************************** "); 991 //qDebug("*************************** ");
992 qDebug("mLastCalendarSync %s ",mLastCalendarSync.toString().latin1() ); 992 qDebug("mLastCalendarSync %s ",mLastCalendarSync.toString().latin1() );
993 QPtrList<Incidence> er = remote->rawIncidences(); 993 QPtrList<Incidence> er = remote->rawIncidences();
994 Incidence* inR = er.first(); 994 Incidence* inR = er.first();
995 Incidence* inL; 995 Incidence* inL;
996 QProgressBar bar( er.count(),0 ); 996 QProgressBar bar( er.count(),0 );
997 bar.setCaption (i18n("Syncing - close to abort!") ); 997 bar.setCaption (i18n("Syncing - close to abort!") );
998 998
999 int w = 300; 999 int w = 300;
1000 if ( QApplication::desktop()->width() < 320 ) 1000 if ( QApplication::desktop()->width() < 320 )
1001 w = 220; 1001 w = 220;
1002 int h = bar.sizeHint().height() ; 1002 int h = bar.sizeHint().height() ;
1003 int dw = QApplication::desktop()->width(); 1003 int dw = QApplication::desktop()->width();
1004 int dh = QApplication::desktop()->height(); 1004 int dh = QApplication::desktop()->height();
1005 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 1005 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
1006 bar.show(); 1006 bar.show();
1007 int modulo = (er.count()/10)+1; 1007 int modulo = (er.count()/10)+1;
1008 int incCounter = 0; 1008 int incCounter = 0;
1009 while ( inR ) { 1009 while ( inR ) {
1010 if ( ! bar.isVisible() ) 1010 if ( ! bar.isVisible() )
1011 return false; 1011 return false;
1012 if ( incCounter % modulo == 0 ) 1012 if ( incCounter % modulo == 0 )
1013 bar.setProgress( incCounter ); 1013 bar.setProgress( incCounter );
1014 ++incCounter; 1014 ++incCounter;
1015 uid = inR->uid(); 1015 uid = inR->uid();
1016 bool skipIncidence = false; 1016 bool skipIncidence = false;
1017 if ( uid.left(15) == QString("last-syncEvent-") ) 1017 if ( uid.left(15) == QString("last-syncEvent-") )
1018 skipIncidence = true; 1018 skipIncidence = true;
1019 QString idS; 1019 QString idS;
1020 qApp->processEvents(); 1020 qApp->processEvents();
1021 if ( !skipIncidence ) { 1021 if ( !skipIncidence ) {
1022 inL = local->incidence( uid ); 1022 inL = local->incidence( uid );
1023 if ( inL ) { // maybe conflict - same uid in both calendars 1023 if ( inL ) { // maybe conflict - same uid in both calendars
1024 int maxrev = inL->revision(); 1024 int maxrev = inL->revision();
1025 if ( maxrev < inR->revision() ) 1025 if ( maxrev < inR->revision() )
1026 maxrev = inR->revision(); 1026 maxrev = inR->revision();
1027 if ( (take = takeEvent( inL, inR, mode, fullDateRange )) > 0 ) { 1027 if ( (take = takeEvent( inL, inR, mode, fullDateRange )) > 0 ) {
1028 //qDebug("take %d %s ", take, inL->summary().latin1()); 1028 //qDebug("take %d %s ", take, inL->summary().latin1());
1029 if ( take == 3 ) 1029 if ( take == 3 )
1030 return false; 1030 return false;
1031 if ( take == 1 ) {// take local 1031 if ( take == 1 ) {// take local
1032 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) 1032 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL )
1033 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) ); 1033 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) );
1034 else 1034 else
1035 idS = inR->IDStr(); 1035 idS = inR->IDStr();
1036 remote->deleteIncidence( inR ); 1036 remote->deleteIncidence( inR );
1037 if ( inL->revision() < maxrev ) 1037 if ( inL->revision() < maxrev )
1038 inL->setRevision( maxrev ); 1038 inL->setRevision( maxrev );
1039 inR = inL->clone(); 1039 inR = inL->clone();
1040 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL ); 1040 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL );
1041 if ( mGlobalSyncMode != SYNC_MODE_EXTERNAL ) 1041 if ( mGlobalSyncMode != SYNC_MODE_EXTERNAL )
1042 inR->setIDStr( idS ); 1042 inR->setIDStr( idS );
1043 remote->addIncidence( inR ); 1043 remote->addIncidence( inR );
1044 ++changedRemote; 1044 ++changedRemote;
1045 } else { 1045 } else {
1046 if ( inR->revision() < maxrev ) 1046 if ( inR->revision() < maxrev )
1047 inR->setRevision( maxrev ); 1047 inR->setRevision( maxrev );
1048 idS = inL->IDStr(); 1048 idS = inL->IDStr();
1049 local->deleteIncidence( inL ); 1049 local->deleteIncidence( inL );
1050 inL = inR->clone(); 1050 inL = inR->clone();
1051 inL->setIDStr( idS ); 1051 inL->setIDStr( idS );
1052 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1052 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1053 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) ); 1053 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) );
1054 inL->setID( mCurrentSyncDevice, inR->getID(mCurrentSyncDevice) ); 1054 inL->setID( mCurrentSyncDevice, inR->getID(mCurrentSyncDevice) );
1055 } 1055 }
1056 local->addIncidence( inL ); 1056 local->addIncidence( inL );
1057 ++changedLocal; 1057 ++changedLocal;
1058 } 1058 }
1059 } 1059 }
1060 } else { // no conflict 1060 } else { // no conflict
1061 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1061 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1062 QString des = eventLSync->description(); 1062 QString des = eventLSync->description();
1063 QString pref = "e"; 1063 QString pref = "e";
1064 if ( inR->type() == "Todo" ) 1064 if ( inR->type() == "Todo" )
1065 pref = "t"; 1065 pref = "t";
1066 if ( des.find(pref+ inR->getID(mCurrentSyncDevice) +"," ) >= 0 && mode != 5) { // delete it 1066 if ( des.find(pref+ inR->getID(mCurrentSyncDevice) +"," ) >= 0 && mode != 5) { // delete it
1067 inR->setTempSyncStat( SYNC_TEMPSTATE_DELETE ); 1067 inR->setTempSyncStat( SYNC_TEMPSTATE_DELETE );
1068 //remote->deleteIncidence( inR ); 1068 //remote->deleteIncidence( inR );
1069 ++deletedEventR; 1069 ++deletedEventR;
1070 } else { 1070 } else {
1071 inR->setLastModified( modifiedCalendar ); 1071 inR->setLastModified( modifiedCalendar );
1072 inL = inR->clone(); 1072 inL = inR->clone();
1073 local->addIncidence( inL ); 1073 local->addIncidence( inL );
1074 ++addedEvent; 1074 ++addedEvent;
1075 } 1075 }
1076 } else { 1076 } else {
1077 if ( inR->lastModified() > mLastCalendarSync || mode == 5 ) { 1077 if ( inR->lastModified() > mLastCalendarSync || mode == 5 ) {
1078 inR->setLastModified( modifiedCalendar ); 1078 inR->setLastModified( modifiedCalendar );
1079 local->addIncidence( inR->clone() ); 1079 local->addIncidence( inR->clone() );
1080 ++addedEvent; 1080 ++addedEvent;
1081 } else { 1081 } else {
1082 checkExternSyncEvent(eventRSyncSharp, inR); 1082 checkExternSyncEvent(eventRSyncSharp, inR);
1083 remote->deleteIncidence( inR ); 1083 remote->deleteIncidence( inR );
1084 ++deletedEventR; 1084 ++deletedEventR;
1085 } 1085 }
1086 } 1086 }
1087 } 1087 }
1088 } 1088 }
1089 inR = er.next(); 1089 inR = er.next();
1090 } 1090 }
1091 QPtrList<Incidence> el = local->rawIncidences(); 1091 QPtrList<Incidence> el = local->rawIncidences();
1092 inL = el.first(); 1092 inL = el.first();
1093 modulo = (el.count()/10)+1; 1093 modulo = (el.count()/10)+1;
1094 bar.setCaption (i18n("Add / remove events") ); 1094 bar.setCaption (i18n("Add / remove events") );
1095 bar.setTotalSteps ( el.count() ) ; 1095 bar.setTotalSteps ( el.count() ) ;
1096 bar.show(); 1096 bar.show();
1097 incCounter = 0; 1097 incCounter = 0;
1098 1098
1099 while ( inL ) { 1099 while ( inL ) {
1100 1100
1101 qApp->processEvents(); 1101 qApp->processEvents();
1102 if ( ! bar.isVisible() ) 1102 if ( ! bar.isVisible() )
1103 return false; 1103 return false;
1104 if ( incCounter % modulo == 0 ) 1104 if ( incCounter % modulo == 0 )
1105 bar.setProgress( incCounter ); 1105 bar.setProgress( incCounter );
1106 ++incCounter; 1106 ++incCounter;
1107 uid = inL->uid(); 1107 uid = inL->uid();
1108 bool skipIncidence = false; 1108 bool skipIncidence = false;
1109 if ( uid.left(15) == QString("last-syncEvent-") ) 1109 if ( uid.left(15) == QString("last-syncEvent-") )
1110 skipIncidence = true; 1110 skipIncidence = true;
1111 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL && inL->type() == "Journal" ) 1111 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL && inL->type() == "Journal" )
1112 skipIncidence = true; 1112 skipIncidence = true;
1113 if ( !skipIncidence ) { 1113 if ( !skipIncidence ) {
1114 inR = remote->incidence( uid ); 1114 inR = remote->incidence( uid );
1115 if ( ! inR ) { 1115 if ( ! inR ) {
1116 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1116 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1117 if ( !inL->getID(mCurrentSyncDevice).isEmpty() && mode != 4 ) { 1117 if ( !inL->getID(mCurrentSyncDevice).isEmpty() && mode != 4 ) {
1118 checkExternSyncEvent(eventLSyncSharp, inL); 1118 checkExternSyncEvent(eventLSyncSharp, inL);
1119 local->deleteIncidence( inL ); 1119 local->deleteIncidence( inL );
1120 ++deletedEventL; 1120 ++deletedEventL;
1121 } else { 1121 } else {
1122 if ( ! KOPrefs::instance()->mWriteBackExistingOnly ) { 1122 if ( ! KOPrefs::instance()->mWriteBackExistingOnly ) {
1123 inL->removeID(mCurrentSyncDevice ); 1123 inL->removeID(mCurrentSyncDevice );
1124 ++addedEventR; 1124 ++addedEventR;
1125 //qDebug("remote added Incidence %s ", inL->summary().latin1()); 1125 //qDebug("remote added Incidence %s ", inL->summary().latin1());
1126 inL->setLastModified( modifiedCalendar ); 1126 inL->setLastModified( modifiedCalendar );
1127 inR = inL->clone(); 1127 inR = inL->clone();
1128 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL ); 1128 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL );
1129 remote->addIncidence( inR ); 1129 remote->addIncidence( inR );
1130 } 1130 }
1131 } 1131 }
1132 } else { 1132 } else {
1133 if ( inL->lastModified() < mLastCalendarSync && mode != 4 ) { 1133 if ( inL->lastModified() < mLastCalendarSync && mode != 4 ) {
1134 checkExternSyncEvent(eventLSyncSharp, inL); 1134 checkExternSyncEvent(eventLSyncSharp, inL);
1135 local->deleteIncidence( inL ); 1135 local->deleteIncidence( inL );
1136 ++deletedEventL; 1136 ++deletedEventL;
1137 } else { 1137 } else {
1138 if ( ! KOPrefs::instance()->mWriteBackExistingOnly ) { 1138 if ( ! KOPrefs::instance()->mWriteBackExistingOnly ) {
1139 ++addedEventR; 1139 ++addedEventR;
1140 inL->setLastModified( modifiedCalendar ); 1140 inL->setLastModified( modifiedCalendar );
1141 remote->addIncidence( inL->clone() ); 1141 remote->addIncidence( inL->clone() );
1142 } 1142 }
1143 } 1143 }
1144 } 1144 }
1145 } 1145 }
1146 } 1146 }
1147 inL = el.next(); 1147 inL = el.next();
1148 } 1148 }
1149 int delFut = 0; 1149 int delFut = 0;
1150 if ( KOPrefs::instance()->mWriteBackInFuture ) { 1150 if ( KOPrefs::instance()->mWriteBackInFuture ) {
1151 er = remote->rawIncidences(); 1151 er = remote->rawIncidences();
1152 inR = er.first(); 1152 inR = er.first();
1153 QDateTime dt; 1153 QDateTime dt;
1154 QDateTime cur = QDateTime::currentDateTime(); 1154 QDateTime cur = QDateTime::currentDateTime().addDays( -7 );
1155 QDateTime end = cur.addSecs( KOPrefs::instance()->mWriteBackInFuture * 3600 *24 *7 ); 1155 QDateTime end = cur.addDays( (KOPrefs::instance()->mWriteBackInFuture +1 ) *7 );
1156 while ( inR ) { 1156 while ( inR ) {
1157 if ( inR->type() == "Todo" ) { 1157 if ( inR->type() == "Todo" ) {
1158 Todo * t = (Todo*)inR; 1158 Todo * t = (Todo*)inR;
1159 if ( t->hasDueDate() ) 1159 if ( t->hasDueDate() )
1160 dt = t->dtDue(); 1160 dt = t->dtDue();
1161 else 1161 else
1162 dt = cur.addSecs( 62 ); 1162 dt = cur.addSecs( 62 );
1163 } 1163 }
1164 else if (inR->type() == "Event" ) { 1164 else if (inR->type() == "Event" ) {
1165 bool ok; 1165 bool ok;
1166 dt = inR->getNextOccurence( cur, &ok ); 1166 dt = inR->getNextOccurence( cur, &ok );
1167 if ( !ok ) 1167 if ( !ok )
1168 dt = cur.addSecs( -62 ); 1168 dt = cur.addSecs( -62 );
1169 } 1169 }
1170 else 1170 else
1171 dt = inR->dtStart(); 1171 dt = inR->dtStart();
1172 if ( dt < cur || dt > end ) { 1172 if ( dt < cur || dt > end ) {
1173 remote->deleteIncidence( inR ); 1173 remote->deleteIncidence( inR );
1174 ++delFut; 1174 ++delFut;
1175 } 1175 }
1176 inR = er.next(); 1176 inR = er.next();
1177 } 1177 }
1178 } 1178 }
1179 bar.hide(); 1179 bar.hide();
1180 mLastCalendarSync = QDateTime::currentDateTime().addSecs( 1 ); 1180 mLastCalendarSync = QDateTime::currentDateTime().addSecs( 1 );
1181 eventLSync->setReadOnly( false ); 1181 eventLSync->setReadOnly( false );
1182 eventLSync->setDtStart( mLastCalendarSync ); 1182 eventLSync->setDtStart( mLastCalendarSync );
1183 eventRSync->setDtStart( mLastCalendarSync ); 1183 eventRSync->setDtStart( mLastCalendarSync );
1184 eventLSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) ); 1184 eventLSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) );
1185 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) ); 1185 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) );
1186 eventRSync->setLocation( i18n("Remote from: ")+mCurrentSyncName ) ; 1186 eventRSync->setLocation( i18n("Remote from: ")+mCurrentSyncName ) ;
1187 eventLSync->setLocation(i18n("Local from: ") + mCurrentSyncName ); 1187 eventLSync->setLocation(i18n("Local from: ") + mCurrentSyncName );
1188 eventLSync->setReadOnly( true ); 1188 eventLSync->setReadOnly( true );
1189 if ( mGlobalSyncMode == SYNC_MODE_NORMAL) 1189 if ( mGlobalSyncMode == SYNC_MODE_NORMAL)
1190 remote->addEvent( eventRSync ); 1190 remote->addEvent( eventRSync );
1191 QString mes; 1191 QString mes;
1192 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 ); 1192 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 );
1193 QString delmess; 1193 QString delmess;
1194 if ( delFut ) { 1194 if ( delFut ) {
1195 delmess.sprintf( i18n("%d items skipped on remote,\nbecause they are in the past or\nmore than %d weeks in the future.\n"),delFut, KOPrefs::instance()->mWriteBackInFuture ); 1195 delmess.sprintf( i18n("%d items skipped on remote,\nbecause they are in the past or\nmore than %d weeks in the future.\n"),delFut, KOPrefs::instance()->mWriteBackInFuture );
1196 mes += delmess; 1196 mes += delmess;
1197 } 1197 }
1198 if ( KOPrefs::instance()->mShowSyncSummary ) { 1198 if ( KOPrefs::instance()->mShowSyncSummary ) {
1199 KMessageBox::information(this, mes, i18n("KO/Pi Synchronization") ); 1199 KMessageBox::information(this, mes, i18n("KO/Pi Synchronization") );
1200 } 1200 }
1201 qDebug( mes ); 1201 qDebug( mes );
1202 mCalendar->checkAlarmForIncidence( 0, true ); 1202 mCalendar->checkAlarmForIncidence( 0, true );
1203 return syncOK; 1203 return syncOK;
1204} 1204}
1205 1205
1206void CalendarView::setSyncDevice( QString s ) 1206void CalendarView::setSyncDevice( QString s )
1207{ 1207{
1208 mCurrentSyncDevice= s; 1208 mCurrentSyncDevice= s;
1209} 1209}
1210void CalendarView::setSyncName( QString s ) 1210void CalendarView::setSyncName( QString s )
1211{ 1211{
1212 mCurrentSyncName= s; 1212 mCurrentSyncName= s;
1213} 1213}
1214bool CalendarView::syncCalendar(QString filename, int mode) 1214bool CalendarView::syncCalendar(QString filename, int mode)
1215{ 1215{
1216 mGlobalSyncMode = SYNC_MODE_NORMAL; 1216 mGlobalSyncMode = SYNC_MODE_NORMAL;
1217 CalendarLocal* calendar = new CalendarLocal(); 1217 CalendarLocal* calendar = new CalendarLocal();
1218 calendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId); 1218 calendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId);
1219 FileStorage* storage = new FileStorage( calendar ); 1219 FileStorage* storage = new FileStorage( calendar );
1220 bool syncOK = false; 1220 bool syncOK = false;
1221 storage->setFileName( filename ); 1221 storage->setFileName( filename );
1222 // qDebug("loading ... "); 1222 // qDebug("loading ... ");
1223 if ( storage->load(KOPrefs::instance()->mUseQuicksave) ) { 1223 if ( storage->load(KOPrefs::instance()->mUseQuicksave) ) {
1224 getEventViewerDialog()->setSyncMode( true ); 1224 getEventViewerDialog()->setSyncMode( true );
1225 syncOK = synchronizeCalendar( mCalendar, calendar, mode ); 1225 syncOK = synchronizeCalendar( mCalendar, calendar, mode );
1226 getEventViewerDialog()->setSyncMode( false ); 1226 getEventViewerDialog()->setSyncMode( false );
1227 if ( syncOK ) { 1227 if ( syncOK ) {
1228 if ( KOPrefs::instance()->mWriteBackFile ) 1228 if ( KOPrefs::instance()->mWriteBackFile )
1229 { 1229 {
1230 storage->setSaveFormat( new ICalFormat( KOPrefs::instance()->mUseQuicksave) ); 1230 storage->setSaveFormat( new ICalFormat( KOPrefs::instance()->mUseQuicksave) );
1231 storage->save(); 1231 storage->save();
1232 } 1232 }
1233 } 1233 }
1234 setModified( true ); 1234 setModified( true );
1235 } 1235 }
1236 delete storage; 1236 delete storage;
1237 delete calendar; 1237 delete calendar;
1238 if ( syncOK ) 1238 if ( syncOK )
1239 updateView(); 1239 updateView();
1240 return syncOK; 1240 return syncOK;
1241} 1241}
1242void CalendarView::syncPhone() 1242void CalendarView::syncPhone()
1243{ 1243{
1244 syncExternal( 1 ); 1244 syncExternal( 1 );
1245} 1245}
1246void CalendarView::syncExternal( int mode ) 1246void CalendarView::syncExternal( int mode )
1247{ 1247{
1248 mGlobalSyncMode = SYNC_MODE_EXTERNAL; 1248 mGlobalSyncMode = SYNC_MODE_EXTERNAL;
1249 //mCurrentSyncDevice = "sharp-DTM"; 1249 //mCurrentSyncDevice = "sharp-DTM";
1250 if ( KOPrefs::instance()->mAskForPreferences ) 1250 if ( KOPrefs::instance()->mAskForPreferences )
1251 edit_sync_options(); 1251 edit_sync_options();
1252 qApp->processEvents(); 1252 qApp->processEvents();
1253 CalendarLocal* calendar = new CalendarLocal(); 1253 CalendarLocal* calendar = new CalendarLocal();
1254 calendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId); 1254 calendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId);
1255 bool syncOK = false; 1255 bool syncOK = false;
1256 bool loadSuccess = false; 1256 bool loadSuccess = false;
1257 PhoneFormat* phoneFormat = 0; 1257 PhoneFormat* phoneFormat = 0;
1258#ifndef DESKTOP_VERSION 1258#ifndef DESKTOP_VERSION
1259 SharpFormat* sharpFormat = 0; 1259 SharpFormat* sharpFormat = 0;
1260 if ( mode == 0 ) { // sharp 1260 if ( mode == 0 ) { // sharp
1261 sharpFormat = new SharpFormat () ; 1261 sharpFormat = new SharpFormat () ;
1262 loadSuccess = sharpFormat->load( calendar, mCalendar ); 1262 loadSuccess = sharpFormat->load( calendar, mCalendar );
1263 1263
1264 } else 1264 } else
1265#endif 1265#endif
1266 if ( mode == 1 ) { // phone 1266 if ( mode == 1 ) { // phone
1267 phoneFormat = new PhoneFormat (mCurrentSyncDevice, 1267 phoneFormat = new PhoneFormat (mCurrentSyncDevice,
1268 KOPrefs::instance()->mPhoneDevice, 1268 KOPrefs::instance()->mPhoneDevice,
1269 KOPrefs::instance()->mPhoneConnection, 1269 KOPrefs::instance()->mPhoneConnection,
1270 KOPrefs::instance()->mPhoneModel); 1270 KOPrefs::instance()->mPhoneModel);
1271 loadSuccess = phoneFormat->load( calendar,mCalendar); 1271 loadSuccess = phoneFormat->load( calendar,mCalendar);
1272 1272
1273 } else 1273 } else
1274 return; 1274 return;
1275 if ( loadSuccess ) { 1275 if ( loadSuccess ) {
1276 getEventViewerDialog()->setSyncMode( true ); 1276 getEventViewerDialog()->setSyncMode( true );
1277 syncOK = synchronizeCalendar( mCalendar, calendar, KOPrefs::instance()->mSyncAlgoPrefs ); 1277 syncOK = synchronizeCalendar( mCalendar, calendar, KOPrefs::instance()->mSyncAlgoPrefs );
1278 getEventViewerDialog()->setSyncMode( false ); 1278 getEventViewerDialog()->setSyncMode( false );
1279 qApp->processEvents(); 1279 qApp->processEvents();
1280 if ( syncOK ) { 1280 if ( syncOK ) {
1281 if ( KOPrefs::instance()->mWriteBackFile ) 1281 if ( KOPrefs::instance()->mWriteBackFile )
1282 { 1282 {
1283 QPtrList<Incidence> iL = mCalendar->rawIncidences(); 1283 QPtrList<Incidence> iL = mCalendar->rawIncidences();
1284 Incidence* inc = iL.first(); 1284 Incidence* inc = iL.first();
1285 if ( phoneFormat ) { 1285 if ( phoneFormat ) {
1286 while ( inc ) { 1286 while ( inc ) {
1287 inc->removeID(mCurrentSyncDevice); 1287 inc->removeID(mCurrentSyncDevice);
1288 inc = iL.next(); 1288 inc = iL.next();
1289 } 1289 }
1290 } 1290 }
1291#ifndef DESKTOP_VERSION 1291#ifndef DESKTOP_VERSION
1292 if ( sharpFormat ) 1292 if ( sharpFormat )
1293 sharpFormat->save(calendar); 1293 sharpFormat->save(calendar);
1294#endif 1294#endif
1295 if ( phoneFormat ) 1295 if ( phoneFormat )
1296 phoneFormat->save(calendar); 1296 phoneFormat->save(calendar);
1297 iL = calendar->rawIncidences(); 1297 iL = calendar->rawIncidences();
1298 inc = iL.first(); 1298 inc = iL.first();
1299 Incidence* loc; 1299 Incidence* loc;
1300 while ( inc ) { 1300 while ( inc ) {
1301 if ( inc->tempSyncStat() == SYNC_TEMPSTATE_NEW_ID ) { 1301 if ( inc->tempSyncStat() == SYNC_TEMPSTATE_NEW_ID ) {
1302 loc = mCalendar->incidence(inc->uid() ); 1302 loc = mCalendar->incidence(inc->uid() );
1303 if ( loc ) { 1303 if ( loc ) {
1304 loc->setID(mCurrentSyncDevice, inc->getID(mCurrentSyncDevice) ); 1304 loc->setID(mCurrentSyncDevice, inc->getID(mCurrentSyncDevice) );
1305 loc->setCsum( mCurrentSyncDevice, inc->getCsum(mCurrentSyncDevice) ); 1305 loc->setCsum( mCurrentSyncDevice, inc->getCsum(mCurrentSyncDevice) );
1306 } 1306 }
1307 } 1307 }
1308 inc = iL.next(); 1308 inc = iL.next();
1309 } 1309 }
1310 Incidence* lse = getLastSyncEvent(); 1310 Incidence* lse = getLastSyncEvent();
1311 if ( lse ) { 1311 if ( lse ) {
1312 lse->setReadOnly( false ); 1312 lse->setReadOnly( false );
1313 lse->setDescription( "" ); 1313 lse->setDescription( "" );
1314 lse->setReadOnly( true ); 1314 lse->setReadOnly( true );
1315 } 1315 }
1316 } 1316 }
1317 } 1317 }
1318 setModified( true ); 1318 setModified( true );
1319 } else { 1319 } else {
1320 QString question = i18n("Sorry, the database access\ncommand failed!\n\nNothing synced!\n") ; 1320 QString question = i18n("Sorry, the database access\ncommand failed!\n\nNothing synced!\n") ;
1321 QMessageBox::information( 0, i18n("KO/Pi Import - ERROR"), 1321 QMessageBox::information( 0, i18n("KO/Pi Import - ERROR"),
1322 question, i18n("Ok")) ; 1322 question, i18n("Ok")) ;
1323 1323
1324 } 1324 }
1325 delete calendar; 1325 delete calendar;
1326 updateView(); 1326 updateView();
1327 return ;//syncOK; 1327 return ;//syncOK;
1328 1328
1329} 1329}
1330void CalendarView::syncSharp() 1330void CalendarView::syncSharp()
1331{ 1331{
1332 syncExternal( 0 ); 1332 syncExternal( 0 );
1333 1333
1334} 1334}
1335 1335
1336 1336
1337//#include <kabc/stdaddressbook.h> 1337//#include <kabc/stdaddressbook.h>
1338bool CalendarView::importBday() 1338bool CalendarView::importBday()
1339{ 1339{
1340#if 0 1340#if 0
1341 KABC::StdAddressBook* AddressBook = KABC::StdAddressBook::self( true ); 1341 KABC::StdAddressBook* AddressBook = KABC::StdAddressBook::self( true );
1342 KABC::AddressBook::Iterator it; 1342 KABC::AddressBook::Iterator it;
1343 int count = 0; 1343 int count = 0;
1344 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) { 1344 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) {
1345 ++count; 1345 ++count;
1346 } 1346 }
1347 QProgressBar bar(count,0 ); 1347 QProgressBar bar(count,0 );
1348 int w = 300; 1348 int w = 300;
1349 if ( QApplication::desktop()->width() < 320 ) 1349 if ( QApplication::desktop()->width() < 320 )
1350 w = 220; 1350 w = 220;
1351 int h = bar.sizeHint().height() ; 1351 int h = bar.sizeHint().height() ;
1352 int dw = QApplication::desktop()->width(); 1352 int dw = QApplication::desktop()->width();
1353 int dh = QApplication::desktop()->height(); 1353 int dh = QApplication::desktop()->height();
1354 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 1354 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
1355 bar.show(); 1355 bar.show();
1356 bar.setCaption (i18n("Reading addressbook - close to abort!") ); 1356 bar.setCaption (i18n("Reading addressbook - close to abort!") );
1357 qApp->processEvents(); 1357 qApp->processEvents();
1358 count = 0; 1358 count = 0;
1359 int addCount = 0; 1359 int addCount = 0;
1360 KCal::Attendee* a = 0; 1360 KCal::Attendee* a = 0;
1361 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) { 1361 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) {
1362 if ( ! bar.isVisible() ) 1362 if ( ! bar.isVisible() )
1363 return false; 1363 return false;
1364 bar.setProgress( count++ ); 1364 bar.setProgress( count++ );
1365 qApp->processEvents(); 1365 qApp->processEvents();
1366 //qDebug("add BDay %s %s", (*it).realName().latin1(),(*it).birthday().date().toString().latin1() ); 1366 //qDebug("add BDay %s %s", (*it).realName().latin1(),(*it).birthday().date().toString().latin1() );
1367 if ( (*it).birthday().date().isValid() ){ 1367 if ( (*it).birthday().date().isValid() ){
1368 a = new KCal::Attendee( (*it).realName(), (*it).preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,(*it).uid()) ; 1368 a = new KCal::Attendee( (*it).realName(), (*it).preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,(*it).uid()) ;
1369 if ( addAnniversary( (*it).birthday().date(), (*it).assembledName(), a, true ) ) 1369 if ( addAnniversary( (*it).birthday().date(), (*it).assembledName(), a, true ) )
1370 ++addCount; 1370 ++addCount;
1371 } 1371 }
1372 QDate anni = KGlobal::locale()->readDate( (*it).custom("KADDRESSBOOK", "X-Anniversary" ), "%Y-%m-%d"); 1372 QDate anni = KGlobal::locale()->readDate( (*it).custom("KADDRESSBOOK", "X-Anniversary" ), "%Y-%m-%d");
1373 if ( anni.isValid() ){ 1373 if ( anni.isValid() ){
1374 a = new KCal::Attendee( (*it).realName(), (*it).preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,(*it).uid()) ; 1374 a = new KCal::Attendee( (*it).realName(), (*it).preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,(*it).uid()) ;
1375 if ( addAnniversary( anni, (*it).assembledName(), a, false ) ) 1375 if ( addAnniversary( anni, (*it).assembledName(), a, false ) )
1376 ++addCount; 1376 ++addCount;
1377 } 1377 }
1378 } 1378 }
1379 updateView(); 1379 updateView();
1380 topLevelWidget()->setCaption(QString::number( addCount )+ i18n(" birthdays/anniversaries added!")); 1380 topLevelWidget()->setCaption(QString::number( addCount )+ i18n(" birthdays/anniversaries added!"));
1381#endif 1381#endif
1382 return true; 1382 return true;
1383} 1383}
1384 1384
1385bool CalendarView::addAnniversary( QDate date, QString name, KCal::Attendee* a, bool birthday) 1385bool CalendarView::addAnniversary( QDate date, QString name, KCal::Attendee* a, bool birthday)
1386{ 1386{
1387 //qDebug("addAnni "); 1387 //qDebug("addAnni ");
1388 Event * ev = new Event(); 1388 Event * ev = new Event();
1389 if ( a ) { 1389 if ( a ) {
1390 ev->addAttendee( a ); 1390 ev->addAttendee( a );
1391 } 1391 }
1392 QString kind; 1392 QString kind;
1393 if ( birthday ) 1393 if ( birthday )
1394 kind = i18n( "Birthday" ); 1394 kind = i18n( "Birthday" );
1395 else 1395 else
1396 kind = i18n( "Anniversary" ); 1396 kind = i18n( "Anniversary" );
1397 ev->setSummary( name + " - " + kind ); 1397 ev->setSummary( name + " - " + kind );
1398 ev->setOrganizer( "nobody@nowhere" ); 1398 ev->setOrganizer( "nobody@nowhere" );
1399 ev->setCategories( kind ); 1399 ev->setCategories( kind );
1400 ev->setDtStart( QDateTime(date) ); 1400 ev->setDtStart( QDateTime(date) );
1401 ev->setDtEnd( QDateTime(date) ); 1401 ev->setDtEnd( QDateTime(date) );
1402 ev->setFloats( true ); 1402 ev->setFloats( true );
1403 Recurrence * rec = ev->recurrence(); 1403 Recurrence * rec = ev->recurrence();
1404 rec->setYearly(Recurrence::rYearlyMonth,1,-1); 1404 rec->setYearly(Recurrence::rYearlyMonth,1,-1);
1405 rec->addYearlyNum( date.month() ); 1405 rec->addYearlyNum( date.month() );
1406 if ( !mCalendar->addAnniversaryNoDup( ev ) ) { 1406 if ( !mCalendar->addAnniversaryNoDup( ev ) ) {
1407 delete ev; 1407 delete ev;
1408 return false; 1408 return false;
1409 } 1409 }
1410 return true; 1410 return true;
1411 1411
1412} 1412}
1413bool CalendarView::importQtopia( const QString &categories, 1413bool CalendarView::importQtopia( const QString &categories,
1414 const QString &datebook, 1414 const QString &datebook,
1415 const QString &todolist ) 1415 const QString &todolist )
1416{ 1416{
1417 1417
1418 QtopiaFormat qtopiaFormat; 1418 QtopiaFormat qtopiaFormat;
1419 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories)); 1419 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories));
1420 if ( !categories.isEmpty() ) qtopiaFormat.load( mCalendar, categories ); 1420 if ( !categories.isEmpty() ) qtopiaFormat.load( mCalendar, categories );
1421 if ( !datebook.isEmpty() ) qtopiaFormat.load( mCalendar, datebook ); 1421 if ( !datebook.isEmpty() ) qtopiaFormat.load( mCalendar, datebook );
1422 if ( !todolist.isEmpty() ) qtopiaFormat.load( mCalendar, todolist ); 1422 if ( !todolist.isEmpty() ) qtopiaFormat.load( mCalendar, todolist );
1423 1423
1424 updateView(); 1424 updateView();
1425 return true; 1425 return true;
1426 1426
1427#if 0 1427#if 0
1428 mGlobalSyncMode = SYNC_MODE_QTOPIA; 1428 mGlobalSyncMode = SYNC_MODE_QTOPIA;
1429 mCurrentSyncDevice = "qtopia-XML"; 1429 mCurrentSyncDevice = "qtopia-XML";
1430 if ( KOPrefs::instance()->mAskForPreferences ) 1430 if ( KOPrefs::instance()->mAskForPreferences )
1431 edit_sync_options(); 1431 edit_sync_options();
1432 qApp->processEvents(); 1432 qApp->processEvents();
1433 CalendarLocal* calendar = new CalendarLocal(); 1433 CalendarLocal* calendar = new CalendarLocal();
1434 calendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId); 1434 calendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId);
1435 bool syncOK = false; 1435 bool syncOK = false;
1436 QtopiaFormat qtopiaFormat; 1436 QtopiaFormat qtopiaFormat;
1437 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories)); 1437 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories));
1438 bool loadOk = true; 1438 bool loadOk = true;
1439 if ( !categories.isEmpty() ) 1439 if ( !categories.isEmpty() )
1440 loadOk = qtopiaFormat.load( calendar, categories ); 1440 loadOk = qtopiaFormat.load( calendar, categories );
1441 if ( loadOk && !datebook.isEmpty() ) 1441 if ( loadOk && !datebook.isEmpty() )
1442 loadOk = qtopiaFormat.load( calendar, datebook ); 1442 loadOk = qtopiaFormat.load( calendar, datebook );
1443 if ( loadOk && !todolist.isEmpty() ) 1443 if ( loadOk && !todolist.isEmpty() )
1444 loadOk = qtopiaFormat.load( calendar, todolist ); 1444 loadOk = qtopiaFormat.load( calendar, todolist );
1445 1445
1446 if ( loadOk ) { 1446 if ( loadOk ) {
1447 getEventViewerDialog()->setSyncMode( true ); 1447 getEventViewerDialog()->setSyncMode( true );
1448 syncOK = synchronizeCalendar( mCalendar, calendar, KOPrefs::instance()->mSyncAlgoPrefs ); 1448 syncOK = synchronizeCalendar( mCalendar, calendar, KOPrefs::instance()->mSyncAlgoPrefs );
1449 getEventViewerDialog()->setSyncMode( false ); 1449 getEventViewerDialog()->setSyncMode( false );
1450 qApp->processEvents(); 1450 qApp->processEvents();
1451 if ( syncOK ) { 1451 if ( syncOK ) {
1452 if ( KOPrefs::instance()->mWriteBackFile ) 1452 if ( KOPrefs::instance()->mWriteBackFile )
1453 { 1453 {
1454 // write back XML file 1454 // write back XML file
1455 1455
1456 } 1456 }
1457 setModified( true ); 1457 setModified( true );
1458 } 1458 }
1459 } else { 1459 } else {
1460 QString question = i18n("Sorry, the file loading\ncommand failed!\n\nNothing synced!\n") ; 1460 QString question = i18n("Sorry, the file loading\ncommand failed!\n\nNothing synced!\n") ;
1461 QMessageBox::information( 0, i18n("KO/Pi Sync - ERROR"), 1461 QMessageBox::information( 0, i18n("KO/Pi Sync - ERROR"),
1462 question, i18n("Ok")) ; 1462 question, i18n("Ok")) ;
1463 } 1463 }
1464 delete calendar; 1464 delete calendar;
1465 updateView(); 1465 updateView();
1466 return syncOK; 1466 return syncOK;
1467 1467
1468 1468
1469#endif 1469#endif
1470 1470
1471} 1471}
1472 1472
1473void CalendarView::setSyncEventsReadOnly() 1473void CalendarView::setSyncEventsReadOnly()
1474{ 1474{
1475 Event * ev; 1475 Event * ev;
1476 QPtrList<Event> eL = mCalendar->rawEvents(); 1476 QPtrList<Event> eL = mCalendar->rawEvents();
1477 ev = eL.first(); 1477 ev = eL.first();
1478 while ( ev ) { 1478 while ( ev ) {
1479 if ( ev->uid().left(15) == QString("last-syncEvent-") ) 1479 if ( ev->uid().left(15) == QString("last-syncEvent-") )
1480 ev->setReadOnly( true ); 1480 ev->setReadOnly( true );
1481 ev = eL.next(); 1481 ev = eL.next();
1482 } 1482 }
1483} 1483}
1484bool CalendarView::openCalendar(QString filename, bool merge) 1484bool CalendarView::openCalendar(QString filename, bool merge)
1485{ 1485{
1486 1486
1487 if (filename.isEmpty()) { 1487 if (filename.isEmpty()) {
1488 return false; 1488 return false;
1489 } 1489 }
1490 1490
1491 if (!QFile::exists(filename)) { 1491 if (!QFile::exists(filename)) {
1492 KMessageBox::error(this,i18n("File does not exist:\n '%1'.").arg(filename)); 1492 KMessageBox::error(this,i18n("File does not exist:\n '%1'.").arg(filename));
1493 return false; 1493 return false;
1494 } 1494 }
1495 1495
1496 globalFlagBlockAgenda = 1; 1496 globalFlagBlockAgenda = 1;
1497 if (!merge) mCalendar->close(); 1497 if (!merge) mCalendar->close();
1498 1498
1499 mStorage->setFileName( filename ); 1499 mStorage->setFileName( filename );
1500 1500
1501 if ( mStorage->load(KOPrefs::instance()->mUseQuicksave) ) { 1501 if ( mStorage->load(KOPrefs::instance()->mUseQuicksave) ) {
1502 if ( merge ) ;//setModified( true ); 1502 if ( merge ) ;//setModified( true );
1503 else { 1503 else {
1504 //setModified( true ); 1504 //setModified( true );
1505 mViewManager->setDocumentId( filename ); 1505 mViewManager->setDocumentId( filename );
1506 mDialogManager->setDocumentId( filename ); 1506 mDialogManager->setDocumentId( filename );
1507 mTodoList->setDocumentId( filename ); 1507 mTodoList->setDocumentId( filename );
1508 } 1508 }
1509 globalFlagBlockAgenda = 2; 1509 globalFlagBlockAgenda = 2;
1510 // if ( getLastSyncEvent() ) 1510 // if ( getLastSyncEvent() )
1511 // getLastSyncEvent()->setReadOnly( true ); 1511 // getLastSyncEvent()->setReadOnly( true );
1512 mCalendar->reInitAlarmSettings(); 1512 mCalendar->reInitAlarmSettings();
1513 setSyncEventsReadOnly(); 1513 setSyncEventsReadOnly();
1514 updateUnmanagedViews(); 1514 updateUnmanagedViews();
1515 updateView(); 1515 updateView();
1516 if ( filename != MainWindow::defaultFileName() ) 1516 if ( filename != MainWindow::defaultFileName() )
1517 saveCalendar( MainWindow::defaultFileName() ); 1517 saveCalendar( MainWindow::defaultFileName() );
1518 loadedFileVersion = QDateTime::currentDateTime(); 1518 loadedFileVersion = QDateTime::currentDateTime();
1519 return true; 1519 return true;
1520 } else { 1520 } else {
1521 // while failing to load, the calendar object could 1521 // while failing to load, the calendar object could
1522 // have become partially populated. Clear it out. 1522 // have become partially populated. Clear it out.
1523 if ( !merge ) mCalendar->close(); 1523 if ( !merge ) mCalendar->close();
1524 1524
1525 KMessageBox::error(this,i18n("Couldn't load calendar\n '%1'.").arg(filename)); 1525 KMessageBox::error(this,i18n("Couldn't load calendar\n '%1'.").arg(filename));
1526 1526
1527 globalFlagBlockAgenda = 2; 1527 globalFlagBlockAgenda = 2;
1528 updateView(); 1528 updateView();
1529 } 1529 }
1530 return false; 1530 return false;
1531} 1531}
1532void CalendarView::setLoadedFileVersion(QDateTime dt) 1532void CalendarView::setLoadedFileVersion(QDateTime dt)
1533{ 1533{
1534 loadedFileVersion = dt; 1534 loadedFileVersion = dt;
1535} 1535}
1536bool CalendarView::checkFileChanged(QString fn) 1536bool CalendarView::checkFileChanged(QString fn)
1537{ 1537{
1538 QFileInfo finf ( fn ); 1538 QFileInfo finf ( fn );
1539 if ( !finf.exists() ) 1539 if ( !finf.exists() )
1540 return true; 1540 return true;
1541 QDateTime dt = finf.lastModified (); 1541 QDateTime dt = finf.lastModified ();
1542 if ( dt <= loadedFileVersion ) 1542 if ( dt <= loadedFileVersion )
1543 return false; 1543 return false;
1544 return true; 1544 return true;
1545 1545
1546} 1546}
1547bool CalendarView::checkFileVersion(QString fn) 1547bool CalendarView::checkFileVersion(QString fn)
1548{ 1548{
1549 QFileInfo finf ( fn ); 1549 QFileInfo finf ( fn );
1550 if ( !finf.exists() ) 1550 if ( !finf.exists() )
1551 return true; 1551 return true;
1552 QDateTime dt = finf.lastModified (); 1552 QDateTime dt = finf.lastModified ();
1553 //qDebug("loaded file version %s",loadedFileVersion.toString().latin1()); 1553 //qDebug("loaded file version %s",loadedFileVersion.toString().latin1());
1554 //qDebug("file on disk version %s",dt.toString().latin1()); 1554 //qDebug("file on disk version %s",dt.toString().latin1());
1555 if ( dt <= loadedFileVersion ) 1555 if ( dt <= loadedFileVersion )
1556 return true; 1556 return true;
1557 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)) , 1557 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)) ,
1558 i18n("KO/Pi Warning"),i18n("Overwrite"), 1558 i18n("KO/Pi Warning"),i18n("Overwrite"),
1559 i18n("Sync+save")); 1559 i18n("Sync+save"));
1560 1560
1561 if ( km == KMessageBox::Cancel ) 1561 if ( km == KMessageBox::Cancel )
1562 return false; 1562 return false;
1563 if ( km == KMessageBox::Yes ) 1563 if ( km == KMessageBox::Yes )
1564 return true; 1564 return true;
1565 1565
1566 setSyncDevice("deleteaftersync" ); 1566 setSyncDevice("deleteaftersync" );
1567 KOPrefs::instance()->mAskForPreferences = true; 1567 KOPrefs::instance()->mAskForPreferences = true;
1568 KOPrefs::instance()->mSyncAlgoPrefs = 3; 1568 KOPrefs::instance()->mSyncAlgoPrefs = 3;
1569 KOPrefs::instance()->mWriteBackFile = false; 1569 KOPrefs::instance()->mWriteBackFile = false;
1570 KOPrefs::instance()->mWriteBackExistingOnly = false; 1570 KOPrefs::instance()->mWriteBackExistingOnly = false;
1571 KOPrefs::instance()->mShowSyncSummary = false; 1571 KOPrefs::instance()->mShowSyncSummary = false;
1572 syncCalendar( fn, 3 ); 1572 syncCalendar( fn, 3 );
1573 Event * e = getLastSyncEvent(); 1573 Event * e = getLastSyncEvent();
1574 mCalendar->deleteEvent ( e ); 1574 mCalendar->deleteEvent ( e );
1575 updateView(); 1575 updateView();
1576 return true; 1576 return true;
1577} 1577}
1578 1578
1579bool CalendarView::saveCalendar( QString filename ) 1579bool CalendarView::saveCalendar( QString filename )
1580{ 1580{
1581 1581
1582 // Store back all unsaved data into calendar object 1582 // Store back all unsaved data into calendar object
1583 // qDebug("file %s %d ", filename.latin1() , mViewManager->currentView() ); 1583 // qDebug("file %s %d ", filename.latin1() , mViewManager->currentView() );
1584 if ( mViewManager->currentView() ) 1584 if ( mViewManager->currentView() )
1585 mViewManager->currentView()->flushView(); 1585 mViewManager->currentView()->flushView();
1586 1586
1587 //mStorage->setFileName( filename ); 1587 //mStorage->setFileName( filename );
1588 1588
1589 mStorage->setSaveFormat( new ICalFormat( KOPrefs::instance()->mUseQuicksave) ); 1589 mStorage->setSaveFormat( new ICalFormat( KOPrefs::instance()->mUseQuicksave) );
1590 mStorage->setFileName( filename ); 1590 mStorage->setFileName( filename );
1591 bool success; 1591 bool success;
1592 success = mStorage->save(); 1592 success = mStorage->save();
1593 if ( !success ) { 1593 if ( !success ) {
1594 return false; 1594 return false;
1595 } 1595 }
1596 1596
1597 return true; 1597 return true;
1598} 1598}
1599 1599
1600void CalendarView::closeCalendar() 1600void CalendarView::closeCalendar()
1601{ 1601{
1602 1602
1603 // child windows no longer valid 1603 // child windows no longer valid
1604 emit closingDown(); 1604 emit closingDown();
1605 1605
1606 mCalendar->close(); 1606 mCalendar->close();
1607 setModified(false); 1607 setModified(false);
1608 updateView(); 1608 updateView();
1609} 1609}
1610 1610
1611void CalendarView::archiveCalendar() 1611void CalendarView::archiveCalendar()
1612{ 1612{
1613 mDialogManager->showArchiveDialog(); 1613 mDialogManager->showArchiveDialog();
1614} 1614}
1615 1615
1616 1616
1617void CalendarView::readSettings() 1617void CalendarView::readSettings()
1618{ 1618{
1619 1619
1620 1620
1621 // mViewManager->showAgendaView(); 1621 // mViewManager->showAgendaView();
1622 QString str; 1622 QString str;
1623 //qDebug("CalendarView::readSettings() "); 1623 //qDebug("CalendarView::readSettings() ");
1624 // read settings from the KConfig, supplying reasonable 1624 // read settings from the KConfig, supplying reasonable
1625 // defaults where none are to be found 1625 // defaults where none are to be found
1626 KConfig *config = KOGlobals::config(); 1626 KConfig *config = KOGlobals::config();
1627#ifndef KORG_NOSPLITTER 1627#ifndef KORG_NOSPLITTER
1628 config->setGroup("KOrganizer Geometry"); 1628 config->setGroup("KOrganizer Geometry");
1629 1629
1630 QValueList<int> sizes = config->readIntListEntry("Separator1"); 1630 QValueList<int> sizes = config->readIntListEntry("Separator1");
1631 if (sizes.count() != 2) { 1631 if (sizes.count() != 2) {
1632 sizes << mDateNavigator->minimumSizeHint().width(); 1632 sizes << mDateNavigator->minimumSizeHint().width();
1633 sizes << 300; 1633 sizes << 300;
1634 } 1634 }
1635 mPanner->setSizes(sizes); 1635 mPanner->setSizes(sizes);
1636 1636
1637 sizes = config->readIntListEntry("Separator2"); 1637 sizes = config->readIntListEntry("Separator2");
1638 if ( ( mResourceView && sizes.count() == 4 ) || 1638 if ( ( mResourceView && sizes.count() == 4 ) ||
1639 ( !mResourceView && sizes.count() == 3 ) ) { 1639 ( !mResourceView && sizes.count() == 3 ) ) {
1640 mLeftSplitter->setSizes(sizes); 1640 mLeftSplitter->setSizes(sizes);
1641 } 1641 }
1642#endif 1642#endif
1643 globalFlagBlockAgenda = 1; 1643 globalFlagBlockAgenda = 1;
1644 mViewManager->showAgendaView(); 1644 mViewManager->showAgendaView();
1645 //mViewManager->readSettings( config ); 1645 //mViewManager->readSettings( config );
1646 mTodoList->restoreLayout(config,QString("Todo Layout")); 1646 mTodoList->restoreLayout(config,QString("Todo Layout"));
1647 readFilterSettings(config); 1647 readFilterSettings(config);
1648 config->setGroup( "Views" ); 1648 config->setGroup( "Views" );
1649 int dateCount = config->readNumEntry( "ShownDatesCount", 7 ); 1649 int dateCount = config->readNumEntry( "ShownDatesCount", 7 );
1650 if ( dateCount == 5 ) mNavigator->selectWorkWeek(); 1650 if ( dateCount == 5 ) mNavigator->selectWorkWeek();
1651 else if ( dateCount == 7 ) mNavigator->selectWeek(); 1651 else if ( dateCount == 7 ) mNavigator->selectWeek();
1652 else mNavigator->selectDates( dateCount ); 1652 else mNavigator->selectDates( dateCount );
1653 // mViewManager->readSettings( config ); 1653 // mViewManager->readSettings( config );
1654 updateConfig(); 1654 updateConfig();
1655 globalFlagBlockAgenda = 2; 1655 globalFlagBlockAgenda = 2;
1656 mViewManager->readSettings( config ); 1656 mViewManager->readSettings( config );
1657#ifdef DESKTOP_VERSION 1657#ifdef DESKTOP_VERSION
1658 config->setGroup("WidgetLayout"); 1658 config->setGroup("WidgetLayout");
1659 QStringList list; 1659 QStringList list;
1660 list = config->readListEntry("MainLayout"); 1660 list = config->readListEntry("MainLayout");
1661 int x,y,w,h; 1661 int x,y,w,h;
1662 if ( ! list.isEmpty() ) { 1662 if ( ! list.isEmpty() ) {
1663 x = list[0].toInt(); 1663 x = list[0].toInt();
1664 y = list[1].toInt(); 1664 y = list[1].toInt();
1665 w = list[2].toInt(); 1665 w = list[2].toInt();
1666 h = list[3].toInt(); 1666 h = list[3].toInt();
1667 topLevelWidget()->setGeometry(x,y,w,h); 1667 topLevelWidget()->setGeometry(x,y,w,h);
1668 1668
1669 } else { 1669 } else {
1670 topLevelWidget()->setGeometry( 40 ,40 , 640, 440); 1670 topLevelWidget()->setGeometry( 40 ,40 , 640, 440);
1671 } 1671 }
1672 list = config->readListEntry("EditEventLayout"); 1672 list = config->readListEntry("EditEventLayout");
1673 if ( ! list.isEmpty() ) { 1673 if ( ! list.isEmpty() ) {
1674 x = list[0].toInt(); 1674 x = list[0].toInt();
1675 y = list[1].toInt(); 1675 y = list[1].toInt();
1676 w = list[2].toInt(); 1676 w = list[2].toInt();
1677 h = list[3].toInt(); 1677 h = list[3].toInt();
1678 mEventEditor->setGeometry(x,y,w,h); 1678 mEventEditor->setGeometry(x,y,w,h);
1679 1679
1680 } 1680 }
1681 list = config->readListEntry("EditTodoLayout"); 1681 list = config->readListEntry("EditTodoLayout");
1682 if ( ! list.isEmpty() ) { 1682 if ( ! list.isEmpty() ) {
1683 x = list[0].toInt(); 1683 x = list[0].toInt();
1684 y = list[1].toInt(); 1684 y = list[1].toInt();
1685 w = list[2].toInt(); 1685 w = list[2].toInt();
1686 h = list[3].toInt(); 1686 h = list[3].toInt();
1687 mTodoEditor->setGeometry(x,y,w,h); 1687 mTodoEditor->setGeometry(x,y,w,h);
1688 1688
1689 } 1689 }
1690 list = config->readListEntry("ViewerLayout"); 1690 list = config->readListEntry("ViewerLayout");
1691 if ( ! list.isEmpty() ) { 1691 if ( ! list.isEmpty() ) {
1692 x = list[0].toInt(); 1692 x = list[0].toInt();
1693 y = list[1].toInt(); 1693 y = list[1].toInt();
1694 w = list[2].toInt(); 1694 w = list[2].toInt();
1695 h = list[3].toInt(); 1695 h = list[3].toInt();
1696 getEventViewerDialog()->setGeometry(x,y,w,h); 1696 getEventViewerDialog()->setGeometry(x,y,w,h);
1697 } 1697 }
1698#endif 1698#endif
1699 1699
1700} 1700}
1701 1701
1702 1702
1703void CalendarView::writeSettings() 1703void CalendarView::writeSettings()
1704{ 1704{
1705 // kdDebug() << "CalendarView::writeSettings" << endl; 1705 // kdDebug() << "CalendarView::writeSettings" << endl;
1706 1706
1707 KConfig *config = KOGlobals::config(); 1707 KConfig *config = KOGlobals::config();
1708 1708
1709#ifndef KORG_NOSPLITTER 1709#ifndef KORG_NOSPLITTER
1710 config->setGroup("KOrganizer Geometry"); 1710 config->setGroup("KOrganizer Geometry");
1711 1711
1712 QValueList<int> list = mPanner->sizes(); 1712 QValueList<int> list = mPanner->sizes();
1713 config->writeEntry("Separator1",list); 1713 config->writeEntry("Separator1",list);
1714 1714
1715 list = mLeftSplitter->sizes(); 1715 list = mLeftSplitter->sizes();
1716 config->writeEntry("Separator2",list); 1716 config->writeEntry("Separator2",list);
1717#endif 1717#endif
1718 1718
1719 mViewManager->writeSettings( config ); 1719 mViewManager->writeSettings( config );
1720 mTodoList->saveLayout(config,QString("Todo Layout")); 1720 mTodoList->saveLayout(config,QString("Todo Layout"));
1721 mDialogManager->writeSettings( config ); 1721 mDialogManager->writeSettings( config );
1722 //KOPrefs::instance()->usrWriteConfig(); 1722 //KOPrefs::instance()->usrWriteConfig();
1723 KOPrefs::instance()->writeConfig(); 1723 KOPrefs::instance()->writeConfig();
1724 1724
1725 writeFilterSettings(config); 1725 writeFilterSettings(config);
1726 1726
1727 config->setGroup( "Views" ); 1727 config->setGroup( "Views" );
1728 config->writeEntry( "ShownDatesCount", mNavigator->selectedDates().count() ); 1728 config->writeEntry( "ShownDatesCount", mNavigator->selectedDates().count() );
1729 1729
1730#ifdef DESKTOP_VERSION 1730#ifdef DESKTOP_VERSION
1731 config->setGroup("WidgetLayout"); 1731 config->setGroup("WidgetLayout");
1732 QStringList list ;//= config->readListEntry("MainLayout"); 1732 QStringList list ;//= config->readListEntry("MainLayout");
1733 int x,y,w,h; 1733 int x,y,w,h;
1734 QWidget* wid; 1734 QWidget* wid;
1735 wid = topLevelWidget(); 1735 wid = topLevelWidget();
1736 x = wid->geometry().x(); 1736 x = wid->geometry().x();
1737 y = wid->geometry().y(); 1737 y = wid->geometry().y();
1738 w = wid->width(); 1738 w = wid->width();
1739 h = wid->height(); 1739 h = wid->height();
1740 list.clear(); 1740 list.clear();
1741 list << QString::number( x ); 1741 list << QString::number( x );
1742 list << QString::number( y ); 1742 list << QString::number( y );
1743 list << QString::number( w ); 1743 list << QString::number( w );
1744 list << QString::number( h ); 1744 list << QString::number( h );
1745 config->writeEntry("MainLayout",list ); 1745 config->writeEntry("MainLayout",list );
1746 1746
1747 wid = mEventEditor; 1747 wid = mEventEditor;
1748 x = wid->geometry().x(); 1748 x = wid->geometry().x();
1749 y = wid->geometry().y(); 1749 y = wid->geometry().y();
1750 w = wid->width(); 1750 w = wid->width();
1751 h = wid->height(); 1751 h = wid->height();
1752 list.clear(); 1752 list.clear();
1753 list << QString::number( x ); 1753 list << QString::number( x );
1754 list << QString::number( y ); 1754 list << QString::number( y );
1755 list << QString::number( w ); 1755 list << QString::number( w );
1756 list << QString::number( h ); 1756 list << QString::number( h );
1757 config->writeEntry("EditEventLayout",list ); 1757 config->writeEntry("EditEventLayout",list );
1758 1758
1759 wid = mTodoEditor; 1759 wid = mTodoEditor;
1760 x = wid->geometry().x(); 1760 x = wid->geometry().x();
1761 y = wid->geometry().y(); 1761 y = wid->geometry().y();
1762 w = wid->width(); 1762 w = wid->width();
1763 h = wid->height(); 1763 h = wid->height();
1764 list.clear(); 1764 list.clear();
1765 list << QString::number( x ); 1765 list << QString::number( x );
1766 list << QString::number( y ); 1766 list << QString::number( y );
1767 list << QString::number( w ); 1767 list << QString::number( w );
1768 list << QString::number( h ); 1768 list << QString::number( h );
1769 config->writeEntry("EditTodoLayout",list ); 1769 config->writeEntry("EditTodoLayout",list );
1770 wid = getEventViewerDialog(); 1770 wid = getEventViewerDialog();
1771 x = wid->geometry().x(); 1771 x = wid->geometry().x();
1772 y = wid->geometry().y(); 1772 y = wid->geometry().y();
1773 w = wid->width(); 1773 w = wid->width();
1774 h = wid->height(); 1774 h = wid->height();
1775 list.clear(); 1775 list.clear();
1776 list << QString::number( x ); 1776 list << QString::number( x );
1777 list << QString::number( y ); 1777 list << QString::number( y );
1778 list << QString::number( w ); 1778 list << QString::number( w );
1779 list << QString::number( h ); 1779 list << QString::number( h );
1780 config->writeEntry("ViewerLayout",list ); 1780 config->writeEntry("ViewerLayout",list );
1781 wid = mDialogManager->getSearchDialog(); 1781 wid = mDialogManager->getSearchDialog();
1782 if ( wid ) { 1782 if ( wid ) {
1783 x = wid->geometry().x(); 1783 x = wid->geometry().x();
1784 y = wid->geometry().y(); 1784 y = wid->geometry().y();
1785 w = wid->width(); 1785 w = wid->width();
1786 h = wid->height(); 1786 h = wid->height();
1787 list.clear(); 1787 list.clear();
1788 list << QString::number( x ); 1788 list << QString::number( x );
1789 list << QString::number( y ); 1789 list << QString::number( y );
1790 list << QString::number( w ); 1790 list << QString::number( w );
1791 list << QString::number( h ); 1791 list << QString::number( h );
1792 config->writeEntry("SearchLayout",list ); 1792 config->writeEntry("SearchLayout",list );
1793 } 1793 }
1794#endif 1794#endif
1795 1795
1796 1796
1797 config->sync(); 1797 config->sync();
1798} 1798}
1799 1799
1800void CalendarView::readFilterSettings(KConfig *config) 1800void CalendarView::readFilterSettings(KConfig *config)
1801{ 1801{
1802 // kdDebug() << "CalendarView::readFilterSettings()" << endl; 1802 // kdDebug() << "CalendarView::readFilterSettings()" << endl;
1803 1803
1804 mFilters.clear(); 1804 mFilters.clear();
1805 1805
1806 config->setGroup("General"); 1806 config->setGroup("General");
1807 QStringList filterList = config->readListEntry("CalendarFilters"); 1807 QStringList filterList = config->readListEntry("CalendarFilters");
1808 1808
1809 QStringList::ConstIterator it = filterList.begin(); 1809 QStringList::ConstIterator it = filterList.begin();
1810 QStringList::ConstIterator end = filterList.end(); 1810 QStringList::ConstIterator end = filterList.end();
1811 while(it != end) { 1811 while(it != end) {
1812 // kdDebug() << " filter: " << (*it) << endl; 1812 // kdDebug() << " filter: " << (*it) << endl;
1813 1813
1814 CalFilter *filter; 1814 CalFilter *filter;
1815 filter = new CalFilter(*it); 1815 filter = new CalFilter(*it);
1816 config->setGroup("Filter_" + (*it)); 1816 config->setGroup("Filter_" + (*it));
1817 //qDebug("readFilterSettings %d ",config->readNumEntry("Criteria",0) ); 1817 //qDebug("readFilterSettings %d ",config->readNumEntry("Criteria",0) );
1818 filter->setCriteria(config->readNumEntry("Criteria",0)); 1818 filter->setCriteria(config->readNumEntry("Criteria",0));
1819 filter->setCategoryList(config->readListEntry("CategoryList")); 1819 filter->setCategoryList(config->readListEntry("CategoryList"));
1820 mFilters.append(filter); 1820 mFilters.append(filter);
1821 1821
1822 ++it; 1822 ++it;
1823 } 1823 }
1824 1824
1825 if (mFilters.count() == 0) { 1825 if (mFilters.count() == 0) {
1826 CalFilter *filter = new CalFilter(i18n("Default")); 1826 CalFilter *filter = new CalFilter(i18n("Default"));
1827 mFilters.append(filter); 1827 mFilters.append(filter);
1828 } 1828 }
1829 mFilterView->updateFilters(); 1829 mFilterView->updateFilters();
1830 config->setGroup("FilterView"); 1830 config->setGroup("FilterView");
1831 1831
1832 mFilterView->blockSignals(true); 1832 mFilterView->blockSignals(true);
1833 mFilterView->setFiltersEnabled(config->readBoolEntry("FilterEnabled")); 1833 mFilterView->setFiltersEnabled(config->readBoolEntry("FilterEnabled"));
1834 mFilterView->setSelectedFilter(config->readEntry("Current Filter")); 1834 mFilterView->setSelectedFilter(config->readEntry("Current Filter"));
1835 mFilterView->blockSignals(false); 1835 mFilterView->blockSignals(false);
1836 // We do it manually to avoid it being done twice by the above calls 1836 // We do it manually to avoid it being done twice by the above calls
1837 updateFilter(); 1837 updateFilter();
1838} 1838}
1839 1839
1840void CalendarView::writeFilterSettings(KConfig *config) 1840void CalendarView::writeFilterSettings(KConfig *config)
1841{ 1841{
1842 // kdDebug() << "CalendarView::writeFilterSettings()" << endl; 1842 // kdDebug() << "CalendarView::writeFilterSettings()" << endl;
1843 1843
1844 QStringList filterList; 1844 QStringList filterList;
1845 1845
1846 CalFilter *filter = mFilters.first(); 1846 CalFilter *filter = mFilters.first();
1847 while(filter) { 1847 while(filter) {
1848 // kdDebug() << " fn: " << filter->name() << endl; 1848 // kdDebug() << " fn: " << filter->name() << endl;
1849 filterList << filter->name(); 1849 filterList << filter->name();
1850 config->setGroup("Filter_" + filter->name()); 1850 config->setGroup("Filter_" + filter->name());
1851 config->writeEntry("Criteria",filter->criteria()); 1851 config->writeEntry("Criteria",filter->criteria());
1852 config->writeEntry("CategoryList",filter->categoryList()); 1852 config->writeEntry("CategoryList",filter->categoryList());
1853 filter = mFilters.next(); 1853 filter = mFilters.next();
1854 } 1854 }
1855 config->setGroup("General"); 1855 config->setGroup("General");
1856 config->writeEntry("CalendarFilters",filterList); 1856 config->writeEntry("CalendarFilters",filterList);
1857 1857
1858 config->setGroup("FilterView"); 1858 config->setGroup("FilterView");
1859 config->writeEntry("FilterEnabled",mFilterView->filtersEnabled()); 1859 config->writeEntry("FilterEnabled",mFilterView->filtersEnabled());
1860 config->writeEntry("Current Filter",mFilterView->selectedFilter()->name()); 1860 config->writeEntry("Current Filter",mFilterView->selectedFilter()->name());
1861} 1861}
1862 1862
1863 1863
1864void CalendarView::goToday() 1864void CalendarView::goToday()
1865{ 1865{
1866 mNavigator->selectToday(); 1866 mNavigator->selectToday();
1867} 1867}
1868 1868
1869void CalendarView::goNext() 1869void CalendarView::goNext()
1870{ 1870{
1871 mNavigator->selectNext(); 1871 mNavigator->selectNext();
1872} 1872}
1873 1873
1874void CalendarView::goPrevious() 1874void CalendarView::goPrevious()
1875{ 1875{
1876 mNavigator->selectPrevious(); 1876 mNavigator->selectPrevious();
1877} 1877}
1878void CalendarView::goNextMonth() 1878void CalendarView::goNextMonth()
1879{ 1879{
1880 mNavigator->selectNextMonth(); 1880 mNavigator->selectNextMonth();
1881} 1881}
1882 1882
1883void CalendarView::goPreviousMonth() 1883void CalendarView::goPreviousMonth()
1884{ 1884{
1885 mNavigator->selectPreviousMonth(); 1885 mNavigator->selectPreviousMonth();
1886} 1886}
1887void CalendarView::writeLocale() 1887void CalendarView::writeLocale()
1888{ 1888{
1889 KGlobal::locale()->setHore24Format( !KOPrefs::instance()->mPreferredTime ); 1889 KGlobal::locale()->setHore24Format( !KOPrefs::instance()->mPreferredTime );
1890 KGlobal::locale()->setWeekStartMonday( !KOPrefs::instance()->mWeekStartsOnSunday ); 1890 KGlobal::locale()->setWeekStartMonday( !KOPrefs::instance()->mWeekStartsOnSunday );
1891 KGlobal::locale()->setIntDateFormat( (KLocale::IntDateFormat)KOPrefs::instance()->mPreferredDate ); 1891 KGlobal::locale()->setIntDateFormat( (KLocale::IntDateFormat)KOPrefs::instance()->mPreferredDate );
1892 KGlobal::locale()->setLanguage( KOPrefs::instance()->mPreferredLanguage ); 1892 KGlobal::locale()->setLanguage( KOPrefs::instance()->mPreferredLanguage );
1893 QString dummy = KOPrefs::instance()->mUserDateFormatLong; 1893 QString dummy = KOPrefs::instance()->mUserDateFormatLong;
1894 KGlobal::locale()->setDateFormat(dummy.replace( QRegExp("K"), QString(",") )); 1894 KGlobal::locale()->setDateFormat(dummy.replace( QRegExp("K"), QString(",") ));
1895 dummy = KOPrefs::instance()->mUserDateFormatShort; 1895 dummy = KOPrefs::instance()->mUserDateFormatShort;
1896 KGlobal::locale()->setDateFormatShort(dummy.replace( QRegExp("K"), QString(",") )); 1896 KGlobal::locale()->setDateFormatShort(dummy.replace( QRegExp("K"), QString(",") ));
1897 KGlobal::locale()->setDaylightSaving( KOPrefs::instance()->mUseDaylightsaving, 1897 KGlobal::locale()->setDaylightSaving( KOPrefs::instance()->mUseDaylightsaving,
1898 KOPrefs::instance()->mDaylightsavingStart, 1898 KOPrefs::instance()->mDaylightsavingStart,
1899 KOPrefs::instance()->mDaylightsavingEnd ); 1899 KOPrefs::instance()->mDaylightsavingEnd );
1900 KGlobal::locale()->setTimezone( KOPrefs::instance()->mTimeZoneId ); 1900 KGlobal::locale()->setTimezone( KOPrefs::instance()->mTimeZoneId );
1901} 1901}
1902void CalendarView::updateConfig() 1902void CalendarView::updateConfig()
1903{ 1903{
1904 writeLocale(); 1904 writeLocale();
1905 if ( KOPrefs::instance()->mUseAppColors ) 1905 if ( KOPrefs::instance()->mUseAppColors )
1906 QApplication::setPalette( QPalette (KOPrefs::instance()->mAppColor1, KOPrefs::instance()->mAppColor2), true ); 1906 QApplication::setPalette( QPalette (KOPrefs::instance()->mAppColor1, KOPrefs::instance()->mAppColor2), true );
1907 emit configChanged(); 1907 emit configChanged();
1908 mTodoList->updateConfig(); 1908 mTodoList->updateConfig();
1909 // mDateNavigator->setFont ( KOPrefs::instance()->mDateNavigatorFont); 1909 // mDateNavigator->setFont ( KOPrefs::instance()->mDateNavigatorFont);
1910 mCalendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId); 1910 mCalendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId);
1911 // To make the "fill window" configurations work 1911 // To make the "fill window" configurations work
1912 //mViewManager->raiseCurrentView(); 1912 //mViewManager->raiseCurrentView();
1913} 1913}
1914 1914
1915 1915
1916void CalendarView::eventChanged(Event *event) 1916void CalendarView::eventChanged(Event *event)
1917{ 1917{
1918 changeEventDisplay(event,KOGlobals::EVENTEDITED); 1918 changeEventDisplay(event,KOGlobals::EVENTEDITED);
1919 //updateUnmanagedViews(); 1919 //updateUnmanagedViews();
1920} 1920}
1921 1921
1922void CalendarView::eventAdded(Event *event) 1922void CalendarView::eventAdded(Event *event)
1923{ 1923{
1924 changeEventDisplay(event,KOGlobals::EVENTADDED); 1924 changeEventDisplay(event,KOGlobals::EVENTADDED);
1925} 1925}
1926 1926
1927void CalendarView::eventToBeDeleted(Event *) 1927void CalendarView::eventToBeDeleted(Event *)
1928{ 1928{
1929 kdDebug() << "CalendarView::eventToBeDeleted(): to be implemented" << endl; 1929 kdDebug() << "CalendarView::eventToBeDeleted(): to be implemented" << endl;
1930} 1930}
1931 1931
1932void CalendarView::eventDeleted() 1932void CalendarView::eventDeleted()
1933{ 1933{
1934 changeEventDisplay(0,KOGlobals::EVENTDELETED); 1934 changeEventDisplay(0,KOGlobals::EVENTDELETED);
1935} 1935}
1936void CalendarView::changeTodoDisplay(Todo *which, int action) 1936void CalendarView::changeTodoDisplay(Todo *which, int action)
1937{ 1937{
1938 changeIncidenceDisplay((Incidence *)which, action); 1938 changeIncidenceDisplay((Incidence *)which, action);
1939 mDateNavigator->updateView(); //LR 1939 mDateNavigator->updateView(); //LR
1940 //mDialogManager->updateSearchDialog(); 1940 //mDialogManager->updateSearchDialog();
1941 1941
1942 if (which) { 1942 if (which) {
1943 mViewManager->updateWNview(); 1943 mViewManager->updateWNview();
1944 //mTodoList->updateView(); 1944 //mTodoList->updateView();
1945 } 1945 }
1946 1946
1947} 1947}
1948 1948
1949void CalendarView::changeIncidenceDisplay(Incidence *which, int action) 1949void CalendarView::changeIncidenceDisplay(Incidence *which, int action)
1950{ 1950{
1951 updateUnmanagedViews(); 1951 updateUnmanagedViews();
1952 //qDebug(" CalendarView::changeIncidenceDisplay++++++++++++++++++++++++++ %d %d ",which, action ); 1952 //qDebug(" CalendarView::changeIncidenceDisplay++++++++++++++++++++++++++ %d %d ",which, action );
1953 if ( action == KOGlobals::EVENTDELETED ) { //delete 1953 if ( action == KOGlobals::EVENTDELETED ) { //delete
1954 mCalendar->checkAlarmForIncidence( 0, true ); 1954 mCalendar->checkAlarmForIncidence( 0, true );
1955 if ( mEventViewerDialog ) 1955 if ( mEventViewerDialog )
1956 mEventViewerDialog->hide(); 1956 mEventViewerDialog->hide();
1957 } 1957 }
1958 else 1958 else
1959 mCalendar->checkAlarmForIncidence( which , false ); 1959 mCalendar->checkAlarmForIncidence( which , false );
1960} 1960}
1961 1961
1962// most of the changeEventDisplays() right now just call the view's 1962// most of the changeEventDisplays() right now just call the view's
1963// total update mode, but they SHOULD be recoded to be more refresh-efficient. 1963// total update mode, but they SHOULD be recoded to be more refresh-efficient.
1964void CalendarView::changeEventDisplay(Event *which, int action) 1964void CalendarView::changeEventDisplay(Event *which, int action)
1965{ 1965{
1966 // kdDebug() << "CalendarView::changeEventDisplay" << endl; 1966 // kdDebug() << "CalendarView::changeEventDisplay" << endl;
1967 changeIncidenceDisplay((Incidence *)which, action); 1967 changeIncidenceDisplay((Incidence *)which, action);
1968 mDateNavigator->updateView(); 1968 mDateNavigator->updateView();
1969 //mDialogManager->updateSearchDialog(); 1969 //mDialogManager->updateSearchDialog();
1970 1970
1971 if (which) { 1971 if (which) {
1972 // If there is an event view visible update the display 1972 // If there is an event view visible update the display
1973 mViewManager->currentView()->changeEventDisplay(which,action); 1973 mViewManager->currentView()->changeEventDisplay(which,action);
1974 // TODO: check, if update needed 1974 // TODO: check, if update needed
1975 // if (which->getTodoStatus()) { 1975 // if (which->getTodoStatus()) {
1976 mTodoList->updateView(); 1976 mTodoList->updateView();
1977 // } 1977 // }
1978 } else { 1978 } else {
1979 mViewManager->currentView()->updateView(); 1979 mViewManager->currentView()->updateView();
1980 } 1980 }
1981} 1981}
1982 1982
1983 1983
1984void CalendarView::updateTodoViews() 1984void CalendarView::updateTodoViews()
1985{ 1985{
1986 1986
1987 mTodoList->updateView(); 1987 mTodoList->updateView();
1988 mViewManager->currentView()->updateView(); 1988 mViewManager->currentView()->updateView();
1989 1989
1990} 1990}
1991 1991
1992 1992
1993void CalendarView::updateView(const QDate &start, const QDate &end) 1993void CalendarView::updateView(const QDate &start, const QDate &end)
1994{ 1994{
1995 mTodoList->updateView(); 1995 mTodoList->updateView();
1996 mViewManager->updateView(start, end); 1996 mViewManager->updateView(start, end);
1997 //mDateNavigator->updateView(); 1997 //mDateNavigator->updateView();
1998} 1998}
1999 1999
2000void CalendarView::updateView() 2000void CalendarView::updateView()
2001{ 2001{
2002 DateList tmpList = mNavigator->selectedDates(); 2002 DateList tmpList = mNavigator->selectedDates();
2003 2003
2004 // We assume that the navigator only selects consecutive days. 2004 // We assume that the navigator only selects consecutive days.
2005 updateView( tmpList.first(), tmpList.last() ); 2005 updateView( tmpList.first(), tmpList.last() );
2006} 2006}
2007 2007
2008void CalendarView::updateUnmanagedViews() 2008void CalendarView::updateUnmanagedViews()
2009{ 2009{
2010 mDateNavigator->updateDayMatrix(); 2010 mDateNavigator->updateDayMatrix();
2011} 2011}
2012 2012
2013int CalendarView::msgItemDelete() 2013int CalendarView::msgItemDelete()
2014{ 2014{
2015 return KMessageBox::warningContinueCancel(this, 2015 return KMessageBox::warningContinueCancel(this,
2016 i18n("This item will be\npermanently deleted."), 2016 i18n("This item will be\npermanently deleted."),
2017 i18n("KO/Pi Confirmation"),i18n("Delete")); 2017 i18n("KO/Pi Confirmation"),i18n("Delete"));
2018} 2018}
2019 2019
2020 2020
2021void CalendarView::edit_cut() 2021void CalendarView::edit_cut()
2022{ 2022{
2023 Event *anEvent=0; 2023 Event *anEvent=0;
2024 2024
2025 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 2025 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
2026 2026
2027 if (mViewManager->currentView()->isEventView()) { 2027 if (mViewManager->currentView()->isEventView()) {
2028 if ( incidence && incidence->type() == "Event" ) { 2028 if ( incidence && incidence->type() == "Event" ) {
2029 anEvent = static_cast<Event *>(incidence); 2029 anEvent = static_cast<Event *>(incidence);
2030 } 2030 }
2031 } 2031 }
2032 2032
2033 if (!anEvent) { 2033 if (!anEvent) {
2034 KNotifyClient::beep(); 2034 KNotifyClient::beep();
2035 return; 2035 return;
2036 } 2036 }
2037 DndFactory factory( mCalendar ); 2037 DndFactory factory( mCalendar );
2038 factory.cutEvent(anEvent); 2038 factory.cutEvent(anEvent);
2039 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED); 2039 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED);
2040} 2040}
2041 2041
2042void CalendarView::edit_copy() 2042void CalendarView::edit_copy()
2043{ 2043{
2044 Event *anEvent=0; 2044 Event *anEvent=0;
2045 2045
2046 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 2046 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
2047 2047
2048 if (mViewManager->currentView()->isEventView()) { 2048 if (mViewManager->currentView()->isEventView()) {
2049 if ( incidence && incidence->type() == "Event" ) { 2049 if ( incidence && incidence->type() == "Event" ) {
2050 anEvent = static_cast<Event *>(incidence); 2050 anEvent = static_cast<Event *>(incidence);
2051 } 2051 }
2052 } 2052 }
2053 2053
2054 if (!anEvent) { 2054 if (!anEvent) {
2055 KNotifyClient::beep(); 2055 KNotifyClient::beep();
2056 return; 2056 return;
2057 } 2057 }
2058 DndFactory factory( mCalendar ); 2058 DndFactory factory( mCalendar );
2059 factory.copyEvent(anEvent); 2059 factory.copyEvent(anEvent);
2060} 2060}
2061 2061
2062void CalendarView::edit_paste() 2062void CalendarView::edit_paste()
2063{ 2063{
2064 QDate date = mNavigator->selectedDates().first(); 2064 QDate date = mNavigator->selectedDates().first();
2065 2065
2066 DndFactory factory( mCalendar ); 2066 DndFactory factory( mCalendar );
2067 Event *pastedEvent = factory.pasteEvent( date ); 2067 Event *pastedEvent = factory.pasteEvent( date );
2068 2068
2069 changeEventDisplay( pastedEvent, KOGlobals::EVENTADDED ); 2069 changeEventDisplay( pastedEvent, KOGlobals::EVENTADDED );
2070} 2070}
2071 2071
2072void CalendarView::edit_options() 2072void CalendarView::edit_options()
2073{ 2073{
2074 mDialogManager->showOptionsDialog(); 2074 mDialogManager->showOptionsDialog();
2075 //writeSettings(); 2075 //writeSettings();
2076} 2076}
2077void CalendarView::edit_sync_options() 2077void CalendarView::edit_sync_options()
2078{ 2078{
2079 //mDialogManager->showSyncOptions(); 2079 //mDialogManager->showSyncOptions();
2080 //KOPrefs::instance()->mSyncAlgoPrefs 2080 //KOPrefs::instance()->mSyncAlgoPrefs
2081 QDialog dia( this, "dia", true ); 2081 QDialog dia( this, "dia", true );
2082 dia.setCaption( i18n("Device: " ) +mCurrentSyncDevice ); 2082 dia.setCaption( i18n("Device: " ) +mCurrentSyncDevice );
2083 QButtonGroup gr ( 1, Qt::Horizontal, i18n("Sync preferences"), &dia); 2083 QButtonGroup gr ( 1, Qt::Horizontal, i18n("Sync preferences"), &dia);
2084 QVBoxLayout lay ( &dia ); 2084 QVBoxLayout lay ( &dia );
2085 lay.setSpacing( 2 ); 2085 lay.setSpacing( 2 );
2086 lay.setMargin( 3 ); 2086 lay.setMargin( 3 );
2087 lay.addWidget(&gr); 2087 lay.addWidget(&gr);
2088 QRadioButton loc ( i18n("Take local entry on conflict"), &gr ); 2088 QRadioButton loc ( i18n("Take local entry on conflict"), &gr );
2089 QRadioButton rem ( i18n("Take remote entry on conflict"), &gr ); 2089 QRadioButton rem ( i18n("Take remote entry on conflict"), &gr );
2090 QRadioButton newest( i18n("Take newest entry on conflict"), &gr ); 2090 QRadioButton newest( i18n("Take newest entry on conflict"), &gr );
2091 QRadioButton ask( i18n("Ask for every entry on conflict"), &gr ); 2091 QRadioButton ask( i18n("Ask for every entry on conflict"), &gr );
2092 QRadioButton f_loc( i18n("Force: Take local entry always"), &gr ); 2092 QRadioButton f_loc( i18n("Force: Take local entry always"), &gr );
2093 QRadioButton f_rem( i18n("Force: Take remote entry always"), &gr ); 2093 QRadioButton f_rem( i18n("Force: Take remote entry always"), &gr );
2094 //QRadioButton both( i18n("Take both on conflict"), &gr ); 2094 //QRadioButton both( i18n("Take both on conflict"), &gr );
2095 QPushButton pb ( "OK", &dia); 2095 QPushButton pb ( "OK", &dia);
2096 lay.addWidget( &pb ); 2096 lay.addWidget( &pb );
2097 connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) ); 2097 connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) );
2098 switch ( KOPrefs::instance()->mSyncAlgoPrefs ) { 2098 switch ( KOPrefs::instance()->mSyncAlgoPrefs ) {
2099 case 0: 2099 case 0:
2100 loc.setChecked( true); 2100 loc.setChecked( true);
2101 break; 2101 break;
2102 case 1: 2102 case 1:
2103 rem.setChecked( true ); 2103 rem.setChecked( true );
2104 break; 2104 break;
2105 case 2: 2105 case 2:
2106 newest.setChecked( true); 2106 newest.setChecked( true);
2107 break; 2107 break;
2108 case 3: 2108 case 3:
2109 ask.setChecked( true); 2109 ask.setChecked( true);
2110 break; 2110 break;
2111 case 4: 2111 case 4:
2112 f_loc.setChecked( true); 2112 f_loc.setChecked( true);
2113 break; 2113 break;
2114 case 5: 2114 case 5:
2115 f_rem.setChecked( true); 2115 f_rem.setChecked( true);
2116 break; 2116 break;
2117 case 6: 2117 case 6:
2118 // both.setChecked( true); 2118 // both.setChecked( true);
2119 break; 2119 break;
2120 default: 2120 default:
2121 break; 2121 break;
2122 } 2122 }
2123 if ( dia.exec() ) { 2123 if ( dia.exec() ) {
2124 KOPrefs::instance()->mSyncAlgoPrefs = rem.isChecked()*1+newest.isChecked()*2+ ask.isChecked()*3+ f_loc.isChecked()*4+ f_rem.isChecked()*5;//+ both.isChecked()*6 ; 2124 KOPrefs::instance()->mSyncAlgoPrefs = rem.isChecked()*1+newest.isChecked()*2+ ask.isChecked()*3+ f_loc.isChecked()*4+ f_rem.isChecked()*5;//+ both.isChecked()*6 ;
2125 } 2125 }
2126 2126
2127} 2127}
2128 2128
2129void CalendarView::slotSelectPickerDate( QDate d) 2129void CalendarView::slotSelectPickerDate( QDate d)
2130{ 2130{
2131 mDateFrame->hide(); 2131 mDateFrame->hide();
2132 if ( mDatePickerMode == 1 ) { 2132 if ( mDatePickerMode == 1 ) {
2133 mNavigator->slotDaySelect( d ); 2133 mNavigator->slotDaySelect( d );
2134 } else if ( mDatePickerMode == 2 ) { 2134 } else if ( mDatePickerMode == 2 ) {
2135 if ( mMoveIncidence->type() == "Todo" ) { 2135 if ( mMoveIncidence->type() == "Todo" ) {
2136 Todo * to = (Todo *) mMoveIncidence; 2136 Todo * to = (Todo *) mMoveIncidence;
2137 QTime tim; 2137 QTime tim;
2138 if ( to->hasDueDate() ) 2138 if ( to->hasDueDate() )
2139 tim = to->dtDue().time(); 2139 tim = to->dtDue().time();
2140 else { 2140 else {
2141 tim = QTime ( 0,0,0 ); 2141 tim = QTime ( 0,0,0 );
2142 to->setFloats( true ); 2142 to->setFloats( true );
2143 to->setHasDueDate( true ); 2143 to->setHasDueDate( true );
2144 } 2144 }
2145 QDateTime dt ( d,tim ); 2145 QDateTime dt ( d,tim );
2146 to->setDtDue( dt ); 2146 to->setDtDue( dt );
2147 todoChanged( to ); 2147 todoChanged( to );
2148 } else { 2148 } else {
2149 QTime tim = mMoveIncidence->dtStart().time(); 2149 QTime tim = mMoveIncidence->dtStart().time();
2150 int secs = mMoveIncidence->dtStart().secsTo( mMoveIncidence->dtEnd()); 2150 int secs = mMoveIncidence->dtStart().secsTo( mMoveIncidence->dtEnd());
2151 QDateTime dt ( d,tim ); 2151 QDateTime dt ( d,tim );
2152 mMoveIncidence->setDtStart( dt ); 2152 mMoveIncidence->setDtStart( dt );
2153 ((Event*)mMoveIncidence)->setDtEnd( dt.addSecs( secs ) ); 2153 ((Event*)mMoveIncidence)->setDtEnd( dt.addSecs( secs ) );
2154 changeEventDisplay((Event*)mMoveIncidence, KOGlobals::EVENTEDITED); 2154 changeEventDisplay((Event*)mMoveIncidence, KOGlobals::EVENTEDITED);
2155 } 2155 }
2156 2156
2157 mMoveIncidence->setRevision( mMoveIncidence->revision()+1 ); 2157 mMoveIncidence->setRevision( mMoveIncidence->revision()+1 );
2158 } 2158 }
2159} 2159}
2160 2160
2161void CalendarView::removeCategories() 2161void CalendarView::removeCategories()
2162{ 2162{
2163 QPtrList<Incidence> incList = mCalendar->rawIncidences(); 2163 QPtrList<Incidence> incList = mCalendar->rawIncidences();
2164 QStringList catList = KOPrefs::instance()->mCustomCategories; 2164 QStringList catList = KOPrefs::instance()->mCustomCategories;
2165 QStringList catIncList; 2165 QStringList catIncList;
2166 QStringList newCatList; 2166 QStringList newCatList;
2167 Incidence* inc = incList.first(); 2167 Incidence* inc = incList.first();
2168 int i; 2168 int i;
2169 int count = 0; 2169 int count = 0;
2170 while ( inc ) { 2170 while ( inc ) {
2171 newCatList.clear(); 2171 newCatList.clear();
2172 catIncList = inc->categories() ; 2172 catIncList = inc->categories() ;
2173 for( i = 0; i< catIncList.count(); ++i ) { 2173 for( i = 0; i< catIncList.count(); ++i ) {
2174 if ( catList.contains (catIncList[i])) 2174 if ( catList.contains (catIncList[i]))
2175 newCatList.append( catIncList[i] ); 2175 newCatList.append( catIncList[i] );
2176 } 2176 }
2177 newCatList.sort(); 2177 newCatList.sort();
2178 inc->setCategories( newCatList.join(",") ); 2178 inc->setCategories( newCatList.join(",") );
2179 inc = incList.next(); 2179 inc = incList.next();