summaryrefslogtreecommitdiffabout
path: root/korganizer
Unidiff
Diffstat (limited to 'korganizer') (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/calendarview.cpp52
-rw-r--r--korganizer/calendarview.h2
-rw-r--r--korganizer/koeditorgeneral.cpp20
-rw-r--r--korganizer/koeditorgeneral.h1
-rw-r--r--korganizer/kotodoview.cpp5
-rw-r--r--korganizer/mainwindow.cpp11
6 files changed, 65 insertions, 26 deletions
diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp
index 8f05276..038da54 100644
--- a/korganizer/calendarview.cpp
+++ b/korganizer/calendarview.cpp
@@ -2092,195 +2092,195 @@ void CalendarView::eventChanged(Event *event)
2092 //updateUnmanagedViews(); 2092 //updateUnmanagedViews();
2093} 2093}
2094 2094
2095void CalendarView::eventAdded(Event *event) 2095void CalendarView::eventAdded(Event *event)
2096{ 2096{
2097 changeEventDisplay(event,KOGlobals::EVENTADDED); 2097 changeEventDisplay(event,KOGlobals::EVENTADDED);
2098} 2098}
2099 2099
2100void CalendarView::eventToBeDeleted(Event *) 2100void CalendarView::eventToBeDeleted(Event *)
2101{ 2101{
2102 kdDebug() << "CalendarView::eventToBeDeleted(): to be implemented" << endl; 2102 kdDebug() << "CalendarView::eventToBeDeleted(): to be implemented" << endl;
2103} 2103}
2104 2104
2105void CalendarView::eventDeleted() 2105void CalendarView::eventDeleted()
2106{ 2106{
2107 changeEventDisplay(0,KOGlobals::EVENTDELETED); 2107 changeEventDisplay(0,KOGlobals::EVENTDELETED);
2108} 2108}
2109void CalendarView::changeTodoDisplay(Todo *which, int action) 2109void CalendarView::changeTodoDisplay(Todo *which, int action)
2110{ 2110{
2111 changeIncidenceDisplay((Incidence *)which, action); 2111 changeIncidenceDisplay((Incidence *)which, action);
2112 mDateNavigator->updateView(); //LR 2112 mDateNavigator->updateView(); //LR
2113 //mDialogManager->updateSearchDialog(); 2113 //mDialogManager->updateSearchDialog();
2114 2114
2115 if (which) { 2115 if (which) {
2116 mViewManager->updateWNview(); 2116 mViewManager->updateWNview();
2117 //mTodoList->updateView(); 2117 //mTodoList->updateView();
2118 } 2118 }
2119 2119
2120} 2120}
2121 2121
2122void CalendarView::changeIncidenceDisplay(Incidence *which, int action) 2122void CalendarView::changeIncidenceDisplay(Incidence *which, int action)
2123{ 2123{
2124 updateUnmanagedViews(); 2124 updateUnmanagedViews();
2125 //qDebug(" CalendarView::changeIncidenceDisplay++++++++++++++++++++++++++ %d %d ",which, action ); 2125 //qDebug(" CalendarView::changeIncidenceDisplay++++++++++++++++++++++++++ %d %d ",which, action );
2126 if ( action == KOGlobals::EVENTDELETED ) { //delete 2126 if ( action == KOGlobals::EVENTDELETED ) { //delete
2127 mCalendar->checkAlarmForIncidence( 0, true ); 2127 mCalendar->checkAlarmForIncidence( 0, true );
2128 if ( mEventViewerDialog ) 2128 if ( mEventViewerDialog )
2129 mEventViewerDialog->hide(); 2129 mEventViewerDialog->hide();
2130 } 2130 }
2131 else 2131 else
2132 mCalendar->checkAlarmForIncidence( which , false ); 2132 mCalendar->checkAlarmForIncidence( which , false );
2133} 2133}
2134 2134
2135// most of the changeEventDisplays() right now just call the view's 2135// most of the changeEventDisplays() right now just call the view's
2136// total update mode, but they SHOULD be recoded to be more refresh-efficient. 2136// total update mode, but they SHOULD be recoded to be more refresh-efficient.
2137void CalendarView::changeEventDisplay(Event *which, int action) 2137void CalendarView::changeEventDisplay(Event *which, int action)
2138{ 2138{
2139 // kdDebug() << "CalendarView::changeEventDisplay" << endl; 2139 // kdDebug() << "CalendarView::changeEventDisplay" << endl;
2140 changeIncidenceDisplay((Incidence *)which, action); 2140 changeIncidenceDisplay((Incidence *)which, action);
2141 mDateNavigator->updateView(); 2141 mDateNavigator->updateView();
2142 //mDialogManager->updateSearchDialog(); 2142 //mDialogManager->updateSearchDialog();
2143 2143
2144 if (which) { 2144 if (which) {
2145 // If there is an event view visible update the display 2145 // If there is an event view visible update the display
2146 mViewManager->currentView()->changeEventDisplay(which,action); 2146 mViewManager->currentView()->changeEventDisplay(which,action);
2147 // TODO: check, if update needed 2147 // TODO: check, if update needed
2148 // if (which->getTodoStatus()) { 2148 // if (which->getTodoStatus()) {
2149 mTodoList->updateView(); 2149 mTodoList->updateView();
2150 // } 2150 // }
2151 } else { 2151 } else {
2152 mViewManager->currentView()->updateView(); 2152 mViewManager->currentView()->updateView();
2153 } 2153 }
2154} 2154}
2155 2155
2156 2156
2157void CalendarView::updateTodoViews() 2157void CalendarView::updateTodoViews()
2158{ 2158{
2159 2159
2160 mTodoList->updateView(); 2160 mTodoList->updateView();
2161 mViewManager->currentView()->updateView(); 2161 mViewManager->currentView()->updateView();
2162 2162
2163} 2163}
2164 2164
2165 2165
2166void CalendarView::updateView(const QDate &start, const QDate &end) 2166void CalendarView::updateView(const QDate &start, const QDate &end)
2167{ 2167{
2168 mTodoList->updateView(); 2168 mTodoList->updateView();
2169 mViewManager->updateView(start, end); 2169 mViewManager->updateView(start, end);
2170 //mDateNavigator->updateView(); 2170 //mDateNavigator->updateView();
2171} 2171}
2172 2172
2173void CalendarView::updateView() 2173void CalendarView::updateView()
2174{ 2174{
2175 DateList tmpList = mNavigator->selectedDates(); 2175 DateList tmpList = mNavigator->selectedDates();
2176 2176
2177 if ( KOPrefs::instance()->mHideNonStartedTodos ) 2177 if ( KOPrefs::instance()->mHideNonStartedTodos )
2178 mTodoList->updateView(); 2178 mTodoList->updateView();
2179 // We assume that the navigator only selects consecutive days. 2179 // We assume that the navigator only selects consecutive days.
2180 updateView( tmpList.first(), tmpList.last() ); 2180 updateView( tmpList.first(), tmpList.last() );
2181} 2181}
2182 2182
2183void CalendarView::updateUnmanagedViews() 2183void CalendarView::updateUnmanagedViews()
2184{ 2184{
2185 mDateNavigator->updateDayMatrix(); 2185 mDateNavigator->updateDayMatrix();
2186} 2186}
2187 2187
2188int CalendarView::msgItemDelete() 2188int CalendarView::msgItemDelete(const QString name)
2189{ 2189{
2190 return KMessageBox::warningContinueCancel(this, 2190 return KMessageBox::warningContinueCancel(this,name +"\n\n"+
2191 i18n("This item will be\npermanently deleted."), 2191 i18n("This item will be\npermanently deleted."),
2192 i18n("KO/Pi Confirmation"),i18n("Delete")); 2192 i18n("KO/Pi Confirmation"),i18n("Delete"));
2193} 2193}
2194 2194
2195 2195
2196void CalendarView::edit_cut() 2196void CalendarView::edit_cut()
2197{ 2197{
2198 Event *anEvent=0; 2198 Event *anEvent=0;
2199 2199
2200 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 2200 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
2201 2201
2202 if (mViewManager->currentView()->isEventView()) { 2202 if (mViewManager->currentView()->isEventView()) {
2203 if ( incidence && incidence->type() == "Event" ) { 2203 if ( incidence && incidence->type() == "Event" ) {
2204 anEvent = static_cast<Event *>(incidence); 2204 anEvent = static_cast<Event *>(incidence);
2205 } 2205 }
2206 } 2206 }
2207 2207
2208 if (!anEvent) { 2208 if (!anEvent) {
2209 KNotifyClient::beep(); 2209 KNotifyClient::beep();
2210 return; 2210 return;
2211 } 2211 }
2212 DndFactory factory( mCalendar ); 2212 DndFactory factory( mCalendar );
2213 factory.cutEvent(anEvent); 2213 factory.cutEvent(anEvent);
2214 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED); 2214 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED);
2215} 2215}
2216 2216
2217void CalendarView::edit_copy() 2217void CalendarView::edit_copy()
2218{ 2218{
2219 Event *anEvent=0; 2219 Event *anEvent=0;
2220 2220
2221 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 2221 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
2222 2222
2223 if (mViewManager->currentView()->isEventView()) { 2223 if (mViewManager->currentView()->isEventView()) {
2224 if ( incidence && incidence->type() == "Event" ) { 2224 if ( incidence && incidence->type() == "Event" ) {
2225 anEvent = static_cast<Event *>(incidence); 2225 anEvent = static_cast<Event *>(incidence);
2226 } 2226 }
2227 } 2227 }
2228 2228
2229 if (!anEvent) { 2229 if (!anEvent) {
2230 KNotifyClient::beep(); 2230 KNotifyClient::beep();
2231 return; 2231 return;
2232 } 2232 }
2233 DndFactory factory( mCalendar ); 2233 DndFactory factory( mCalendar );
2234 factory.copyEvent(anEvent); 2234 factory.copyEvent(anEvent);
2235} 2235}
2236 2236
2237void CalendarView::edit_paste() 2237void CalendarView::edit_paste()
2238{ 2238{
2239 QDate date = mNavigator->selectedDates().first(); 2239 QDate date = mNavigator->selectedDates().first();
2240 2240
2241 DndFactory factory( mCalendar ); 2241 DndFactory factory( mCalendar );
2242 Event *pastedEvent = factory.pasteEvent( date ); 2242 Event *pastedEvent = factory.pasteEvent( date );
2243 2243
2244 changeEventDisplay( pastedEvent, KOGlobals::EVENTADDED ); 2244 changeEventDisplay( pastedEvent, KOGlobals::EVENTADDED );
2245} 2245}
2246 2246
2247void CalendarView::edit_options() 2247void CalendarView::edit_options()
2248{ 2248{
2249 mDialogManager->showOptionsDialog(); 2249 mDialogManager->showOptionsDialog();
2250 //writeSettings(); 2250 //writeSettings();
2251} 2251}
2252 2252
2253 2253
2254void CalendarView::slotSelectPickerDate( QDate d) 2254void CalendarView::slotSelectPickerDate( QDate d)
2255{ 2255{
2256 mDateFrame->hide(); 2256 mDateFrame->hide();
2257 if ( mDatePickerMode == 1 ) { 2257 if ( mDatePickerMode == 1 ) {
2258 mNavigator->slotDaySelect( d ); 2258 mNavigator->slotDaySelect( d );
2259 } else if ( mDatePickerMode == 2 ) { 2259 } else if ( mDatePickerMode == 2 ) {
2260 if ( mMoveIncidence->type() == "Todo" ) { 2260 if ( mMoveIncidence->type() == "Todo" ) {
2261 Todo * to = (Todo *) mMoveIncidence; 2261 Todo * to = (Todo *) mMoveIncidence;
2262 QTime tim; 2262 QTime tim;
2263 if ( to->hasDueDate() ) 2263 if ( to->hasDueDate() )
2264 tim = to->dtDue().time(); 2264 tim = to->dtDue().time();
2265 else { 2265 else {
2266 tim = QTime ( 0,0,0 ); 2266 tim = QTime ( 0,0,0 );
2267 to->setFloats( true ); 2267 to->setFloats( true );
2268 to->setHasDueDate( true ); 2268 to->setHasDueDate( true );
2269 } 2269 }
2270 QDateTime dt ( d,tim ); 2270 QDateTime dt ( d,tim );
2271 to->setDtDue( dt ); 2271 to->setDtDue( dt );
2272 todoChanged( to ); 2272 todoChanged( to );
2273 } else { 2273 } else {
2274 if ( mMoveIncidence->doesRecur() ) { 2274 if ( mMoveIncidence->doesRecur() ) {
2275#if 0 2275#if 0
2276 // PENDING implement this 2276 // PENDING implement this
2277 Incidence* newInc = mMoveIncidence->recreateCloneException( mMoveIncidenceOldDate ); 2277 Incidence* newInc = mMoveIncidence->recreateCloneException( mMoveIncidenceOldDate );
2278 mCalendar()->addIncidence( newInc ); 2278 mCalendar()->addIncidence( newInc );
2279 if ( mMoveIncidence->type() == "Todo" ) 2279 if ( mMoveIncidence->type() == "Todo" )
2280 emit todoMoved((Todo*)mMoveIncidence, KOGlobals::EVENTEDITED ); 2280 emit todoMoved((Todo*)mMoveIncidence, KOGlobals::EVENTEDITED );
2281 else 2281 else
2282 emit incidenceChanged(mMoveIncidence, KOGlobals::EVENTEDITED); 2282 emit incidenceChanged(mMoveIncidence, KOGlobals::EVENTEDITED);
2283 mMoveIncidence = newInc; 2283 mMoveIncidence = newInc;
2284 2284
2285#endif 2285#endif
2286 } 2286 }
@@ -2795,226 +2795,229 @@ void CalendarView::showJournal( Journal *jour )
2795// } 2795// }
2796 2796
2797void CalendarView::appointment_show() 2797void CalendarView::appointment_show()
2798{ 2798{
2799 Event *anEvent = 0; 2799 Event *anEvent = 0;
2800 2800
2801 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 2801 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
2802 2802
2803 if (mViewManager->currentView()->isEventView()) { 2803 if (mViewManager->currentView()->isEventView()) {
2804 if ( incidence && incidence->type() == "Event" ) { 2804 if ( incidence && incidence->type() == "Event" ) {
2805 anEvent = static_cast<Event *>(incidence); 2805 anEvent = static_cast<Event *>(incidence);
2806 } 2806 }
2807 } 2807 }
2808 2808
2809 if (!anEvent) { 2809 if (!anEvent) {
2810 KNotifyClient::beep(); 2810 KNotifyClient::beep();
2811 return; 2811 return;
2812 } 2812 }
2813 2813
2814 showEvent(anEvent); 2814 showEvent(anEvent);
2815} 2815}
2816 2816
2817void CalendarView::appointment_edit() 2817void CalendarView::appointment_edit()
2818{ 2818{
2819 Event *anEvent = 0; 2819 Event *anEvent = 0;
2820 2820
2821 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 2821 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
2822 2822
2823 if (mViewManager->currentView()->isEventView()) { 2823 if (mViewManager->currentView()->isEventView()) {
2824 if ( incidence && incidence->type() == "Event" ) { 2824 if ( incidence && incidence->type() == "Event" ) {
2825 anEvent = static_cast<Event *>(incidence); 2825 anEvent = static_cast<Event *>(incidence);
2826 } 2826 }
2827 } 2827 }
2828 2828
2829 if (!anEvent) { 2829 if (!anEvent) {
2830 KNotifyClient::beep(); 2830 KNotifyClient::beep();
2831 return; 2831 return;
2832 } 2832 }
2833 2833
2834 editEvent(anEvent); 2834 editEvent(anEvent);
2835} 2835}
2836 2836
2837void CalendarView::appointment_delete() 2837void CalendarView::appointment_delete()
2838{ 2838{
2839 Event *anEvent = 0; 2839 Event *anEvent = 0;
2840 2840
2841 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 2841 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
2842 2842
2843 if (mViewManager->currentView()->isEventView()) { 2843 if (mViewManager->currentView()->isEventView()) {
2844 if ( incidence && incidence->type() == "Event" ) { 2844 if ( incidence && incidence->type() == "Event" ) {
2845 anEvent = static_cast<Event *>(incidence); 2845 anEvent = static_cast<Event *>(incidence);
2846 } 2846 }
2847 } 2847 }
2848 2848
2849 if (!anEvent) { 2849 if (!anEvent) {
2850 KNotifyClient::beep(); 2850 KNotifyClient::beep();
2851 return; 2851 return;
2852 } 2852 }
2853 2853
2854 deleteEvent(anEvent); 2854 deleteEvent(anEvent);
2855} 2855}
2856 2856
2857void CalendarView::todo_resub( Todo * parent, Todo * sub ) 2857void CalendarView::todo_resub( Todo * parent, Todo * sub )
2858{ 2858{
2859 if (!sub) return; 2859 if (!sub) return;
2860 if (!parent) return; 2860 if (!parent) return;
2861 if ( sub->relatedTo() ) 2861 if ( sub->relatedTo() )
2862 sub->relatedTo()->removeRelation(sub); 2862 sub->relatedTo()->removeRelation(sub);
2863 sub->setRelatedTo(parent); 2863 sub->setRelatedTo(parent);
2864 sub->setRelatedToUid(parent->uid()); 2864 sub->setRelatedToUid(parent->uid());
2865 parent->addRelation(sub); 2865 parent->addRelation(sub);
2866 sub->updated(); 2866 sub->updated();
2867 parent->updated(); 2867 parent->updated();
2868 setModified(true); 2868 setModified(true);
2869 updateView(); 2869 updateView();
2870} 2870}
2871void CalendarView::todo_unsub(Todo *anTodo ) 2871void CalendarView::todo_unsub(Todo *anTodo )
2872{ 2872{
2873 // Todo *anTodo = selectedTodo(); 2873 // Todo *anTodo = selectedTodo();
2874 if (!anTodo) return; 2874 if (!anTodo) return;
2875 if (!anTodo->relatedTo()) return; 2875 if (!anTodo->relatedTo()) return;
2876 anTodo->relatedTo()->removeRelation(anTodo); 2876 anTodo->relatedTo()->removeRelation(anTodo);
2877 anTodo->setRelatedTo(0); 2877 anTodo->setRelatedTo(0);
2878 anTodo->updated(); 2878 anTodo->updated();
2879 anTodo->setRelatedToUid(""); 2879 anTodo->setRelatedToUid("");
2880 setModified(true); 2880 setModified(true);
2881 updateView(); 2881 updateView();
2882} 2882}
2883 2883
2884void CalendarView::deleteTodo(Todo *todo) 2884void CalendarView::deleteTodo(Todo *todo)
2885{ 2885{
2886 if (!todo) { 2886 if (!todo) {
2887 KNotifyClient::beep(); 2887 KNotifyClient::beep();
2888 return; 2888 return;
2889 } 2889 }
2890 if (KOPrefs::instance()->mConfirm) { 2890 if (KOPrefs::instance()->mConfirm) {
2891 switch (msgItemDelete()) { 2891 QString text = todo->summary().left(20);
2892 if (!todo->relations().isEmpty()) {
2893 text += i18n("\nhas sub-todos.\nAll completed sub-todos\nwill be deleted as well!");
2894
2895 }
2896 switch (msgItemDelete(text)) {
2892 case KMessageBox::Continue: // OK 2897 case KMessageBox::Continue: // OK
2898 bool deleteT = false;
2893 if (!todo->relations().isEmpty()) { 2899 if (!todo->relations().isEmpty()) {
2894 KMessageBox::sorry(this,i18n("Cannot delete To-Do\nwhich has children."), 2900 deleteT = removeCompletedSubTodos( todo );
2895 i18n("Delete To-Do")); 2901 }
2896 } else { 2902 // deleteT == true: todo already deleted in removeCompletedSubTodos
2903 if ( !deleteT ) {
2897 checkExternalId( todo ); 2904 checkExternalId( todo );
2898 calendar()->deleteTodo(todo); 2905 calendar()->deleteTodo(todo);
2899 changeTodoDisplay( todo,KOGlobals::EVENTDELETED ); 2906 changeTodoDisplay( todo,KOGlobals::EVENTDELETED );
2900 updateView(); 2907 updateView();
2901 } 2908 }
2902 break; 2909 break;
2903 } // switch 2910 } // switch
2904 } else { 2911 } else {
2905 if (!todo->relations().isEmpty()) { 2912 checkExternalId( todo );
2906 KMessageBox::sorry(this,i18n("Cannot delete To-Do\nwhich has children."), 2913 mCalendar->deleteTodo(todo);
2907 i18n("Delete To-Do")); 2914 changeTodoDisplay( todo,KOGlobals::EVENTDELETED );
2908 } else { 2915 updateView();
2909 checkExternalId( todo );
2910 mCalendar->deleteTodo(todo);
2911 changeTodoDisplay( todo,KOGlobals::EVENTDELETED );
2912 updateView();
2913 }
2914 } 2916 }
2917
2915 emit updateSearchDialog(); 2918 emit updateSearchDialog();
2916} 2919}
2917void CalendarView::deleteJournal(Journal *jour) 2920void CalendarView::deleteJournal(Journal *jour)
2918{ 2921{
2919 if (!jour) { 2922 if (!jour) {
2920 KNotifyClient::beep(); 2923 KNotifyClient::beep();
2921 return; 2924 return;
2922 } 2925 }
2923 if (KOPrefs::instance()->mConfirm) { 2926 if (KOPrefs::instance()->mConfirm) {
2924 switch (msgItemDelete()) { 2927 switch (msgItemDelete( jour->description().left(20))) {
2925 case KMessageBox::Continue: // OK 2928 case KMessageBox::Continue: // OK
2926 calendar()->deleteJournal(jour); 2929 calendar()->deleteJournal(jour);
2927 updateView(); 2930 updateView();
2928 break; 2931 break;
2929 } // switch 2932 } // switch
2930 } else { 2933 } else {
2931 calendar()->deleteJournal(jour);; 2934 calendar()->deleteJournal(jour);;
2932 updateView(); 2935 updateView();
2933 } 2936 }
2934 emit updateSearchDialog(); 2937 emit updateSearchDialog();
2935} 2938}
2936 2939
2937void CalendarView::deleteEvent(Event *anEvent) 2940void CalendarView::deleteEvent(Event *anEvent)
2938{ 2941{
2939 if (!anEvent) { 2942 if (!anEvent) {
2940 KNotifyClient::beep(); 2943 KNotifyClient::beep();
2941 return; 2944 return;
2942 } 2945 }
2943 2946
2944 if (anEvent->recurrence()->doesRecur()) { 2947 if (anEvent->recurrence()->doesRecur()) {
2945 QDate itemDate = mViewManager->currentSelectionDate(); 2948 QDate itemDate = mViewManager->currentSelectionDate();
2946 int km; 2949 int km;
2947 if (!itemDate.isValid()) { 2950 if (!itemDate.isValid()) {
2948 //kdDebug() << "Date Not Valid" << endl; 2951 //kdDebug() << "Date Not Valid" << endl;
2949 if (KOPrefs::instance()->mConfirm) { 2952 if (KOPrefs::instance()->mConfirm) {
2950 km = KMessageBox::warningContinueCancel(this,anEvent->summary().left(25) + 2953 km = KMessageBox::warningContinueCancel(this,anEvent->summary().left(25) +
2951 i18n("\nThis event recurs\nover multiple dates.\nAre you sure you want\nto delete this event\nand all its recurrences?"), 2954 i18n("\nThis event recurs\nover multiple dates.\nAre you sure you want\nto delete this event\nand all its recurrences?"),
2952 i18n("KO/Pi Confirmation"),i18n("Delete All")); 2955 i18n("KO/Pi Confirmation"),i18n("Delete All"));
2953 if ( km == KMessageBox::Continue ) 2956 if ( km == KMessageBox::Continue )
2954 km = KMessageBox::No; // No = all below 2957 km = KMessageBox::No; // No = all below
2955 } else 2958 } else
2956 km = KMessageBox::No; 2959 km = KMessageBox::No;
2957 } else { 2960 } else {
2958 km = KMessageBox::warningYesNoCancel(this,anEvent->summary().left(25) + 2961 km = KMessageBox::warningYesNoCancel(this,anEvent->summary().left(25) +
2959 i18n("\nThis event recurs\nover multiple dates.\nDo you want to delete\nall it's recurrences,\nor only the current one on:\n")+ 2962 i18n("\nThis event recurs\nover multiple dates.\nDo you want to delete\nall it's recurrences,\nor only the current one on:\n")+
2960 KGlobal::locale()->formatDate(itemDate)+i18n(" ?\n\nDelete:\n"), 2963 KGlobal::locale()->formatDate(itemDate)+i18n(" ?\n\nDelete:\n"),
2961 i18n("KO/Pi Confirmation"),i18n("Current"), 2964 i18n("KO/Pi Confirmation"),i18n("Current"),
2962 i18n("All")); 2965 i18n("All"));
2963 } 2966 }
2964 switch(km) { 2967 switch(km) {
2965 2968
2966 case KMessageBox::No: // Continue // all 2969 case KMessageBox::No: // Continue // all
2967 //qDebug("KMessageBox::No "); 2970 //qDebug("KMessageBox::No ");
2968 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0) 2971 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0)
2969 schedule(Scheduler::Cancel,anEvent); 2972 schedule(Scheduler::Cancel,anEvent);
2970 2973
2971 checkExternalId( anEvent); 2974 checkExternalId( anEvent);
2972 mCalendar->deleteEvent(anEvent); 2975 mCalendar->deleteEvent(anEvent);
2973 changeEventDisplay(anEvent,KOGlobals::EVENTDELETED); 2976 changeEventDisplay(anEvent,KOGlobals::EVENTDELETED);
2974 break; 2977 break;
2975 2978
2976 // Disabled because it does not work 2979 // Disabled because it does not work
2977 //#if 0 2980 //#if 0
2978 case KMessageBox::Yes: // just this one 2981 case KMessageBox::Yes: // just this one
2979 //QDate qd = mNavigator->selectedDates().first(); 2982 //QDate qd = mNavigator->selectedDates().first();
2980 //if (!qd.isValid()) { 2983 //if (!qd.isValid()) {
2981 // kdDebug() << "no date selected, or invalid date" << endl; 2984 // kdDebug() << "no date selected, or invalid date" << endl;
2982 // KNotifyClient::beep(); 2985 // KNotifyClient::beep();
2983 // return; 2986 // return;
2984 //} 2987 //}
2985 //while (!anEvent->recursOn(qd)) qd = qd.addDays(1); 2988 //while (!anEvent->recursOn(qd)) qd = qd.addDays(1);
2986 if (itemDate!=QDate(1,1,1) || itemDate.isValid()) { 2989 if (itemDate!=QDate(1,1,1) || itemDate.isValid()) {
2987 anEvent->addExDate(itemDate); 2990 anEvent->addExDate(itemDate);
2988 int duration = anEvent->recurrence()->duration(); 2991 int duration = anEvent->recurrence()->duration();
2989 if ( duration > 0 ) { 2992 if ( duration > 0 ) {
2990 anEvent->recurrence()->setDuration( duration - 1 ); 2993 anEvent->recurrence()->setDuration( duration - 1 );
2991 } 2994 }
2992 changeEventDisplay(anEvent, KOGlobals::EVENTEDITED); 2995 changeEventDisplay(anEvent, KOGlobals::EVENTEDITED);
2993 } 2996 }
2994 break; 2997 break;
2995 //#endif 2998 //#endif
2996 } // switch 2999 } // switch
2997 } else { 3000 } else {
2998 if (KOPrefs::instance()->mConfirm) { 3001 if (KOPrefs::instance()->mConfirm) {
2999 switch (KMessageBox::warningContinueCancel(this,anEvent->summary().left(25) + 3002 switch (KMessageBox::warningContinueCancel(this,anEvent->summary().left(25) +
3000 i18n("\nAre you sure you want\nto delete this event?"), 3003 i18n("\nAre you sure you want\nto delete this event?"),
3001 i18n("KO/Pi Confirmation"),i18n("Delete"))) { 3004 i18n("KO/Pi Confirmation"),i18n("Delete"))) {
3002 case KMessageBox::Continue: // OK 3005 case KMessageBox::Continue: // OK
3003 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0) 3006 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0)
3004 schedule(Scheduler::Cancel,anEvent); 3007 schedule(Scheduler::Cancel,anEvent);
3005 checkExternalId( anEvent); 3008 checkExternalId( anEvent);
3006 mCalendar->deleteEvent(anEvent); 3009 mCalendar->deleteEvent(anEvent);
3007 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED); 3010 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED);
3008 break; 3011 break;
3009 } // switch 3012 } // switch
3010 } else { 3013 } else {
3011 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0) 3014 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0)
3012 schedule(Scheduler::Cancel,anEvent); 3015 schedule(Scheduler::Cancel,anEvent);
3013 checkExternalId( anEvent); 3016 checkExternalId( anEvent);
3014 mCalendar->deleteEvent(anEvent); 3017 mCalendar->deleteEvent(anEvent);
3015 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED); 3018 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED);
3016 } 3019 }
3017 } // if-else 3020 } // if-else
3018 emit updateSearchDialog(); 3021 emit updateSearchDialog();
3019} 3022}
3020 3023
@@ -3390,192 +3393,209 @@ void CalendarView::adaptNavigationUnits()
3390void CalendarView::processMainViewSelection( Incidence *incidence ) 3393void CalendarView::processMainViewSelection( Incidence *incidence )
3391{ 3394{
3392 if ( incidence ) mTodoList->clearSelection(); 3395 if ( incidence ) mTodoList->clearSelection();
3393 processIncidenceSelection( incidence ); 3396 processIncidenceSelection( incidence );
3394} 3397}
3395 3398
3396void CalendarView::processTodoListSelection( Incidence *incidence ) 3399void CalendarView::processTodoListSelection( Incidence *incidence )
3397{ 3400{
3398 if ( incidence && mViewManager->currentView() ) { 3401 if ( incidence && mViewManager->currentView() ) {
3399 mViewManager->currentView()->clearSelection(); 3402 mViewManager->currentView()->clearSelection();
3400 } 3403 }
3401 processIncidenceSelection( incidence ); 3404 processIncidenceSelection( incidence );
3402} 3405}
3403 3406
3404void CalendarView::processIncidenceSelection( Incidence *incidence ) 3407void CalendarView::processIncidenceSelection( Incidence *incidence )
3405{ 3408{
3406 if ( incidence == mSelectedIncidence ) return; 3409 if ( incidence == mSelectedIncidence ) return;
3407 3410
3408 mSelectedIncidence = incidence; 3411 mSelectedIncidence = incidence;
3409 3412
3410 emit incidenceSelected( mSelectedIncidence ); 3413 emit incidenceSelected( mSelectedIncidence );
3411 3414
3412 if ( incidence && incidence->type() == "Event" ) { 3415 if ( incidence && incidence->type() == "Event" ) {
3413 Event *event = static_cast<Event *>( incidence ); 3416 Event *event = static_cast<Event *>( incidence );
3414 if ( event->organizer() == KOPrefs::instance()->email() ) { 3417 if ( event->organizer() == KOPrefs::instance()->email() ) {
3415 emit organizerEventsSelected( true ); 3418 emit organizerEventsSelected( true );
3416 } else { 3419 } else {
3417 emit organizerEventsSelected(false); 3420 emit organizerEventsSelected(false);
3418 } 3421 }
3419 if (event->attendeeByMails( KOPrefs::instance()->mAdditionalMails, 3422 if (event->attendeeByMails( KOPrefs::instance()->mAdditionalMails,
3420 KOPrefs::instance()->email() ) ) { 3423 KOPrefs::instance()->email() ) ) {
3421 emit groupEventsSelected( true ); 3424 emit groupEventsSelected( true );
3422 } else { 3425 } else {
3423 emit groupEventsSelected(false); 3426 emit groupEventsSelected(false);
3424 } 3427 }
3425 return; 3428 return;
3426 } else { 3429 } else {
3427 if ( incidence && incidence->type() == "Todo" ) { 3430 if ( incidence && incidence->type() == "Todo" ) {
3428 emit todoSelected( true ); 3431 emit todoSelected( true );
3429 Todo *event = static_cast<Todo *>( incidence ); 3432 Todo *event = static_cast<Todo *>( incidence );
3430 if ( event->organizer() == KOPrefs::instance()->email() ) { 3433 if ( event->organizer() == KOPrefs::instance()->email() ) {
3431 emit organizerEventsSelected( true ); 3434 emit organizerEventsSelected( true );
3432 } else { 3435 } else {
3433 emit organizerEventsSelected(false); 3436 emit organizerEventsSelected(false);
3434 } 3437 }
3435 if (event->attendeeByMails( KOPrefs::instance()->mAdditionalMails, 3438 if (event->attendeeByMails( KOPrefs::instance()->mAdditionalMails,
3436 KOPrefs::instance()->email() ) ) { 3439 KOPrefs::instance()->email() ) ) {
3437 emit groupEventsSelected( true ); 3440 emit groupEventsSelected( true );
3438 } else { 3441 } else {
3439 emit groupEventsSelected(false); 3442 emit groupEventsSelected(false);
3440 } 3443 }
3441 return; 3444 return;
3442 } else { 3445 } else {
3443 emit todoSelected( false ); 3446 emit todoSelected( false );
3444 emit organizerEventsSelected(false); 3447 emit organizerEventsSelected(false);
3445 emit groupEventsSelected(false); 3448 emit groupEventsSelected(false);
3446 } 3449 }
3447 return; 3450 return;
3448 } 3451 }
3449 3452
3450 /* if ( incidence && incidence->type() == "Todo" ) { 3453 /* if ( incidence && incidence->type() == "Todo" ) {
3451 emit todoSelected( true ); 3454 emit todoSelected( true );
3452 } else { 3455 } else {
3453 emit todoSelected( false ); 3456 emit todoSelected( false );
3454 }*/ 3457 }*/
3455} 3458}
3456 3459
3457 3460
3458void CalendarView::checkClipboard() 3461void CalendarView::checkClipboard()
3459{ 3462{
3460#ifndef KORG_NODND 3463#ifndef KORG_NODND
3461 if (ICalDrag::canDecode(QApplication::clipboard()->data())) { 3464 if (ICalDrag::canDecode(QApplication::clipboard()->data())) {
3462 emit pasteEnabled(true); 3465 emit pasteEnabled(true);
3463 } else { 3466 } else {
3464 emit pasteEnabled(false); 3467 emit pasteEnabled(false);
3465 } 3468 }
3466#endif 3469#endif
3467} 3470}
3468 3471
3469void CalendarView::showDates(const DateList &selectedDates) 3472void CalendarView::showDates(const DateList &selectedDates)
3470{ 3473{
3471 // kdDebug() << "CalendarView::selectDates()" << endl; 3474 // kdDebug() << "CalendarView::selectDates()" << endl;
3472 3475
3473 3476
3474 if ( !mBlockShowDates ) { 3477 if ( !mBlockShowDates ) {
3475 if ( mViewManager->currentView() ) { 3478 if ( mViewManager->currentView() ) {
3476 updateView( selectedDates.first(), selectedDates.last() ); 3479 updateView( selectedDates.first(), selectedDates.last() );
3477 } else { 3480 } else {
3478 mViewManager->showAgendaView(); 3481 mViewManager->showAgendaView();
3479 } 3482 }
3480 } 3483 }
3481 3484
3482 QString selDates; 3485 QString selDates;
3483 selDates = KGlobal::locale()->formatDate( selectedDates.first(), true); 3486 selDates = KGlobal::locale()->formatDate( selectedDates.first(), true);
3484 if (selectedDates.first() < selectedDates.last() ) 3487 if (selectedDates.first() < selectedDates.last() )
3485 selDates += " - " + KGlobal::locale()->formatDate( selectedDates.last(),true); 3488 selDates += " - " + KGlobal::locale()->formatDate( selectedDates.last(),true);
3489 else {
3490 QString addString;
3491 if ( selectedDates.first() == QDateTime::currentDateTime().date() )
3492 addString = i18n("Today");
3493 else if ( selectedDates.first() == QDateTime::currentDateTime().date().addDays(1) )
3494 addString = i18n("Tomorrow");
3495 else if ( selectedDates.first() == QDateTime::currentDateTime().date().addDays(-1) )
3496 addString = i18n("Yesterday");
3497 else if ( selectedDates.first() == QDateTime::currentDateTime().date().addDays(-2) )
3498 addString = i18n("Day before yesterday");
3499 else if ( selectedDates.first() == QDateTime::currentDateTime().date().addDays(2) )
3500 addString = i18n("Day after tomorrow");
3501 if ( !addString.isEmpty() ) {
3502 topLevelWidget()->setCaption( addString+", " + selDates );
3503 return;
3504 }
3505 }
3486 topLevelWidget()->setCaption( i18n("Dates: ") + selDates ); 3506 topLevelWidget()->setCaption( i18n("Dates: ") + selDates );
3487 3507
3488} 3508}
3489 3509
3490QPtrList<CalFilter> CalendarView::filters() 3510QPtrList<CalFilter> CalendarView::filters()
3491{ 3511{
3492 return mFilters; 3512 return mFilters;
3493 3513
3494} 3514}
3495void CalendarView::editFilters() 3515void CalendarView::editFilters()
3496{ 3516{
3497 // kdDebug() << "CalendarView::editFilters()" << endl; 3517 // kdDebug() << "CalendarView::editFilters()" << endl;
3498 3518
3499 CalFilter *filter = mFilters.first(); 3519 CalFilter *filter = mFilters.first();
3500 while(filter) { 3520 while(filter) {
3501 kdDebug() << " Filter: " << filter->name() << endl; 3521 kdDebug() << " Filter: " << filter->name() << endl;
3502 filter = mFilters.next(); 3522 filter = mFilters.next();
3503 } 3523 }
3504 3524
3505 mDialogManager->showFilterEditDialog(&mFilters); 3525 mDialogManager->showFilterEditDialog(&mFilters);
3506} 3526}
3507void CalendarView::toggleFilter() 3527void CalendarView::toggleFilter()
3508{ 3528{
3509 showFilter(! mFilterView->isVisible()); 3529 showFilter(! mFilterView->isVisible());
3510} 3530}
3511 3531
3512KOFilterView *CalendarView::filterView() 3532KOFilterView *CalendarView::filterView()
3513{ 3533{
3514 return mFilterView; 3534 return mFilterView;
3515} 3535}
3516void CalendarView::selectFilter( int fil ) 3536void CalendarView::selectFilter( int fil )
3517{ 3537{
3518 mFilterView->setSelectedFilter( fil ); 3538 mFilterView->setSelectedFilter( fil );
3519} 3539}
3520void CalendarView::showFilter(bool visible) 3540void CalendarView::showFilter(bool visible)
3521{ 3541{
3522 if (visible) mFilterView->show(); 3542 if (visible) mFilterView->show();
3523 else mFilterView->hide(); 3543 else mFilterView->hide();
3524} 3544}
3525void CalendarView::toggleFilerEnabled( ) 3545void CalendarView::toggleFilerEnabled( )
3526{ 3546{
3527 mFilterView->setFiltersEnabled ( !mFilterView->filtersEnabled() ); 3547 mFilterView->setFiltersEnabled ( !mFilterView->filtersEnabled() );
3528 if ( !mFilterView->filtersEnabled() ) 3548 if ( !mFilterView->filtersEnabled() )
3529 topLevelWidget()->setCaption( i18n("Filter disabled ") ); 3549 topLevelWidget()->setCaption( i18n("Filter disabled ") );
3530 3550
3531} 3551}
3532void CalendarView::updateFilter() 3552void CalendarView::updateFilter()
3533{ 3553{
3534 CalFilter *filter = mFilterView->selectedFilter(); 3554 CalFilter *filter = mFilterView->selectedFilter();
3535 if (filter) { 3555 if (filter) {
3536 if (mFilterView->filtersEnabled()) { 3556 if (mFilterView->filtersEnabled()) {
3537 topLevelWidget()->setCaption( i18n("Filter selected: ")+filter->name() ); 3557 topLevelWidget()->setCaption( i18n("Filter selected: ")+filter->name() );
3538 filter->setEnabled(true); 3558 filter->setEnabled(true);
3539 } 3559 }
3540 else filter->setEnabled(false); 3560 else filter->setEnabled(false);
3541 mCalendar->setFilter(filter); 3561 mCalendar->setFilter(filter);
3542 updateView(); 3562 updateView();
3543 } 3563 }
3544} 3564}
3545 3565
3546void CalendarView::filterEdited() 3566void CalendarView::filterEdited()
3547{ 3567{
3548 mFilterView->updateFilters(); 3568 mFilterView->updateFilters();
3549 updateFilter(); 3569 updateFilter();
3550 writeSettings(); 3570 writeSettings();
3551} 3571}
3552 3572
3553 3573
3554void CalendarView::takeOverEvent() 3574void CalendarView::takeOverEvent()
3555{ 3575{
3556 Incidence *incidence = currentSelection(); 3576 Incidence *incidence = currentSelection();
3557 3577
3558 if (!incidence) return; 3578 if (!incidence) return;
3559 3579
3560 incidence->setOrganizer(KOPrefs::instance()->email()); 3580 incidence->setOrganizer(KOPrefs::instance()->email());
3561 incidence->recreate(); 3581 incidence->recreate();
3562 incidence->setReadOnly(false); 3582 incidence->setReadOnly(false);
3563 3583
3564 updateView(); 3584 updateView();
3565} 3585}
3566 3586
3567void CalendarView::takeOverCalendar() 3587void CalendarView::takeOverCalendar()
3568{ 3588{
3569 // TODO: Create Calendar::allIncidences() function and use it here 3589 // TODO: Create Calendar::allIncidences() function and use it here
3570 3590
3571 QPtrList<Event> events = mCalendar->events(); 3591 QPtrList<Event> events = mCalendar->events();
3572 for(uint i=0; i<events.count(); ++i) { 3592 for(uint i=0; i<events.count(); ++i) {
3573 events.at(i)->setOrganizer(KOPrefs::instance()->email()); 3593 events.at(i)->setOrganizer(KOPrefs::instance()->email());
3574 events.at(i)->recreate(); 3594 events.at(i)->recreate();
3575 events.at(i)->setReadOnly(false); 3595 events.at(i)->setReadOnly(false);
3576 } 3596 }
3577 3597
3578 QPtrList<Todo> todos = mCalendar->todos(); 3598 QPtrList<Todo> todos = mCalendar->todos();
3579 for(uint i=0; i<todos.count(); ++i) { 3599 for(uint i=0; i<todos.count(); ++i) {
3580 todos.at(i)->setOrganizer(KOPrefs::instance()->email()); 3600 todos.at(i)->setOrganizer(KOPrefs::instance()->email());
3581 todos.at(i)->recreate(); 3601 todos.at(i)->recreate();
diff --git a/korganizer/calendarview.h b/korganizer/calendarview.h
index e27da9a..c8d6bdd 100644
--- a/korganizer/calendarview.h
+++ b/korganizer/calendarview.h
@@ -392,193 +392,193 @@ class CalendarView : public KOrg::CalendarViewBase, public KCal::Calendar::Obser
392 void toggleFilerEnabled(); 392 void toggleFilerEnabled();
393 QPtrList<CalFilter> filters(); 393 QPtrList<CalFilter> filters();
394 void toggleFilter(); 394 void toggleFilter();
395 void showFilter(bool visible); 395 void showFilter(bool visible);
396 void updateFilter(); 396 void updateFilter();
397 void filterEdited(); 397 void filterEdited();
398 void selectFilter( int ); 398 void selectFilter( int );
399 KOFilterView *filterView(); 399 KOFilterView *filterView();
400 400
401 void showIntro(); 401 void showIntro();
402 402
403 /** Move the curdatepient view date to today */ 403 /** Move the curdatepient view date to today */
404 void goToday(); 404 void goToday();
405 405
406 /** Move to the next date(s) in the current view */ 406 /** Move to the next date(s) in the current view */
407 void goNext(); 407 void goNext();
408 408
409 /** Move to the previous date(s) in the current view */ 409 /** Move to the previous date(s) in the current view */
410 void goPrevious(); 410 void goPrevious();
411 /** Move to the next date(s) in the current view */ 411 /** Move to the next date(s) in the current view */
412 void goNextMonth(); 412 void goNextMonth();
413 413
414 /** Move to the previous date(s) in the current view */ 414 /** Move to the previous date(s) in the current view */
415 void goPreviousMonth(); 415 void goPreviousMonth();
416 416
417 void toggleExpand(); 417 void toggleExpand();
418 void toggleDateNavigatorWidget(); 418 void toggleDateNavigatorWidget();
419 void toggleAllDaySize(); 419 void toggleAllDaySize();
420 void dialogClosing(Incidence *); 420 void dialogClosing(Incidence *);
421 421
422 /** Look for new messages in the inbox */ 422 /** Look for new messages in the inbox */
423 void lookForIncomingMessages(); 423 void lookForIncomingMessages();
424 /** Look for new messages in the outbox */ 424 /** Look for new messages in the outbox */
425 void lookForOutgoingMessages(); 425 void lookForOutgoingMessages();
426 426
427 void processMainViewSelection( Incidence * ); 427 void processMainViewSelection( Incidence * );
428 void processTodoListSelection( Incidence * ); 428 void processTodoListSelection( Incidence * );
429 429
430 void processIncidenceSelection( Incidence * ); 430 void processIncidenceSelection( Incidence * );
431 431
432 void purgeCompleted(); 432 void purgeCompleted();
433 bool removeCompletedSubTodos( Todo* ); 433 bool removeCompletedSubTodos( Todo* );
434 void slotCalendarChanged(); 434 void slotCalendarChanged();
435 bool importBday(); 435 bool importBday();
436 bool addAnniversary( QDate data, QString name, KCal::Attendee* a , bool birthday ); 436 bool addAnniversary( QDate data, QString name, KCal::Attendee* a , bool birthday );
437 bool importQtopia( const QString &categoriesFile, 437 bool importQtopia( const QString &categoriesFile,
438 const QString &datebookFile, 438 const QString &datebookFile,
439 const QString &tasklistFile ); 439 const QString &tasklistFile );
440 void syncExternal( int mode ); 440 void syncExternal( int mode );
441 void slotSelectPickerDate( QDate ) ; 441 void slotSelectPickerDate( QDate ) ;
442 void showDatePicker( ) ; 442 void showDatePicker( ) ;
443 void moveIncidence(Incidence *) ; 443 void moveIncidence(Incidence *) ;
444 void beamIncidence(Incidence *) ; 444 void beamIncidence(Incidence *) ;
445 void beamCalendar() ; 445 void beamCalendar() ;
446 void beamFilteredCalendar() ; 446 void beamFilteredCalendar() ;
447 void beamIncidenceList(QPtrList<Incidence>) ; 447 void beamIncidenceList(QPtrList<Incidence>) ;
448 void manageCategories(); 448 void manageCategories();
449 int addCategories(); 449 int addCategories();
450 void removeCategories(); 450 void removeCategories();
451 void setSyncDevice( QString ); 451 void setSyncDevice( QString );
452 void setSyncName( QString ); 452 void setSyncName( QString );
453 void showDay( QDate ); 453 void showDay( QDate );
454 void undo_delete(); 454 void undo_delete();
455 protected slots: 455 protected slots:
456 void timerAlarm(); 456 void timerAlarm();
457 void suspendAlarm(); 457 void suspendAlarm();
458 void beamDone( Ir *ir ); 458 void beamDone( Ir *ir );
459 /** Select a view or adapt the current view to display the specified dates. */ 459 /** Select a view or adapt the current view to display the specified dates. */
460 void showDates( const KCal::DateList & ); 460 void showDates( const KCal::DateList & );
461 void selectWeekNum ( int ); 461 void selectWeekNum ( int );
462 462
463 public: 463 public:
464 // show a standard warning 464 // show a standard warning
465 // returns KMsgBox::yesNoCancel() 465 // returns KMsgBox::yesNoCancel()
466 int msgCalModified(); 466 int msgCalModified();
467 virtual bool sync(KSyncManager* manager, QString filename, int mode); 467 virtual bool sync(KSyncManager* manager, QString filename, int mode);
468 468
469 virtual bool syncExternal(KSyncManager* manager, QString resource); 469 virtual bool syncExternal(KSyncManager* manager, QString resource);
470 virtual void removeSyncInfo( QString syncProfile); 470 virtual void removeSyncInfo( QString syncProfile);
471 void setSyncManager(KSyncManager* manager); 471 void setSyncManager(KSyncManager* manager);
472 void setLoadedFileVersion(QDateTime); 472 void setLoadedFileVersion(QDateTime);
473 bool checkFileVersion(QString fn); 473 bool checkFileVersion(QString fn);
474 bool checkFileChanged(QString fn); 474 bool checkFileChanged(QString fn);
475 Event* getLastSyncEvent(); 475 Event* getLastSyncEvent();
476 /** Adapt navigation units correpsonding to step size of navigation of the 476 /** Adapt navigation units correpsonding to step size of navigation of the
477 * current view. 477 * current view.
478 */ 478 */
479 void adaptNavigationUnits(); 479 void adaptNavigationUnits();
480 bool synchronizeCalendar( Calendar* local, Calendar* remote, int mode ); 480 bool synchronizeCalendar( Calendar* local, Calendar* remote, int mode );
481 int takeEvent( Incidence* local, Incidence* remote, int mode, bool full = false ); 481 int takeEvent( Incidence* local, Incidence* remote, int mode, bool full = false );
482 //Attendee* getYourAttendee(Event *event); 482 //Attendee* getYourAttendee(Event *event);
483 void setBlockShowDates( bool b ) { mBlockShowDates = b ;} 483 void setBlockShowDates( bool b ) { mBlockShowDates = b ;}
484 protected: 484 protected:
485 void schedule(Scheduler::Method, Incidence *incidence = 0); 485 void schedule(Scheduler::Method, Incidence *incidence = 0);
486 486
487 // returns KMsgBox::OKCandel() 487 // returns KMsgBox::OKCandel()
488 int msgItemDelete(); 488 int msgItemDelete(const QString name);
489 void showEventEditor(); 489 void showEventEditor();
490 void showTodoEditor(); 490 void showTodoEditor();
491 void writeLocale(); 491 void writeLocale();
492 Todo *selectedTodo(); 492 Todo *selectedTodo();
493 493
494 private: 494 private:
495 bool mBlockShowDates; 495 bool mBlockShowDates;
496 KSyncManager* mSyncManager; 496 KSyncManager* mSyncManager;
497 AlarmDialog * mAlarmDialog; 497 AlarmDialog * mAlarmDialog;
498 QString mAlarmNotification; 498 QString mAlarmNotification;
499 QString mSuspendAlarmNotification; 499 QString mSuspendAlarmNotification;
500 QTimer* mSuspendTimer; 500 QTimer* mSuspendTimer;
501 QTimer* mAlarmTimer; 501 QTimer* mAlarmTimer;
502 QTimer* mRecheckAlarmTimer; 502 QTimer* mRecheckAlarmTimer;
503 void computeAlarm( QString ); 503 void computeAlarm( QString );
504 void startAlarm( QString, QString ); 504 void startAlarm( QString, QString );
505 void setSyncEventsReadOnly(); 505 void setSyncEventsReadOnly();
506 506
507 QDateTime loadedFileVersion; 507 QDateTime loadedFileVersion;
508 void checkExternSyncEvent( QPtrList<Event> lastSync , Incidence* toDelete ); 508 void checkExternSyncEvent( QPtrList<Event> lastSync , Incidence* toDelete );
509 void checkExternalId( Incidence * inc ); 509 void checkExternalId( Incidence * inc );
510 int mGlobalSyncMode; 510 int mGlobalSyncMode;
511 QString mCurrentSyncDevice; 511 QString mCurrentSyncDevice;
512 QString mCurrentSyncName; 512 QString mCurrentSyncName;
513 KOBeamPrefs* beamDialog; 513 KOBeamPrefs* beamDialog;
514 void init(); 514 void init();
515 int mDatePickerMode; 515 int mDatePickerMode;
516 bool mFlagEditDescription; 516 bool mFlagEditDescription;
517 QDateTime mLastCalendarSync; 517 QDateTime mLastCalendarSync;
518 void createPrinter(); 518 void createPrinter();
519 519
520 void calendarModified( bool, Calendar * ); 520 void calendarModified( bool, Calendar * );
521 521
522 CalPrinter *mCalPrinter; 522 CalPrinter *mCalPrinter;
523 523
524 QSplitter *mPanner; 524 QSplitter *mPanner;
525 QSplitter *mLeftSplitter; 525 QSplitter *mLeftSplitter;
526 QWidget *mLeftFrame; 526 QWidget *mLeftFrame;
527 QWidgetStack *mRightFrame; 527 QWidgetStack *mRightFrame;
528 528
529 KDatePicker* mDatePicker; 529 KDatePicker* mDatePicker;
530 QVBox* mDateFrame; 530 QVBox* mDateFrame;
531 NavigatorBar *mNavigatorBar; 531 NavigatorBar *mNavigatorBar;
532 532
533 KDateNavigator *mDateNavigator; // widget showing small month view. 533 KDateNavigator *mDateNavigator; // widget showing small month view.
534 534
535 KOFilterView *mFilterView; 535 KOFilterView *mFilterView;
536 536
537 ResourceView *mResourceView; 537 ResourceView *mResourceView;
538 538
539 // calendar object for this viewing instance 539 // calendar object for this viewing instance
540 Calendar *mCalendar; 540 Calendar *mCalendar;
541 541
542 CalendarResourceManager *mResourceManager; 542 CalendarResourceManager *mResourceManager;
543 543
544 FileStorage *mStorage; 544 FileStorage *mStorage;
545 545
546 DateNavigator *mNavigator; 546 DateNavigator *mNavigator;
547 547
548 KOViewManager *mViewManager; 548 KOViewManager *mViewManager;
549 KODialogManager *mDialogManager; 549 KODialogManager *mDialogManager;
550 550
551 // Calendar filters 551 // Calendar filters
552 QPtrList<CalFilter> mFilters; 552 QPtrList<CalFilter> mFilters;
553 553
554 // various housekeeping variables. 554 // various housekeeping variables.
555 bool mModified; // flag indicating if calendar is modified 555 bool mModified; // flag indicating if calendar is modified
556 bool mReadOnly; // flag indicating if calendar is read-only 556 bool mReadOnly; // flag indicating if calendar is read-only
557 QDate mSaveSingleDate; 557 QDate mSaveSingleDate;
558 558
559 Incidence *mSelectedIncidence; 559 Incidence *mSelectedIncidence;
560 Incidence *mMoveIncidence; 560 Incidence *mMoveIncidence;
561 QDate mMoveIncidenceOldDate; 561 QDate mMoveIncidenceOldDate;
562 KOTodoView *mTodoList; 562 KOTodoView *mTodoList;
563 KOEventEditor * mEventEditor; 563 KOEventEditor * mEventEditor;
564 KOTodoEditor * mTodoEditor; 564 KOTodoEditor * mTodoEditor;
565 KOEventViewerDialog * mEventViewerDialog; 565 KOEventViewerDialog * mEventViewerDialog;
566 void keyPressEvent ( QKeyEvent *e) ; 566 void keyPressEvent ( QKeyEvent *e) ;
567 //QMap<Incidence*,KOIncidenceEditor*> mDialogList; 567 //QMap<Incidence*,KOIncidenceEditor*> mDialogList;
568}; 568};
569 569
570 570
571class CalendarViewVisitor : public Incidence::Visitor 571class CalendarViewVisitor : public Incidence::Visitor
572{ 572{
573 public: 573 public:
574 CalendarViewVisitor() : mView( 0 ) {} 574 CalendarViewVisitor() : mView( 0 ) {}
575 575
576 bool act( Incidence *incidence, CalendarView *view ) 576 bool act( Incidence *incidence, CalendarView *view )
577 { 577 {
578 mView = view; 578 mView = view;
579 return incidence->accept( *this ); 579 return incidence->accept( *this );
580 } 580 }
581 581
582 protected: 582 protected:
583 CalendarView *mView; 583 CalendarView *mView;
584}; 584};
diff --git a/korganizer/koeditorgeneral.cpp b/korganizer/koeditorgeneral.cpp
index 94e1f4c..b4fe965 100644
--- a/korganizer/koeditorgeneral.cpp
+++ b/korganizer/koeditorgeneral.cpp
@@ -190,212 +190,226 @@ void KOEditorGeneral::initAlarm(QWidget *parent,QBoxLayout *topLayout)
190 mAlarmIncrCombo->insertItem(i18n("min")); 190 mAlarmIncrCombo->insertItem(i18n("min"));
191 mAlarmIncrCombo->insertItem(i18n("hou")); 191 mAlarmIncrCombo->insertItem(i18n("hou"));
192 mAlarmIncrCombo->insertItem(i18n("day")); 192 mAlarmIncrCombo->insertItem(i18n("day"));
193 mAlarmTimeEdit->setMaximumWidth( mAlarmTimeEdit->sizeHint().width() ); 193 mAlarmTimeEdit->setMaximumWidth( mAlarmTimeEdit->sizeHint().width() );
194 mAlarmIncrCombo->setMaximumWidth( mAlarmIncrCombo->sizeHint().width() ); 194 mAlarmIncrCombo->setMaximumWidth( mAlarmIncrCombo->sizeHint().width() );
195 } else { 195 } else {
196 mAlarmIncrCombo->insertItem(i18n("minute(s)")); 196 mAlarmIncrCombo->insertItem(i18n("minute(s)"));
197 mAlarmIncrCombo->insertItem(i18n("hour(s)")); 197 mAlarmIncrCombo->insertItem(i18n("hour(s)"));
198 mAlarmIncrCombo->insertItem(i18n("day(s)")); 198 mAlarmIncrCombo->insertItem(i18n("day(s)"));
199 } 199 }
200 200
201 // mAlarmIncrCombo->setMinimumHeight(20); 201 // mAlarmIncrCombo->setMinimumHeight(20);
202 alarmLayout->addWidget(mAlarmIncrCombo); 202 alarmLayout->addWidget(mAlarmIncrCombo);
203 mAlarmSoundButton = new QPushButton(parent); 203 mAlarmSoundButton = new QPushButton(parent);
204 mAlarmSoundButton->setPixmap(SmallIcon("playsound")); 204 mAlarmSoundButton->setPixmap(SmallIcon("playsound"));
205 mAlarmSoundButton->setToggleButton(true); 205 mAlarmSoundButton->setToggleButton(true);
206 QToolTip::add(mAlarmSoundButton, i18n("No sound set")); 206 QToolTip::add(mAlarmSoundButton, i18n("No sound set"));
207 connect(mAlarmSoundButton, SIGNAL(clicked()), SLOT(pickAlarmSound())); 207 connect(mAlarmSoundButton, SIGNAL(clicked()), SLOT(pickAlarmSound()));
208 alarmLayout->addWidget(mAlarmSoundButton); 208 alarmLayout->addWidget(mAlarmSoundButton);
209 209
210 mAlarmProgramButton = new QPushButton(parent); 210 mAlarmProgramButton = new QPushButton(parent);
211 mAlarmProgramButton->setPixmap(SmallIcon("run")); 211 mAlarmProgramButton->setPixmap(SmallIcon("run"));
212 mAlarmProgramButton->setToggleButton(true); 212 mAlarmProgramButton->setToggleButton(true);
213 QToolTip::add(mAlarmProgramButton, i18n("No program set")); 213 QToolTip::add(mAlarmProgramButton, i18n("No program set"));
214 connect(mAlarmProgramButton, SIGNAL(clicked()), SLOT(pickAlarmProgram())); 214 connect(mAlarmProgramButton, SIGNAL(clicked()), SLOT(pickAlarmProgram()));
215 alarmLayout->addWidget(mAlarmProgramButton); 215 alarmLayout->addWidget(mAlarmProgramButton);
216 mAlarmSoundButton->setMaximumWidth( mAlarmSoundButton->sizeHint().width() + 4 ); 216 mAlarmSoundButton->setMaximumWidth( mAlarmSoundButton->sizeHint().width() + 4 );
217 mAlarmProgramButton->setMaximumWidth(mAlarmProgramButton->sizeHint().width() + 4 ); 217 mAlarmProgramButton->setMaximumWidth(mAlarmProgramButton->sizeHint().width() + 4 );
218 // if ( KOPrefs::instance()->mCompactDialogs ) { 218 // if ( KOPrefs::instance()->mCompactDialogs ) {
219 // mAlarmSoundButton->hide(); 219 // mAlarmSoundButton->hide();
220 // mAlarmProgramButton->hide(); 220 // mAlarmProgramButton->hide();
221 // } 221 // }
222} 222}
223 223
224void KOEditorGeneral::pickAlarmSound() 224void KOEditorGeneral::pickAlarmSound()
225{ 225{
226 226
227 //QString prefix = mAlarmSound; 227 //QString prefix = mAlarmSound;
228 if (!mAlarmSoundButton->isOn()) { 228 if (!mAlarmSoundButton->isOn()) {
229 //mAlarmSound = ""; 229 //mAlarmSound = "";
230 QToolTip::remove(mAlarmSoundButton); 230 QToolTip::remove(mAlarmSoundButton);
231 QToolTip::add(mAlarmSoundButton, i18n("No sound set")); 231 QToolTip::add(mAlarmSoundButton, i18n("No sound set"));
232 mAlarmProgramButton->setOn(true); 232 mAlarmProgramButton->setOn(true);
233 mAlarmSoundButton->setOn(false); 233 mAlarmSoundButton->setOn(false);
234 } else { 234 } else {
235 QString fileName(KFileDialog::getOpenFileName(mAlarmSound, 235 QString fileName(KFileDialog::getOpenFileName(mAlarmSound,
236 i18n("*.wav|Wav Files"), 0)); 236 i18n("*.wav|Wav Files"), 0));
237 if (!fileName.isEmpty()) { 237 if (!fileName.isEmpty()) {
238 mAlarmSound = fileName; 238 mAlarmSound = fileName;
239 QToolTip::remove(mAlarmSoundButton); 239 QToolTip::remove(mAlarmSoundButton);
240 QString dispStr = i18n("Playing '%1'").arg(fileName); 240 QString dispStr = i18n("Playing '%1'").arg(fileName);
241 QToolTip::add(mAlarmSoundButton, dispStr); 241 QToolTip::add(mAlarmSoundButton, dispStr);
242 mAlarmProgramButton->setOn(false); 242 mAlarmProgramButton->setOn(false);
243 mAlarmSoundButton->setOn(true); 243 mAlarmSoundButton->setOn(true);
244 } else { 244 } else {
245 mAlarmProgramButton->setOn(true); 245 mAlarmProgramButton->setOn(true);
246 mAlarmSoundButton->setOn(false); 246 mAlarmSoundButton->setOn(false);
247 247
248 } 248 }
249 } 249 }
250 250
251 if (mAlarmProgramButton->isOn()) 251 if (mAlarmProgramButton->isOn())
252 ((QWidget*)parent())->topLevelWidget()->setCaption(i18n("Proc.Al.: ") + mAlarmProgram ); 252 ((QWidget*)parent())->topLevelWidget()->setCaption(i18n("Proc.Al.: ") + mAlarmProgram );
253 if ( mAlarmSoundButton->isOn()) 253 if ( mAlarmSoundButton->isOn())
254 ((QWidget*)parent())->topLevelWidget()->setCaption(i18n("Audio.Al.: ") + mAlarmSound ); 254 ((QWidget*)parent())->topLevelWidget()->setCaption(i18n("Audio.Al.: ") + mAlarmSound );
255} 255}
256 256
257void KOEditorGeneral::pickAlarmProgram() 257void KOEditorGeneral::pickAlarmProgram()
258{ 258{
259 if (!mAlarmProgramButton->isOn()) { 259 if (!mAlarmProgramButton->isOn()) {
260 //mAlarmProgram = ""; 260 //mAlarmProgram = "";
261 QToolTip::remove(mAlarmProgramButton); 261 QToolTip::remove(mAlarmProgramButton);
262 QToolTip::add(mAlarmProgramButton, i18n("No program set")); 262 QToolTip::add(mAlarmProgramButton, i18n("No program set"));
263 mAlarmProgramButton->setOn(false); 263 mAlarmProgramButton->setOn(false);
264 mAlarmSoundButton->setOn(true); 264 mAlarmSoundButton->setOn(true);
265 } else { 265 } else {
266 QString fileName(KFileDialog::getOpenFileName(mAlarmProgram,i18n("Procedure Alarm.: ") , 0)); 266 QString fileName(KFileDialog::getOpenFileName(mAlarmProgram,i18n("Procedure Alarm.: ") , 0));
267 if (!fileName.isEmpty()) { 267 if (!fileName.isEmpty()) {
268 mAlarmProgram = fileName; 268 mAlarmProgram = fileName;
269 QToolTip::remove(mAlarmProgramButton); 269 QToolTip::remove(mAlarmProgramButton);
270 QString dispStr = i18n("Running '%1'").arg(fileName); 270 QString dispStr = i18n("Running '%1'").arg(fileName);
271 QToolTip::add(mAlarmProgramButton, dispStr); 271 QToolTip::add(mAlarmProgramButton, dispStr);
272 mAlarmSoundButton->setOn(false); 272 mAlarmSoundButton->setOn(false);
273 mAlarmProgramButton->setOn(true); 273 mAlarmProgramButton->setOn(true);
274 } else { 274 } else {
275 mAlarmProgramButton->setOn(false); 275 mAlarmProgramButton->setOn(false);
276 mAlarmSoundButton->setOn(true); 276 mAlarmSoundButton->setOn(true);
277 } 277 }
278 } 278 }
279 if (mAlarmProgramButton->isOn()) 279 if (mAlarmProgramButton->isOn())
280 ((QWidget*)parent())->topLevelWidget()->setCaption(i18n("Proc.Al.: ") + mAlarmProgram ); 280 ((QWidget*)parent())->topLevelWidget()->setCaption(i18n("Proc.Al.: ") + mAlarmProgram );
281 if ( mAlarmSoundButton->isOn()) 281 if ( mAlarmSoundButton->isOn())
282 ((QWidget*)parent())->topLevelWidget()->setCaption(i18n("Sound.Al.: ") + mAlarmSound ); 282 ((QWidget*)parent())->topLevelWidget()->setCaption(i18n("Sound.Al.: ") + mAlarmSound );
283} 283}
284 284
285 285
286QString KOEditorGeneral::getFittingPath( const QString s )
287{
288 int maxlen = 50;
289 if ( QApplication::desktop()->width() < 640 ) {
290 if ( QApplication::desktop()->width() < 320 )
291 maxlen = 22;
292 else
293 maxlen = 35;
294 }
295 if ( s.length() > maxlen ) {
296 return "..."+s.right(maxlen -3);
297 }
298 return s;
299}
286 300
287void KOEditorGeneral::enableAlarmEdit(bool enable) 301void KOEditorGeneral::enableAlarmEdit(bool enable)
288{ 302{
289 if ( enable ) { 303 if ( enable ) {
290 if (!mAlarmProgramButton->isOn() && !mAlarmSoundButton->isOn()) { 304 if (!mAlarmProgramButton->isOn() && !mAlarmSoundButton->isOn()) {
291 mAlarmSoundButton->setOn( true ); 305 mAlarmSoundButton->setOn( true );
292 if ( mAlarmSound.isEmpty() ) 306 if ( mAlarmSound.isEmpty() )
293 mAlarmSound = KOPrefs::instance()->mDefaultAlarmFile; 307 mAlarmSound = KOPrefs::instance()->mDefaultAlarmFile;
294 else { 308 else {
295 if ( ! QFile::exists( mAlarmSound ) ) 309 if ( ! QFile::exists( mAlarmSound ) )
296 mAlarmSound = KOPrefs::instance()->mDefaultAlarmFile; 310 mAlarmSound = KOPrefs::instance()->mDefaultAlarmFile;
297 } 311 }
298 } 312 }
299 if (mAlarmProgramButton->isOn()) 313 if (mAlarmProgramButton->isOn())
300 ((QWidget*)parent())->topLevelWidget()->setCaption(i18n("Proc.Al.: ") + mAlarmProgram ); 314 ((QWidget*)parent())->topLevelWidget()->setCaption(i18n("Proc.Al.: ") + getFittingPath(mAlarmProgram) );
301 if (!mAlarmSound.isEmpty() && mAlarmSoundButton->isOn()) 315 if (!mAlarmSound.isEmpty() && mAlarmSoundButton->isOn())
302 ((QWidget*)parent())->topLevelWidget()->setCaption(i18n("Sound.Al.: ") + mAlarmSound ); 316 ((QWidget*)parent())->topLevelWidget()->setCaption(i18n("Audio Al.: ") + getFittingPath(mAlarmSound) );
303 } 317 }
304 else { 318 else {
305 ((QWidget*)parent())->topLevelWidget()->setCaption(i18n("Alarm disabled")); 319 ((QWidget*)parent())->topLevelWidget()->setCaption(i18n("Alarm disabled for this item"));
306 320
307 } 321 }
308 mAlarmTimeEdit->setEnabled(enable); 322 mAlarmTimeEdit->setEnabled(enable);
309 mAlarmSoundButton->setEnabled(enable); 323 mAlarmSoundButton->setEnabled(enable);
310 mAlarmProgramButton->setEnabled(enable); 324 mAlarmProgramButton->setEnabled(enable);
311 mAlarmIncrCombo->setEnabled(enable); 325 mAlarmIncrCombo->setEnabled(enable);
312} 326}
313 327
314void KOEditorGeneral::disableAlarmEdit(bool disable) 328void KOEditorGeneral::disableAlarmEdit(bool disable)
315{ 329{
316 enableAlarmEdit( !disable ); 330 enableAlarmEdit( !disable );
317} 331}
318 332
319void KOEditorGeneral::enableAlarm( bool enable ) 333void KOEditorGeneral::enableAlarm( bool enable )
320{ 334{
321 enableAlarmEdit( enable ); 335 enableAlarmEdit( enable );
322} 336}
323 337
324void KOEditorGeneral::alarmDisable(bool disable) 338void KOEditorGeneral::alarmDisable(bool disable)
325{ 339{
326 if (!disable) { 340 if (!disable) {
327 //mAlarmBell->setEnabled(true); 341 //mAlarmBell->setEnabled(true);
328 mAlarmButton->setEnabled(true); 342 mAlarmButton->setEnabled(true);
329 } else { 343 } else {
330 //mAlarmBell->setEnabled(false); 344 //mAlarmBell->setEnabled(false);
331 mAlarmButton->setEnabled(false); 345 mAlarmButton->setEnabled(false);
332 mAlarmButton->setChecked(false); 346 mAlarmButton->setChecked(false);
333 mAlarmTimeEdit->setEnabled(false); 347 mAlarmTimeEdit->setEnabled(false);
334 mAlarmSoundButton->setEnabled(false); 348 mAlarmSoundButton->setEnabled(false);
335 mAlarmProgramButton->setEnabled(false); 349 mAlarmProgramButton->setEnabled(false);
336 mAlarmIncrCombo->setEnabled(false); 350 mAlarmIncrCombo->setEnabled(false);
337 } 351 }
338} 352}
339 353
340void KOEditorGeneral::setCategories(const QString &str) 354void KOEditorGeneral::setCategories(const QString &str)
341{ 355{
342 mCategoriesLabel->setText(str); 356 mCategoriesLabel->setText(str);
343} 357}
344 358
345void KOEditorGeneral::setDefaults(bool allDay) 359void KOEditorGeneral::setDefaults(bool allDay)
346{ 360{
347#if 0 361#if 0
348 mOwnerLabel->setText(i18n("Owner: ") + KOPrefs::instance()->fullName()); 362 mOwnerLabel->setText(i18n("Owner: ") + KOPrefs::instance()->fullName());
349#endif 363#endif
350 364
351 enableAlarmEdit( !allDay ); 365 enableAlarmEdit( !allDay );
352 366
353 // TODO: Implement a KPrefsComboItem to solve this in a clean way. 367 // TODO: Implement a KPrefsComboItem to solve this in a clean way.
354 int alarmTime; 368 int alarmTime;
355 int a[] = { 1,5,10,15,30,60,180, 1440 }; 369 int a[] = { 1,5,10,15,30,60,180, 1440 };
356 int index = KOPrefs::instance()->mAlarmTime; 370 int index = KOPrefs::instance()->mAlarmTime;
357 if (index < 0 || index > 7) { 371 if (index < 0 || index > 7) {
358 alarmTime = 15; 372 alarmTime = 15;
359 } else { 373 } else {
360 alarmTime = a[index]; 374 alarmTime = a[index];
361 } 375 }
362 mAlarmButton ->setChecked( false ); 376 mAlarmButton ->setChecked( false );
363 mAlarmTimeEdit->setValue(alarmTime); 377 mAlarmTimeEdit->setValue(alarmTime);
364 mAlarmIncrCombo->setCurrentItem(0); 378 mAlarmIncrCombo->setCurrentItem(0);
365 enableAlarmEdit( false ); 379 enableAlarmEdit( false );
366 //alarmDisable (false); 380 //alarmDisable (false);
367 mSecrecyCombo->setCurrentItem(Incidence::SecrecyPublic); 381 mSecrecyCombo->setCurrentItem(Incidence::SecrecyPublic);
368 mCancelBox->setChecked( false ); 382 mCancelBox->setChecked( false );
369 mSummaryEdit->setEditText(""); 383 mSummaryEdit->setEditText("");
370 mLocationEdit->setEditText(""); 384 mLocationEdit->setEditText("");
371 mDescriptionEdit->setText(""); 385 mDescriptionEdit->setText("");
372 mAlarmSound = KOPrefs::instance()->mDefaultAlarmFile; 386 mAlarmSound = KOPrefs::instance()->mDefaultAlarmFile;
373 setCategories(""); 387 setCategories("");
374} 388}
375void KOEditorGeneral::setSecrecy( int num ) 389void KOEditorGeneral::setSecrecy( int num )
376{ 390{
377 mSecrecyCombo->setCurrentItem(num); 391 mSecrecyCombo->setCurrentItem(num);
378} 392}
379void KOEditorGeneral::readIncidence(Incidence *event) 393void KOEditorGeneral::readIncidence(Incidence *event)
380{ 394{
381 395
382 mAlarmIncrCombo->setCurrentItem(0); 396 mAlarmIncrCombo->setCurrentItem(0);
383 mSummaryEdit->setEditText(event->summary()); 397 mSummaryEdit->setEditText(event->summary());
384 mLocationEdit->setEditText(event->location()); 398 mLocationEdit->setEditText(event->location());
385 mDescriptionEdit->setText(event->description()); 399 mDescriptionEdit->setText(event->description());
386 400
387#if 0 401#if 0
388 // organizer information 402 // organizer information
389 mOwnerLabel->setText(i18n("Owner: ") + event->organizer()); 403 mOwnerLabel->setText(i18n("Owner: ") + event->organizer());
390#endif 404#endif
391 405
392 enableAlarmEdit( event->isAlarmEnabled() ); 406 enableAlarmEdit( event->isAlarmEnabled() );
393 //qDebug("KOEditorGeneral::readIncidence(Incidence *event) "); 407 //qDebug("KOEditorGeneral::readIncidence(Incidence *event) ");
394 if(!event->isAlarmEnabled()) { 408 if(!event->isAlarmEnabled()) {
395 // TODO: Implement a KPrefsComboItem to solve this in a clean way. 409 // TODO: Implement a KPrefsComboItem to solve this in a clean way.
396 int alarmTime; 410 int alarmTime;
397 int a[] = { 1,5,10,15,30,60,180, 1440 }; 411 int a[] = { 1,5,10,15,30,60,180, 1440 };
398 int index = KOPrefs::instance()->mAlarmTime; 412 int index = KOPrefs::instance()->mAlarmTime;
399 if (index < 0 || index > 7) { 413 if (index < 0 || index > 7) {
400 alarmTime = 15; 414 alarmTime = 15;
401 } else { 415 } else {
diff --git a/korganizer/koeditorgeneral.h b/korganizer/koeditorgeneral.h
index c58335e..de8edaf 100644
--- a/korganizer/koeditorgeneral.h
+++ b/korganizer/koeditorgeneral.h
@@ -12,101 +12,102 @@
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#ifndef KOEDITORGENERAL_H 23#ifndef KOEDITORGENERAL_H
24#define KOEDITORGENERAL_H 24#define KOEDITORGENERAL_H
25 25
26#include <qframe.h> 26#include <qframe.h>
27#include <qlabel.h> 27#include <qlabel.h>
28#include <qcheckbox.h> 28#include <qcheckbox.h>
29#include <qpushbutton.h> 29#include <qpushbutton.h>
30#include <qgroupbox.h> 30#include <qgroupbox.h>
31#include <qlineedit.h> 31#include <qlineedit.h>
32#include <qcombobox.h> 32#include <qcombobox.h>
33#include <qlistview.h> 33#include <qlistview.h>
34#include <qradiobutton.h> 34#include <qradiobutton.h>
35#include <qlayout.h> 35#include <qlayout.h>
36#include <qspinbox.h> 36#include <qspinbox.h>
37 37
38#include <ktextedit.h> 38#include <ktextedit.h>
39#include <krestrictedline.h> 39#include <krestrictedline.h>
40 40
41#include <libkcal/incidence.h> 41#include <libkcal/incidence.h>
42 42
43#include "ktimeedit.h" 43#include "ktimeedit.h"
44 44
45class KDateEdit; 45class KDateEdit;
46class KOLocationBox; 46class KOLocationBox;
47using namespace KCal; 47using namespace KCal;
48 48
49class KOEditorGeneral : public QObject 49class KOEditorGeneral : public QObject
50{ 50{
51 Q_OBJECT 51 Q_OBJECT
52 public: 52 public:
53 KOEditorGeneral (QObject* parent=0,const char* name=0); 53 KOEditorGeneral (QObject* parent=0,const char* name=0);
54 virtual ~KOEditorGeneral(); 54 virtual ~KOEditorGeneral();
55 void setFocusOn( int i ); 55 void setFocusOn( int i );
56 void initHeader(QWidget *,QBoxLayout *); 56 void initHeader(QWidget *,QBoxLayout *);
57 void initDescription(QWidget *,QBoxLayout *); 57 void initDescription(QWidget *,QBoxLayout *);
58 void initSecrecy(QWidget *,QBoxLayout *); 58 void initSecrecy(QWidget *,QBoxLayout *);
59 void initCategories(QWidget *,QBoxLayout *); 59 void initCategories(QWidget *,QBoxLayout *);
60 void initAlarm(QWidget *,QBoxLayout *); 60 void initAlarm(QWidget *,QBoxLayout *);
61 61
62 /** Set widgets to default values */ 62 /** Set widgets to default values */
63 void setDefaults(bool allDay); 63 void setDefaults(bool allDay);
64 /** Read event object and setup widgets accordingly */ 64 /** Read event object and setup widgets accordingly */
65 void readIncidence(Incidence *); 65 void readIncidence(Incidence *);
66 /** Write event settings to event object */ 66 /** Write event settings to event object */
67 void writeIncidence(Incidence *); 67 void writeIncidence(Incidence *);
68 68
69 /** Check if the input is valid. */ 69 /** Check if the input is valid. */
70 bool validateInput() { return true; } 70 bool validateInput() { return true; }
71 71
72 void enableAlarm( bool enable ); 72 void enableAlarm( bool enable );
73 void setSecrecy( int num ); 73 void setSecrecy( int num );
74 public slots: 74 public slots:
75 void setCategories(const QString &); 75 void setCategories(const QString &);
76 void editCategories(); 76 void editCategories();
77 77
78 protected slots: 78 protected slots:
79 void enableAlarmEdit( bool enable ); 79 void enableAlarmEdit( bool enable );
80 void disableAlarmEdit( bool disable ); 80 void disableAlarmEdit( bool disable );
81 void alarmDisable( bool disable ); 81 void alarmDisable( bool disable );
82 void pickAlarmSound(); 82 void pickAlarmSound();
83 void pickAlarmProgram(); 83 void pickAlarmProgram();
84 84
85 signals: 85 signals:
86 void openCategoryDialog(); 86 void openCategoryDialog();
87 void allAccepted(); 87 void allAccepted();
88 88
89 protected: 89 protected:
90 //QLineEdit *mSummaryEdit; 90 //QLineEdit *mSummaryEdit;
91 //QLineEdit *mLocationEdit; 91 //QLineEdit *mLocationEdit;
92 KOLocationBox *mSummaryEdit; 92 KOLocationBox *mSummaryEdit;
93 KOLocationBox *mLocationEdit; 93 KOLocationBox *mLocationEdit;
94 QLabel *mAlarmBell; 94 QLabel *mAlarmBell;
95 QCheckBox *mAlarmButton; 95 QCheckBox *mAlarmButton;
96 QSpinBox *mAlarmTimeEdit; 96 QSpinBox *mAlarmTimeEdit;
97 QPushButton *mAlarmSoundButton; 97 QPushButton *mAlarmSoundButton;
98 QPushButton *mAlarmProgramButton; 98 QPushButton *mAlarmProgramButton;
99 QComboBox *mAlarmIncrCombo; 99 QComboBox *mAlarmIncrCombo;
100 KTextEdit *mDescriptionEdit; 100 KTextEdit *mDescriptionEdit;
101 QLabel *mOwnerLabel; 101 QLabel *mOwnerLabel;
102 QComboBox *mSecrecyCombo; 102 QComboBox *mSecrecyCombo;
103 QCheckBox *mCancelBox; 103 QCheckBox *mCancelBox;
104 QPushButton *mCategoriesButton; 104 QPushButton *mCategoriesButton;
105 QLabel *mCategoriesLabel; 105 QLabel *mCategoriesLabel;
106 106
107 private: 107 private:
108 QString getFittingPath( const QString ) ;
108 QString mAlarmSound; 109 QString mAlarmSound;
109 QString mAlarmProgram; 110 QString mAlarmProgram;
110}; 111};
111 112
112#endif 113#endif
diff --git a/korganizer/kotodoview.cpp b/korganizer/kotodoview.cpp
index 97b4a03..30adb06 100644
--- a/korganizer/kotodoview.cpp
+++ b/korganizer/kotodoview.cpp
@@ -725,198 +725,193 @@ void KOTodoView::editItem(QListViewItem *item )
725 emit editTodoSignal(((KOTodoViewItem *)item)->todo()); 725 emit editTodoSignal(((KOTodoViewItem *)item)->todo());
726} 726}
727 727
728void KOTodoView::showItem(QListViewItem *item,const QPoint &,int) 728void KOTodoView::showItem(QListViewItem *item,const QPoint &,int)
729{ 729{
730 emit showTodoSignal(((KOTodoViewItem *)item)->todo()); 730 emit showTodoSignal(((KOTodoViewItem *)item)->todo());
731} 731}
732 732
733void KOTodoView::popupMenu(QListViewItem *item,const QPoint &,int column) 733void KOTodoView::popupMenu(QListViewItem *item,const QPoint &,int column)
734{ 734{
735 pendingSubtodo = 0; 735 pendingSubtodo = 0;
736 mActiveItem = (KOTodoViewItem *)item; 736 mActiveItem = (KOTodoViewItem *)item;
737 if (item) { 737 if (item) {
738 switch (column){ 738 switch (column){
739 case 1: 739 case 1:
740 mPriorityPopupMenu->popup(QCursor::pos ()); break; 740 mPriorityPopupMenu->popup(QCursor::pos ()); break;
741 case 2: 741 case 2:
742 mPercentageCompletedPopupMenu->popup(QCursor::pos ()); break; 742 mPercentageCompletedPopupMenu->popup(QCursor::pos ()); break;
743 case 3: 743 case 3:
744 moveTodo(); 744 moveTodo();
745 break; 745 break;
746 case 8: 746 case 8:
747 getCategoryPopupMenu((KOTodoViewItem *)item)->popup(QCursor::pos ()); break; 747 getCategoryPopupMenu((KOTodoViewItem *)item)->popup(QCursor::pos ()); break;
748 default: 748 default:
749 mItemPopupMenu->popup(QCursor::pos()); 749 mItemPopupMenu->popup(QCursor::pos());
750 } 750 }
751 } else mPopupMenu->popup(QCursor::pos()); 751 } else mPopupMenu->popup(QCursor::pos());
752} 752}
753void KOTodoView::newTodo() 753void KOTodoView::newTodo()
754{ 754{
755 emit newTodoSignal(); 755 emit newTodoSignal();
756} 756}
757 757
758void KOTodoView::newSubTodo() 758void KOTodoView::newSubTodo()
759{ 759{
760 if (mActiveItem) { 760 if (mActiveItem) {
761 emit newSubTodoSignal(mActiveItem->todo()); 761 emit newSubTodoSignal(mActiveItem->todo());
762 } 762 }
763} 763}
764void KOTodoView::unparentTodo() 764void KOTodoView::unparentTodo()
765{ 765{
766 if (mActiveItem) { 766 if (mActiveItem) {
767 emit unparentTodoSignal(mActiveItem->todo()); 767 emit unparentTodoSignal(mActiveItem->todo());
768 } 768 }
769} 769}
770 770
771void KOTodoView::reparentTodo() 771void KOTodoView::reparentTodo()
772{ 772{
773 if (mActiveItem) { 773 if (mActiveItem) {
774 qDebug("KOTodoView::reparentTodo() "); 774 qDebug("KOTodoView::reparentTodo() ");
775 topLevelWidget()->setCaption(i18n("Click on new parent item")); 775 topLevelWidget()->setCaption(i18n("Click on new parent item"));
776 pendingSubtodo = mActiveItem; 776 pendingSubtodo = mActiveItem;
777 } 777 }
778} 778}
779void KOTodoView::editTodo() 779void KOTodoView::editTodo()
780{ 780{
781 if (mActiveItem) { 781 if (mActiveItem) {
782 emit editTodoSignal(mActiveItem->todo()); 782 emit editTodoSignal(mActiveItem->todo());
783 } 783 }
784} 784}
785void KOTodoView::cloneTodo() 785void KOTodoView::cloneTodo()
786{ 786{
787 if (mActiveItem) { 787 if (mActiveItem) {
788 emit cloneTodoSignal((Incidence*)mActiveItem->todo()); 788 emit cloneTodoSignal((Incidence*)mActiveItem->todo());
789 } 789 }
790} 790}
791void KOTodoView::cancelTodo() 791void KOTodoView::cancelTodo()
792{ 792{
793 if (mActiveItem) { 793 if (mActiveItem) {
794 emit cancelTodoSignal((Incidence*)mActiveItem->todo()); 794 emit cancelTodoSignal((Incidence*)mActiveItem->todo());
795 } 795 }
796} 796}
797void KOTodoView::moveTodo() 797void KOTodoView::moveTodo()
798{ 798{
799 if (mActiveItem) { 799 if (mActiveItem) {
800 emit moveTodoSignal((Incidence*)mActiveItem->todo()); 800 emit moveTodoSignal((Incidence*)mActiveItem->todo());
801 } 801 }
802} 802}
803void KOTodoView::beamTodo() 803void KOTodoView::beamTodo()
804{ 804{
805 if (mActiveItem) { 805 if (mActiveItem) {
806 emit beamTodoSignal((Incidence*)mActiveItem->todo()); 806 emit beamTodoSignal((Incidence*)mActiveItem->todo());
807 } 807 }
808} 808}
809 809
810 810
811void KOTodoView::showTodo() 811void KOTodoView::showTodo()
812{ 812{
813 if (mActiveItem) { 813 if (mActiveItem) {
814 emit showTodoSignal(mActiveItem->todo()); 814 emit showTodoSignal(mActiveItem->todo());
815 } 815 }
816} 816}
817 817
818void KOTodoView::deleteTodo() 818void KOTodoView::deleteTodo()
819{ 819{
820 if (mActiveItem) { 820 if (mActiveItem) {
821 if (mActiveItem->childCount()) {
822 KMessageBox::sorry(this,i18n("Cannot delete To-Do which has children."),
823 i18n("Delete To-Do"));
824 } else {
825 emit deleteTodoSignal(mActiveItem->todo()); 821 emit deleteTodoSignal(mActiveItem->todo());
826 }
827 } 822 }
828} 823}
829 824
830void KOTodoView::setNewPriority(int index) 825void KOTodoView::setNewPriority(int index)
831{ 826{
832 if (mActiveItem && !mActiveItem->todo()->isReadOnly ()) { 827 if (mActiveItem && !mActiveItem->todo()->isReadOnly ()) {
833 mActiveItem->todo()->setPriority(mPriority[index]); 828 mActiveItem->todo()->setPriority(mPriority[index]);
834 mActiveItem->construct(); 829 mActiveItem->construct();
835 todoModified (mActiveItem->todo(), KOGlobals::PRIORITY_MODIFIED); 830 todoModified (mActiveItem->todo(), KOGlobals::PRIORITY_MODIFIED);
836 mActiveItem->todo()->setRevision( mActiveItem->todo()->revision()+1 ); 831 mActiveItem->todo()->setRevision( mActiveItem->todo()->revision()+1 );
837 } 832 }
838} 833}
839 834
840void KOTodoView::setNewPercentage(int index) 835void KOTodoView::setNewPercentage(int index)
841{ 836{
842 if (mActiveItem && !mActiveItem->todo()->isReadOnly ()) { 837 if (mActiveItem && !mActiveItem->todo()->isReadOnly ()) {
843 if (mPercentage[index] == 100) { 838 if (mPercentage[index] == 100) {
844 mActiveItem->todo()->setCompleted(QDateTime::currentDateTime()); 839 mActiveItem->todo()->setCompleted(QDateTime::currentDateTime());
845 } else { 840 } else {
846 mActiveItem->todo()->setCompleted(false); 841 mActiveItem->todo()->setCompleted(false);
847 } 842 }
848 mActiveItem->todo()->setPercentComplete(mPercentage[index]); 843 mActiveItem->todo()->setPercentComplete(mPercentage[index]);
849 mActiveItem->construct(); 844 mActiveItem->construct();
850 todoModified (mActiveItem->todo (), KOGlobals::COMPLETION_MODIFIED); 845 todoModified (mActiveItem->todo (), KOGlobals::COMPLETION_MODIFIED);
851 mActiveItem->todo()->setRevision( mActiveItem->todo()->revision()+1 ); 846 mActiveItem->todo()->setRevision( mActiveItem->todo()->revision()+1 );
852 } 847 }
853} 848}
854 849
855 850
856QPopupMenu * KOTodoView::getCategoryPopupMenu (KOTodoViewItem *todoItem) 851QPopupMenu * KOTodoView::getCategoryPopupMenu (KOTodoViewItem *todoItem)
857{ 852{
858 QPopupMenu* tempMenu = new QPopupMenu (this); 853 QPopupMenu* tempMenu = new QPopupMenu (this);
859 QStringList checkedCategories = todoItem->todo()->categories (); 854 QStringList checkedCategories = todoItem->todo()->categories ();
860 855
861 tempMenu->setCheckable (true); 856 tempMenu->setCheckable (true);
862 for (QStringList::Iterator it = KOPrefs::instance()->mCustomCategories.begin (); 857 for (QStringList::Iterator it = KOPrefs::instance()->mCustomCategories.begin ();
863 it != KOPrefs::instance()->mCustomCategories.end (); 858 it != KOPrefs::instance()->mCustomCategories.end ();
864 ++it) { 859 ++it) {
865 int index = tempMenu->insertItem (*it); 860 int index = tempMenu->insertItem (*it);
866 mCategory[index] = *it; 861 mCategory[index] = *it;
867 if (checkedCategories.find (*it) != checkedCategories.end ()) tempMenu->setItemChecked (index, true); 862 if (checkedCategories.find (*it) != checkedCategories.end ()) tempMenu->setItemChecked (index, true);
868 } 863 }
869 864
870 connect (tempMenu, SIGNAL (activated (int)), SLOT (changedCategories (int))); 865 connect (tempMenu, SIGNAL (activated (int)), SLOT (changedCategories (int)));
871 return tempMenu; 866 return tempMenu;
872 867
873 868
874} 869}
875void KOTodoView::changedCategories(int index) 870void KOTodoView::changedCategories(int index)
876{ 871{
877 if (mActiveItem && !mActiveItem->todo()->isReadOnly ()) { 872 if (mActiveItem && !mActiveItem->todo()->isReadOnly ()) {
878 QStringList categories = mActiveItem->todo()->categories (); 873 QStringList categories = mActiveItem->todo()->categories ();
879 if (categories.find (mCategory[index]) != categories.end ()) 874 if (categories.find (mCategory[index]) != categories.end ())
880 categories.remove (mCategory[index]); 875 categories.remove (mCategory[index]);
881 else 876 else
882 categories.insert (categories.end(), mCategory[index]); 877 categories.insert (categories.end(), mCategory[index]);
883 categories.sort (); 878 categories.sort ();
884 mActiveItem->todo()->setCategories (categories); 879 mActiveItem->todo()->setCategories (categories);
885 mActiveItem->construct(); 880 mActiveItem->construct();
886 mActiveItem->todo()->setRevision( mActiveItem->todo()->revision()+1 ); 881 mActiveItem->todo()->setRevision( mActiveItem->todo()->revision()+1 );
887 todoModified (mActiveItem->todo (), KOGlobals::CATEGORY_MODIFIED); 882 todoModified (mActiveItem->todo (), KOGlobals::CATEGORY_MODIFIED);
888 } 883 }
889} 884}
890void KOTodoView::itemDoubleClicked(QListViewItem *item) 885void KOTodoView::itemDoubleClicked(QListViewItem *item)
891{ 886{
892 if ( pendingSubtodo != 0 ) { 887 if ( pendingSubtodo != 0 ) {
893 topLevelWidget()->setCaption(i18n("Reparenting aborted!")); 888 topLevelWidget()->setCaption(i18n("Reparenting aborted!"));
894 } 889 }
895 pendingSubtodo = 0; 890 pendingSubtodo = 0;
896 if (!item) { 891 if (!item) {
897 newTodo(); 892 newTodo();
898 return; 893 return;
899 } 894 }
900 if ( KOPrefs::instance()->mEditOnDoubleClick ) 895 if ( KOPrefs::instance()->mEditOnDoubleClick )
901 editItem( item ); 896 editItem( item );
902 else 897 else
903 showItem( item , QPoint(), 0 ); 898 showItem( item , QPoint(), 0 );
904} 899}
905void KOTodoView::itemClicked(QListViewItem *item) 900void KOTodoView::itemClicked(QListViewItem *item)
906{ 901{
907 902
908 if (!item) { 903 if (!item) {
909 if ( pendingSubtodo != 0 ) { 904 if ( pendingSubtodo != 0 ) {
910 topLevelWidget()->setCaption(i18n("Reparenting aborted!")); 905 topLevelWidget()->setCaption(i18n("Reparenting aborted!"));
911 } 906 }
912 pendingSubtodo = 0; 907 pendingSubtodo = 0;
913 return; 908 return;
914 } 909 }
915 KOTodoViewItem *todoItem = (KOTodoViewItem *)item; 910 KOTodoViewItem *todoItem = (KOTodoViewItem *)item;
916 if ( pendingSubtodo != 0 ) { 911 if ( pendingSubtodo != 0 ) {
917 bool allowReparent = true; 912 bool allowReparent = true;
918 QListViewItem *par = item; 913 QListViewItem *par = item;
919 while ( par ) { 914 while ( par ) {
920 if ( par == pendingSubtodo ) { 915 if ( par == pendingSubtodo ) {
921 allowReparent = false; 916 allowReparent = false;
922 break; 917 break;
diff --git a/korganizer/mainwindow.cpp b/korganizer/mainwindow.cpp
index 151b55b..7b07a2e 100644
--- a/korganizer/mainwindow.cpp
+++ b/korganizer/mainwindow.cpp
@@ -1611,193 +1611,202 @@ void MainWindow::keyPressEvent ( QKeyEvent * e )
1611 mView->editIncidence(); 1611 mView->editIncidence();
1612 break; 1612 break;
1613 case Qt::Key_Plus: 1613 case Qt::Key_Plus:
1614 size = p->mHourSize +2; 1614 size = p->mHourSize +2;
1615 if ( size <= 18 ) 1615 if ( size <= 18 )
1616 configureAgenda( size ); 1616 configureAgenda( size );
1617 break; 1617 break;
1618 case Qt::Key_Minus: 1618 case Qt::Key_Minus:
1619 size = p->mHourSize - 2; 1619 size = p->mHourSize - 2;
1620 if ( size >= 4 ) 1620 if ( size >= 4 )
1621 configureAgenda( size ); 1621 configureAgenda( size );
1622 break; 1622 break;
1623 1623
1624 1624
1625 default: 1625 default:
1626 e->ignore(); 1626 e->ignore();
1627 } 1627 }
1628 if ( pro > 0 ) { 1628 if ( pro > 0 ) {
1629 mView->selectFilter( pro-1 ); 1629 mView->selectFilter( pro-1 );
1630 } 1630 }
1631 if ( showSelectedDates ) { 1631 if ( showSelectedDates ) {
1632 ;// setCaptionToDates(); 1632 ;// setCaptionToDates();
1633 } 1633 }
1634 1634
1635} 1635}
1636 1636
1637void MainWindow::fillFilterMenu() 1637void MainWindow::fillFilterMenu()
1638{ 1638{
1639 selectFilterMenu->clear(); 1639 selectFilterMenu->clear();
1640 bool disable = false; 1640 bool disable = false;
1641 selectFilterMenu->insertItem(i18n ( "Edit Filters" ), 0 ); 1641 selectFilterMenu->insertItem(i18n ( "Edit Filters" ), 0 );
1642 selectFilterMenu->insertSeparator(); 1642 selectFilterMenu->insertSeparator();
1643 if ( mView->filterView()->filtersEnabled() ) { 1643 if ( mView->filterView()->filtersEnabled() ) {
1644 selectFilterMenu->insertItem(i18n ( "Turn filter off" ), 1 ); 1644 selectFilterMenu->insertItem(i18n ( "Turn filter off" ), 1 );
1645 } 1645 }
1646 else { 1646 else {
1647 selectFilterMenu->insertItem(i18n ( "Turn filter on" ), 1 ); 1647 selectFilterMenu->insertItem(i18n ( "Turn filter on" ), 1 );
1648 disable = true; 1648 disable = true;
1649 } 1649 }
1650 selectFilterMenu->insertSeparator(); 1650 selectFilterMenu->insertSeparator();
1651 QPtrList<CalFilter> fili = mView->filters(); 1651 QPtrList<CalFilter> fili = mView->filters();
1652 CalFilter *curfilter = mView->filterView()->selectedFilter(); 1652 CalFilter *curfilter = mView->filterView()->selectedFilter();
1653 CalFilter *filter = fili.first(); 1653 CalFilter *filter = fili.first();
1654 int iii = 2; 1654 int iii = 2;
1655 while(filter) { 1655 while(filter) {
1656 selectFilterMenu->insertItem( filter->name(), iii ); 1656 selectFilterMenu->insertItem( filter->name(), iii );
1657 if ( filter == curfilter) 1657 if ( filter == curfilter)
1658 selectFilterMenu->setItemChecked( iii, true ); 1658 selectFilterMenu->setItemChecked( iii, true );
1659 if ( disable ) 1659 if ( disable )
1660 selectFilterMenu->setItemEnabled( iii, false ); 1660 selectFilterMenu->setItemEnabled( iii, false );
1661 filter = fili.next(); 1661 filter = fili.next();
1662 ++iii; 1662 ++iii;
1663 } 1663 }
1664} 1664}
1665void MainWindow::selectFilter( int fil ) 1665void MainWindow::selectFilter( int fil )
1666{ 1666{
1667 if ( fil == 0 ) { 1667 if ( fil == 0 ) {
1668 mView->editFilters( ); 1668 mView->editFilters( );
1669 } else if ( fil == 1 ){ 1669 } else if ( fil == 1 ){
1670 mView->toggleFilerEnabled( ); 1670 mView->toggleFilerEnabled( );
1671 } else { 1671 } else {
1672 mView->selectFilter( fil-2 ); 1672 mView->selectFilter( fil-2 );
1673 } 1673 }
1674} 1674}
1675void MainWindow::configureToolBar( int item ) 1675void MainWindow::configureToolBar( int item )
1676{ 1676{
1677 1677
1678 configureToolBarMenu->setItemChecked( item, !configureToolBarMenu-> isItemChecked ( item ) ); 1678 configureToolBarMenu->setItemChecked( item, !configureToolBarMenu-> isItemChecked ( item ) );
1679 KOPrefs *p = KOPrefs::instance(); 1679 KOPrefs *p = KOPrefs::instance();
1680 p-> mShowIconStretch= configureToolBarMenu->isItemChecked( 5 ); 1680 p-> mShowIconStretch= configureToolBarMenu->isItemChecked( 5 );
1681 p-> mShowIconNewEvent= configureToolBarMenu->isItemChecked( 10 ); 1681 p-> mShowIconNewEvent= configureToolBarMenu->isItemChecked( 10 );
1682 p->mShowIconNewTodo = configureToolBarMenu->isItemChecked( 20 ); 1682 p->mShowIconNewTodo = configureToolBarMenu->isItemChecked( 20 );
1683 p-> mShowIconSearch= configureToolBarMenu->isItemChecked( 120 ); 1683 p-> mShowIconSearch= configureToolBarMenu->isItemChecked( 120 );
1684 p-> mShowIconList= configureToolBarMenu->isItemChecked( 30 ); 1684 p-> mShowIconList= configureToolBarMenu->isItemChecked( 30 );
1685 p-> mShowIconDay1= configureToolBarMenu->isItemChecked( 40 ); 1685 p-> mShowIconDay1= configureToolBarMenu->isItemChecked( 40 );
1686 p-> mShowIconDay5= configureToolBarMenu->isItemChecked( 50 ); 1686 p-> mShowIconDay5= configureToolBarMenu->isItemChecked( 50 );
1687 p-> mShowIconDay7= configureToolBarMenu->isItemChecked( 60 ); 1687 p-> mShowIconDay7= configureToolBarMenu->isItemChecked( 60 );
1688 p-> mShowIconMonth= configureToolBarMenu->isItemChecked( 70 ); 1688 p-> mShowIconMonth= configureToolBarMenu->isItemChecked( 70 );
1689 p-> mShowIconTodoview= configureToolBarMenu->isItemChecked( 80 ); 1689 p-> mShowIconTodoview= configureToolBarMenu->isItemChecked( 80 );
1690 p-> mShowIconBackFast= configureToolBarMenu->isItemChecked( 200 ); 1690 p-> mShowIconBackFast= configureToolBarMenu->isItemChecked( 200 );
1691 p-> mShowIconBack = configureToolBarMenu->isItemChecked( 210 ); 1691 p-> mShowIconBack = configureToolBarMenu->isItemChecked( 210 );
1692 p-> mShowIconToday= configureToolBarMenu->isItemChecked( 130 ); 1692 p-> mShowIconToday= configureToolBarMenu->isItemChecked( 130 );
1693 p-> mShowIconForward= configureToolBarMenu->isItemChecked( 220 ); 1693 p-> mShowIconForward= configureToolBarMenu->isItemChecked( 220 );
1694 p-> mShowIconForwardFast= configureToolBarMenu->isItemChecked( 230 ); 1694 p-> mShowIconForwardFast= configureToolBarMenu->isItemChecked( 230 );
1695 p-> mShowIconNextDays= configureToolBarMenu->isItemChecked( 100 ); 1695 p-> mShowIconNextDays= configureToolBarMenu->isItemChecked( 100 );
1696 p-> mShowIconNext= configureToolBarMenu->isItemChecked( 110 ); 1696 p-> mShowIconNext= configureToolBarMenu->isItemChecked( 110 );
1697 p-> mShowIconJournal= configureToolBarMenu->isItemChecked( 90 ); 1697 p-> mShowIconJournal= configureToolBarMenu->isItemChecked( 90 );
1698 p-> mShowIconWhatsThis= configureToolBarMenu->isItemChecked( 300 ); 1698 p-> mShowIconWhatsThis= configureToolBarMenu->isItemChecked( 300 );
1699 // initActions(); 1699 // initActions();
1700} 1700}
1701 1701
1702void MainWindow::setCaptionToDates() 1702void MainWindow::setCaptionToDates()
1703{ 1703{
1704 QString selDates; 1704 QString selDates;
1705 selDates = KGlobal::locale()->formatDate(mView->startDate(), true); 1705 selDates = KGlobal::locale()->formatDate(mView->startDate(), true);
1706 if (mView->startDate() < mView->endDate() ) 1706 if (mView->startDate() < mView->endDate() )
1707 selDates += " - " + KGlobal::locale()->formatDate(mView->endDate(), true); 1707 selDates += " - " + KGlobal::locale()->formatDate(mView->endDate(), true);
1708 else {
1709 QString addString;
1710 if ( mView->startDate() == QDateTime::currentDateTime().date() )
1711 addString = i18n("Today");
1712 else if ( mView->startDate() == QDateTime::currentDateTime().date().addDays(1) )
1713 addString = i18n("Tomorrow");
1714 if ( !addString.isEmpty() )
1715 selDates = addString+", "+selDates ;
1716 }
1708 setCaption( i18n("Dates: ") + selDates ); 1717 setCaption( i18n("Dates: ") + selDates );
1709 1718
1710} 1719}
1711// parameter item == 0: reinit 1720// parameter item == 0: reinit
1712void MainWindow::configureAgenda( int item ) 1721void MainWindow::configureAgenda( int item )
1713{ 1722{
1714 1723
1715 KOPrefs *p = KOPrefs::instance(); 1724 KOPrefs *p = KOPrefs::instance();
1716 1725
1717 int i; 1726 int i;
1718 // do not allow 4 for widgets higher than 480 1727 // do not allow 4 for widgets higher than 480
1719 // if ( QApplication::desktop()->height() > 480 ) { 1728 // if ( QApplication::desktop()->height() > 480 ) {
1720// if ( item == 4 ) 1729// if ( item == 4 )
1721// item = 6; 1730// item = 6;
1722// } 1731// }
1723 for ( i = 4; i <= 18; i= i+2 ) 1732 for ( i = 4; i <= 18; i= i+2 )
1724 configureAgendaMenu->setItemChecked( i, false ); 1733 configureAgendaMenu->setItemChecked( i, false );
1725 configureAgendaMenu->setItemChecked( item, true ); 1734 configureAgendaMenu->setItemChecked( item, true );
1726 if ( p->mHourSize == item ) 1735 if ( p->mHourSize == item )
1727 return; 1736 return;
1728 p->mHourSize=item; 1737 p->mHourSize=item;
1729 mView->viewManager()->agendaView()->updateConfig(); 1738 mView->viewManager()->agendaView()->updateConfig();
1730} 1739}
1731 1740
1732void MainWindow::saveCalendar() 1741void MainWindow::saveCalendar()
1733{ 1742{
1734 QString fn = KOPrefs::instance()->mLastSaveFile; 1743 QString fn = KOPrefs::instance()->mLastSaveFile;
1735 fn = KFileDialog::getSaveFileName( fn, i18n("Save backup filename"), this ); 1744 fn = KFileDialog::getSaveFileName( fn, i18n("Save backup filename"), this );
1736 1745
1737 if ( fn == "" ) 1746 if ( fn == "" )
1738 return; 1747 return;
1739 QFileInfo info; 1748 QFileInfo info;
1740 info.setFile( fn ); 1749 info.setFile( fn );
1741 QString mes; 1750 QString mes;
1742 bool createbup = true; 1751 bool createbup = true;
1743 if ( info. exists() ) { 1752 if ( info. exists() ) {
1744 mes = i18n("Backup file\nalready exists!\nOld backup file from:\n%1\nOverwrite?\n").arg(KGlobal::locale()->formatDateTime(info.lastModified (), true, false )) ; 1753 mes = i18n("Backup file\nalready exists!\nOld backup file from:\n%1\nOverwrite?\n").arg(KGlobal::locale()->formatDateTime(info.lastModified (), true, false )) ;
1745 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),mes, 1754 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),mes,
1746 i18n("Overwrite!"), i18n("Cancel"), 0, 1755 i18n("Overwrite!"), i18n("Cancel"), 0,
1747 0, 1 ); 1756 0, 1 );
1748 if ( result != 0 ) { 1757 if ( result != 0 ) {
1749 createbup = false; 1758 createbup = false;
1750 } 1759 }
1751 } 1760 }
1752 if ( createbup ) { 1761 if ( createbup ) {
1753 mView->saveCalendar( fn ); 1762 mView->saveCalendar( fn );
1754 mes = i18n("KO/Pi:Saved %1").arg(fn); 1763 mes = i18n("KO/Pi:Saved %1").arg(fn);
1755 KOPrefs::instance()->mLastSaveFile = fn; 1764 KOPrefs::instance()->mLastSaveFile = fn;
1756 setCaption(mes); 1765 setCaption(mes);
1757 } 1766 }
1758} 1767}
1759void MainWindow::loadCalendar() 1768void MainWindow::loadCalendar()
1760{ 1769{
1761 1770
1762 QString fn = KOPrefs::instance()->mLastLoadFile; 1771 QString fn = KOPrefs::instance()->mLastLoadFile;
1763 fn = KFileDialog::getOpenFileName( fn, i18n("Load backup filename"), this ); 1772 fn = KFileDialog::getOpenFileName( fn, i18n("Load backup filename"), this );
1764 1773
1765 if ( fn == "" ) 1774 if ( fn == "" )
1766 return; 1775 return;
1767 QFileInfo info; 1776 QFileInfo info;
1768 info.setFile( fn ); 1777 info.setFile( fn );
1769 QString mess; 1778 QString mess;
1770 bool loadbup = true; 1779 bool loadbup = true;
1771 if ( info. exists() ) { 1780 if ( info. exists() ) {
1772 mess = i18n("Backup file from:\n%1\nLoading backup\nfile will delete\nyour current Data!\n").arg(KGlobal::locale()->formatDateTime(info.lastModified (), true, false )); 1781 mess = i18n("Backup file from:\n%1\nLoading backup\nfile will delete\nyour current Data!\n").arg(KGlobal::locale()->formatDateTime(info.lastModified (), true, false ));
1773 int result = QMessageBox::warning( this, "KO/Pi: Warning!", 1782 int result = QMessageBox::warning( this, "KO/Pi: Warning!",
1774 mess, 1783 mess,
1775 i18n("Load!"), i18n("Cancel"), 0, 1784 i18n("Load!"), i18n("Cancel"), 0,
1776 0, 1 ); 1785 0, 1 );
1777 if ( result != 0 ) { 1786 if ( result != 0 ) {
1778 loadbup = false; 1787 loadbup = false;
1779 } 1788 }
1780 } else { 1789 } else {
1781 QMessageBox::warning( this, i18n("KO/Pi: Warning!"), 1790 QMessageBox::warning( this, i18n("KO/Pi: Warning!"),
1782 i18n("Backup file\ndoes not exist!\nNothing loaded!"), 0, 0, 1791 i18n("Backup file\ndoes not exist!\nNothing loaded!"), 0, 0,
1783 0, 1 ); 1792 0, 1 );
1784 1793
1785 return; 1794 return;
1786 } 1795 }
1787 if ( loadbup ) { 1796 if ( loadbup ) {
1788 mView->openCalendar( fn ); 1797 mView->openCalendar( fn );
1789 KOPrefs::instance()->mLastLoadFile = fn; 1798 KOPrefs::instance()->mLastLoadFile = fn;
1790 mess = i18n("KO/Pi:Loaded %1").arg(fn) ; 1799 mess = i18n("KO/Pi:Loaded %1").arg(fn) ;
1791 setCaption(mess); 1800 setCaption(mess);
1792 } 1801 }
1793 1802
1794} 1803}
1795void MainWindow::quickImportIcal() 1804void MainWindow::quickImportIcal()
1796{ 1805{
1797 importFile( KOPrefs::instance()->mLastImportFile, false ); 1806 importFile( KOPrefs::instance()->mLastImportFile, false );
1798} 1807}
1799void MainWindow::importFile( QString fn, bool quick ) 1808void MainWindow::importFile( QString fn, bool quick )
1800{ 1809{
1801 QFileInfo info; 1810 QFileInfo info;
1802 info.setFile( fn ); 1811 info.setFile( fn );
1803 QString mess; 1812 QString mess;