author | zautrix <zautrix> | 2005-03-27 13:04:11 (UTC) |
---|---|---|
committer | zautrix <zautrix> | 2005-03-27 13:04:11 (UTC) |
commit | 9e3e43aaca0986ae224c752d2d3a760661be61b6 (patch) (unidiff) | |
tree | 18295c0cc7177be6022a7abec716131f06b2a756 /korganizer | |
parent | 1800cf5f3af1f666dddcbfffe3171adcd467ae3d (diff) | |
download | kdepimpi-9e3e43aaca0986ae224c752d2d3a760661be61b6.zip kdepimpi-9e3e43aaca0986ae224c752d2d3a760661be61b6.tar.gz kdepimpi-9e3e43aaca0986ae224c752d2d3a760661be61b6.tar.bz2 |
fixes
-rw-r--r-- | korganizer/calendarview.cpp | 28 | ||||
-rw-r--r-- | korganizer/koagendaview.cpp | 27 | ||||
-rw-r--r-- | korganizer/mainwindow.cpp | 8 |
3 files changed, 43 insertions, 20 deletions
diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp index 73aa733..a330414 100644 --- a/korganizer/calendarview.cpp +++ b/korganizer/calendarview.cpp | |||
@@ -3688,395 +3688,417 @@ void CalendarView::updateFilter() | |||
3688 | if (mFilterView->filtersEnabled()) { | 3688 | if (mFilterView->filtersEnabled()) { |
3689 | mess = i18n("Filter selected: ")+filter->name(); | 3689 | mess = i18n("Filter selected: ")+filter->name(); |
3690 | filter->setEnabled(true); | 3690 | filter->setEnabled(true); |
3691 | } | 3691 | } |
3692 | else filter->setEnabled(false); | 3692 | else filter->setEnabled(false); |
3693 | mCalendar->setFilter(filter); | 3693 | mCalendar->setFilter(filter); |
3694 | updateView(); | 3694 | updateView(); |
3695 | if ( !mess.isEmpty() ) | 3695 | if ( !mess.isEmpty() ) |
3696 | topLevelWidget()->setCaption( mess ); | 3696 | topLevelWidget()->setCaption( mess ); |
3697 | 3697 | ||
3698 | } | 3698 | } |
3699 | } | 3699 | } |
3700 | 3700 | ||
3701 | void CalendarView::filterEdited() | 3701 | void CalendarView::filterEdited() |
3702 | { | 3702 | { |
3703 | mFilterView->updateFilters(); | 3703 | mFilterView->updateFilters(); |
3704 | updateFilter(); | 3704 | updateFilter(); |
3705 | writeSettings(); | 3705 | writeSettings(); |
3706 | } | 3706 | } |
3707 | 3707 | ||
3708 | 3708 | ||
3709 | void CalendarView::takeOverEvent() | 3709 | void CalendarView::takeOverEvent() |
3710 | { | 3710 | { |
3711 | Incidence *incidence = currentSelection(); | 3711 | Incidence *incidence = currentSelection(); |
3712 | 3712 | ||
3713 | if (!incidence) return; | 3713 | if (!incidence) return; |
3714 | 3714 | ||
3715 | incidence->setOrganizer(KOPrefs::instance()->email()); | 3715 | incidence->setOrganizer(KOPrefs::instance()->email()); |
3716 | incidence->recreate(); | 3716 | incidence->recreate(); |
3717 | incidence->setReadOnly(false); | 3717 | incidence->setReadOnly(false); |
3718 | 3718 | ||
3719 | updateView(); | 3719 | updateView(); |
3720 | } | 3720 | } |
3721 | 3721 | ||
3722 | void CalendarView::takeOverCalendar() | 3722 | void CalendarView::takeOverCalendar() |
3723 | { | 3723 | { |
3724 | // TODO: Create Calendar::allIncidences() function and use it here | 3724 | // TODO: Create Calendar::allIncidences() function and use it here |
3725 | 3725 | ||
3726 | QPtrList<Event> events = mCalendar->events(); | 3726 | QPtrList<Event> events = mCalendar->events(); |
3727 | for(uint i=0; i<events.count(); ++i) { | 3727 | for(uint i=0; i<events.count(); ++i) { |
3728 | events.at(i)->setOrganizer(KOPrefs::instance()->email()); | 3728 | events.at(i)->setOrganizer(KOPrefs::instance()->email()); |
3729 | events.at(i)->recreate(); | 3729 | events.at(i)->recreate(); |
3730 | events.at(i)->setReadOnly(false); | 3730 | events.at(i)->setReadOnly(false); |
3731 | } | 3731 | } |
3732 | 3732 | ||
3733 | QPtrList<Todo> todos = mCalendar->todos(); | 3733 | QPtrList<Todo> todos = mCalendar->todos(); |
3734 | for(uint i=0; i<todos.count(); ++i) { | 3734 | for(uint i=0; i<todos.count(); ++i) { |
3735 | todos.at(i)->setOrganizer(KOPrefs::instance()->email()); | 3735 | todos.at(i)->setOrganizer(KOPrefs::instance()->email()); |
3736 | todos.at(i)->recreate(); | 3736 | todos.at(i)->recreate(); |
3737 | todos.at(i)->setReadOnly(false); | 3737 | todos.at(i)->setReadOnly(false); |
3738 | } | 3738 | } |
3739 | 3739 | ||
3740 | QPtrList<Journal> journals = mCalendar->journals(); | 3740 | QPtrList<Journal> journals = mCalendar->journals(); |
3741 | for(uint i=0; i<journals.count(); ++i) { | 3741 | for(uint i=0; i<journals.count(); ++i) { |
3742 | journals.at(i)->setOrganizer(KOPrefs::instance()->email()); | 3742 | journals.at(i)->setOrganizer(KOPrefs::instance()->email()); |
3743 | journals.at(i)->recreate(); | 3743 | journals.at(i)->recreate(); |
3744 | journals.at(i)->setReadOnly(false); | 3744 | journals.at(i)->setReadOnly(false); |
3745 | } | 3745 | } |
3746 | 3746 | ||
3747 | updateView(); | 3747 | updateView(); |
3748 | } | 3748 | } |
3749 | 3749 | ||
3750 | void CalendarView::showIntro() | 3750 | void CalendarView::showIntro() |
3751 | { | 3751 | { |
3752 | kdDebug() << "To be implemented." << endl; | 3752 | kdDebug() << "To be implemented." << endl; |
3753 | } | 3753 | } |
3754 | 3754 | ||
3755 | QWidgetStack *CalendarView::viewStack() | 3755 | QWidgetStack *CalendarView::viewStack() |
3756 | { | 3756 | { |
3757 | return mRightFrame; | 3757 | return mRightFrame; |
3758 | } | 3758 | } |
3759 | 3759 | ||
3760 | QWidget *CalendarView::leftFrame() | 3760 | QWidget *CalendarView::leftFrame() |
3761 | { | 3761 | { |
3762 | return ( QWidget *)mLeftFrame; | 3762 | return ( QWidget *)mLeftFrame; |
3763 | } | 3763 | } |
3764 | 3764 | ||
3765 | DateNavigator *CalendarView::dateNavigator() | 3765 | DateNavigator *CalendarView::dateNavigator() |
3766 | { | 3766 | { |
3767 | return mNavigator; | 3767 | return mNavigator; |
3768 | } | 3768 | } |
3769 | 3769 | ||
3770 | KDateNavigator* CalendarView::dateNavigatorWidget() | 3770 | KDateNavigator* CalendarView::dateNavigatorWidget() |
3771 | { | 3771 | { |
3772 | return mDateNavigator->navigatorView(); | 3772 | return mDateNavigator->navigatorView(); |
3773 | } | 3773 | } |
3774 | void CalendarView::toggleDateNavigatorWidget() | 3774 | void CalendarView::toggleDateNavigatorWidget() |
3775 | { | 3775 | { |
3776 | KOPrefs::instance()->mShowDateNavigator = !KOPrefs::instance()->mShowDateNavigator ; | 3776 | KOPrefs::instance()->mShowDateNavigator = !KOPrefs::instance()->mShowDateNavigator ; |
3777 | 3777 | ||
3778 | if (!KOPrefs::instance()->mShowDateNavigator ) | 3778 | if (!KOPrefs::instance()->mShowDateNavigator ) |
3779 | mDateNavigator->hide(); | 3779 | mDateNavigator->hide(); |
3780 | else | 3780 | else |
3781 | mDateNavigator->show(); | 3781 | mDateNavigator->show(); |
3782 | } | 3782 | } |
3783 | void CalendarView::addView(KOrg::BaseView *view) | 3783 | void CalendarView::addView(KOrg::BaseView *view) |
3784 | { | 3784 | { |
3785 | mViewManager->addView(view); | 3785 | mViewManager->addView(view); |
3786 | } | 3786 | } |
3787 | 3787 | ||
3788 | void CalendarView::showView(KOrg::BaseView *view) | 3788 | void CalendarView::showView(KOrg::BaseView *view) |
3789 | { | 3789 | { |
3790 | mViewManager->showView(view, mLeftFrame->isVisible()); | 3790 | mViewManager->showView(view, mLeftFrame->isVisible()); |
3791 | } | 3791 | } |
3792 | 3792 | ||
3793 | Incidence *CalendarView::currentSelection() | 3793 | Incidence *CalendarView::currentSelection() |
3794 | { | 3794 | { |
3795 | return mViewManager->currentSelection(); | 3795 | return mViewManager->currentSelection(); |
3796 | } | 3796 | } |
3797 | void CalendarView::toggleAllDaySize() | 3797 | void CalendarView::toggleAllDaySize() |
3798 | { | 3798 | { |
3799 | /* | 3799 | /* |
3800 | if ( KOPrefs::instance()->mAllDaySize > 47 ) | 3800 | if ( KOPrefs::instance()->mAllDaySize > 47 ) |
3801 | KOPrefs::instance()->mAllDaySize = KOPrefs::instance()->mAllDaySize /2; | 3801 | KOPrefs::instance()->mAllDaySize = KOPrefs::instance()->mAllDaySize /2; |
3802 | else | 3802 | else |
3803 | KOPrefs::instance()->mAllDaySize = KOPrefs::instance()->mAllDaySize *2; | 3803 | KOPrefs::instance()->mAllDaySize = KOPrefs::instance()->mAllDaySize *2; |
3804 | */ | 3804 | */ |
3805 | viewManager()->agendaView()->toggleAllDay(); | 3805 | viewManager()->agendaView()->toggleAllDay(); |
3806 | } | 3806 | } |
3807 | void CalendarView::toggleExpand() | 3807 | void CalendarView::toggleExpand() |
3808 | { | 3808 | { |
3809 | // if ( mLeftFrame->isHidden() ) { | 3809 | // if ( mLeftFrame->isHidden() ) { |
3810 | // mLeftFrame->show(); | 3810 | // mLeftFrame->show(); |
3811 | // emit calendarViewExpanded( false ); | 3811 | // emit calendarViewExpanded( false ); |
3812 | // } else { | 3812 | // } else { |
3813 | // mLeftFrame->hide(); | 3813 | // mLeftFrame->hide(); |
3814 | // emit calendarViewExpanded( true ); | 3814 | // emit calendarViewExpanded( true ); |
3815 | // } | 3815 | // } |
3816 | //qDebug(" CalendarView::toggleExpand()"); | 3816 | //qDebug(" CalendarView::toggleExpand()"); |
3817 | globalFlagBlockAgenda = 1; | 3817 | globalFlagBlockAgenda = 1; |
3818 | emit calendarViewExpanded( !mLeftFrame->isHidden() ); | 3818 | emit calendarViewExpanded( !mLeftFrame->isHidden() ); |
3819 | globalFlagBlockAgenda = 5; | 3819 | globalFlagBlockAgenda = 5; |
3820 | mViewManager->raiseCurrentView( !mLeftFrame->isHidden() ); | 3820 | mViewManager->raiseCurrentView( !mLeftFrame->isHidden() ); |
3821 | //mViewManager->showView( 0, true ); | 3821 | //mViewManager->showView( 0, true ); |
3822 | } | 3822 | } |
3823 | 3823 | ||
3824 | void CalendarView::calendarModified( bool modified, Calendar * ) | 3824 | void CalendarView::calendarModified( bool modified, Calendar * ) |
3825 | { | 3825 | { |
3826 | setModified( modified ); | 3826 | setModified( modified ); |
3827 | } | 3827 | } |
3828 | 3828 | ||
3829 | Todo *CalendarView::selectedTodo() | 3829 | Todo *CalendarView::selectedTodo() |
3830 | { | 3830 | { |
3831 | Incidence *incidence = currentSelection(); | 3831 | Incidence *incidence = currentSelection(); |
3832 | if ( incidence && incidence->type() == "Todo" ) { | 3832 | if ( incidence && incidence->type() == "Todo" ) { |
3833 | return static_cast<Todo *>( incidence ); | 3833 | return static_cast<Todo *>( incidence ); |
3834 | } | 3834 | } |
3835 | 3835 | ||
3836 | incidence = mTodoList->selectedIncidences().first(); | 3836 | incidence = mTodoList->selectedIncidences().first(); |
3837 | if ( incidence && incidence->type() == "Todo" ) { | 3837 | if ( incidence && incidence->type() == "Todo" ) { |
3838 | return static_cast<Todo *>( incidence ); | 3838 | return static_cast<Todo *>( incidence ); |
3839 | } | 3839 | } |
3840 | 3840 | ||
3841 | return 0; | 3841 | return 0; |
3842 | } | 3842 | } |
3843 | 3843 | ||
3844 | void CalendarView::dialogClosing(Incidence *in) | 3844 | void CalendarView::dialogClosing(Incidence *in) |
3845 | { | 3845 | { |
3846 | // mDialogList.remove(in); | 3846 | // mDialogList.remove(in); |
3847 | } | 3847 | } |
3848 | 3848 | ||
3849 | void CalendarView::showIncidence() | 3849 | void CalendarView::showIncidence() |
3850 | { | 3850 | { |
3851 | mViewerCallerIsSearchDialog = false; | 3851 | mViewerCallerIsSearchDialog = false; |
3852 | Incidence *incidence = currentSelection(); | 3852 | Incidence *incidence = currentSelection(); |
3853 | if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); | 3853 | if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); |
3854 | if ( incidence ) { | 3854 | if ( incidence ) { |
3855 | ShowIncidenceVisitor v; | 3855 | ShowIncidenceVisitor v; |
3856 | v.act( incidence, this ); | 3856 | v.act( incidence, this ); |
3857 | } | 3857 | } |
3858 | } | 3858 | } |
3859 | void CalendarView::editIncidenceDescription() | 3859 | void CalendarView::editIncidenceDescription() |
3860 | { | 3860 | { |
3861 | mFlagEditDescription = true; | 3861 | mFlagEditDescription = true; |
3862 | editIncidence(); | 3862 | editIncidence(); |
3863 | mFlagEditDescription = false; | 3863 | mFlagEditDescription = false; |
3864 | } | 3864 | } |
3865 | void CalendarView::editIncidence() | 3865 | void CalendarView::editIncidence() |
3866 | { | 3866 | { |
3867 | // qDebug("editIncidence() "); | 3867 | // qDebug("editIncidence() "); |
3868 | Incidence *incidence = currentSelection(); | 3868 | Incidence *incidence = currentSelection(); |
3869 | if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); | 3869 | if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); |
3870 | if ( incidence ) { | 3870 | if ( incidence ) { |
3871 | EditIncidenceVisitor v; | 3871 | EditIncidenceVisitor v; |
3872 | v.act( incidence, this ); | 3872 | v.act( incidence, this ); |
3873 | } | 3873 | } |
3874 | } | 3874 | } |
3875 | 3875 | ||
3876 | void CalendarView::deleteIncidence() | 3876 | void CalendarView::deleteIncidence() |
3877 | { | 3877 | { |
3878 | Incidence *incidence = currentSelection(); | 3878 | Incidence *incidence = currentSelection(); |
3879 | if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); | 3879 | if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); |
3880 | if ( incidence ) { | 3880 | if ( incidence ) { |
3881 | deleteIncidence(incidence); | 3881 | deleteIncidence(incidence); |
3882 | } | 3882 | } |
3883 | } | 3883 | } |
3884 | 3884 | ||
3885 | void CalendarView::showIncidence(Incidence *incidence) | 3885 | void CalendarView::showIncidence(Incidence *incidence) |
3886 | { | 3886 | { |
3887 | mViewerCallerIsSearchDialog = false; | 3887 | mViewerCallerIsSearchDialog = false; |
3888 | //qDebug("%x %x ",sender (), mDialogManager->getSearchDialog() ); | 3888 | //qDebug("%x %x ",sender (), mDialogManager->getSearchDialog() ); |
3889 | if ( sender() && mDialogManager->getSearchDialog() ) { | 3889 | if ( sender() && mDialogManager->getSearchDialog() ) { |
3890 | if ( sender () == mDialogManager->getSearchDialog()->listview() ) { | 3890 | if ( sender () == mDialogManager->getSearchDialog()->listview() ) { |
3891 | mViewerCallerIsSearchDialog = true; | 3891 | mViewerCallerIsSearchDialog = true; |
3892 | } | 3892 | } |
3893 | } | 3893 | } |
3894 | if ( incidence ) { | 3894 | if ( incidence ) { |
3895 | ShowIncidenceVisitor v; | 3895 | ShowIncidenceVisitor v; |
3896 | v.act( incidence, this ); | 3896 | v.act( incidence, this ); |
3897 | } | 3897 | } |
3898 | } | 3898 | } |
3899 | 3899 | ||
3900 | void CalendarView::editIncidence(Incidence *incidence) | 3900 | void CalendarView::editIncidence(Incidence *incidence) |
3901 | { | 3901 | { |
3902 | if ( incidence ) { | 3902 | if ( incidence ) { |
3903 | 3903 | ||
3904 | EditIncidenceVisitor v; | 3904 | EditIncidenceVisitor v; |
3905 | v.act( incidence, this ); | 3905 | v.act( incidence, this ); |
3906 | 3906 | ||
3907 | } | 3907 | } |
3908 | } | 3908 | } |
3909 | 3909 | ||
3910 | void CalendarView::deleteIncidence(Incidence *incidence) | 3910 | void CalendarView::deleteIncidence(Incidence *incidence) |
3911 | { | 3911 | { |
3912 | //qDebug(" CalendarView::deleteIncidence "); | 3912 | //qDebug(" CalendarView::deleteIncidence "); |
3913 | if ( incidence ) { | 3913 | if ( incidence ) { |
3914 | DeleteIncidenceVisitor v; | 3914 | DeleteIncidenceVisitor v; |
3915 | v.act( incidence, this ); | 3915 | v.act( incidence, this ); |
3916 | } | 3916 | } |
3917 | } | 3917 | } |
3918 | 3918 | ||
3919 | 3919 | ||
3920 | void CalendarView::lookForOutgoingMessages() | 3920 | void CalendarView::lookForOutgoingMessages() |
3921 | { | 3921 | { |
3922 | OutgoingDialog *ogd = mDialogManager->outgoingDialog(); | 3922 | OutgoingDialog *ogd = mDialogManager->outgoingDialog(); |
3923 | ogd->loadMessages(); | 3923 | ogd->loadMessages(); |
3924 | } | 3924 | } |
3925 | 3925 | ||
3926 | void CalendarView::lookForIncomingMessages() | 3926 | void CalendarView::lookForIncomingMessages() |
3927 | { | 3927 | { |
3928 | IncomingDialog *icd = mDialogManager->incomingDialog(); | 3928 | IncomingDialog *icd = mDialogManager->incomingDialog(); |
3929 | icd->retrieve(); | 3929 | icd->retrieve(); |
3930 | } | 3930 | } |
3931 | 3931 | ||
3932 | bool CalendarView::removeCompletedSubTodos( Todo* t ) | 3932 | bool CalendarView::removeCompletedSubTodos( Todo* t ) |
3933 | { | 3933 | { |
3934 | bool deleteTodo = true; | 3934 | bool deleteTodo = true; |
3935 | QPtrList<Incidence> subTodos; | 3935 | QPtrList<Incidence> subTodos; |
3936 | Incidence *aTodo; | 3936 | Incidence *aTodo; |
3937 | subTodos = t->relations(); | 3937 | subTodos = t->relations(); |
3938 | for (aTodo = subTodos.first(); aTodo; aTodo = subTodos.next()) { | 3938 | for (aTodo = subTodos.first(); aTodo; aTodo = subTodos.next()) { |
3939 | if (! removeCompletedSubTodos( (Todo*) aTodo )) | 3939 | if (! removeCompletedSubTodos( (Todo*) aTodo )) |
3940 | deleteTodo = false; | 3940 | deleteTodo = false; |
3941 | } | 3941 | } |
3942 | if ( deleteTodo ) { | 3942 | if ( deleteTodo ) { |
3943 | if ( t->isCompleted() && !t->doesRecur()) { | 3943 | if ( t->isCompleted() && !t->doesRecur()) { |
3944 | checkExternalId( t ); | 3944 | checkExternalId( t ); |
3945 | mCalendar->deleteTodo( t ); | 3945 | mCalendar->deleteTodo( t ); |
3946 | changeTodoDisplay( t,KOGlobals::EVENTDELETED ); | 3946 | changeTodoDisplay( t,KOGlobals::EVENTDELETED ); |
3947 | } | 3947 | } |
3948 | else | 3948 | else |
3949 | deleteTodo = false; | 3949 | deleteTodo = false; |
3950 | } | 3950 | } |
3951 | return deleteTodo; | 3951 | return deleteTodo; |
3952 | 3952 | ||
3953 | } | 3953 | } |
3954 | void CalendarView::purgeCompleted() | 3954 | void CalendarView::purgeCompleted() |
3955 | { | 3955 | { |
3956 | int result = KMessageBox::warningContinueCancel(this, | 3956 | int result = KMessageBox::warningContinueCancel(this, |
3957 | i18n("Delete all\ncompleted To-Dos?"),i18n("Purge To-Dos"),i18n("Purge")); | 3957 | i18n("Delete all\ncompleted To-Dos?"),i18n("Purge To-Dos"),i18n("Purge")); |
3958 | 3958 | ||
3959 | if (result == KMessageBox::Continue) { | 3959 | if (result == KMessageBox::Continue) { |
3960 | 3960 | ||
3961 | QPtrList<Todo> todoCal; | 3961 | QPtrList<Todo> todoCal; |
3962 | QPtrList<Todo> rootTodos; | 3962 | QPtrList<Todo> rootTodos; |
3963 | //QPtrList<Incidence> rel; | 3963 | //QPtrList<Incidence> rel; |
3964 | Todo *aTodo;//, *rTodo; | 3964 | Todo *aTodo;//, *rTodo; |
3965 | Incidence *rIncidence; | 3965 | Incidence *rIncidence; |
3966 | bool childDelete = false; | 3966 | bool childDelete = false; |
3967 | bool deletedOne = true; | 3967 | bool deletedOne = true; |
3968 | todoCal = calendar()->todos(); | 3968 | todoCal = calendar()->todos(); |
3969 | for (aTodo = todoCal.first(); aTodo; aTodo = todoCal.next()) { | 3969 | for (aTodo = todoCal.first(); aTodo; aTodo = todoCal.next()) { |
3970 | if ( !aTodo->relatedTo() ) | 3970 | if ( !aTodo->relatedTo() ) |
3971 | rootTodos.append( aTodo ); | 3971 | rootTodos.append( aTodo ); |
3972 | } | 3972 | } |
3973 | for (aTodo = rootTodos.first(); aTodo; aTodo = rootTodos.next()) { | 3973 | for (aTodo = rootTodos.first(); aTodo; aTodo = rootTodos.next()) { |
3974 | removeCompletedSubTodos( aTodo ); | 3974 | removeCompletedSubTodos( aTodo ); |
3975 | } | 3975 | } |
3976 | 3976 | ||
3977 | updateView(); | 3977 | updateView(); |
3978 | } | 3978 | } |
3979 | } | 3979 | } |
3980 | 3980 | ||
3981 | void CalendarView::slotCalendarChanged() | 3981 | void CalendarView::slotCalendarChanged() |
3982 | { | 3982 | { |
3983 | ; | 3983 | ; |
3984 | } | 3984 | } |
3985 | 3985 | ||
3986 | void CalendarView::keyPressEvent ( QKeyEvent *e) | 3986 | void CalendarView::keyPressEvent ( QKeyEvent *e) |
3987 | { | 3987 | { |
3988 | //qDebug(" alendarView::keyPressEvent "); | 3988 | //qDebug(" alendarView::keyPressEvent "); |
3989 | e->ignore(); | 3989 | e->ignore(); |
3990 | } | 3990 | } |
3991 | 3991 | ||
3992 | 3992 | ||
3993 | bool CalendarView::sync(KSyncManager* manager, QString filename, int mode) | 3993 | bool CalendarView::sync(KSyncManager* manager, QString filename, int mode) |
3994 | { | 3994 | { |
3995 | // mSyncManager = manager; | 3995 | // mSyncManager = manager; |
3996 | if ( filename == QDir::homeDirPath ()+"/.kdecalendardump.ics" ) { | 3996 | if ( filename == QDir::homeDirPath ()+"/.kdecalendardump.ics" ) { |
3997 | qDebug("KO: SyncKDE request detected!"); | 3997 | qDebug("KO: SyncKDE request detected!"); |
3998 | } | 3998 | } |
3999 | mCurrentSyncDevice = mSyncManager->getCurrentSyncDevice(); | 3999 | mCurrentSyncDevice = mSyncManager->getCurrentSyncDevice(); |
4000 | mCurrentSyncName = mSyncManager->getCurrentSyncName(); | 4000 | mCurrentSyncName = mSyncManager->getCurrentSyncName(); |
4001 | return syncCalendar( filename, mode ); | 4001 | return syncCalendar( filename, mode ); |
4002 | } | 4002 | } |
4003 | bool CalendarView::syncExternal(KSyncManager* manager, QString resource) | 4003 | bool CalendarView::syncExternal(KSyncManager* manager, QString resource) |
4004 | { | 4004 | { |
4005 | //mSyncManager = manager; | 4005 | //mSyncManager = manager; |
4006 | mCurrentSyncDevice = mSyncManager->getCurrentSyncDevice(); | 4006 | mCurrentSyncDevice = mSyncManager->getCurrentSyncDevice(); |
4007 | mCurrentSyncName = mSyncManager->getCurrentSyncName(); | 4007 | mCurrentSyncName = mSyncManager->getCurrentSyncName(); |
4008 | if ( resource == "sharp" ) | 4008 | if ( resource == "sharp" ) |
4009 | syncExternal( 0 ); | 4009 | syncExternal( 0 ); |
4010 | if ( resource == "phone" ) | 4010 | if ( resource == "phone" ) |
4011 | syncExternal( 1 ); | 4011 | syncExternal( 1 ); |
4012 | // pending setmodified | 4012 | // pending setmodified |
4013 | return true; | 4013 | return true; |
4014 | } | 4014 | } |
4015 | void CalendarView::setSyncManager(KSyncManager* manager) | 4015 | void CalendarView::setSyncManager(KSyncManager* manager) |
4016 | { | 4016 | { |
4017 | mSyncManager = manager; | 4017 | mSyncManager = manager; |
4018 | } | 4018 | } |
4019 | 4019 | ||
4020 | void CalendarView::removeSyncInfo( QString syncProfile) | 4020 | void CalendarView::removeSyncInfo( QString syncProfile) |
4021 | { | 4021 | { |
4022 | qDebug("KO: removeSyncInfo for profile %s ", syncProfile.latin1()); | 4022 | qDebug("KO: removeSyncInfo for profile %s ", syncProfile.latin1()); |
4023 | mCalendar->removeSyncInfo( syncProfile ); | 4023 | mCalendar->removeSyncInfo( syncProfile ); |
4024 | 4024 | ||
4025 | } | 4025 | } |
4026 | 4026 | ||
4027 | void CalendarView::undo_delete() | 4027 | void CalendarView::undo_delete() |
4028 | { | 4028 | { |
4029 | //qDebug("undo_delete() "); | 4029 | //qDebug("undo_delete() "); |
4030 | Incidence* undo = mCalendar->undoIncidence(); | 4030 | Incidence* undo = mCalendar->undoIncidence(); |
4031 | if ( !undo ) { | 4031 | if ( !undo ) { |
4032 | KMessageBox::sorry(this,i18n("There is nothing to undo!"), | 4032 | KMessageBox::sorry(this,i18n("There is nothing to undo!"), |
4033 | i18n("KO/Pi")); | 4033 | i18n("KO/Pi")); |
4034 | return; | 4034 | return; |
4035 | } | 4035 | } |
4036 | if ( KMessageBox::Continue ==KMessageBox::warningContinueCancel(this,undo->summary().left(25) + | 4036 | if ( KMessageBox::Continue ==KMessageBox::warningContinueCancel(this,undo->summary().left(25) + |
4037 | i18n("\nAre you sure you want\nto restore this?"), | 4037 | i18n("\nAre you sure you want\nto restore this?"), |
4038 | i18n("KO/Pi Confirmation"),i18n("Restore"))) { | 4038 | i18n("KO/Pi Confirmation"),i18n("Restore"))) { |
4039 | mCalendar->undoDeleteIncidence(); | 4039 | mCalendar->undoDeleteIncidence(); |
4040 | updateView(); | 4040 | updateView(); |
4041 | } | 4041 | } |
4042 | } | 4042 | } |
4043 | 4043 | ||
4044 | void CalendarView::slotViewerClosed() | 4044 | void CalendarView::slotViewerClosed() |
4045 | { | 4045 | { |
4046 | QTimer::singleShot( 50, this, SLOT ( resetFocus() ) ); | 4046 | QTimer::singleShot( 50, this, SLOT ( resetFocus() ) ); |
4047 | } | 4047 | } |
4048 | 4048 | ||
4049 | void CalendarView::resetFocus() | 4049 | void CalendarView::resetFocus() |
4050 | { | 4050 | { |
4051 | if ( mViewerCallerIsSearchDialog ) { | 4051 | if ( mViewerCallerIsSearchDialog ) { |
4052 | if ( mDialogManager->getSearchDialog()->isVisible() ){ | 4052 | if ( mDialogManager->getSearchDialog()->isVisible() ){ |
4053 | mDialogManager->getSearchDialog()->raise(); | 4053 | mDialogManager->getSearchDialog()->raise(); |
4054 | mDialogManager->getSearchDialog()->setActiveWindow(); | 4054 | mDialogManager->getSearchDialog()->setActiveWindow(); |
4055 | mDialogManager->getSearchDialog()->listview()->resetFocus(); | 4055 | mDialogManager->getSearchDialog()->listview()->resetFocus(); |
4056 | } else | 4056 | } else |
4057 | mViewerCallerIsSearchDialog = false; | 4057 | mViewerCallerIsSearchDialog = false; |
4058 | } | 4058 | } |
4059 | if ( !mViewerCallerIsSearchDialog ) { | 4059 | if ( !mViewerCallerIsSearchDialog ) { |
4060 | //mViewManager->currentView()->setFocus(); | 4060 | //mViewManager->currentView()->setFocus(); |
4061 | //qDebug("sssssssssssssssset focus "); | 4061 | //qDebug("sssssssssssssssset focus "); |
4062 | topLevelWidget()->raise(); | 4062 | topLevelWidget()->raise(); |
4063 | setActiveWindow(); | 4063 | setActiveWindow(); |
4064 | //setFocus(); | 4064 | //setFocus(); |
4065 | } | 4065 | } |
4066 | mViewerCallerIsSearchDialog = false; | 4066 | mViewerCallerIsSearchDialog = false; |
4067 | } | 4067 | } |
4068 | 4068 | ||
4069 | void CalendarView::showNextAlarms() | 4069 | void CalendarView::showNextAlarms() |
4070 | { | 4070 | { |
4071 | QString message; | 4071 | QString message; |
4072 | if ( mNextAlarmDateTime > QDateTime::currentDateTime() ) { | 4072 | QDateTime nextAl = mCalendar->nextAlarmEventDateTime(); |
4073 | if ( nextAl.isValid() && mNextAlarmDateTime > QDateTime::currentDateTime() ) { | ||
4073 | QString sum = mCalendar->nextSummary(); | 4074 | QString sum = mCalendar->nextSummary(); |
4074 | QDateTime nextA = mNextAlarmDateTime; | 4075 | QDateTime nextA = mNextAlarmDateTime; |
4075 | QDateTime nextAl = mCalendar->nextAlarmEventDateTime(); | 4076 | QDateTime cur = QDateTime::currentDateTime(); |
4076 | message = i18n("The next alarm is on:\n%1\nat: %2\n\n%3\n(%4)").arg( KGlobal::locale()->formatDate(nextA.date() , false)).arg( KGlobal::locale()->formatTime(nextA.time() , false)).arg(sum ).arg( KGlobal::locale()->formatDateTime(nextAl , false)) ; | 4077 | int secs = cur.secsTo( nextA ); |
4078 | int min = secs /60; | ||
4079 | int hours = min /60; | ||
4080 | min = min % 60; | ||
4081 | int days = hours /24; | ||
4082 | hours = hours % 24; | ||
4083 | |||
4084 | message = i18n("The next alarm is in:\n"); | ||
4085 | if ( days > 1 ) | ||
4086 | message += i18n("%1 days\n").arg( days ); | ||
4087 | else if ( days == 1 ) | ||
4088 | message += i18n("1 day\n"); | ||
4089 | if ( hours > 1 ) | ||
4090 | message += i18n("%1 hours\n").arg( hours ); | ||
4091 | else if ( hours == 1 ) | ||
4092 | message += i18n("1 hour\n"); | ||
4093 | if ( min > 1 ) | ||
4094 | message += i18n("%1 minutes\n").arg( min ); | ||
4095 | else if ( min == 1 ) | ||
4096 | message += i18n("1 minute\n"); | ||
4097 | |||
4098 | message += i18n("\n(%1)\n\n%2\n(%3)\n").arg( KGlobal::locale()->formatDateTime(nextA , false)).arg(sum ).arg( KGlobal::locale()->formatDateTime(nextAl , false)) ; | ||
4077 | } else { | 4099 | } else { |
4078 | message = i18n("There is no next alarm."); | 4100 | message = i18n("There is no next alarm."); |
4079 | 4101 | ||
4080 | } | 4102 | } |
4081 | KMessageBox::information( this, message); | 4103 | KMessageBox::information( this, message); |
4082 | } | 4104 | } |
diff --git a/korganizer/koagendaview.cpp b/korganizer/koagendaview.cpp index 18f242c..f6f390b 100644 --- a/korganizer/koagendaview.cpp +++ b/korganizer/koagendaview.cpp | |||
@@ -1,1227 +1,1224 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of KOrganizer. | 2 | This file is part of KOrganizer. |
3 | Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> | 3 | Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> |
4 | 4 | ||
5 | This program is free software; you can redistribute it and/or modify | 5 | This program is free software; you can redistribute it and/or modify |
6 | it under the terms of the GNU General Public License as published by | 6 | it under the terms of the GNU General Public License as published by |
7 | the Free Software Foundation; either version 2 of the License, or | 7 | the Free Software Foundation; either version 2 of the License, or |
8 | (at your option) any later version. | 8 | (at your option) any later version. |
9 | 9 | ||
10 | This program is distributed in the hope that it will be useful, | 10 | This program is distributed in the hope that it will be useful, |
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of | 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
13 | GNU General Public License for more details. | 13 | GNU General Public License for more details. |
14 | 14 | ||
15 | You should have received a copy of the GNU General Public License | 15 | You should have received a copy of the GNU General Public License |
16 | along with this program; if not, write to the Free Software | 16 | along with this program; if not, write to the Free Software |
17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | 17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
18 | 18 | ||
19 | As a special exception, permission is given to link this program | 19 | As a special exception, permission is given to link this program |
20 | with any edition of Qt, and distribute the resulting executable, | 20 | with any edition of Qt, and distribute the resulting executable, |
21 | without including the source code for Qt in the source distribution. | 21 | without including the source code for Qt in the source distribution. |
22 | */ | 22 | */ |
23 | 23 | ||
24 | #include <qhbox.h> | 24 | #include <qhbox.h> |
25 | #include <qvbox.h> | 25 | #include <qvbox.h> |
26 | #include <qlabel.h> | 26 | #include <qlabel.h> |
27 | #include <qframe.h> | 27 | #include <qframe.h> |
28 | #include <qlayout.h> | 28 | #include <qlayout.h> |
29 | #ifndef KORG_NOSPLITTER | 29 | #ifndef KORG_NOSPLITTER |
30 | #include <qsplitter.h> | 30 | #include <qsplitter.h> |
31 | #endif | 31 | #endif |
32 | #include <qfont.h> | 32 | #include <qfont.h> |
33 | #include <qfontmetrics.h> | 33 | #include <qfontmetrics.h> |
34 | #include <qpopupmenu.h> | 34 | #include <qpopupmenu.h> |
35 | #include <qtooltip.h> | 35 | #include <qtooltip.h> |
36 | #include <qpainter.h> | 36 | #include <qpainter.h> |
37 | #include <qpushbutton.h> | 37 | #include <qpushbutton.h> |
38 | #include <qapplication.h> | 38 | #include <qapplication.h> |
39 | 39 | ||
40 | #include <kapplication.h> | 40 | #include <kapplication.h> |
41 | #include <KDGanttMinimizeSplitter.h> | 41 | #include <KDGanttMinimizeSplitter.h> |
42 | #include <kdebug.h> | 42 | #include <kdebug.h> |
43 | #include <kstandarddirs.h> | 43 | #include <kstandarddirs.h> |
44 | #include <kiconloader.h> | 44 | #include <kiconloader.h> |
45 | #include <klocale.h> | 45 | #include <klocale.h> |
46 | #include <kconfig.h> | 46 | #include <kconfig.h> |
47 | #include <kglobal.h> | 47 | #include <kglobal.h> |
48 | #include "calendarview.h" | 48 | #include "calendarview.h" |
49 | #include "koviewmanager.h" | 49 | #include "koviewmanager.h" |
50 | 50 | ||
51 | #include <libkcal/calendar.h> | 51 | #include <libkcal/calendar.h> |
52 | #include <libkcal/icaldrag.h> | 52 | #include <libkcal/icaldrag.h> |
53 | #include <libkcal/dndfactory.h> | 53 | #include <libkcal/dndfactory.h> |
54 | 54 | ||
55 | #include <kcalendarsystem.h> | 55 | #include <kcalendarsystem.h> |
56 | 56 | ||
57 | #include "koglobals.h" | 57 | #include "koglobals.h" |
58 | #ifndef KORG_NOPLUGINS | 58 | #ifndef KORG_NOPLUGINS |
59 | #include "kocore.h" | 59 | #include "kocore.h" |
60 | #endif | 60 | #endif |
61 | #include "koprefs.h" | 61 | #include "koprefs.h" |
62 | #include "koagenda.h" | 62 | #include "koagenda.h" |
63 | #include "koagendaitem.h" | 63 | #include "koagendaitem.h" |
64 | #ifndef KORG_NOPRINTER | 64 | #ifndef KORG_NOPRINTER |
65 | #include "calprinter.h" | 65 | #include "calprinter.h" |
66 | #endif | 66 | #endif |
67 | 67 | ||
68 | #include "koagendaview.h" | 68 | #include "koagendaview.h" |
69 | //#include "koagendaview.moc" | 69 | //#include "koagendaview.moc" |
70 | 70 | ||
71 | //extern bool globalFlagBlockPainting; | 71 | //extern bool globalFlagBlockPainting; |
72 | extern int globalFlagBlockAgenda; | 72 | extern int globalFlagBlockAgenda; |
73 | extern int globalFlagBlockStartup; | 73 | extern int globalFlagBlockStartup; |
74 | extern int globalFlagBlockAgendaItemPaint; | 74 | extern int globalFlagBlockAgendaItemPaint; |
75 | extern int globalFlagBlockAgendaItemUpdate; | 75 | extern int globalFlagBlockAgendaItemUpdate; |
76 | extern int globalFlagBlockLabel; | 76 | extern int globalFlagBlockLabel; |
77 | using namespace KOrg; | 77 | using namespace KOrg; |
78 | 78 | ||
79 | 79 | ||
80 | 80 | ||
81 | TimeLabels::TimeLabels(int rows,QWidget *parent,const char *name,WFlags f) : | 81 | TimeLabels::TimeLabels(int rows,QWidget *parent,const char *name,WFlags f) : |
82 | QScrollView(parent,name,f) | 82 | QScrollView(parent,name,f) |
83 | { | 83 | { |
84 | mRows = rows; | 84 | mRows = rows; |
85 | 85 | ||
86 | setMinimumHeight( 20 ); | 86 | setMinimumHeight( 20 ); |
87 | mCellHeight = KOPrefs::instance()->mHourSize*4; | 87 | mCellHeight = KOPrefs::instance()->mHourSize*4; |
88 | 88 | ||
89 | enableClipper(true); | 89 | enableClipper(true); |
90 | 90 | ||
91 | setHScrollBarMode(AlwaysOff); | 91 | setHScrollBarMode(AlwaysOff); |
92 | setVScrollBarMode(AlwaysOff); | 92 | setVScrollBarMode(AlwaysOff); |
93 | 93 | ||
94 | resizeContents(50,mRows * mCellHeight); | 94 | resizeContents(50,mRows * mCellHeight); |
95 | 95 | ||
96 | viewport()->setBackgroundMode( PaletteBackground ); | 96 | viewport()->setBackgroundMode( PaletteBackground ); |
97 | } | 97 | } |
98 | 98 | ||
99 | void TimeLabels::setCellHeight(int height) | 99 | void TimeLabels::setCellHeight(int height) |
100 | { | 100 | { |
101 | mCellHeight = height; | 101 | mCellHeight = height; |
102 | } | 102 | } |
103 | 103 | ||
104 | /* | 104 | /* |
105 | Optimization so that only the "dirty" portion of the scroll view | 105 | Optimization so that only the "dirty" portion of the scroll view |
106 | is redrawn. Unfortunately, this is not called by default paintEvent() method. | 106 | is redrawn. Unfortunately, this is not called by default paintEvent() method. |
107 | */ | 107 | */ |
108 | void TimeLabels::drawContents(QPainter *p,int cx, int cy, int cw, int ch) | 108 | void TimeLabels::drawContents(QPainter *p,int cx, int cy, int cw, int ch) |
109 | { | 109 | { |
110 | 110 | ||
111 | // if ( globalFlagBlockAgenda ) | 111 | // if ( globalFlagBlockAgenda ) |
112 | // return; | 112 | // return; |
113 | // bug: the parameters cx, cy, cw, ch are the areas that need to be | 113 | // bug: the parameters cx, cy, cw, ch are the areas that need to be |
114 | // redrawn, not the area of the widget. unfortunately, this | 114 | // redrawn, not the area of the widget. unfortunately, this |
115 | // code assumes the latter... | 115 | // code assumes the latter... |
116 | 116 | ||
117 | // now, for a workaround... | 117 | // now, for a workaround... |
118 | // these two assignments fix the weird redraw bug | 118 | // these two assignments fix the weird redraw bug |
119 | cx = contentsX() + 2; | 119 | cx = contentsX() + 2; |
120 | cw = contentsWidth() - 2; | 120 | cw = contentsWidth() - 2; |
121 | // end of workaround | 121 | // end of workaround |
122 | 122 | ||
123 | int cell = ((int)(cy/mCellHeight)); | 123 | int cell = ((int)(cy/mCellHeight)); |
124 | int y = cell * mCellHeight; | 124 | int y = cell * mCellHeight; |
125 | QFontMetrics fm = fontMetrics(); | 125 | QFontMetrics fm = fontMetrics(); |
126 | QString hour; | 126 | QString hour; |
127 | QString suffix; | 127 | QString suffix; |
128 | QString fullTime; | ||
129 | int tW = fm.width("24:00i"); | 128 | int tW = fm.width("24:00i"); |
130 | int timeHeight = fm.height(); | 129 | int timeHeight = fm.height(); |
131 | //timeHeight -= (timeHeight/4-2); | 130 | //timeHeight -= (timeHeight/4-2); |
132 | int borderWidth = 0; | 131 | int borderWidth = 0; |
133 | QFont nFont = p->font(); | 132 | QFont nFont = p->font(); |
134 | 133 | ||
135 | if (!KGlobal::locale()->use12Clock()) | 134 | if (!KGlobal::locale()->use12Clock()) |
136 | suffix = "00"; | 135 | suffix = "00"; |
137 | else | 136 | else |
138 | borderWidth = 0; | 137 | borderWidth = 0; |
139 | if ( timeHeight > mCellHeight ) { | 138 | if ( timeHeight > mCellHeight ) { |
140 | timeHeight = mCellHeight-1; | 139 | timeHeight = mCellHeight-1; |
141 | int pointS = nFont.pointSize(); | 140 | int pointS = nFont.pointSize(); |
142 | while ( pointS > 4 ) { | 141 | while ( pointS > 4 ) { |
143 | nFont.setPointSize( pointS ); | 142 | nFont.setPointSize( pointS ); |
144 | fm = QFontMetrics( nFont ); | 143 | fm = QFontMetrics( nFont ); |
145 | if ( fm.height() < mCellHeight ) | 144 | if ( fm.height() < mCellHeight ) |
146 | break; | 145 | break; |
147 | -- pointS; | 146 | -- pointS; |
148 | } | 147 | } |
149 | fm = QFontMetrics( nFont ); | 148 | fm = QFontMetrics( nFont ); |
150 | borderWidth = 4; | 149 | borderWidth = 4; |
151 | timeHeight = fm.height(); | 150 | timeHeight = fm.height(); |
152 | } | 151 | } |
153 | timeHeight -= (timeHeight/4-2); | 152 | timeHeight -= (timeHeight/4-2); |
154 | QFont sFont = nFont; | 153 | QFont sFont = nFont; |
155 | sFont.setPointSize( sFont.pointSize()/2+2 ); | 154 | sFont.setPointSize( sFont.pointSize()/2+2 ); |
156 | QFontMetrics fmS( sFont ); | 155 | QFontMetrics fmS( sFont ); |
157 | int sHei = fmS.height(); | 156 | int sHei = fmS.height(); |
158 | 157 | sHei -= (sHei/4-2); | |
158 | int startW = this->width() - frameWidth(); | ||
159 | while (y < cy + ch) { | 159 | while (y < cy + ch) { |
160 | p->drawLine(cx,y,cx+tW,y); | 160 | p->drawLine(cx,y,cx+tW,y); |
161 | hour.setNum(cell); | 161 | hour.setNum(cell); |
162 | 162 | ||
163 | // handle 24h and am/pm time formats | 163 | // handle 24h and am/pm time formats |
164 | if (KGlobal::locale()->use12Clock()) { | 164 | if (KGlobal::locale()->use12Clock()) { |
165 | if (cell > 11) suffix = "pm"; | 165 | if (cell > 11) suffix = "pm"; |
166 | else | 166 | else |
167 | suffix = "am"; | 167 | suffix = "am"; |
168 | if (cell == 0) hour.setNum(12); | 168 | if (cell == 0) hour.setNum(12); |
169 | if (cell > 12) hour.setNum(cell - 12); | 169 | if (cell > 12) hour.setNum(cell - 12); |
170 | } | 170 | } |
171 | 171 | ||
172 | // create string in format of "XX:XX" or "XXpm/am" | ||
173 | fullTime = hour;// + suffix; | ||
174 | |||
175 | // center and draw the time label | 172 | // center and draw the time label |
176 | int timeWidth = fm.width(fullTime+"i"); | 173 | int timeWidth = fm.width(hour+"i"); |
177 | int tw2 = fm.width(suffix); | 174 | int tw2 = fm.width(suffix); |
178 | int offset = this->width() - timeWidth - tw2; | 175 | int offset = startW - timeWidth - tw2 ; |
179 | p->setFont( nFont ); | 176 | p->setFont( nFont ); |
180 | p->drawText(cx - borderWidth + offset, y+ timeHeight, fullTime); | 177 | p->drawText(cx - borderWidth + offset, y+ timeHeight, hour); |
181 | p->setFont( sFont ); | 178 | p->setFont( sFont ); |
182 | offset += timeWidth; | 179 | offset = startW - tw2-1; |
183 | p->drawText(cx - borderWidth + offset, y+ sHei, suffix); | 180 | p->drawText(cx - borderWidth + offset, y+ sHei, suffix); |
184 | 181 | ||
185 | // increment indices | 182 | // increment indices |
186 | y += mCellHeight; | 183 | y += mCellHeight; |
187 | cell++; | 184 | cell++; |
188 | } | 185 | } |
189 | } | 186 | } |
190 | 187 | ||
191 | /** | 188 | /** |
192 | Calculates the minimum width. | 189 | Calculates the minimum width. |
193 | */ | 190 | */ |
194 | int TimeLabels::minimumWidth() const | 191 | int TimeLabels::minimumWidth() const |
195 | { | 192 | { |
196 | return mMiniWidth; | 193 | return mMiniWidth; |
197 | } | 194 | } |
198 | 195 | ||
199 | /** updates widget's internal state */ | 196 | /** updates widget's internal state */ |
200 | void TimeLabels::updateConfig() | 197 | void TimeLabels::updateConfig() |
201 | { | 198 | { |
202 | // set the font | 199 | // set the font |
203 | // config->setGroup("Fonts"); | 200 | // config->setGroup("Fonts"); |
204 | // QFont font = config->readFontEntry("TimeBar Font"); | 201 | // QFont font = config->readFontEntry("TimeBar Font"); |
205 | setFont(KOPrefs::instance()->mTimeBarFont); | 202 | setFont(KOPrefs::instance()->mTimeBarFont); |
206 | mMiniWidth = fontMetrics().width("88:88") + 2 ; | 203 | QString test = "88:88"; |
204 | if (KGlobal::locale()->use12Clock()) | ||
205 | test += "i"; | ||
206 | mMiniWidth = fontMetrics().width(test) + frameWidth()*2 +1 ; | ||
207 | // update geometry restrictions based on new settings | 207 | // update geometry restrictions based on new settings |
208 | setFixedWidth(minimumWidth()); | 208 | setFixedWidth(minimumWidth()); |
209 | 209 | ||
210 | // update HourSize | 210 | // update HourSize |
211 | mCellHeight = KOPrefs::instance()->mHourSize*4; | 211 | mCellHeight = KOPrefs::instance()->mHourSize*4; |
212 | resizeContents(50,mRows * mCellHeight); | 212 | resizeContents(50,mRows * mCellHeight); |
213 | } | 213 | } |
214 | 214 | ||
215 | /** update time label positions */ | 215 | /** update time label positions */ |
216 | void TimeLabels::positionChanged() | 216 | void TimeLabels::positionChanged() |
217 | { | 217 | { |
218 | int adjustment = mAgenda->contentsY(); | 218 | int adjustment = mAgenda->contentsY(); |
219 | setContentsPos(0, adjustment); | 219 | setContentsPos(0, adjustment); |
220 | } | 220 | } |
221 | 221 | ||
222 | /** */ | 222 | /** */ |
223 | void TimeLabels::setAgenda(KOAgenda* agenda) | 223 | void TimeLabels::setAgenda(KOAgenda* agenda) |
224 | { | 224 | { |
225 | mAgenda = agenda; | 225 | mAgenda = agenda; |
226 | } | 226 | } |
227 | 227 | ||
228 | void TimeLabels::contentsMousePressEvent ( QMouseEvent * e) | 228 | void TimeLabels::contentsMousePressEvent ( QMouseEvent * e) |
229 | { | 229 | { |
230 | mMouseDownY = e->pos().y(); | 230 | mMouseDownY = e->pos().y(); |
231 | mOrgCap = topLevelWidget()->caption(); | 231 | mOrgCap = topLevelWidget()->caption(); |
232 | } | 232 | } |
233 | 233 | ||
234 | void TimeLabels::contentsMouseMoveEvent ( QMouseEvent * e ) | 234 | void TimeLabels::contentsMouseMoveEvent ( QMouseEvent * e ) |
235 | { | 235 | { |
236 | int diff = mMouseDownY - e->pos().y(); | 236 | int diff = mMouseDownY - e->pos().y(); |
237 | if ( diff < 10 && diff > -10 ) | 237 | if ( diff < 10 && diff > -10 ) |
238 | return; | 238 | return; |
239 | int tSize = KOPrefs::instance()->mHourSize + (diff/10) ; | 239 | int tSize = KOPrefs::instance()->mHourSize + (diff/10) ; |
240 | if ( tSize < 4 ) | 240 | if ( tSize < 4 ) |
241 | tSize = 4; | 241 | tSize = 4; |
242 | if ( tSize > 22 ) | 242 | if ( tSize > 22 ) |
243 | tSize = 22; | 243 | tSize = 22; |
244 | tSize = (tSize-2)/2; | 244 | tSize = (tSize-2)/2; |
245 | topLevelWidget()->setCaption(i18n("New Agendasize: %1").arg(tSize)); | 245 | topLevelWidget()->setCaption(i18n("New Agendasize: %1").arg(tSize)); |
246 | 246 | ||
247 | } | 247 | } |
248 | void TimeLabels::contentsMouseReleaseEvent ( QMouseEvent * e ) | 248 | void TimeLabels::contentsMouseReleaseEvent ( QMouseEvent * e ) |
249 | { | 249 | { |
250 | topLevelWidget()->setCaption( mOrgCap ); | 250 | topLevelWidget()->setCaption( mOrgCap ); |
251 | int diff = mMouseDownY - e->pos().y(); | 251 | int diff = mMouseDownY - e->pos().y(); |
252 | if ( diff < 10 && diff > -10 ) | 252 | if ( diff < 10 && diff > -10 ) |
253 | return; | 253 | return; |
254 | int tSize = KOPrefs::instance()->mHourSize + (diff/10); | 254 | int tSize = KOPrefs::instance()->mHourSize + (diff/10); |
255 | if ( tSize < 4 ) | 255 | if ( tSize < 4 ) |
256 | tSize = 4; | 256 | tSize = 4; |
257 | if ( tSize > 22 ) | 257 | if ( tSize > 22 ) |
258 | tSize = 22; | 258 | tSize = 22; |
259 | tSize = (tSize/2)*2; | 259 | tSize = (tSize/2)*2; |
260 | if ( tSize == KOPrefs::instance()->mHourSize ) | 260 | if ( tSize == KOPrefs::instance()->mHourSize ) |
261 | return; | 261 | return; |
262 | KOPrefs::instance()->mHourSize = tSize; | 262 | KOPrefs::instance()->mHourSize = tSize; |
263 | emit scaleChanged(); | 263 | emit scaleChanged(); |
264 | } | 264 | } |
265 | 265 | ||
266 | /** This is called in response to repaint() */ | 266 | /** This is called in response to repaint() */ |
267 | void TimeLabels::paintEvent(QPaintEvent*) | 267 | void TimeLabels::paintEvent(QPaintEvent*) |
268 | { | 268 | { |
269 | 269 | ||
270 | // kdDebug() << "paintevent..." << endl; | 270 | // kdDebug() << "paintevent..." << endl; |
271 | // this is another hack! | 271 | // this is another hack! |
272 | // QPainter painter(this); | 272 | // QPainter painter(this); |
273 | //QString c | 273 | //QString c |
274 | repaintContents(contentsX(), contentsY(), visibleWidth(), visibleHeight()); | 274 | repaintContents(contentsX(), contentsY(), visibleWidth(), visibleHeight()); |
275 | } | 275 | } |
276 | 276 | ||
277 | //////////////////////////////////////////////////////////////////////////// | 277 | //////////////////////////////////////////////////////////////////////////// |
278 | 278 | ||
279 | EventIndicator::EventIndicator(Location loc,QWidget *parent,const char *name) | 279 | EventIndicator::EventIndicator(Location loc,QWidget *parent,const char *name) |
280 | : QFrame(parent,name) | 280 | : QFrame(parent,name) |
281 | { | 281 | { |
282 | mColumns = 1; | 282 | mColumns = 1; |
283 | mTopBox = 0; | 283 | mTopBox = 0; |
284 | mLocation = loc; | 284 | mLocation = loc; |
285 | mTopLayout = 0; | 285 | mTopLayout = 0; |
286 | mPaintWidget = 0; | 286 | mPaintWidget = 0; |
287 | mXOffset = 0; | 287 | mXOffset = 0; |
288 | if (mLocation == Top) mPixmap = SmallIcon("1uparrow"); | 288 | if (mLocation == Top) mPixmap = SmallIcon("1uparrow"); |
289 | else mPixmap = SmallIcon("1downarrow"); | 289 | else mPixmap = SmallIcon("1downarrow"); |
290 | mEnabled.resize(mColumns); | 290 | mEnabled.resize(mColumns); |
291 | mEnabled.fill( false ); | 291 | mEnabled.fill( false ); |
292 | setMinimumHeight(mPixmap.height()); | 292 | setMinimumHeight(mPixmap.height()); |
293 | } | 293 | } |
294 | 294 | ||
295 | EventIndicator::~EventIndicator() | 295 | EventIndicator::~EventIndicator() |
296 | { | 296 | { |
297 | } | 297 | } |
298 | 298 | ||
299 | void EventIndicator::drawContents(QPainter *p) | 299 | void EventIndicator::drawContents(QPainter *p) |
300 | { | 300 | { |
301 | 301 | ||
302 | // kdDebug() << "======== top: " << contentsRect().top() << " bottom " << // contentsRect().bottom() << " left " << contentsRect().left() << " right " << contentsRect().right() << endl; | 302 | // kdDebug() << "======== top: " << contentsRect().top() << " bottom " << // contentsRect().bottom() << " left " << contentsRect().left() << " right " << contentsRect().right() << endl; |
303 | KDGanttSplitterHandle* han = 0; | 303 | KDGanttSplitterHandle* han = 0; |
304 | if ( mPaintWidget ) | 304 | if ( mPaintWidget ) |
305 | han = mPaintWidget->firstHandle(); | 305 | han = mPaintWidget->firstHandle(); |
306 | if ( ! han ) { | 306 | if ( ! han ) { |
307 | int i; | 307 | int i; |
308 | for(i=0;i<mColumns;++i) { | 308 | for(i=0;i<mColumns;++i) { |
309 | if (mEnabled[i]) { | 309 | if (mEnabled[i]) { |
310 | int cellWidth = contentsRect().right()/mColumns; | 310 | int cellWidth = contentsRect().right()/mColumns; |
311 | int xOffset = KOGlobals::self()->reverseLayout() ? | 311 | int xOffset = KOGlobals::self()->reverseLayout() ? |
312 | (mColumns - 1 - i)*cellWidth + (cellWidth -mPixmap.width())/2 : | 312 | (mColumns - 1 - i)*cellWidth + (cellWidth -mPixmap.width())/2 : |
313 | i*cellWidth + (cellWidth -mPixmap.width()) /2; | 313 | i*cellWidth + (cellWidth -mPixmap.width()) /2; |
314 | p->drawPixmap(QPoint(1+xOffset,0),mPixmap); | 314 | p->drawPixmap(QPoint(1+xOffset,0),mPixmap); |
315 | } | 315 | } |
316 | } | 316 | } |
317 | } else { | 317 | } else { |
318 | han->repaint(); | 318 | han->repaint(); |
319 | //mPaintWidget->setBackgroundColor( red ); | 319 | //mPaintWidget->setBackgroundColor( red ); |
320 | 320 | ||
321 | QPainter pa( han ); | 321 | QPainter pa( han ); |
322 | int i; | 322 | int i; |
323 | bool setColor = false; | 323 | bool setColor = false; |
324 | for(i=0;i<mColumns;++i) { | 324 | for(i=0;i<mColumns;++i) { |
325 | if (mEnabled[i]) { | 325 | if (mEnabled[i]) { |
326 | setColor = true; | 326 | setColor = true; |
327 | 327 | ||
328 | int cellWidth = contentsRect().right()/mColumns; | 328 | int cellWidth = contentsRect().right()/mColumns; |
329 | int xOffset = KOGlobals::self()->reverseLayout() ? | 329 | int xOffset = KOGlobals::self()->reverseLayout() ? |
330 | (mColumns - 1 - i)*cellWidth + cellWidth/2 -mPixmap.width()/2 : | 330 | (mColumns - 1 - i)*cellWidth + cellWidth/2 -mPixmap.width()/2 : |
331 | i*cellWidth + cellWidth/2 -mPixmap.width()/2; | 331 | i*cellWidth + cellWidth/2 -mPixmap.width()/2; |
332 | pa.drawPixmap(QPoint(mXOffset + xOffset,0),mPixmap); | 332 | pa.drawPixmap(QPoint(mXOffset + xOffset,0),mPixmap); |
333 | //qDebug("222draw pix %d ",xOffset ); | 333 | //qDebug("222draw pix %d ",xOffset ); |
334 | 334 | ||
335 | } | 335 | } |
336 | 336 | ||
337 | } | 337 | } |
338 | pa.end(); | 338 | pa.end(); |
339 | 339 | ||
340 | } | 340 | } |
341 | } | 341 | } |
342 | 342 | ||
343 | void EventIndicator::setXOffset( int x ) | 343 | void EventIndicator::setXOffset( int x ) |
344 | { | 344 | { |
345 | mXOffset = x; | 345 | mXOffset = x; |
346 | } | 346 | } |
347 | void EventIndicator::setPaintWidget( KDGanttMinimizeSplitter * w ) | 347 | void EventIndicator::setPaintWidget( KDGanttMinimizeSplitter * w ) |
348 | { | 348 | { |
349 | mPaintWidget = w; | 349 | mPaintWidget = w; |
350 | setMaximumHeight(0); | 350 | setMaximumHeight(0); |
351 | setMinimumHeight(0); | 351 | setMinimumHeight(0); |
352 | } | 352 | } |
353 | void EventIndicator::changeColumns(int columns) | 353 | void EventIndicator::changeColumns(int columns) |
354 | { | 354 | { |
355 | mColumns = columns; | 355 | mColumns = columns; |
356 | mEnabled.resize(mColumns); | 356 | mEnabled.resize(mColumns); |
357 | 357 | ||
358 | update(); | 358 | update(); |
359 | } | 359 | } |
360 | 360 | ||
361 | void EventIndicator::enableColumn(int column, bool enable) | 361 | void EventIndicator::enableColumn(int column, bool enable) |
362 | { | 362 | { |
363 | mEnabled[column] = enable; | 363 | mEnabled[column] = enable; |
364 | } | 364 | } |
365 | 365 | ||
366 | 366 | ||
367 | //////////////////////////////////////////////////////////////////////////// | 367 | //////////////////////////////////////////////////////////////////////////// |
368 | //////////////////////////////////////////////////////////////////////////// | 368 | //////////////////////////////////////////////////////////////////////////// |
369 | //////////////////////////////////////////////////////////////////////////// | 369 | //////////////////////////////////////////////////////////////////////////// |
370 | 370 | ||
371 | KOAgendaView::KOAgendaView(Calendar *cal,QWidget *parent,const char *name) : | 371 | KOAgendaView::KOAgendaView(Calendar *cal,QWidget *parent,const char *name) : |
372 | KOEventView (cal,parent,name) | 372 | KOEventView (cal,parent,name) |
373 | { | 373 | { |
374 | mBlockUpdating = true; | 374 | mBlockUpdating = true; |
375 | mStartHour = 8; | 375 | mStartHour = 8; |
376 | mSelectedDates.append(QDate::currentDate()); | 376 | mSelectedDates.append(QDate::currentDate()); |
377 | 377 | ||
378 | mLayoutDayLabels = 0; | 378 | mLayoutDayLabels = 0; |
379 | mDayLabelsFrame = 0; | 379 | mDayLabelsFrame = 0; |
380 | mDayLabels = 0; | 380 | mDayLabels = 0; |
381 | bool isRTL = KOGlobals::self()->reverseLayout(); | 381 | bool isRTL = KOGlobals::self()->reverseLayout(); |
382 | QPixmap expandPix; | 382 | QPixmap expandPix; |
383 | if ( KOPrefs::instance()->mVerticalScreen ) { | 383 | if ( KOPrefs::instance()->mVerticalScreen ) { |
384 | expandPix = SmallIcon( "1updownarrow" ); | 384 | expandPix = SmallIcon( "1updownarrow" ); |
385 | } else { | 385 | } else { |
386 | expandPix = SmallIcon("1leftrightarrow" ); | 386 | expandPix = SmallIcon("1leftrightarrow" ); |
387 | } | 387 | } |
388 | 388 | ||
389 | QBoxLayout *topLayout = new QVBoxLayout(this); | 389 | QBoxLayout *topLayout = new QVBoxLayout(this); |
390 | 390 | ||
391 | // Create day name labels for agenda columns | 391 | // Create day name labels for agenda columns |
392 | // Create agenda splitter | 392 | // Create agenda splitter |
393 | 393 | ||
394 | mSplitterAgenda = new KDGanttMinimizeSplitter( Qt::Vertical, this); | 394 | mSplitterAgenda = new KDGanttMinimizeSplitter( Qt::Vertical, this); |
395 | mSplitterAgenda->setMinimizeDirection ( KDGanttMinimizeSplitter::Up ); | 395 | mSplitterAgenda->setMinimizeDirection ( KDGanttMinimizeSplitter::Up ); |
396 | topLayout->addWidget( mSplitterAgenda ); | 396 | topLayout->addWidget( mSplitterAgenda ); |
397 | mAllDayFrame = new QHBox(mSplitterAgenda); | 397 | mAllDayFrame = new QHBox(mSplitterAgenda); |
398 | mAllDayFrame->setFocusPolicy(NoFocus); | 398 | mAllDayFrame->setFocusPolicy(NoFocus); |
399 | QWidget *agendaFrame = new QWidget(mSplitterAgenda); | 399 | QWidget *agendaFrame = new QWidget(mSplitterAgenda); |
400 | agendaFrame->setFocusPolicy(NoFocus); | 400 | agendaFrame->setFocusPolicy(NoFocus); |
401 | 401 | ||
402 | // Create all-day agenda widget | 402 | // Create all-day agenda widget |
403 | mDummyAllDayLeft = new QVBox( mAllDayFrame ); | 403 | mDummyAllDayLeft = new QVBox( mAllDayFrame ); |
404 | 404 | ||
405 | mExpandButton = new QPushButton(mDummyAllDayLeft); | 405 | mExpandButton = new QPushButton(mDummyAllDayLeft); |
406 | mExpandButton->setPixmap( expandPix ); | 406 | mExpandButton->setPixmap( expandPix ); |
407 | int widebut = mExpandButton->sizeHint().width()+4; | 407 | int widebut = mExpandButton->sizeHint().width()+4; |
408 | int heibut = mExpandButton->sizeHint().height()+4; | 408 | int heibut = mExpandButton->sizeHint().height()+4; |
409 | if ( heibut > widebut ) | 409 | if ( heibut > widebut ) |
410 | widebut = heibut ; | 410 | widebut = heibut ; |
411 | if ( QApplication::desktop()->width() < 480 ) | 411 | if ( QApplication::desktop()->width() < 480 ) |
412 | widebut = widebut*3/2; | 412 | widebut = widebut*3/2; |
413 | //mExpandButton->setSizePolicy( QSizePolicy( QSizePolicy::Fixed, | 413 | //mExpandButton->setSizePolicy( QSizePolicy( QSizePolicy::Fixed, |
414 | // QSizePolicy::Fixed ) ); | 414 | // QSizePolicy::Fixed ) ); |
415 | mExpandButton->setFixedSize( widebut, widebut); | 415 | mExpandButton->setFixedSize( widebut, widebut); |
416 | connect( mExpandButton, SIGNAL( clicked() ), SIGNAL( toggleExpand() ) ); | 416 | connect( mExpandButton, SIGNAL( clicked() ), SIGNAL( toggleExpand() ) ); |
417 | mExpandButton->setFocusPolicy(NoFocus); | 417 | mExpandButton->setFocusPolicy(NoFocus); |
418 | mAllDayAgenda = new KOAgenda(1,mAllDayFrame); | 418 | mAllDayAgenda = new KOAgenda(1,mAllDayFrame); |
419 | mAllDayAgenda->setFocusPolicy(NoFocus); | 419 | mAllDayAgenda->setFocusPolicy(NoFocus); |
420 | QLabel *dummyAllDayRight = new QLabel (mAllDayFrame); | 420 | QLabel *dummyAllDayRight = new QLabel (mAllDayFrame); |
421 | 421 | ||
422 | // Create event context menu for all day agenda | 422 | // Create event context menu for all day agenda |
423 | mAllDayAgendaPopup = eventPopup(); | 423 | mAllDayAgendaPopup = eventPopup(); |
424 | connect(mAllDayAgenda,SIGNAL(showIncidencePopupSignal(Incidence *)), | 424 | connect(mAllDayAgenda,SIGNAL(showIncidencePopupSignal(Incidence *)), |
425 | mAllDayAgendaPopup,SLOT(showIncidencePopup(Incidence *))); | 425 | mAllDayAgendaPopup,SLOT(showIncidencePopup(Incidence *))); |
426 | 426 | ||
427 | // Create agenda frame | 427 | // Create agenda frame |
428 | QGridLayout *agendaLayout = new QGridLayout(agendaFrame,4,3); | 428 | QGridLayout *agendaLayout = new QGridLayout(agendaFrame,4,3); |
429 | // QHBox *agendaFrame = new QHBox(splitterAgenda); | 429 | // QHBox *agendaFrame = new QHBox(splitterAgenda); |
430 | 430 | ||
431 | // create event indicator bars | 431 | // create event indicator bars |
432 | mEventIndicatorTop = new EventIndicator(EventIndicator::Top,agendaFrame); | 432 | mEventIndicatorTop = new EventIndicator(EventIndicator::Top,agendaFrame); |
433 | #ifndef DESKTOP_VERSION | 433 | #ifndef DESKTOP_VERSION |
434 | // FIX | 434 | // FIX |
435 | mEventIndicatorTop->setPaintWidget( mSplitterAgenda ); | 435 | mEventIndicatorTop->setPaintWidget( mSplitterAgenda ); |
436 | #endif | 436 | #endif |
437 | mDayLabelsFrame = new QHBox(agendaFrame); | 437 | mDayLabelsFrame = new QHBox(agendaFrame); |
438 | //topLayout->addWidget(mDayLabelsFrame); | 438 | //topLayout->addWidget(mDayLabelsFrame); |
439 | mDayLabels = new QFrame (mDayLabelsFrame); | 439 | mDayLabels = new QFrame (mDayLabelsFrame); |
440 | mLayoutDayLabels = new QHBoxLayout(mDayLabels); | 440 | mLayoutDayLabels = new QHBoxLayout(mDayLabels); |
441 | agendaLayout->addMultiCellWidget(mDayLabelsFrame ,0,0,0,2); | 441 | agendaLayout->addMultiCellWidget(mDayLabelsFrame ,0,0,0,2); |
442 | agendaLayout->addWidget(mEventIndicatorTop,1,1); | 442 | agendaLayout->addWidget(mEventIndicatorTop,1,1); |
443 | 443 | ||
444 | mEventIndicatorBottom = new EventIndicator(EventIndicator::Bottom, | 444 | mEventIndicatorBottom = new EventIndicator(EventIndicator::Bottom, |
445 | agendaFrame); | 445 | agendaFrame); |
446 | agendaLayout->addWidget(mEventIndicatorBottom,3,1); | 446 | agendaLayout->addWidget(mEventIndicatorBottom,3,1); |
447 | QWidget *dummyAgendaRight = new QWidget(agendaFrame); | 447 | QWidget *dummyAgendaRight = new QWidget(agendaFrame); |
448 | agendaLayout->addWidget(dummyAgendaRight,1,2); | 448 | agendaLayout->addWidget(dummyAgendaRight,1,2); |
449 | 449 | ||
450 | // Create time labels | 450 | // Create time labels |
451 | mTimeLabels = new TimeLabels(24,agendaFrame); | 451 | mTimeLabels = new TimeLabels(24,agendaFrame); |
452 | agendaLayout->addWidget(mTimeLabels,2,0); | 452 | agendaLayout->addWidget(mTimeLabels,2,0); |
453 | connect(mTimeLabels,SIGNAL( scaleChanged()), | 453 | connect(mTimeLabels,SIGNAL( scaleChanged()), |
454 | this,SLOT(updateConfig())); | 454 | this,SLOT(updateConfig())); |
455 | 455 | ||
456 | // Create agenda | 456 | // Create agenda |
457 | mAgenda = new KOAgenda(1,96,KOPrefs::instance()->mHourSize,agendaFrame); | 457 | mAgenda = new KOAgenda(1,96,KOPrefs::instance()->mHourSize,agendaFrame); |
458 | agendaLayout->addMultiCellWidget(mAgenda,2,2,1,2); | 458 | agendaLayout->addMultiCellWidget(mAgenda,2,2,1,2); |
459 | agendaLayout->setColStretch(1,1); | 459 | agendaLayout->setColStretch(1,1); |
460 | mAgenda->setFocusPolicy(NoFocus); | 460 | mAgenda->setFocusPolicy(NoFocus); |
461 | // Create event context menu for agenda | 461 | // Create event context menu for agenda |
462 | mAgendaPopup = eventPopup(); | 462 | mAgendaPopup = eventPopup(); |
463 | 463 | ||
464 | mAgendaPopup->addAdditionalItem(QIconSet(SmallIcon("bell")), | 464 | mAgendaPopup->addAdditionalItem(QIconSet(SmallIcon("bell")), |
465 | i18n("Toggle Alarm"),mAgenda, | 465 | i18n("Toggle Alarm"),mAgenda, |
466 | SLOT(popupAlarm()),true); | 466 | SLOT(popupAlarm()),true); |
467 | 467 | ||
468 | 468 | ||
469 | connect(mAgenda,SIGNAL(showIncidencePopupSignal(Incidence *)), | 469 | connect(mAgenda,SIGNAL(showIncidencePopupSignal(Incidence *)), |
470 | mAgendaPopup,SLOT(showIncidencePopup(Incidence *))); | 470 | mAgendaPopup,SLOT(showIncidencePopup(Incidence *))); |
471 | 471 | ||
472 | // make connections between dependent widgets | 472 | // make connections between dependent widgets |
473 | mTimeLabels->setAgenda(mAgenda); | 473 | mTimeLabels->setAgenda(mAgenda); |
474 | 474 | ||
475 | // Update widgets to reflect user preferences | 475 | // Update widgets to reflect user preferences |
476 | // updateConfig(); | 476 | // updateConfig(); |
477 | 477 | ||
478 | // createDayLabels(); | 478 | // createDayLabels(); |
479 | 479 | ||
480 | // these blank widgets make the All Day Event box line up with the agenda | 480 | // these blank widgets make the All Day Event box line up with the agenda |
481 | dummyAllDayRight->setFixedWidth(mAgenda->verticalScrollBar()->width()); | 481 | dummyAllDayRight->setFixedWidth(mAgenda->verticalScrollBar()->width()); |
482 | dummyAgendaRight->setFixedWidth(mAgenda->verticalScrollBar()->width()); | 482 | dummyAgendaRight->setFixedWidth(mAgenda->verticalScrollBar()->width()); |
483 | mDummyAllDayLeft->setFixedWidth(mTimeLabels->width()); | 483 | mDummyAllDayLeft->setFixedWidth(mTimeLabels->width()); |
484 | 484 | ||
485 | // Scrolling | 485 | // Scrolling |
486 | connect(mAgenda->verticalScrollBar(),SIGNAL(valueChanged(int)), | 486 | connect(mAgenda->verticalScrollBar(),SIGNAL(valueChanged(int)), |
487 | mTimeLabels, SLOT(positionChanged())); | 487 | mTimeLabels, SLOT(positionChanged())); |
488 | connect(mTimeLabels->verticalScrollBar(),SIGNAL(valueChanged(int)), | 488 | connect(mTimeLabels->verticalScrollBar(),SIGNAL(valueChanged(int)), |
489 | SLOT(setContentsPos(int))); | 489 | SLOT(setContentsPos(int))); |
490 | 490 | ||
491 | connect(mAgenda,SIGNAL(showDateView( int, QDate )),SIGNAL(showDateView( int, QDate ))); | 491 | connect(mAgenda,SIGNAL(showDateView( int, QDate )),SIGNAL(showDateView( int, QDate ))); |
492 | connect(mAllDayAgenda,SIGNAL(showDateView( int, QDate )),SIGNAL(showDateView( int, QDate ))); | 492 | connect(mAllDayAgenda,SIGNAL(showDateView( int, QDate )),SIGNAL(showDateView( int, QDate ))); |
493 | 493 | ||
494 | // Create/Show/Edit/Delete Event | 494 | // Create/Show/Edit/Delete Event |
495 | connect(mAgenda,SIGNAL(newEventSignal(int,int)), | 495 | connect(mAgenda,SIGNAL(newEventSignal(int,int)), |
496 | SLOT(newEvent(int,int))); | 496 | SLOT(newEvent(int,int))); |
497 | connect(mAgenda,SIGNAL(newTodoSignal(int,int)), | 497 | connect(mAgenda,SIGNAL(newTodoSignal(int,int)), |
498 | SLOT(newTodo(int,int))); | 498 | SLOT(newTodo(int,int))); |
499 | connect(mAgenda,SIGNAL(newEventSignal(int,int,int,int)), | 499 | connect(mAgenda,SIGNAL(newEventSignal(int,int,int,int)), |
500 | SLOT(newEvent(int,int,int,int))); | 500 | SLOT(newEvent(int,int,int,int))); |
501 | connect(mAllDayAgenda,SIGNAL(newEventSignal(int,int)), | 501 | connect(mAllDayAgenda,SIGNAL(newEventSignal(int,int)), |
502 | SLOT(newEventAllDay(int,int))); | 502 | SLOT(newEventAllDay(int,int))); |
503 | connect(mAllDayAgenda,SIGNAL(newTodoSignal(int,int)), | 503 | connect(mAllDayAgenda,SIGNAL(newTodoSignal(int,int)), |
504 | SLOT(newTodoAllDay(int,int))); | 504 | SLOT(newTodoAllDay(int,int))); |
505 | connect(mAllDayAgenda,SIGNAL(newEventSignal(int,int,int,int)), | 505 | connect(mAllDayAgenda,SIGNAL(newEventSignal(int,int,int,int)), |
506 | SLOT(newEventAllDay(int,int))); | 506 | SLOT(newEventAllDay(int,int))); |
507 | connect(mAgenda,SIGNAL(newTimeSpanSignal(int,int,int,int)), | 507 | connect(mAgenda,SIGNAL(newTimeSpanSignal(int,int,int,int)), |
508 | SLOT(newTimeSpanSelected(int,int,int,int))); | 508 | SLOT(newTimeSpanSelected(int,int,int,int))); |
509 | connect(mAllDayAgenda,SIGNAL(newTimeSpanSignal(int,int,int,int)), | 509 | connect(mAllDayAgenda,SIGNAL(newTimeSpanSignal(int,int,int,int)), |
510 | SLOT(newTimeSpanSelectedAllDay(int,int,int,int))); | 510 | SLOT(newTimeSpanSelectedAllDay(int,int,int,int))); |
511 | connect(mAgenda,SIGNAL(newStartSelectSignal()),SLOT(updateView())); | 511 | connect(mAgenda,SIGNAL(newStartSelectSignal()),SLOT(updateView())); |
512 | connect(mAllDayAgenda,SIGNAL(newStartSelectSignal()),SLOT(updateView())); | 512 | connect(mAllDayAgenda,SIGNAL(newStartSelectSignal()),SLOT(updateView())); |
513 | 513 | ||
514 | connect(mAgenda,SIGNAL(editIncidenceSignal(Incidence *)), | 514 | connect(mAgenda,SIGNAL(editIncidenceSignal(Incidence *)), |
515 | SIGNAL(editIncidenceSignal(Incidence *))); | 515 | SIGNAL(editIncidenceSignal(Incidence *))); |
516 | connect(mAllDayAgenda,SIGNAL(editIncidenceSignal(Incidence *)), | 516 | connect(mAllDayAgenda,SIGNAL(editIncidenceSignal(Incidence *)), |
517 | SIGNAL(editIncidenceSignal(Incidence *))); | 517 | SIGNAL(editIncidenceSignal(Incidence *))); |
518 | connect(mAgenda,SIGNAL(showIncidenceSignal(Incidence *)), | 518 | connect(mAgenda,SIGNAL(showIncidenceSignal(Incidence *)), |
519 | SIGNAL(showIncidenceSignal(Incidence *))); | 519 | SIGNAL(showIncidenceSignal(Incidence *))); |
520 | connect(mAllDayAgenda,SIGNAL(showIncidenceSignal(Incidence *)), | 520 | connect(mAllDayAgenda,SIGNAL(showIncidenceSignal(Incidence *)), |
521 | SIGNAL(showIncidenceSignal(Incidence *))); | 521 | SIGNAL(showIncidenceSignal(Incidence *))); |
522 | connect(mAgenda,SIGNAL(deleteIncidenceSignal(Incidence *)), | 522 | connect(mAgenda,SIGNAL(deleteIncidenceSignal(Incidence *)), |
523 | SIGNAL(deleteIncidenceSignal(Incidence *))); | 523 | SIGNAL(deleteIncidenceSignal(Incidence *))); |
524 | connect(mAllDayAgenda,SIGNAL(deleteIncidenceSignal(Incidence *)), | 524 | connect(mAllDayAgenda,SIGNAL(deleteIncidenceSignal(Incidence *)), |
525 | SIGNAL(deleteIncidenceSignal(Incidence *))); | 525 | SIGNAL(deleteIncidenceSignal(Incidence *))); |
526 | 526 | ||
527 | connect(mAgenda,SIGNAL(itemModified(KOAgendaItem *, int )), | 527 | connect(mAgenda,SIGNAL(itemModified(KOAgendaItem *, int )), |
528 | SLOT(updateEventDates(KOAgendaItem *, int ))); | 528 | SLOT(updateEventDates(KOAgendaItem *, int ))); |
529 | connect(mAllDayAgenda,SIGNAL(itemModified(KOAgendaItem *, int )), | 529 | connect(mAllDayAgenda,SIGNAL(itemModified(KOAgendaItem *, int )), |
530 | SLOT(updateEventDates(KOAgendaItem *, int))); | 530 | SLOT(updateEventDates(KOAgendaItem *, int))); |
531 | 531 | ||
532 | // event indicator update | 532 | // event indicator update |
533 | connect(mAgenda,SIGNAL(lowerYChanged(int)), | 533 | connect(mAgenda,SIGNAL(lowerYChanged(int)), |
534 | SLOT(updateEventIndicatorTop(int))); | 534 | SLOT(updateEventIndicatorTop(int))); |
535 | connect(mAgenda,SIGNAL(upperYChanged(int)), | 535 | connect(mAgenda,SIGNAL(upperYChanged(int)), |
536 | SLOT(updateEventIndicatorBottom(int))); | 536 | SLOT(updateEventIndicatorBottom(int))); |
537 | // drag signals | 537 | // drag signals |
538 | /* | 538 | /* |
539 | connect(mAgenda,SIGNAL(startDragSignal(Event *)), | 539 | connect(mAgenda,SIGNAL(startDragSignal(Event *)), |
540 | SLOT(startDrag(Event *))); | 540 | SLOT(startDrag(Event *))); |
541 | connect(mAllDayAgenda,SIGNAL(startDragSignal(Event *)), | 541 | connect(mAllDayAgenda,SIGNAL(startDragSignal(Event *)), |
542 | SLOT(startDrag(Event *))); | 542 | SLOT(startDrag(Event *))); |
543 | */ | 543 | */ |
544 | // synchronize selections | 544 | // synchronize selections |
545 | connect( mAgenda, SIGNAL( incidenceSelected( Incidence * ) ), | 545 | connect( mAgenda, SIGNAL( incidenceSelected( Incidence * ) ), |
546 | mAllDayAgenda, SLOT( deselectItem() ) ); | 546 | mAllDayAgenda, SLOT( deselectItem() ) ); |
547 | connect( mAllDayAgenda, SIGNAL( incidenceSelected( Incidence * ) ), | 547 | connect( mAllDayAgenda, SIGNAL( incidenceSelected( Incidence * ) ), |
548 | mAgenda, SLOT( deselectItem() ) ); | 548 | mAgenda, SLOT( deselectItem() ) ); |
549 | connect( mAgenda, SIGNAL( incidenceSelected( Incidence * ) ), | 549 | connect( mAgenda, SIGNAL( incidenceSelected( Incidence * ) ), |
550 | SIGNAL( incidenceSelected( Incidence * ) ) ); | 550 | SIGNAL( incidenceSelected( Incidence * ) ) ); |
551 | connect( mAllDayAgenda, SIGNAL( incidenceSelected( Incidence * ) ), | 551 | connect( mAllDayAgenda, SIGNAL( incidenceSelected( Incidence * ) ), |
552 | SIGNAL( incidenceSelected( Incidence * ) ) ); | 552 | SIGNAL( incidenceSelected( Incidence * ) ) ); |
553 | connect( mAgenda, SIGNAL( resizedSignal() ), | 553 | connect( mAgenda, SIGNAL( resizedSignal() ), |
554 | SLOT( updateConfig( ) ) ); | 554 | SLOT( updateConfig( ) ) ); |
555 | connect( mAgenda, SIGNAL( addToCalSignal(Incidence *, Incidence *) ), | 555 | connect( mAgenda, SIGNAL( addToCalSignal(Incidence *, Incidence *) ), |
556 | SLOT( addToCalSlot(Incidence *, Incidence * ) ) ); | 556 | SLOT( addToCalSlot(Incidence *, Incidence * ) ) ); |
557 | connect( mAllDayAgenda, SIGNAL( addToCalSignal(Incidence * ,Incidence *) ), | 557 | connect( mAllDayAgenda, SIGNAL( addToCalSignal(Incidence * ,Incidence *) ), |
558 | SLOT( addToCalSlot(Incidence * , Incidence *) ) ); | 558 | SLOT( addToCalSlot(Incidence * , Incidence *) ) ); |
559 | // connect( mAgenda, SIGNAL( cloneIncidenceSignal(Incidence *) ), SIGNAL( cloneIncidenceSignal(Incidence *) ) ); | 559 | // connect( mAgenda, SIGNAL( cloneIncidenceSignal(Incidence *) ), SIGNAL( cloneIncidenceSignal(Incidence *) ) ); |
560 | //connect( mAllDayAgenda, SIGNAL( cloneIncidenceSignal(Incidence *) ), SIGNAL( cloneIncidenceSignal(Incidence *) ) ); | 560 | //connect( mAllDayAgenda, SIGNAL( cloneIncidenceSignal(Incidence *) ), SIGNAL( cloneIncidenceSignal(Incidence *) ) ); |
561 | 561 | ||
562 | 562 | ||
563 | } | 563 | } |
564 | 564 | ||
565 | void KOAgendaView::toggleAllDay() | 565 | void KOAgendaView::toggleAllDay() |
566 | { | 566 | { |
567 | if ( mSplitterAgenda->firstHandle() ) | 567 | if ( mSplitterAgenda->firstHandle() ) |
568 | mSplitterAgenda->firstHandle()->toggle(); | 568 | mSplitterAgenda->firstHandle()->toggle(); |
569 | } | 569 | } |
570 | void KOAgendaView::addToCalSlot(Incidence * inc, Incidence * incOld ) | 570 | void KOAgendaView::addToCalSlot(Incidence * inc, Incidence * incOld ) |
571 | { | 571 | { |
572 | calendar()->addIncidence( inc ); | 572 | calendar()->addIncidence( inc ); |
573 | 573 | ||
574 | if ( incOld ) { | 574 | if ( incOld ) { |
575 | if ( incOld->type() == "Todo" ) | 575 | if ( incOld->type() == "Todo" ) |
576 | emit todoMoved((Todo*)incOld, KOGlobals::EVENTEDITED ); | 576 | emit todoMoved((Todo*)incOld, KOGlobals::EVENTEDITED ); |
577 | else | 577 | else |
578 | emit incidenceChanged(incOld, KOGlobals::EVENTEDITED); | 578 | emit incidenceChanged(incOld, KOGlobals::EVENTEDITED); |
579 | } | 579 | } |
580 | 580 | ||
581 | } | 581 | } |
582 | 582 | ||
583 | KOAgendaView::~KOAgendaView() | 583 | KOAgendaView::~KOAgendaView() |
584 | { | 584 | { |
585 | delete mAgendaPopup; | 585 | delete mAgendaPopup; |
586 | delete mAllDayAgendaPopup; | 586 | delete mAllDayAgendaPopup; |
587 | delete KOAgendaItem::paintPix(); | 587 | delete KOAgendaItem::paintPix(); |
588 | delete KOAgendaItem::paintPixSel(); | 588 | delete KOAgendaItem::paintPixSel(); |
589 | } | 589 | } |
590 | void KOAgendaView::resizeEvent( QResizeEvent* e ) | 590 | void KOAgendaView::resizeEvent( QResizeEvent* e ) |
591 | { | 591 | { |
592 | //qDebug("KOAgendaView::resizeEvent( QResizeEvent* e ) %d ", e->size().width()); | 592 | //qDebug("KOAgendaView::resizeEvent( QResizeEvent* e ) %d ", e->size().width()); |
593 | bool uc = false; | 593 | bool uc = false; |
594 | int ow = e->oldSize().width(); | 594 | int ow = e->oldSize().width(); |
595 | int oh = e->oldSize().height(); | 595 | int oh = e->oldSize().height(); |
596 | int w = e->size().width(); | 596 | int w = e->size().width(); |
597 | int h = e->size().height(); | 597 | int h = e->size().height(); |
598 | if ( (ow > oh && w< h ) || (ow < oh && w > h ) ) { | 598 | if ( (ow > oh && w< h ) || (ow < oh && w > h ) ) { |
599 | if ( ! mBlockUpdating && !globalFlagBlockStartup && !globalFlagBlockAgenda ) | 599 | if ( ! mBlockUpdating && !globalFlagBlockStartup && !globalFlagBlockAgenda ) |
600 | uc = true; | 600 | uc = true; |
601 | //qDebug("view changed %d %d %d %d ", ow, oh , w , h); | 601 | //qDebug("view changed %d %d %d %d ", ow, oh , w , h); |
602 | } | 602 | } |
603 | mUpcomingWidth = e->size().width() ; | 603 | mUpcomingWidth = e->size().width() ; |
604 | if ( mBlockUpdating || uc ) { | 604 | if ( mBlockUpdating || uc ) { |
605 | mBlockUpdating = false; | 605 | mBlockUpdating = false; |
606 | //mAgenda->setMinimumSize(800 , 600 ); | 606 | //mAgenda->setMinimumSize(800 , 600 ); |
607 | //qDebug("mAgenda->resize+++++++++++++++ "); | 607 | //qDebug("mAgenda->resize+++++++++++++++ "); |
608 | updateConfig(); | 608 | updateConfig(); |
609 | //qDebug("KOAgendaView::Updating now possible "); | 609 | //qDebug("KOAgendaView::Updating now possible "); |
610 | } else | 610 | } else |
611 | createDayLabels(); | 611 | createDayLabels(); |
612 | //qDebug("resizeEvent end "); | 612 | //qDebug("resizeEvent end "); |
613 | 613 | ||
614 | } | 614 | } |
615 | void KOAgendaView::slotDaylabelClicked( int num ) | 615 | void KOAgendaView::slotDaylabelClicked( int num ) |
616 | { | 616 | { |
617 | 617 | ||
618 | QDate firstDate = mSelectedDates.first(); | 618 | QDate firstDate = mSelectedDates.first(); |
619 | if ( num == -1 ) | 619 | if ( num == -1 ) |
620 | emit showDateView( 6, firstDate ); | 620 | emit showDateView( 6, firstDate ); |
621 | else if (num >= 0 ) { | 621 | else if (num >= 0 ) { |
622 | if ( mSelectedDates.count() == 1) | 622 | if ( mSelectedDates.count() == 1) |
623 | emit showDateView( 9, firstDate.addDays( num ) ); | 623 | emit showDateView( 9, firstDate.addDays( num ) ); |
624 | else | 624 | else |
625 | emit showDateView( 3, firstDate.addDays( num ) ); | 625 | emit showDateView( 3, firstDate.addDays( num ) ); |
626 | } | 626 | } |
627 | else | 627 | else |
628 | showDateView( 10, firstDate.addDays(1) ); | 628 | showDateView( 10, firstDate.addDays(1) ); |
629 | } | 629 | } |
630 | 630 | ||
631 | KOAgendaButton* KOAgendaView::getNewDaylabel() | 631 | KOAgendaButton* KOAgendaView::getNewDaylabel() |
632 | { | 632 | { |
633 | 633 | ||
634 | KOAgendaButton * dayLabel = new KOAgendaButton(mDayLabels); | 634 | KOAgendaButton * dayLabel = new KOAgendaButton(mDayLabels); |
635 | connect( dayLabel, SIGNAL( numClicked(int) ), this, SLOT ( slotDaylabelClicked(int) ) ); | 635 | connect( dayLabel, SIGNAL( numClicked(int) ), this, SLOT ( slotDaylabelClicked(int) ) ); |
636 | mDayLabelsList.append( dayLabel ); | 636 | mDayLabelsList.append( dayLabel ); |
637 | mLayoutDayLabels->addWidget(dayLabel); | 637 | mLayoutDayLabels->addWidget(dayLabel); |
638 | return dayLabel ; | 638 | return dayLabel ; |
639 | } | 639 | } |
640 | 640 | ||
641 | void KOAgendaView::createDayLabels() | 641 | void KOAgendaView::createDayLabels() |
642 | { | 642 | { |
643 | 643 | ||
644 | if ( mBlockUpdating || globalFlagBlockLabel == 1) { | 644 | if ( mBlockUpdating || globalFlagBlockLabel == 1) { |
645 | // qDebug(" KOAgendaView::createDayLabels() blocked "); | 645 | // qDebug(" KOAgendaView::createDayLabels() blocked "); |
646 | return; | 646 | return; |
647 | 647 | ||
648 | } | 648 | } |
649 | int newHight; | 649 | int newHight; |
650 | 650 | ||
651 | // ### Before deleting and recreating we could check if mSelectedDates changed... | 651 | // ### Before deleting and recreating we could check if mSelectedDates changed... |
652 | // It would remove some flickering and gain speed (since this is called by | 652 | // It would remove some flickering and gain speed (since this is called by |
653 | // each updateView() call) | 653 | // each updateView() call) |
654 | 654 | ||
655 | int maxWid = mUpcomingWidth - mTimeLabels->width()- mAgenda->verticalScrollBar()->width() - 2; | 655 | int maxWid = mUpcomingWidth - mTimeLabels->width()- mAgenda->verticalScrollBar()->width() - 2; |
656 | mDayLabelsFrame->setMaximumWidth( mUpcomingWidth ); | 656 | mDayLabelsFrame->setMaximumWidth( mUpcomingWidth ); |
657 | if ( maxWid < 0 ) | 657 | if ( maxWid < 0 ) |
658 | maxWid = 20; | 658 | maxWid = 20; |
659 | 659 | ||
660 | QFont dlf = KOPrefs::instance()->mTimeLabelsFont; | 660 | QFont dlf = KOPrefs::instance()->mTimeLabelsFont; |
661 | QFontMetrics fm ( dlf ); | 661 | QFontMetrics fm ( dlf ); |
662 | int selCount = mSelectedDates.count(); | 662 | int selCount = mSelectedDates.count(); |
663 | QString dayTest = "Mon 20"; | 663 | QString dayTest = "Mon 20"; |
664 | //QString dayTest = "Mon 20"; | 664 | //QString dayTest = "Mon 20"; |
665 | int wid = fm.width( dayTest ); | 665 | int wid = fm.width( dayTest ); |
666 | //maxWid -= ( selCount * 3 ); //working for QLabels | 666 | //maxWid -= ( selCount * 3 ); //working for QLabels |
667 | maxWid -= ( selCount * 3 ); //working for QPushButton | 667 | maxWid -= ( selCount * 3 ); //working for QPushButton |
668 | if ( maxWid < 0 ) | 668 | if ( maxWid < 0 ) |
669 | maxWid = 20; | 669 | maxWid = 20; |
670 | int needWid = wid * selCount; | 670 | int needWid = wid * selCount; |
671 | //qDebug("++++++++Needed : %d MaxWidth: %d", needWid, maxWid ); | 671 | //qDebug("++++++++Needed : %d MaxWidth: %d", needWid, maxWid ); |
672 | //if ( needWid > maxWid ) | 672 | //if ( needWid > maxWid ) |
673 | // qDebug("DAYLABELS TOOOOOOO BIG "); | 673 | // qDebug("DAYLABELS TOOOOOOO BIG "); |
674 | while ( needWid > maxWid ) { | 674 | while ( needWid > maxWid ) { |
675 | dayTest = dayTest.left( dayTest.length() - 1 ); | 675 | dayTest = dayTest.left( dayTest.length() - 1 ); |
676 | wid = fm.width( dayTest ); | 676 | wid = fm.width( dayTest ); |
677 | needWid = wid * selCount; | 677 | needWid = wid * selCount; |
678 | } | 678 | } |
679 | int maxLen = dayTest.length(); | 679 | int maxLen = dayTest.length(); |
680 | int fontPoint = dlf.pointSize(); | 680 | int fontPoint = dlf.pointSize(); |
681 | if ( maxLen < 2 ) { | 681 | if ( maxLen < 2 ) { |
682 | int fontPoint = dlf.pointSize(); | 682 | int fontPoint = dlf.pointSize(); |
683 | while ( fontPoint > 4 ) { | 683 | while ( fontPoint > 4 ) { |
684 | --fontPoint; | 684 | --fontPoint; |
685 | dlf.setPointSize( fontPoint ); | 685 | dlf.setPointSize( fontPoint ); |
686 | QFontMetrics f( dlf ); | 686 | QFontMetrics f( dlf ); |
687 | wid = f.width( "30" ); | 687 | wid = f.width( "30" ); |
688 | needWid = wid * selCount; | 688 | needWid = wid * selCount; |
689 | if ( needWid < maxWid ) | 689 | if ( needWid < maxWid ) |
690 | break; | 690 | break; |
691 | } | 691 | } |
692 | maxLen = 2; | 692 | maxLen = 2; |
693 | } | 693 | } |
694 | //qDebug("Max len %d ", dayTest.length() ); | 694 | //qDebug("Max len %d ", dayTest.length() ); |
695 | 695 | ||
696 | QFontMetrics tempF( dlf ); | 696 | QFontMetrics tempF( dlf ); |
697 | newHight = tempF.height(); | 697 | newHight = tempF.height(); |
698 | mDayLabels->setFont( dlf ); | 698 | mDayLabels->setFont( dlf ); |
699 | // mLayoutDayLabels = new QHBoxLayout(mDayLabels);; | 699 | // mLayoutDayLabels = new QHBoxLayout(mDayLabels);; |
700 | // mLayoutDayLabels->addSpacing(mTimeLabels->width()); | 700 | // mLayoutDayLabels->addSpacing(mTimeLabels->width()); |
701 | //mLayoutDayLabels->addSpacing( 2 ); | 701 | //mLayoutDayLabels->addSpacing( 2 ); |
702 | // QFont lFont = dlf; | 702 | // QFont lFont = dlf; |
703 | bool appendLabels = false; | 703 | bool appendLabels = false; |
704 | KOAgendaButton *dayLabel; | 704 | KOAgendaButton *dayLabel; |
705 | dayLabel = mDayLabelsList.first(); | 705 | dayLabel = mDayLabelsList.first(); |
706 | if ( !dayLabel ) { | 706 | if ( !dayLabel ) { |
707 | appendLabels = true; | 707 | appendLabels = true; |
708 | dayLabel = getNewDaylabel(); | 708 | dayLabel = getNewDaylabel(); |
709 | } | 709 | } |
710 | dayLabel->setFixedWidth( mTimeLabels->width()+2 ); | 710 | dayLabel->setFixedWidth( mTimeLabels->width()+2 ); |
711 | dayLabel->setFont( dlf ); | 711 | dayLabel->setFont( dlf ); |
712 | dayLabel->setNum( -1 ); | 712 | dayLabel->setNum( -1 ); |
713 | //dayLabel->setAlignment(QLabel::AlignHCenter); | 713 | //dayLabel->setAlignment(QLabel::AlignHCenter); |
714 | dayLabel->setText( KOGlobals::self()->calendarSystem()->monthName( mSelectedDates.first(), true ) ); | 714 | dayLabel->setText( KOGlobals::self()->calendarSystem()->monthName( mSelectedDates.first(), true ) ); |
715 | dayLabel->show(); | 715 | dayLabel->show(); |
716 | DateList::ConstIterator dit; | 716 | DateList::ConstIterator dit; |
717 | bool oneday = (mSelectedDates.first() == mSelectedDates.last() ); | 717 | bool oneday = (mSelectedDates.first() == mSelectedDates.last() ); |
718 | int counter = -1; | 718 | int counter = -1; |
719 | for( dit = mSelectedDates.begin(); dit != mSelectedDates.end(); ++dit ) { | 719 | for( dit = mSelectedDates.begin(); dit != mSelectedDates.end(); ++dit ) { |
720 | ++counter; | 720 | ++counter; |
721 | QDate date = *dit; | 721 | QDate date = *dit; |
722 | // QBoxLayout *dayLayout = new QVBoxLayout(mLayoutDayLabels); | 722 | // QBoxLayout *dayLayout = new QVBoxLayout(mLayoutDayLabels); |
723 | if ( ! appendLabels ) { | 723 | if ( ! appendLabels ) { |
724 | dayLabel = mDayLabelsList.next(); | 724 | dayLabel = mDayLabelsList.next(); |
725 | if ( !dayLabel ) | 725 | if ( !dayLabel ) |
726 | appendLabels = true; | 726 | appendLabels = true; |
727 | } | 727 | } |
728 | if ( appendLabels ) { | 728 | if ( appendLabels ) { |
729 | dayLabel = getNewDaylabel(); | 729 | dayLabel = getNewDaylabel(); |
730 | } | 730 | } |
731 | dayLabel->setMinimumWidth( 1 ); | 731 | dayLabel->setMinimumWidth( 1 ); |
732 | dayLabel->setMaximumWidth( 10240 ); | 732 | dayLabel->setMaximumWidth( 10240 ); |
733 | dayLabel->setFont( dlf ); | 733 | dayLabel->setFont( dlf ); |
734 | dayLabel->show(); | 734 | dayLabel->show(); |
735 | dayLabel->setNum( counter ); | 735 | dayLabel->setNum( counter ); |
736 | QString str; | 736 | QString str; |
737 | int dW = KOGlobals::self()->calendarSystem()->dayOfWeek(date); | 737 | int dW = KOGlobals::self()->calendarSystem()->dayOfWeek(date); |
738 | QString dayName = KOGlobals::self()->calendarSystem()->weekDayName( dW, true ); | 738 | QString dayName = KOGlobals::self()->calendarSystem()->weekDayName( dW, true ); |
739 | switch ( maxLen ) { | 739 | switch ( maxLen ) { |
740 | case 2: | 740 | case 2: |
741 | str = QString::number( date.day() ); | 741 | str = QString::number( date.day() ); |
742 | break; | 742 | break; |
743 | 743 | ||
744 | case 3: | 744 | case 3: |
745 | str = dayName.left( 1 ) +QString::number( date.day()); | 745 | str = dayName.left( 1 ) +QString::number( date.day()); |
746 | 746 | ||
747 | break; | 747 | break; |
748 | case 4: | 748 | case 4: |
749 | str = dayName.left( 1 ) + " " +QString::number( date.day()); | 749 | str = dayName.left( 1 ) + " " +QString::number( date.day()); |
750 | 750 | ||
751 | break; | 751 | break; |
752 | case 5: | 752 | case 5: |
753 | str = dayName.left( 2 ) + " " +QString::number( date.day()); | 753 | str = dayName.left( 2 ) + " " +QString::number( date.day()); |
754 | 754 | ||
755 | break; | 755 | break; |
756 | case 6: | 756 | case 6: |
757 | str = dayName.left( 3 ) + " " +QString::number( date.day()); | 757 | str = dayName.left( 3 ) + " " +QString::number( date.day()); |
758 | break; | 758 | break; |
759 | 759 | ||
760 | default: | 760 | default: |
761 | break; | 761 | break; |
762 | } | 762 | } |
763 | if ( oneday ) { | 763 | if ( oneday ) { |
764 | QString addString; | 764 | QString addString; |
765 | if ( mSelectedDates.first() == QDateTime::currentDateTime().date() ) | 765 | if ( mSelectedDates.first() == QDateTime::currentDateTime().date() ) |
766 | addString = i18n("Today"); | 766 | addString = i18n("Today"); |
767 | else if ( mSelectedDates.first() == QDateTime::currentDateTime().date().addDays(1) ) | 767 | else if ( mSelectedDates.first() == QDateTime::currentDateTime().date().addDays(1) ) |
768 | addString = i18n("Tomorrow"); | 768 | addString = i18n("Tomorrow"); |
769 | else if ( mSelectedDates.first() == QDateTime::currentDateTime().date().addDays(-1) ) | 769 | else if ( mSelectedDates.first() == QDateTime::currentDateTime().date().addDays(-1) ) |
770 | addString = i18n("Yesterday"); | 770 | addString = i18n("Yesterday"); |
771 | else if ( mSelectedDates.first() == QDateTime::currentDateTime().date().addDays(-2) ) | 771 | else if ( mSelectedDates.first() == QDateTime::currentDateTime().date().addDays(-2) ) |
772 | addString = i18n("Day before yesterday"); | 772 | addString = i18n("Day before yesterday"); |
773 | else if ( mSelectedDates.first() == QDateTime::currentDateTime().date().addDays(2) ) | 773 | else if ( mSelectedDates.first() == QDateTime::currentDateTime().date().addDays(2) ) |
774 | addString = i18n("Day after tomorrow"); | 774 | addString = i18n("Day after tomorrow"); |
775 | if ( !addString.isEmpty() ) { | 775 | if ( !addString.isEmpty() ) { |
776 | str = addString+", " + str; | 776 | str = addString+", " + str; |
777 | } else { | 777 | } else { |
778 | str = KGlobal::locale()->formatDate( date, KOPrefs::instance()->mShortDateInViewer); | 778 | str = KGlobal::locale()->formatDate( date, KOPrefs::instance()->mShortDateInViewer); |
779 | } | 779 | } |
780 | } | 780 | } |
781 | dayLabel->setText(str); | 781 | dayLabel->setText(str); |
782 | //dayLabel->setAlignment(QLabel::AlignHCenter); | 782 | //dayLabel->setAlignment(QLabel::AlignHCenter); |
783 | if (date == QDate::currentDate()) { | 783 | if (date == QDate::currentDate()) { |
784 | QFont bFont = dlf; | 784 | QFont bFont = dlf; |
785 | bFont.setBold( true ); | 785 | bFont.setBold( true ); |
786 | dayLabel->setFont(bFont); | 786 | dayLabel->setFont(bFont); |
787 | } | 787 | } |
788 | //dayLayout->addWidget(dayLabel); | 788 | //dayLayout->addWidget(dayLabel); |
789 | 789 | ||
790 | #ifndef KORG_NOPLUGINS | 790 | #ifndef KORG_NOPLUGINS |
791 | CalendarDecoration::List cds = KOCore::self()->calendarDecorations(); | 791 | CalendarDecoration::List cds = KOCore::self()->calendarDecorations(); |
792 | CalendarDecoration *it; | 792 | CalendarDecoration *it; |
793 | for(it = cds.first(); it; it = cds.next()) { | 793 | for(it = cds.first(); it; it = cds.next()) { |
794 | QString text = it->shortText( date ); | 794 | QString text = it->shortText( date ); |
795 | if ( !text.isEmpty() ) { | 795 | if ( !text.isEmpty() ) { |
796 | QLabel *label = new QLabel(text,mDayLabels); | 796 | QLabel *label = new QLabel(text,mDayLabels); |
797 | label->setAlignment(AlignCenter); | 797 | label->setAlignment(AlignCenter); |
798 | dayLayout->addWidget(label); | 798 | dayLayout->addWidget(label); |
799 | } | 799 | } |
800 | } | 800 | } |
801 | 801 | ||
802 | for(it = cds.first(); it; it = cds.next()) { | 802 | for(it = cds.first(); it; it = cds.next()) { |
803 | QWidget *wid = it->smallWidget(mDayLabels,date); | 803 | QWidget *wid = it->smallWidget(mDayLabels,date); |
804 | if ( wid ) { | 804 | if ( wid ) { |
805 | // wid->setHeight(20); | 805 | // wid->setHeight(20); |
806 | dayLayout->addWidget(wid); | 806 | dayLayout->addWidget(wid); |
807 | } | 807 | } |
808 | } | 808 | } |
809 | #endif | 809 | #endif |
810 | } | 810 | } |
811 | if ( ! appendLabels ) { | 811 | if ( ! appendLabels ) { |
812 | dayLabel = mDayLabelsList.next(); | 812 | dayLabel = mDayLabelsList.next(); |
813 | if ( !dayLabel ) | 813 | if ( !dayLabel ) |
814 | appendLabels = true; | 814 | appendLabels = true; |
815 | } | 815 | } |
816 | if ( appendLabels ) { | 816 | if ( appendLabels ) { |
817 | dayLabel = getNewDaylabel(); | 817 | dayLabel = getNewDaylabel(); |
818 | } | 818 | } |
819 | //dayLabel->hide();//test only | 819 | //dayLabel->hide();//test only |
820 | 820 | ||
821 | int offset = (mAgenda->width() - mAgenda->verticalScrollBar()->width()-3 ) % mSelectedDates.count() ; | 821 | int offset = (mAgenda->width() - mAgenda->verticalScrollBar()->width()-3 ) % mSelectedDates.count() ; |
822 | if ( offset < 0 ) offset = 0; | 822 | if ( offset < 0 ) offset = 0; |
823 | //qDebug("mLayoutDayLabels->addSpacing %d ", mAgenda->verticalScrollBar()->width()+offset+2 ); | 823 | //qDebug("mLayoutDayLabels->addSpacing %d ", mAgenda->verticalScrollBar()->width()+offset+2 ); |
824 | dayLabel->setText(">");//QString::number ( mSelectedDates.first().month() ) ); | 824 | dayLabel->setText(">");//QString::number ( mSelectedDates.first().month() ) ); |
825 | dayLabel->setFont( dlf ); | 825 | dayLabel->setFont( dlf ); |
826 | dayLabel->show(); | 826 | dayLabel->show(); |
827 | dayLabel->setNum( -2 ); | 827 | dayLabel->setNum( -2 ); |
828 | dayLabel->setFixedWidth( mAgenda->verticalScrollBar()->width()+ offset ); | 828 | dayLabel->setFixedWidth( mAgenda->verticalScrollBar()->width()+ offset ); |
829 | //qDebug("setToFixed %d ", mAgenda->verticalScrollBar()->width()+ offset+2); | 829 | //qDebug("setToFixed %d ", mAgenda->verticalScrollBar()->width()+ offset+2); |
830 | //mLayoutDayLabels->addSpacing(mAgenda->verticalScrollBar()->width()+ offset+2); | 830 | //mLayoutDayLabels->addSpacing(mAgenda->verticalScrollBar()->width()+ offset+2); |
831 | if ( !appendLabels ) { | 831 | if ( !appendLabels ) { |
832 | dayLabel = mDayLabelsList.next(); | 832 | dayLabel = mDayLabelsList.next(); |
833 | while ( dayLabel ) { | 833 | while ( dayLabel ) { |
834 | //qDebug("!dayLabel %d",dayLabel ); | 834 | //qDebug("!dayLabel %d",dayLabel ); |
835 | dayLabel->hide(); | 835 | dayLabel->hide(); |
836 | dayLabel = mDayLabelsList.next(); | 836 | dayLabel = mDayLabelsList.next(); |
837 | } | 837 | } |
838 | } | 838 | } |
839 | //mDayLabelsFrame->show(); | 839 | |
840 | //mDayLabels->show(); | 840 | mDayLabelsFrame->setFixedHeight( newHight + 4 ); |
841 | //qDebug("heigt %d %d %d ",mDayLabelsFrame->height(), mDayLabelsFrame->sizeHint().height(), newHight); | ||
842 | //mDayLabelsFrame->resize( mAgenda->visibleWidth(), newHight ); | ||
843 | mDayLabelsFrame->setFixedHeight( newHight ); | ||
844 | } | 841 | } |
845 | 842 | ||
846 | int KOAgendaView::maxDatesHint() | 843 | int KOAgendaView::maxDatesHint() |
847 | { | 844 | { |
848 | // Not sure about the max number of events, so return 0 for now. | 845 | // Not sure about the max number of events, so return 0 for now. |
849 | return 0; | 846 | return 0; |
850 | } | 847 | } |
851 | 848 | ||
852 | int KOAgendaView::currentDateCount() | 849 | int KOAgendaView::currentDateCount() |
853 | { | 850 | { |
854 | return mSelectedDates.count(); | 851 | return mSelectedDates.count(); |
855 | } | 852 | } |
856 | 853 | ||
857 | QPtrList<Incidence> KOAgendaView::selectedIncidences() | 854 | QPtrList<Incidence> KOAgendaView::selectedIncidences() |
858 | { | 855 | { |
859 | QPtrList<Incidence> selected; | 856 | QPtrList<Incidence> selected; |
860 | Incidence *incidence; | 857 | Incidence *incidence; |
861 | 858 | ||
862 | incidence = mAgenda->selectedIncidence(); | 859 | incidence = mAgenda->selectedIncidence(); |
863 | if (incidence) selected.append(incidence); | 860 | if (incidence) selected.append(incidence); |
864 | 861 | ||
865 | incidence = mAllDayAgenda->selectedIncidence(); | 862 | incidence = mAllDayAgenda->selectedIncidence(); |
866 | if (incidence) selected.append(incidence); | 863 | if (incidence) selected.append(incidence); |
867 | 864 | ||
868 | return selected; | 865 | return selected; |
869 | } | 866 | } |
870 | 867 | ||
871 | DateList KOAgendaView::selectedDates() | 868 | DateList KOAgendaView::selectedDates() |
872 | { | 869 | { |
873 | DateList selected; | 870 | DateList selected; |
874 | QDate qd; | 871 | QDate qd; |
875 | 872 | ||
876 | qd = mAgenda->selectedIncidenceDate(); | 873 | qd = mAgenda->selectedIncidenceDate(); |
877 | if (qd.isValid()) selected.append(qd); | 874 | if (qd.isValid()) selected.append(qd); |
878 | 875 | ||
879 | qd = mAllDayAgenda->selectedIncidenceDate(); | 876 | qd = mAllDayAgenda->selectedIncidenceDate(); |
880 | if (qd.isValid()) selected.append(qd); | 877 | if (qd.isValid()) selected.append(qd); |
881 | 878 | ||
882 | return selected; | 879 | return selected; |
883 | } | 880 | } |
884 | 881 | ||
885 | 882 | ||
886 | void KOAgendaView::updateView() | 883 | void KOAgendaView::updateView() |
887 | { | 884 | { |
888 | if ( mBlockUpdating ) | 885 | if ( mBlockUpdating ) |
889 | return; | 886 | return; |
890 | // kdDebug() << "KOAgendaView::updateView()" << endl; | 887 | // kdDebug() << "KOAgendaView::updateView()" << endl; |
891 | fillAgenda(); | 888 | fillAgenda(); |
892 | 889 | ||
893 | } | 890 | } |
894 | 891 | ||
895 | 892 | ||
896 | /* | 893 | /* |
897 | Update configuration settings for the agenda view. This method is not | 894 | Update configuration settings for the agenda view. This method is not |
898 | complete. | 895 | complete. |
899 | */ | 896 | */ |
900 | void KOAgendaView::updateConfig() | 897 | void KOAgendaView::updateConfig() |
901 | { | 898 | { |
902 | if ( mBlockUpdating ) | 899 | if ( mBlockUpdating ) |
903 | return; | 900 | return; |
904 | if ( mAgenda->height() > 96 * KOPrefs::instance()->mHourSize ) { | 901 | if ( mAgenda->height() > 96 * KOPrefs::instance()->mHourSize ) { |
905 | int old = KOPrefs::instance()->mHourSize; | 902 | int old = KOPrefs::instance()->mHourSize; |
906 | KOPrefs::instance()->mHourSize = mAgenda->height()/96 +1; | 903 | KOPrefs::instance()->mHourSize = mAgenda->height()/96 +1; |
907 | qDebug("KOPrefs::instance()->mHourSize adjusted %d to %d ", old,KOPrefs::instance()->mHourSize ); | 904 | qDebug("KOPrefs::instance()->mHourSize adjusted %d to %d ", old,KOPrefs::instance()->mHourSize ); |
908 | } | 905 | } |
909 | 906 | ||
910 | 907 | ||
911 | // update config for children | 908 | // update config for children |
912 | mTimeLabels->updateConfig(); | 909 | mTimeLabels->updateConfig(); |
913 | mAgenda->storePosition(); | 910 | mAgenda->storePosition(); |
914 | mAgenda->updateConfig(); | 911 | mAgenda->updateConfig(); |
915 | mAllDayAgenda->updateConfig(); | 912 | mAllDayAgenda->updateConfig(); |
916 | // widget synchronization | 913 | // widget synchronization |
917 | //TODO: find a better way, maybe signal/slot | 914 | //TODO: find a better way, maybe signal/slot |
918 | mTimeLabels->positionChanged(); | 915 | mTimeLabels->positionChanged(); |
919 | 916 | ||
920 | // for some reason, this needs to be called explicitly | 917 | // for some reason, this needs to be called explicitly |
921 | mTimeLabels->repaint(); | 918 | mTimeLabels->repaint(); |
922 | 919 | ||
923 | mDummyAllDayLeft->setFixedWidth(mTimeLabels->width()); | 920 | mDummyAllDayLeft->setFixedWidth(mTimeLabels->width()); |
924 | 921 | ||
925 | // ToolTips displaying summary of events | 922 | // ToolTips displaying summary of events |
926 | KOAgendaItem::toolTipGroup()->setEnabled(KOPrefs::instance() | 923 | KOAgendaItem::toolTipGroup()->setEnabled(KOPrefs::instance() |
927 | ->mEnableToolTips); | 924 | ->mEnableToolTips); |
928 | 925 | ||
929 | //setHolidayMasks(); | 926 | //setHolidayMasks(); |
930 | 927 | ||
931 | //createDayLabels(); called by via updateView(); | 928 | //createDayLabels(); called by via updateView(); |
932 | mEventIndicatorTop->setXOffset(mTimeLabels->width() + mAgenda->frameWidth()); | 929 | mEventIndicatorTop->setXOffset(mTimeLabels->width() + mAgenda->frameWidth()); |
933 | updateView(); | 930 | updateView(); |
934 | mAgenda->restorePosition(); | 931 | mAgenda->restorePosition(); |
935 | } | 932 | } |
936 | 933 | ||
937 | 934 | ||
938 | void KOAgendaView::updateEventDates(KOAgendaItem *item, int type) | 935 | void KOAgendaView::updateEventDates(KOAgendaItem *item, int type) |
939 | { | 936 | { |
940 | // kdDebug() << "KOAgendaView::updateEventDates(): " << item->text() << endl; | 937 | // kdDebug() << "KOAgendaView::updateEventDates(): " << item->text() << endl; |
941 | //qDebug("KOAgendaView::updateEventDates "); | 938 | //qDebug("KOAgendaView::updateEventDates "); |
942 | QDateTime startDt,endDt; | 939 | QDateTime startDt,endDt; |
943 | QDate startDate; | 940 | QDate startDate; |
944 | int lenInSecs; | 941 | int lenInSecs; |
945 | // if ( type == KOAgenda::RESIZETOP ) | 942 | // if ( type == KOAgenda::RESIZETOP ) |
946 | // qDebug("RESIZETOP "); | 943 | // qDebug("RESIZETOP "); |
947 | // if ( type == KOAgenda::RESIZEBOTTOM ) | 944 | // if ( type == KOAgenda::RESIZEBOTTOM ) |
948 | // qDebug("RESIZEBOTTOM "); | 945 | // qDebug("RESIZEBOTTOM "); |
949 | // if ( type == KOAgenda::MOVE ) | 946 | // if ( type == KOAgenda::MOVE ) |
950 | // qDebug("MOVE "); | 947 | // qDebug("MOVE "); |
951 | if ( item->incidence()->type() == "Event" ) { | 948 | if ( item->incidence()->type() == "Event" ) { |
952 | startDt =item->incidence()->dtStart(); | 949 | startDt =item->incidence()->dtStart(); |
953 | endDt = item->incidence()->dtEnd(); | 950 | endDt = item->incidence()->dtEnd(); |
954 | lenInSecs = startDt.secsTo( endDt ); | 951 | lenInSecs = startDt.secsTo( endDt ); |
955 | } | 952 | } |
956 | 953 | ||
957 | // emit incidenceItemChanged( item->incidence(), KOGlobals::EVENTEDITED ); | 954 | // emit incidenceItemChanged( item->incidence(), KOGlobals::EVENTEDITED ); |
958 | 955 | ||
959 | if ( item->incidence()->type()=="Todo" && item->mLastMoveXPos > 0 ) { | 956 | if ( item->incidence()->type()=="Todo" && item->mLastMoveXPos > 0 ) { |
960 | startDate = mSelectedDates[item->mLastMoveXPos]; | 957 | startDate = mSelectedDates[item->mLastMoveXPos]; |
961 | } else { | 958 | } else { |
962 | if (item->cellX() < 0) { | 959 | if (item->cellX() < 0) { |
963 | startDate = (mSelectedDates.first()).addDays(item->cellX()); | 960 | startDate = (mSelectedDates.first()).addDays(item->cellX()); |
964 | } else { | 961 | } else { |
965 | startDate = mSelectedDates[item->cellX()]; | 962 | startDate = mSelectedDates[item->cellX()]; |
966 | } | 963 | } |
967 | } | 964 | } |
968 | startDt.setDate(startDate); | 965 | startDt.setDate(startDate); |
969 | 966 | ||
970 | if (item->incidence()->doesFloat()) { | 967 | if (item->incidence()->doesFloat()) { |
971 | endDt.setDate(startDate.addDays(item->cellWidth() - 1)); | 968 | endDt.setDate(startDate.addDays(item->cellWidth() - 1)); |
972 | } else { | 969 | } else { |
973 | if ( type == KOAgenda::RESIZETOP || type == KOAgenda::MOVE ) | 970 | if ( type == KOAgenda::RESIZETOP || type == KOAgenda::MOVE ) |
974 | startDt.setTime(mAgenda->gyToTime(item->cellYTop())); | 971 | startDt.setTime(mAgenda->gyToTime(item->cellYTop())); |
975 | if ( item->incidence()->type() == "Event" ) { | 972 | if ( item->incidence()->type() == "Event" ) { |
976 | if ( type == KOAgenda::MOVE ) { | 973 | if ( type == KOAgenda::MOVE ) { |
977 | endDt = startDt.addSecs(lenInSecs); | 974 | endDt = startDt.addSecs(lenInSecs); |
978 | 975 | ||
979 | } else if ( type == KOAgenda::RESIZEBOTTOM ) { | 976 | } else if ( type == KOAgenda::RESIZEBOTTOM ) { |
980 | if (item->lastMultiItem()) { | 977 | if (item->lastMultiItem()) { |
981 | endDt.setTime(mAgenda->gyToTime(item->lastMultiItem()->cellYBottom()+1)); | 978 | endDt.setTime(mAgenda->gyToTime(item->lastMultiItem()->cellYBottom()+1)); |
982 | endDt.setDate(startDate. | 979 | endDt.setDate(startDate. |
983 | addDays(item->lastMultiItem()->cellX() - item->cellX())); | 980 | addDays(item->lastMultiItem()->cellX() - item->cellX())); |
984 | } else { | 981 | } else { |
985 | endDt.setTime(mAgenda->gyToTime(item->cellYBottom()+1)); | 982 | endDt.setTime(mAgenda->gyToTime(item->cellYBottom()+1)); |
986 | endDt.setDate(startDate); | 983 | endDt.setDate(startDate); |
987 | } | 984 | } |
988 | } | 985 | } |
989 | } else { | 986 | } else { |
990 | // todo | 987 | // todo |
991 | if (item->lastMultiItem()) { | 988 | if (item->lastMultiItem()) { |
992 | endDt.setTime(mAgenda->gyToTime(item->lastMultiItem()->cellYBottom()+1)); | 989 | endDt.setTime(mAgenda->gyToTime(item->lastMultiItem()->cellYBottom()+1)); |
993 | endDt.setDate(startDate. | 990 | endDt.setDate(startDate. |
994 | addDays(item->lastMultiItem()->cellX() - item->cellX())); | 991 | addDays(item->lastMultiItem()->cellX() - item->cellX())); |
995 | } else { | 992 | } else { |
996 | //qDebug("tem->cellYBottom() %d",item->cellYBottom() ); | 993 | //qDebug("tem->cellYBottom() %d",item->cellYBottom() ); |
997 | if ( item->cellYBottom() > 0 ) | 994 | if ( item->cellYBottom() > 0 ) |
998 | endDt.setTime(mAgenda->gyToTime(item->cellYBottom()+1)); | 995 | endDt.setTime(mAgenda->gyToTime(item->cellYBottom()+1)); |
999 | else | 996 | else |
1000 | endDt.setTime((static_cast<Todo*>(item->incidence()))->dtDue().time()); | 997 | endDt.setTime((static_cast<Todo*>(item->incidence()))->dtDue().time()); |
1001 | endDt.setDate(startDate); | 998 | endDt.setDate(startDate); |
1002 | } | 999 | } |
1003 | } | 1000 | } |
1004 | } | 1001 | } |
1005 | if ( item->incidence()->type() == "Event" ) { | 1002 | if ( item->incidence()->type() == "Event" ) { |
1006 | item->incidence()->setDtStart(startDt); | 1003 | item->incidence()->setDtStart(startDt); |
1007 | (static_cast<Event*>(item->incidence()))->setDtEnd(endDt); | 1004 | (static_cast<Event*>(item->incidence()))->setDtEnd(endDt); |
1008 | } else if ( item->incidence()->type() == "Todo" ) { | 1005 | } else if ( item->incidence()->type() == "Todo" ) { |
1009 | Todo* to = static_cast<Todo*>(item->incidence()); | 1006 | Todo* to = static_cast<Todo*>(item->incidence()); |
1010 | 1007 | ||
1011 | to->setDtDue(endDt); | 1008 | to->setDtDue(endDt); |
1012 | if ( to->hasStartDate() ) { | 1009 | if ( to->hasStartDate() ) { |
1013 | if (to->dtStart() >= to->dtDue() ) | 1010 | if (to->dtStart() >= to->dtDue() ) |
1014 | to->setDtStart(to->dtDue().addDays( -2 )); | 1011 | to->setDtStart(to->dtDue().addDays( -2 )); |
1015 | } | 1012 | } |
1016 | 1013 | ||
1017 | } | 1014 | } |
1018 | //qDebug("KOAgendaView::updateEventDates stsart %s end %s ", startDt.toString().latin1(), endDt.toString().latin1() ); | 1015 | //qDebug("KOAgendaView::updateEventDates stsart %s end %s ", startDt.toString().latin1(), endDt.toString().latin1() ); |
1019 | item->incidence()->setRevision(item->incidence()->revision()+1); | 1016 | item->incidence()->setRevision(item->incidence()->revision()+1); |
1020 | item->setItemDate(startDt.date()); | 1017 | item->setItemDate(startDt.date()); |
1021 | //item->updateItem(); | 1018 | //item->updateItem(); |
1022 | if ( item->incidence()->type() == "Todo" ) { | 1019 | if ( item->incidence()->type() == "Todo" ) { |
1023 | emit todoMoved((Todo*)item->incidence(), KOGlobals::EVENTEDITED ); | 1020 | emit todoMoved((Todo*)item->incidence(), KOGlobals::EVENTEDITED ); |
1024 | 1021 | ||
1025 | } | 1022 | } |
1026 | else | 1023 | else |
1027 | emit incidenceChanged(item->incidence(), KOGlobals::EVENTEDITED); | 1024 | emit incidenceChanged(item->incidence(), KOGlobals::EVENTEDITED); |
1028 | item->updateItem(); | 1025 | item->updateItem(); |
1029 | } | 1026 | } |
1030 | 1027 | ||
1031 | void KOAgendaView::showDates( const QDate &start, const QDate &end ) | 1028 | void KOAgendaView::showDates( const QDate &start, const QDate &end ) |
1032 | { | 1029 | { |
1033 | // kdDebug() << "KOAgendaView::selectDates" << endl; | 1030 | // kdDebug() << "KOAgendaView::selectDates" << endl; |
1034 | 1031 | ||
1035 | mSelectedDates.clear(); | 1032 | mSelectedDates.clear(); |
1036 | // qDebug("KOAgendaView::showDates "); | 1033 | // qDebug("KOAgendaView::showDates "); |
1037 | QDate d = start; | 1034 | QDate d = start; |
1038 | while (d <= end) { | 1035 | while (d <= end) { |
1039 | mSelectedDates.append(d); | 1036 | mSelectedDates.append(d); |
1040 | d = d.addDays( 1 ); | 1037 | d = d.addDays( 1 ); |
1041 | } | 1038 | } |
1042 | 1039 | ||
1043 | // and update the view | 1040 | // and update the view |
1044 | fillAgenda(); | 1041 | fillAgenda(); |
1045 | } | 1042 | } |
1046 | 1043 | ||
1047 | 1044 | ||
1048 | void KOAgendaView::showEvents(QPtrList<Event>) | 1045 | void KOAgendaView::showEvents(QPtrList<Event>) |
1049 | { | 1046 | { |
1050 | kdDebug() << "KOAgendaView::showEvents() is not yet implemented" << endl; | 1047 | kdDebug() << "KOAgendaView::showEvents() is not yet implemented" << endl; |
1051 | } | 1048 | } |
1052 | 1049 | ||
1053 | void KOAgendaView::changeEventDisplay(Event *, int) | 1050 | void KOAgendaView::changeEventDisplay(Event *, int) |
1054 | { | 1051 | { |
1055 | // qDebug("KOAgendaView::changeEventDisplay "); | 1052 | // qDebug("KOAgendaView::changeEventDisplay "); |
1056 | // kdDebug() << "KOAgendaView::changeEventDisplay" << endl; | 1053 | // kdDebug() << "KOAgendaView::changeEventDisplay" << endl; |
1057 | // this should be re-written to be MUCH smarter. Right now we | 1054 | // this should be re-written to be MUCH smarter. Right now we |
1058 | // are just playing dumb. | 1055 | // are just playing dumb. |
1059 | fillAgenda(); | 1056 | fillAgenda(); |
1060 | } | 1057 | } |
1061 | 1058 | ||
1062 | void KOAgendaView::fillAgenda(const QDate &) | 1059 | void KOAgendaView::fillAgenda(const QDate &) |
1063 | { | 1060 | { |
1064 | // qDebug("KOAgendaView::fillAgenda "); | 1061 | // qDebug("KOAgendaView::fillAgenda "); |
1065 | fillAgenda(); | 1062 | fillAgenda(); |
1066 | } | 1063 | } |
1067 | 1064 | ||
1068 | void KOAgendaView::fillAgenda() | 1065 | void KOAgendaView::fillAgenda() |
1069 | { | 1066 | { |
1070 | if ( globalFlagBlockStartup ) | 1067 | if ( globalFlagBlockStartup ) |
1071 | return; | 1068 | return; |
1072 | if ( globalFlagBlockAgenda == 1 ) | 1069 | if ( globalFlagBlockAgenda == 1 ) |
1073 | return; | 1070 | return; |
1074 | //if ( globalFlagBlockAgenda == 2 ) | 1071 | //if ( globalFlagBlockAgenda == 2 ) |
1075 | //globalFlagBlockAgenda = 0; | 1072 | //globalFlagBlockAgenda = 0; |
1076 | // globalFlagBlockPainting = false; | 1073 | // globalFlagBlockPainting = false; |
1077 | if ( globalFlagBlockAgenda == 0 ) | 1074 | if ( globalFlagBlockAgenda == 0 ) |
1078 | globalFlagBlockAgenda = 1; | 1075 | globalFlagBlockAgenda = 1; |
1079 | // clearView(); | 1076 | // clearView(); |
1080 | //qDebug("fillAgenda()++++ "); | 1077 | //qDebug("fillAgenda()++++ "); |
1081 | globalFlagBlockAgendaItemPaint = 1; | 1078 | globalFlagBlockAgendaItemPaint = 1; |
1082 | 1079 | ||
1083 | mAllDayAgenda->changeColumns(mSelectedDates.count()); | 1080 | mAllDayAgenda->changeColumns(mSelectedDates.count()); |
1084 | mAgenda->changeColumns(mSelectedDates.count()); | 1081 | mAgenda->changeColumns(mSelectedDates.count()); |
1085 | qApp->processEvents(); | 1082 | qApp->processEvents(); |
1086 | mEventIndicatorTop->changeColumns(mSelectedDates.count()); | 1083 | mEventIndicatorTop->changeColumns(mSelectedDates.count()); |
1087 | mEventIndicatorBottom->changeColumns(mSelectedDates.count()); | 1084 | mEventIndicatorBottom->changeColumns(mSelectedDates.count()); |
1088 | setHolidayMasks(); | 1085 | setHolidayMasks(); |
1089 | 1086 | ||
1090 | //mAgenda->hideUnused(); | 1087 | //mAgenda->hideUnused(); |
1091 | //mAllDayAgenda->hideUnused(); | 1088 | //mAllDayAgenda->hideUnused(); |
1092 | 1089 | ||
1093 | // mAgenda->blockNextRepaint( false ); | 1090 | // mAgenda->blockNextRepaint( false ); |
1094 | // mAgenda->viewport()->repaint(); | 1091 | // mAgenda->viewport()->repaint(); |
1095 | // mAgenda->blockNextRepaint( true ); | 1092 | // mAgenda->blockNextRepaint( true ); |
1096 | mMinY.resize(mSelectedDates.count()); | 1093 | mMinY.resize(mSelectedDates.count()); |
1097 | mMaxY.resize(mSelectedDates.count()); | 1094 | mMaxY.resize(mSelectedDates.count()); |
1098 | 1095 | ||
1099 | QPtrList<Event> dayEvents; | 1096 | QPtrList<Event> dayEvents; |
1100 | 1097 | ||
1101 | // ToDo items shall be displayed for the day they are due, but only showed today if they are already overdue. | 1098 | // ToDo items shall be displayed for the day they are due, but only showed today if they are already overdue. |
1102 | // Therefore, gtodoset all of them. | 1099 | // Therefore, gtodoset all of them. |
1103 | QPtrList<Todo> todos = calendar()->todos(); | 1100 | QPtrList<Todo> todos = calendar()->todos(); |
1104 | 1101 | ||
1105 | mAgenda->setDateList(mSelectedDates); | 1102 | mAgenda->setDateList(mSelectedDates); |
1106 | 1103 | ||
1107 | QDate today = QDate::currentDate(); | 1104 | QDate today = QDate::currentDate(); |
1108 | 1105 | ||
1109 | DateList::ConstIterator dit; | 1106 | DateList::ConstIterator dit; |
1110 | int curCol = 0; | 1107 | int curCol = 0; |
1111 | for( dit = mSelectedDates.begin(); dit != mSelectedDates.end(); ++dit ) { | 1108 | for( dit = mSelectedDates.begin(); dit != mSelectedDates.end(); ++dit ) { |
1112 | QDate currentDate = *dit; | 1109 | QDate currentDate = *dit; |
1113 | // kdDebug() << "KOAgendaView::fillAgenda(): " << currentDate.toString() | 1110 | // kdDebug() << "KOAgendaView::fillAgenda(): " << currentDate.toString() |
1114 | // << endl; | 1111 | // << endl; |
1115 | 1112 | ||
1116 | dayEvents = calendar()->events(currentDate,true); | 1113 | dayEvents = calendar()->events(currentDate,true); |
1117 | 1114 | ||
1118 | // Default values, which can never be reached | 1115 | // Default values, which can never be reached |
1119 | mMinY[curCol] = mAgenda->timeToY(QTime(23,59)) + 1; | 1116 | mMinY[curCol] = mAgenda->timeToY(QTime(23,59)) + 1; |
1120 | mMaxY[curCol] = mAgenda->timeToY(QTime(0,0)) - 1; | 1117 | mMaxY[curCol] = mAgenda->timeToY(QTime(0,0)) - 1; |
1121 | 1118 | ||
1122 | unsigned int numEvent; | 1119 | unsigned int numEvent; |
1123 | for(numEvent=0;numEvent<dayEvents.count();++numEvent) { | 1120 | for(numEvent=0;numEvent<dayEvents.count();++numEvent) { |
1124 | Event *event = dayEvents.at(numEvent); | 1121 | Event *event = dayEvents.at(numEvent); |
1125 | if ( !KOPrefs::instance()->mShowSyncEvents && event->uid().left(2) == QString("la") ) | 1122 | if ( !KOPrefs::instance()->mShowSyncEvents && event->uid().left(2) == QString("la") ) |
1126 | if ( event->uid().left(15) == QString("last-syncEvent-") ) | 1123 | if ( event->uid().left(15) == QString("last-syncEvent-") ) |
1127 | continue; | 1124 | continue; |
1128 | // kdDebug() << " Event: " << event->summary() << endl; | 1125 | // kdDebug() << " Event: " << event->summary() << endl; |
1129 | 1126 | ||
1130 | int beginX = currentDate.daysTo(event->dtStart().date()) + curCol; | 1127 | int beginX = currentDate.daysTo(event->dtStart().date()) + curCol; |
1131 | int endX = currentDate.daysTo(event->dtEnd().date()) + curCol; | 1128 | int endX = currentDate.daysTo(event->dtEnd().date()) + curCol; |
1132 | 1129 | ||
1133 | // kdDebug() << " beginX: " << beginX << " endX: " << endX << endl; | 1130 | // kdDebug() << " beginX: " << beginX << " endX: " << endX << endl; |
1134 | 1131 | ||
1135 | if (event->doesFloat()) { | 1132 | if (event->doesFloat()) { |
1136 | if (event->recurrence()->doesRecur()) { | 1133 | if (event->recurrence()->doesRecur()) { |
1137 | mAllDayAgenda->insertAllDayItem(event,currentDate,curCol,curCol); | 1134 | mAllDayAgenda->insertAllDayItem(event,currentDate,curCol,curCol); |
1138 | } else { | 1135 | } else { |
1139 | if (beginX <= 0 && curCol == 0) { | 1136 | if (beginX <= 0 && curCol == 0) { |
1140 | mAllDayAgenda->insertAllDayItem(event,currentDate,beginX,endX); | 1137 | mAllDayAgenda->insertAllDayItem(event,currentDate,beginX,endX); |
1141 | } else if (beginX == curCol) { | 1138 | } else if (beginX == curCol) { |
1142 | mAllDayAgenda->insertAllDayItem(event,currentDate,beginX,endX); | 1139 | mAllDayAgenda->insertAllDayItem(event,currentDate,beginX,endX); |
1143 | } | 1140 | } |
1144 | } | 1141 | } |
1145 | } else if (event->isMultiDay()) { | 1142 | } else if (event->isMultiDay()) { |
1146 | if ( event->doesRecur () ) { | 1143 | if ( event->doesRecur () ) { |
1147 | QDate dateit = currentDate; | 1144 | QDate dateit = currentDate; |
1148 | int count = 0; | 1145 | int count = 0; |
1149 | int max = event->dtStart().daysTo( event->dtEnd() ) +2; | 1146 | int max = event->dtStart().daysTo( event->dtEnd() ) +2; |
1150 | while (! event->recursOn( dateit ) && count <= max ) { | 1147 | while (! event->recursOn( dateit ) && count <= max ) { |
1151 | ++count; | 1148 | ++count; |
1152 | dateit = dateit.addDays( -1 ); | 1149 | dateit = dateit.addDays( -1 ); |
1153 | } | 1150 | } |
1154 | bool ok; | 1151 | bool ok; |
1155 | QDateTime nextOcstart = event->getNextOccurence( QDateTime(dateit) ,&ok ); | 1152 | QDateTime nextOcstart = event->getNextOccurence( QDateTime(dateit) ,&ok ); |
1156 | if ( ok ) | 1153 | if ( ok ) |
1157 | { | 1154 | { |
1158 | int secs = event->dtStart().secsTo( event->dtEnd() ); | 1155 | int secs = event->dtStart().secsTo( event->dtEnd() ); |
1159 | QDateTime nextOcend =nextOcstart.addSecs( secs ); ; | 1156 | QDateTime nextOcend =nextOcstart.addSecs( secs ); ; |
1160 | beginX = currentDate.daysTo(nextOcstart.date()) + curCol; | 1157 | beginX = currentDate.daysTo(nextOcstart.date()) + curCol; |
1161 | endX = currentDate.daysTo(nextOcend.date()) + curCol; | 1158 | endX = currentDate.daysTo(nextOcend.date()) + curCol; |
1162 | 1159 | ||
1163 | } | 1160 | } |
1164 | } | 1161 | } |
1165 | int startY = mAgenda->timeToY(event->dtStart().time()); | 1162 | int startY = mAgenda->timeToY(event->dtStart().time()); |
1166 | int endY = mAgenda->timeToY(event->dtEnd().time()) - 1; | 1163 | int endY = mAgenda->timeToY(event->dtEnd().time()) - 1; |
1167 | //qDebug("insert %d %d %d %d %d ",beginX,endX,startY,endY , curCol ); | 1164 | //qDebug("insert %d %d %d %d %d ",beginX,endX,startY,endY , curCol ); |
1168 | if ((beginX <= 0 && curCol == 0) || beginX == curCol) { | 1165 | if ((beginX <= 0 && curCol == 0) || beginX == curCol) { |
1169 | //qDebug("insert!!! "); | 1166 | //qDebug("insert!!! "); |
1170 | mAgenda->insertMultiItem(event,currentDate,beginX,endX,startY,endY); | 1167 | mAgenda->insertMultiItem(event,currentDate,beginX,endX,startY,endY); |
1171 | } | 1168 | } |
1172 | if (beginX == curCol) { | 1169 | if (beginX == curCol) { |
1173 | mMaxY[curCol] = mAgenda->timeToY(QTime(23,59)); | 1170 | mMaxY[curCol] = mAgenda->timeToY(QTime(23,59)); |
1174 | if (startY < mMinY[curCol]) mMinY[curCol] = startY; | 1171 | if (startY < mMinY[curCol]) mMinY[curCol] = startY; |
1175 | } else if (endX == curCol) { | 1172 | } else if (endX == curCol) { |
1176 | mMinY[curCol] = mAgenda->timeToY(QTime(0,0)); | 1173 | mMinY[curCol] = mAgenda->timeToY(QTime(0,0)); |
1177 | if (endY > mMaxY[curCol]) mMaxY[curCol] = endY; | 1174 | if (endY > mMaxY[curCol]) mMaxY[curCol] = endY; |
1178 | } else { | 1175 | } else { |
1179 | mMinY[curCol] = mAgenda->timeToY(QTime(0,0)); | 1176 | mMinY[curCol] = mAgenda->timeToY(QTime(0,0)); |
1180 | mMaxY[curCol] = mAgenda->timeToY(QTime(23,59)); | 1177 | mMaxY[curCol] = mAgenda->timeToY(QTime(23,59)); |
1181 | } | 1178 | } |
1182 | } else { | 1179 | } else { |
1183 | int startY = mAgenda->timeToY(event->dtStart().time()); | 1180 | int startY = mAgenda->timeToY(event->dtStart().time()); |
1184 | int endY = mAgenda->timeToY(event->dtEnd().time()) - 1; | 1181 | int endY = mAgenda->timeToY(event->dtEnd().time()) - 1; |
1185 | if (endY < startY) endY = startY; | 1182 | if (endY < startY) endY = startY; |
1186 | mAgenda->insertItem(event,currentDate,curCol,startY,endY); | 1183 | mAgenda->insertItem(event,currentDate,curCol,startY,endY); |
1187 | if (startY < mMinY[curCol]) mMinY[curCol] = startY; | 1184 | if (startY < mMinY[curCol]) mMinY[curCol] = startY; |
1188 | if (endY > mMaxY[curCol]) mMaxY[curCol] = endY; | 1185 | if (endY > mMaxY[curCol]) mMaxY[curCol] = endY; |
1189 | } | 1186 | } |
1190 | } | 1187 | } |
1191 | // ---------- [display Todos -------------- | 1188 | // ---------- [display Todos -------------- |
1192 | unsigned int numTodo; | 1189 | unsigned int numTodo; |
1193 | for (numTodo = 0; numTodo < todos.count(); ++numTodo) { | 1190 | for (numTodo = 0; numTodo < todos.count(); ++numTodo) { |
1194 | Todo *todo = todos.at(numTodo); | 1191 | Todo *todo = todos.at(numTodo); |
1195 | 1192 | ||
1196 | if ( ! todo->hasDueDate() && !todo->hasCompletedDate()) continue; // todo shall not be displayed if it has no date | 1193 | if ( ! todo->hasDueDate() && !todo->hasCompletedDate()) continue; // todo shall not be displayed if it has no date |
1197 | 1194 | ||
1198 | // ToDo items shall be displayed for the day they are due, but only showed today if they are already overdue. | 1195 | // ToDo items shall be displayed for the day they are due, but only showed today if they are already overdue. |
1199 | // Already completed items can be displayed on their original due date | 1196 | // Already completed items can be displayed on their original due date |
1200 | //if not KOPrefs::instance()->mShowTodoInAgenda, show overdue in agenda | 1197 | //if not KOPrefs::instance()->mShowTodoInAgenda, show overdue in agenda |
1201 | bool overdue = (!todo->isCompleted()) && (todo->dtDue() < today) && KOPrefs::instance()->mShowTodoInAgenda; | 1198 | bool overdue = (!todo->isCompleted()) && (todo->dtDue() < today) && KOPrefs::instance()->mShowTodoInAgenda; |
1202 | bool fillIn = false; | 1199 | bool fillIn = false; |
1203 | if ( todo->hasCompletedDate() && todo->completed().date() == currentDate ) | 1200 | if ( todo->hasCompletedDate() && todo->completed().date() == currentDate ) |
1204 | fillIn = true; | 1201 | fillIn = true; |
1205 | if ( ! fillIn && !todo->hasCompletedDate() ) | 1202 | if ( ! fillIn && !todo->hasCompletedDate() ) |
1206 | fillIn = ((todo->dtDue().date() == currentDate) && !overdue) || ((currentDate == today) && overdue); | 1203 | fillIn = ((todo->dtDue().date() == currentDate) && !overdue) || ((currentDate == today) && overdue); |
1207 | if ( fillIn ) { | 1204 | if ( fillIn ) { |
1208 | if ( (todo->doesFloat() || overdue ) && !todo->hasCompletedDate() ) { // Todo has no due-time set or is already overdue | 1205 | if ( (todo->doesFloat() || overdue ) && !todo->hasCompletedDate() ) { // Todo has no due-time set or is already overdue |
1209 | if ( KOPrefs::instance()->mShowTodoInAgenda ) | 1206 | if ( KOPrefs::instance()->mShowTodoInAgenda ) |
1210 | mAllDayAgenda->insertAllDayItem(todo, currentDate, curCol, curCol); | 1207 | mAllDayAgenda->insertAllDayItem(todo, currentDate, curCol, curCol); |
1211 | } | 1208 | } |
1212 | else { | 1209 | else { |
1213 | QDateTime dt; | 1210 | QDateTime dt; |
1214 | if ( todo->hasCompletedDate() ) | 1211 | if ( todo->hasCompletedDate() ) |
1215 | dt = todo->completed(); | 1212 | dt = todo->completed(); |
1216 | else | 1213 | else |
1217 | dt = todo->dtDue();; | 1214 | dt = todo->dtDue();; |
1218 | 1215 | ||
1219 | 1216 | ||
1220 | int endY = mAgenda->timeToY(dt.time()) - 1; | 1217 | int endY = mAgenda->timeToY(dt.time()) - 1; |
1221 | int hi = (18/KOPrefs::instance()->mHourSize); | 1218 | int hi = (18/KOPrefs::instance()->mHourSize); |
1222 | //qDebug("hei %d ",KOPrefs::instance()->mHourSize); | 1219 | //qDebug("hei %d ",KOPrefs::instance()->mHourSize); |
1223 | int startY = endY -hi; | 1220 | int startY = endY -hi; |
1224 | 1221 | ||
1225 | mAgenda->insertItem(todo,currentDate,curCol,startY,endY); | 1222 | mAgenda->insertItem(todo,currentDate,curCol,startY,endY); |
1226 | 1223 | ||
1227 | if (startY < mMinY[curCol]) mMinY[curCol] = startY; | 1224 | if (startY < mMinY[curCol]) mMinY[curCol] = startY; |
diff --git a/korganizer/mainwindow.cpp b/korganizer/mainwindow.cpp index 7a4275b..ca0d542 100644 --- a/korganizer/mainwindow.cpp +++ b/korganizer/mainwindow.cpp | |||
@@ -1342,770 +1342,774 @@ void MainWindow::keyBindings() | |||
1342 | i18n("<p><b>Dark yellow</b>: Event/todo with attendees.</p>\n") + | 1342 | i18n("<p><b>Dark yellow</b>: Event/todo with attendees.</p>\n") + |
1343 | i18n("<p><b>White</b>: Item readonly</p>\n"); | 1343 | i18n("<p><b>White</b>: Item readonly</p>\n"); |
1344 | displayText( text, cap); | 1344 | displayText( text, cap); |
1345 | } | 1345 | } |
1346 | void MainWindow::aboutAutoSaving() | 1346 | void MainWindow::aboutAutoSaving() |
1347 | { | 1347 | { |
1348 | QString text = i18n("After changing something, the data is\nautomatically saved to the file\n~/kdepim/apps/korganizer/mycalendar.ics\nafter (configurable) three minutes.\nFor safety reasons there is one autosaving\nafter 10 minutes (of idle time) again. The \ndata is saved automatically when closing KO/Pi\nYou can create a backup file \nwith: File - Save Calendar Backup\n"); | 1348 | QString text = i18n("After changing something, the data is\nautomatically saved to the file\n~/kdepim/apps/korganizer/mycalendar.ics\nafter (configurable) three minutes.\nFor safety reasons there is one autosaving\nafter 10 minutes (of idle time) again. The \ndata is saved automatically when closing KO/Pi\nYou can create a backup file \nwith: File - Save Calendar Backup\n"); |
1349 | 1349 | ||
1350 | KApplication::showText( i18n("Auto Saving in KOrganizer/Pi"), text); | 1350 | KApplication::showText( i18n("Auto Saving in KOrganizer/Pi"), text); |
1351 | 1351 | ||
1352 | } | 1352 | } |
1353 | void MainWindow::aboutKnownBugs() | 1353 | void MainWindow::aboutKnownBugs() |
1354 | { | 1354 | { |
1355 | QMessageBox* msg; | 1355 | QMessageBox* msg; |
1356 | msg = new QMessageBox( i18n("Known Problems in KOrganizer/Pi"), | 1356 | msg = new QMessageBox( i18n("Known Problems in KOrganizer/Pi"), |
1357 | i18n("1) Importing *.vcs or *.ics files from\nother applications may not work properly,\nif there are events with properties\nKO/Pi does not support.\n")+ | 1357 | i18n("1) Importing *.vcs or *.ics files from\nother applications may not work properly,\nif there are events with properties\nKO/Pi does not support.\n")+ |
1358 | i18n("2) Audio alarm daemon\nfor Zaurus is available!\nas an additional small application\n")+ | 1358 | i18n("2) Audio alarm daemon\nfor Zaurus is available!\nas an additional small application\n")+ |
1359 | i18n("\nPlease report unexpected behaviour to\nlutz@pi-sync.info\n") + | 1359 | i18n("\nPlease report unexpected behaviour to\nlutz@pi-sync.info\n") + |
1360 | i18n("\nor report them in the bugtracker on\n") + | 1360 | i18n("\nor report them in the bugtracker on\n") + |
1361 | i18n("\nhttp://sourceforge.net/projects/kdepimpi\n"), | 1361 | i18n("\nhttp://sourceforge.net/projects/kdepimpi\n"), |
1362 | QMessageBox::NoIcon, | 1362 | QMessageBox::NoIcon, |
1363 | QMessageBox::Ok, | 1363 | QMessageBox::Ok, |
1364 | QMessageBox::NoButton, | 1364 | QMessageBox::NoButton, |
1365 | QMessageBox::NoButton); | 1365 | QMessageBox::NoButton); |
1366 | msg->exec(); | 1366 | msg->exec(); |
1367 | delete msg; | 1367 | delete msg; |
1368 | 1368 | ||
1369 | } | 1369 | } |
1370 | 1370 | ||
1371 | QString MainWindow::defaultFileName() | 1371 | QString MainWindow::defaultFileName() |
1372 | { | 1372 | { |
1373 | return locateLocal( "data", "korganizer/mycalendar.ics" ); | 1373 | return locateLocal( "data", "korganizer/mycalendar.ics" ); |
1374 | } | 1374 | } |
1375 | QString MainWindow::syncFileName() | 1375 | QString MainWindow::syncFileName() |
1376 | { | 1376 | { |
1377 | #ifdef DESKTOP_VERSION | 1377 | #ifdef DESKTOP_VERSION |
1378 | return locateLocal( "tmp", "synccalendar.ics" ); | 1378 | return locateLocal( "tmp", "synccalendar.ics" ); |
1379 | #else | 1379 | #else |
1380 | return QString( "/tmp/synccalendar.ics" ); | 1380 | return QString( "/tmp/synccalendar.ics" ); |
1381 | #endif | 1381 | #endif |
1382 | } | 1382 | } |
1383 | void MainWindow::updateWeek(QDate seda) | 1383 | void MainWindow::updateWeek(QDate seda) |
1384 | { | 1384 | { |
1385 | int weekNum = 0; | 1385 | int weekNum = 0; |
1386 | QDate d = QDate ( seda.year(), 1,1); | 1386 | QDate d = QDate ( seda.year(), 1,1); |
1387 | seda = seda.addDays( 1-seda.dayOfWeek() );//we are on monday | 1387 | seda = seda.addDays( 1-seda.dayOfWeek() );//we are on monday |
1388 | if ( seda.addDays(6).year() != seda.year() ) { | 1388 | if ( seda.addDays(6).year() != seda.year() ) { |
1389 | if ( seda.year() != d.year() ) { | 1389 | if ( seda.year() != d.year() ) { |
1390 | if ( d.dayOfWeek() > 4 ) | 1390 | if ( d.dayOfWeek() > 4 ) |
1391 | d = QDate ( seda.year(), 1,1); | 1391 | d = QDate ( seda.year(), 1,1); |
1392 | else | 1392 | else |
1393 | weekNum = 1; | 1393 | weekNum = 1; |
1394 | } else { | 1394 | } else { |
1395 | QDate dd( seda.year()+1, 1,1); | 1395 | QDate dd( seda.year()+1, 1,1); |
1396 | if ( dd.dayOfWeek() <= 4 ) | 1396 | if ( dd.dayOfWeek() <= 4 ) |
1397 | weekNum = 1; | 1397 | weekNum = 1; |
1398 | } | 1398 | } |
1399 | } | 1399 | } |
1400 | if ( weekNum == 0 ){ | 1400 | if ( weekNum == 0 ){ |
1401 | int dow = d.dayOfWeek(); | 1401 | int dow = d.dayOfWeek(); |
1402 | if ( dow <= 4 ) | 1402 | if ( dow <= 4 ) |
1403 | d = d.addDays( 1-dow ); | 1403 | d = d.addDays( 1-dow ); |
1404 | else // 5,6,7 | 1404 | else // 5,6,7 |
1405 | d = d.addDays( 8-dow ); | 1405 | d = d.addDays( 8-dow ); |
1406 | // we have the first week of the year.we are on monday | 1406 | // we have the first week of the year.we are on monday |
1407 | weekNum = d.daysTo( seda ) / 7 +1; | 1407 | weekNum = d.daysTo( seda ) / 7 +1; |
1408 | } | 1408 | } |
1409 | 1409 | ||
1410 | mWeekPixmap.fill( mWeekBgColor ); | 1410 | mWeekPixmap.fill( mWeekBgColor ); |
1411 | QPainter p ( &mWeekPixmap ); | 1411 | QPainter p ( &mWeekPixmap ); |
1412 | p.setFont( mWeekFont ); | 1412 | p.setFont( mWeekFont ); |
1413 | p.drawText( 0,0,mWeekPixmap.width(), mWeekPixmap.height(),AlignCenter, QString::number( weekNum) ); | 1413 | p.drawText( 0,0,mWeekPixmap.width(), mWeekPixmap.height(),AlignCenter, QString::number( weekNum) ); |
1414 | p.end(); | 1414 | p.end(); |
1415 | QIconSet icon3 ( mWeekPixmap ); | 1415 | QIconSet icon3 ( mWeekPixmap ); |
1416 | mWeekAction->setIconSet ( icon3 ); | 1416 | mWeekAction->setIconSet ( icon3 ); |
1417 | 1417 | ||
1418 | } | 1418 | } |
1419 | void MainWindow::updateWeekNum(const DateList &selectedDates) | 1419 | void MainWindow::updateWeekNum(const DateList &selectedDates) |
1420 | { | 1420 | { |
1421 | updateWeek( selectedDates.first() ); | 1421 | updateWeek( selectedDates.first() ); |
1422 | } | 1422 | } |
1423 | void MainWindow::processIncidenceSelection( Incidence *incidence ) | 1423 | void MainWindow::processIncidenceSelection( Incidence *incidence ) |
1424 | { | 1424 | { |
1425 | 1425 | ||
1426 | if ( !incidence ) { | 1426 | if ( !incidence ) { |
1427 | enableIncidenceActions( false ); | 1427 | enableIncidenceActions( false ); |
1428 | 1428 | ||
1429 | mNewSubTodoAction->setEnabled( false ); | 1429 | mNewSubTodoAction->setEnabled( false ); |
1430 | setCaptionToDates(); | 1430 | setCaptionToDates(); |
1431 | return; | 1431 | return; |
1432 | 1432 | ||
1433 | } | 1433 | } |
1434 | 1434 | ||
1435 | //KGlobal::locale()->formatDateTime(nextA, true); | 1435 | //KGlobal::locale()->formatDateTime(nextA, true); |
1436 | QString startString = ""; | 1436 | QString startString = ""; |
1437 | if ( incidence->type() != "Todo" ) { | 1437 | if ( incidence->type() != "Todo" ) { |
1438 | if ( incidence->dtStart().date() < incidence->dtEnd().date() ) { | 1438 | if ( incidence->dtStart().date() < incidence->dtEnd().date() ) { |
1439 | if ( incidence->doesFloat() ) { | 1439 | if ( incidence->doesFloat() ) { |
1440 | startString += ": "+incidence->dtStartDateStr( true ); | 1440 | startString += ": "+incidence->dtStartDateStr( true ); |
1441 | startString += " --- "+((Event*)incidence)->dtEndDateStr( true ); | 1441 | startString += " --- "+((Event*)incidence)->dtEndDateStr( true ); |
1442 | 1442 | ||
1443 | } else { | 1443 | } else { |
1444 | startString = ": "+incidence->dtStartStr(true); | 1444 | startString = ": "+incidence->dtStartStr(true); |
1445 | startString += " --- "+((Event*)incidence)->dtEndStr(true); | 1445 | startString += " --- "+((Event*)incidence)->dtEndStr(true); |
1446 | 1446 | ||
1447 | } | 1447 | } |
1448 | 1448 | ||
1449 | } else { | 1449 | } else { |
1450 | if ( incidence->dtStart().time() != incidence->dtEnd().time() ) | 1450 | if ( incidence->dtStart().time() != incidence->dtEnd().time() ) |
1451 | startString = ": "+KGlobal::locale()->formatTime(incidence->dtStart().time())+ | 1451 | startString = ": "+KGlobal::locale()->formatTime(incidence->dtStart().time())+ |
1452 | "-"+KGlobal::locale()->formatTime(incidence->dtEnd().time()); | 1452 | "-"+KGlobal::locale()->formatTime(incidence->dtEnd().time()); |
1453 | if ( incidence->categories().contains( i18n("Birthday") ) || incidence->categories().contains( i18n("Anniversary") ) ) { | 1453 | if ( incidence->categories().contains( i18n("Birthday") ) || incidence->categories().contains( i18n("Anniversary") ) ) { |
1454 | bool ok; | 1454 | bool ok; |
1455 | QDateTime noc = incidence->getNextOccurence( mView->startDate().addDays(-1), &ok ); | 1455 | QDateTime noc = incidence->getNextOccurence( mView->startDate().addDays(-1), &ok ); |
1456 | if ( ok ) { | 1456 | if ( ok ) { |
1457 | int years = noc.date().year() - incidence->dtStart().date().year(); | 1457 | int years = noc.date().year() - incidence->dtStart().date().year(); |
1458 | startString += i18n(" (%1 y.)"). arg( years ); | 1458 | startString += i18n(" (%1 y.)"). arg( years ); |
1459 | } | 1459 | } |
1460 | } | 1460 | } |
1461 | else | 1461 | else |
1462 | startString +=" "+KGlobal::locale()->formatDate( incidence->dtStart().date(), true); | 1462 | startString +=" "+KGlobal::locale()->formatDate( incidence->dtStart().date(), true); |
1463 | } | 1463 | } |
1464 | 1464 | ||
1465 | } | 1465 | } |
1466 | else | 1466 | else |
1467 | startString = i18n(": (Prio ") +QString::number( (( KCal::Todo*)incidence)->priority() ) +") "+QString::number( (( KCal::Todo*)incidence)->percentComplete() ) +i18n("\% completed"); | 1467 | startString = i18n(": (Prio ") +QString::number( (( KCal::Todo*)incidence)->priority() ) +") "+QString::number( (( KCal::Todo*)incidence)->percentComplete() ) +i18n("\% completed"); |
1468 | if ( !incidence->location().isEmpty() ) | 1468 | if ( !incidence->location().isEmpty() ) |
1469 | startString += " (" +incidence->location()+")"; | 1469 | startString += " (" +incidence->location()+")"; |
1470 | setCaption( incidence->summary()+startString); | 1470 | setCaption( incidence->summary()+startString); |
1471 | 1471 | ||
1472 | enableIncidenceActions( true ); | 1472 | enableIncidenceActions( true ); |
1473 | 1473 | ||
1474 | if ( incidence->type() == "Event" ) { | 1474 | if ( incidence->type() == "Event" ) { |
1475 | mShowAction->setText( i18n("Show Event...") ); | 1475 | mShowAction->setText( i18n("Show Event...") ); |
1476 | mEditAction->setText( i18n("Edit Event...") ); | 1476 | mEditAction->setText( i18n("Edit Event...") ); |
1477 | mDeleteAction->setText( i18n("Delete Event...") ); | 1477 | mDeleteAction->setText( i18n("Delete Event...") ); |
1478 | 1478 | ||
1479 | mNewSubTodoAction->setEnabled( false ); | 1479 | mNewSubTodoAction->setEnabled( false ); |
1480 | } else if ( incidence->type() == "Todo" ) { | 1480 | } else if ( incidence->type() == "Todo" ) { |
1481 | mShowAction->setText( i18n("Show Todo...") ); | 1481 | mShowAction->setText( i18n("Show Todo...") ); |
1482 | mEditAction->setText( i18n("Edit Todo...") ); | 1482 | mEditAction->setText( i18n("Edit Todo...") ); |
1483 | mDeleteAction->setText( i18n("Delete Todo...") ); | 1483 | mDeleteAction->setText( i18n("Delete Todo...") ); |
1484 | 1484 | ||
1485 | mNewSubTodoAction->setEnabled( true ); | 1485 | mNewSubTodoAction->setEnabled( true ); |
1486 | } else { | 1486 | } else { |
1487 | mShowAction->setText( i18n("Show...") ); | 1487 | mShowAction->setText( i18n("Show...") ); |
1488 | mShowAction->setText( i18n("Edit...") ); | 1488 | mShowAction->setText( i18n("Edit...") ); |
1489 | mShowAction->setText( i18n("Delete...") ); | 1489 | mShowAction->setText( i18n("Delete...") ); |
1490 | 1490 | ||
1491 | mNewSubTodoAction->setEnabled( false ); | 1491 | mNewSubTodoAction->setEnabled( false ); |
1492 | } | 1492 | } |
1493 | } | 1493 | } |
1494 | 1494 | ||
1495 | void MainWindow::enableIncidenceActions( bool enabled ) | 1495 | void MainWindow::enableIncidenceActions( bool enabled ) |
1496 | { | 1496 | { |
1497 | mShowAction->setEnabled( enabled ); | 1497 | mShowAction->setEnabled( enabled ); |
1498 | mEditAction->setEnabled( enabled ); | 1498 | mEditAction->setEnabled( enabled ); |
1499 | mDeleteAction->setEnabled( enabled ); | 1499 | mDeleteAction->setEnabled( enabled ); |
1500 | 1500 | ||
1501 | mCloneAction->setEnabled( enabled ); | 1501 | mCloneAction->setEnabled( enabled ); |
1502 | mMoveAction->setEnabled( enabled ); | 1502 | mMoveAction->setEnabled( enabled ); |
1503 | mBeamAction->setEnabled( enabled ); | 1503 | mBeamAction->setEnabled( enabled ); |
1504 | mCancelAction->setEnabled( enabled ); | 1504 | mCancelAction->setEnabled( enabled ); |
1505 | } | 1505 | } |
1506 | 1506 | ||
1507 | void MainWindow::importOL() | 1507 | void MainWindow::importOL() |
1508 | { | 1508 | { |
1509 | #ifdef _OL_IMPORT_ | 1509 | #ifdef _OL_IMPORT_ |
1510 | KOImportOLdialog *id = new KOImportOLdialog("Import from OL - select folder!" , mView->calendar(),this ); | 1510 | KOImportOLdialog *id = new KOImportOLdialog("Import from OL - select folder!" , mView->calendar(),this ); |
1511 | id->exec(); | 1511 | id->exec(); |
1512 | delete id; | 1512 | delete id; |
1513 | mView->updateView(); | 1513 | mView->updateView(); |
1514 | #endif | 1514 | #endif |
1515 | } | 1515 | } |
1516 | void MainWindow::importBday() | 1516 | void MainWindow::importBday() |
1517 | { | 1517 | { |
1518 | int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"), | 1518 | int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"), |
1519 | i18n("When importing birthdays twice\nduplicated events will be ignored,\nif the event has not been\nchanged in KO/Pi!\n"), | 1519 | i18n("When importing birthdays twice\nduplicated events will be ignored,\nif the event has not been\nchanged in KO/Pi!\n"), |
1520 | i18n("Import!"), i18n("Cancel"), 0, | 1520 | i18n("Import!"), i18n("Cancel"), 0, |
1521 | 0, 1 ); | 1521 | 0, 1 ); |
1522 | if ( result == 0 ) { | 1522 | if ( result == 0 ) { |
1523 | mView->importBday(); | 1523 | mView->importBday(); |
1524 | 1524 | ||
1525 | } | 1525 | } |
1526 | 1526 | ||
1527 | 1527 | ||
1528 | } | 1528 | } |
1529 | void MainWindow::importQtopia() | 1529 | void MainWindow::importQtopia() |
1530 | { | 1530 | { |
1531 | //#ifndef DESKTOP_VERSION | 1531 | //#ifndef DESKTOP_VERSION |
1532 | QString mess = i18n("When importing a calendar twice\nduplicated events will be ignored!\nYou can create a backup file with\nFile - Save Calendar Backup\nto revert importing"); | 1532 | QString mess = i18n("When importing a calendar twice\nduplicated events will be ignored!\nYou can create a backup file with\nFile - Save Calendar Backup\nto revert importing"); |
1533 | #ifdef DESKTOP_VERSION | 1533 | #ifdef DESKTOP_VERSION |
1534 | mess += i18n("The content of the following files will be\nimported (located in your home directory (hd)):\n(hd)/Applications/datebook/datebook.xml\n(hd)/Applications/todolist/todolist.xml\nThe following category file will be used:\n(hd)/Settings/Categories.xml"); | 1534 | mess += i18n("The content of the following files will be\nimported (located in your home directory (hd)):\n(hd)/Applications/datebook/datebook.xml\n(hd)/Applications/todolist/todolist.xml\nThe following category file will be used:\n(hd)/Settings/Categories.xml"); |
1535 | #endif | 1535 | #endif |
1536 | int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),mess, | 1536 | int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),mess, |
1537 | i18n("Import!"), i18n("Cancel"), 0, | 1537 | i18n("Import!"), i18n("Cancel"), 0, |
1538 | 0, 1 ); | 1538 | 0, 1 ); |
1539 | if ( result == 0 ) { | 1539 | if ( result == 0 ) { |
1540 | #ifndef DESKTOP_VERSION | 1540 | #ifndef DESKTOP_VERSION |
1541 | QString datebook = Global::applicationFileName( "datebook", "datebook.xml"); | 1541 | QString datebook = Global::applicationFileName( "datebook", "datebook.xml"); |
1542 | QString todolist = Global::applicationFileName( "todolist", "todolist.xml"); | 1542 | QString todolist = Global::applicationFileName( "todolist", "todolist.xml"); |
1543 | QString categories = QString( getenv( "HOME" ) ) + "/Settings/Categories.xml"; | 1543 | QString categories = QString( getenv( "HOME" ) ) + "/Settings/Categories.xml"; |
1544 | #else | 1544 | #else |
1545 | QString datebook = QDir::homeDirPath()+ "/Applications/datebook/datebook.xml"; | 1545 | QString datebook = QDir::homeDirPath()+ "/Applications/datebook/datebook.xml"; |
1546 | QString todolist = QDir::homeDirPath()+ "/Applications/todolist/todolist.xml"; | 1546 | QString todolist = QDir::homeDirPath()+ "/Applications/todolist/todolist.xml"; |
1547 | QString categories = QDir::homeDirPath()+ "/Settings/Categories.xml"; | 1547 | QString categories = QDir::homeDirPath()+ "/Settings/Categories.xml"; |
1548 | #endif | 1548 | #endif |
1549 | mView->importQtopia( categories, datebook, todolist ); | 1549 | mView->importQtopia( categories, datebook, todolist ); |
1550 | } | 1550 | } |
1551 | #if 0 | 1551 | #if 0 |
1552 | int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"), | 1552 | int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"), |
1553 | i18n("Not supported \non desktop!\n"), | 1553 | i18n("Not supported \non desktop!\n"), |
1554 | i18n("Ok"), i18n("Cancel"), 0, | 1554 | i18n("Ok"), i18n("Cancel"), 0, |
1555 | 0, 1 ); | 1555 | 0, 1 ); |
1556 | 1556 | ||
1557 | #endif | 1557 | #endif |
1558 | } | 1558 | } |
1559 | 1559 | ||
1560 | void MainWindow::saveOnClose() | 1560 | void MainWindow::saveOnClose() |
1561 | { | 1561 | { |
1562 | KOPrefs *p = KOPrefs::instance(); | 1562 | KOPrefs *p = KOPrefs::instance(); |
1563 | p->mToolBarHor = ( iconToolBar->orientation () == Qt:: Horizontal ); | 1563 | p->mToolBarHor = ( iconToolBar->orientation () == Qt:: Horizontal ); |
1564 | p->mToolBarUp = iconToolBar->x() > width()/2 || | 1564 | p->mToolBarUp = iconToolBar->x() > width()/2 || |
1565 | iconToolBar->y() > height()/2; | 1565 | iconToolBar->y() > height()/2; |
1566 | mView->writeSettings(); | 1566 | mView->writeSettings(); |
1567 | if ( mCalendarModifiedFlag || mView->checkFileChanged( defaultFileName())) | 1567 | if ( mCalendarModifiedFlag || mView->checkFileChanged( defaultFileName())) |
1568 | save(); | 1568 | save(); |
1569 | } | 1569 | } |
1570 | void MainWindow::slotModifiedChanged( bool changed ) | 1570 | void MainWindow::slotModifiedChanged( bool changed ) |
1571 | { | 1571 | { |
1572 | if ( mBlockAtStartup ) | 1572 | if ( mBlockAtStartup ) |
1573 | return; | 1573 | return; |
1574 | 1574 | ||
1575 | int msec; | 1575 | int msec; |
1576 | // we store the changes after 1 minute, | 1576 | // we store the changes after 1 minute, |
1577 | // and for safety reasons after 10 minutes again | 1577 | // and for safety reasons after 10 minutes again |
1578 | if ( !mSyncManager->blockSave() ) | 1578 | if ( !mSyncManager->blockSave() ) |
1579 | msec = (1000 * 60*KOPrefs::instance()->mAutoSaveInterval) +1000; | 1579 | msec = (1000 * 60*KOPrefs::instance()->mAutoSaveInterval) +1000; |
1580 | else | 1580 | else |
1581 | msec = 1000 * 600; | 1581 | msec = 1000 * 600; |
1582 | mSaveTimer.start( msec, true ); // 1 minute | 1582 | mSaveTimer.start( msec, true ); // 1 minute |
1583 | qDebug("KO: Saving File in %d secs!", msec/1000); | 1583 | qDebug("KO: Saving File in %d secs!", msec/1000); |
1584 | mCalendarModifiedFlag = true; | 1584 | mCalendarModifiedFlag = true; |
1585 | } | 1585 | } |
1586 | void MainWindow::saveStopTimer() | 1586 | void MainWindow::saveStopTimer() |
1587 | { | 1587 | { |
1588 | mSaveTimer.stop(); | 1588 | mSaveTimer.stop(); |
1589 | if (mSaveTimer.isActive() ) | 1589 | if (mSaveTimer.isActive() ) |
1590 | qDebug("ti active "); | 1590 | qDebug("ti active "); |
1591 | else | 1591 | else |
1592 | qDebug("KO: Save timer stopped"); | 1592 | qDebug("KO: Save timer stopped"); |
1593 | } | 1593 | } |
1594 | void MainWindow::save() | 1594 | void MainWindow::save() |
1595 | { | 1595 | { |
1596 | if ( !mCalendarModifiedFlag ) { | 1596 | if ( !mCalendarModifiedFlag ) { |
1597 | qDebug("KO: Calendar not modified. Nothing saved."); | 1597 | qDebug("KO: Calendar not modified. Nothing saved."); |
1598 | return; | 1598 | return; |
1599 | } | 1599 | } |
1600 | if ( mSyncManager->blockSave() ) | 1600 | if ( mSyncManager->blockSave() ) |
1601 | return; | 1601 | return; |
1602 | mSyncManager->setBlockSave(true); | 1602 | mSyncManager->setBlockSave(true); |
1603 | if ( mView->checkFileVersion( defaultFileName()) ) { | 1603 | if ( mView->checkFileVersion( defaultFileName()) ) { |
1604 | QTime neededSaveTime = QDateTime::currentDateTime().time(); | 1604 | QTime neededSaveTime = QDateTime::currentDateTime().time(); |
1605 | setCaption(i18n("KO/Pi:Saving Data to File ..." )); | 1605 | setCaption(i18n("KO/Pi:Saving Data to File ..." )); |
1606 | qDebug("KO: Start saving data to file!"); | 1606 | qDebug("KO: Start saving data to file!"); |
1607 | mView->saveCalendar( defaultFileName() ); | 1607 | mView->saveCalendar( defaultFileName() ); |
1608 | mCalendarModifiedFlag = false; | 1608 | mCalendarModifiedFlag = false; |
1609 | int msNeeded = neededSaveTime.msecsTo( QDateTime::currentDateTime().time() ); | 1609 | int msNeeded = neededSaveTime.msecsTo( QDateTime::currentDateTime().time() ); |
1610 | qDebug("KO: Needed %d ms for saving.",msNeeded ); | 1610 | qDebug("KO: Needed %d ms for saving.",msNeeded ); |
1611 | QString savemes; | 1611 | QString savemes; |
1612 | savemes.sprintf(i18n("KO/Pi:File Saved. Needed %d sec, %d ms"),(msNeeded/1000)%100,msNeeded%1000 ); | 1612 | savemes.sprintf(i18n("KO/Pi:File Saved. Needed %d sec, %d ms"),(msNeeded/1000)%100,msNeeded%1000 ); |
1613 | setCaption(savemes); | 1613 | setCaption(savemes); |
1614 | } else | 1614 | } else |
1615 | setCaption(i18n("Saving cancelled!")); | 1615 | setCaption(i18n("Saving cancelled!")); |
1616 | mSyncManager->setBlockSave( false ); | 1616 | mSyncManager->setBlockSave( false ); |
1617 | } | 1617 | } |
1618 | 1618 | ||
1619 | void MainWindow::keyReleaseEvent ( QKeyEvent * e) | 1619 | void MainWindow::keyReleaseEvent ( QKeyEvent * e) |
1620 | { | 1620 | { |
1621 | if ( !e->isAutoRepeat() ) { | 1621 | if ( !e->isAutoRepeat() ) { |
1622 | mFlagKeyPressed = false; | 1622 | mFlagKeyPressed = false; |
1623 | } | 1623 | } |
1624 | } | 1624 | } |
1625 | void MainWindow::keyPressEvent ( QKeyEvent * e ) | 1625 | void MainWindow::keyPressEvent ( QKeyEvent * e ) |
1626 | { | 1626 | { |
1627 | qApp->processEvents(); | 1627 | qApp->processEvents(); |
1628 | if ( e->isAutoRepeat() && !mFlagKeyPressed ) { | 1628 | if ( e->isAutoRepeat() && !mFlagKeyPressed ) { |
1629 | e->ignore(); | 1629 | e->ignore(); |
1630 | // qDebug(" ignore %d",e->isAutoRepeat() ); | 1630 | // qDebug(" ignore %d",e->isAutoRepeat() ); |
1631 | return; | 1631 | return; |
1632 | } | 1632 | } |
1633 | if (! e->isAutoRepeat() ) | 1633 | if (! e->isAutoRepeat() ) |
1634 | mFlagKeyPressed = true; | 1634 | mFlagKeyPressed = true; |
1635 | KOPrefs *p = KOPrefs::instance(); | 1635 | KOPrefs *p = KOPrefs::instance(); |
1636 | bool showSelectedDates = false; | 1636 | bool showSelectedDates = false; |
1637 | int size; | 1637 | int size; |
1638 | int pro = 0; | 1638 | int pro = 0; |
1639 | //qDebug("MainWindow::keyPressEvent "); | 1639 | //qDebug("MainWindow::keyPressEvent "); |
1640 | switch ( e->key() ) { | 1640 | switch ( e->key() ) { |
1641 | case Qt::Key_Right: | 1641 | case Qt::Key_Right: |
1642 | if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton) | 1642 | if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton) |
1643 | mView->goNextMonth(); | 1643 | mView->goNextMonth(); |
1644 | else | 1644 | else |
1645 | mView->goNext(); | 1645 | mView->goNext(); |
1646 | showSelectedDates = true; | 1646 | showSelectedDates = true; |
1647 | break; | 1647 | break; |
1648 | case Qt::Key_Left: | 1648 | case Qt::Key_Left: |
1649 | if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) | 1649 | if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) |
1650 | mView->goPreviousMonth(); | 1650 | mView->goPreviousMonth(); |
1651 | else | 1651 | else |
1652 | mView->goPrevious(); | 1652 | mView->goPrevious(); |
1653 | showSelectedDates = true; | 1653 | showSelectedDates = true; |
1654 | break; | 1654 | break; |
1655 | case Qt::Key_Down: | 1655 | case Qt::Key_Down: |
1656 | mView->viewManager()->agendaView()->scrollOneHourDown(); | 1656 | mView->viewManager()->agendaView()->scrollOneHourDown(); |
1657 | break; | 1657 | break; |
1658 | case Qt::Key_Up: | 1658 | case Qt::Key_Up: |
1659 | mView->viewManager()->agendaView()->scrollOneHourUp(); | 1659 | mView->viewManager()->agendaView()->scrollOneHourUp(); |
1660 | break; | 1660 | break; |
1661 | case Qt::Key_K: | 1661 | case Qt::Key_K: |
1662 | mView->viewManager()->showMonthViewWeek(); | 1662 | mView->viewManager()->showMonthViewWeek(); |
1663 | break; | 1663 | break; |
1664 | case Qt::Key_I: | 1664 | case Qt::Key_I: |
1665 | mView->showIncidence(); | 1665 | mView->showIncidence(); |
1666 | break; | 1666 | break; |
1667 | case Qt::Key_Delete: | 1667 | case Qt::Key_Delete: |
1668 | case Qt::Key_Backspace: | 1668 | case Qt::Key_Backspace: |
1669 | mView->deleteIncidence(); | 1669 | mView->deleteIncidence(); |
1670 | break; | 1670 | break; |
1671 | case Qt::Key_D: | 1671 | case Qt::Key_D: |
1672 | mView->viewManager()->showDayView(); | 1672 | mView->viewManager()->showDayView(); |
1673 | showSelectedDates = true; | 1673 | showSelectedDates = true; |
1674 | break; | 1674 | break; |
1675 | case Qt::Key_O: | 1675 | case Qt::Key_O: |
1676 | mView->toggleFilerEnabled( ); | 1676 | mView->toggleFilerEnabled( ); |
1677 | break; | 1677 | break; |
1678 | case Qt::Key_0: | 1678 | case Qt::Key_0: |
1679 | case Qt::Key_1: | 1679 | case Qt::Key_1: |
1680 | case Qt::Key_2: | 1680 | case Qt::Key_2: |
1681 | case Qt::Key_3: | 1681 | case Qt::Key_3: |
1682 | case Qt::Key_4: | 1682 | case Qt::Key_4: |
1683 | case Qt::Key_5: | 1683 | case Qt::Key_5: |
1684 | case Qt::Key_6: | 1684 | case Qt::Key_6: |
1685 | case Qt::Key_7: | 1685 | case Qt::Key_7: |
1686 | case Qt::Key_8: | 1686 | case Qt::Key_8: |
1687 | case Qt::Key_9: | 1687 | case Qt::Key_9: |
1688 | pro = e->key()-48; | 1688 | pro = e->key()-48; |
1689 | if ( pro == 0 ) | 1689 | if ( pro == 0 ) |
1690 | pro = 10; | 1690 | pro = 10; |
1691 | if ( e->state() == Qt::ControlButton) | 1691 | if ( e->state() == Qt::ControlButton) |
1692 | pro += 10; | 1692 | pro += 10; |
1693 | break; | 1693 | break; |
1694 | case Qt::Key_M: | 1694 | case Qt::Key_M: |
1695 | mView->viewManager()->showMonthView(); | 1695 | mView->viewManager()->showMonthView(); |
1696 | showSelectedDates = true; | 1696 | showSelectedDates = true; |
1697 | break; | 1697 | break; |
1698 | case Qt::Key_Insert: | 1698 | case Qt::Key_Insert: |
1699 | mView->newEvent(); | 1699 | mView->newEvent(); |
1700 | break; | 1700 | break; |
1701 | case Qt::Key_S : | 1701 | case Qt::Key_S : |
1702 | if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton) | 1702 | if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton) |
1703 | mView->newSubTodo(); | 1703 | mView->newSubTodo(); |
1704 | else | 1704 | else |
1705 | mView->dialogManager()->showSearchDialog(); | 1705 | mView->dialogManager()->showSearchDialog(); |
1706 | break; | 1706 | break; |
1707 | case Qt::Key_Y : | 1707 | case Qt::Key_Y : |
1708 | case Qt::Key_Z : | 1708 | case Qt::Key_Z : |
1709 | mView->viewManager()->showWorkWeekView(); | 1709 | mView->viewManager()->showWorkWeekView(); |
1710 | showSelectedDates = true; | 1710 | showSelectedDates = true; |
1711 | break; | 1711 | break; |
1712 | case Qt::Key_U : | 1712 | case Qt::Key_U : |
1713 | mView->viewManager()->showWeekView(); | 1713 | mView->viewManager()->showWeekView(); |
1714 | showSelectedDates = true; | 1714 | showSelectedDates = true; |
1715 | break; | 1715 | break; |
1716 | case Qt::Key_H : | 1716 | case Qt::Key_H : |
1717 | keyBindings(); | 1717 | keyBindings(); |
1718 | break; | 1718 | break; |
1719 | case Qt::Key_W: | 1719 | case Qt::Key_W: |
1720 | mView->viewManager()->showWhatsNextView(); | 1720 | mView->viewManager()->showWhatsNextView(); |
1721 | break; | 1721 | break; |
1722 | case Qt::Key_L: | 1722 | case Qt::Key_L: |
1723 | mView->viewManager()->showListView(); | 1723 | mView->viewManager()->showListView(); |
1724 | break; | 1724 | break; |
1725 | case Qt::Key_N: | 1725 | case Qt::Key_N: |
1726 | mView->viewManager()->showNextXView(); | 1726 | if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton) |
1727 | showSelectedDates = true; | 1727 | mView->viewManager()->showNextView(); |
1728 | else { | ||
1729 | mView->viewManager()->showNextXView(); | ||
1730 | showSelectedDates = true; | ||
1731 | } | ||
1728 | break; | 1732 | break; |
1729 | case Qt::Key_V: | 1733 | case Qt::Key_V: |
1730 | mView->viewManager()->showTodoView(); | 1734 | mView->viewManager()->showTodoView(); |
1731 | break; | 1735 | break; |
1732 | case Qt::Key_C: | 1736 | case Qt::Key_C: |
1733 | mView->viewManager()->agendaView()->setStartHour( QTime::currentTime ().hour() ); | 1737 | mView->viewManager()->agendaView()->setStartHour( QTime::currentTime ().hour() ); |
1734 | break; | 1738 | break; |
1735 | case Qt::Key_P: | 1739 | case Qt::Key_P: |
1736 | mView->showDatePicker( ); | 1740 | mView->showDatePicker( ); |
1737 | break; | 1741 | break; |
1738 | case Qt::Key_F: | 1742 | case Qt::Key_F: |
1739 | if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) | 1743 | if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) |
1740 | mView->editFilters(); | 1744 | mView->editFilters(); |
1741 | else | 1745 | else |
1742 | mView->toggleFilter(); | 1746 | mView->toggleFilter(); |
1743 | break; | 1747 | break; |
1744 | case Qt::Key_X: | 1748 | case Qt::Key_X: |
1745 | mView->toggleDateNavigatorWidget(); | 1749 | mView->toggleDateNavigatorWidget(); |
1746 | break; | 1750 | break; |
1747 | case Qt::Key_Space: | 1751 | case Qt::Key_Space: |
1748 | mView->toggleExpand(); | 1752 | mView->toggleExpand(); |
1749 | break; | 1753 | break; |
1750 | case Qt::Key_A: | 1754 | case Qt::Key_A: |
1751 | if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton ) | 1755 | if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton ) |
1752 | mView->showNextAlarms(); | 1756 | mView->showNextAlarms(); |
1753 | else | 1757 | else |
1754 | mView->toggleAllDaySize(); | 1758 | mView->toggleAllDaySize(); |
1755 | break; | 1759 | break; |
1756 | case Qt::Key_T: | 1760 | case Qt::Key_T: |
1757 | if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) | 1761 | if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) |
1758 | mView->newTodo(); | 1762 | mView->newTodo(); |
1759 | else { | 1763 | else { |
1760 | mView->goToday(); | 1764 | mView->goToday(); |
1761 | showSelectedDates = true; | 1765 | showSelectedDates = true; |
1762 | } | 1766 | } |
1763 | break; | 1767 | break; |
1764 | case Qt::Key_J: | 1768 | case Qt::Key_J: |
1765 | mView->viewManager()->showJournalView(); | 1769 | mView->viewManager()->showJournalView(); |
1766 | break; | 1770 | break; |
1767 | case Qt::Key_B: | 1771 | case Qt::Key_B: |
1768 | mView->editIncidenceDescription();; | 1772 | mView->editIncidenceDescription();; |
1769 | break; | 1773 | break; |
1770 | // case Qt::Key_Return: | 1774 | // case Qt::Key_Return: |
1771 | case Qt::Key_E: | 1775 | case Qt::Key_E: |
1772 | if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) | 1776 | if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) |
1773 | mView->newEvent(); | 1777 | mView->newEvent(); |
1774 | else | 1778 | else |
1775 | mView->editIncidence(); | 1779 | mView->editIncidence(); |
1776 | break; | 1780 | break; |
1777 | case Qt::Key_Plus: | 1781 | case Qt::Key_Plus: |
1778 | size = p->mHourSize +2; | 1782 | size = p->mHourSize +2; |
1779 | if ( size <= 22 ) | 1783 | if ( size <= 22 ) |
1780 | configureAgenda( size ); | 1784 | configureAgenda( size ); |
1781 | break; | 1785 | break; |
1782 | case Qt::Key_Minus: | 1786 | case Qt::Key_Minus: |
1783 | size = p->mHourSize - 2; | 1787 | size = p->mHourSize - 2; |
1784 | if ( size >= 4 ) | 1788 | if ( size >= 4 ) |
1785 | configureAgenda( size ); | 1789 | configureAgenda( size ); |
1786 | break; | 1790 | break; |
1787 | 1791 | ||
1788 | 1792 | ||
1789 | default: | 1793 | default: |
1790 | e->ignore(); | 1794 | e->ignore(); |
1791 | } | 1795 | } |
1792 | if ( pro > 0 ) { | 1796 | if ( pro > 0 ) { |
1793 | mView->selectFilter( pro-1 ); | 1797 | mView->selectFilter( pro-1 ); |
1794 | } | 1798 | } |
1795 | if ( showSelectedDates ) { | 1799 | if ( showSelectedDates ) { |
1796 | ;// setCaptionToDates(); | 1800 | ;// setCaptionToDates(); |
1797 | } | 1801 | } |
1798 | 1802 | ||
1799 | } | 1803 | } |
1800 | 1804 | ||
1801 | void MainWindow::fillFilterMenu() | 1805 | void MainWindow::fillFilterMenu() |
1802 | { | 1806 | { |
1803 | selectFilterMenu->clear(); | 1807 | selectFilterMenu->clear(); |
1804 | bool disable = false; | 1808 | bool disable = false; |
1805 | selectFilterMenu->insertItem(i18n ( "Edit Filters" ), 0 ); | 1809 | selectFilterMenu->insertItem(i18n ( "Edit Filters" ), 0 ); |
1806 | selectFilterMenu->insertSeparator(); | 1810 | selectFilterMenu->insertSeparator(); |
1807 | if ( mView->filterView()->filtersEnabled() ) { | 1811 | if ( mView->filterView()->filtersEnabled() ) { |
1808 | selectFilterMenu->insertItem(i18n ( "Turn filter off" ), 1 ); | 1812 | selectFilterMenu->insertItem(i18n ( "Turn filter off" ), 1 ); |
1809 | } | 1813 | } |
1810 | else { | 1814 | else { |
1811 | selectFilterMenu->insertItem(i18n ( "Turn filter on" ), 1 ); | 1815 | selectFilterMenu->insertItem(i18n ( "Turn filter on" ), 1 ); |
1812 | disable = true; | 1816 | disable = true; |
1813 | } | 1817 | } |
1814 | selectFilterMenu->insertSeparator(); | 1818 | selectFilterMenu->insertSeparator(); |
1815 | QPtrList<CalFilter> fili = mView->filters(); | 1819 | QPtrList<CalFilter> fili = mView->filters(); |
1816 | CalFilter *curfilter = mView->filterView()->selectedFilter(); | 1820 | CalFilter *curfilter = mView->filterView()->selectedFilter(); |
1817 | CalFilter *filter = fili.first(); | 1821 | CalFilter *filter = fili.first(); |
1818 | int iii = 2; | 1822 | int iii = 2; |
1819 | while(filter) { | 1823 | while(filter) { |
1820 | selectFilterMenu->insertItem( filter->name(), iii ); | 1824 | selectFilterMenu->insertItem( filter->name(), iii ); |
1821 | if ( filter == curfilter) | 1825 | if ( filter == curfilter) |
1822 | selectFilterMenu->setItemChecked( iii, true ); | 1826 | selectFilterMenu->setItemChecked( iii, true ); |
1823 | if ( disable ) | 1827 | if ( disable ) |
1824 | selectFilterMenu->setItemEnabled( iii, false ); | 1828 | selectFilterMenu->setItemEnabled( iii, false ); |
1825 | filter = fili.next(); | 1829 | filter = fili.next(); |
1826 | ++iii; | 1830 | ++iii; |
1827 | } | 1831 | } |
1828 | } | 1832 | } |
1829 | void MainWindow::selectFilter( int fil ) | 1833 | void MainWindow::selectFilter( int fil ) |
1830 | { | 1834 | { |
1831 | if ( fil == 0 ) { | 1835 | if ( fil == 0 ) { |
1832 | mView->editFilters( ); | 1836 | mView->editFilters( ); |
1833 | } else if ( fil == 1 ){ | 1837 | } else if ( fil == 1 ){ |
1834 | mView->toggleFilerEnabled( ); | 1838 | mView->toggleFilerEnabled( ); |
1835 | } else { | 1839 | } else { |
1836 | mView->selectFilter( fil-2 ); | 1840 | mView->selectFilter( fil-2 ); |
1837 | } | 1841 | } |
1838 | } | 1842 | } |
1839 | void MainWindow::configureToolBar( int item ) | 1843 | void MainWindow::configureToolBar( int item ) |
1840 | { | 1844 | { |
1841 | 1845 | ||
1842 | configureToolBarMenu->setItemChecked( item, !configureToolBarMenu-> isItemChecked ( item ) ); | 1846 | configureToolBarMenu->setItemChecked( item, !configureToolBarMenu-> isItemChecked ( item ) ); |
1843 | KOPrefs *p = KOPrefs::instance(); | 1847 | KOPrefs *p = KOPrefs::instance(); |
1844 | p-> mShowIconStretch= configureToolBarMenu->isItemChecked( 5 ); | 1848 | p-> mShowIconStretch= configureToolBarMenu->isItemChecked( 5 ); |
1845 | p-> mShowIconNewEvent= configureToolBarMenu->isItemChecked( 10 ); | 1849 | p-> mShowIconNewEvent= configureToolBarMenu->isItemChecked( 10 ); |
1846 | p->mShowIconNewTodo = configureToolBarMenu->isItemChecked( 20 ); | 1850 | p->mShowIconNewTodo = configureToolBarMenu->isItemChecked( 20 ); |
1847 | p-> mShowIconSearch= configureToolBarMenu->isItemChecked( 120 ); | 1851 | p-> mShowIconSearch= configureToolBarMenu->isItemChecked( 120 ); |
1848 | p-> mShowIconList= configureToolBarMenu->isItemChecked( 30 ); | 1852 | p-> mShowIconList= configureToolBarMenu->isItemChecked( 30 ); |
1849 | p-> mShowIconDay1= configureToolBarMenu->isItemChecked( 40 ); | 1853 | p-> mShowIconDay1= configureToolBarMenu->isItemChecked( 40 ); |
1850 | p-> mShowIconDay5= configureToolBarMenu->isItemChecked( 50 ); | 1854 | p-> mShowIconDay5= configureToolBarMenu->isItemChecked( 50 ); |
1851 | p-> mShowIconDay6= configureToolBarMenu->isItemChecked( 75 ); | 1855 | p-> mShowIconDay6= configureToolBarMenu->isItemChecked( 75 ); |
1852 | p-> mShowIconDay7= configureToolBarMenu->isItemChecked( 60 ); | 1856 | p-> mShowIconDay7= configureToolBarMenu->isItemChecked( 60 ); |
1853 | p-> mShowIconMonth= configureToolBarMenu->isItemChecked( 70 ); | 1857 | p-> mShowIconMonth= configureToolBarMenu->isItemChecked( 70 ); |
1854 | p-> mShowIconTodoview= configureToolBarMenu->isItemChecked( 80 ); | 1858 | p-> mShowIconTodoview= configureToolBarMenu->isItemChecked( 80 ); |
1855 | p-> mShowIconBackFast= configureToolBarMenu->isItemChecked( 200 ); | 1859 | p-> mShowIconBackFast= configureToolBarMenu->isItemChecked( 200 ); |
1856 | p-> mShowIconBack = configureToolBarMenu->isItemChecked( 210 ); | 1860 | p-> mShowIconBack = configureToolBarMenu->isItemChecked( 210 ); |
1857 | p-> mShowIconToday= configureToolBarMenu->isItemChecked( 130 ); | 1861 | p-> mShowIconToday= configureToolBarMenu->isItemChecked( 130 ); |
1858 | p-> mShowIconForward= configureToolBarMenu->isItemChecked( 220 ); | 1862 | p-> mShowIconForward= configureToolBarMenu->isItemChecked( 220 ); |
1859 | p-> mShowIconForwardFast= configureToolBarMenu->isItemChecked( 230 ); | 1863 | p-> mShowIconForwardFast= configureToolBarMenu->isItemChecked( 230 ); |
1860 | p-> mShowIconNextDays= configureToolBarMenu->isItemChecked( 100 ); | 1864 | p-> mShowIconNextDays= configureToolBarMenu->isItemChecked( 100 ); |
1861 | p-> mShowIconNext= configureToolBarMenu->isItemChecked( 110 ); | 1865 | p-> mShowIconNext= configureToolBarMenu->isItemChecked( 110 ); |
1862 | p-> mShowIconJournal= configureToolBarMenu->isItemChecked( 90 ); | 1866 | p-> mShowIconJournal= configureToolBarMenu->isItemChecked( 90 ); |
1863 | p-> mShowIconWhatsThis= configureToolBarMenu->isItemChecked( 300 ); | 1867 | p-> mShowIconWhatsThis= configureToolBarMenu->isItemChecked( 300 ); |
1864 | p-> mShowIconWeekNum= configureToolBarMenu->isItemChecked( 400 ); | 1868 | p-> mShowIconWeekNum= configureToolBarMenu->isItemChecked( 400 ); |
1865 | // initActions(); | 1869 | // initActions(); |
1866 | } | 1870 | } |
1867 | void MainWindow::setCaption ( const QString & c ) | 1871 | void MainWindow::setCaption ( const QString & c ) |
1868 | { | 1872 | { |
1869 | QString cap = c; | 1873 | QString cap = c; |
1870 | cap.replace( QRegExp("\n"), " " ); | 1874 | cap.replace( QRegExp("\n"), " " ); |
1871 | cap = cap.stripWhiteSpace(); | 1875 | cap = cap.stripWhiteSpace(); |
1872 | if ( cap.isEmpty() ) | 1876 | if ( cap.isEmpty() ) |
1873 | cap = "KO/Pi"; | 1877 | cap = "KO/Pi"; |
1874 | QWidget::setCaption( cap ); | 1878 | QWidget::setCaption( cap ); |
1875 | } | 1879 | } |
1876 | void MainWindow::setCaptionToDates() | 1880 | void MainWindow::setCaptionToDates() |
1877 | { | 1881 | { |
1878 | QString selDates; | 1882 | QString selDates; |
1879 | QDate date = mView->startDate(); | 1883 | QDate date = mView->startDate(); |
1880 | if ( ! date.isValid() ) { | 1884 | if ( ! date.isValid() ) { |
1881 | setCaption(""); | 1885 | setCaption(""); |
1882 | return; | 1886 | return; |
1883 | } | 1887 | } |
1884 | selDates = KGlobal::locale()->formatDate( date, true); | 1888 | selDates = KGlobal::locale()->formatDate( date, true); |
1885 | if (mView->startDate() < mView->endDate() ) | 1889 | if (mView->startDate() < mView->endDate() ) |
1886 | selDates += " - " + KGlobal::locale()->formatDate(mView->endDate(), true); | 1890 | selDates += " - " + KGlobal::locale()->formatDate(mView->endDate(), true); |
1887 | else { | 1891 | else { |
1888 | QString addString; | 1892 | QString addString; |
1889 | if ( date == QDateTime::currentDateTime().date() ) | 1893 | if ( date == QDateTime::currentDateTime().date() ) |
1890 | addString = i18n("Today"); | 1894 | addString = i18n("Today"); |
1891 | else if ( date == QDateTime::currentDateTime().date().addDays(1) ) | 1895 | else if ( date == QDateTime::currentDateTime().date().addDays(1) ) |
1892 | addString = i18n("Tomorrow"); | 1896 | addString = i18n("Tomorrow"); |
1893 | if ( !addString.isEmpty() ) | 1897 | if ( !addString.isEmpty() ) |
1894 | selDates = addString+", "+selDates ; | 1898 | selDates = addString+", "+selDates ; |
1895 | } | 1899 | } |
1896 | setCaption( i18n("Dates: ") + selDates ); | 1900 | setCaption( i18n("Dates: ") + selDates ); |
1897 | 1901 | ||
1898 | } | 1902 | } |
1899 | void MainWindow::showConfigureAgenda( ) | 1903 | void MainWindow::showConfigureAgenda( ) |
1900 | { | 1904 | { |
1901 | int iii; | 1905 | int iii; |
1902 | for ( iii = 1;iii<= 10 ;++iii ){ | 1906 | for ( iii = 1;iii<= 10 ;++iii ){ |
1903 | configureAgendaMenu->setItemChecked( (iii+1)*2, false ); | 1907 | configureAgendaMenu->setItemChecked( (iii+1)*2, false ); |
1904 | } | 1908 | } |
1905 | configureAgendaMenu->setItemChecked( (KOPrefs::instance()->mHourSize/2)*2, true ); | 1909 | configureAgendaMenu->setItemChecked( (KOPrefs::instance()->mHourSize/2)*2, true ); |
1906 | } | 1910 | } |
1907 | void MainWindow::configureAgenda( int item ) | 1911 | void MainWindow::configureAgenda( int item ) |
1908 | { | 1912 | { |
1909 | if ( KOPrefs::instance()->mHourSize == item ) | 1913 | if ( KOPrefs::instance()->mHourSize == item ) |
1910 | return; | 1914 | return; |
1911 | KOPrefs::instance()->mHourSize=item; | 1915 | KOPrefs::instance()->mHourSize=item; |
1912 | mView->viewManager()->agendaView()->updateConfig(); | 1916 | mView->viewManager()->agendaView()->updateConfig(); |
1913 | } | 1917 | } |
1914 | 1918 | ||
1915 | void MainWindow::saveCalendar() | 1919 | void MainWindow::saveCalendar() |
1916 | { | 1920 | { |
1917 | QString fn = KOPrefs::instance()->mLastSaveFile; | 1921 | QString fn = KOPrefs::instance()->mLastSaveFile; |
1918 | fn = KFileDialog::getSaveFileName( fn, i18n("Save backup filename"), this ); | 1922 | fn = KFileDialog::getSaveFileName( fn, i18n("Save backup filename"), this ); |
1919 | 1923 | ||
1920 | if ( fn == "" ) | 1924 | if ( fn == "" ) |
1921 | return; | 1925 | return; |
1922 | QFileInfo info; | 1926 | QFileInfo info; |
1923 | info.setFile( fn ); | 1927 | info.setFile( fn ); |
1924 | QString mes; | 1928 | QString mes; |
1925 | bool createbup = true; | 1929 | bool createbup = true; |
1926 | if ( info. exists() ) { | 1930 | if ( info. exists() ) { |
1927 | mes = i18n("Backup file\nalready exists!\nOld backup file from:\n%1\nOverwrite?\n").arg(KGlobal::locale()->formatDateTime(info.lastModified (), true, false )) ; | 1931 | mes = i18n("Backup file\nalready exists!\nOld backup file from:\n%1\nOverwrite?\n").arg(KGlobal::locale()->formatDateTime(info.lastModified (), true, false )) ; |
1928 | int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),mes, | 1932 | int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),mes, |
1929 | i18n("Overwrite!"), i18n("Cancel"), 0, | 1933 | i18n("Overwrite!"), i18n("Cancel"), 0, |
1930 | 0, 1 ); | 1934 | 0, 1 ); |
1931 | if ( result != 0 ) { | 1935 | if ( result != 0 ) { |
1932 | createbup = false; | 1936 | createbup = false; |
1933 | } | 1937 | } |
1934 | } | 1938 | } |
1935 | if ( createbup ) { | 1939 | if ( createbup ) { |
1936 | mView->saveCalendar( fn ); | 1940 | mView->saveCalendar( fn ); |
1937 | mes = i18n("KO/Pi:Saved %1").arg(fn); | 1941 | mes = i18n("KO/Pi:Saved %1").arg(fn); |
1938 | KOPrefs::instance()->mLastSaveFile = fn; | 1942 | KOPrefs::instance()->mLastSaveFile = fn; |
1939 | setCaption(mes); | 1943 | setCaption(mes); |
1940 | } | 1944 | } |
1941 | } | 1945 | } |
1942 | void MainWindow::loadCalendar() | 1946 | void MainWindow::loadCalendar() |
1943 | { | 1947 | { |
1944 | 1948 | ||
1945 | QString fn = KOPrefs::instance()->mLastLoadFile; | 1949 | QString fn = KOPrefs::instance()->mLastLoadFile; |
1946 | fn = KFileDialog::getOpenFileName( fn, i18n("Load backup filename"), this ); | 1950 | fn = KFileDialog::getOpenFileName( fn, i18n("Load backup filename"), this ); |
1947 | 1951 | ||
1948 | if ( fn == "" ) | 1952 | if ( fn == "" ) |
1949 | return; | 1953 | return; |
1950 | QFileInfo info; | 1954 | QFileInfo info; |
1951 | info.setFile( fn ); | 1955 | info.setFile( fn ); |
1952 | QString mess; | 1956 | QString mess; |
1953 | bool loadbup = true; | 1957 | bool loadbup = true; |
1954 | if ( info. exists() ) { | 1958 | if ( info. exists() ) { |
1955 | mess = i18n("Backup file from:\n%1\nLoading backup\nfile will delete\nyour current Data!\n").arg(KGlobal::locale()->formatDateTime(info.lastModified (), true, false )); | 1959 | mess = i18n("Backup file from:\n%1\nLoading backup\nfile will delete\nyour current Data!\n").arg(KGlobal::locale()->formatDateTime(info.lastModified (), true, false )); |
1956 | int result = QMessageBox::warning( this, "KO/Pi: Warning!", | 1960 | int result = QMessageBox::warning( this, "KO/Pi: Warning!", |
1957 | mess, | 1961 | mess, |
1958 | i18n("Load!"), i18n("Cancel"), 0, | 1962 | i18n("Load!"), i18n("Cancel"), 0, |
1959 | 0, 1 ); | 1963 | 0, 1 ); |
1960 | if ( result != 0 ) { | 1964 | if ( result != 0 ) { |
1961 | loadbup = false; | 1965 | loadbup = false; |
1962 | } | 1966 | } |
1963 | } else { | 1967 | } else { |
1964 | QMessageBox::warning( this, i18n("KO/Pi: Warning!"), | 1968 | QMessageBox::warning( this, i18n("KO/Pi: Warning!"), |
1965 | i18n("Backup file\ndoes not exist!\nNothing loaded!"), 0, 0, | 1969 | i18n("Backup file\ndoes not exist!\nNothing loaded!"), 0, 0, |
1966 | 0, 1 ); | 1970 | 0, 1 ); |
1967 | 1971 | ||
1968 | return; | 1972 | return; |
1969 | } | 1973 | } |
1970 | if ( loadbup ) { | 1974 | if ( loadbup ) { |
1971 | mView->openCalendar( fn ); | 1975 | mView->openCalendar( fn ); |
1972 | KOPrefs::instance()->mLastLoadFile = fn; | 1976 | KOPrefs::instance()->mLastLoadFile = fn; |
1973 | mess = i18n("KO/Pi:Loaded %1").arg(fn) ; | 1977 | mess = i18n("KO/Pi:Loaded %1").arg(fn) ; |
1974 | setCaption(mess); | 1978 | setCaption(mess); |
1975 | } | 1979 | } |
1976 | 1980 | ||
1977 | } | 1981 | } |
1978 | void MainWindow::quickImportIcal() | 1982 | void MainWindow::quickImportIcal() |
1979 | { | 1983 | { |
1980 | importFile( KOPrefs::instance()->mLastImportFile, false ); | 1984 | importFile( KOPrefs::instance()->mLastImportFile, false ); |
1981 | } | 1985 | } |
1982 | void MainWindow::importFile( QString fn, bool quick ) | 1986 | void MainWindow::importFile( QString fn, bool quick ) |
1983 | { | 1987 | { |
1984 | QFileInfo info; | 1988 | QFileInfo info; |
1985 | info.setFile( fn ); | 1989 | info.setFile( fn ); |
1986 | QString mess; | 1990 | QString mess; |
1987 | bool loadbup = true; | 1991 | bool loadbup = true; |
1988 | if ( !info. exists() ) { | 1992 | if ( !info. exists() ) { |
1989 | mess = i18n("Import file \n...%1\ndoes not exist!\nNothing imported!\n").arg(fn.right( 30)); | 1993 | mess = i18n("Import file \n...%1\ndoes not exist!\nNothing imported!\n").arg(fn.right( 30)); |
1990 | int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"), | 1994 | int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"), |
1991 | mess ); | 1995 | mess ); |
1992 | return; | 1996 | return; |
1993 | } | 1997 | } |
1994 | int result = 0; | 1998 | int result = 0; |
1995 | if ( !quick ) { | 1999 | if ( !quick ) { |
1996 | mess = i18n( "Import file \n...%1\nfrom:\n%2\nDuplicated entries\nwill not be imported!\n").arg(fn.right( 25)).arg(KGlobal::locale()->formatDateTime(info.lastModified (), true, false )); | 2000 | mess = i18n( "Import file \n...%1\nfrom:\n%2\nDuplicated entries\nwill not be imported!\n").arg(fn.right( 25)).arg(KGlobal::locale()->formatDateTime(info.lastModified (), true, false )); |
1997 | result = QMessageBox::warning( this, "KO/Pi: Warning!", | 2001 | result = QMessageBox::warning( this, "KO/Pi: Warning!", |
1998 | mess, | 2002 | mess, |
1999 | "Import", "Cancel", 0, | 2003 | "Import", "Cancel", 0, |
2000 | 0, 1 ); | 2004 | 0, 1 ); |
2001 | } | 2005 | } |
2002 | if ( result == 0 ) { | 2006 | if ( result == 0 ) { |
2003 | if ( mView->openCalendar( fn, true )) { | 2007 | if ( mView->openCalendar( fn, true )) { |
2004 | KOPrefs::instance()->mLastImportFile = fn; | 2008 | KOPrefs::instance()->mLastImportFile = fn; |
2005 | setCaption(i18n("Imported file successfully")); | 2009 | setCaption(i18n("Imported file successfully")); |
2006 | } else { | 2010 | } else { |
2007 | setCaption(i18n("Error importing file")); | 2011 | setCaption(i18n("Error importing file")); |
2008 | } | 2012 | } |
2009 | } | 2013 | } |
2010 | } | 2014 | } |
2011 | 2015 | ||
2012 | void MainWindow::importIcal() | 2016 | void MainWindow::importIcal() |
2013 | { | 2017 | { |
2014 | 2018 | ||
2015 | QString fn =KOPrefs::instance()->mLastImportFile; | 2019 | QString fn =KOPrefs::instance()->mLastImportFile; |
2016 | 2020 | ||
2017 | fn =KFileDialog:: getOpenFileName( fn, i18n("Import filename(*.ics/*.vcs)"), this ); | 2021 | fn =KFileDialog:: getOpenFileName( fn, i18n("Import filename(*.ics/*.vcs)"), this ); |
2018 | if ( fn == "" ) | 2022 | if ( fn == "" ) |
2019 | return; | 2023 | return; |
2020 | importFile( fn, true ); | 2024 | importFile( fn, true ); |
2021 | 2025 | ||
2022 | } | 2026 | } |
2023 | 2027 | ||
2024 | void MainWindow::exportVCalendar() | 2028 | void MainWindow::exportVCalendar() |
2025 | { | 2029 | { |
2026 | QString fn = KOPrefs::instance()->mLastVcalFile; | 2030 | QString fn = KOPrefs::instance()->mLastVcalFile; |
2027 | fn = KFileDialog::getSaveFileName( fn, i18n("Export vcal filename(*.vcs)"), this ); | 2031 | fn = KFileDialog::getSaveFileName( fn, i18n("Export vcal filename(*.vcs)"), this ); |
2028 | if ( fn == "" ) | 2032 | if ( fn == "" ) |
2029 | return; | 2033 | return; |
2030 | QFileInfo info; | 2034 | QFileInfo info; |
2031 | info.setFile( fn ); | 2035 | info.setFile( fn ); |
2032 | QString mes; | 2036 | QString mes; |
2033 | bool createbup = true; | 2037 | bool createbup = true; |
2034 | if ( info. exists() ) { | 2038 | if ( info. exists() ) { |
2035 | mes = i18n("Save file\nalready exists!\nOld save file from:\n%1\nOverwrite?\n").arg (KGlobal::locale()->formatDateTime(info.lastModified (), true, false ) ); | 2039 | mes = i18n("Save file\nalready exists!\nOld save file from:\n%1\nOverwrite?\n").arg (KGlobal::locale()->formatDateTime(info.lastModified (), true, false ) ); |
2036 | int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),mes, | 2040 | int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),mes, |
2037 | i18n("Overwrite!"), i18n("Cancel"), 0, | 2041 | i18n("Overwrite!"), i18n("Cancel"), 0, |
2038 | 0, 1 ); | 2042 | 0, 1 ); |
2039 | if ( result != 0 ) { | 2043 | if ( result != 0 ) { |
2040 | createbup = false; | 2044 | createbup = false; |
2041 | } | 2045 | } |
2042 | } | 2046 | } |
2043 | if ( createbup ) { | 2047 | if ( createbup ) { |
2044 | if ( mView->exportVCalendar( fn ) ) { | 2048 | if ( mView->exportVCalendar( fn ) ) { |
2045 | KOPrefs::instance()->mLastVcalFile = fn; | 2049 | KOPrefs::instance()->mLastVcalFile = fn; |
2046 | if ( fn.length() > 20 ) | 2050 | if ( fn.length() > 20 ) |
2047 | mes = i18n("KO/Pi:Exported to ...%1").arg(fn.right(20)) ; | 2051 | mes = i18n("KO/Pi:Exported to ...%1").arg(fn.right(20)) ; |
2048 | else | 2052 | else |
2049 | mes = i18n("KO/Pi:Exported to %1").arg(fn ); | 2053 | mes = i18n("KO/Pi:Exported to %1").arg(fn ); |
2050 | setCaption(mes); | 2054 | setCaption(mes); |
2051 | } | 2055 | } |
2052 | } | 2056 | } |
2053 | 2057 | ||
2054 | } | 2058 | } |
2055 | QString MainWindow::sentSyncFile() | 2059 | QString MainWindow::sentSyncFile() |
2056 | { | 2060 | { |
2057 | #ifdef DESKTOP_VERSION | 2061 | #ifdef DESKTOP_VERSION |
2058 | return locateLocal( "tmp", "copysynccal.ics" ); | 2062 | return locateLocal( "tmp", "copysynccal.ics" ); |
2059 | #else | 2063 | #else |
2060 | return QString( "/tmp/copysynccal.ics" ); | 2064 | return QString( "/tmp/copysynccal.ics" ); |
2061 | #endif | 2065 | #endif |
2062 | } | 2066 | } |
2063 | 2067 | ||
2064 | void MainWindow::syncFileRequest() | 2068 | void MainWindow::syncFileRequest() |
2065 | { | 2069 | { |
2066 | if ( KOPrefs::instance()->mPassiveSyncWithDesktop ) { | 2070 | if ( KOPrefs::instance()->mPassiveSyncWithDesktop ) { |
2067 | mSyncManager->slotSyncMenu( 999 ); | 2071 | mSyncManager->slotSyncMenu( 999 ); |
2068 | } | 2072 | } |
2069 | 2073 | ||
2070 | setCaption(i18n("Saving Data to temp file ..." )); | 2074 | setCaption(i18n("Saving Data to temp file ..." )); |
2071 | mView->saveCalendar( sentSyncFile() ); | 2075 | mView->saveCalendar( sentSyncFile() ); |
2072 | setCaption(i18n("Data saved to temp file!" )); | 2076 | setCaption(i18n("Data saved to temp file!" )); |
2073 | 2077 | ||
2074 | } | 2078 | } |
2075 | void MainWindow::getFile( bool success ) | 2079 | void MainWindow::getFile( bool success ) |
2076 | { | 2080 | { |
2077 | if ( ! success ) { | 2081 | if ( ! success ) { |
2078 | setCaption( i18n("Error receiving file. Nothing changed!") ); | 2082 | setCaption( i18n("Error receiving file. Nothing changed!") ); |
2079 | return; | 2083 | return; |
2080 | } | 2084 | } |
2081 | mView->openCalendar( sentSyncFile() ); | 2085 | mView->openCalendar( sentSyncFile() ); |
2082 | if ( KOPrefs::instance()->mPassiveSyncWithDesktop ) { | 2086 | if ( KOPrefs::instance()->mPassiveSyncWithDesktop ) { |
2083 | mSyncManager->slotSyncMenu( 999 ); | 2087 | mSyncManager->slotSyncMenu( 999 ); |
2084 | } | 2088 | } |
2085 | setCaption( i18n("Pi-Sync successful!") ); | 2089 | setCaption( i18n("Pi-Sync successful!") ); |
2086 | } | 2090 | } |
2087 | 2091 | ||
2088 | void MainWindow::printSel( ) | 2092 | void MainWindow::printSel( ) |
2089 | { | 2093 | { |
2090 | mView->viewManager()->agendaView()->agenda()->printSelection(); | 2094 | mView->viewManager()->agendaView()->agenda()->printSelection(); |
2091 | } | 2095 | } |
2092 | 2096 | ||
2093 | void MainWindow::printCal() | 2097 | void MainWindow::printCal() |
2094 | { | 2098 | { |
2095 | mView->print();//mCp->showDialog(); | 2099 | mView->print();//mCp->showDialog(); |
2096 | } | 2100 | } |
2097 | 2101 | ||
2098 | 2102 | ||
2099 | #include "libkdepim/kdatepicker.h" | 2103 | #include "libkdepim/kdatepicker.h" |
2100 | #include <kdatetbl.h> | 2104 | #include <kdatetbl.h> |
2101 | void MainWindow::weekAction() | 2105 | void MainWindow::weekAction() |
2102 | { | 2106 | { |
2103 | int month; | 2107 | int month; |
2104 | KPopupFrame* popup = new KPopupFrame(this); | 2108 | KPopupFrame* popup = new KPopupFrame(this); |
2105 | KDateInternalWeekPicker* picker = new KDateInternalWeekPicker(popup); | 2109 | KDateInternalWeekPicker* picker = new KDateInternalWeekPicker(popup); |
2106 | // ----- | 2110 | // ----- |
2107 | picker->resize(picker->sizeHint()); | 2111 | picker->resize(picker->sizeHint()); |
2108 | popup->setMainWidget(picker); | 2112 | popup->setMainWidget(picker); |
2109 | picker->setFocus(); | 2113 | picker->setFocus(); |
2110 | connect(picker, SIGNAL(closeMe(int)), popup, SLOT(close(int))); | 2114 | connect(picker, SIGNAL(closeMe(int)), popup, SLOT(close(int))); |
2111 | int x = 0; | 2115 | int x = 0; |