summaryrefslogtreecommitdiffabout
path: root/korganizer/kotodoview.cpp
Unidiff
Diffstat (limited to 'korganizer/kotodoview.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/kotodoview.cpp17
1 files changed, 15 insertions, 2 deletions
diff --git a/korganizer/kotodoview.cpp b/korganizer/kotodoview.cpp
index 8d8fc2a..82437d8 100644
--- a/korganizer/kotodoview.cpp
+++ b/korganizer/kotodoview.cpp
@@ -241,192 +241,193 @@ void KOTodoListView::contentsMouseMoveEvent(QMouseEvent* e)
241 } 241 }
242 } 242 }
243#endif 243#endif
244} 244}
245void KOTodoListView::keyPressEvent ( QKeyEvent * e ) 245void KOTodoListView::keyPressEvent ( QKeyEvent * e )
246{ 246{
247 247
248 QListViewItem* cn; 248 QListViewItem* cn;
249 if ( e->key() == Qt::Key_Return || e->key() == Qt::Key_Enter ) { 249 if ( e->key() == Qt::Key_Return || e->key() == Qt::Key_Enter ) {
250 cn = currentItem(); 250 cn = currentItem();
251 if ( cn ) { 251 if ( cn ) {
252 KOTodoViewItem* ci = (KOTodoViewItem*)( cn ); 252 KOTodoViewItem* ci = (KOTodoViewItem*)( cn );
253 if ( ci ){ 253 if ( ci ){
254 if ( e->state() == ShiftButton ) 254 if ( e->state() == ShiftButton )
255 ci->setOn( false ); 255 ci->setOn( false );
256 else 256 else
257 ci->setOn( true ); 257 ci->setOn( true );
258 cn = cn->itemBelow(); 258 cn = cn->itemBelow();
259 if ( cn ) { 259 if ( cn ) {
260 setCurrentItem ( cn ); 260 setCurrentItem ( cn );
261 ensureItemVisible ( cn ); 261 ensureItemVisible ( cn );
262 } 262 }
263 263
264 } 264 }
265 } 265 }
266 266
267 return; 267 return;
268 } 268 }
269 269
270 // qDebug("KOTodoListView::keyPressEvent "); 270 // qDebug("KOTodoListView::keyPressEvent ");
271 if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton || mName != "todolistsmall" ) { 271 if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton || mName != "todolistsmall" ) {
272 switch ( e->key() ) { 272 switch ( e->key() ) {
273 case Qt::Key_Down: 273 case Qt::Key_Down:
274 case Qt::Key_Up: 274 case Qt::Key_Up:
275 QListView::keyPressEvent ( e ); 275 QListView::keyPressEvent ( e );
276 break; 276 break;
277 case Qt::Key_Left: 277 case Qt::Key_Left:
278 case Qt::Key_Right: 278 case Qt::Key_Right:
279 QListView::keyPressEvent ( e ); 279 QListView::keyPressEvent ( e );
280 e->accept(); 280 e->accept();
281 return; 281 return;
282 break; 282 break;
283 default: 283 default:
284 e->ignore(); 284 e->ignore();
285 break; 285 break;
286 } 286 }
287 return; 287 return;
288 } 288 }
289 e->ignore(); 289 e->ignore();
290} 290}
291void KOTodoListView::contentsMouseReleaseEvent(QMouseEvent *e) 291void KOTodoListView::contentsMouseReleaseEvent(QMouseEvent *e)
292{ 292{
293 QListView::contentsMouseReleaseEvent(e); 293 QListView::contentsMouseReleaseEvent(e);
294 mMousePressed = false; 294 mMousePressed = false;
295} 295}
296 296
297void KOTodoListView::contentsMouseDoubleClickEvent(QMouseEvent *e) 297void KOTodoListView::contentsMouseDoubleClickEvent(QMouseEvent *e)
298{ 298{
299 if (!e) return; 299 if (!e) return;
300 300
301 QPoint vp = contentsToViewport(e->pos()); 301 QPoint vp = contentsToViewport(e->pos());
302 302
303 QListViewItem *item = itemAt(vp); 303 QListViewItem *item = itemAt(vp);
304 304
305 emit double_Clicked(item); 305 emit double_Clicked(item);
306 if (!item) return; 306 if (!item) return;
307 307
308 emit doubleClicked(item,vp,0); 308 emit doubleClicked(item,vp,0);
309} 309}
310 310
311///////////////////////////////////////////////////////////////////////////// 311/////////////////////////////////////////////////////////////////////////////
312 312
313KOQuickTodo::KOQuickTodo(QWidget *parent) : 313KOQuickTodo::KOQuickTodo(QWidget *parent) :
314 QLineEdit(parent) 314 QLineEdit(parent)
315{ 315{
316 setText(i18n("Click to add a new Todo")); 316 setText(i18n("Click to add a new Todo"));
317} 317}
318 318
319void KOQuickTodo::focusInEvent(QFocusEvent *ev) 319void KOQuickTodo::focusInEvent(QFocusEvent *ev)
320{ 320{
321 if ( text()==i18n("Click to add a new Todo") ) 321 if ( text()==i18n("Click to add a new Todo") )
322 setText(""); 322 setText("");
323 QLineEdit::focusInEvent(ev); 323 QLineEdit::focusInEvent(ev);
324} 324}
325 325
326void KOQuickTodo::focusOutEvent(QFocusEvent *ev) 326void KOQuickTodo::focusOutEvent(QFocusEvent *ev)
327{ 327{
328 setText(i18n("Click to add a new Todo")); 328 setText(i18n("Click to add a new Todo"));
329 QLineEdit::focusOutEvent(ev); 329 QLineEdit::focusOutEvent(ev);
330} 330}
331 331
332///////////////////////////////////////////////////////////////////////////// 332/////////////////////////////////////////////////////////////////////////////
333 333
334KOTodoView::KOTodoView(Calendar *calendar,QWidget* parent,const char* name) : 334KOTodoView::KOTodoView(Calendar *calendar,QWidget* parent,const char* name) :
335 KOrg::BaseView(calendar,parent,name) 335 KOrg::BaseView(calendar,parent,name)
336{ 336{
337 mPendingUpdateBeforeRepaint = false;
337 isFlatDisplay = false; 338 isFlatDisplay = false;
338 mNavigator = 0; 339 mNavigator = 0;
339 QBoxLayout *topLayout = new QVBoxLayout(this); 340 QBoxLayout *topLayout = new QVBoxLayout(this);
340 mName = QString ( name ); 341 mName = QString ( name );
341 mBlockUpdate = false; 342 mBlockUpdate = false;
342 mQuickAdd = new KOQuickTodo(this); 343 mQuickAdd = new KOQuickTodo(this);
343 topLayout->addWidget(mQuickAdd); 344 topLayout->addWidget(mQuickAdd);
344 345
345 if ( !KOPrefs::instance()->mEnableQuickTodo ) mQuickAdd->hide(); 346 if ( !KOPrefs::instance()->mEnableQuickTodo ) mQuickAdd->hide();
346 347
347 mTodoListView = new KOTodoListView(calendar,this, name ); 348 mTodoListView = new KOTodoListView(calendar,this, name );
348 topLayout->addWidget(mTodoListView); 349 topLayout->addWidget(mTodoListView);
349 //mTodoListView->header()->setMaximumHeight(30); 350 //mTodoListView->header()->setMaximumHeight(30);
350 mTodoListView->setRootIsDecorated(true); 351 mTodoListView->setRootIsDecorated(true);
351 mTodoListView->setAllColumnsShowFocus(true); 352 mTodoListView->setAllColumnsShowFocus(true);
352 353
353 mTodoListView->setShowSortIndicator(true); 354 mTodoListView->setShowSortIndicator(true);
354 355
355 mTodoListView->addColumn(i18n("Todo")); 356 mTodoListView->addColumn(i18n("Todo"));
356 mTodoListView->addColumn(i18n("Prio")); 357 mTodoListView->addColumn(i18n("Prio"));
357 mTodoListView->setColumnAlignment(1,AlignHCenter); 358 mTodoListView->setColumnAlignment(1,AlignHCenter);
358 mTodoListView->addColumn(i18n("Complete")); 359 mTodoListView->addColumn(i18n("Complete"));
359 mTodoListView->setColumnAlignment(2,AlignCenter); 360 mTodoListView->setColumnAlignment(2,AlignCenter);
360 361
361 mTodoListView->addColumn(i18n("Due Date")); 362 mTodoListView->addColumn(i18n("Due Date"));
362 mTodoListView->setColumnAlignment(3,AlignLeft); 363 mTodoListView->setColumnAlignment(3,AlignLeft);
363 mTodoListView->addColumn(i18n("Due Time")); 364 mTodoListView->addColumn(i18n("Due Time"));
364 mTodoListView->setColumnAlignment(4,AlignHCenter); 365 mTodoListView->setColumnAlignment(4,AlignHCenter);
365 366
366 mTodoListView->addColumn(i18n("Start Date")); 367 mTodoListView->addColumn(i18n("Start Date"));
367 mTodoListView->setColumnAlignment(5,AlignLeft); 368 mTodoListView->setColumnAlignment(5,AlignLeft);
368 mTodoListView->addColumn(i18n("Start Time")); 369 mTodoListView->addColumn(i18n("Start Time"));
369 mTodoListView->setColumnAlignment(6,AlignHCenter); 370 mTodoListView->setColumnAlignment(6,AlignHCenter);
370 371
371 mTodoListView->addColumn(i18n("Cancelled")); 372 mTodoListView->addColumn(i18n("Cancelled"));
372 mTodoListView->addColumn(i18n("Categories")); 373 mTodoListView->addColumn(i18n("Categories"));
373#if 0 374#if 0
374 mTodoListView->addColumn(i18n("Sort Id")); 375 mTodoListView->addColumn(i18n("Sort Id"));
375 mTodoListView->setColumnAlignment(4,AlignHCenter); 376 mTodoListView->setColumnAlignment(4,AlignHCenter);
376#endif 377#endif
377 378
378 mTodoListView->setMinimumHeight( 60 ); 379 mTodoListView->setMinimumHeight( 60 );
379 mTodoListView->setItemsRenameable( true ); 380 mTodoListView->setItemsRenameable( true );
380 mTodoListView->setRenameable( 0 ); 381 mTodoListView->setRenameable( 0 );
381 mTodoListView->setColumnWidth( 0, 120 ); 382 mTodoListView->setColumnWidth( 0, 120 );
382 mTodoListView->setColumnWidthMode(0, QListView::Manual); 383 mTodoListView->setColumnWidthMode(0, QListView::Manual);
383 mTodoListView->setColumnWidthMode(1, QListView::Manual); 384 mTodoListView->setColumnWidthMode(1, QListView::Manual);
384 mTodoListView->setColumnWidthMode(2, QListView::Manual); 385 mTodoListView->setColumnWidthMode(2, QListView::Manual);
385 mTodoListView->setColumnWidthMode(3, QListView::Manual); 386 mTodoListView->setColumnWidthMode(3, QListView::Manual);
386 mTodoListView->setColumnWidthMode(4, QListView::Manual); 387 mTodoListView->setColumnWidthMode(4, QListView::Manual);
387 mTodoListView->setColumnWidthMode(5, QListView::Manual); 388 mTodoListView->setColumnWidthMode(5, QListView::Manual);
388 mTodoListView->setColumnWidthMode(6, QListView::Manual); 389 mTodoListView->setColumnWidthMode(6, QListView::Manual);
389 mTodoListView->setColumnWidthMode(7, QListView::Manual); 390 mTodoListView->setColumnWidthMode(7, QListView::Manual);
390 mTodoListView->setColumnWidthMode(8, QListView::Manual); 391 mTodoListView->setColumnWidthMode(8, QListView::Manual);
391 392
392 393
393 mPriorityPopupMenu = new QPopupMenu(this); 394 mPriorityPopupMenu = new QPopupMenu(this);
394 for (int i = 1; i <= 5; i++) { 395 for (int i = 1; i <= 5; i++) {
395 QString label = QString ("%1").arg (i); 396 QString label = QString ("%1").arg (i);
396 mPriority[mPriorityPopupMenu->insertItem (label)] = i; 397 mPriority[mPriorityPopupMenu->insertItem (label)] = i;
397 } 398 }
398 connect (mPriorityPopupMenu, SIGNAL(activated (int)), SLOT (setNewPriority(int))); 399 connect (mPriorityPopupMenu, SIGNAL(activated (int)), SLOT (setNewPriority(int)));
399 400
400 mPercentageCompletedPopupMenu = new QPopupMenu(this); 401 mPercentageCompletedPopupMenu = new QPopupMenu(this);
401 for (int i = 0; i <= 100; i+=20) { 402 for (int i = 0; i <= 100; i+=20) {
402 QString label = QString ("%1 %").arg (i); 403 QString label = QString ("%1 %").arg (i);
403 mPercentage[mPercentageCompletedPopupMenu->insertItem (label)] = i; 404 mPercentage[mPercentageCompletedPopupMenu->insertItem (label)] = i;
404 } 405 }
405 connect (mPercentageCompletedPopupMenu, SIGNAL (activated (int)), SLOT (setNewPercentage (int))); 406 connect (mPercentageCompletedPopupMenu, SIGNAL (activated (int)), SLOT (setNewPercentage (int)));
406 407
407 408
408 409
409 mItemPopupMenu = new QPopupMenu(this); 410 mItemPopupMenu = new QPopupMenu(this);
410 mItemPopupMenu->insertItem(i18n("Show..."), this, 411 mItemPopupMenu->insertItem(i18n("Show..."), this,
411 SLOT (showTodo())); 412 SLOT (showTodo()));
412 mItemPopupMenu->insertItem(i18n("Edit..."), this, 413 mItemPopupMenu->insertItem(i18n("Edit..."), this,
413 SLOT (editTodo())); 414 SLOT (editTodo()));
414 mItemPopupMenu->insertItem( i18n("Delete"), this, 415 mItemPopupMenu->insertItem( i18n("Delete"), this,
415 SLOT (deleteTodo())); 416 SLOT (deleteTodo()));
416 mItemPopupMenu->insertItem( i18n("Clone..."), this, 417 mItemPopupMenu->insertItem( i18n("Clone..."), this,
417 SLOT (cloneTodo())); 418 SLOT (cloneTodo()));
418 mItemPopupMenu->insertItem( i18n("Move..."), this, 419 mItemPopupMenu->insertItem( i18n("Move..."), this,
419 SLOT (moveTodo())); 420 SLOT (moveTodo()));
420 mItemPopupMenu->insertItem( i18n("Beam..."), this, 421 mItemPopupMenu->insertItem( i18n("Beam..."), this,
421 SLOT (beamTodo())); 422 SLOT (beamTodo()));
422 mItemPopupMenu->insertItem( i18n("Toggle Cancel"), this, 423 mItemPopupMenu->insertItem( i18n("Toggle Cancel"), this,
423 SLOT (cancelTodo())); 424 SLOT (cancelTodo()));
424 mItemPopupMenu->insertSeparator(); 425 mItemPopupMenu->insertSeparator();
425 426
426 mItemPopupMenu->insertItem( i18n("New Todo..."), this, 427 mItemPopupMenu->insertItem( i18n("New Todo..."), this,
427 SLOT (newTodo())); 428 SLOT (newTodo()));
428 mItemPopupMenu->insertItem(i18n("New Sub-Todo..."), this, 429 mItemPopupMenu->insertItem(i18n("New Sub-Todo..."), this,
429 SLOT (newSubTodo())); 430 SLOT (newSubTodo()));
430 mItemPopupMenu->insertItem(i18n("Unparent Todo"), this, 431 mItemPopupMenu->insertItem(i18n("Unparent Todo"), this,
431 SLOT (unparentTodo()),0,21); 432 SLOT (unparentTodo()),0,21);
432 mItemPopupMenu->insertItem(i18n("Reparent Todo"), this, 433 mItemPopupMenu->insertItem(i18n("Reparent Todo"), this,
@@ -440,200 +441,212 @@ KOTodoView::KOTodoView(Calendar *calendar,QWidget* parent,const char* name) :
440 mItemPopupMenu->insertItem(i18n("toggle quick todo","Show Quick Todo"), 441 mItemPopupMenu->insertItem(i18n("toggle quick todo","Show Quick Todo"),
441 this, SLOT( toggleQuickTodo() ),0, 34 ); 442 this, SLOT( toggleQuickTodo() ),0, 34 );
442 mItemPopupMenu->insertItem(i18n("toggle running todo","Hide not Running"), 443 mItemPopupMenu->insertItem(i18n("toggle running todo","Hide not Running"),
443 this, SLOT( toggleRunning() ),0, 35 ); 444 this, SLOT( toggleRunning() ),0, 35 );
444 445
445#endif 446#endif
446 mPopupMenu = new QPopupMenu(this); 447 mPopupMenu = new QPopupMenu(this);
447 mPopupMenu->insertItem(SmallIconSet("todo"), i18n("New Todo..."), this, 448 mPopupMenu->insertItem(SmallIconSet("todo"), i18n("New Todo..."), this,
448 SLOT (newTodo()),0,1); 449 SLOT (newTodo()),0,1);
449 mPopupMenu->insertItem(i18n("delete completed To-Dos","Purge Completed"), 450 mPopupMenu->insertItem(i18n("delete completed To-Dos","Purge Completed"),
450 this, SLOT(purgeCompleted()),0,2); 451 this, SLOT(purgeCompleted()),0,2);
451 mPopupMenu->insertItem(i18n("Show Completed"), 452 mPopupMenu->insertItem(i18n("Show Completed"),
452 this, SLOT( toggleCompleted() ),0,3 ); 453 this, SLOT( toggleCompleted() ),0,3 );
453 mPopupMenu->insertItem(i18n("toggle quick todo","Show Quick Todo"), 454 mPopupMenu->insertItem(i18n("toggle quick todo","Show Quick Todo"),
454 this, SLOT( toggleQuickTodo() ),0,4 ); 455 this, SLOT( toggleQuickTodo() ),0,4 );
455 mPopupMenu->insertItem(i18n("toggle running todo","Hide not Running"), 456 mPopupMenu->insertItem(i18n("toggle running todo","Hide not Running"),
456 this, SLOT( toggleRunning() ),0,5 ); 457 this, SLOT( toggleRunning() ),0,5 );
457 mPopupMenu->insertItem(i18n(" set all open","Display all opened"), 458 mPopupMenu->insertItem(i18n(" set all open","Display all opened"),
458 this, SLOT( setAllOpen() ),0,6 ); 459 this, SLOT( setAllOpen() ),0,6 );
459 mPopupMenu->insertItem(i18n(" set all close","Display all closed"), 460 mPopupMenu->insertItem(i18n(" set all close","Display all closed"),
460 this, SLOT( setAllClose() ),0,7 ); 461 this, SLOT( setAllClose() ),0,7 );
461 mPopupMenu->insertItem(i18n(" set all flat","Display all flat"), 462 mPopupMenu->insertItem(i18n(" set all flat","Display all flat"),
462 this, SLOT( setAllFlat() ),0,8 ); 463 this, SLOT( setAllFlat() ),0,8 );
463 mDocPrefs = new DocPrefs( name ); 464 mDocPrefs = new DocPrefs( name );
464 465
465 mItemPopupMenu->insertItem(i18n("Todo View"),mPopupMenu ); 466 mItemPopupMenu->insertItem(i18n("Todo View"),mPopupMenu );
466 mPopupMenu->setCheckable( true ); 467 mPopupMenu->setCheckable( true );
467 mItemPopupMenu->setCheckable( true ); 468 mItemPopupMenu->setCheckable( true );
468 469
469 470
470 mPopupMenu->setItemChecked( 3,KOPrefs::instance()->mShowCompletedTodo ); 471 mPopupMenu->setItemChecked( 3,KOPrefs::instance()->mShowCompletedTodo );
471 mItemPopupMenu->setItemChecked( 33 , KOPrefs::instance()->mShowCompletedTodo ); 472 mItemPopupMenu->setItemChecked( 33 , KOPrefs::instance()->mShowCompletedTodo );
472 473
473 mPopupMenu->setItemChecked(4,KOPrefs::instance()->mEnableQuickTodo); 474 mPopupMenu->setItemChecked(4,KOPrefs::instance()->mEnableQuickTodo);
474 mItemPopupMenu->setItemChecked( 34 , KOPrefs::instance()->mEnableQuickTodo ); 475 mItemPopupMenu->setItemChecked( 34 , KOPrefs::instance()->mEnableQuickTodo );
475 476
476 mPopupMenu->setItemChecked(5,KOPrefs::instance()->mHideNonStartedTodos); 477 mPopupMenu->setItemChecked(5,KOPrefs::instance()->mHideNonStartedTodos);
477 mItemPopupMenu->setItemChecked( 35 , KOPrefs::instance()->mHideNonStartedTodos ); 478 mItemPopupMenu->setItemChecked( 35 , KOPrefs::instance()->mHideNonStartedTodos );
478 479
479 480
480 // Double clicking conflicts with opening/closing the subtree 481 // Double clicking conflicts with opening/closing the subtree
481 connect( mTodoListView, SIGNAL( doubleClicked( QListViewItem *) ), 482 connect( mTodoListView, SIGNAL( doubleClicked( QListViewItem *) ),
482 SLOT( editItem( QListViewItem *) ) ); 483 SLOT( editItem( QListViewItem *) ) );
483 /* 484 /*
484 connect( mTodoListView, SIGNAL( rightButtonClicked ( QListViewItem *, 485 connect( mTodoListView, SIGNAL( rightButtonClicked ( QListViewItem *,
485 const QPoint &,int ) ), 486 const QPoint &,int ) ),
486 SLOT( popupMenu( QListViewItem *, const QPoint & ,int) ) ); 487 SLOT( popupMenu( QListViewItem *, const QPoint & ,int) ) );
487 */ 488 */
488 connect( mTodoListView, SIGNAL( contextRequest ( QListViewItem *, 489 connect( mTodoListView, SIGNAL( contextRequest ( QListViewItem *,
489 const QPoint &,int ) ), 490 const QPoint &,int ) ),
490 SLOT( popupMenu( QListViewItem *, const QPoint & ,int) ) ); 491 SLOT( popupMenu( QListViewItem *, const QPoint & ,int) ) );
491 connect( mTodoListView, SIGNAL( clicked( QListViewItem * ) ), 492 connect( mTodoListView, SIGNAL( clicked( QListViewItem * ) ),
492 SLOT( itemClicked( QListViewItem * ) ) ); 493 SLOT( itemClicked( QListViewItem * ) ) );
493 connect( mTodoListView, SIGNAL( double_Clicked( QListViewItem * ) ), 494 connect( mTodoListView, SIGNAL( double_Clicked( QListViewItem * ) ),
494 SLOT( itemDoubleClicked( QListViewItem * ) ) ); 495 SLOT( itemDoubleClicked( QListViewItem * ) ) );
495 connect( mTodoListView, SIGNAL( todoDropped( Todo *, int ) ), 496 connect( mTodoListView, SIGNAL( todoDropped( Todo *, int ) ),
496 SLOT( updateView() ) ); 497 SLOT( updateView() ) );
497 connect( mTodoListView, SIGNAL( todoDropped( Todo *, int ) ), 498 connect( mTodoListView, SIGNAL( todoDropped( Todo *, int ) ),
498 SLOT( todoModified(Todo *, int) ) ); 499 SLOT( todoModified(Todo *, int) ) );
499 connect( mTodoListView, SIGNAL( expanded( QListViewItem * ) ), 500 connect( mTodoListView, SIGNAL( expanded( QListViewItem * ) ),
500 SLOT( itemStateChanged( QListViewItem * ) ) ); 501 SLOT( itemStateChanged( QListViewItem * ) ) );
501 connect( mTodoListView, SIGNAL( collapsed( QListViewItem * ) ), 502 connect( mTodoListView, SIGNAL( collapsed( QListViewItem * ) ),
502 SLOT( itemStateChanged( QListViewItem * ) ) ); 503 SLOT( itemStateChanged( QListViewItem * ) ) );
503 504
504#if 0 505#if 0
505 connect(mTodoListView,SIGNAL(selectionChanged(QListViewItem *)), 506 connect(mTodoListView,SIGNAL(selectionChanged(QListViewItem *)),
506 SLOT(selectionChanged(QListViewItem *))); 507 SLOT(selectionChanged(QListViewItem *)));
507 connect(mTodoListView,SIGNAL(clicked(QListViewItem *)), 508 connect(mTodoListView,SIGNAL(clicked(QListViewItem *)),
508 SLOT(selectionChanged(QListViewItem *))); 509 SLOT(selectionChanged(QListViewItem *)));
509 connect(mTodoListView,SIGNAL(pressed(QListViewItem *)), 510 connect(mTodoListView,SIGNAL(pressed(QListViewItem *)),
510 SLOT(selectionChanged(QListViewItem *))); 511 SLOT(selectionChanged(QListViewItem *)));
511#endif 512#endif
512 513
513 connect( mTodoListView, SIGNAL(reparentTodoSignal( Todo *,Todo * ) ), SIGNAL(reparentTodoSignal( Todo *,Todo * ) )); 514 connect( mTodoListView, SIGNAL(reparentTodoSignal( Todo *,Todo * ) ), SIGNAL(reparentTodoSignal( Todo *,Todo * ) ));
514 connect( mTodoListView, SIGNAL(unparentTodoSignal(Todo *) ), SIGNAL(unparentTodoSignal(Todo *) )); 515 connect( mTodoListView, SIGNAL(unparentTodoSignal(Todo *) ), SIGNAL(unparentTodoSignal(Todo *) ));
515 connect( mTodoListView, SIGNAL( deleteTodo(Todo *) ), SIGNAL(deleteTodoSignal(Todo *) )); 516 connect( mTodoListView, SIGNAL( deleteTodo(Todo *) ), SIGNAL(deleteTodoSignal(Todo *) ));
516 517
517 connect( mTodoListView, SIGNAL(selectionChanged() ), 518 connect( mTodoListView, SIGNAL(selectionChanged() ),
518 SLOT( processSelectionChange() ) ); 519 SLOT( processSelectionChange() ) );
519 connect( mQuickAdd, SIGNAL( returnPressed () ), 520 connect( mQuickAdd, SIGNAL( returnPressed () ),
520 SLOT( addQuickTodo() ) ); 521 SLOT( addQuickTodo() ) );
521 522
522} 523}
523 524
524KOTodoView::~KOTodoView() 525KOTodoView::~KOTodoView()
525{ 526{
526 delete mDocPrefs; 527 delete mDocPrefs;
527} 528}
528 529
529void KOTodoView::jumpToDate () 530void KOTodoView::jumpToDate ()
530{ 531{
531 // if (mActiveItem) { 532 // if (mActiveItem) {
532// mActiveItem->todo()); 533// mActiveItem->todo());
533// if ( mActiveItem->todo()->hasDueDate() ) 534// if ( mActiveItem->todo()->hasDueDate() )
534// emit mActiveItem->todo()jumpToTime( mTodo->dtDue().date() ); 535// emit mActiveItem->todo()jumpToTime( mTodo->dtDue().date() );
535} 536}
536 537void KOTodoView::paintEvent(QPaintEvent * pevent)
538{
539 if ( mPendingUpdateBeforeRepaint ) {
540 updateView();
541 mPendingUpdateBeforeRepaint = false;
542 }
543 KOrg::BaseView::paintEvent( pevent);
544}
545 bool mPendingUpdateBeforeRepaint;
537void KOTodoView::updateView() 546void KOTodoView::updateView()
538{ 547{
539 pendingSubtodo = 0; 548 pendingSubtodo = 0;
540 if ( mBlockUpdate ) { 549 if ( mBlockUpdate ) {
541 //qDebug("blocked ");
542 return; 550 return;
543 } 551 }
552 if ( !isVisible() ) {
553 mPendingUpdateBeforeRepaint = true;
554 return;
555 }
556 //qDebug("KOTodoView::updateView() %x", this);
544 if ( isFlatDisplay ) { 557 if ( isFlatDisplay ) {
545 setAllFlat(); 558 setAllFlat();
546 return; 559 return;
547 } 560 }
548 //qDebug("update "); 561 //qDebug("update ");
549// kdDebug() << "KOTodoView::updateView()" << endl; 562// kdDebug() << "KOTodoView::updateView()" << endl;
550 QFont fo = KOPrefs::instance()->mTodoViewFont; 563 QFont fo = KOPrefs::instance()->mTodoViewFont;
551 mTodoListView->clear(); 564 mTodoListView->clear();
552 if ( mName == "todolistsmall" ) { 565 if ( mName == "todolistsmall" ) {
553 if ( KOPrefs::instance()->mTodoViewUsesSmallFont ) { 566 if ( KOPrefs::instance()->mTodoViewUsesSmallFont ) {
554 int ps = fo.pointSize() -2; 567 int ps = fo.pointSize() -2;
555 if ( ps > 12 ) 568 if ( ps > 12 )
556 ps -= 2; 569 ps -= 2;
557 fo.setPointSize( ps ); 570 fo.setPointSize( ps );
558 } 571 }
559 } 572 }
560 573
561 mTodoListView->setFont( fo ); 574 mTodoListView->setFont( fo );
562 // QFontMetrics fm ( KOPrefs::instance()->mTodoViewFont ); 575 // QFontMetrics fm ( KOPrefs::instance()->mTodoViewFont );
563 //mTodoListView->header()->setMaximumHeight(fm.height()); 576 //mTodoListView->header()->setMaximumHeight(fm.height());
564 QPtrList<Todo> todoList = calendar()->todos(); 577 QPtrList<Todo> todoList = calendar()->todos();
565 578
566/* 579/*
567 kdDebug() << "KOTodoView::updateView(): Todo List:" << endl; 580 kdDebug() << "KOTodoView::updateView(): Todo List:" << endl;
568 Event *t; 581 Event *t;
569 for(t = todoList.first(); t; t = todoList.next()) { 582 for(t = todoList.first(); t; t = todoList.next()) {
570 kdDebug() << " " << t->getSummary() << endl; 583 kdDebug() << " " << t->getSummary() << endl;
571 584
572 if (t->getRelatedTo()) { 585 if (t->getRelatedTo()) {
573 kdDebug() << " (related to " << t->getRelatedTo()->getSummary() << ")" << endl; 586 kdDebug() << " (related to " << t->getRelatedTo()->getSummary() << ")" << endl;
574 } 587 }
575 588
576 QPtrList<Event> l = t->getRelations(); 589 QPtrList<Event> l = t->getRelations();
577 Event *c; 590 Event *c;
578 for(c=l.first();c;c=l.next()) { 591 for(c=l.first();c;c=l.next()) {
579 kdDebug() << " - relation: " << c->getSummary() << endl; 592 kdDebug() << " - relation: " << c->getSummary() << endl;
580 } 593 }
581 } 594 }
582*/ 595*/
583 596
584 // Put for each Event a KOTodoViewItem in the list view. Don't rely on a 597 // Put for each Event a KOTodoViewItem in the list view. Don't rely on a
585 // specific order of events. That means that we have to generate parent items 598 // specific order of events. That means that we have to generate parent items
586 // recursively for proper hierarchical display of Todos. 599 // recursively for proper hierarchical display of Todos.
587 mTodoMap.clear(); 600 mTodoMap.clear();
588 Todo *todo; 601 Todo *todo;
589 todo = todoList.first();// todo; todo = todoList.next()) { 602 todo = todoList.first();// todo; todo = todoList.next()) {
590 while ( todo ) { 603 while ( todo ) {
591 bool next = true; 604 bool next = true;
592 // qDebug("todo %s ", todo->summary().latin1()); 605 // qDebug("todo %s ", todo->summary().latin1());
593 Incidence *incidence = todo->relatedTo(); 606 Incidence *incidence = todo->relatedTo();
594 while ( incidence ) { 607 while ( incidence ) {
595 if ( incidence->type() == "Todo") { 608 if ( incidence->type() == "Todo") {
596 //qDebug("related %s ",incidence->summary().latin1() ); 609 //qDebug("related %s ",incidence->summary().latin1() );
597 if ( !(todoList.contains ( ((Todo* )incidence ) ) )) { 610 if ( !(todoList.contains ( ((Todo* )incidence ) ) )) {
598 //qDebug("related not found "); 611 //qDebug("related not found ");
599 todoList.remove( ); 612 todoList.remove( );
600 todo = todoList.current(); 613 todo = todoList.current();
601 next = false; 614 next = false;
602 incidence = 0; 615 incidence = 0;
603 616
604 } else { 617 } else {
605 //qDebug("related found "); 618 //qDebug("related found ");
606 incidence = incidence->relatedTo(); 619 incidence = incidence->relatedTo();
607 } 620 }
608 } else 621 } else
609 incidence = 0; 622 incidence = 0;
610 } 623 }
611 if ( next ) 624 if ( next )
612 todo = todoList.next(); 625 todo = todoList.next();
613 } 626 }
614// qDebug("again .... "); 627// qDebug("again .... ");
615// for(todo = todoList.first(); todo; todo = todoList.next()) { 628// for(todo = todoList.first(); todo; todo = todoList.next()) {
616 629
617// qDebug("yytodo %s ", todo->summary().latin1()); 630// qDebug("yytodo %s ", todo->summary().latin1());
618// } 631// }
619 //qDebug("for "); 632 //qDebug("for ");
620 for(todo = todoList.first(); todo; todo = todoList.next()) { 633 for(todo = todoList.first(); todo; todo = todoList.next()) {
621 if (!mTodoMap.contains(todo) && checkTodo( todo ) ) 634 if (!mTodoMap.contains(todo) && checkTodo( todo ) )
622 { 635 {
623 insertTodoItem(todo); 636 insertTodoItem(todo);
624 } 637 }
625 } 638 }
626 //qDebug("for end "); 639 //qDebug("for end ");
627 // Restore opened/closed state 640 // Restore opened/closed state
628 mTodoListView->blockSignals( true ); 641 mTodoListView->blockSignals( true );
629 if( mDocPrefs ) restoreItemState( mTodoListView->firstChild() ); 642 if( mDocPrefs ) restoreItemState( mTodoListView->firstChild() );
630 mTodoListView->blockSignals( false ); 643 mTodoListView->blockSignals( false );
631 mTodoListView->setFocus(); 644 mTodoListView->setFocus();
632 processSelectionChange(); 645 processSelectionChange();
633} 646}
634 647
635bool KOTodoView::checkTodo( Todo * todo ) 648bool KOTodoView::checkTodo( Todo * todo )
636{ 649{
637 650
638 if ( !KOPrefs::instance()->mShowCompletedTodo && todo->isCompleted() ) 651 if ( !KOPrefs::instance()->mShowCompletedTodo && todo->isCompleted() )
639 return false; 652 return false;