author | zautrix <zautrix> | 2004-10-16 13:36:11 (UTC) |
---|---|---|
committer | zautrix <zautrix> | 2004-10-16 13:36:11 (UTC) |
commit | c3325ebbb92a2814fcb622caaf71316cfa0c2908 (patch) (unidiff) | |
tree | b53545c39f84fc6ce694f371509b4a9fe2ddd743 /korganizer/kotodoview.cpp | |
parent | 023b3c542a6dd4d1c4b53dba6bb2c68f605a7917 (diff) | |
download | kdepimpi-c3325ebbb92a2814fcb622caaf71316cfa0c2908.zip kdepimpi-c3325ebbb92a2814fcb622caaf71316cfa0c2908.tar.gz kdepimpi-c3325ebbb92a2814fcb622caaf71316cfa0c2908.tar.bz2 |
made todos reparentable
-rw-r--r-- | korganizer/kotodoview.cpp | 88 |
1 files changed, 84 insertions, 4 deletions
diff --git a/korganizer/kotodoview.cpp b/korganizer/kotodoview.cpp index ca5eadd..a8143a0 100644 --- a/korganizer/kotodoview.cpp +++ b/korganizer/kotodoview.cpp | |||
@@ -190,48 +190,49 @@ void KOTodoListView::contentsDropEvent(QDropEvent *e) | |||
190 | void KOTodoListView::contentsMousePressEvent(QMouseEvent* e) | 190 | void KOTodoListView::contentsMousePressEvent(QMouseEvent* e) |
191 | { | 191 | { |
192 | QListView::contentsMousePressEvent(e); | 192 | QListView::contentsMousePressEvent(e); |
193 | #ifndef KORG_NODND | 193 | #ifndef KORG_NODND |
194 | QPoint p(contentsToViewport(e->pos())); | 194 | QPoint p(contentsToViewport(e->pos())); |
195 | QListViewItem *i = itemAt(p); | 195 | QListViewItem *i = itemAt(p); |
196 | if (i) { | 196 | if (i) { |
197 | // if the user clicked into the root decoration of the item, don't | 197 | // if the user clicked into the root decoration of the item, don't |
198 | // try to start a drag! | 198 | // try to start a drag! |
199 | if (p.x() > header()->sectionPos(header()->mapToIndex(0)) + | 199 | if (p.x() > header()->sectionPos(header()->mapToIndex(0)) + |
200 | treeStepSize() * (i->depth() + (rootIsDecorated() ? 1 : 0)) + | 200 | treeStepSize() * (i->depth() + (rootIsDecorated() ? 1 : 0)) + |
201 | itemMargin() || | 201 | itemMargin() || |
202 | p.x() < header()->sectionPos(header()->mapToIndex(0))) { | 202 | p.x() < header()->sectionPos(header()->mapToIndex(0))) { |
203 | if (e->button()==Qt::LeftButton) { | 203 | if (e->button()==Qt::LeftButton) { |
204 | mPressPos = e->pos(); | 204 | mPressPos = e->pos(); |
205 | mMousePressed = true; | 205 | mMousePressed = true; |
206 | } | 206 | } |
207 | } | 207 | } |
208 | } | 208 | } |
209 | #endif | 209 | #endif |
210 | } | 210 | } |
211 | 211 | ||
212 | void KOTodoListView::contentsMouseMoveEvent(QMouseEvent* e) | 212 | void KOTodoListView::contentsMouseMoveEvent(QMouseEvent* e) |
213 | { | 213 | { |
214 | |||
214 | #ifndef KORG_NODND | 215 | #ifndef KORG_NODND |
215 | // kdDebug() << "KOTodoListView::contentsMouseMoveEvent()" << endl; | 216 | // kdDebug() << "KOTodoListView::contentsMouseMoveEvent()" << endl; |
216 | QListView::contentsMouseMoveEvent(e); | 217 | QListView::contentsMouseMoveEvent(e); |
217 | if (mMousePressed && (mPressPos - e->pos()).manhattanLength() > | 218 | if (mMousePressed && (mPressPos - e->pos()).manhattanLength() > |
218 | QApplication::startDragDistance()) { | 219 | QApplication::startDragDistance()) { |
219 | mMousePressed = false; | 220 | mMousePressed = false; |
220 | QListViewItem *item = itemAt(contentsToViewport(mPressPos)); | 221 | QListViewItem *item = itemAt(contentsToViewport(mPressPos)); |
221 | if (item) { | 222 | if (item) { |
222 | // kdDebug() << "Start Drag for item " << item->text(0) << endl; | 223 | // kdDebug() << "Start Drag for item " << item->text(0) << endl; |
223 | DndFactory factory( mCalendar ); | 224 | DndFactory factory( mCalendar ); |
224 | ICalDrag *vd = factory.createDragTodo( | 225 | ICalDrag *vd = factory.createDragTodo( |
225 | ((KOTodoViewItem *)item)->todo(),viewport()); | 226 | ((KOTodoViewItem *)item)->todo(),viewport()); |
226 | if (vd->drag()) { | 227 | if (vd->drag()) { |
227 | kdDebug() << "KOTodoListView::contentsMouseMoveEvent(): Delete drag source" << endl; | 228 | kdDebug() << "KOTodoListView::contentsMouseMoveEvent(): Delete drag source" << endl; |
228 | } | 229 | } |
229 | /* | 230 | /* |
230 | QString source = fullPath(item); | 231 | QString source = fullPath(item); |
231 | if ( QFile::exists(source) ) { | 232 | if ( QFile::exists(source) ) { |
232 | QUriDrag* ud = new QUriDrag(viewport()); | 233 | QUriDrag* ud = new QUriDrag(viewport()); |
233 | ud->setFilenames( source ); | 234 | ud->setFilenames( source ); |
234 | if ( ud->drag() ) | 235 | if ( ud->drag() ) |
235 | QMessageBox::information( this, "Drag source", | 236 | QMessageBox::information( this, "Drag source", |
236 | QString("Delete ")+source, "Not implemented" ); | 237 | QString("Delete ")+source, "Not implemented" ); |
237 | */ | 238 | */ |
@@ -253,48 +254,50 @@ void KOTodoListView::keyPressEvent ( QKeyEvent * e ) | |||
253 | else | 254 | else |
254 | ci->setOn( true ); | 255 | ci->setOn( true ); |
255 | cn = cn->nextSibling(); | 256 | cn = cn->nextSibling(); |
256 | if ( cn ) { | 257 | if ( cn ) { |
257 | setCurrentItem ( cn ); | 258 | setCurrentItem ( cn ); |
258 | ensureItemVisible ( cn ); | 259 | ensureItemVisible ( cn ); |
259 | } | 260 | } |
260 | 261 | ||
261 | } | 262 | } |
262 | } | 263 | } |
263 | 264 | ||
264 | return; | 265 | return; |
265 | } | 266 | } |
266 | 267 | ||
267 | // qDebug("KOTodoListView::keyPressEvent "); | 268 | // qDebug("KOTodoListView::keyPressEvent "); |
268 | if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton || mName != "todolistsmall" ) { | 269 | if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton || mName != "todolistsmall" ) { |
269 | switch ( e->key() ) { | 270 | switch ( e->key() ) { |
270 | case Qt::Key_Down: | 271 | case Qt::Key_Down: |
271 | case Qt::Key_Up: | 272 | case Qt::Key_Up: |
272 | QListView::keyPressEvent ( e ); | 273 | QListView::keyPressEvent ( e ); |
273 | break; | 274 | break; |
274 | case Qt::Key_Left: | 275 | case Qt::Key_Left: |
275 | case Qt::Key_Right: | 276 | case Qt::Key_Right: |
276 | QListView::keyPressEvent ( e ); | 277 | QListView::keyPressEvent ( e ); |
278 | e->accept(); | ||
279 | return; | ||
277 | break; | 280 | break; |
278 | default: | 281 | default: |
279 | e->ignore(); | 282 | e->ignore(); |
280 | break; | 283 | break; |
281 | } | 284 | } |
282 | return; | 285 | return; |
283 | } | 286 | } |
284 | e->ignore(); | 287 | e->ignore(); |
285 | } | 288 | } |
286 | void KOTodoListView::contentsMouseReleaseEvent(QMouseEvent *e) | 289 | void KOTodoListView::contentsMouseReleaseEvent(QMouseEvent *e) |
287 | { | 290 | { |
288 | QListView::contentsMouseReleaseEvent(e); | 291 | QListView::contentsMouseReleaseEvent(e); |
289 | mMousePressed = false; | 292 | mMousePressed = false; |
290 | } | 293 | } |
291 | 294 | ||
292 | void KOTodoListView::contentsMouseDoubleClickEvent(QMouseEvent *e) | 295 | void KOTodoListView::contentsMouseDoubleClickEvent(QMouseEvent *e) |
293 | { | 296 | { |
294 | if (!e) return; | 297 | if (!e) return; |
295 | 298 | ||
296 | QPoint vp = contentsToViewport(e->pos()); | 299 | QPoint vp = contentsToViewport(e->pos()); |
297 | 300 | ||
298 | QListViewItem *item = itemAt(vp); | 301 | QListViewItem *item = itemAt(vp); |
299 | 302 | ||
300 | emit double_Clicked(item); | 303 | emit double_Clicked(item); |
@@ -393,76 +396,83 @@ KOTodoView::KOTodoView(Calendar *calendar,QWidget* parent,const char* name) : | |||
393 | 396 | ||
394 | 397 | ||
395 | mItemPopupMenu = new QPopupMenu(this); | 398 | mItemPopupMenu = new QPopupMenu(this); |
396 | mItemPopupMenu->insertItem(i18n("Show..."), this, | 399 | mItemPopupMenu->insertItem(i18n("Show..."), this, |
397 | SLOT (showTodo())); | 400 | SLOT (showTodo())); |
398 | mItemPopupMenu->insertItem(i18n("Edit..."), this, | 401 | mItemPopupMenu->insertItem(i18n("Edit..."), this, |
399 | SLOT (editTodo())); | 402 | SLOT (editTodo())); |
400 | mItemPopupMenu->insertItem( i18n("Delete"), this, | 403 | mItemPopupMenu->insertItem( i18n("Delete"), this, |
401 | SLOT (deleteTodo())); | 404 | SLOT (deleteTodo())); |
402 | mItemPopupMenu->insertItem( i18n("Clone..."), this, | 405 | mItemPopupMenu->insertItem( i18n("Clone..."), this, |
403 | SLOT (cloneTodo())); | 406 | SLOT (cloneTodo())); |
404 | mItemPopupMenu->insertItem( i18n("Move..."), this, | 407 | mItemPopupMenu->insertItem( i18n("Move..."), this, |
405 | SLOT (moveTodo())); | 408 | SLOT (moveTodo())); |
406 | mItemPopupMenu->insertItem( i18n("Beam..."), this, | 409 | mItemPopupMenu->insertItem( i18n("Beam..."), this, |
407 | SLOT (beamTodo())); | 410 | SLOT (beamTodo())); |
408 | mItemPopupMenu->insertItem( i18n("Toggle Cancel"), this, | 411 | mItemPopupMenu->insertItem( i18n("Toggle Cancel"), this, |
409 | SLOT (cancelTodo())); | 412 | SLOT (cancelTodo())); |
410 | mItemPopupMenu->insertSeparator(); | 413 | mItemPopupMenu->insertSeparator(); |
411 | 414 | ||
412 | mItemPopupMenu->insertItem( i18n("New Todo..."), this, | 415 | mItemPopupMenu->insertItem( i18n("New Todo..."), this, |
413 | SLOT (newTodo())); | 416 | SLOT (newTodo())); |
414 | mItemPopupMenu->insertItem(i18n("New Sub-Todo..."), this, | 417 | mItemPopupMenu->insertItem(i18n("New Sub-Todo..."), this, |
415 | SLOT (newSubTodo())); | 418 | SLOT (newSubTodo())); |
416 | mItemPopupMenu->insertItem(i18n("Unparent Todo"), this, | 419 | mItemPopupMenu->insertItem(i18n("Unparent Todo"), this, |
417 | SLOT (unparentTodo())); | 420 | SLOT (unparentTodo()),0,21); |
421 | mItemPopupMenu->insertItem(i18n("Reparent Todo"), this, | ||
422 | SLOT (reparentTodo()),0,22); | ||
418 | mItemPopupMenu->insertSeparator(); | 423 | mItemPopupMenu->insertSeparator(); |
419 | mItemPopupMenu->insertItem(i18n("Delete completed To-Dos","Purge Completed"), | 424 | mItemPopupMenu->insertItem(i18n("Delete completed To-Dos","Purge Completed"), |
420 | this, SLOT( purgeCompleted() ) ); | 425 | this, SLOT( purgeCompleted() ) ); |
421 | mItemPopupMenu->insertItem(i18n("toggle completed To-Dos","Show Completed"), | 426 | mItemPopupMenu->insertItem(i18n("toggle completed To-Dos","Show Completed"), |
422 | this, SLOT( toggleCompleted() ),0, 33 ); | 427 | this, SLOT( toggleCompleted() ),0, 33 ); |
423 | mItemPopupMenu->insertItem(i18n("toggle quick todo","Show Quick Todo"), | 428 | mItemPopupMenu->insertItem(i18n("toggle quick todo","Show Quick Todo"), |
424 | this, SLOT( toggleQuickTodo() ),0, 34 ); | 429 | this, SLOT( toggleQuickTodo() ),0, 34 ); |
425 | 430 | ||
426 | mPopupMenu = new QPopupMenu(this); | 431 | mPopupMenu = new QPopupMenu(this); |
427 | mPopupMenu->insertItem(SmallIconSet("todo"), i18n("New Todo..."), this, | 432 | mPopupMenu->insertItem(SmallIconSet("todo"), i18n("New Todo..."), this, |
428 | SLOT (newTodo()),0,1); | 433 | SLOT (newTodo()),0,1); |
429 | mPopupMenu->insertItem(i18n("delete completed To-Dos","Purge Completed"), | 434 | mPopupMenu->insertItem(i18n("delete completed To-Dos","Purge Completed"), |
430 | this, SLOT(purgeCompleted()),0,2); | 435 | this, SLOT(purgeCompleted()),0,2); |
431 | mPopupMenu->insertItem(i18n("Show Completed"), | 436 | mPopupMenu->insertItem(i18n("Show Completed"), |
432 | this, SLOT( toggleCompleted() ),0,3 ); | 437 | this, SLOT( toggleCompleted() ),0,3 ); |
433 | mPopupMenu->insertItem(i18n("toggle quick todo","Show Quick Todo"), | 438 | mPopupMenu->insertItem(i18n("toggle quick todo","Show Quick Todo"), |
434 | this, SLOT( toggleQuickTodo() ),0,4 ); | 439 | this, SLOT( toggleQuickTodo() ),0,4 ); |
435 | mDocPrefs = new DocPrefs( name ); | 440 | mDocPrefs = new DocPrefs( name ); |
436 | 441 | ||
437 | mPopupMenu->setCheckable( true ); | 442 | mPopupMenu->setCheckable( true ); |
438 | mItemPopupMenu->setCheckable( true ); | 443 | mItemPopupMenu->setCheckable( true ); |
439 | // Double clicking conflicts with opening/closing the subtree | 444 | // Double clicking conflicts with opening/closing the subtree |
440 | connect( mTodoListView, SIGNAL( doubleClicked( QListViewItem *) ), | 445 | connect( mTodoListView, SIGNAL( doubleClicked( QListViewItem *) ), |
441 | SLOT( editItem( QListViewItem *) ) ); | 446 | SLOT( editItem( QListViewItem *) ) ); |
447 | /* | ||
442 | connect( mTodoListView, SIGNAL( rightButtonClicked ( QListViewItem *, | 448 | connect( mTodoListView, SIGNAL( rightButtonClicked ( QListViewItem *, |
443 | const QPoint &,int ) ), | 449 | const QPoint &,int ) ), |
444 | SLOT( popupMenu( QListViewItem *, const QPoint & ,int) ) ); | 450 | SLOT( popupMenu( QListViewItem *, const QPoint & ,int) ) ); |
451 | */ | ||
452 | connect( mTodoListView, SIGNAL( contextRequest ( QListViewItem *, | ||
453 | const QPoint &,int ) ), | ||
454 | SLOT( popupMenu( QListViewItem *, const QPoint & ,int) ) ); | ||
445 | connect( mTodoListView, SIGNAL( clicked( QListViewItem * ) ), | 455 | connect( mTodoListView, SIGNAL( clicked( QListViewItem * ) ), |
446 | SLOT( itemClicked( QListViewItem * ) ) ); | 456 | SLOT( itemClicked( QListViewItem * ) ) ); |
447 | connect( mTodoListView, SIGNAL( double_Clicked( QListViewItem * ) ), | 457 | connect( mTodoListView, SIGNAL( double_Clicked( QListViewItem * ) ), |
448 | SLOT( itemDoubleClicked( QListViewItem * ) ) ); | 458 | SLOT( itemDoubleClicked( QListViewItem * ) ) ); |
449 | connect( mTodoListView, SIGNAL( todoDropped( Todo * ) ), | 459 | connect( mTodoListView, SIGNAL( todoDropped( Todo * ) ), |
450 | SLOT( updateView() ) ); | 460 | SLOT( updateView() ) ); |
451 | connect( mTodoListView, SIGNAL( expanded( QListViewItem * ) ), | 461 | connect( mTodoListView, SIGNAL( expanded( QListViewItem * ) ), |
452 | SLOT( itemStateChanged( QListViewItem * ) ) ); | 462 | SLOT( itemStateChanged( QListViewItem * ) ) ); |
453 | connect( mTodoListView, SIGNAL( collapsed( QListViewItem * ) ), | 463 | connect( mTodoListView, SIGNAL( collapsed( QListViewItem * ) ), |
454 | SLOT( itemStateChanged( QListViewItem * ) ) ); | 464 | SLOT( itemStateChanged( QListViewItem * ) ) ); |
455 | 465 | ||
456 | #if 0 | 466 | #if 0 |
457 | connect(mTodoListView,SIGNAL(selectionChanged(QListViewItem *)), | 467 | connect(mTodoListView,SIGNAL(selectionChanged(QListViewItem *)), |
458 | SLOT(selectionChanged(QListViewItem *))); | 468 | SLOT(selectionChanged(QListViewItem *))); |
459 | connect(mTodoListView,SIGNAL(clicked(QListViewItem *)), | 469 | connect(mTodoListView,SIGNAL(clicked(QListViewItem *)), |
460 | SLOT(selectionChanged(QListViewItem *))); | 470 | SLOT(selectionChanged(QListViewItem *))); |
461 | connect(mTodoListView,SIGNAL(pressed(QListViewItem *)), | 471 | connect(mTodoListView,SIGNAL(pressed(QListViewItem *)), |
462 | SLOT(selectionChanged(QListViewItem *))); | 472 | SLOT(selectionChanged(QListViewItem *))); |
463 | #endif | 473 | #endif |
464 | connect( mTodoListView, SIGNAL(selectionChanged() ), | 474 | connect( mTodoListView, SIGNAL(selectionChanged() ), |
465 | SLOT( processSelectionChange() ) ); | 475 | SLOT( processSelectionChange() ) ); |
466 | connect( mQuickAdd, SIGNAL( returnPressed () ), | 476 | connect( mQuickAdd, SIGNAL( returnPressed () ), |
467 | SLOT( addQuickTodo() ) ); | 477 | SLOT( addQuickTodo() ) ); |
468 | // if ( QApplication::desktop()->width() < 480 ) { | 478 | // if ( QApplication::desktop()->width() < 480 ) { |
@@ -674,83 +684,91 @@ void KOTodoView::showEvents(QPtrList<Event>) | |||
674 | kdDebug() << "KOTodoView::selectEvents(): not yet implemented" << endl; | 684 | kdDebug() << "KOTodoView::selectEvents(): not yet implemented" << endl; |
675 | } | 685 | } |
676 | 686 | ||
677 | void KOTodoView::printPreview(CalPrinter *calPrinter, const QDate &fd, | 687 | void KOTodoView::printPreview(CalPrinter *calPrinter, const QDate &fd, |
678 | const QDate &td) | 688 | const QDate &td) |
679 | { | 689 | { |
680 | #ifndef KORG_NOPRINTER | 690 | #ifndef KORG_NOPRINTER |
681 | calPrinter->preview(CalPrinter::Todolist, fd, td); | 691 | calPrinter->preview(CalPrinter::Todolist, fd, td); |
682 | #endif | 692 | #endif |
683 | } | 693 | } |
684 | 694 | ||
685 | void KOTodoView::editItem(QListViewItem *item ) | 695 | void KOTodoView::editItem(QListViewItem *item ) |
686 | { | 696 | { |
687 | // qDebug("editItem(QListViewItem *item ) "); | 697 | // qDebug("editItem(QListViewItem *item ) "); |
688 | emit editTodoSignal(((KOTodoViewItem *)item)->todo()); | 698 | emit editTodoSignal(((KOTodoViewItem *)item)->todo()); |
689 | } | 699 | } |
690 | 700 | ||
691 | void KOTodoView::showItem(QListViewItem *item,const QPoint &,int) | 701 | void KOTodoView::showItem(QListViewItem *item,const QPoint &,int) |
692 | { | 702 | { |
693 | emit showTodoSignal(((KOTodoViewItem *)item)->todo()); | 703 | emit showTodoSignal(((KOTodoViewItem *)item)->todo()); |
694 | } | 704 | } |
695 | 705 | ||
696 | void KOTodoView::popupMenu(QListViewItem *item,const QPoint &,int column) | 706 | void KOTodoView::popupMenu(QListViewItem *item,const QPoint &,int column) |
697 | { | 707 | { |
698 | |||
699 | mActiveItem = (KOTodoViewItem *)item; | 708 | mActiveItem = (KOTodoViewItem *)item; |
700 | if (item) { | 709 | if (item) { |
701 | switch (column){ | 710 | switch (column){ |
702 | case 1: | 711 | case 1: |
703 | mPriorityPopupMenu->popup(QCursor::pos ()); break; | 712 | mPriorityPopupMenu->popup(QCursor::pos ()); break; |
704 | case 2: | 713 | case 2: |
705 | mPercentageCompletedPopupMenu->popup(QCursor::pos ()); break; | 714 | mPercentageCompletedPopupMenu->popup(QCursor::pos ()); break; |
706 | case 3: | 715 | case 3: |
707 | moveTodo(); | 716 | moveTodo(); |
708 | break; | 717 | break; |
709 | case 6: | 718 | case 6: |
710 | getCategoryPopupMenu((KOTodoViewItem *)item)->popup(QCursor::pos ()); break; | 719 | getCategoryPopupMenu((KOTodoViewItem *)item)->popup(QCursor::pos ()); break; |
711 | default: | 720 | default: |
712 | mItemPopupMenu->popup(QCursor::pos()); | 721 | mItemPopupMenu->popup(QCursor::pos()); |
713 | } | 722 | } |
714 | } else mPopupMenu->popup(QCursor::pos()); | 723 | } else mPopupMenu->popup(QCursor::pos()); |
715 | } | 724 | } |
716 | void KOTodoView::newTodo() | 725 | void KOTodoView::newTodo() |
717 | { | 726 | { |
718 | emit newTodoSignal(); | 727 | emit newTodoSignal(); |
719 | } | 728 | } |
720 | 729 | ||
721 | void KOTodoView::newSubTodo() | 730 | void KOTodoView::newSubTodo() |
722 | { | 731 | { |
723 | if (mActiveItem) { | 732 | if (mActiveItem) { |
724 | emit newSubTodoSignal(mActiveItem->todo()); | 733 | emit newSubTodoSignal(mActiveItem->todo()); |
725 | } | 734 | } |
726 | } | 735 | } |
727 | void KOTodoView::unparentTodo() | 736 | void KOTodoView::unparentTodo() |
728 | { | 737 | { |
729 | if (mActiveItem) { | 738 | if (mActiveItem) { |
730 | emit unparentTodoSignal(mActiveItem->todo()); | 739 | emit unparentTodoSignal(mActiveItem->todo()); |
731 | } | 740 | } |
732 | } | 741 | } |
742 | |||
743 | void KOTodoView::reparentTodo() | ||
744 | { | ||
745 | if (mActiveItem) { | ||
746 | qDebug("KOTodoView::reparentTodo() "); | ||
747 | topLevelWidget()->setCaption(i18n("Click on new parent item")); | ||
748 | pendingSubtodo = mActiveItem; | ||
749 | } | ||
750 | } | ||
733 | void KOTodoView::editTodo() | 751 | void KOTodoView::editTodo() |
734 | { | 752 | { |
735 | if (mActiveItem) { | 753 | if (mActiveItem) { |
736 | emit editTodoSignal(mActiveItem->todo()); | 754 | emit editTodoSignal(mActiveItem->todo()); |
737 | } | 755 | } |
738 | } | 756 | } |
739 | void KOTodoView::cloneTodo() | 757 | void KOTodoView::cloneTodo() |
740 | { | 758 | { |
741 | if (mActiveItem) { | 759 | if (mActiveItem) { |
742 | emit cloneTodoSignal((Incidence*)mActiveItem->todo()); | 760 | emit cloneTodoSignal((Incidence*)mActiveItem->todo()); |
743 | } | 761 | } |
744 | } | 762 | } |
745 | void KOTodoView::cancelTodo() | 763 | void KOTodoView::cancelTodo() |
746 | { | 764 | { |
747 | if (mActiveItem) { | 765 | if (mActiveItem) { |
748 | emit cancelTodoSignal((Incidence*)mActiveItem->todo()); | 766 | emit cancelTodoSignal((Incidence*)mActiveItem->todo()); |
749 | } | 767 | } |
750 | } | 768 | } |
751 | void KOTodoView::moveTodo() | 769 | void KOTodoView::moveTodo() |
752 | { | 770 | { |
753 | if (mActiveItem) { | 771 | if (mActiveItem) { |
754 | emit moveTodoSignal((Incidence*)mActiveItem->todo()); | 772 | emit moveTodoSignal((Incidence*)mActiveItem->todo()); |
755 | } | 773 | } |
756 | } | 774 | } |
@@ -822,64 +840,94 @@ QPopupMenu * KOTodoView::getCategoryPopupMenu (KOTodoViewItem *todoItem) | |||
822 | } | 840 | } |
823 | 841 | ||
824 | connect (tempMenu, SIGNAL (activated (int)), SLOT (changedCategories (int))); | 842 | connect (tempMenu, SIGNAL (activated (int)), SLOT (changedCategories (int))); |
825 | return tempMenu; | 843 | return tempMenu; |
826 | 844 | ||
827 | 845 | ||
828 | } | 846 | } |
829 | void KOTodoView::changedCategories(int index) | 847 | void KOTodoView::changedCategories(int index) |
830 | { | 848 | { |
831 | if (mActiveItem && !mActiveItem->todo()->isReadOnly ()) { | 849 | if (mActiveItem && !mActiveItem->todo()->isReadOnly ()) { |
832 | QStringList categories = mActiveItem->todo()->categories (); | 850 | QStringList categories = mActiveItem->todo()->categories (); |
833 | if (categories.find (mCategory[index]) != categories.end ()) | 851 | if (categories.find (mCategory[index]) != categories.end ()) |
834 | categories.remove (mCategory[index]); | 852 | categories.remove (mCategory[index]); |
835 | else | 853 | else |
836 | categories.insert (categories.end(), mCategory[index]); | 854 | categories.insert (categories.end(), mCategory[index]); |
837 | categories.sort (); | 855 | categories.sort (); |
838 | mActiveItem->todo()->setCategories (categories); | 856 | mActiveItem->todo()->setCategories (categories); |
839 | mActiveItem->construct(); | 857 | mActiveItem->construct(); |
840 | mActiveItem->todo()->setRevision( mActiveItem->todo()->revision()+1 ); | 858 | mActiveItem->todo()->setRevision( mActiveItem->todo()->revision()+1 ); |
841 | todoModified (mActiveItem->todo (), KOGlobals::CATEGORY_MODIFIED); | 859 | todoModified (mActiveItem->todo (), KOGlobals::CATEGORY_MODIFIED); |
842 | } | 860 | } |
843 | } | 861 | } |
844 | void KOTodoView::itemDoubleClicked(QListViewItem *item) | 862 | void KOTodoView::itemDoubleClicked(QListViewItem *item) |
845 | { | 863 | { |
864 | if ( pendingSubtodo != 0 ) { | ||
865 | topLevelWidget()->setCaption(i18n("Reparenting aborted!")); | ||
866 | } | ||
867 | pendingSubtodo = 0; | ||
846 | if (!item) { | 868 | if (!item) { |
847 | newTodo(); | 869 | newTodo(); |
848 | return; | 870 | return; |
849 | } | 871 | } |
850 | if ( KOPrefs::instance()->mEditOnDoubleClick ) | 872 | if ( KOPrefs::instance()->mEditOnDoubleClick ) |
851 | editItem( item ); | 873 | editItem( item ); |
852 | else | 874 | else |
853 | showItem( item , QPoint(), 0 ); | 875 | showItem( item , QPoint(), 0 ); |
854 | } | 876 | } |
855 | void KOTodoView::itemClicked(QListViewItem *item) | 877 | void KOTodoView::itemClicked(QListViewItem *item) |
856 | { | 878 | { |
879 | |||
857 | if (!item) { | 880 | if (!item) { |
881 | if ( pendingSubtodo != 0 ) { | ||
882 | topLevelWidget()->setCaption(i18n("Reparenting aborted!")); | ||
883 | } | ||
884 | pendingSubtodo = 0; | ||
858 | return; | 885 | return; |
859 | } | 886 | } |
860 | |||
861 | KOTodoViewItem *todoItem = (KOTodoViewItem *)item; | 887 | KOTodoViewItem *todoItem = (KOTodoViewItem *)item; |
888 | if ( pendingSubtodo != 0 ) { | ||
889 | bool allowReparent = true; | ||
890 | QListViewItem *par = item; | ||
891 | while ( par ) { | ||
892 | if ( par == pendingSubtodo ) { | ||
893 | allowReparent = false; | ||
894 | break; | ||
895 | } | ||
896 | par = par->parent(); | ||
897 | } | ||
898 | if ( !allowReparent ) { | ||
899 | topLevelWidget()->setCaption(i18n("Recursive reparenting not possible!")); | ||
900 | qDebug("Recursive reparenting not possible "); | ||
901 | pendingSubtodo = 0; | ||
902 | } else { | ||
903 | Todo* newParent = todoItem->todo(); | ||
904 | Todo* newSub = pendingSubtodo->todo(); | ||
905 | pendingSubtodo = 0; | ||
906 | emit reparentTodoSignal( newParent,newSub ); | ||
907 | return; | ||
908 | } | ||
909 | } | ||
862 | int completed = todoItem->todo()->isCompleted(); // Completed or not? | 910 | int completed = todoItem->todo()->isCompleted(); // Completed or not? |
863 | 911 | ||
864 | if (todoItem->isOn()) { | 912 | if (todoItem->isOn()) { |
865 | if (!completed) { | 913 | if (!completed) { |
866 | todoItem->todo()->setCompleted(QDateTime::currentDateTime()); | 914 | todoItem->todo()->setCompleted(QDateTime::currentDateTime()); |
867 | } | 915 | } |
868 | } else { | 916 | } else { |
869 | if (completed) { | 917 | if (completed) { |
870 | todoItem->todo()->setCompleted(false); | 918 | todoItem->todo()->setCompleted(false); |
871 | } | 919 | } |
872 | } | 920 | } |
873 | } | 921 | } |
874 | 922 | ||
875 | void KOTodoView::setDocumentId( const QString &id ) | 923 | void KOTodoView::setDocumentId( const QString &id ) |
876 | { | 924 | { |
877 | kdDebug() << "KOTodoView::setDocumentId()" << endl; | 925 | kdDebug() << "KOTodoView::setDocumentId()" << endl; |
878 | 926 | ||
879 | mDocPrefs->setDoc( id ); | 927 | mDocPrefs->setDoc( id ); |
880 | } | 928 | } |
881 | 929 | ||
882 | void KOTodoView::itemStateChanged( QListViewItem *item ) | 930 | void KOTodoView::itemStateChanged( QListViewItem *item ) |
883 | { | 931 | { |
884 | if (!item) return; | 932 | if (!item) return; |
885 | 933 | ||
@@ -953,58 +1001,90 @@ void KOTodoView::toggleCompleted() | |||
953 | } | 1001 | } |
954 | 1002 | ||
955 | void KOTodoView::addQuickTodo() | 1003 | void KOTodoView::addQuickTodo() |
956 | { | 1004 | { |
957 | Todo *todo = new Todo(); | 1005 | Todo *todo = new Todo(); |
958 | todo->setSummary(mQuickAdd->text()); | 1006 | todo->setSummary(mQuickAdd->text()); |
959 | todo->setOrganizer(KOPrefs::instance()->email()); | 1007 | todo->setOrganizer(KOPrefs::instance()->email()); |
960 | CalFilter * cf = mCalendar->filter(); | 1008 | CalFilter * cf = mCalendar->filter(); |
961 | if ( cf ) { | 1009 | if ( cf ) { |
962 | if ( cf->isEnabled()&& cf->showCategories()) { | 1010 | if ( cf->isEnabled()&& cf->showCategories()) { |
963 | todo->setCategories(cf->categoryList()); | 1011 | todo->setCategories(cf->categoryList()); |
964 | } | 1012 | } |
965 | if ( cf->isEnabled() ) | 1013 | if ( cf->isEnabled() ) |
966 | todo->setSecrecy( cf->getSecrecy()); | 1014 | todo->setSecrecy( cf->getSecrecy()); |
967 | } | 1015 | } |
968 | mCalendar->addTodo(todo); | 1016 | mCalendar->addTodo(todo); |
969 | mQuickAdd->setText(""); | 1017 | mQuickAdd->setText(""); |
970 | todoModified (todo, KOGlobals::EVENTADDED ); | 1018 | todoModified (todo, KOGlobals::EVENTADDED ); |
971 | updateView(); | 1019 | updateView(); |
972 | } | 1020 | } |
973 | void KOTodoView::keyPressEvent ( QKeyEvent * e ) | 1021 | void KOTodoView::keyPressEvent ( QKeyEvent * e ) |
974 | { | 1022 | { |
975 | // e->ignore(); | 1023 | // e->ignore(); |
976 | //return; | 1024 | //return; |
1025 | //qDebug("KOTodoView::keyPressEvent "); | ||
977 | switch ( e->key() ) { | 1026 | switch ( e->key() ) { |
978 | case Qt::Key_Down: | 1027 | case Qt::Key_Down: |
979 | case Qt::Key_Up: | 1028 | case Qt::Key_Up: |
980 | QWidget::keyPressEvent ( e ); | 1029 | QWidget::keyPressEvent ( e ); |
981 | break; | 1030 | break; |
982 | 1031 | ||
983 | case Qt::Key_Q: | 1032 | case Qt::Key_Q: |
984 | toggleQuickTodo(); | 1033 | toggleQuickTodo(); |
985 | break; | 1034 | break; |
986 | 1035 | case Qt::Key_U: | |
1036 | if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) { | ||
1037 | mActiveItem = (KOTodoViewItem*)mTodoListView->currentItem(); | ||
1038 | unparentTodo(); | ||
1039 | e->accept(); | ||
1040 | } else | ||
1041 | e->ignore(); | ||
1042 | break; | ||
1043 | case Qt::Key_S: | ||
1044 | if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) { | ||
1045 | mActiveItem = (KOTodoViewItem*)mTodoListView->currentItem(); | ||
1046 | reparentTodo(); | ||
1047 | e->accept(); | ||
1048 | } else | ||
1049 | e->ignore(); | ||
1050 | break; | ||
1051 | case Qt::Key_P: | ||
1052 | if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) { | ||
1053 | mActiveItem = (KOTodoViewItem*)mTodoListView->currentItem(); | ||
1054 | if ( pendingSubtodo ) | ||
1055 | itemClicked(mActiveItem); | ||
1056 | e->accept(); | ||
1057 | } else | ||
1058 | e->ignore(); | ||
1059 | break; | ||
1060 | case Qt::Key_Escape: | ||
1061 | if ( pendingSubtodo ) { | ||
1062 | itemClicked(0); | ||
1063 | e->accept(); | ||
1064 | } else | ||
1065 | e->ignore(); | ||
1066 | break; | ||
987 | default: | 1067 | default: |
988 | e->ignore(); | 1068 | e->ignore(); |
989 | } | 1069 | } |
990 | 1070 | ||
991 | if ( true ) { | 1071 | if ( true ) { |
992 | if ( e->key() == Qt::Key_I ) { | 1072 | if ( e->key() == Qt::Key_I ) { |
993 | KOTodoViewItem*cn = (KOTodoViewItem*)mTodoListView->currentItem(); | 1073 | KOTodoViewItem*cn = (KOTodoViewItem*)mTodoListView->currentItem(); |
994 | if ( cn ) { | 1074 | if ( cn ) { |
995 | mActiveItem = cn; | 1075 | mActiveItem = cn; |
996 | KOTodoViewItem* ci = (KOTodoViewItem*)( cn ); | 1076 | KOTodoViewItem* ci = (KOTodoViewItem*)( cn ); |
997 | if ( ci ){ | 1077 | if ( ci ){ |
998 | showTodo(); | 1078 | showTodo(); |
999 | cn = (KOTodoViewItem*)cn->itemBelow(); | 1079 | cn = (KOTodoViewItem*)cn->itemBelow(); |
1000 | if ( cn ) { | 1080 | if ( cn ) { |
1001 | mTodoListView->setCurrentItem ( cn ); | 1081 | mTodoListView->setCurrentItem ( cn ); |
1002 | mTodoListView->ensureItemVisible ( cn ); | 1082 | mTodoListView->ensureItemVisible ( cn ); |
1003 | } | 1083 | } |
1004 | 1084 | ||
1005 | } | 1085 | } |
1006 | } | 1086 | } |
1007 | e->accept(); | 1087 | e->accept(); |
1008 | 1088 | ||
1009 | } | 1089 | } |
1010 | 1090 | ||