-rw-r--r-- | bin/kdepim/WhatsNew.txt | 2 | ||||
-rw-r--r-- | bin/kdepim/korganizer/germantranslation.txt | 14 | ||||
-rw-r--r-- | korganizer/calendarview.cpp | 80 | ||||
-rw-r--r-- | korganizer/calendarview.h | 4 | ||||
-rw-r--r-- | korganizer/mainwindow.cpp | 69 |
5 files changed, 141 insertions, 28 deletions
diff --git a/bin/kdepim/WhatsNew.txt b/bin/kdepim/WhatsNew.txt index 79de197..814c541 100644 --- a/bin/kdepim/WhatsNew.txt +++ b/bin/kdepim/WhatsNew.txt | |||
@@ -4,8 +4,10 @@ Info about the changes in new versions of KDE-Pim/Pi | |||
4 | 4 | ||
5 | Added some buttons to the KO/Pi Quick-todo line to make it possible to quickly access some todo view layout settings like display all flat/open/close and hide/show running/done. | 5 | Added some buttons to the KO/Pi Quick-todo line to make it possible to quickly access some todo view layout settings like display all flat/open/close and hide/show running/done. |
6 | Added a button to add a subtodo quickly. | 6 | Added a button to add a subtodo quickly. |
7 | 7 | ||
8 | Added a possibility to search for conflicting events. (In the Action menu. Keyboard shortcut "q" ). | ||
9 | |||
8 | 10 | ||
9 | ********** VERSION 2.1.13 ************ | 11 | ********** VERSION 2.1.13 ************ |
10 | 12 | ||
11 | Fixed a problem in KA/Pi search. | 13 | Fixed a problem in KA/Pi search. |
diff --git a/bin/kdepim/korganizer/germantranslation.txt b/bin/kdepim/korganizer/germantranslation.txt index bcc23dc..b225594 100644 --- a/bin/kdepim/korganizer/germantranslation.txt +++ b/bin/kdepim/korganizer/germantranslation.txt | |||
@@ -1493,8 +1493,22 @@ | |||
1493 | { "You can use and display <b>more than one</b> calendar file in KO/Pi. A calendar file is called a <b>resource</b>. To add a calendar or change calendar settings please use menu: <b>View -> Toggle Resource View</b>.","Sie können <b>mehr als eine</b> Kalenderdatei in KO/Pi darstellen und benutzen. Eine Kalenderdatei wird <b>Resource</b> genannt. Um einen Kalender hinzuzufügen oder die Kalendereinstellungen zu ändern benutzen Sie bitte das Menu: <b>Ansicht -> Resourcenansicht umschalten</b>." }, | 1493 | { "You can use and display <b>more than one</b> calendar file in KO/Pi. A calendar file is called a <b>resource</b>. To add a calendar or change calendar settings please use menu: <b>View -> Toggle Resource View</b>.","Sie können <b>mehr als eine</b> Kalenderdatei in KO/Pi darstellen und benutzen. Eine Kalenderdatei wird <b>Resource</b> genannt. Um einen Kalender hinzuzufügen oder die Kalendereinstellungen zu ändern benutzen Sie bitte das Menu: <b>Ansicht -> Resourcenansicht umschalten</b>." }, |
1494 | { "Hide Completed","Verstecke erledigte Todos" }, | 1494 | { "Hide Completed","Verstecke erledigte Todos" }, |
1495 | { "Show not Running","Zeige nicht Laufende" }, | 1495 | { "Show not Running","Zeige nicht Laufende" }, |
1496 | { "Click to add new Todo","Klick für neues Todo!" }, | 1496 | { "Click to add new Todo","Klick für neues Todo!" }, |
1497 | { "Show next conflict for","Zeige nächsten Konflikt für" }, | ||
1498 | { "All events","Alle Termine" }, | ||
1499 | { "Allday events","Ganztagestermine" }, | ||
1500 | { "Events with time","Termine mit Zeit" }, | ||
1501 | { "No conflict found within the next two years","Kein Konflikt innerhalb der nächsten zwei Jahre gefunden" }, | ||
1502 | { "Conflict %1 <-> %2","Konflikt %1 <-> %2" }, | ||
1503 | { "<p><b>Q</b>: Show next date with conflicting events\n ","<p><b>Q</b>: Zeige nächstes Datum mit Terminen im Konflikt\n " }, | ||
1504 | { "","" }, | ||
1505 | { "","" }, | ||
1506 | { "","" }, | ||
1507 | { "","" }, | ||
1508 | { "","" }, | ||
1509 | { "","" }, | ||
1510 | { "","" }, | ||
1497 | { "","" }, | 1511 | { "","" }, |
1498 | { "","" }, | 1512 | { "","" }, |
1499 | { "","" }, | 1513 | { "","" }, |
1500 | { "","" }, | 1514 | { "","" }, |
diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp index bc1c0c7..9a114d0 100644 --- a/korganizer/calendarview.cpp +++ b/korganizer/calendarview.cpp | |||
@@ -653,8 +653,74 @@ CalendarView::~CalendarView() | |||
653 | delete mDateFrame ; | 653 | delete mDateFrame ; |
654 | delete mEventViewerDialog; | 654 | delete mEventViewerDialog; |
655 | //kdDebug() << "~CalendarView() done" << endl; | 655 | //kdDebug() << "~CalendarView() done" << endl; |
656 | } | 656 | } |
657 | void CalendarView::nextConflict( bool all, bool allday ) | ||
658 | { | ||
659 | QDate start = mNavigator->selectedDates().first().addDays(1); | ||
660 | QDate end = start.addDays( 365*2); | ||
661 | while ( start < end ) { | ||
662 | QPtrList<Event> eventList = calendar()->events( start ); | ||
663 | Event * ev = eventList.first(); | ||
664 | QPtrList<Event> test = eventList; | ||
665 | while ( ev ) { | ||
666 | //qDebug("found %d on %s ", eventList.count(), start.toString().latin1()); | ||
667 | Event * t_ev = test.first(); | ||
668 | QDateTime es = ev->dtStart(); | ||
669 | QDateTime ee = ev->dtEnd(); | ||
670 | if ( ev->doesFloat() ) | ||
671 | ee = ee.addDays( 1 ); | ||
672 | if ( ! all ) { | ||
673 | if ( ev->doesFloat() != allday ) | ||
674 | t_ev = 0; | ||
675 | } | ||
676 | while ( t_ev ) { | ||
677 | bool skip = false; | ||
678 | if ( ! all ) { | ||
679 | if ( t_ev->doesFloat() != allday ) | ||
680 | skip = true; | ||
681 | } | ||
682 | if ( !skip && ev != t_ev ) { | ||
683 | QDateTime ets = t_ev->dtStart(); | ||
684 | QDateTime ete = t_ev->dtEnd(); | ||
685 | if ( t_ev->doesFloat() ) | ||
686 | ete = ete.addDays( 1 ); | ||
687 | //qDebug("test %s -- %s -------- %s -- %s ", es.toString().latin1() , ee.toString().latin1(), ets.toString().latin1() , ete.toString().latin1() ); | ||
688 | if ( es < ete && ets < ee ) { | ||
689 | if ( mViewManager->currentView() != mViewManager->agendaView() || mNavigator->selectedDates().count() > 1 ) | ||
690 | mViewManager->showDayView(); | ||
691 | mNavigator->slotDaySelect( start ); | ||
692 | int hour = es.time().hour(); | ||
693 | if ( ets > es ) | ||
694 | hour = ets.time().hour(); | ||
695 | mViewManager->agendaView()->setStartHour( hour ); | ||
696 | topLevelWidget()->setCaption( i18n("Conflict %1 <-> %2"). arg( ev->summary().left( 20 ) ).arg( t_ev->summary().left( 20 ) ) ); | ||
697 | return; | ||
698 | } | ||
699 | } | ||
700 | t_ev = test.next(); | ||
701 | } | ||
702 | ev = eventList.next(); | ||
703 | } | ||
704 | start = start.addDays( 1 ); | ||
705 | } | ||
706 | topLevelWidget()->setCaption( i18n("No conflict found within the next two years") ); | ||
707 | qDebug("No conflict found "); | ||
708 | } | ||
709 | |||
710 | void CalendarView::conflictAll() | ||
711 | { | ||
712 | nextConflict ( true, true ); | ||
713 | } | ||
714 | void CalendarView::conflictAllday() | ||
715 | { | ||
716 | nextConflict ( false, true ); | ||
717 | } | ||
718 | void CalendarView::conflictNotAll() | ||
719 | { | ||
720 | nextConflict ( false, false ); | ||
721 | } | ||
722 | |||
657 | void CalendarView::setCalReadOnly( int id, bool readO ) | 723 | void CalendarView::setCalReadOnly( int id, bool readO ) |
658 | { | 724 | { |
659 | if ( readO ) { | 725 | if ( readO ) { |
660 | emit save(); | 726 | emit save(); |
@@ -3161,9 +3227,9 @@ void CalendarView::cloneIncidence(Incidence * orgInc ) | |||
3161 | Todo* t = (Todo*) newInc; | 3227 | Todo* t = (Todo*) newInc; |
3162 | bool cloneSub = false; | 3228 | bool cloneSub = false; |
3163 | if ( orgInc->relations().count() ) { | 3229 | if ( orgInc->relations().count() ) { |
3164 | int result = KMessageBox::warningYesNoCancel(this, | 3230 | int result = KMessageBox::warningYesNoCancel(this, |
3165 | i18n("The todo\n%1\nwill be cloned!\nIt has subtodos!\nDo you want to clone\nall subtodos as well?").arg( newInc->summary().left ( 25 ) ), | 3231 | i18n("The todo\n%1\nwill be cloned!\nIt has subtodos!\nDo you want to clone\nall subtodos as well?").arg( KGlobal::formatMessage ( newInc->summary(),0 ) ), |
3166 | i18n("Todo has subtodos"), | 3232 | i18n("Todo has subtodos"), |
3167 | i18n("Yes"), | 3233 | i18n("Yes"), |
3168 | i18n("No")); | 3234 | i18n("No")); |
3169 | 3235 | ||
@@ -3499,9 +3565,9 @@ void CalendarView::deleteTodo(Todo *todo) | |||
3499 | KNotifyClient::beep(); | 3565 | KNotifyClient::beep(); |
3500 | return; | 3566 | return; |
3501 | } | 3567 | } |
3502 | if (KOPrefs::instance()->mConfirm) { | 3568 | if (KOPrefs::instance()->mConfirm) { |
3503 | QString text = todo->summary().left(20); | 3569 | QString text = KGlobal::formatMessage ( todo->summary(),0 ); |
3504 | if (!todo->relations().isEmpty()) { | 3570 | if (!todo->relations().isEmpty()) { |
3505 | text += i18n("\nhas sub-todos.\nAll completed sub-todos\nwill be deleted as well!"); | 3571 | text += i18n("\nhas sub-todos.\nAll completed sub-todos\nwill be deleted as well!"); |
3506 | 3572 | ||
3507 | } | 3573 | } |
@@ -3545,9 +3611,9 @@ void CalendarView::deleteJournal(Journal *jour) | |||
3545 | des = des.simplifyWhiteSpace (); | 3611 | des = des.simplifyWhiteSpace (); |
3546 | des.replace (QRegExp ("\\n"),"" ); | 3612 | des.replace (QRegExp ("\\n"),"" ); |
3547 | des.replace (QRegExp ("\\r"),"" ); | 3613 | des.replace (QRegExp ("\\r"),"" ); |
3548 | } | 3614 | } |
3549 | switch (msgItemDelete( i18n("Journal:") +"\n"+des.left(20))) { | 3615 | switch (msgItemDelete( i18n("Journal:") +"\n"+KGlobal::formatMessage ( des,0 ))) { |
3550 | case KMessageBox::Continue: // OK | 3616 | case KMessageBox::Continue: // OK |
3551 | calendar()->deleteJournal(jour); | 3617 | calendar()->deleteJournal(jour); |
3552 | updateView(); | 3618 | updateView(); |
3553 | break; | 3619 | break; |
@@ -3571,17 +3637,17 @@ void CalendarView::deleteEvent(Event *anEvent) | |||
3571 | int km; | 3637 | int km; |
3572 | if (!itemDate.isValid()) { | 3638 | if (!itemDate.isValid()) { |
3573 | //kdDebug() << "Date Not Valid" << endl; | 3639 | //kdDebug() << "Date Not Valid" << endl; |
3574 | if (KOPrefs::instance()->mConfirm) { | 3640 | if (KOPrefs::instance()->mConfirm) { |
3575 | km = KMessageBox::warningContinueCancel(this,anEvent->summary().left(25) + | 3641 | km = KMessageBox::warningContinueCancel(this,KGlobal::formatMessage ( anEvent->summary(),0 ) + |
3576 | i18n("\nThis event recurs\nover multiple dates.\nAre you sure you want\nto delete this event\nand all its recurrences?"), | 3642 | i18n("\nThis event recurs\nover multiple dates.\nAre you sure you want\nto delete this event\nand all its recurrences?"), |
3577 | i18n("KO/Pi Confirmation"),i18n("Delete All")); | 3643 | i18n("KO/Pi Confirmation"),i18n("Delete All")); |
3578 | if ( km == KMessageBox::Continue ) | 3644 | if ( km == KMessageBox::Continue ) |
3579 | km = KMessageBox::No; // No = all below | 3645 | km = KMessageBox::No; // No = all below |
3580 | } else | 3646 | } else |
3581 | km = KMessageBox::No; | 3647 | km = KMessageBox::No; |
3582 | } else { | 3648 | } else { |
3583 | km = KMessageBox::warningYesNoCancel(this,anEvent->summary().left(25) + | 3649 | km = KMessageBox::warningYesNoCancel(this,KGlobal::formatMessage ( anEvent->summary(),0 ) + |
3584 | i18n("\nThis event recurs\nover multiple dates.\nDo you want to delete\nall it's recurrences,\nor only the current one on:\n")+ | 3650 | i18n("\nThis event recurs\nover multiple dates.\nDo you want to delete\nall it's recurrences,\nor only the current one on:\n")+ |
3585 | KGlobal::locale()->formatDate(itemDate)+i18n(" ?\n\nDelete:\n"), | 3651 | KGlobal::locale()->formatDate(itemDate)+i18n(" ?\n\nDelete:\n"), |
3586 | i18n("KO/Pi Confirmation"),i18n("Current"), | 3652 | i18n("KO/Pi Confirmation"),i18n("Current"), |
3587 | i18n("All")); | 3653 | i18n("All")); |
@@ -3620,9 +3686,9 @@ void CalendarView::deleteEvent(Event *anEvent) | |||
3620 | //#endif | 3686 | //#endif |
3621 | } // switch | 3687 | } // switch |
3622 | } else { | 3688 | } else { |
3623 | if (KOPrefs::instance()->mConfirm) { | 3689 | if (KOPrefs::instance()->mConfirm) { |
3624 | switch (KMessageBox::warningContinueCancel(this,anEvent->summary().left(25) + | 3690 | switch (KMessageBox::warningContinueCancel(this,KGlobal::formatMessage ( anEvent->summary(),0 ) + |
3625 | i18n("\nAre you sure you want\nto delete this event?"), | 3691 | i18n("\nAre you sure you want\nto delete this event?"), |
3626 | i18n("KO/Pi Confirmation"),i18n("Delete"))) { | 3692 | i18n("KO/Pi Confirmation"),i18n("Delete"))) { |
3627 | case KMessageBox::Continue: // OK | 3693 | case KMessageBox::Continue: // OK |
3628 | if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0) | 3694 | if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0) |
@@ -4579,9 +4645,9 @@ void CalendarView::undo_delete() | |||
4579 | KMessageBox::sorry(this,i18n("There is nothing to undo!"), | 4645 | KMessageBox::sorry(this,i18n("There is nothing to undo!"), |
4580 | i18n("KO/Pi")); | 4646 | i18n("KO/Pi")); |
4581 | return; | 4647 | return; |
4582 | } | 4648 | } |
4583 | if ( KMessageBox::Continue ==KMessageBox::warningContinueCancel(this,undo->summary().left(25) + | 4649 | if ( KMessageBox::Continue ==KMessageBox::warningContinueCancel(this,KGlobal::formatMessage ( undo->summary(),0 ) + |
4584 | i18n("\nAre you sure you want\nto restore this?"), | 4650 | i18n("\nAre you sure you want\nto restore this?"), |
4585 | i18n("KO/Pi Confirmation"),i18n("Restore"))) { | 4651 | i18n("KO/Pi Confirmation"),i18n("Restore"))) { |
4586 | mCalendar->undoDeleteIncidence(); | 4652 | mCalendar->undoDeleteIncidence(); |
4587 | updateView(); | 4653 | updateView(); |
diff --git a/korganizer/calendarview.h b/korganizer/calendarview.h index a5f230a..51eb1d4 100644 --- a/korganizer/calendarview.h +++ b/korganizer/calendarview.h | |||
@@ -199,8 +199,12 @@ class CalendarView : public KOrg::CalendarViewBase, public KCal::Calendar::Obser | |||
199 | void filtersUpdated(); | 199 | void filtersUpdated(); |
200 | 200 | ||
201 | 201 | ||
202 | public slots: | 202 | public slots: |
203 | void nextConflict( bool all, bool allday ); | ||
204 | void conflictAll(); | ||
205 | void conflictAllday(); | ||
206 | void conflictNotAll(); | ||
203 | void setCalReadOnly( int id, bool readO ); | 207 | void setCalReadOnly( int id, bool readO ); |
204 | void checkAlarms(); | 208 | void checkAlarms(); |
205 | void checkFiles(); | 209 | void checkFiles(); |
206 | void slotprintSelInc(); | 210 | void slotprintSelInc(); |
diff --git a/korganizer/mainwindow.cpp b/korganizer/mainwindow.cpp index 9c2ac82..bfae1b5 100644 --- a/korganizer/mainwindow.cpp +++ b/korganizer/mainwindow.cpp | |||
@@ -658,8 +658,9 @@ void MainWindow::initActions() | |||
658 | 658 | ||
659 | QPopupMenu *viewMenu = new QPopupMenu( this ); | 659 | QPopupMenu *viewMenu = new QPopupMenu( this ); |
660 | QPopupMenu *actionMenu = new QPopupMenu( this ); | 660 | QPopupMenu *actionMenu = new QPopupMenu( this ); |
661 | mCurrentItemMenu = new QPopupMenu ( this ); | 661 | mCurrentItemMenu = new QPopupMenu ( this ); |
662 | QPopupMenu *nextConflictMenu = new QPopupMenu ( this ); | ||
662 | QPopupMenu *importMenu = new QPopupMenu( this ); | 663 | QPopupMenu *importMenu = new QPopupMenu( this ); |
663 | QPopupMenu *importMenu_X = new QPopupMenu( this ); | 664 | QPopupMenu *importMenu_X = new QPopupMenu( this ); |
664 | QPopupMenu *exportMenu_X = new QPopupMenu( this ); | 665 | QPopupMenu *exportMenu_X = new QPopupMenu( this ); |
665 | QPopupMenu *beamMenu_X = new QPopupMenu( this ); | 666 | QPopupMenu *beamMenu_X = new QPopupMenu( this ); |
@@ -788,17 +789,44 @@ void MainWindow::initActions() | |||
788 | QAction* search_action = new QAction( i18n("Search"), icon, i18n("Search..."), 0, this ); | 789 | QAction* search_action = new QAction( i18n("Search"), icon, i18n("Search..."), 0, this ); |
789 | search_action->addTo( actionMenu ); | 790 | search_action->addTo( actionMenu ); |
790 | connect( search_action, SIGNAL( activated() ), | 791 | connect( search_action, SIGNAL( activated() ), |
791 | mView->dialogManager(), SLOT( showSearchDialog() ) ); | 792 | mView->dialogManager(), SLOT( showSearchDialog() ) ); |
793 | actionMenu->insertItem( i18n("Show next conflict for"), nextConflictMenu ); | ||
792 | 794 | ||
793 | actionMenu->insertSeparator(); | 795 | action = new QAction( "Undo Delete", i18n("All events"), 0, this ); |
794 | 796 | action->addTo( nextConflictMenu ); | |
797 | connect( action, SIGNAL( activated() ), | ||
798 | mView, SLOT( conflictAll() ) ); | ||
795 | 799 | ||
800 | action = new QAction( "Undo Delete", i18n("Allday events"), 0, this ); | ||
801 | action->addTo( nextConflictMenu ); | ||
802 | connect( action, SIGNAL( activated() ), | ||
803 | mView, SLOT( conflictAllday() ) ); | ||
796 | 804 | ||
797 | action = new QAction( i18n("Undo Delete"), i18n("Undo Delete..."), 0, this ); | 805 | action = new QAction( "Undo Delete", i18n("Events with time"), 0, this ); |
798 | action->addTo( mCurrentItemMenu ); | 806 | action->addTo( nextConflictMenu ); |
799 | connect( action, SIGNAL( activated() ), | 807 | connect( action, SIGNAL( activated() ), |
800 | mView, SLOT( undo_delete() ) ); | 808 | mView, SLOT( conflictNotAll() ) ); |
809 | |||
810 | actionMenu->insertSeparator(); | ||
811 | |||
812 | icon = loadPixmap( pathString + "newevent" ); | ||
813 | QAction* ne_action = new QAction( i18n("New Event..."), icon, i18n("New Event..."), 0, this ); | ||
814 | ne_action->addTo( mCurrentItemMenu ); | ||
815 | connect( ne_action, SIGNAL( activated() ), | ||
816 | mView, SLOT( newEvent() ) ); | ||
817 | icon = loadPixmap( pathString + "newtodo" ); | ||
818 | configureToolBarMenu->insertItem(icon, i18n("New Todo..."), 20 ); | ||
819 | QAction* nt_action = new QAction( i18n("New Todo..."), icon, i18n("New Todo..."), 0, this ); | ||
820 | nt_action->addTo( mCurrentItemMenu ); | ||
821 | connect( nt_action, SIGNAL( activated() ), | ||
822 | mView, SLOT( newTodo() ) ); | ||
823 | mNewSubTodoAction = new QAction( "new_subtodo", i18n("New Sub-Todo..."), 0, | ||
824 | this ); | ||
825 | mNewSubTodoAction->addTo( mCurrentItemMenu ); | ||
826 | connect( mNewSubTodoAction, SIGNAL( activated() ), | ||
827 | mView, SLOT( newSubTodo() ) ); | ||
828 | |||
801 | mCurrentItemMenu->insertSeparator(); | 829 | mCurrentItemMenu->insertSeparator(); |
802 | icon = loadPixmap( pathString + "newevent" ); | 830 | icon = loadPixmap( pathString + "newevent" ); |
803 | configureToolBarMenu->insertItem(i18n("Stretched TB"), 5 ); | 831 | configureToolBarMenu->insertItem(i18n("Stretched TB"), 5 ); |
804 | configureToolBarMenu->insertItem(i18n("Only one toolbar"), 6 ); | 832 | configureToolBarMenu->insertItem(i18n("Only one toolbar"), 6 ); |
@@ -843,20 +871,14 @@ void MainWindow::initActions() | |||
843 | mCancelAction->addTo( mCurrentItemMenu ); | 871 | mCancelAction->addTo( mCurrentItemMenu ); |
844 | connect( mCancelAction, SIGNAL( activated() ), | 872 | connect( mCancelAction, SIGNAL( activated() ), |
845 | mView, SLOT( toggleCancelIncidence() ) ); | 873 | mView, SLOT( toggleCancelIncidence() ) ); |
846 | 874 | ||
847 | QAction* ne_action = new QAction( i18n("New Event..."), icon, i18n("New Event..."), 0, this ); | ||
848 | ne_action->addTo( actionMenu ); | ||
849 | connect( ne_action, SIGNAL( activated() ), | ||
850 | mView, SLOT( newEvent() ) ); | ||
851 | icon = loadPixmap( pathString + "newtodo" ); | ||
852 | configureToolBarMenu->insertItem(icon, i18n("New Todo..."), 20 ); | ||
853 | QAction* nt_action = new QAction( i18n("New Todo..."), icon, i18n("New Todo..."), 0, this ); | ||
854 | nt_action->addTo( actionMenu ); | ||
855 | connect( nt_action, SIGNAL( activated() ), | ||
856 | mView, SLOT( newTodo() ) ); | ||
857 | |||
858 | 875 | ||
876 | mCurrentItemMenu->insertSeparator(); | ||
877 | action = new QAction( i18n("Undo Delete"), i18n("Undo Delete..."), 0, this ); | ||
878 | action->addTo( mCurrentItemMenu ); | ||
879 | connect( action, SIGNAL( activated() ), | ||
880 | mView, SLOT( undo_delete() ) ); | ||
859 | 881 | ||
860 | // *********************** | 882 | // *********************** |
861 | if ( KOPrefs::instance()->mVerticalScreen ) { | 883 | if ( KOPrefs::instance()->mVerticalScreen ) { |
862 | icon = SmallIcon( "1updownarrow" ); | 884 | icon = SmallIcon( "1updownarrow" ); |
@@ -995,13 +1017,9 @@ void MainWindow::initActions() | |||
995 | connect( action, SIGNAL( activated() ), | 1017 | connect( action, SIGNAL( activated() ), |
996 | mView->viewManager(), SLOT( showTimeSpanView() ) ); | 1018 | mView->viewManager(), SLOT( showTimeSpanView() ) ); |
997 | #endif | 1019 | #endif |
998 | 1020 | ||
999 | mNewSubTodoAction = new QAction( "new_subtodo", i18n("New Sub-Todo..."), 0, | 1021 | |
1000 | this ); | ||
1001 | mNewSubTodoAction->addTo( actionMenu ); | ||
1002 | connect( mNewSubTodoAction, SIGNAL( activated() ), | ||
1003 | mView, SLOT( newSubTodo() ) ); | ||
1004 | 1022 | ||
1005 | action = new QAction( "purge_completed", i18n("Purge Completed..."), 0, | 1023 | action = new QAction( "purge_completed", i18n("Purge Completed..."), 0, |
1006 | this ); | 1024 | this ); |
1007 | action->addTo( actionMenu ); | 1025 | action->addTo( actionMenu ); |
@@ -1564,8 +1582,9 @@ void MainWindow::keyBindings() | |||
1564 | i18n("<p><b>R</b>: Toggle Resource View |<b>F</b>: Edit filter </p>\n")+ | 1582 | i18n("<p><b>R</b>: Toggle Resource View |<b>F</b>: Edit filter </p>\n")+ |
1565 | i18n("<p><b>O</b>: Filter On/Off | <b>J</b>: Journal view</p>\n")+ | 1583 | i18n("<p><b>O</b>: Filter On/Off | <b>J</b>: Journal view</p>\n")+ |
1566 | i18n("<p><b>1-0</b> (+<b>ctrl</b>): Select filter 1-10 (11-20)</p>\n")+ | 1584 | i18n("<p><b>1-0</b> (+<b>ctrl</b>): Select filter 1-10 (11-20)</p>\n")+ |
1567 | i18n("<p><b>X</b>: Next X days view| <b>W</b>: What's next view\n ")+ | 1585 | i18n("<p><b>X</b>: Next X days view| <b>W</b>: What's next view\n ")+ |
1586 | i18n("<p><b>Q</b>: Show next date with conflicting events\n ")+ | ||
1568 | i18n("<p><b>V</b>: Todo view | <b>L</b>: Event list view</p>\n")+ | 1587 | i18n("<p><b>V</b>: Todo view | <b>L</b>: Event list view</p>\n")+ |
1569 | i18n("<p><b>Z,Y</b>: Work week view | <b>U</b>: Week view</p>\n")+ | 1588 | i18n("<p><b>Z,Y</b>: Work week view | <b>U</b>: Week view</p>\n")+ |
1570 | i18n("<p><b>D</b>: One day view | <b>M</b>: Month view</p>\n")+ | 1589 | i18n("<p><b>D</b>: One day view | <b>M</b>: Month view</p>\n")+ |
1571 | i18n("<p><b>K</b>: Week view in Month view syle</p>\n")+ | 1590 | i18n("<p><b>K</b>: Week view in Month view syle</p>\n")+ |
@@ -2098,8 +2117,16 @@ void MainWindow::keyPressEvent ( QKeyEvent * e ) | |||
2098 | mView->goToday(); | 2117 | mView->goToday(); |
2099 | showSelectedDates = true; | 2118 | showSelectedDates = true; |
2100 | } | 2119 | } |
2101 | break; | 2120 | break; |
2121 | case Qt::Key_Q: | ||
2122 | if ( e->state() == Qt::ControlButton ) | ||
2123 | mView->conflictNotAll(); | ||
2124 | else if ( e->state() == Qt::ShiftButton ) | ||
2125 | mView->conflictAllday(); | ||
2126 | else | ||
2127 | mView->conflictAll(); | ||
2128 | break; | ||
2102 | case Qt::Key_J: | 2129 | case Qt::Key_J: |
2103 | mView->viewManager()->showJournalView(); | 2130 | mView->viewManager()->showJournalView(); |
2104 | break; | 2131 | break; |
2105 | case Qt::Key_B: | 2132 | case Qt::Key_B: |