author | eilers <eilers> | 2003-08-01 14:22:29 (UTC) |
---|---|---|
committer | eilers <eilers> | 2003-08-01 14:22:29 (UTC) |
commit | 7d51872c86155fbbf27aeb8e49e7a336d909caac (patch) (unidiff) | |
tree | 55ecf3452d6711065e36c6bceab8ec52bd5525d8 /core/pim/todo/mainwindow.cpp | |
parent | 34991bac7d96b1c17601be6a5607819342571e0c (diff) | |
download | opie-7d51872c86155fbbf27aeb8e49e7a336d909caac.zip opie-7d51872c86155fbbf27aeb8e49e7a336d909caac.tar.gz opie-7d51872c86155fbbf27aeb8e49e7a336d909caac.tar.bz2 |
Merging changes from BRANCH_1_0 to HEAD
Diffstat (limited to 'core/pim/todo/mainwindow.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | core/pim/todo/mainwindow.cpp | 136 |
1 files changed, 110 insertions, 26 deletions
diff --git a/core/pim/todo/mainwindow.cpp b/core/pim/todo/mainwindow.cpp index 5119ae0..6725951 100644 --- a/core/pim/todo/mainwindow.cpp +++ b/core/pim/todo/mainwindow.cpp | |||
@@ -72,4 +72,5 @@ MainWindow::MainWindow( QWidget* parent, | |||
72 | { | 72 | { |
73 | m_syncing = false; | 73 | m_syncing = false; |
74 | m_showing = false; | ||
74 | m_counter = 0; | 75 | m_counter = 0; |
75 | m_tempManager = new TemplateManager(); | 76 | m_tempManager = new TemplateManager(); |
@@ -162,4 +163,5 @@ void MainWindow::initActions() { | |||
162 | } | 163 | } |
163 | 164 | ||
165 | #if 0 | ||
164 | // Options menu | 166 | // Options menu |
165 | a = new QAction( QWidget::tr("Find"), Resource::loadIconSet( "mag" ), | 167 | a = new QAction( QWidget::tr("Find"), Resource::loadIconSet( "mag" ), |
@@ -169,5 +171,7 @@ void MainWindow::initActions() { | |||
169 | m_findAction = a; | 171 | m_findAction = a; |
170 | 172 | ||
173 | |||
171 | m_options->insertSeparator(); | 174 | m_options->insertSeparator(); |
175 | #endif | ||
172 | 176 | ||
173 | m_completedAction = new QAction( QString::null, QWidget::tr("Show completed tasks"), | 177 | m_completedAction = new QAction( QString::null, QWidget::tr("Show completed tasks"), |
@@ -353,4 +357,5 @@ void MainWindow::slotReload() { | |||
353 | void MainWindow::closeEvent( QCloseEvent* e ) { | 357 | void MainWindow::closeEvent( QCloseEvent* e ) { |
354 | if (m_stack->visibleWidget() == currentShow()->widget() ) { | 358 | if (m_stack->visibleWidget() == currentShow()->widget() ) { |
359 | m_showing = false; | ||
355 | raiseCurrentView(); | 360 | raiseCurrentView(); |
356 | e->ignore(); | 361 | e->ignore(); |
@@ -410,5 +415,5 @@ void MainWindow::populateTemplates() { | |||
410 | * slotNewFromTemplate | 415 | * slotNewFromTemplate |
411 | * We use the edit widget to do | 416 | * We use the edit widget to do |
412 | * the config but we setUid(-1) | 417 | * the config but we setUid(1) |
413 | * to get a new uid | 418 | * to get a new uid |
414 | */ | 419 | */ |
@@ -426,10 +431,12 @@ void MainWindow::slotNewFromTemplate( int id ) { | |||
426 | if ( currentEditor()->accepted() ) { | 431 | if ( currentEditor()->accepted() ) { |
427 | /* assign new todo */ | 432 | /* assign new todo */ |
428 | event.setUid( -1 ); | 433 | event.setUid( 1 ); |
429 | currentView()->addEvent( event ); | 434 | handleAlarms( OTodo(), event ); |
430 | m_todoMgr.add( event ); | 435 | m_todoMgr.add( event ); |
436 | currentView()->addEvent( event ); | ||
431 | 437 | ||
432 | populateCategories(); | 438 | populateCategories(); |
433 | } | 439 | } |
440 | raiseCurrentView(); | ||
434 | } | 441 | } |
435 | void MainWindow::slotNew() { | 442 | void MainWindow::slotNew() { |
@@ -439,10 +446,10 @@ void MainWindow::slotDuplicate() { | |||
439 | if(m_syncing) { | 446 | if(m_syncing) { |
440 | QMessageBox::warning(this, QWidget::tr("Todo"), | 447 | QMessageBox::warning(this, QWidget::tr("Todo"), |
441 | QWidget::tr("Can not edit data, currently syncing")); | 448 | QWidget::tr("Data can not be edited, currently syncing")); |
442 | return; | 449 | return; |
443 | } | 450 | } |
444 | OTodo ev = m_todoMgr.event( currentView()->current() ); | 451 | OTodo ev = m_todoMgr.event( currentView()->current() ); |
445 | /* let's generate a new uid */ | 452 | /* let's generate a new uid */ |
446 | ev.setUid(-1); | 453 | ev.setUid(1); |
447 | m_todoMgr.add( ev ); | 454 | m_todoMgr.add( ev ); |
448 | 455 | ||
@@ -456,5 +463,5 @@ void MainWindow::slotDelete() { | |||
456 | if(m_syncing) { | 463 | if(m_syncing) { |
457 | QMessageBox::warning(this, QWidget::tr("Todo"), | 464 | QMessageBox::warning(this, QWidget::tr("Todo"), |
458 | QWidget::tr("Can not edit data, currently syncing")); | 465 | QWidget::tr("Data can not be edited, currently syncing")); |
459 | return; | 466 | return; |
460 | } | 467 | } |
@@ -463,13 +470,29 @@ void MainWindow::slotDelete() { | |||
463 | return; | 470 | return; |
464 | 471 | ||
465 | handleAlarms( OTodo(), m_todoMgr.event( currentView()->current() ) ); | 472 | handleAlarms( m_todoMgr.event( currentView()->current() ), OTodo() ); |
466 | m_todoMgr.remove( currentView()->current() ); | 473 | m_todoMgr.remove( currentView()->current() ); |
467 | currentView()->removeEvent( currentView()->current() ); | 474 | currentView()->removeEvent( currentView()->current() ); |
468 | raiseCurrentView(); | 475 | raiseCurrentView(); |
469 | } | 476 | } |
477 | void MainWindow::slotDelete(int uid ) { | ||
478 | if( uid == 0 ) return; | ||
479 | if(m_syncing) { | ||
480 | QMessageBox::warning(this, QWidget::tr("Todo"), | ||
481 | QWidget::tr("Data can not be edited, currently syncing")); | ||
482 | return; | ||
483 | } | ||
484 | OTodo to = m_todoMgr.event(uid); | ||
485 | if (!QPEMessageBox::confirmDelete(this, QWidget::tr("Todo"), to.toShortText() ) ) | ||
486 | return; | ||
487 | |||
488 | handleAlarms(to, OTodo() ); | ||
489 | m_todoMgr.remove( to.uid() ); | ||
490 | currentView()->removeEvent( to.uid() ); | ||
491 | raiseCurrentView(); | ||
492 | } | ||
470 | void MainWindow::slotDeleteAll() { | 493 | void MainWindow::slotDeleteAll() { |
471 | if(m_syncing) { | 494 | if(m_syncing) { |
472 | QMessageBox::warning(this, QWidget::tr("Todo"), | 495 | QMessageBox::warning(this, QWidget::tr("Todo"), |
473 | QWidget::tr("Can not edit data, currently syncing")); | 496 | QWidget::tr("Data can not be edited, currently syncing")); |
474 | return; | 497 | return; |
475 | } | 498 | } |
@@ -487,5 +510,5 @@ void MainWindow::slotDeleteCompleted() { | |||
487 | if(m_syncing) { | 510 | if(m_syncing) { |
488 | QMessageBox::warning(this, QWidget::tr("Todo"), | 511 | QMessageBox::warning(this, QWidget::tr("Todo"), |
489 | QWidget::tr("Can not edit data, currently syncing")); | 512 | QWidget::tr("Data can not be edited, currently syncing")); |
490 | return; | 513 | return; |
491 | } | 514 | } |
@@ -567,18 +590,22 @@ void MainWindow::beamDone( Ir* ir) { | |||
567 | void MainWindow::receiveFile( const QString& filename ) { | 590 | void MainWindow::receiveFile( const QString& filename ) { |
568 | OTodoAccessVCal* cal = new OTodoAccessVCal(filename ); | 591 | OTodoAccessVCal* cal = new OTodoAccessVCal(filename ); |
592 | |||
569 | OTodoAccess acc( cal ); | 593 | OTodoAccess acc( cal ); |
570 | acc.load(); | 594 | acc.load(); |
571 | OTodoAccess::List list = acc.allRecords(); | 595 | OTodoAccess::List list = acc.allRecords(); |
572 | 596 | ||
573 | QString message = QWidget::tr("<P>%1 new tasks arrived.<p>Would you like to add them to your Todolist?").arg(list.count() ); | 597 | if (list.count()){ |
574 | 598 | ||
575 | if ( QMessageBox::information(this, QWidget::tr("New Tasks"), | 599 | QString message = QWidget::tr("<P>%1 new tasks arrived.<p>Would you like to add them to your Todolist?").arg(list.count() ); |
576 | message, QMessageBox::Ok, | ||
577 | QMessageBox::Cancel ) == QMessageBox::Ok ) { | ||
578 | OTodoAccess::List::Iterator it; | ||
579 | for ( it = list.begin(); it != list.end(); ++it ) | ||
580 | m_todoMgr.add( (*it) ); | ||
581 | 600 | ||
582 | currentView()->updateView(); | 601 | if ( QMessageBox::information(this, QWidget::tr("New Tasks"), |
602 | message, QMessageBox::Ok, | ||
603 | QMessageBox::Cancel ) == QMessageBox::Ok ) { | ||
604 | OTodoAccess::List::Iterator it; | ||
605 | for ( it = list.begin(); it != list.end(); ++it ) | ||
606 | m_todoMgr.add( (*it) ); | ||
607 | |||
608 | currentView()->updateView(); | ||
609 | } | ||
583 | } | 610 | } |
584 | } | 611 | } |
@@ -635,4 +662,11 @@ ViewBase* MainWindow::currentView() { | |||
635 | } | 662 | } |
636 | void MainWindow::raiseCurrentView() { | 663 | void MainWindow::raiseCurrentView() { |
664 | // due QPE/Application/todolist show(int) | ||
665 | // we might not have the populateCategories slot called once | ||
666 | // we would show the otodo but then imediately switch to the currentView | ||
667 | // if we're initially showing we shouldn't raise the table | ||
668 | // in returnFromView we fix up m_showing | ||
669 | if (m_showing ) return; | ||
670 | |||
637 | m_stack->raiseWidget( m_curView->widget() ); | 671 | m_stack->raiseWidget( m_curView->widget() ); |
638 | } | 672 | } |
@@ -643,13 +677,24 @@ void MainWindow::slotShowDue(bool ov) { | |||
643 | } | 677 | } |
644 | void MainWindow::slotShow( int uid ) { | 678 | void MainWindow::slotShow( int uid ) { |
679 | if ( uid == 0 ) return; | ||
645 | qWarning("slotShow"); | 680 | qWarning("slotShow"); |
646 | currentShow()->slotShow( event( uid ) ); | 681 | currentShow()->slotShow( event( uid ) ); |
647 | m_stack->raiseWidget( currentShow()->widget() ); | 682 | m_stack->raiseWidget( currentShow()->widget() ); |
648 | } | 683 | } |
684 | void MainWindow::slotShowNext() { | ||
685 | int l = currentView()->next(); | ||
686 | if (l!=0) | ||
687 | slotShow(l); | ||
688 | } | ||
689 | void MainWindow::slotShowPrev() { | ||
690 | int l = currentView()->prev(); | ||
691 | if (l!=0) | ||
692 | slotShow(l); | ||
693 | } | ||
649 | void MainWindow::slotEdit( int uid ) { | 694 | void MainWindow::slotEdit( int uid ) { |
650 | if (uid == 1 ) return; | 695 | if (uid == 0 ) return; |
651 | if(m_syncing) { | 696 | if(m_syncing) { |
652 | QMessageBox::warning(this, QWidget::tr("Todo"), | 697 | QMessageBox::warning(this, QWidget::tr("Todo"), |
653 | QWidget::tr("Can not edit data, currently syncing")); | 698 | QWidget::tr("Data can't be edited, currently syncing")); |
654 | return; | 699 | return; |
655 | } | 700 | } |
@@ -661,5 +706,4 @@ void MainWindow::slotEdit( int uid ) { | |||
661 | /* if completed */ | 706 | /* if completed */ |
662 | if ( currentEditor()->accepted() ) { | 707 | if ( currentEditor()->accepted() ) { |
663 | qWarning("Replacing now" ); | ||
664 | handleAlarms( old_todo, todo ); | 708 | handleAlarms( old_todo, todo ); |
665 | m_todoMgr.update( todo.uid(), todo ); | 709 | m_todoMgr.update( todo.uid(), todo ); |
@@ -719,4 +763,8 @@ void MainWindow::slotComplete( const OTodo& todo ) { | |||
719 | * possible recurrance of this item... | 763 | * possible recurrance of this item... |
720 | * the spinned off one will loose the | 764 | * the spinned off one will loose the |
765 | * recurrence. | ||
766 | * We calculate the difference between the old due date and the | ||
767 | * new one and add this diff to start, completed and alarm dates | ||
768 | * -zecke | ||
721 | */ | 769 | */ |
722 | if ( to.hasRecurrence() && to.isCompleted() ) { | 770 | if ( to.hasRecurrence() && to.isCompleted() ) { |
@@ -735,4 +783,6 @@ void MainWindow::slotComplete( const OTodo& todo ) { | |||
735 | QDate date; | 783 | QDate date; |
736 | if ( to2.recurrence().nextOcurrence( to2.dueDate().addDays(1), date ) ) { | 784 | if ( to2.recurrence().nextOcurrence( to2.dueDate().addDays(1), date ) ) { |
785 | int dayDiff = to.dueDate().daysTo( date ); | ||
786 | qWarning("day diff is %d", dayDiff ); | ||
737 | QDate inval; | 787 | QDate inval; |
738 | /* generate a new uid for the old record */ | 788 | /* generate a new uid for the old record */ |
@@ -748,7 +798,28 @@ void MainWindow::slotComplete( const OTodo& todo ) { | |||
748 | */ | 798 | */ |
749 | to2.setDueDate( date ); | 799 | to2.setDueDate( date ); |
750 | to2.setStartDate( inval ); | 800 | rec.setStart( date ); |
801 | to2.setRecurrence( rec ); // could be Monday, TuesDay, Thursday every week | ||
802 | |||
803 | /* move start date */ | ||
804 | if (to2.hasStartDate() ) | ||
805 | to2.setStartDate( to2.startDate().addDays( dayDiff ) ); | ||
806 | |||
807 | /* now the alarms */ | ||
808 | if (to2.hasNotifiers() ) { | ||
809 | OPimNotifyManager::Alarms _als = to2.notifiers().alarms(); | ||
810 | OPimNotifyManager::Alarms als; | ||
811 | |||
812 | /* for every alarm move the day */ | ||
813 | for ( OPimNotifyManager::Alarms::Iterator it = _als.begin(); it != _als.end(); ++it ) { | ||
814 | OPimAlarm al = (*it); | ||
815 | al.setDateTime( al.dateTime().addDays( dayDiff ) ); | ||
816 | als.append( al ); | ||
817 | } | ||
818 | to2.notifiers().setAlarms( als ); | ||
819 | handleAlarms( OTodo(), todo ); | ||
820 | } | ||
751 | to2.setCompletedDate( inval ); | 821 | to2.setCompletedDate( inval ); |
752 | to2.setCompleted( false ); | 822 | to2.setCompleted( false ); |
823 | |||
753 | updateTodo( to2 ); | 824 | updateTodo( to2 ); |
754 | }else | 825 | }else |
@@ -770,7 +841,8 @@ int MainWindow::create() { | |||
770 | if(m_syncing) { | 841 | if(m_syncing) { |
771 | QMessageBox::warning(this, QWidget::tr("Todo"), | 842 | QMessageBox::warning(this, QWidget::tr("Todo"), |
772 | QWidget::tr("Can not edit data, currently syncing")); | 843 | QWidget::tr("Data can not be edited, currently syncing")); |
773 | return uid; | 844 | return uid; |
774 | } | 845 | } |
846 | m_todoMgr.load(); | ||
775 | 847 | ||
776 | 848 | ||
@@ -805,5 +877,9 @@ bool MainWindow::remove( int uid ) { | |||
805 | } | 877 | } |
806 | void MainWindow::beam( int uid) { | 878 | void MainWindow::beam( int uid) { |
879 | if( uid == 0 ) return; | ||
880 | |||
807 | ::unlink( beamfile ); | 881 | ::unlink( beamfile ); |
882 | m_todoMgr.load(); | ||
883 | |||
808 | OTodo todo = event( uid ); | 884 | OTodo todo = event( uid ); |
809 | OTodoAccessVCal* cal = new OTodoAccessVCal(QString::fromLatin1(beamfile) ); | 885 | OTodoAccessVCal* cal = new OTodoAccessVCal(QString::fromLatin1(beamfile) ); |
@@ -818,11 +894,17 @@ void MainWindow::beam( int uid) { | |||
818 | } | 894 | } |
819 | void MainWindow::show( int uid ) { | 895 | void MainWindow::show( int uid ) { |
896 | m_todoMgr.load(); // might not be loaded yet | ||
897 | m_showing = true; | ||
820 | slotShow( uid ); | 898 | slotShow( uid ); |
899 | raise(); | ||
900 | QPEApplication::setKeepRunning(); | ||
821 | } | 901 | } |
822 | void MainWindow::edit( int uid ) { | 902 | void MainWindow::edit( int uid ) { |
903 | m_todoMgr.load(); | ||
823 | slotEdit( uid ); | 904 | slotEdit( uid ); |
824 | } | 905 | } |
825 | void MainWindow::add( const OPimRecord& rec) { | 906 | void MainWindow::add( const OPimRecord& rec) { |
826 | if ( rec.rtti() != OTodo::rtti() ) return; | 907 | if ( rec.rtti() != OTodo::rtti() ) return; |
908 | m_todoMgr.load(); // might not be loaded | ||
827 | 909 | ||
828 | const OTodo& todo = static_cast<const OTodo&>(rec); | 910 | const OTodo& todo = static_cast<const OTodo&>(rec); |
@@ -838,4 +920,5 @@ void MainWindow::add( const OPimRecord& rec) { | |||
838 | } | 920 | } |
839 | void MainWindow::slotReturnFromView() { | 921 | void MainWindow::slotReturnFromView() { |
922 | m_showing = false; | ||
840 | raiseCurrentView(); | 923 | raiseCurrentView(); |
841 | } | 924 | } |
@@ -933,5 +1016,5 @@ void MainWindow::doAlarm( const QDateTime& dt, int uid ) { | |||
933 | lay->addWidget( btnOk ); | 1016 | lay->addWidget( btnOk ); |
934 | 1017 | ||
935 | QString text = tr("<h1>Alarm at %0</h1><br>").arg( TimeString::dateString( dt ) ); | 1018 | QString text = tr("<h1>Alarm at %1</h1><br>").arg( TimeString::dateString( dt ) ); |
936 | text += todo.toRichText(); | 1019 | text += todo.toRichText(); |
937 | view->setText( text ); | 1020 | view->setText( text ); |
@@ -944,9 +1027,10 @@ void MainWindow::doAlarm( const QDateTime& dt, int uid ) { | |||
944 | 1027 | ||
945 | if (needToStay) { | 1028 | if (needToStay) { |
946 | showMaximized(); | 1029 | // showMaximized(); |
947 | raise(); | 1030 | // raise(); |
948 | QPEApplication::setKeepRunning(); | 1031 | QPEApplication::setKeepRunning(); |
949 | setActiveWindow(); | 1032 | // setActiveWindow(); |
950 | } | 1033 | } |
951 | 1034 | ||
952 | } | 1035 | } |
1036 | |||