summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/calendarview.cpp54
-rw-r--r--korganizer/calendarview.h3
-rw-r--r--korganizer/koeventviewer.h2
-rw-r--r--korganizer/koeventviewerdialog.cpp21
-rw-r--r--korganizer/koeventviewerdialog.h10
-rw-r--r--korganizer/kolistview.cpp8
-rw-r--r--korganizer/kolistview.h1
-rw-r--r--korganizer/kotodoview.cpp22
-rw-r--r--korganizer/mainwindow.cpp1
9 files changed, 111 insertions, 11 deletions
diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp
index 3dac20b..1009956 100644
--- a/korganizer/calendarview.cpp
+++ b/korganizer/calendarview.cpp
@@ -136,196 +136,200 @@ using namespace KCal;
136extern int globalFlagBlockAgenda; 136extern int globalFlagBlockAgenda;
137extern int globalFlagBlockStartup; 137extern int globalFlagBlockStartup;
138 138
139 139
140 140
141class KOBeamPrefs : public QDialog 141class KOBeamPrefs : public QDialog
142{ 142{
143 public: 143 public:
144 KOBeamPrefs( QWidget *parent=0, const char *name=0 ) : 144 KOBeamPrefs( QWidget *parent=0, const char *name=0 ) :
145 QDialog( parent, name, true ) 145 QDialog( parent, name, true )
146 { 146 {
147 setCaption( i18n("Beam Options") ); 147 setCaption( i18n("Beam Options") );
148 QVBoxLayout* lay = new QVBoxLayout( this ); 148 QVBoxLayout* lay = new QVBoxLayout( this );
149 lay->setSpacing( 3 ); 149 lay->setSpacing( 3 );
150 lay->setMargin( 3 ); 150 lay->setMargin( 3 );
151 QButtonGroup* format = new QButtonGroup( 1, Horizontal, i18n("File format"), this ); 151 QButtonGroup* format = new QButtonGroup( 1, Horizontal, i18n("File format"), this );
152 lay->addWidget( format ); 152 lay->addWidget( format );
153 format->setExclusive ( true ) ; 153 format->setExclusive ( true ) ;
154 QButtonGroup* time = new QButtonGroup(1, Horizontal, i18n("Time format"), this ); 154 QButtonGroup* time = new QButtonGroup(1, Horizontal, i18n("Time format"), this );
155 lay->addWidget( time ); time->setExclusive ( true ) ; 155 lay->addWidget( time ); time->setExclusive ( true ) ;
156 vcal = new QRadioButton(" vCalendar ", format ); 156 vcal = new QRadioButton(" vCalendar ", format );
157 ical = new QRadioButton(" iCalendar ", format ); 157 ical = new QRadioButton(" iCalendar ", format );
158 vcal->setChecked( true ); 158 vcal->setChecked( true );
159 tz = new QRadioButton(i18n(" With timezone "), time ); 159 tz = new QRadioButton(i18n(" With timezone "), time );
160 local = new QRadioButton(i18n(" Local time "), time ); 160 local = new QRadioButton(i18n(" Local time "), time );
161 tz->setChecked( true ); 161 tz->setChecked( true );
162 QPushButton * ok = new QPushButton( i18n("Beam via IR!"), this ); 162 QPushButton * ok = new QPushButton( i18n("Beam via IR!"), this );
163 lay->addWidget( ok ); 163 lay->addWidget( ok );
164 QPushButton * cancel = new QPushButton( i18n("Cancel"), this ); 164 QPushButton * cancel = new QPushButton( i18n("Cancel"), this );
165 lay->addWidget( cancel ); 165 lay->addWidget( cancel );
166 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) ); 166 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) );
167 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) ); 167 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) );
168 resize( 200, 200 ); 168 resize( 200, 200 );
169 } 169 }
170 170
171 bool beamVcal() { return vcal->isChecked(); } 171 bool beamVcal() { return vcal->isChecked(); }
172 bool beamLocal() { return local->isChecked(); } 172 bool beamLocal() { return local->isChecked(); }
173private: 173private:
174 QRadioButton* vcal, *ical, *local, *tz; 174 QRadioButton* vcal, *ical, *local, *tz;
175}; 175};
176class KOCatPrefs : public QDialog 176class KOCatPrefs : public QDialog
177{ 177{
178 public: 178 public:
179 KOCatPrefs( QWidget *parent=0, const char *name=0 ) : 179 KOCatPrefs( QWidget *parent=0, const char *name=0 ) :
180 QDialog( parent, name, true ) 180 QDialog( parent, name, true )
181 { 181 {
182 setCaption( i18n("Manage new Categories") ); 182 setCaption( i18n("Manage new Categories") );
183 QVBoxLayout* lay = new QVBoxLayout( this ); 183 QVBoxLayout* lay = new QVBoxLayout( this );
184 lay->setSpacing( 3 ); 184 lay->setSpacing( 3 );
185 lay->setMargin( 3 ); 185 lay->setMargin( 3 );
186 QLabel * lab = new QLabel( i18n("After importing/loading/syncing\nthere may be new categories in\nevents or todos\nwhich are not in the category list.\nPlease choose what to do:\n "), this ); 186 QLabel * lab = new QLabel( i18n("After importing/loading/syncing\nthere may be new categories in\nevents or todos\nwhich are not in the category list.\nPlease choose what to do:\n "), this );
187 lay->addWidget( lab ); 187 lay->addWidget( lab );
188 QButtonGroup* format = new QButtonGroup( 1, Horizontal, i18n("New categories not in list:"), this ); 188 QButtonGroup* format = new QButtonGroup( 1, Horizontal, i18n("New categories not in list:"), this );
189 lay->addWidget( format ); 189 lay->addWidget( format );
190 format->setExclusive ( true ) ; 190 format->setExclusive ( true ) ;
191 addCatBut = new QRadioButton(i18n("Add to category list"), format ); 191 addCatBut = new QRadioButton(i18n("Add to category list"), format );
192 new QRadioButton(i18n("Remove from Events/Todos"), format ); 192 new QRadioButton(i18n("Remove from Events/Todos"), format );
193 addCatBut->setChecked( true ); 193 addCatBut->setChecked( true );
194 QPushButton * ok = new QPushButton( i18n("OK"), this ); 194 QPushButton * ok = new QPushButton( i18n("OK"), this );
195 lay->addWidget( ok ); 195 lay->addWidget( ok );
196 QPushButton * cancel = new QPushButton( i18n("Cancel"), this ); 196 QPushButton * cancel = new QPushButton( i18n("Cancel"), this );
197 lay->addWidget( cancel ); 197 lay->addWidget( cancel );
198 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) ); 198 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) );
199 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) ); 199 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) );
200 resize( 200, 200 ); 200 resize( 200, 200 );
201 } 201 }
202 202
203 bool addCat() { return addCatBut->isChecked(); } 203 bool addCat() { return addCatBut->isChecked(); }
204private: 204private:
205 QRadioButton* addCatBut; 205 QRadioButton* addCatBut;
206}; 206};
207 207
208 208
209 209
210CalendarView::CalendarView( CalendarResources *calendar, 210CalendarView::CalendarView( CalendarResources *calendar,
211 QWidget *parent, const char *name ) 211 QWidget *parent, const char *name )
212 : CalendarViewBase( parent, name ), 212 : CalendarViewBase( parent, name ),
213 mCalendar( calendar ), 213 mCalendar( calendar ),
214 mResourceManager( calendar->resourceManager() ) 214 mResourceManager( calendar->resourceManager() )
215{ 215{
216 216
217 mEventEditor = 0; 217 mEventEditor = 0;
218 mTodoEditor = 0; 218 mTodoEditor = 0;
219 219
220 init(); 220 init();
221} 221}
222 222
223CalendarView::CalendarView( Calendar *calendar, 223CalendarView::CalendarView( Calendar *calendar,
224 QWidget *parent, const char *name ) 224 QWidget *parent, const char *name )
225 : CalendarViewBase( parent, name ), 225 : CalendarViewBase( parent, name ),
226 mCalendar( calendar ), 226 mCalendar( calendar ),
227 mResourceManager( 0 ) 227 mResourceManager( 0 )
228{ 228{
229 229
230 mEventEditor = 0; 230 mEventEditor = 0;
231 mTodoEditor = 0; 231 mTodoEditor = 0;
232 init();} 232 init();
233}
233 234
234void CalendarView::init() 235void CalendarView::init()
235{ 236{
237
238 setFocusPolicy ( WheelFocus );
239 mViewerCallerIsSearchDialog = false;
236 mBlockShowDates = false; 240 mBlockShowDates = false;
237 beamDialog = new KOBeamPrefs(); 241 beamDialog = new KOBeamPrefs();
238 mDatePickerMode = 0; 242 mDatePickerMode = 0;
239 mCurrentSyncDevice = ""; 243 mCurrentSyncDevice = "";
240 writeLocale(); 244 writeLocale();
241 mViewManager = new KOViewManager( this ); 245 mViewManager = new KOViewManager( this );
242 mDialogManager = new KODialogManager( this ); 246 mDialogManager = new KODialogManager( this );
243 mEventViewerDialog = 0; 247 mEventViewerDialog = 0;
244 mModified = false; 248 mModified = false;
245 mReadOnly = false; 249 mReadOnly = false;
246 mSelectedIncidence = 0; 250 mSelectedIncidence = 0;
247 mCalPrinter = 0; 251 mCalPrinter = 0;
248 mFilters.setAutoDelete(true); 252 mFilters.setAutoDelete(true);
249 253
250 mCalendar->registerObserver( this ); 254 mCalendar->registerObserver( this );
251 // TODO: Make sure that view is updated, when calendar is changed. 255 // TODO: Make sure that view is updated, when calendar is changed.
252 256
253 mStorage = new FileStorage( mCalendar ); 257 mStorage = new FileStorage( mCalendar );
254 mNavigator = new DateNavigator( this, "datevav", mViewManager ); 258 mNavigator = new DateNavigator( this, "datevav", mViewManager );
255 259
256 QBoxLayout *topLayout = (QBoxLayout*)layout(); 260 QBoxLayout *topLayout = (QBoxLayout*)layout();
257#ifndef KORG_NOSPLITTER 261#ifndef KORG_NOSPLITTER
258 // create the main layout frames. 262 // create the main layout frames.
259 mPanner = new QSplitter(QSplitter::Horizontal,this,"CalendarView::Panner"); 263 mPanner = new QSplitter(QSplitter::Horizontal,this,"CalendarView::Panner");
260 topLayout->addWidget(mPanner); 264 topLayout->addWidget(mPanner);
261 265
262 mLeftSplitter = new QSplitter(QSplitter::Vertical,mPanner, 266 mLeftSplitter = new QSplitter(QSplitter::Vertical,mPanner,
263 "CalendarView::LeftFrame"); 267 "CalendarView::LeftFrame");
264 mPanner->setResizeMode(mLeftSplitter,QSplitter::KeepSize); 268 mPanner->setResizeMode(mLeftSplitter,QSplitter::KeepSize);
265 269
266 mDateNavigator = new KDateNavigator(mLeftSplitter, mCalendar, TRUE, 270 mDateNavigator = new KDateNavigator(mLeftSplitter, mCalendar, TRUE,
267 "CalendarView::DateNavigator", QDate::currentDate() ); 271 "CalendarView::DateNavigator", QDate::currentDate() );
268 mLeftSplitter->setResizeMode(mDateNavigator,QSplitter::KeepSize); 272 mLeftSplitter->setResizeMode(mDateNavigator,QSplitter::KeepSize);
269 mTodoList = new KOTodoView(mCalendar, mLeftSplitter, "todolist_small2"); 273 mTodoList = new KOTodoView(mCalendar, mLeftSplitter, "todolist_small2");
270 mTodoList->setNavigator( mNavigator ); 274 mTodoList->setNavigator( mNavigator );
271 mFilterView = new KOFilterView(&mFilters,mLeftSplitter,"CalendarView::FilterView"); 275 mFilterView = new KOFilterView(&mFilters,mLeftSplitter,"CalendarView::FilterView");
272 276
273#ifdef KORG_NORESOURCEVIEW 277#ifdef KORG_NORESOURCEVIEW
274 mResourceView = 0; 278 mResourceView = 0;
275#else 279#else
276 if ( mResourceManager ) { 280 if ( mResourceManager ) {
277 mResourceView = new ResourceView( mResourceManager, mLeftSplitter ); 281 mResourceView = new ResourceView( mResourceManager, mLeftSplitter );
278 mResourceView->updateView(); 282 mResourceView->updateView();
279 connect( mResourceView, SIGNAL( resourcesChanged() ), 283 connect( mResourceView, SIGNAL( resourcesChanged() ),
280 SLOT( updateView() ) ); 284 SLOT( updateView() ) );
281 } else { 285 } else {
282 mResourceView = 0; 286 mResourceView = 0;
283 } 287 }
284#endif 288#endif
285 QWidget *rightBox = new QWidget( mPanner ); 289 QWidget *rightBox = new QWidget( mPanner );
286 QBoxLayout *rightLayout = new QVBoxLayout( rightBox ); 290 QBoxLayout *rightLayout = new QVBoxLayout( rightBox );
287 291
288 mRightFrame = new QWidgetStack( rightBox ); 292 mRightFrame = new QWidgetStack( rightBox );
289 rightLayout->addWidget( mRightFrame, 1 ); 293 rightLayout->addWidget( mRightFrame, 1 );
290 294
291 mLeftFrame = mLeftSplitter; 295 mLeftFrame = mLeftSplitter;
292#else 296#else
293 QWidget *mainBox = new QWidget( this ); 297 QWidget *mainBox = new QWidget( this );
294 QWidget *leftFrame = new QWidget( mainBox ); 298 QWidget *leftFrame = new QWidget( mainBox );
295 299
296 QBoxLayout * mainBoxLayout; 300 QBoxLayout * mainBoxLayout;
297 QBoxLayout * leftFrameLayout; 301 QBoxLayout * leftFrameLayout;
298 if ( KOPrefs::instance()->mVerticalScreen ) { 302 if ( KOPrefs::instance()->mVerticalScreen ) {
299 mainBoxLayout = new QVBoxLayout(mainBox); 303 mainBoxLayout = new QVBoxLayout(mainBox);
300 leftFrameLayout = new QHBoxLayout(leftFrame ); 304 leftFrameLayout = new QHBoxLayout(leftFrame );
301 } else { 305 } else {
302 mainBoxLayout = new QHBoxLayout(mainBox); 306 mainBoxLayout = new QHBoxLayout(mainBox);
303 leftFrameLayout = new QVBoxLayout(leftFrame ); 307 leftFrameLayout = new QVBoxLayout(leftFrame );
304 } 308 }
305 topLayout->addWidget( mainBox ); 309 topLayout->addWidget( mainBox );
306 mainBoxLayout->addWidget (leftFrame); 310 mainBoxLayout->addWidget (leftFrame);
307 mDateNavigator = new KDateNavigator(leftFrame, mCalendar, TRUE, 311 mDateNavigator = new KDateNavigator(leftFrame, mCalendar, TRUE,
308 "CalendarView::DateNavigator", QDate::currentDate()); 312 "CalendarView::DateNavigator", QDate::currentDate());
309 // mDateNavigator->blockSignals( true ); 313 // mDateNavigator->blockSignals( true );
310 leftFrameLayout->addWidget( mDateNavigator ); 314 leftFrameLayout->addWidget( mDateNavigator );
311 mFilterView = new KOFilterView(&mFilters,leftFrame,"CalendarView::FilterView"); 315 mFilterView = new KOFilterView(&mFilters,leftFrame,"CalendarView::FilterView");
312 mTodoList = new KOTodoView(mCalendar, leftFrame, "todolistsmall"); 316 mTodoList = new KOTodoView(mCalendar, leftFrame, "todolistsmall");
313 mTodoList->setNavigator( mNavigator ); 317 mTodoList->setNavigator( mNavigator );
314 318
315 if ( QApplication::desktop()->width() < 480 ) { 319 if ( QApplication::desktop()->width() < 480 ) {
316 leftFrameLayout->addWidget(mFilterView); 320 leftFrameLayout->addWidget(mFilterView);
317 leftFrameLayout->addWidget(mTodoList, 2 ); 321 leftFrameLayout->addWidget(mTodoList, 2 );
318 322
319 } else { 323 } else {
320 leftFrameLayout->addWidget(mTodoList,2 ); 324 leftFrameLayout->addWidget(mTodoList,2 );
321 leftFrameLayout->addWidget(mFilterView ); 325 leftFrameLayout->addWidget(mFilterView );
322 } 326 }
323 mFilterView->hide(); 327 mFilterView->hide();
324 QWidget *rightBox = new QWidget( mainBox ); 328 QWidget *rightBox = new QWidget( mainBox );
325 mainBoxLayout->addWidget ( rightBox, 10 ); 329 mainBoxLayout->addWidget ( rightBox, 10 );
326 QBoxLayout *rightLayout = new QVBoxLayout( rightBox ); 330 QBoxLayout *rightLayout = new QVBoxLayout( rightBox );
327 mRightFrame = new QWidgetStack( rightBox ); 331 mRightFrame = new QWidgetStack( rightBox );
328 rightLayout->addWidget( mRightFrame, 10 ); 332 rightLayout->addWidget( mRightFrame, 10 );
329 333
330 mLeftFrame = leftFrame; 334 mLeftFrame = leftFrame;
331 if ( KOPrefs::instance()->mVerticalScreen ) { 335 if ( KOPrefs::instance()->mVerticalScreen ) {
@@ -2527,356 +2531,370 @@ void CalendarView::showEventEditor()
2527#else 2531#else
2528 if ( mEventEditor->width() < QApplication::desktop()->width() -60 || mEventEditor->width() > QApplication::desktop()->width() ) { 2532 if ( mEventEditor->width() < QApplication::desktop()->width() -60 || mEventEditor->width() > QApplication::desktop()->width() ) {
2529 topLevelWidget()->setCaption( i18n("Recreating edit dialog. Please wait...") ); 2533 topLevelWidget()->setCaption( i18n("Recreating edit dialog. Please wait...") );
2530 qDebug("KO: CalendarView: recreate mEventEditor %d %d", mEventEditor->width(), QApplication::desktop()->width() ); 2534 qDebug("KO: CalendarView: recreate mEventEditor %d %d", mEventEditor->width(), QApplication::desktop()->width() );
2531 qApp->processEvents(); 2535 qApp->processEvents();
2532 delete mEventEditor; 2536 delete mEventEditor;
2533 mEventEditor = mDialogManager->getEventEditor(); 2537 mEventEditor = mDialogManager->getEventEditor();
2534 topLevelWidget()->setCaption( i18n("") ); 2538 topLevelWidget()->setCaption( i18n("") );
2535 } 2539 }
2536 mEventEditor->showMaximized(); 2540 mEventEditor->showMaximized();
2537#endif 2541#endif
2538} 2542}
2539void CalendarView::showTodoEditor() 2543void CalendarView::showTodoEditor()
2540{ 2544{
2541#ifdef DESKTOP_VERSION 2545#ifdef DESKTOP_VERSION
2542 mTodoEditor->show(); 2546 mTodoEditor->show();
2543#else 2547#else
2544 if ( mTodoEditor->width() < QApplication::desktop()->width() -60|| mTodoEditor->width() > QApplication::desktop()->width() ) { 2548 if ( mTodoEditor->width() < QApplication::desktop()->width() -60|| mTodoEditor->width() > QApplication::desktop()->width() ) {
2545 topLevelWidget()->setCaption( i18n("Recreating edit dialog. Please wait...") ); 2549 topLevelWidget()->setCaption( i18n("Recreating edit dialog. Please wait...") );
2546 qDebug("KO: CalendarView: recreate mTodoEditor %d %d ", mTodoEditor->width() ,QApplication::desktop()->width() ); 2550 qDebug("KO: CalendarView: recreate mTodoEditor %d %d ", mTodoEditor->width() ,QApplication::desktop()->width() );
2547 qApp->processEvents(); 2551 qApp->processEvents();
2548 delete mTodoEditor; 2552 delete mTodoEditor;
2549 mTodoEditor = mDialogManager->getTodoEditor(); 2553 mTodoEditor = mDialogManager->getTodoEditor();
2550 topLevelWidget()->setCaption( i18n("") ); 2554 topLevelWidget()->setCaption( i18n("") );
2551 } 2555 }
2552 mTodoEditor->showMaximized(); 2556 mTodoEditor->showMaximized();
2553#endif 2557#endif
2554} 2558}
2555 2559
2556void CalendarView::cloneIncidence() 2560void CalendarView::cloneIncidence()
2557{ 2561{
2558 Incidence *incidence = currentSelection(); 2562 Incidence *incidence = currentSelection();
2559 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 2563 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
2560 if ( incidence ) { 2564 if ( incidence ) {
2561 cloneIncidence(incidence); 2565 cloneIncidence(incidence);
2562 } 2566 }
2563} 2567}
2564void CalendarView::moveIncidence() 2568void CalendarView::moveIncidence()
2565{ 2569{
2566 Incidence *incidence = currentSelection(); 2570 Incidence *incidence = currentSelection();
2567 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 2571 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
2568 if ( incidence ) { 2572 if ( incidence ) {
2569 moveIncidence(incidence); 2573 moveIncidence(incidence);
2570 } 2574 }
2571} 2575}
2572void CalendarView::beamIncidence() 2576void CalendarView::beamIncidence()
2573{ 2577{
2574 Incidence *incidence = currentSelection(); 2578 Incidence *incidence = currentSelection();
2575 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 2579 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
2576 if ( incidence ) { 2580 if ( incidence ) {
2577 beamIncidence(incidence); 2581 beamIncidence(incidence);
2578 } 2582 }
2579} 2583}
2580void CalendarView::toggleCancelIncidence() 2584void CalendarView::toggleCancelIncidence()
2581{ 2585{
2582 Incidence *incidence = currentSelection(); 2586 Incidence *incidence = currentSelection();
2583 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 2587 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
2584 if ( incidence ) { 2588 if ( incidence ) {
2585 cancelIncidence(incidence); 2589 cancelIncidence(incidence);
2586 } 2590 }
2587} 2591}
2588 2592
2589 2593
2590void CalendarView::cancelIncidence(Incidence * inc ) 2594void CalendarView::cancelIncidence(Incidence * inc )
2591{ 2595{
2592 inc->setCancelled( ! inc->cancelled() ); 2596 inc->setCancelled( ! inc->cancelled() );
2593 changeIncidenceDisplay( inc,KOGlobals::EVENTEDITED ); 2597 changeIncidenceDisplay( inc,KOGlobals::EVENTEDITED );
2594 updateView(); 2598 updateView();
2595} 2599}
2596void CalendarView::cloneIncidence(Incidence * orgInc ) 2600void CalendarView::cloneIncidence(Incidence * orgInc )
2597{ 2601{
2598 Incidence * newInc = orgInc->clone(); 2602 Incidence * newInc = orgInc->clone();
2599 newInc->recreate(); 2603 newInc->recreate();
2600 2604
2601 if ( newInc->type() == "Todo" ) { 2605 if ( newInc->type() == "Todo" ) {
2602 Todo* t = (Todo*) newInc; 2606 Todo* t = (Todo*) newInc;
2603 showTodoEditor(); 2607 showTodoEditor();
2604 mTodoEditor->editTodo( t ); 2608 mTodoEditor->editTodo( t );
2605 if ( mTodoEditor->exec() ) { 2609 if ( mTodoEditor->exec() ) {
2606 mCalendar->addTodo( t ); 2610 mCalendar->addTodo( t );
2607 updateView(); 2611 updateView();
2608 } else { 2612 } else {
2609 delete t; 2613 delete t;
2610 } 2614 }
2611 } 2615 }
2612 else { 2616 else {
2613 Event* e = (Event*) newInc; 2617 Event* e = (Event*) newInc;
2614 showEventEditor(); 2618 showEventEditor();
2615 mEventEditor->editEvent( e ); 2619 mEventEditor->editEvent( e );
2616 if ( mEventEditor->exec() ) { 2620 if ( mEventEditor->exec() ) {
2617 mCalendar->addEvent( e ); 2621 mCalendar->addEvent( e );
2618 updateView(); 2622 updateView();
2619 } else { 2623 } else {
2620 delete e; 2624 delete e;
2621 } 2625 }
2622 } 2626 }
2627 setActiveWindow();
2623} 2628}
2624 2629
2625void CalendarView::newEvent() 2630void CalendarView::newEvent()
2626{ 2631{
2627 // TODO: Replace this code by a common eventDurationHint of KOBaseView. 2632 // TODO: Replace this code by a common eventDurationHint of KOBaseView.
2628 KOAgendaView *aView = mViewManager->agendaView(); 2633 KOAgendaView *aView = mViewManager->agendaView();
2629 if (aView) { 2634 if (aView) {
2630 if (aView->selectionStart().isValid()) { 2635 if (aView->selectionStart().isValid()) {
2631 if (aView->selectedIsAllDay()) { 2636 if (aView->selectedIsAllDay()) {
2632 newEvent(aView->selectionStart(),aView->selectionEnd(),true); 2637 newEvent(aView->selectionStart(),aView->selectionEnd(),true);
2633 } else { 2638 } else {
2634 newEvent(aView->selectionStart(),aView->selectionEnd()); 2639 newEvent(aView->selectionStart(),aView->selectionEnd());
2635 } 2640 }
2636 return; 2641 return;
2637 } 2642 }
2638 } 2643 }
2639 2644
2640 QDate date = mNavigator->selectedDates().first(); 2645 QDate date = mNavigator->selectedDates().first();
2641 QDateTime current = QDateTime::currentDateTime(); 2646 QDateTime current = QDateTime::currentDateTime();
2642 if ( date <= current.date() ) { 2647 if ( date <= current.date() ) {
2643 int hour = current.time().hour() +1; 2648 int hour = current.time().hour() +1;
2644 newEvent( QDateTime( current.date(), QTime( hour, 0, 0 ) ), 2649 newEvent( QDateTime( current.date(), QTime( hour, 0, 0 ) ),
2645 QDateTime( current.date(), QTime( hour+ KOPrefs::instance()->mDefaultDuration, 0, 0 ) ) ); 2650 QDateTime( current.date(), QTime( hour+ KOPrefs::instance()->mDefaultDuration, 0, 0 ) ) );
2646 } else 2651 } else
2647 newEvent( QDateTime( date, QTime( KOPrefs::instance()->mStartTime, 0, 0 ) ), 2652 newEvent( QDateTime( date, QTime( KOPrefs::instance()->mStartTime, 0, 0 ) ),
2648 QDateTime( date, QTime( KOPrefs::instance()->mStartTime + 2653 QDateTime( date, QTime( KOPrefs::instance()->mStartTime +
2649 KOPrefs::instance()->mDefaultDuration, 0, 0 ) ) ); 2654 KOPrefs::instance()->mDefaultDuration, 0, 0 ) ) );
2650} 2655}
2651 2656
2652void CalendarView::newEvent(QDateTime fh) 2657void CalendarView::newEvent(QDateTime fh)
2653{ 2658{
2654 newEvent(fh, 2659 newEvent(fh,
2655 QDateTime(fh.addSecs(3600*KOPrefs::instance()->mDefaultDuration))); 2660 QDateTime(fh.addSecs(3600*KOPrefs::instance()->mDefaultDuration)));
2656} 2661}
2657 2662
2658void CalendarView::newEvent(QDate dt) 2663void CalendarView::newEvent(QDate dt)
2659{ 2664{
2660 newEvent(QDateTime(dt, QTime(0,0,0)), 2665 newEvent(QDateTime(dt, QTime(0,0,0)),
2661 QDateTime(dt, QTime(0,0,0)), true); 2666 QDateTime(dt, QTime(0,0,0)), true);
2662} 2667}
2663void CalendarView::newEvent(QDateTime fromHint, QDateTime toHint) 2668void CalendarView::newEvent(QDateTime fromHint, QDateTime toHint)
2664{ 2669{
2665 newEvent(fromHint, toHint, false); 2670 newEvent(fromHint, toHint, false);
2666} 2671}
2667void CalendarView::newEvent(QDateTime fromHint, QDateTime toHint, bool allDay) 2672void CalendarView::newEvent(QDateTime fromHint, QDateTime toHint, bool allDay)
2668{ 2673{
2669 2674
2670 showEventEditor(); 2675 showEventEditor();
2671 mEventEditor->newEvent(fromHint,toHint,allDay); 2676 mEventEditor->newEvent(fromHint,toHint,allDay);
2672 if ( mFilterView->filtersEnabled() ) { 2677 if ( mFilterView->filtersEnabled() ) {
2673 CalFilter *filter = mFilterView->selectedFilter(); 2678 CalFilter *filter = mFilterView->selectedFilter();
2674 if (filter && filter->showCategories()) { 2679 if (filter && filter->showCategories()) {
2675 mEventEditor->setCategories(filter->categoryList().join(",") ); 2680 mEventEditor->setCategories(filter->categoryList().join(",") );
2676 } 2681 }
2677 if ( filter ) 2682 if ( filter )
2678 mEventEditor->setSecrecy( filter->getSecrecy() ); 2683 mEventEditor->setSecrecy( filter->getSecrecy() );
2679 } 2684 }
2685 mEventEditor->exec();
2686 setActiveWindow();
2680} 2687}
2681void CalendarView::todoAdded(Todo * t) 2688void CalendarView::todoAdded(Todo * t)
2682{ 2689{
2683 2690
2684 changeTodoDisplay ( t ,KOGlobals::EVENTADDED); 2691 changeTodoDisplay ( t ,KOGlobals::EVENTADDED);
2685 updateTodoViews(); 2692 updateTodoViews();
2686} 2693}
2687void CalendarView::todoChanged(Todo * t) 2694void CalendarView::todoChanged(Todo * t)
2688{ 2695{
2689 emit todoModified( t, 4 ); 2696 emit todoModified( t, 4 );
2690 // updateTodoViews(); 2697 // updateTodoViews();
2691} 2698}
2692void CalendarView::todoToBeDeleted(Todo *) 2699void CalendarView::todoToBeDeleted(Todo *)
2693{ 2700{
2694 //qDebug("todoToBeDeleted(Todo *) "); 2701 //qDebug("todoToBeDeleted(Todo *) ");
2695 updateTodoViews(); 2702 updateTodoViews();
2696} 2703}
2697void CalendarView::todoDeleted() 2704void CalendarView::todoDeleted()
2698{ 2705{
2699 //qDebug(" todoDeleted()"); 2706 //qDebug(" todoDeleted()");
2700 updateTodoViews(); 2707 updateTodoViews();
2701} 2708}
2702 2709
2703 2710
2704void CalendarView::newTodoDateTime( QDateTime dt, bool allday ) 2711void CalendarView::newTodoDateTime( QDateTime dt, bool allday )
2705{ 2712{
2706 showTodoEditor(); 2713 showTodoEditor();
2707 mTodoEditor->newTodo(dt,0,allday); 2714 mTodoEditor->newTodo(dt,0,allday);
2708 if ( mFilterView->filtersEnabled() ) { 2715 if ( mFilterView->filtersEnabled() ) {
2709 CalFilter *filter = mFilterView->selectedFilter(); 2716 CalFilter *filter = mFilterView->selectedFilter();
2710 if (filter && filter->showCategories()) { 2717 if (filter && filter->showCategories()) {
2711 mTodoEditor->setCategories(filter->categoryList().join(",") ); 2718 mTodoEditor->setCategories(filter->categoryList().join(",") );
2712 } 2719 }
2713 if ( filter ) 2720 if ( filter )
2714 mTodoEditor->setSecrecy( filter->getSecrecy() ); 2721 mTodoEditor->setSecrecy( filter->getSecrecy() );
2715 } 2722 }
2723 mTodoEditor->exec();
2724 setActiveWindow();
2716} 2725}
2717 2726
2718void CalendarView::newTodo() 2727void CalendarView::newTodo()
2719{ 2728{
2720 newTodoDateTime( QDateTime(),true ); 2729 newTodoDateTime( QDateTime(),true );
2721} 2730}
2722 2731
2723void CalendarView::newSubTodo() 2732void CalendarView::newSubTodo()
2724{ 2733{
2725 Todo *todo = selectedTodo(); 2734 Todo *todo = selectedTodo();
2726 if ( todo ) newSubTodo( todo ); 2735 if ( todo ) newSubTodo( todo );
2727} 2736}
2728 2737
2729void CalendarView::newSubTodo(Todo *parentEvent) 2738void CalendarView::newSubTodo(Todo *parentEvent)
2730{ 2739{
2731 2740
2732 showTodoEditor(); 2741 showTodoEditor();
2733 mTodoEditor->newTodo(QDateTime(),parentEvent,true); 2742 mTodoEditor->newTodo(QDateTime(),parentEvent,true);
2743 mTodoEditor->exec();
2744 setActiveWindow();
2734} 2745}
2735 2746
2736void CalendarView::newFloatingEvent() 2747void CalendarView::newFloatingEvent()
2737{ 2748{
2738 DateList tmpList = mNavigator->selectedDates(); 2749 DateList tmpList = mNavigator->selectedDates();
2739 QDate date = tmpList.first(); 2750 QDate date = tmpList.first();
2740 2751
2741 newEvent( QDateTime( date, QTime( 12, 0, 0 ) ), 2752 newEvent( QDateTime( date, QTime( 12, 0, 0 ) ),
2742 QDateTime( date, QTime( 12, 0, 0 ) ), true ); 2753 QDateTime( date, QTime( 12, 0, 0 ) ), true );
2743} 2754}
2744 2755
2745 2756
2746void CalendarView::editEvent( Event *event ) 2757void CalendarView::editEvent( Event *event )
2747{ 2758{
2748 2759
2749 if ( !event ) return; 2760 if ( !event ) return;
2750 if ( event->isReadOnly() ) { 2761 if ( event->isReadOnly() ) {
2751 showEvent( event ); 2762 showEvent( event );
2752 return; 2763 return;
2753 } 2764 }
2754 showEventEditor(); 2765 showEventEditor();
2755 mEventEditor->editEvent( event , mFlagEditDescription); 2766 mEventEditor->editEvent( event , mFlagEditDescription);
2767 mEventEditor->exec();
2768 setActiveWindow();
2769
2756} 2770}
2757void CalendarView::editJournal( Journal *jour ) 2771void CalendarView::editJournal( Journal *jour )
2758{ 2772{
2759 if ( !jour ) return; 2773 if ( !jour ) return;
2760 mDialogManager->hideSearchDialog(); 2774 mDialogManager->hideSearchDialog();
2761 mViewManager->showJournalView(); 2775 mViewManager->showJournalView();
2762 mNavigator->slotDaySelect( jour->dtStart().date() ); 2776 mNavigator->slotDaySelect( jour->dtStart().date() );
2763} 2777}
2764void CalendarView::editTodo( Todo *todo ) 2778void CalendarView::editTodo( Todo *todo )
2765{ 2779{
2766 if ( !todo ) return; 2780 if ( !todo ) return;
2767 2781
2768 if ( todo->isReadOnly() ) { 2782 if ( todo->isReadOnly() ) {
2769 showTodo( todo ); 2783 showTodo( todo );
2770 return; 2784 return;
2771 } 2785 }
2772 showTodoEditor(); 2786 showTodoEditor();
2773 mTodoEditor->editTodo( todo ,mFlagEditDescription); 2787 mTodoEditor->editTodo( todo ,mFlagEditDescription);
2788 mTodoEditor->exec();
2789 setActiveWindow();
2774 2790
2775} 2791}
2776 2792
2777KOEventViewerDialog* CalendarView::getEventViewerDialog() 2793KOEventViewerDialog* CalendarView::getEventViewerDialog()
2778{ 2794{
2779 if ( !mEventViewerDialog ) { 2795 if ( !mEventViewerDialog ) {
2780 mEventViewerDialog = new KOEventViewerDialog(this); 2796 mEventViewerDialog = new KOEventViewerDialog(this);
2781 connect( mEventViewerDialog, SIGNAL( editIncidence( Incidence* )), this, SLOT(editIncidence( Incidence* ) ) ); 2797 connect( mEventViewerDialog, SIGNAL( editIncidence( Incidence* )), this, SLOT(editIncidence( Incidence* ) ) );
2782 connect( this, SIGNAL(configChanged()), mEventViewerDialog, SLOT(updateConfig())); 2798 connect( this, SIGNAL(configChanged()), mEventViewerDialog, SLOT(updateConfig()));
2783 connect( mEventViewerDialog, SIGNAL(jumpToTime( const QDate &)), 2799 connect( mEventViewerDialog, SIGNAL(jumpToTime( const QDate &)),
2784 dateNavigator(), SLOT( selectWeek( const QDate & ) ) ); 2800 dateNavigator(), SLOT( selectWeek( const QDate & ) ) );
2785 connect( mEventViewerDialog, SIGNAL(showAgendaView( bool ) ), 2801 connect( mEventViewerDialog, SIGNAL(showAgendaView( bool ) ),
2786 viewManager(), SLOT( showAgendaView( bool ) ) ); 2802 viewManager(), SLOT( showAgendaView( bool ) ) );
2803 connect( mEventViewerDialog, SIGNAL(signalViewerClosed()),
2804 this, SLOT( slotViewerClosed() ) );
2787 connect( mEventViewerDialog, SIGNAL( todoCompleted(Todo *) ), 2805 connect( mEventViewerDialog, SIGNAL( todoCompleted(Todo *) ),
2788 this, SLOT( todoChanged(Todo *) ) ); 2806 this, SLOT( todoChanged(Todo *) ) );
2789 mEventViewerDialog->resize( 640, 480 ); 2807 mEventViewerDialog->resize( 640, 480 );
2790 2808
2791 } 2809 }
2792 return mEventViewerDialog; 2810 return mEventViewerDialog;
2793} 2811}
2794void CalendarView::showEvent(Event *event) 2812void CalendarView::showEvent(Event *event)
2795{ 2813{
2796 getEventViewerDialog()->setEvent(event); 2814 getEventViewerDialog()->setEvent(event);
2797 getEventViewerDialog()->showMe(); 2815 getEventViewerDialog()->showMe();
2798} 2816}
2799 2817
2800void CalendarView::showTodo(Todo *event) 2818void CalendarView::showTodo(Todo *event)
2801{ 2819{
2802 getEventViewerDialog()->setTodo(event); 2820 getEventViewerDialog()->setTodo(event);
2803 getEventViewerDialog()->showMe(); 2821 getEventViewerDialog()->showMe();
2804} 2822}
2805void CalendarView::showJournal( Journal *jour ) 2823void CalendarView::showJournal( Journal *jour )
2806{ 2824{
2807 getEventViewerDialog()->setJournal(jour); 2825 getEventViewerDialog()->setJournal(jour);
2808 getEventViewerDialog()->showMe(); 2826 getEventViewerDialog()->showMe();
2809 2827
2810} 2828}
2811// void CalendarView::todoModified (Todo *event, int changed) 2829// void CalendarView::todoModified (Todo *event, int changed)
2812// { 2830// {
2813// // if (mDialogList.find (event) != mDialogList.end ()) { 2831// // if (mDialogList.find (event) != mDialogList.end ()) {
2814// // kdDebug() << "Todo modified and open" << endl; 2832// // kdDebug() << "Todo modified and open" << endl;
2815// // KOTodoEditor* temp = (KOTodoEditor *) mDialogList[event]; 2833// // KOTodoEditor* temp = (KOTodoEditor *) mDialogList[event];
2816// // temp->modified (changed); 2834// // temp->modified (changed);
2817 2835
2818// // } 2836// // }
2819 2837
2820// mViewManager->updateView(); 2838// mViewManager->updateView();
2821// } 2839// }
2822 2840
2823void CalendarView::appointment_show() 2841void CalendarView::appointment_show()
2824{ 2842{
2825 Event *anEvent = 0; 2843 Event *anEvent = 0;
2826 2844
2827 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 2845 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
2828 2846
2829 if (mViewManager->currentView()->isEventView()) { 2847 if (mViewManager->currentView()->isEventView()) {
2830 if ( incidence && incidence->type() == "Event" ) { 2848 if ( incidence && incidence->type() == "Event" ) {
2831 anEvent = static_cast<Event *>(incidence); 2849 anEvent = static_cast<Event *>(incidence);
2832 } 2850 }
2833 } 2851 }
2834 2852
2835 if (!anEvent) { 2853 if (!anEvent) {
2836 KNotifyClient::beep(); 2854 KNotifyClient::beep();
2837 return; 2855 return;
2838 } 2856 }
2839 2857
2840 showEvent(anEvent); 2858 showEvent(anEvent);
2841} 2859}
2842 2860
2843void CalendarView::appointment_edit() 2861void CalendarView::appointment_edit()
2844{ 2862{
2845 Event *anEvent = 0; 2863 Event *anEvent = 0;
2846 2864
2847 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 2865 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
2848 2866
2849 if (mViewManager->currentView()->isEventView()) { 2867 if (mViewManager->currentView()->isEventView()) {
2850 if ( incidence && incidence->type() == "Event" ) { 2868 if ( incidence && incidence->type() == "Event" ) {
2851 anEvent = static_cast<Event *>(incidence); 2869 anEvent = static_cast<Event *>(incidence);
2852 } 2870 }
2853 } 2871 }
2854 2872
2855 if (!anEvent) { 2873 if (!anEvent) {
2856 KNotifyClient::beep(); 2874 KNotifyClient::beep();
2857 return; 2875 return;
2858 } 2876 }
2859 2877
2860 editEvent(anEvent); 2878 editEvent(anEvent);
2861} 2879}
2862 2880
2863void CalendarView::appointment_delete() 2881void CalendarView::appointment_delete()
2864{ 2882{
2865 Event *anEvent = 0; 2883 Event *anEvent = 0;
2866 2884
2867 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 2885 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
2868 2886
2869 if (mViewManager->currentView()->isEventView()) { 2887 if (mViewManager->currentView()->isEventView()) {
2870 if ( incidence && incidence->type() == "Event" ) { 2888 if ( incidence && incidence->type() == "Event" ) {
2871 anEvent = static_cast<Event *>(incidence); 2889 anEvent = static_cast<Event *>(incidence);
2872 } 2890 }
2873 } 2891 }
2874 2892
2875 if (!anEvent) { 2893 if (!anEvent) {
2876 KNotifyClient::beep(); 2894 KNotifyClient::beep();
2877 return; 2895 return;
2878 } 2896 }
2879 2897
2880 deleteEvent(anEvent); 2898 deleteEvent(anEvent);
2881} 2899}
2882 2900
@@ -3645,280 +3663,312 @@ void CalendarView::showIntro()
3645 3663
3646QWidgetStack *CalendarView::viewStack() 3664QWidgetStack *CalendarView::viewStack()
3647{ 3665{
3648 return mRightFrame; 3666 return mRightFrame;
3649} 3667}
3650 3668
3651QWidget *CalendarView::leftFrame() 3669QWidget *CalendarView::leftFrame()
3652{ 3670{
3653 return mLeftFrame; 3671 return mLeftFrame;
3654} 3672}
3655 3673
3656DateNavigator *CalendarView::dateNavigator() 3674DateNavigator *CalendarView::dateNavigator()
3657{ 3675{
3658 return mNavigator; 3676 return mNavigator;
3659} 3677}
3660 3678
3661KDateNavigator* CalendarView::dateNavigatorWidget() 3679KDateNavigator* CalendarView::dateNavigatorWidget()
3662{ 3680{
3663 return mDateNavigator; 3681 return mDateNavigator;
3664} 3682}
3665void CalendarView::toggleDateNavigatorWidget() 3683void CalendarView::toggleDateNavigatorWidget()
3666{ 3684{
3667 KOPrefs::instance()->mShowDateNavigator = !KOPrefs::instance()->mShowDateNavigator ; 3685 KOPrefs::instance()->mShowDateNavigator = !KOPrefs::instance()->mShowDateNavigator ;
3668 if (!KOPrefs::instance()->mShowDateNavigator ) 3686 if (!KOPrefs::instance()->mShowDateNavigator )
3669 mDateNavigator->hide(); 3687 mDateNavigator->hide();
3670 else 3688 else
3671 mDateNavigator->show(); 3689 mDateNavigator->show();
3672} 3690}
3673void CalendarView::addView(KOrg::BaseView *view) 3691void CalendarView::addView(KOrg::BaseView *view)
3674{ 3692{
3675 mViewManager->addView(view); 3693 mViewManager->addView(view);
3676} 3694}
3677 3695
3678void CalendarView::showView(KOrg::BaseView *view) 3696void CalendarView::showView(KOrg::BaseView *view)
3679{ 3697{
3680 mViewManager->showView(view, mLeftFrame->isVisible()); 3698 mViewManager->showView(view, mLeftFrame->isVisible());
3681} 3699}
3682 3700
3683Incidence *CalendarView::currentSelection() 3701Incidence *CalendarView::currentSelection()
3684{ 3702{
3685 return mViewManager->currentSelection(); 3703 return mViewManager->currentSelection();
3686} 3704}
3687void CalendarView::toggleAllDaySize() 3705void CalendarView::toggleAllDaySize()
3688{ 3706{
3689 /* 3707 /*
3690 if ( KOPrefs::instance()->mAllDaySize > 47 ) 3708 if ( KOPrefs::instance()->mAllDaySize > 47 )
3691 KOPrefs::instance()->mAllDaySize = KOPrefs::instance()->mAllDaySize /2; 3709 KOPrefs::instance()->mAllDaySize = KOPrefs::instance()->mAllDaySize /2;
3692 else 3710 else
3693 KOPrefs::instance()->mAllDaySize = KOPrefs::instance()->mAllDaySize *2; 3711 KOPrefs::instance()->mAllDaySize = KOPrefs::instance()->mAllDaySize *2;
3694 */ 3712 */
3695 viewManager()->agendaView()->toggleAllDay(); 3713 viewManager()->agendaView()->toggleAllDay();
3696} 3714}
3697void CalendarView::toggleExpand() 3715void CalendarView::toggleExpand()
3698{ 3716{
3699 // if ( mLeftFrame->isHidden() ) { 3717 // if ( mLeftFrame->isHidden() ) {
3700 // mLeftFrame->show(); 3718 // mLeftFrame->show();
3701 // emit calendarViewExpanded( false ); 3719 // emit calendarViewExpanded( false );
3702 // } else { 3720 // } else {
3703 // mLeftFrame->hide(); 3721 // mLeftFrame->hide();
3704 // emit calendarViewExpanded( true ); 3722 // emit calendarViewExpanded( true );
3705 // } 3723 // }
3706 //qDebug(" CalendarView::toggleExpand()"); 3724 //qDebug(" CalendarView::toggleExpand()");
3707 globalFlagBlockAgenda = 1; 3725 globalFlagBlockAgenda = 1;
3708 emit calendarViewExpanded( !mLeftFrame->isHidden() ); 3726 emit calendarViewExpanded( !mLeftFrame->isHidden() );
3709 globalFlagBlockAgenda = 5; 3727 globalFlagBlockAgenda = 5;
3710 mViewManager->raiseCurrentView( !mLeftFrame->isHidden() ); 3728 mViewManager->raiseCurrentView( !mLeftFrame->isHidden() );
3711 //mViewManager->showView( 0, true ); 3729 //mViewManager->showView( 0, true );
3712} 3730}
3713 3731
3714void CalendarView::calendarModified( bool modified, Calendar * ) 3732void CalendarView::calendarModified( bool modified, Calendar * )
3715{ 3733{
3716 setModified( modified ); 3734 setModified( modified );
3717} 3735}
3718 3736
3719Todo *CalendarView::selectedTodo() 3737Todo *CalendarView::selectedTodo()
3720{ 3738{
3721 Incidence *incidence = currentSelection(); 3739 Incidence *incidence = currentSelection();
3722 if ( incidence && incidence->type() == "Todo" ) { 3740 if ( incidence && incidence->type() == "Todo" ) {
3723 return static_cast<Todo *>( incidence ); 3741 return static_cast<Todo *>( incidence );
3724 } 3742 }
3725 3743
3726 incidence = mTodoList->selectedIncidences().first(); 3744 incidence = mTodoList->selectedIncidences().first();
3727 if ( incidence && incidence->type() == "Todo" ) { 3745 if ( incidence && incidence->type() == "Todo" ) {
3728 return static_cast<Todo *>( incidence ); 3746 return static_cast<Todo *>( incidence );
3729 } 3747 }
3730 3748
3731 return 0; 3749 return 0;
3732} 3750}
3733 3751
3734void CalendarView::dialogClosing(Incidence *in) 3752void CalendarView::dialogClosing(Incidence *in)
3735{ 3753{
3736 // mDialogList.remove(in); 3754 // mDialogList.remove(in);
3737} 3755}
3738 3756
3739void CalendarView::showIncidence() 3757void CalendarView::showIncidence()
3740{ 3758{
3759 mViewerCallerIsSearchDialog = false;
3741 Incidence *incidence = currentSelection(); 3760 Incidence *incidence = currentSelection();
3742 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 3761 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
3743 if ( incidence ) { 3762 if ( incidence ) {
3744 ShowIncidenceVisitor v; 3763 ShowIncidenceVisitor v;
3745 v.act( incidence, this ); 3764 v.act( incidence, this );
3746 } 3765 }
3747} 3766}
3748void CalendarView::editIncidenceDescription() 3767void CalendarView::editIncidenceDescription()
3749{ 3768{
3750 mFlagEditDescription = true; 3769 mFlagEditDescription = true;
3751 editIncidence(); 3770 editIncidence();
3752 mFlagEditDescription = false; 3771 mFlagEditDescription = false;
3753} 3772}
3754void CalendarView::editIncidence() 3773void CalendarView::editIncidence()
3755{ 3774{
3756 // qDebug("editIncidence() "); 3775 // qDebug("editIncidence() ");
3757 Incidence *incidence = currentSelection(); 3776 Incidence *incidence = currentSelection();
3758 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 3777 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
3759 if ( incidence ) { 3778 if ( incidence ) {
3760 EditIncidenceVisitor v; 3779 EditIncidenceVisitor v;
3761 v.act( incidence, this ); 3780 v.act( incidence, this );
3762 } 3781 }
3763} 3782}
3764 3783
3765void CalendarView::deleteIncidence() 3784void CalendarView::deleteIncidence()
3766{ 3785{
3767 Incidence *incidence = currentSelection(); 3786 Incidence *incidence = currentSelection();
3768 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 3787 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
3769 if ( incidence ) { 3788 if ( incidence ) {
3770 deleteIncidence(incidence); 3789 deleteIncidence(incidence);
3771 } 3790 }
3772} 3791}
3773 3792
3774void CalendarView::showIncidence(Incidence *incidence) 3793void CalendarView::showIncidence(Incidence *incidence)
3775{ 3794{
3795 mViewerCallerIsSearchDialog = false;
3796 //qDebug("%x %x ",sender (), mDialogManager->getSearchDialog() );
3797 if ( sender() && mDialogManager->getSearchDialog() ) {
3798 if ( sender () == mDialogManager->getSearchDialog()->listview() ) {
3799 mViewerCallerIsSearchDialog = true;
3800 }
3801 }
3776 if ( incidence ) { 3802 if ( incidence ) {
3777 ShowIncidenceVisitor v; 3803 ShowIncidenceVisitor v;
3778 v.act( incidence, this ); 3804 v.act( incidence, this );
3779 } 3805 }
3780} 3806}
3781 3807
3782void CalendarView::editIncidence(Incidence *incidence) 3808void CalendarView::editIncidence(Incidence *incidence)
3783{ 3809{
3784 if ( incidence ) { 3810 if ( incidence ) {
3785 3811
3786 EditIncidenceVisitor v; 3812 EditIncidenceVisitor v;
3787 v.act( incidence, this ); 3813 v.act( incidence, this );
3788 3814
3789 } 3815 }
3790} 3816}
3791 3817
3792void CalendarView::deleteIncidence(Incidence *incidence) 3818void CalendarView::deleteIncidence(Incidence *incidence)
3793{ 3819{
3794 //qDebug(" CalendarView::deleteIncidence "); 3820 //qDebug(" CalendarView::deleteIncidence ");
3795 if ( incidence ) { 3821 if ( incidence ) {
3796 DeleteIncidenceVisitor v; 3822 DeleteIncidenceVisitor v;
3797 v.act( incidence, this ); 3823 v.act( incidence, this );
3798 } 3824 }
3799} 3825}
3800 3826
3801 3827
3802void CalendarView::lookForOutgoingMessages() 3828void CalendarView::lookForOutgoingMessages()
3803{ 3829{
3804 OutgoingDialog *ogd = mDialogManager->outgoingDialog(); 3830 OutgoingDialog *ogd = mDialogManager->outgoingDialog();
3805 ogd->loadMessages(); 3831 ogd->loadMessages();
3806} 3832}
3807 3833
3808void CalendarView::lookForIncomingMessages() 3834void CalendarView::lookForIncomingMessages()
3809{ 3835{
3810 IncomingDialog *icd = mDialogManager->incomingDialog(); 3836 IncomingDialog *icd = mDialogManager->incomingDialog();
3811 icd->retrieve(); 3837 icd->retrieve();
3812} 3838}
3813 3839
3814bool CalendarView::removeCompletedSubTodos( Todo* t ) 3840bool CalendarView::removeCompletedSubTodos( Todo* t )
3815{ 3841{
3816 bool deleteTodo = true; 3842 bool deleteTodo = true;
3817 QPtrList<Incidence> subTodos; 3843 QPtrList<Incidence> subTodos;
3818 Incidence *aTodo; 3844 Incidence *aTodo;
3819 subTodos = t->relations(); 3845 subTodos = t->relations();
3820 for (aTodo = subTodos.first(); aTodo; aTodo = subTodos.next()) { 3846 for (aTodo = subTodos.first(); aTodo; aTodo = subTodos.next()) {
3821 if (! removeCompletedSubTodos( (Todo*) aTodo )) 3847 if (! removeCompletedSubTodos( (Todo*) aTodo ))
3822 deleteTodo = false; 3848 deleteTodo = false;
3823 } 3849 }
3824 if ( deleteTodo ) { 3850 if ( deleteTodo ) {
3825 if ( t->isCompleted() && !t->doesRecur()) { 3851 if ( t->isCompleted() && !t->doesRecur()) {
3826 checkExternalId( t ); 3852 checkExternalId( t );
3827 mCalendar->deleteTodo( t ); 3853 mCalendar->deleteTodo( t );
3828 changeTodoDisplay( t,KOGlobals::EVENTDELETED ); 3854 changeTodoDisplay( t,KOGlobals::EVENTDELETED );
3829 } 3855 }
3830 else 3856 else
3831 deleteTodo = false; 3857 deleteTodo = false;
3832 } 3858 }
3833 return deleteTodo; 3859 return deleteTodo;
3834 3860
3835} 3861}
3836void CalendarView::purgeCompleted() 3862void CalendarView::purgeCompleted()
3837{ 3863{
3838 int result = KMessageBox::warningContinueCancel(this, 3864 int result = KMessageBox::warningContinueCancel(this,
3839 i18n("Delete all\ncompleted To-Dos?"),i18n("Purge To-Dos"),i18n("Purge")); 3865 i18n("Delete all\ncompleted To-Dos?"),i18n("Purge To-Dos"),i18n("Purge"));
3840 3866
3841 if (result == KMessageBox::Continue) { 3867 if (result == KMessageBox::Continue) {
3842 3868
3843 QPtrList<Todo> todoCal; 3869 QPtrList<Todo> todoCal;
3844 QPtrList<Todo> rootTodos; 3870 QPtrList<Todo> rootTodos;
3845 //QPtrList<Incidence> rel; 3871 //QPtrList<Incidence> rel;
3846 Todo *aTodo;//, *rTodo; 3872 Todo *aTodo;//, *rTodo;
3847 Incidence *rIncidence; 3873 Incidence *rIncidence;
3848 bool childDelete = false; 3874 bool childDelete = false;
3849 bool deletedOne = true; 3875 bool deletedOne = true;
3850 todoCal = calendar()->todos(); 3876 todoCal = calendar()->todos();
3851 for (aTodo = todoCal.first(); aTodo; aTodo = todoCal.next()) { 3877 for (aTodo = todoCal.first(); aTodo; aTodo = todoCal.next()) {
3852 if ( !aTodo->relatedTo() ) 3878 if ( !aTodo->relatedTo() )
3853 rootTodos.append( aTodo ); 3879 rootTodos.append( aTodo );
3854 } 3880 }
3855 for (aTodo = rootTodos.first(); aTodo; aTodo = rootTodos.next()) { 3881 for (aTodo = rootTodos.first(); aTodo; aTodo = rootTodos.next()) {
3856 removeCompletedSubTodos( aTodo ); 3882 removeCompletedSubTodos( aTodo );
3857 } 3883 }
3858 3884
3859 updateView(); 3885 updateView();
3860 } 3886 }
3861} 3887}
3862 3888
3863void CalendarView::slotCalendarChanged() 3889void CalendarView::slotCalendarChanged()
3864{ 3890{
3865 ; 3891 ;
3866} 3892}
3867 3893
3868void CalendarView::keyPressEvent ( QKeyEvent *e) 3894void CalendarView::keyPressEvent ( QKeyEvent *e)
3869{ 3895{
3870 //qDebug(" alendarView::keyPressEvent "); 3896 //qDebug(" alendarView::keyPressEvent ");
3871 e->ignore(); 3897 e->ignore();
3872} 3898}
3873 3899
3874 3900
3875bool CalendarView::sync(KSyncManager* manager, QString filename, int mode) 3901bool CalendarView::sync(KSyncManager* manager, QString filename, int mode)
3876{ 3902{
3877 // mSyncManager = manager; 3903 // mSyncManager = manager;
3878 if ( filename == QDir::homeDirPath ()+"/.kdecalendardump.ics" ) { 3904 if ( filename == QDir::homeDirPath ()+"/.kdecalendardump.ics" ) {
3879 qDebug("KO: SyncKDE request detected!"); 3905 qDebug("KO: SyncKDE request detected!");
3880 } 3906 }
3881 mCurrentSyncDevice = mSyncManager->getCurrentSyncDevice(); 3907 mCurrentSyncDevice = mSyncManager->getCurrentSyncDevice();
3882 mCurrentSyncName = mSyncManager->getCurrentSyncName(); 3908 mCurrentSyncName = mSyncManager->getCurrentSyncName();
3883 return syncCalendar( filename, mode ); 3909 return syncCalendar( filename, mode );
3884} 3910}
3885bool CalendarView::syncExternal(KSyncManager* manager, QString resource) 3911bool CalendarView::syncExternal(KSyncManager* manager, QString resource)
3886{ 3912{
3887 //mSyncManager = manager; 3913 //mSyncManager = manager;
3888 mCurrentSyncDevice = mSyncManager->getCurrentSyncDevice(); 3914 mCurrentSyncDevice = mSyncManager->getCurrentSyncDevice();
3889 mCurrentSyncName = mSyncManager->getCurrentSyncName(); 3915 mCurrentSyncName = mSyncManager->getCurrentSyncName();
3890 if ( resource == "sharp" ) 3916 if ( resource == "sharp" )
3891 syncExternal( 0 ); 3917 syncExternal( 0 );
3892 if ( resource == "phone" ) 3918 if ( resource == "phone" )
3893 syncExternal( 1 ); 3919 syncExternal( 1 );
3894 // pending setmodified 3920 // pending setmodified
3895 return true; 3921 return true;
3896} 3922}
3897void CalendarView::setSyncManager(KSyncManager* manager) 3923void CalendarView::setSyncManager(KSyncManager* manager)
3898{ 3924{
3899 mSyncManager = manager; 3925 mSyncManager = manager;
3900} 3926}
3901 3927
3902void CalendarView::removeSyncInfo( QString syncProfile) 3928void CalendarView::removeSyncInfo( QString syncProfile)
3903{ 3929{
3904 qDebug("KO: removeSyncInfo for profile %s ", syncProfile.latin1()); 3930 qDebug("KO: removeSyncInfo for profile %s ", syncProfile.latin1());
3905 mCalendar->removeSyncInfo( syncProfile ); 3931 mCalendar->removeSyncInfo( syncProfile );
3906 3932
3907} 3933}
3908 3934
3909void CalendarView::undo_delete() 3935void CalendarView::undo_delete()
3910{ 3936{
3911 //qDebug("undo_delete() "); 3937 //qDebug("undo_delete() ");
3912 Incidence* undo = mCalendar->undoIncidence(); 3938 Incidence* undo = mCalendar->undoIncidence();
3913 if ( !undo ) { 3939 if ( !undo ) {
3914 KMessageBox::sorry(this,i18n("There is nothing to undo!"), 3940 KMessageBox::sorry(this,i18n("There is nothing to undo!"),
3915 i18n("KO/Pi")); 3941 i18n("KO/Pi"));
3916 return; 3942 return;
3917 } 3943 }
3918 if ( KMessageBox::Continue ==KMessageBox::warningContinueCancel(this,undo->summary().left(25) + 3944 if ( KMessageBox::Continue ==KMessageBox::warningContinueCancel(this,undo->summary().left(25) +
3919 i18n("\nAre you sure you want\nto restore this?"), 3945 i18n("\nAre you sure you want\nto restore this?"),
3920 i18n("KO/Pi Confirmation"),i18n("Restore"))) { 3946 i18n("KO/Pi Confirmation"),i18n("Restore"))) {
3921 mCalendar->undoDeleteIncidence(); 3947 mCalendar->undoDeleteIncidence();
3922 updateView(); 3948 updateView();
3923 } 3949 }
3924} 3950}
3951
3952void CalendarView::slotViewerClosed()
3953{
3954 QTimer::singleShot( 50, this, SLOT ( resetFocus() ) );
3955}
3956
3957void CalendarView::resetFocus()
3958{
3959 if ( mViewerCallerIsSearchDialog ) {
3960 if ( mDialogManager->getSearchDialog()->isVisible() ){
3961 mDialogManager->getSearchDialog()->raise();
3962 mDialogManager->getSearchDialog()->setActiveWindow();
3963 mDialogManager->getSearchDialog()->listview()->resetFocus();
3964 } else
3965 mViewerCallerIsSearchDialog = false;
3966 }
3967 if ( !mViewerCallerIsSearchDialog ) {
3968 //mViewManager->currentView()->setFocus();
3969 //qDebug("sssssssssssssssset focus ");
3970 setActiveWindow();
3971 //setFocus();
3972 }
3973 mViewerCallerIsSearchDialog = false;
3974}
diff --git a/korganizer/calendarview.h b/korganizer/calendarview.h
index e626ea3..664d700 100644
--- a/korganizer/calendarview.h
+++ b/korganizer/calendarview.h
@@ -363,231 +363,234 @@ class CalendarView : public KOrg::CalendarViewBase, public KCal::Calendar::Obser
363 void takeOverEvent(); 363 void takeOverEvent();
364 364
365 /** Take ownership of all events in calendar. */ 365 /** Take ownership of all events in calendar. */
366 void takeOverCalendar(); 366 void takeOverCalendar();
367 367
368 /** query whether or not the calendar is "dirty". */ 368 /** query whether or not the calendar is "dirty". */
369 bool isModified(); 369 bool isModified();
370 /** set the state of calendar. Modified means "dirty", i.e. needing a save. */ 370 /** set the state of calendar. Modified means "dirty", i.e. needing a save. */
371 void setModified(bool modified=true); 371 void setModified(bool modified=true);
372 372
373 /** query if the calendar is read-only. */ 373 /** query if the calendar is read-only. */
374 bool isReadOnly(); 374 bool isReadOnly();
375 /** set state of calendar to read-only */ 375 /** set state of calendar to read-only */
376 void setReadOnly(bool readOnly=true); 376 void setReadOnly(bool readOnly=true);
377 377
378 void eventUpdated(Incidence *); 378 void eventUpdated(Incidence *);
379 379
380 /* iTIP scheduling actions */ 380 /* iTIP scheduling actions */
381 void schedule_publish(Incidence *incidence = 0); 381 void schedule_publish(Incidence *incidence = 0);
382 void schedule_request(Incidence *incidence = 0); 382 void schedule_request(Incidence *incidence = 0);
383 void schedule_refresh(Incidence *incidence = 0); 383 void schedule_refresh(Incidence *incidence = 0);
384 void schedule_cancel(Incidence *incidence = 0); 384 void schedule_cancel(Incidence *incidence = 0);
385 void schedule_add(Incidence *incidence = 0); 385 void schedule_add(Incidence *incidence = 0);
386 void schedule_reply(Incidence *incidence = 0); 386 void schedule_reply(Incidence *incidence = 0);
387 void schedule_counter(Incidence *incidence = 0); 387 void schedule_counter(Incidence *incidence = 0);
388 void schedule_declinecounter(Incidence *incidence = 0); 388 void schedule_declinecounter(Incidence *incidence = 0);
389 void schedule_publish_freebusy(int daysToPublish = 30); 389 void schedule_publish_freebusy(int daysToPublish = 30);
390 390
391 void openAddressbook(); 391 void openAddressbook();
392 392
393 void editFilters(); 393 void editFilters();
394 void toggleFilerEnabled(); 394 void toggleFilerEnabled();
395 QPtrList<CalFilter> filters(); 395 QPtrList<CalFilter> filters();
396 void toggleFilter(); 396 void toggleFilter();
397 void showFilter(bool visible); 397 void showFilter(bool visible);
398 void updateFilter(); 398 void updateFilter();
399 void filterEdited(); 399 void filterEdited();
400 void selectFilter( int ); 400 void selectFilter( int );
401 KOFilterView *filterView(); 401 KOFilterView *filterView();
402 402
403 void showIntro(); 403 void showIntro();
404 404
405 /** Move the curdatepient view date to today */ 405 /** Move the curdatepient view date to today */
406 void goToday(); 406 void goToday();
407 407
408 /** Move to the next date(s) in the current view */ 408 /** Move to the next date(s) in the current view */
409 void goNext(); 409 void goNext();
410 410
411 /** Move to the previous date(s) in the current view */ 411 /** Move to the previous date(s) in the current view */
412 void goPrevious(); 412 void goPrevious();
413 /** Move to the next date(s) in the current view */ 413 /** Move to the next date(s) in the current view */
414 void goNextMonth(); 414 void goNextMonth();
415 415
416 /** Move to the previous date(s) in the current view */ 416 /** Move to the previous date(s) in the current view */
417 void goPreviousMonth(); 417 void goPreviousMonth();
418 418
419 void toggleExpand(); 419 void toggleExpand();
420 void toggleDateNavigatorWidget(); 420 void toggleDateNavigatorWidget();
421 void toggleAllDaySize(); 421 void toggleAllDaySize();
422 void dialogClosing(Incidence *); 422 void dialogClosing(Incidence *);
423 423
424 /** Look for new messages in the inbox */ 424 /** Look for new messages in the inbox */
425 void lookForIncomingMessages(); 425 void lookForIncomingMessages();
426 /** Look for new messages in the outbox */ 426 /** Look for new messages in the outbox */
427 void lookForOutgoingMessages(); 427 void lookForOutgoingMessages();
428 428
429 void processMainViewSelection( Incidence * ); 429 void processMainViewSelection( Incidence * );
430 void processTodoListSelection( Incidence * ); 430 void processTodoListSelection( Incidence * );
431 431
432 void processIncidenceSelection( Incidence * ); 432 void processIncidenceSelection( Incidence * );
433 433
434 void purgeCompleted(); 434 void purgeCompleted();
435 bool removeCompletedSubTodos( Todo* ); 435 bool removeCompletedSubTodos( Todo* );
436 void slotCalendarChanged(); 436 void slotCalendarChanged();
437 bool importBday(); 437 bool importBday();
438 bool addAnniversary( QDate data, QString name, KCal::Attendee* a , bool birthday ); 438 bool addAnniversary( QDate data, QString name, KCal::Attendee* a , bool birthday );
439 bool importQtopia( const QString &categoriesFile, 439 bool importQtopia( const QString &categoriesFile,
440 const QString &datebookFile, 440 const QString &datebookFile,
441 const QString &tasklistFile ); 441 const QString &tasklistFile );
442 void syncExternal( int mode ); 442 void syncExternal( int mode );
443 void slotSelectPickerDate( QDate ) ; 443 void slotSelectPickerDate( QDate ) ;
444 void showDatePicker() ; 444 void showDatePicker() ;
445 void showDatePickerPopup() ; 445 void showDatePickerPopup() ;
446 void moveIncidence(Incidence *) ; 446 void moveIncidence(Incidence *) ;
447 void beamIncidence(Incidence *) ; 447 void beamIncidence(Incidence *) ;
448 void beamCalendar() ; 448 void beamCalendar() ;
449 void beamFilteredCalendar() ; 449 void beamFilteredCalendar() ;
450 void beamIncidenceList(QPtrList<Incidence>) ; 450 void beamIncidenceList(QPtrList<Incidence>) ;
451 void manageCategories(); 451 void manageCategories();
452 int addCategories(); 452 int addCategories();
453 void removeCategories(); 453 void removeCategories();
454 void setSyncDevice( QString ); 454 void setSyncDevice( QString );
455 void setSyncName( QString ); 455 void setSyncName( QString );
456 void showDay( QDate ); 456 void showDay( QDate );
457 void undo_delete(); 457 void undo_delete();
458 protected slots: 458 protected slots:
459 void resetFocus();
460 void slotViewerClosed();
459 void timerAlarm(); 461 void timerAlarm();
460 void suspendAlarm(); 462 void suspendAlarm();
461 void beamDone( Ir *ir ); 463 void beamDone( Ir *ir );
462 /** Select a view or adapt the current view to display the specified dates. */ 464 /** Select a view or adapt the current view to display the specified dates. */
463 void showDates( const KCal::DateList & ); 465 void showDates( const KCal::DateList & );
464 void selectWeekNum ( int ); 466 void selectWeekNum ( int );
465 467
466 public: 468 public:
467 // show a standard warning 469 // show a standard warning
468 // returns KMsgBox::yesNoCancel() 470 // returns KMsgBox::yesNoCancel()
469 int msgCalModified(); 471 int msgCalModified();
470 virtual bool sync(KSyncManager* manager, QString filename, int mode); 472 virtual bool sync(KSyncManager* manager, QString filename, int mode);
471 473
472 virtual bool syncExternal(KSyncManager* manager, QString resource); 474 virtual bool syncExternal(KSyncManager* manager, QString resource);
473 virtual void removeSyncInfo( QString syncProfile); 475 virtual void removeSyncInfo( QString syncProfile);
474 void setSyncManager(KSyncManager* manager); 476 void setSyncManager(KSyncManager* manager);
475 void setLoadedFileVersion(QDateTime); 477 void setLoadedFileVersion(QDateTime);
476 bool checkFileVersion(QString fn); 478 bool checkFileVersion(QString fn);
477 bool checkFileChanged(QString fn); 479 bool checkFileChanged(QString fn);
478 Event* getLastSyncEvent(); 480 Event* getLastSyncEvent();
479 /** Adapt navigation units correpsonding to step size of navigation of the 481 /** Adapt navigation units correpsonding to step size of navigation of the
480 * current view. 482 * current view.
481 */ 483 */
482 void adaptNavigationUnits(); 484 void adaptNavigationUnits();
483 bool synchronizeCalendar( Calendar* local, Calendar* remote, int mode ); 485 bool synchronizeCalendar( Calendar* local, Calendar* remote, int mode );
484 int takeEvent( Incidence* local, Incidence* remote, int mode, bool full = false ); 486 int takeEvent( Incidence* local, Incidence* remote, int mode, bool full = false );
485 //Attendee* getYourAttendee(Event *event); 487 //Attendee* getYourAttendee(Event *event);
486 void setBlockShowDates( bool b ) { mBlockShowDates = b ;} 488 void setBlockShowDates( bool b ) { mBlockShowDates = b ;}
487 protected: 489 protected:
488 void schedule(Scheduler::Method, Incidence *incidence = 0); 490 void schedule(Scheduler::Method, Incidence *incidence = 0);
489 491
490 // returns KMsgBox::OKCandel() 492 // returns KMsgBox::OKCandel()
491 int msgItemDelete(const QString name); 493 int msgItemDelete(const QString name);
492 void showEventEditor(); 494 void showEventEditor();
493 void showTodoEditor(); 495 void showTodoEditor();
494 void writeLocale(); 496 void writeLocale();
495 Todo *selectedTodo(); 497 Todo *selectedTodo();
496 498
497 private: 499 private:
500 bool mViewerCallerIsSearchDialog;
498 bool mBlockShowDates; 501 bool mBlockShowDates;
499 KSyncManager* mSyncManager; 502 KSyncManager* mSyncManager;
500 AlarmDialog * mAlarmDialog; 503 AlarmDialog * mAlarmDialog;
501 QString mAlarmNotification; 504 QString mAlarmNotification;
502 QString mSuspendAlarmNotification; 505 QString mSuspendAlarmNotification;
503 QTimer* mSuspendTimer; 506 QTimer* mSuspendTimer;
504 QTimer* mAlarmTimer; 507 QTimer* mAlarmTimer;
505 QTimer* mRecheckAlarmTimer; 508 QTimer* mRecheckAlarmTimer;
506 void computeAlarm( QString ); 509 void computeAlarm( QString );
507 void startAlarm( QString, QString ); 510 void startAlarm( QString, QString );
508 void setSyncEventsReadOnly(); 511 void setSyncEventsReadOnly();
509 512
510 QDateTime loadedFileVersion; 513 QDateTime loadedFileVersion;
511 void checkExternSyncEvent( QPtrList<Event> lastSync , Incidence* toDelete ); 514 void checkExternSyncEvent( QPtrList<Event> lastSync , Incidence* toDelete );
512 void checkExternalId( Incidence * inc ); 515 void checkExternalId( Incidence * inc );
513 int mGlobalSyncMode; 516 int mGlobalSyncMode;
514 QString mCurrentSyncDevice; 517 QString mCurrentSyncDevice;
515 QString mCurrentSyncName; 518 QString mCurrentSyncName;
516 KOBeamPrefs* beamDialog; 519 KOBeamPrefs* beamDialog;
517 void init(); 520 void init();
518 int mDatePickerMode; 521 int mDatePickerMode;
519 bool mFlagEditDescription; 522 bool mFlagEditDescription;
520 QDateTime mLastCalendarSync; 523 QDateTime mLastCalendarSync;
521 void createPrinter(); 524 void createPrinter();
522 525
523 void calendarModified( bool, Calendar * ); 526 void calendarModified( bool, Calendar * );
524 527
525 CalPrinter *mCalPrinter; 528 CalPrinter *mCalPrinter;
526 529
527 QSplitter *mPanner; 530 QSplitter *mPanner;
528 QSplitter *mLeftSplitter; 531 QSplitter *mLeftSplitter;
529 QWidget *mLeftFrame; 532 QWidget *mLeftFrame;
530 QWidgetStack *mRightFrame; 533 QWidgetStack *mRightFrame;
531 534
532 KDatePicker* mDatePicker; 535 KDatePicker* mDatePicker;
533 QVBox* mDateFrame; 536 QVBox* mDateFrame;
534 537
535 KDateNavigator *mDateNavigator; // widget showing small month view. 538 KDateNavigator *mDateNavigator; // widget showing small month view.
536 539
537 KOFilterView *mFilterView; 540 KOFilterView *mFilterView;
538 541
539 ResourceView *mResourceView; 542 ResourceView *mResourceView;
540 543
541 // calendar object for this viewing instance 544 // calendar object for this viewing instance
542 Calendar *mCalendar; 545 Calendar *mCalendar;
543 546
544 CalendarResourceManager *mResourceManager; 547 CalendarResourceManager *mResourceManager;
545 548
546 FileStorage *mStorage; 549 FileStorage *mStorage;
547 550
548 DateNavigator *mNavigator; 551 DateNavigator *mNavigator;
549 552
550 KOViewManager *mViewManager; 553 KOViewManager *mViewManager;
551 KODialogManager *mDialogManager; 554 KODialogManager *mDialogManager;
552 555
553 // Calendar filters 556 // Calendar filters
554 QPtrList<CalFilter> mFilters; 557 QPtrList<CalFilter> mFilters;
555 558
556 // various housekeeping variables. 559 // various housekeeping variables.
557 bool mModified; // flag indicating if calendar is modified 560 bool mModified; // flag indicating if calendar is modified
558 bool mReadOnly; // flag indicating if calendar is read-only 561 bool mReadOnly; // flag indicating if calendar is read-only
559 QDate mSaveSingleDate; 562 QDate mSaveSingleDate;
560 563
561 Incidence *mSelectedIncidence; 564 Incidence *mSelectedIncidence;
562 Incidence *mMoveIncidence; 565 Incidence *mMoveIncidence;
563 QDate mMoveIncidenceOldDate; 566 QDate mMoveIncidenceOldDate;
564 KOTodoView *mTodoList; 567 KOTodoView *mTodoList;
565 KOEventEditor * mEventEditor; 568 KOEventEditor * mEventEditor;
566 KOTodoEditor * mTodoEditor; 569 KOTodoEditor * mTodoEditor;
567 KOEventViewerDialog * mEventViewerDialog; 570 KOEventViewerDialog * mEventViewerDialog;
568 void keyPressEvent ( QKeyEvent *e) ; 571 void keyPressEvent ( QKeyEvent *e) ;
569 //QMap<Incidence*,KOIncidenceEditor*> mDialogList; 572 //QMap<Incidence*,KOIncidenceEditor*> mDialogList;
570}; 573};
571 574
572 575
573class CalendarViewVisitor : public Incidence::Visitor 576class CalendarViewVisitor : public Incidence::Visitor
574{ 577{
575 public: 578 public:
576 CalendarViewVisitor() : mView( 0 ) {} 579 CalendarViewVisitor() : mView( 0 ) {}
577 580
578 bool act( Incidence *incidence, CalendarView *view ) 581 bool act( Incidence *incidence, CalendarView *view )
579 { 582 {
580 mView = view; 583 mView = view;
581 return incidence->accept( *this ); 584 return incidence->accept( *this );
582 } 585 }
583 586
584 protected: 587 protected:
585 CalendarView *mView; 588 CalendarView *mView;
586}; 589};
587 590
588class ShowIncidenceVisitor : public CalendarViewVisitor 591class ShowIncidenceVisitor : public CalendarViewVisitor
589{ 592{
590 protected: 593 protected:
591 bool visit( Event *event ) { mView->showEvent( event ); return true; } 594 bool visit( Event *event ) { mView->showEvent( event ); return true; }
592 bool visit( Todo *todo ) { mView->showTodo( todo ); return true; } 595 bool visit( Todo *todo ) { mView->showTodo( todo ); return true; }
593 bool visit( Journal * j ) { mView->showJournal( j );return true; } 596 bool visit( Journal * j ) { mView->showJournal( j );return true; }
diff --git a/korganizer/koeventviewer.h b/korganizer/koeventviewer.h
index d8142ca..2d4a08e 100644
--- a/korganizer/koeventviewer.h
+++ b/korganizer/koeventviewer.h
@@ -1,76 +1,76 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org>
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18*/ 18*/
19#ifndef KOEVENTVIEWER_H 19#ifndef KOEVENTVIEWER_H
20#define KOEVENTVIEWER_H 20#define KOEVENTVIEWER_H
21// 21//
22// Viewer widget for events. 22// Viewer widget for events.
23// 23//
24 24
25#include <qtextbrowser.h> 25#include <qtextbrowser.h>
26 26
27#include <libkcal/event.h> 27#include <libkcal/event.h>
28#include <libkcal/journal.h> 28#include <libkcal/journal.h>
29 29
30 30
31using namespace KCal; 31using namespace KCal;
32 32
33class KOEventViewer : public QTextBrowser { 33class KOEventViewer : public QTextBrowser {
34 Q_OBJECT 34 Q_OBJECT
35 public: 35 public:
36 KOEventViewer(QWidget *parent=0,const char *name=0); 36 KOEventViewer(QWidget *parent=0,const char *name=0);
37 virtual ~KOEventViewer(); 37 virtual ~KOEventViewer();
38 38
39 void setSource(const QString &); 39 void setSource(const QString &);
40 void setEvent(Event *event); 40 void setEvent(Event *event);
41 void addEvent(Event *event); 41 void addEvent(Event *event);
42 void setTodo(Todo *event, bool clearV = true ); 42 void setTodo(Todo *event, bool clearV = true );
43 void setJournal(Journal *jour, bool clearV = true ); 43 void setJournal(Journal *jour, bool clearV = true );
44 44
45 void appendEvent(Event *event, int mode = 0 ); 45 void appendEvent(Event *event, int mode = 0 );
46 void appendTodo(Todo *event, int mode = 0 ); 46 void appendTodo(Todo *event, int mode = 0 );
47 void appendJournal(Journal *jour, int mode = 0 ); 47 void appendJournal(Journal *jour, int mode = 0 );
48 48
49 void clearEvents(bool now=false); 49 void clearEvents(bool now=false);
50 50
51 void addText(QString text); 51 void addText(QString text);
52 void setSyncMode( bool ); 52 void setSyncMode( bool );
53 void setColorMode( int ); 53 void setColorMode( int );
54 void mailToAttendees( bool all ); 54 void mailToAttendees( bool all );
55 55
56 protected: 56 protected:
57 int mColorMode; 57 int mColorMode;
58 void addTag(const QString & tag,const QString & text); 58 void addTag(const QString & tag,const QString & text);
59 59
60 void formatCategories(Incidence *event); 60 void formatCategories(Incidence *event);
61 void formatAttendees(Incidence *event); 61 void formatAttendees(Incidence *event);
62 void formatReadOnly(Incidence *event); 62 void formatReadOnly(Incidence *event);
63 void keyPressEvent ( QKeyEvent * e ); 63 void keyPressEvent ( QKeyEvent * e );
64 64
65 private: 65 private:
66 QTextBrowser *mEventTextView; 66 QTextBrowser *mEventTextView;
67 bool mSyncMode; 67 bool mSyncMode;
68 68
69 QString mText; 69 QString mText;
70 QString mMailSubject; 70 QString mMailSubject;
71 Incidence* mCurrentIncidence; 71 Incidence* mCurrentIncidence;
72 signals: 72 signals:
73 void launchaddressbook(QString uid); 73 void launchaddressbook(QString uid);
74}; 74};
75 75
76#endif 76#endif
diff --git a/korganizer/koeventviewerdialog.cpp b/korganizer/koeventviewerdialog.cpp
index 23e62d3..8bada3b 100644
--- a/korganizer/koeventviewerdialog.cpp
+++ b/korganizer/koeventviewerdialog.cpp
@@ -1,266 +1,283 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 2000,2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2000,2001 Cornelius Schumacher <schumacher@kde.org>
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18*/ 18*/
19 19
20#include <klocale.h> 20#include <klocale.h>
21 21
22#include <libkcal/event.h> 22#include <libkcal/event.h>
23#include <qtimer.h>
23#include <qpushbutton.h> 24#include <qpushbutton.h>
24 25
25#include "koeventviewer.h" 26#include "koeventviewer.h"
26#include "koprefs.h" 27#include "koprefs.h"
27#include <libkcal/todo.h> 28#include <libkcal/todo.h>
28#include "qapp.h" 29#include "qapp.h"
29 30
30#include "koeventviewerdialog.h" 31#include "koeventviewerdialog.h"
31extern int globalFlagBlockAgenda; 32extern int globalFlagBlockAgenda;
32 33
33KOEventViewerDialog::KOEventViewerDialog(QWidget *parent,const char *name) 34KOEventViewerDialog::KOEventViewerDialog(QWidget *parent,const char *name)
34 : KDialogBase(parent,name, 35 : KDialogBase(parent,name,
35#ifndef DESKTOP_VERSION 36#ifndef DESKTOP_VERSION
36 true , 37 true ,
37#else 38#else
38 false, 39 false,
39#endif 40#endif
40 i18n("Event Viewer"),Ok|User1|Close,Close, false, i18n("Agenda")) 41 i18n("Event Viewer"),Ok|User1|Close,Close, false, i18n("Agenda"))
41{ 42{
42 43 sendSignalViewerClosed = true;
43 mEventViewer = new KOEventViewer(this); 44 mEventViewer = new KOEventViewer(this);
44 mEventViewer->setFont( KOPrefs::instance()->mEventViewFont ); 45 mEventViewer->setFont( KOPrefs::instance()->mEventViewFont );
45 setMainWidget(mEventViewer); 46 setMainWidget(mEventViewer);
46 setButtonText(Ok, i18n("Edit") ); 47 setButtonText(Ok, i18n("Edit") );
47 48
48 QObject::connect(findButton( Ok ),SIGNAL(clicked()), 49 QObject::connect(findButton( Ok ),SIGNAL(clicked()),
49 SLOT(editIncidence())); 50 SLOT(editIncidence()));
50 QObject::connect(this,SIGNAL(user1Clicked()), 51 QObject::connect(this,SIGNAL(user1Clicked()),
51 SLOT(showIncidence())); 52 SLOT(showIncidence()));
52 mIncidence = 0; 53 mIncidence = 0;
53 // TODO: Set a sensible size (based on the content?). 54 // TODO: Set a sensible size (based on the content?).
54 //showMaximized(); 55 //showMaximized();
55 //qDebug("++++++++++++KOEventViewerDialog() "); 56 //qDebug("++++++++++++KOEventViewerDialog() ");
56 // if ( KOPrefs::instance()->mCompactDialogs ) { 57 // if ( KOPrefs::instance()->mCompactDialogs ) {
57// setFixedSize( 240,284 ); 58// setFixedSize( 240,284 );
58// move( 0, 15 ); 59// move( 0, 15 );
59// } else { 60// } else {
60// setMinimumSize(300,200); 61// setMinimumSize(300,200);
61// resize(320,300); 62// resize(320,300);
62// } 63// }
63 mSyncMode = false; 64 mSyncMode = false;
64 mSyncResult = 0; 65 mSyncResult = 0;
65 66
66} 67}
67 68
68KOEventViewerDialog::~KOEventViewerDialog() 69KOEventViewerDialog::~KOEventViewerDialog()
69{ 70{
70 //qDebug("-------~KOEventViewerDialog() "); 71 //qDebug("-------~KOEventViewerDialog() ");
71} 72}
72void KOEventViewerDialog::showMe() 73void KOEventViewerDialog::showMe()
73{ 74{
74 75
75#ifdef DESKTOP_VERSION 76#ifdef DESKTOP_VERSION
76 show(); 77 show();
77#else 78#else
78 showMaximized(); 79 showMaximized();
79#endif 80#endif
80 setActiveWindow(); 81 setActiveWindow();
81 mEventViewer->setFocus(); 82 mEventViewer->setFocus();
82 83
83} 84}
84void KOEventViewerDialog::setSyncMode( bool b ) 85void KOEventViewerDialog::setSyncMode( bool b )
85{ 86{
86 mSyncMode = b; 87 mSyncMode = b;
87 //qDebug("KOEventViewerDialog::setSyncMode %d ",mSyncMode ); 88 //qDebug("KOEventViewerDialog::setSyncMode %d ",mSyncMode );
88 if ( mSyncMode ) { 89 if ( mSyncMode ) {
89 findButton( Close )->setText( i18n("Cancel Sync")); 90 findButton( Close )->setText( i18n("Cancel Sync"));
90 findButton( Ok )->setText( i18n("Remote")); 91 findButton( Ok )->setText( i18n("Remote"));
91 findButton( User1 )->setText( i18n("Local")); 92 findButton( User1 )->setText( i18n("Local"));
92 } else { 93 } else {
93 findButton( Close )->setText( i18n("Close")); 94 findButton( Close )->setText( i18n("Close"));
94 findButton( Ok )->setText( i18n("Edit")); 95 findButton( Ok )->setText( i18n("Edit"));
95 findButton( User1 )->setText( i18n("Agenda")); 96 findButton( User1 )->setText( i18n("Agenda"));
96 } 97 }
97 mEventViewer->setSyncMode( b ); 98 mEventViewer->setSyncMode( b );
98} 99}
99void KOEventViewerDialog::setColorMode( int m ) 100void KOEventViewerDialog::setColorMode( int m )
100{ 101{
101 mEventViewer->setColorMode( m ); 102 mEventViewer->setColorMode( m );
102} 103}
103int KOEventViewerDialog::executeS( bool local ) 104int KOEventViewerDialog::executeS( bool local )
104{ 105{
105 mSyncResult = 3; 106 mSyncResult = 3;
106 if ( local ) 107 if ( local )
107 findButton( User1 )->setFocus(); 108 findButton( User1 )->setFocus();
108 else 109 else
109 findButton( Ok )->setFocus(); 110 findButton( Ok )->setFocus();
110 exec(); 111 exec();
111 return mSyncResult; 112 return mSyncResult;
112} 113}
113 114
114void KOEventViewerDialog::updateConfig() 115void KOEventViewerDialog::updateConfig()
115{ 116{
116 mEventViewer->setFont( KOPrefs::instance()->mEventViewFont ); 117 mEventViewer->setFont( KOPrefs::instance()->mEventViewFont );
117 118
118} 119}
119void KOEventViewerDialog::setEvent(Event *event) 120void KOEventViewerDialog::setEvent(Event *event)
120{ 121{
121 mEventViewer->setEvent(event); 122 mEventViewer->setEvent(event);
122 mIncidence = event; 123 mIncidence = event;
123 mEventViewer->setFocus(); 124 mEventViewer->setFocus();
124 //findButton( Close )->setFocus(); 125 //findButton( Close )->setFocus();
125 if ( !mSyncMode ) { 126 if ( !mSyncMode ) {
126 findButton( User1 )->setText( i18n("Agenda")); 127 findButton( User1 )->setText( i18n("Agenda"));
127 } 128 }
128} 129}
129void KOEventViewerDialog::setIncidence(Incidence *in ) 130void KOEventViewerDialog::setIncidence(Incidence *in )
130{ 131{
131 if ( in->type() == "Event" ) 132 if ( in->type() == "Event" )
132 setEvent( (Event*) in ); 133 setEvent( (Event*) in );
133 else if ( in->type() =="Todo" ) 134 else if ( in->type() =="Todo" )
134 setTodo( (Todo*) in ); 135 setTodo( (Todo*) in );
135 else if ( in->type() =="Journal" ) 136 else if ( in->type() =="Journal" )
136 setJournal( (Journal*) in ); 137 setJournal( (Journal*) in );
137} 138}
138void KOEventViewerDialog::addIncidence(Incidence *in) 139void KOEventViewerDialog::addIncidence(Incidence *in)
139{ 140{
140 if ( in->type() == "Event" ) 141 if ( in->type() == "Event" )
141 addEvent( (Event*) in ); 142 addEvent( (Event*) in );
142 else if ( in->type() =="Todo" ) 143 else if ( in->type() =="Todo" )
143 mEventViewer->setTodo( (Todo*) in, false ); 144 mEventViewer->setTodo( (Todo*) in, false );
144 else if ( in->type() =="Journal" ) 145 else if ( in->type() =="Journal" )
145 mEventViewer->setJournal( (Journal*) in, false ); 146 mEventViewer->setJournal( (Journal*) in, false );
146 if ( mSyncMode ) { 147 if ( mSyncMode ) {
147 findButton( User1 )->setFocus(); 148 findButton( User1 )->setFocus();
148 setCaption(i18n("Conflict! Please choose entry")); 149 setCaption(i18n("Conflict! Please choose entry"));
149 } 150 }
150} 151}
151 152
152void KOEventViewerDialog::addEvent(Event *event) 153void KOEventViewerDialog::addEvent(Event *event)
153{ 154{
154 mEventViewer->addEvent(event); 155 mEventViewer->addEvent(event);
155 mIncidence = event; 156 mIncidence = event;
156 mEventViewer->setFocus(); 157 mEventViewer->setFocus();
157 //findButton( Close )->setFocus(); 158 //findButton( Close )->setFocus();
158 if ( !mSyncMode ) { 159 if ( !mSyncMode ) {
159 findButton( User1 )->setText( i18n("Agenda")); 160 findButton( User1 )->setText( i18n("Agenda"));
160 } 161 }
161} 162}
162 163
163void KOEventViewerDialog::setTodo(Todo *event) 164void KOEventViewerDialog::setTodo(Todo *event)
164{ 165{
165 mEventViewer->setTodo(event); 166 mEventViewer->setTodo(event);
166 mIncidence = (Incidence*)event; 167 mIncidence = (Incidence*)event;
167 mEventViewer->setFocus(); 168 mEventViewer->setFocus();
168 //findButton( Close )->setFocus(); 169 //findButton( Close )->setFocus();
169 if ( !mSyncMode ) { 170 if ( !mSyncMode ) {
170 findButton( User1 )->setText( i18n("Set complete")); 171 findButton( User1 )->setText( i18n("Set complete"));
171 } 172 }
172} 173}
173void KOEventViewerDialog::setJournal(Journal *j) 174void KOEventViewerDialog::setJournal(Journal *j)
174{ 175{
175 mEventViewer->setJournal(j); 176 mEventViewer->setJournal(j);
176 mIncidence = (Incidence*)j; 177 mIncidence = (Incidence*)j;
177 mEventViewer->setFocus(); 178 mEventViewer->setFocus();
178 //findButton( Close )->setFocus(); 179 //findButton( Close )->setFocus();
179 if ( !mSyncMode ) { 180 if ( !mSyncMode ) {
180 findButton( User1 )->setText( i18n("Agenda")); 181 findButton( User1 )->setText( i18n("Agenda"));
181 } 182 }
182} 183}
183 184
184void KOEventViewerDialog::addText(QString text) 185void KOEventViewerDialog::addText(QString text)
185{ 186{
186 mEventViewer->addText(text); 187 mEventViewer->addText(text);
187 mEventViewer->setFocus(); 188 mEventViewer->setFocus();
188 //findButton( Close )->setFocus(); 189 //findButton( Close )->setFocus();
189} 190}
190void KOEventViewerDialog::editIncidence() 191void KOEventViewerDialog::editIncidence()
191{ 192{
193 sendSignalViewerClosed = false;
192 if ( mSyncMode ) { 194 if ( mSyncMode ) {
193 mSyncResult = 2; 195 mSyncResult = 2;
194 accept(); 196 accept();
195 return; 197 return;
196 } 198 }
197 if ( mIncidence ){ 199 if ( mIncidence ){
198#ifndef DESKTOP_VERSION 200#ifndef DESKTOP_VERSION
199 hide(); 201 hide();
200#endif 202#endif
201 emit editIncidence( mIncidence ); 203 emit editIncidence( mIncidence );
202 } 204 }
203} 205}
204void KOEventViewerDialog::showIncidence() 206void KOEventViewerDialog::showIncidence()
205{ 207{
206 208 sendSignalViewerClosed = false;
207 if ( mSyncMode ) { 209 if ( mSyncMode ) {
208 mSyncResult = 1; 210 mSyncResult = 1;
209 accept(); 211 accept();
210 return; 212 return;
211 } 213 }
212 214
213 if ( mIncidence ){ 215 if ( mIncidence ){
214#ifndef DESKTOP_VERSION 216#ifndef DESKTOP_VERSION
215 hide(); 217 hide();
216#endif 218#endif
217 QDate date; 219 QDate date;
218 if ( mIncidence->type() == "Todo" ) { 220 if ( mIncidence->type() == "Todo" ) {
219 /* 221 /*
220 if ( ((Todo*)mIncidence)->hasDueDate() ) 222 if ( ((Todo*)mIncidence)->hasDueDate() )
221 date = ((Todo*)mIncidence)->dtDue().date(); 223 date = ((Todo*)mIncidence)->dtDue().date();
222 else { 224 else {
223 globalFlagBlockAgenda = 2; 225 globalFlagBlockAgenda = 2;
224 emit showAgendaView( false ); 226 emit showAgendaView( false );
225 return; 227 return;
226 } 228 }
227 */ 229 */
228 ((Todo*)mIncidence)->setCompleted( true ); 230 ((Todo*)mIncidence)->setCompleted( true );
229 ((Todo*)mIncidence)->setCompleted(QDateTime::currentDateTime() ); 231 ((Todo*)mIncidence)->setCompleted(QDateTime::currentDateTime() );
230 hide(); 232 hide();
231 emit todoCompleted(((Todo*)mIncidence)); 233 emit todoCompleted(((Todo*)mIncidence));
232 return; 234 return;
233 235
234 } else 236 } else
235 date = mIncidence->dtStart().date(); 237 date = mIncidence->dtStart().date();
236 globalFlagBlockAgenda = 1; 238 globalFlagBlockAgenda = 1;
237 emit showAgendaView( false ); 239 emit showAgendaView( false );
238 globalFlagBlockAgenda = 2; 240 globalFlagBlockAgenda = 2;
239 emit jumpToTime( date ); 241 emit jumpToTime( date );
240 } 242 }
241} 243}
242void KOEventViewerDialog::keyPressEvent ( QKeyEvent * e ) 244void KOEventViewerDialog::keyPressEvent ( QKeyEvent * e )
243{ 245{
244 switch ( e->key() ) { 246 switch ( e->key() ) {
245 247
246 case Qt::Key_A : 248 case Qt::Key_A :
247 case Qt::Key_L : 249 case Qt::Key_L :
248 showIncidence(); 250 showIncidence();
249 break; 251 break;
250 case Qt::Key_E : 252 case Qt::Key_E :
251 case Qt::Key_R : 253 case Qt::Key_R :
252 editIncidence(); 254 editIncidence();
253 break; 255 break;
254 case Qt::Key_C: 256 case Qt::Key_C:
255 case Qt::Key_Escape: 257 case Qt::Key_Escape:
256 close(); 258 close();
257 break; 259 break;
258 case Qt::Key_I: 260 case Qt::Key_I:
259 accept(); 261 accept();
260 break; 262 break;
261 default: 263 default:
262 KDialogBase::keyPressEvent ( e ); 264 KDialogBase::keyPressEvent ( e );
263 break; 265 break;
264 } 266 }
265 267
266} 268}
269void KOEventViewerDialog::hideEvent ( QHideEvent * e )
270{
271 KDialogBase::hideEvent ( e );
272 QTimer::singleShot( 1, this, SLOT (slotViewerClosed() ) );
273}
274
275void KOEventViewerDialog::slotViewerClosed()
276{
277 if ( sendSignalViewerClosed ) {
278 //qDebug("KOEventViewerDialog::hideEvent ");
279 emit signalViewerClosed();
280 }
281 sendSignalViewerClosed = true;
282}
283
diff --git a/korganizer/koeventviewerdialog.h b/korganizer/koeventviewerdialog.h
index b6b4103..36431ad 100644
--- a/korganizer/koeventviewerdialog.h
+++ b/korganizer/koeventviewerdialog.h
@@ -1,71 +1,75 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 2000, 2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2000, 2001 Cornelius Schumacher <schumacher@kde.org>
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18*/ 18*/
19#ifndef KOEVENTVIEWERDIALOG_H 19#ifndef KOEVENTVIEWERDIALOG_H
20#define KOEVENTVIEWERDIALOG_H 20#define KOEVENTVIEWERDIALOG_H
21// 21//
22// Viewer dialog for events. 22// Viewer dialog for events.
23// 23//
24 24
25#include <qtextview.h> 25#include <qtextview.h>
26 26
27#include <kdialogbase.h> 27#include <kdialogbase.h>
28 28
29#include <libkcal/event.h> 29#include <libkcal/event.h>
30 30
31using namespace KCal; 31using namespace KCal;
32 32
33class KOEventViewer; 33class KOEventViewer;
34 34
35class KOEventViewerDialog : public KDialogBase { 35class KOEventViewerDialog : public KDialogBase {
36 Q_OBJECT 36 Q_OBJECT
37 public: 37 public:
38 KOEventViewerDialog(QWidget *parent=0,const char *name=0); 38 KOEventViewerDialog(QWidget *parent=0,const char *name=0);
39 virtual ~KOEventViewerDialog(); 39 virtual ~KOEventViewerDialog();
40 40
41 void setEvent(Event *event); 41 void setEvent(Event *event);
42 void addEvent(Event *event); 42 void addEvent(Event *event);
43 void setTodo(Todo *event); 43 void setTodo(Todo *event);
44 void setJournal(Journal *journal); 44 void setJournal(Journal *journal);
45 void setIncidence(Incidence *inc); 45 void setIncidence(Incidence *inc);
46 void addIncidence(Incidence *inc); 46 void addIncidence(Incidence *inc);
47 void addText(QString text); 47 void addText(QString text);
48 void showMe(); 48 void showMe();
49 void setSyncMode( bool ); 49 void setSyncMode( bool );
50 void setColorMode( int m ); 50 void setColorMode( int m );
51 int executeS( bool ); 51 int executeS( bool );
52 public slots: 52 public slots:
53 void updateConfig(); 53 void updateConfig();
54 signals: 54 signals:
55 void editIncidence( Incidence* ); 55 void editIncidence( Incidence* );
56 void jumpToTime( const QDate &); 56 void jumpToTime( const QDate &);
57 void showAgendaView( bool ); 57 void showAgendaView( bool );
58 void todoCompleted(Todo*); 58 void todoCompleted(Todo*);
59 void signalViewerClosed();
59private slots: 60private slots:
61 void slotViewerClosed();
60 void editIncidence(); 62 void editIncidence();
61 void showIncidence(); 63 void showIncidence();
62 64 protected:
65 void hideEvent ( QHideEvent * e );
63 private: 66 private:
67 bool sendSignalViewerClosed;
64 bool mSyncMode; 68 bool mSyncMode;
65 int mSyncResult; 69 int mSyncResult;
66 KOEventViewer *mEventViewer; 70 KOEventViewer *mEventViewer;
67 Incidence* mIncidence; 71 Incidence* mIncidence;
68 void keyPressEvent ( QKeyEvent * e ); 72 void keyPressEvent ( QKeyEvent * e );
69}; 73};
70 74
71#endif 75#endif
diff --git a/korganizer/kolistview.cpp b/korganizer/kolistview.cpp
index 4a6e17d..6acee75 100644
--- a/korganizer/kolistview.cpp
+++ b/korganizer/kolistview.cpp
@@ -691,193 +691,196 @@ void KOListView::deleteAll()
691 int dw = QApplication::desktop()->width(); 691 int dw = QApplication::desktop()->width();
692 int dh = QApplication::desktop()->height(); 692 int dh = QApplication::desktop()->height();
693 dia.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 693 dia.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
694 //dia.resize( 240,50 ); 694 //dia.resize( 240,50 );
695 dia.show(); 695 dia.show();
696 696
697 while ( incidence ) { 697 while ( incidence ) {
698 bar.setProgress( delCounter ); 698 bar.setProgress( delCounter );
699 mess = mess.sprintf( i18n("Deleting item %d ..."), ++delCounter ); 699 mess = mess.sprintf( i18n("Deleting item %d ..."), ++delCounter );
700 dia.setCaption( mess ); 700 dia.setCaption( mess );
701 qApp->processEvents(); 701 qApp->processEvents();
702 toDelete = (incidence); 702 toDelete = (incidence);
703 incidence = delSel.next(); 703 incidence = delSel.next();
704 emit deleteIncidenceSignal(toDelete ); 704 emit deleteIncidenceSignal(toDelete );
705 if ( dia.result() != 0 ) 705 if ( dia.result() != 0 )
706 break; 706 break;
707 707
708 } 708 }
709 mess = mess.sprintf( i18n("%d items remaining in list."), count() ); 709 mess = mess.sprintf( i18n("%d items remaining in list."), count() );
710 topLevelWidget ()->setCaption( mess ); 710 topLevelWidget ()->setCaption( mess );
711 p->mConfirm = confirm; 711 p->mConfirm = confirm;
712 } 712 }
713 } 713 }
714 714
715 715
716} 716}
717int KOListView::maxDatesHint() 717int KOListView::maxDatesHint()
718{ 718{
719 return 0; 719 return 0;
720} 720}
721 721
722int KOListView::currentDateCount() 722int KOListView::currentDateCount()
723{ 723{
724 return 0; 724 return 0;
725} 725}
726 726
727QPtrList<Incidence> KOListView::selectedIncidences() 727QPtrList<Incidence> KOListView::selectedIncidences()
728{ 728{
729 QPtrList<Incidence> eventList; 729 QPtrList<Incidence> eventList;
730 QListViewItem *item = mListView->firstChild (); 730 QListViewItem *item = mListView->firstChild ();
731 while ( item ) { 731 while ( item ) {
732 if ( item->isSelected() ) { 732 if ( item->isSelected() ) {
733 eventList.append(((KOListViewItem *)item)->data()); 733 eventList.append(((KOListViewItem *)item)->data());
734 } 734 }
735 735
736 item = item->nextSibling(); 736 item = item->nextSibling();
737 } 737 }
738 738
739 // // QListViewItem *item = mListView->selectedItem(); 739 // // QListViewItem *item = mListView->selectedItem();
740 //if (item) eventList.append(((KOListViewItem *)item)->data()); 740 //if (item) eventList.append(((KOListViewItem *)item)->data());
741 741
742 return eventList; 742 return eventList;
743} 743}
744 744
745DateList KOListView::selectedDates() 745DateList KOListView::selectedDates()
746{ 746{
747 DateList eventList; 747 DateList eventList;
748 return eventList; 748 return eventList;
749} 749}
750 750
751void KOListView::showDates(bool show) 751void KOListView::showDates(bool show)
752{ 752{
753 // Shouldn't we set it to a value greater 0? When showDates is called with 753 // Shouldn't we set it to a value greater 0? When showDates is called with
754 // show == true at first, then the columnwidths are set to zero. 754 // show == true at first, then the columnwidths are set to zero.
755 static int oldColWidth1 = 0; 755 static int oldColWidth1 = 0;
756 static int oldColWidth3 = 0; 756 static int oldColWidth3 = 0;
757 757
758 if (!show) { 758 if (!show) {
759 oldColWidth1 = mListView->columnWidth(1); 759 oldColWidth1 = mListView->columnWidth(1);
760 oldColWidth3 = mListView->columnWidth(3); 760 oldColWidth3 = mListView->columnWidth(3);
761 mListView->setColumnWidth(1, 0); 761 mListView->setColumnWidth(1, 0);
762 mListView->setColumnWidth(3, 0); 762 mListView->setColumnWidth(3, 0);
763 } else { 763 } else {
764 mListView->setColumnWidth(1, oldColWidth1); 764 mListView->setColumnWidth(1, oldColWidth1);
765 mListView->setColumnWidth(3, oldColWidth3); 765 mListView->setColumnWidth(3, oldColWidth3);
766 } 766 }
767 mListView->repaint(); 767 mListView->repaint();
768} 768}
769 769
770void KOListView::printPreview(CalPrinter *calPrinter, const QDate &fd, 770void KOListView::printPreview(CalPrinter *calPrinter, const QDate &fd,
771 const QDate &td) 771 const QDate &td)
772{ 772{
773#ifndef KORG_NOPRINTER 773#ifndef KORG_NOPRINTER
774 calPrinter->preview(CalPrinter::Day, fd, td); 774 calPrinter->preview(CalPrinter::Day, fd, td);
775#endif 775#endif
776} 776}
777 777
778void KOListView::showDates() 778void KOListView::showDates()
779{ 779{
780 showDates(true); 780 showDates(true);
781} 781}
782 782
783void KOListView::hideDates() 783void KOListView::hideDates()
784{ 784{
785 showDates(false); 785 showDates(false);
786} 786}
787 787void KOListView::resetFocus()
788{
789 mListView->setFocus();
790}
788void KOListView::updateView() 791void KOListView::updateView()
789{ 792{
790 mListView->setFocus(); 793 mListView->setFocus();
791 if ( mListView->firstChild () ) 794 if ( mListView->firstChild () )
792 mListView->setCurrentItem( mListView->firstChild () ); 795 mListView->setCurrentItem( mListView->firstChild () );
793} 796}
794void KOListView::updateConfig() 797void KOListView::updateConfig()
795{ 798{
796 799
797 mListView->setFont ( KOPrefs::instance()->mListViewFont ); 800 mListView->setFont ( KOPrefs::instance()->mListViewFont );
798 updateView(); 801 updateView();
799 802
800} 803}
801void KOListView::setStartDate(const QDate &start) 804void KOListView::setStartDate(const QDate &start)
802{ 805{
803 mStartDate = start; 806 mStartDate = start;
804} 807}
805 808
806void KOListView::showDates(const QDate &start, const QDate &end) 809void KOListView::showDates(const QDate &start, const QDate &end)
807{ 810{
808 clear(); 811 clear();
809 mStartDate = start; 812 mStartDate = start;
810 QDate date = start; 813 QDate date = start;
811 QPtrList<Journal> j_list; 814 QPtrList<Journal> j_list;
812 while( date <= end ) { 815 while( date <= end ) {
813 addEvents(calendar()->events(date)); 816 addEvents(calendar()->events(date));
814 addTodos(calendar()->todos(date)); 817 addTodos(calendar()->todos(date));
815 Journal* jo = calendar()->journal(date); 818 Journal* jo = calendar()->journal(date);
816 if ( jo ) 819 if ( jo )
817 j_list.append( jo ); 820 j_list.append( jo );
818 date = date.addDays( 1 ); 821 date = date.addDays( 1 );
819 } 822 }
820 addJournals(j_list); 823 addJournals(j_list);
821 emit incidenceSelected( 0 ); 824 emit incidenceSelected( 0 );
822 updateView(); 825 updateView();
823 826
824} 827}
825 828
826void KOListView::addEvents(QPtrList<Event> eventList) 829void KOListView::addEvents(QPtrList<Event> eventList)
827{ 830{
828 Event *ev; 831 Event *ev;
829 for(ev = eventList.first(); ev; ev = eventList.next()) { 832 for(ev = eventList.first(); ev; ev = eventList.next()) {
830 addIncidence(ev); 833 addIncidence(ev);
831 } 834 }
832 if ( !mListView->currentItem() ){ 835 if ( !mListView->currentItem() ){
833 updateView(); 836 updateView();
834 } 837 }
835} 838}
836 839
837void KOListView::addTodos(QPtrList<Todo> eventList) 840void KOListView::addTodos(QPtrList<Todo> eventList)
838{ 841{
839 Todo *ev; 842 Todo *ev;
840 for(ev = eventList.first(); ev; ev = eventList.next()) { 843 for(ev = eventList.first(); ev; ev = eventList.next()) {
841 addIncidence(ev); 844 addIncidence(ev);
842 } 845 }
843 if ( !mListView->currentItem() ){ 846 if ( !mListView->currentItem() ){
844 updateView(); 847 updateView();
845 } 848 }
846} 849}
847void KOListView::addJournals(QPtrList<Journal> eventList) 850void KOListView::addJournals(QPtrList<Journal> eventList)
848{ 851{
849 Journal *ev; 852 Journal *ev;
850 for(ev = eventList.first(); ev; ev = eventList.next()) { 853 for(ev = eventList.first(); ev; ev = eventList.next()) {
851 addIncidence(ev); 854 addIncidence(ev);
852 } 855 }
853 if ( !mListView->currentItem() ){ 856 if ( !mListView->currentItem() ){
854 updateView(); 857 updateView();
855 } 858 }
856} 859}
857 860
858void KOListView::addIncidence(Incidence *incidence) 861void KOListView::addIncidence(Incidence *incidence)
859{ 862{
860 if ( mUidDict.find( incidence->uid() ) ) return; 863 if ( mUidDict.find( incidence->uid() ) ) return;
861 864
862 // mListView->setFont ( KOPrefs::instance()->mListViewFont ); 865 // mListView->setFont ( KOPrefs::instance()->mListViewFont );
863 mUidDict.insert( incidence->uid(), incidence ); 866 mUidDict.insert( incidence->uid(), incidence );
864 867
865 KOListViewItem *item = new KOListViewItem( incidence, mListView ); 868 KOListViewItem *item = new KOListViewItem( incidence, mListView );
866 ListItemVisitor v(item, mStartDate ); 869 ListItemVisitor v(item, mStartDate );
867 if (incidence->accept(v)) return; 870 if (incidence->accept(v)) return;
868 else delete item; 871 else delete item;
869 //qDebug("delete item "); 872 //qDebug("delete item ");
870} 873}
871 874
872void KOListView::showEvents(QPtrList<Event> eventList) 875void KOListView::showEvents(QPtrList<Event> eventList)
873{ 876{
874 clear(); 877 clear();
875 878
876 addEvents(eventList); 879 addEvents(eventList);
877 880
878 // After new creation of list view no events are selected. 881 // After new creation of list view no events are selected.
879 emit incidenceSelected( 0 ); 882 emit incidenceSelected( 0 );
880} 883}
881int KOListView::count() 884int KOListView::count()
882{ 885{
883 return mListView->childCount(); 886 return mListView->childCount();
@@ -982,197 +985,198 @@ void KOListView::clear()
982{ 985{
983 mListView->clear(); 986 mListView->clear();
984 mUidDict.clear(); 987 mUidDict.clear();
985} 988}
986 989
987Incidence* KOListView::currentItem() 990Incidence* KOListView::currentItem()
988{ 991{
989 if ( mListView->currentItem() ) 992 if ( mListView->currentItem() )
990 return ((KOListViewItem*) mListView->currentItem())->data(); 993 return ((KOListViewItem*) mListView->currentItem())->data();
991 return 0; 994 return 0;
992} 995}
993void KOListView::keyPressEvent ( QKeyEvent *e) 996void KOListView::keyPressEvent ( QKeyEvent *e)
994{ 997{
995 998
996 if ( e->key() == Qt::Key_Delete || e->key() == Qt::Key_Backspace ) { 999 if ( e->key() == Qt::Key_Delete || e->key() == Qt::Key_Backspace ) {
997 deleteAll(); 1000 deleteAll();
998 return; 1001 return;
999 } 1002 }
1000 1003
1001 e->ignore(); 1004 e->ignore();
1002} 1005}
1003void KOListViewListView::keyPressEvent ( QKeyEvent *e) 1006void KOListViewListView::keyPressEvent ( QKeyEvent *e)
1004{ 1007{
1005 1008
1006 switch ( e->key() ) { 1009 switch ( e->key() ) {
1007 case Qt::Key_Down: 1010 case Qt::Key_Down:
1008 if ( e->state() == ShiftButton ) { 1011 if ( e->state() == ShiftButton ) {
1009 QListViewItem* cn = currentItem(); 1012 QListViewItem* cn = currentItem();
1010 if ( !cn ) 1013 if ( !cn )
1011 cn = firstChild(); 1014 cn = firstChild();
1012 if ( !cn ) 1015 if ( !cn )
1013 return; 1016 return;
1014 while ( cn->nextSibling() ) 1017 while ( cn->nextSibling() )
1015 cn = cn->nextSibling(); 1018 cn = cn->nextSibling();
1016 setCurrentItem ( cn ); 1019 setCurrentItem ( cn );
1017 ensureItemVisible ( cn ); 1020 ensureItemVisible ( cn );
1018 1021
1019 e->accept(); 1022 e->accept();
1020 return; 1023 return;
1021 } 1024 }
1022 if ( e->state() == ControlButton ) { 1025 if ( e->state() == ControlButton ) {
1023 int count = childCount (); 1026 int count = childCount ();
1024 int jump = count / 5; 1027 int jump = count / 5;
1025 QListViewItem* cn; 1028 QListViewItem* cn;
1026 cn = currentItem(); 1029 cn = currentItem();
1027 if ( ! cn ) 1030 if ( ! cn )
1028 return; 1031 return;
1029 if ( jump == 0 ) 1032 if ( jump == 0 )
1030 jump = 1; 1033 jump = 1;
1031 while ( jump && cn->nextSibling() ) { 1034 while ( jump && cn->nextSibling() ) {
1032 cn = cn->nextSibling(); 1035 cn = cn->nextSibling();
1033 --jump; 1036 --jump;
1034 } 1037 }
1035 setCurrentItem ( cn ); 1038 setCurrentItem ( cn );
1036 ensureItemVisible ( cn ); 1039 ensureItemVisible ( cn );
1037 1040
1038 } else 1041 } else
1039 QListView::keyPressEvent ( e ) ; 1042 QListView::keyPressEvent ( e ) ;
1040 e->accept(); 1043 e->accept();
1041 break; 1044 break;
1042 1045
1043 case Qt::Key_Up: 1046 case Qt::Key_Up:
1044 if ( e->state() == ShiftButton ) { 1047 if ( e->state() == ShiftButton ) {
1045 QListViewItem* cn = firstChild(); 1048 QListViewItem* cn = firstChild();
1046 if ( cn ) { 1049 if ( cn ) {
1047 setCurrentItem ( cn ); 1050 setCurrentItem ( cn );
1048 ensureItemVisible ( cn ); 1051 ensureItemVisible ( cn );
1049 } 1052 }
1050 e->accept(); 1053 e->accept();
1051 return; 1054 return;
1052 } 1055 }
1053 if ( e->state() == ControlButton ) { 1056 if ( e->state() == ControlButton ) {
1054 int count = childCount (); 1057 int count = childCount ();
1055 int jump = count / 5; 1058 int jump = count / 5;
1056 QListViewItem* cn; 1059 QListViewItem* cn;
1057 cn = currentItem(); 1060 cn = currentItem();
1058 if ( ! cn ) 1061 if ( ! cn )
1059 return; 1062 return;
1060 if ( jump == 0 ) 1063 if ( jump == 0 )
1061 jump = 1; 1064 jump = 1;
1062 while ( jump && cn->itemAbove ()) { 1065 while ( jump && cn->itemAbove ()) {
1063 cn = cn->itemAbove (); 1066 cn = cn->itemAbove ();
1064 --jump; 1067 --jump;
1065 } 1068 }
1066 setCurrentItem ( cn ); 1069 setCurrentItem ( cn );
1067 ensureItemVisible ( cn ); 1070 ensureItemVisible ( cn );
1068 } else 1071 } else
1069 QListView::keyPressEvent ( e ) ; 1072 QListView::keyPressEvent ( e ) ;
1070 e->accept(); 1073 e->accept();
1071 break; 1074 break;
1072 case Qt::Key_I: { 1075 case Qt::Key_I: {
1073 QListViewItem* cn; 1076 QListViewItem* cn;
1074 cn = currentItem(); 1077 cn = currentItem();
1075 if ( cn ) { 1078 if ( cn ) {
1076 KOListViewItem* ci = (KOListViewItem*)( cn ); 1079 KOListViewItem* ci = (KOListViewItem*)( cn );
1077 if ( ci ){ 1080 if ( ci ){
1078 emit showIncidence( ci->data()); 1081 //emit showIncidence( ci->data());
1079 cn = cn->nextSibling(); 1082 cn = cn->nextSibling();
1080 if ( cn ) { 1083 if ( cn ) {
1081 setCurrentItem ( cn ); 1084 setCurrentItem ( cn );
1082 ensureItemVisible ( cn ); 1085 ensureItemVisible ( cn );
1086 emit showIncidence( ci->data());
1083 } 1087 }
1084 } 1088 }
1085 } 1089 }
1086 e->accept(); 1090 e->accept();
1087 } 1091 }
1088 break; 1092 break;
1089 case Qt::Key_Return: 1093 case Qt::Key_Return:
1090 case Qt::Key_Enter: 1094 case Qt::Key_Enter:
1091 { 1095 {
1092 QListViewItem* cn; 1096 QListViewItem* cn;
1093 cn = currentItem(); 1097 cn = currentItem();
1094 if ( cn ) { 1098 if ( cn ) {
1095 KOListViewItem* ci = (KOListViewItem*)( cn ); 1099 KOListViewItem* ci = (KOListViewItem*)( cn );
1096 if ( ci ){ 1100 if ( ci ){
1097 if ( e->state() == ShiftButton ) 1101 if ( e->state() == ShiftButton )
1098 ci->setSelected( false ); 1102 ci->setSelected( false );
1099 else 1103 else
1100 ci->setSelected( true ); 1104 ci->setSelected( true );
1101 cn = cn->nextSibling(); 1105 cn = cn->nextSibling();
1102 if ( cn ) { 1106 if ( cn ) {
1103 setCurrentItem ( cn ); 1107 setCurrentItem ( cn );
1104 ensureItemVisible ( cn ); 1108 ensureItemVisible ( cn );
1105 } 1109 }
1106 } 1110 }
1107 } 1111 }
1108 e->accept(); 1112 e->accept();
1109 } 1113 }
1110 break; 1114 break;
1111 default: 1115 default:
1112 e->ignore(); 1116 e->ignore();
1113 } 1117 }
1114} 1118}
1115KOListViewListView::KOListViewListView(KOListView * lv ) 1119KOListViewListView::KOListViewListView(KOListView * lv )
1116 : KListView( lv ) 1120 : KListView( lv )
1117{ 1121{
1118#ifndef DESKTOP_VERSION 1122#ifndef DESKTOP_VERSION
1119 QPEApplication::setStylusOperation(viewport(), QPEApplication::RightOnHold ); 1123 QPEApplication::setStylusOperation(viewport(), QPEApplication::RightOnHold );
1120#endif 1124#endif
1121 mYMousePos = -1000; 1125 mYMousePos = -1000;
1122 setSelectionMode( QListView::Multi ); 1126 setSelectionMode( QListView::Multi );
1123 setMultiSelection( true); 1127 setMultiSelection( true);
1124 mAllowPopupMenu = true; 1128 mAllowPopupMenu = true;
1125 mMouseDown = false; 1129 mMouseDown = false;
1126 1130
1127} 1131}
1128void KOListViewListView::contentsMouseDoubleClickEvent(QMouseEvent *e) 1132void KOListViewListView::contentsMouseDoubleClickEvent(QMouseEvent *e)
1129{ 1133{
1130 if (!e) return; 1134 if (!e) return;
1131 QPoint vp = contentsToViewport(e->pos()); 1135 QPoint vp = contentsToViewport(e->pos());
1132 QListViewItem *item = itemAt(vp); 1136 QListViewItem *item = itemAt(vp);
1133 if (!item) { 1137 if (!item) {
1134 emit newEvent(); 1138 emit newEvent();
1135 return; 1139 return;
1136 } 1140 }
1137 KListView::contentsMouseDoubleClickEvent(e); 1141 KListView::contentsMouseDoubleClickEvent(e);
1138} 1142}
1139 1143
1140 1144
1141void KOListViewListView::contentsMousePressEvent(QMouseEvent *e) 1145void KOListViewListView::contentsMousePressEvent(QMouseEvent *e)
1142{ 1146{
1143 //qDebug("contentsMousePressEvent++++ "); 1147 //qDebug("contentsMousePressEvent++++ ");
1144 if (! mMouseDown ) { 1148 if (! mMouseDown ) {
1145 mAllowPopupMenu = true; 1149 mAllowPopupMenu = true;
1146 mYMousePos = mapToGlobal( (e->pos())).y(); 1150 mYMousePos = mapToGlobal( (e->pos())).y();
1147 } 1151 }
1148 if ( e->button() == RightButton && mMouseDown ) 1152 if ( e->button() == RightButton && mMouseDown )
1149 return; 1153 return;
1150 if ( e->button() == LeftButton ) 1154 if ( e->button() == LeftButton )
1151 mMouseDown = true; 1155 mMouseDown = true;
1152 KListView::contentsMousePressEvent( e ); 1156 KListView::contentsMousePressEvent( e );
1153} 1157}
1154void KOListViewListView::contentsMouseReleaseEvent(QMouseEvent *e) 1158void KOListViewListView::contentsMouseReleaseEvent(QMouseEvent *e)
1155{ 1159{
1156 //qDebug("contentsMouseReleaseEv---- "); 1160 //qDebug("contentsMouseReleaseEv---- ");
1157 if ( ! mMouseDown ) { 1161 if ( ! mMouseDown ) {
1158 if ( e->button() == RightButton && ! mAllowPopupMenu ) 1162 if ( e->button() == RightButton && ! mAllowPopupMenu )
1159 return; 1163 return;
1160 QListViewItem* ci = currentItem(); 1164 QListViewItem* ci = currentItem();
1161 if ( ci ) 1165 if ( ci )
1162 ci->setSelected( true ); 1166 ci->setSelected( true );
1163 KListView::contentsMouseReleaseEvent(e); 1167 KListView::contentsMouseReleaseEvent(e);
1164 return; 1168 return;
1165 } 1169 }
1166 if ( e->button() == LeftButton ) 1170 if ( e->button() == LeftButton )
1167 mMouseDown = false; 1171 mMouseDown = false;
1168 if ( e->button() == RightButton && ! mAllowPopupMenu ) 1172 if ( e->button() == RightButton && ! mAllowPopupMenu )
1169 return; 1173 return;
1170 if ( e->button() == RightButton ) { 1174 if ( e->button() == RightButton ) {
1171 QListViewItem* ci = currentItem(); 1175 QListViewItem* ci = currentItem();
1172 if ( ci ) 1176 if ( ci )
1173 ci->setSelected( true ); 1177 ci->setSelected( true );
1174 } 1178 }
1175 KListView::contentsMouseReleaseEvent(e); 1179 KListView::contentsMouseReleaseEvent(e);
1176} 1180}
1177void KOListViewListView::contentsMouseMoveEvent(QMouseEvent *e) 1181void KOListViewListView::contentsMouseMoveEvent(QMouseEvent *e)
1178{ 1182{
diff --git a/korganizer/kolistview.h b/korganizer/kolistview.h
index bd5bd12..c86449d 100644
--- a/korganizer/kolistview.h
+++ b/korganizer/kolistview.h
@@ -161,143 +161,144 @@ void pickAlarmProgram()
161 QToolTip::add(mAlarmProgramButton, dispStr); 161 QToolTip::add(mAlarmProgramButton, dispStr);
162 mAlarmSoundButton->setOn(false); 162 mAlarmSoundButton->setOn(false);
163 mAlarmProgramButton->setOn(true); 163 mAlarmProgramButton->setOn(true);
164 } else { 164 } else {
165 mAlarmProgramButton->setOn(false); 165 mAlarmProgramButton->setOn(false);
166 mAlarmSoundButton->setOn(true); 166 mAlarmSoundButton->setOn(true);
167 } 167 }
168 } 168 }
169}; 169};
170 170
171}; 171};
172 172
173 173
174 174
175 175
176 176
177 177
178 178
179typedef CustomListViewItem<Incidence *> KOListViewItem; 179typedef CustomListViewItem<Incidence *> KOListViewItem;
180 180
181/** 181/**
182 This class provides the initialisation of a KOListViewItem for calendar 182 This class provides the initialisation of a KOListViewItem for calendar
183 components using the Incidence::Visitor. 183 components using the Incidence::Visitor.
184*/ 184*/
185class ListItemVisitor : public Incidence::Visitor 185class ListItemVisitor : public Incidence::Visitor
186{ 186{
187 public: 187 public:
188 ListItemVisitor(KOListViewItem *, QDate d); 188 ListItemVisitor(KOListViewItem *, QDate d);
189 ~ListItemVisitor(); 189 ~ListItemVisitor();
190 190
191 bool visit(Event *); 191 bool visit(Event *);
192 bool visit(Todo *); 192 bool visit(Todo *);
193 bool visit(Journal *); 193 bool visit(Journal *);
194 194
195 private: 195 private:
196 KOListViewItem *mItem; 196 KOListViewItem *mItem;
197 QDate mDate; 197 QDate mDate;
198}; 198};
199 199
200/** 200/**
201 This class provides a multi-column list view of events. It can 201 This class provides a multi-column list view of events. It can
202 display events from one particular day or several days, it doesn't 202 display events from one particular day or several days, it doesn't
203 matter. To use a view that only handles one day at a time, use 203 matter. To use a view that only handles one day at a time, use
204 KODayListView. 204 KODayListView.
205 205
206 @short multi-column list view of various events. 206 @short multi-column list view of various events.
207 @author Preston Brown <pbrown@kde.org> 207 @author Preston Brown <pbrown@kde.org>
208 @see KOBaseView, KODayListView 208 @see KOBaseView, KODayListView
209*/ 209*/
210class KOListView; 210class KOListView;
211 211
212class KOListViewListView : public KListView 212class KOListViewListView : public KListView
213{ 213{
214 Q_OBJECT 214 Q_OBJECT
215 public: 215 public:
216 KOListViewListView(KOListView * lv ); 216 KOListViewListView(KOListView * lv );
217 signals: 217 signals:
218 void newEvent(); 218 void newEvent();
219 void showIncidence( Incidence* ); 219 void showIncidence( Incidence* );
220 private: 220 private:
221 void keyPressEvent ( QKeyEvent * ) ; 221 void keyPressEvent ( QKeyEvent * ) ;
222 void contentsMouseDoubleClickEvent(QMouseEvent *e); 222 void contentsMouseDoubleClickEvent(QMouseEvent *e);
223 void contentsMousePressEvent(QMouseEvent *e); 223 void contentsMousePressEvent(QMouseEvent *e);
224 void contentsMouseReleaseEvent(QMouseEvent *e); 224 void contentsMouseReleaseEvent(QMouseEvent *e);
225 void contentsMouseMoveEvent(QMouseEvent *e); 225 void contentsMouseMoveEvent(QMouseEvent *e);
226 bool mAllowPopupMenu; 226 bool mAllowPopupMenu;
227 bool mMouseDown; 227 bool mMouseDown;
228 int mYMousePos; 228 int mYMousePos;
229}; 229};
230 230
231class KOListView : public KOEventView 231class KOListView : public KOEventView
232{ 232{
233 Q_OBJECT 233 Q_OBJECT
234 public: 234 public:
235 KOListView(Calendar *calendar, QWidget *parent = 0, 235 KOListView(Calendar *calendar, QWidget *parent = 0,
236 const char *name = 0); 236 const char *name = 0);
237 ~KOListView(); 237 ~KOListView();
238 238
239 virtual int maxDatesHint(); 239 virtual int maxDatesHint();
240 virtual int currentDateCount(); 240 virtual int currentDateCount();
241 virtual QPtrList<Incidence> selectedIncidences(); 241 virtual QPtrList<Incidence> selectedIncidences();
242 virtual DateList selectedDates(); 242 virtual DateList selectedDates();
243 243
244 void showDates(bool show); 244 void showDates(bool show);
245 Incidence* currentItem(); 245 Incidence* currentItem();
246 void addTodos(QPtrList<Todo> eventList); 246 void addTodos(QPtrList<Todo> eventList);
247 void addJournals(QPtrList<Journal> eventList); 247 void addJournals(QPtrList<Journal> eventList);
248 virtual void printPreview(CalPrinter *calPrinter, 248 virtual void printPreview(CalPrinter *calPrinter,
249 const QDate &, const QDate &); 249 const QDate &, const QDate &);
250 250
251 void readSettings(KConfig *config, QString setting = "KOListView Layout"); 251 void readSettings(KConfig *config, QString setting = "KOListView Layout");
252 void writeSettings(KConfig *config, QString setting = "KOListView Layout"); 252 void writeSettings(KConfig *config, QString setting = "KOListView Layout");
253 void updateList(); 253 void updateList();
254 void setStartDate(const QDate &start); 254 void setStartDate(const QDate &start);
255 int count(); 255 int count();
256 QString getWhatsThisText(QPoint p); 256 QString getWhatsThisText(QPoint p);
257 void resetFocus();
257 signals: 258 signals:
258 void signalNewEvent(); 259 void signalNewEvent();
259 void beamIncidenceList(QPtrList<Incidence>); 260 void beamIncidenceList(QPtrList<Incidence>);
260 261
261 public slots: 262 public slots:
262 virtual void updateView(); 263 virtual void updateView();
263 virtual void showDates(const QDate &start, const QDate &end); 264 virtual void showDates(const QDate &start, const QDate &end);
264 virtual void showEvents(QPtrList<Event> eventList); 265 virtual void showEvents(QPtrList<Event> eventList);
265 void clearSelection(); 266 void clearSelection();
266 void allSelection(); 267 void allSelection();
267 268
268 void clear(); 269 void clear();
269 void beamDone( Ir *ir ); 270 void beamDone( Ir *ir );
270 void showDates(); 271 void showDates();
271 void hideDates(); 272 void hideDates();
272 void deleteAll(); 273 void deleteAll();
273 void saveToFile(); 274 void saveToFile();
274 void saveDescriptionToFile(); 275 void saveDescriptionToFile();
275 void beamSelected(); 276 void beamSelected();
276 void updateConfig(); 277 void updateConfig();
277 void addCat(); 278 void addCat();
278 void setCat(); 279 void setCat();
279 void setAlarm(); 280 void setAlarm();
280 void setCategories( bool removeOld ); 281 void setCategories( bool removeOld );
281 void changeEventDisplay(Event *, int); 282 void changeEventDisplay(Event *, int);
282 283
283 void defaultItemAction(QListViewItem *item); 284 void defaultItemAction(QListViewItem *item);
284 void popupMenu(QListViewItem *item,const QPoint &,int); 285 void popupMenu(QListViewItem *item,const QPoint &,int);
285 286
286 protected slots: 287 protected slots:
287 void processSelectionChange(QListViewItem *); 288 void processSelectionChange(QListViewItem *);
288 289
289 protected: 290 protected:
290 void addEvents(QPtrList<Event> eventList); 291 void addEvents(QPtrList<Event> eventList);
291 void addIncidence(Incidence *); 292 void addIncidence(Incidence *);
292 KOListViewItem *getItemForEvent(Event *event); 293 KOListViewItem *getItemForEvent(Event *event);
293 294
294 private: 295 private:
295 KOListViewListView *mListView; 296 KOListViewListView *mListView;
296 KOEventPopupMenu *mPopupMenu; 297 KOEventPopupMenu *mPopupMenu;
297 KOListViewItem *mActiveItem; 298 KOListViewItem *mActiveItem;
298 QDict<Incidence> mUidDict; 299 QDict<Incidence> mUidDict;
299 QDate mStartDate; 300 QDate mStartDate;
300 void keyPressEvent ( QKeyEvent * ) ; 301 void keyPressEvent ( QKeyEvent * ) ;
301}; 302};
302 303
303#endif 304#endif
diff --git a/korganizer/kotodoview.cpp b/korganizer/kotodoview.cpp
index 3483e95..5e8ea27 100644
--- a/korganizer/kotodoview.cpp
+++ b/korganizer/kotodoview.cpp
@@ -512,273 +512,295 @@ KOTodoView::KOTodoView(Calendar *calendar,QWidget* parent,const char* name) :
512 */ 512 */
513 connect( mTodoListView, SIGNAL( contextRequest ( QListViewItem *, 513 connect( mTodoListView, SIGNAL( contextRequest ( QListViewItem *,
514 const QPoint &,int ) ), 514 const QPoint &,int ) ),
515 SLOT( popupMenu( QListViewItem *, const QPoint & ,int) ) ); 515 SLOT( popupMenu( QListViewItem *, const QPoint & ,int) ) );
516 connect( mTodoListView, SIGNAL( clicked( QListViewItem * ) ), 516 connect( mTodoListView, SIGNAL( clicked( QListViewItem * ) ),
517 SLOT( itemClicked( QListViewItem * ) ) ); 517 SLOT( itemClicked( QListViewItem * ) ) );
518 connect( mTodoListView, SIGNAL( double_Clicked( QListViewItem * ) ), 518 connect( mTodoListView, SIGNAL( double_Clicked( QListViewItem * ) ),
519 SLOT( itemDoubleClicked( QListViewItem * ) ) ); 519 SLOT( itemDoubleClicked( QListViewItem * ) ) );
520 connect( mTodoListView, SIGNAL( todoDropped( Todo *, int ) ), 520 connect( mTodoListView, SIGNAL( todoDropped( Todo *, int ) ),
521 SLOT( updateView() ) ); 521 SLOT( updateView() ) );
522 connect( mTodoListView, SIGNAL( todoDropped( Todo *, int ) ), 522 connect( mTodoListView, SIGNAL( todoDropped( Todo *, int ) ),
523 SLOT( todoModified(Todo *, int) ) ); 523 SLOT( todoModified(Todo *, int) ) );
524 connect( mTodoListView, SIGNAL( expanded( QListViewItem * ) ), 524 connect( mTodoListView, SIGNAL( expanded( QListViewItem * ) ),
525 SLOT( itemStateChanged( QListViewItem * ) ) ); 525 SLOT( itemStateChanged( QListViewItem * ) ) );
526 connect( mTodoListView, SIGNAL( collapsed( QListViewItem * ) ), 526 connect( mTodoListView, SIGNAL( collapsed( QListViewItem * ) ),
527 SLOT( itemStateChanged( QListViewItem * ) ) ); 527 SLOT( itemStateChanged( QListViewItem * ) ) );
528 connect( mTodoListView, SIGNAL( paintNeeded() ), 528 connect( mTodoListView, SIGNAL( paintNeeded() ),
529 SLOT( paintNeeded()) ); 529 SLOT( paintNeeded()) );
530 530
531#if 0 531#if 0
532 connect(mTodoListView,SIGNAL(selectionChanged(QListViewItem *)), 532 connect(mTodoListView,SIGNAL(selectionChanged(QListViewItem *)),
533 SLOT(selectionChanged(QListViewItem *))); 533 SLOT(selectionChanged(QListViewItem *)));
534 connect(mTodoListView,SIGNAL(clicked(QListViewItem *)), 534 connect(mTodoListView,SIGNAL(clicked(QListViewItem *)),
535 SLOT(selectionChanged(QListViewItem *))); 535 SLOT(selectionChanged(QListViewItem *)));
536 connect(mTodoListView,SIGNAL(pressed(QListViewItem *)), 536 connect(mTodoListView,SIGNAL(pressed(QListViewItem *)),
537 SLOT(selectionChanged(QListViewItem *))); 537 SLOT(selectionChanged(QListViewItem *)));
538#endif 538#endif
539 539
540 connect( mTodoListView, SIGNAL(reparentTodoSignal( Todo *,Todo * ) ), SIGNAL(reparentTodoSignal( Todo *,Todo * ) )); 540 connect( mTodoListView, SIGNAL(reparentTodoSignal( Todo *,Todo * ) ), SIGNAL(reparentTodoSignal( Todo *,Todo * ) ));
541 connect( mTodoListView, SIGNAL(unparentTodoSignal(Todo *) ), SIGNAL(unparentTodoSignal(Todo *) )); 541 connect( mTodoListView, SIGNAL(unparentTodoSignal(Todo *) ), SIGNAL(unparentTodoSignal(Todo *) ));
542 connect( mTodoListView, SIGNAL( deleteTodo(Todo *) ), SIGNAL(deleteTodoSignal(Todo *) )); 542 connect( mTodoListView, SIGNAL( deleteTodo(Todo *) ), SIGNAL(deleteTodoSignal(Todo *) ));
543 543
544 connect( mTodoListView, SIGNAL(selectionChanged() ), 544 connect( mTodoListView, SIGNAL(selectionChanged() ),
545 SLOT( processSelectionChange() ) ); 545 SLOT( processSelectionChange() ) );
546 connect( mQuickAdd, SIGNAL( returnPressed () ), 546 connect( mQuickAdd, SIGNAL( returnPressed () ),
547 SLOT( addQuickTodo() ) ); 547 SLOT( addQuickTodo() ) );
548 548
549} 549}
550 550
551KOTodoView::~KOTodoView() 551KOTodoView::~KOTodoView()
552{ 552{
553 delete mDocPrefs; 553 delete mDocPrefs;
554} 554}
555QString KOTodoView::getWhatsThisText(QPoint p) 555QString KOTodoView::getWhatsThisText(QPoint p)
556{ 556{
557 KOTodoViewItem* item = ( KOTodoViewItem* ) mTodoListView->itemAt( p ); 557 KOTodoViewItem* item = ( KOTodoViewItem* ) mTodoListView->itemAt( p );
558 if ( item ) 558 if ( item )
559 return KIncidenceFormatter::instance()->getFormattedText( item->todo(), 559 return KIncidenceFormatter::instance()->getFormattedText( item->todo(),
560 KOPrefs::instance()->mWTshowDetails, 560 KOPrefs::instance()->mWTshowDetails,
561 KOPrefs::instance()->mWTshowCreated, 561 KOPrefs::instance()->mWTshowCreated,
562 KOPrefs::instance()->mWTshowChanged); 562 KOPrefs::instance()->mWTshowChanged);
563 return i18n("That is the todo view" ); 563 return i18n("That is the todo view" );
564 564
565} 565}
566 566
567void KOTodoView::jumpToDate () 567void KOTodoView::jumpToDate ()
568{ 568{
569 // if (mActiveItem) { 569 // if (mActiveItem) {
570// mActiveItem->todo()); 570// mActiveItem->todo());
571// if ( mActiveItem->todo()->hasDueDate() ) 571// if ( mActiveItem->todo()->hasDueDate() )
572// emit mActiveItem->todo()jumpToTime( mTodo->dtDue().date() ); 572// emit mActiveItem->todo()jumpToTime( mTodo->dtDue().date() );
573} 573}
574void KOTodoView::paintNeeded() 574void KOTodoView::paintNeeded()
575{ 575{
576 if ( mPendingUpdateBeforeRepaint ) { 576 if ( mPendingUpdateBeforeRepaint ) {
577 updateView(); 577 updateView();
578 mPendingUpdateBeforeRepaint = false; 578 mPendingUpdateBeforeRepaint = false;
579 } 579 }
580} 580}
581void KOTodoView::paintEvent(QPaintEvent * pevent) 581void KOTodoView::paintEvent(QPaintEvent * pevent)
582{ 582{
583 if ( mPendingUpdateBeforeRepaint ) { 583 if ( mPendingUpdateBeforeRepaint ) {
584 updateView(); 584 updateView();
585 mPendingUpdateBeforeRepaint = false; 585 mPendingUpdateBeforeRepaint = false;
586 } 586 }
587 KOrg::BaseView::paintEvent( pevent); 587 KOrg::BaseView::paintEvent( pevent);
588} 588}
589 589
590void KOTodoView::updateView() 590void KOTodoView::updateView()
591{ 591{
592 pendingSubtodo = 0; 592 pendingSubtodo = 0;
593 if ( mBlockUpdate ) { 593 if ( mBlockUpdate ) {
594 return; 594 return;
595 } 595 }
596 if ( !isVisible() ) { 596 if ( !isVisible() ) {
597 mPendingUpdateBeforeRepaint = true; 597 mPendingUpdateBeforeRepaint = true;
598 return; 598 return;
599 } 599 }
600 //qDebug("KOTodoView::updateView() %x", this); 600 //qDebug("KOTodoView::updateView() %x", this);
601 if ( isFlatDisplay ) { 601 if ( isFlatDisplay ) {
602 displayAllFlat(); 602 displayAllFlat();
603 return; 603 return;
604 } 604 }
605 //qDebug("update "); 605 //qDebug("update ");
606// kdDebug() << "KOTodoView::updateView()" << endl; 606// kdDebug() << "KOTodoView::updateView()" << endl;
607 QFont fo = KOPrefs::instance()->mTodoViewFont; 607 QFont fo = KOPrefs::instance()->mTodoViewFont;
608 Incidence* oldInc = 0;
609 mActiveItem = (KOTodoViewItem*)mTodoListView->currentItem();
610 if (mActiveItem)
611 oldInc = mActiveItem->todo();
612
608 mTodoListView->clear(); 613 mTodoListView->clear();
609 if ( mName == "todolistsmall" ) { 614 if ( mName == "todolistsmall" ) {
610 if ( KOPrefs::instance()->mTodoViewUsesSmallFont ) { 615 if ( KOPrefs::instance()->mTodoViewUsesSmallFont ) {
611 int ps = fo.pointSize() -2; 616 int ps = fo.pointSize() -2;
612 if ( ps > 12 ) 617 if ( ps > 12 )
613 ps -= 2; 618 ps -= 2;
614 fo.setPointSize( ps ); 619 fo.setPointSize( ps );
615 } 620 }
616 } 621 }
617 622
618 mTodoListView->setFont( fo ); 623 mTodoListView->setFont( fo );
619 // QFontMetrics fm ( KOPrefs::instance()->mTodoViewFont ); 624 // QFontMetrics fm ( KOPrefs::instance()->mTodoViewFont );
620 //mTodoListView->header()->setMaximumHeight(fm.height()); 625 //mTodoListView->header()->setMaximumHeight(fm.height());
621 QPtrList<Todo> todoList = calendar()->todos(); 626 QPtrList<Todo> todoList = calendar()->todos();
622 627
623/* 628/*
624 kdDebug() << "KOTodoView::updateView(): Todo List:" << endl; 629 kdDebug() << "KOTodoView::updateView(): Todo List:" << endl;
625 Event *t; 630 Event *t;
626 for(t = todoList.first(); t; t = todoList.next()) { 631 for(t = todoList.first(); t; t = todoList.next()) {
627 kdDebug() << " " << t->getSummary() << endl; 632 kdDebug() << " " << t->getSummary() << endl;
628 633
629 if (t->getRelatedTo()) { 634 if (t->getRelatedTo()) {
630 kdDebug() << " (related to " << t->getRelatedTo()->getSummary() << ")" << endl; 635 kdDebug() << " (related to " << t->getRelatedTo()->getSummary() << ")" << endl;
631 } 636 }
632 637
633 QPtrList<Event> l = t->getRelations(); 638 QPtrList<Event> l = t->getRelations();
634 Event *c; 639 Event *c;
635 for(c=l.first();c;c=l.next()) { 640 for(c=l.first();c;c=l.next()) {
636 kdDebug() << " - relation: " << c->getSummary() << endl; 641 kdDebug() << " - relation: " << c->getSummary() << endl;
637 } 642 }
638 } 643 }
639*/ 644*/
640 645
641 // Put for each Event a KOTodoViewItem in the list view. Don't rely on a 646 // Put for each Event a KOTodoViewItem in the list view. Don't rely on a
642 // specific order of events. That means that we have to generate parent items 647 // specific order of events. That means that we have to generate parent items
643 // recursively for proper hierarchical display of Todos. 648 // recursively for proper hierarchical display of Todos.
644 mTodoMap.clear(); 649 mTodoMap.clear();
645 Todo *todo; 650 Todo *todo;
646 todo = todoList.first();// todo; todo = todoList.next()) { 651 todo = todoList.first();// todo; todo = todoList.next()) {
647 while ( todo ) { 652 while ( todo ) {
648 bool next = true; 653 bool next = true;
649 // qDebug("todo %s ", todo->summary().latin1()); 654 // qDebug("todo %s ", todo->summary().latin1());
650 Incidence *incidence = todo->relatedTo(); 655 Incidence *incidence = todo->relatedTo();
651 while ( incidence ) { 656 while ( incidence ) {
652 if ( incidence->type() == "Todo") { 657 if ( incidence->type() == "Todo") {
653 //qDebug("related %s ",incidence->summary().latin1() ); 658 //qDebug("related %s ",incidence->summary().latin1() );
654 if ( !(todoList.contains ( ((Todo* )incidence ) ) )) { 659 if ( !(todoList.contains ( ((Todo* )incidence ) ) )) {
655 //qDebug("related not found "); 660 //qDebug("related not found ");
656 todoList.remove( ); 661 todoList.remove( );
657 todo = todoList.current(); 662 todo = todoList.current();
658 next = false; 663 next = false;
659 incidence = 0; 664 incidence = 0;
660 665
661 } else { 666 } else {
662 //qDebug("related found "); 667 //qDebug("related found ");
663 incidence = incidence->relatedTo(); 668 incidence = incidence->relatedTo();
664 } 669 }
665 } else 670 } else
666 incidence = 0; 671 incidence = 0;
667 } 672 }
668 if ( next ) 673 if ( next )
669 todo = todoList.next(); 674 todo = todoList.next();
670 } 675 }
671// qDebug("again .... "); 676// qDebug("again .... ");
672// for(todo = todoList.first(); todo; todo = todoList.next()) { 677// for(todo = todoList.first(); todo; todo = todoList.next()) {
673 678
674// qDebug("yytodo %s ", todo->summary().latin1()); 679// qDebug("yytodo %s ", todo->summary().latin1());
675// } 680// }
676 //qDebug("for "); 681 //qDebug("for ");
677 for(todo = todoList.first(); todo; todo = todoList.next()) { 682 for(todo = todoList.first(); todo; todo = todoList.next()) {
678 if (!mTodoMap.contains(todo) && checkTodo( todo ) ) 683 if (!mTodoMap.contains(todo) && checkTodo( todo ) )
679 { 684 {
680 insertTodoItem(todo); 685 insertTodoItem(todo);
681 } 686 }
682 } 687 }
683 //qDebug("for end "); 688 //qDebug("for end ");
684 // Restore opened/closed state 689 // Restore opened/closed state
685 mTodoListView->blockSignals( true ); 690 mTodoListView->blockSignals( true );
686 if( mDocPrefs ) restoreItemState( mTodoListView->firstChild() ); 691 if( mDocPrefs ) restoreItemState( mTodoListView->firstChild() );
687 mTodoListView->blockSignals( false ); 692 mTodoListView->blockSignals( false );
688 mTodoListView->setFocus(); 693 mTodoListView->setFocus();
694 if ( mTodoListView->firstChild () ) {
695 if ( oldInc ) {
696 KOTodoViewItem* item = (KOTodoViewItem*)mTodoListView->firstChild ();
697 while ( item ) {
698 if ( item->todo() == oldInc ) {
699 mTodoListView->setCurrentItem( item );
700 mTodoListView->ensureItemVisible( item );
701 break;
702 }
703 item = (KOTodoViewItem*)item->itemBelow();
704 }
705 if ( ! item )
706 mTodoListView->setCurrentItem( mTodoListView->firstChild () );
707 } else {
708 mTodoListView->setCurrentItem( mTodoListView->firstChild () );
709 }
710 }
689 processSelectionChange(); 711 processSelectionChange();
690} 712}
691 713
692bool KOTodoView::checkTodo( Todo * todo ) 714bool KOTodoView::checkTodo( Todo * todo )
693{ 715{
694 716
695 if ( !KOPrefs::instance()->mShowCompletedTodo && todo->isCompleted() ) 717 if ( !KOPrefs::instance()->mShowCompletedTodo && todo->isCompleted() )
696 return false; 718 return false;
697 if ( !todo->isCompleted() ) { 719 if ( !todo->isCompleted() ) {
698 if ( todo->hasDueDate() && todo->dtDue().date() <= QDate::currentDate() ) 720 if ( todo->hasDueDate() && todo->dtDue().date() <= QDate::currentDate() )
699 return true; 721 return true;
700 } 722 }
701 if ( KOPrefs::instance()->mHideNonStartedTodos && mNavigator ) { 723 if ( KOPrefs::instance()->mHideNonStartedTodos && mNavigator ) {
702 if ( todo->hasStartDate() ) 724 if ( todo->hasStartDate() )
703 if ( mNavigator->selectedDates().last() < todo->dtStart().date() ) 725 if ( mNavigator->selectedDates().last() < todo->dtStart().date() )
704 return false; 726 return false;
705 if ( todo->hasDueDate() ) 727 if ( todo->hasDueDate() )
706 if ( mNavigator->selectedDates().first() > todo->dtDue().date() ) 728 if ( mNavigator->selectedDates().first() > todo->dtDue().date() )
707 return false; 729 return false;
708 } 730 }
709 return true; 731 return true;
710} 732}
711 733
712void KOTodoView::restoreItemState( QListViewItem *item ) 734void KOTodoView::restoreItemState( QListViewItem *item )
713{ 735{
714 pendingSubtodo = 0; 736 pendingSubtodo = 0;
715 while( item ) { 737 while( item ) {
716 KOTodoViewItem *todoItem = (KOTodoViewItem *)item; 738 KOTodoViewItem *todoItem = (KOTodoViewItem *)item;
717 todoItem->setOpen( mDocPrefs->readBoolEntry( todoItem->todo()->uid() ) ); 739 todoItem->setOpen( mDocPrefs->readBoolEntry( todoItem->todo()->uid() ) );
718 if( item->childCount() > 0 ) restoreItemState( item->firstChild() ); 740 if( item->childCount() > 0 ) restoreItemState( item->firstChild() );
719 item = item->nextSibling(); 741 item = item->nextSibling();
720 } 742 }
721} 743}
722 744
723 745
724QMap<Todo *,KOTodoViewItem *>::ConstIterator 746QMap<Todo *,KOTodoViewItem *>::ConstIterator
725 KOTodoView::insertTodoItem(Todo *todo) 747 KOTodoView::insertTodoItem(Todo *todo)
726{ 748{
727 749
728// kdDebug() << "KOTodoView::insertTodoItem(): " << todo->getSummary() << endl; 750// kdDebug() << "KOTodoView::insertTodoItem(): " << todo->getSummary() << endl;
729 // TODO: Check, if dynmaic cast is necessary 751 // TODO: Check, if dynmaic cast is necessary
730 752
731 pendingSubtodo = 0; 753 pendingSubtodo = 0;
732 Incidence *incidence = todo->relatedTo(); 754 Incidence *incidence = todo->relatedTo();
733 if (incidence && incidence->type() == "Todo") { 755 if (incidence && incidence->type() == "Todo") {
734 Todo *relatedTodo = static_cast<Todo *>(incidence); 756 Todo *relatedTodo = static_cast<Todo *>(incidence);
735 757
736// kdDebug() << " has Related" << endl; 758// kdDebug() << " has Related" << endl;
737 QMap<Todo *,KOTodoViewItem *>::ConstIterator itemIterator; 759 QMap<Todo *,KOTodoViewItem *>::ConstIterator itemIterator;
738 itemIterator = mTodoMap.find(relatedTodo); 760 itemIterator = mTodoMap.find(relatedTodo);
739 if (itemIterator == mTodoMap.end()) { 761 if (itemIterator == mTodoMap.end()) {
740// kdDebug() << " related not yet in list" << endl; 762// kdDebug() << " related not yet in list" << endl;
741 itemIterator = insertTodoItem (relatedTodo); 763 itemIterator = insertTodoItem (relatedTodo);
742 } 764 }
743 // isn't this pretty stupid? We give one Todo to the KOTodoViewItem 765 // isn't this pretty stupid? We give one Todo to the KOTodoViewItem
744 // and one into the map. Sure finding is more easy but why? -zecke 766 // and one into the map. Sure finding is more easy but why? -zecke
745 KOTodoViewItem *todoItem = new KOTodoViewItem(*itemIterator,todo,this); 767 KOTodoViewItem *todoItem = new KOTodoViewItem(*itemIterator,todo,this);
746 return mTodoMap.insert(todo,todoItem); 768 return mTodoMap.insert(todo,todoItem);
747 } else { 769 } else {
748// kdDebug() << " no Related" << endl; 770// kdDebug() << " no Related" << endl;
749 // see above -zecke 771 // see above -zecke
750 KOTodoViewItem *todoItem = new KOTodoViewItem(mTodoListView,todo,this); 772 KOTodoViewItem *todoItem = new KOTodoViewItem(mTodoListView,todo,this);
751 return mTodoMap.insert(todo,todoItem); 773 return mTodoMap.insert(todo,todoItem);
752 } 774 }
753} 775}
754 776
755 777
756void KOTodoView::updateConfig() 778void KOTodoView::updateConfig()
757{ 779{
758 updateView(); 780 updateView();
759 mTodoListView->repaintContents(); 781 mTodoListView->repaintContents();
760} 782}
761 783
762QPtrList<Incidence> KOTodoView::selectedIncidences() 784QPtrList<Incidence> KOTodoView::selectedIncidences()
763{ 785{
764 QPtrList<Incidence> selected; 786 QPtrList<Incidence> selected;
765 787
766 KOTodoViewItem *item = (KOTodoViewItem *)(mTodoListView->selectedItem()); 788 KOTodoViewItem *item = (KOTodoViewItem *)(mTodoListView->selectedItem());
767// if (!item) item = mActiveItem; 789// if (!item) item = mActiveItem;
768 if (item) selected.append(item->todo()); 790 if (item) selected.append(item->todo());
769 791
770 return selected; 792 return selected;
771} 793}
772 794
773QPtrList<Todo> KOTodoView::selectedTodos() 795QPtrList<Todo> KOTodoView::selectedTodos()
774{ 796{
775 QPtrList<Todo> selected; 797 QPtrList<Todo> selected;
776 798
777 KOTodoViewItem *item = (KOTodoViewItem *)(mTodoListView->selectedItem()); 799 KOTodoViewItem *item = (KOTodoViewItem *)(mTodoListView->selectedItem());
778// if (!item) item = mActiveItem; 800// if (!item) item = mActiveItem;
779 if (item) selected.append(item->todo()); 801 if (item) selected.append(item->todo());
780 802
781 return selected; 803 return selected;
782} 804}
783 805
784void KOTodoView::changeEventDisplay(Event *, int) 806void KOTodoView::changeEventDisplay(Event *, int)
diff --git a/korganizer/mainwindow.cpp b/korganizer/mainwindow.cpp
index 4f2cccf..2de7f28 100644
--- a/korganizer/mainwindow.cpp
+++ b/korganizer/mainwindow.cpp
@@ -194,193 +194,192 @@ MainWindow::MainWindow( QWidget *parent, const char *name, QString msg) :
194 vh -= iconToolBar->height(); 194 vh -= iconToolBar->height();
195 } else { 195 } else {
196 vw -= iconToolBar->height(); 196 vw -= iconToolBar->height();
197 } 197 }
198 //mView->setMaximumSize( splash->size() ); 198 //mView->setMaximumSize( splash->size() );
199 //mView->resize( splash->size() ); 199 //mView->resize( splash->size() );
200 //qDebug("MainView x %d y %d w %d h %d", mView->x(),mView-> y(), mView->width(), mView->height ()); 200 //qDebug("MainView x %d y %d w %d h %d", mView->x(),mView-> y(), mView->width(), mView->height ());
201 mView->readSettings(); 201 mView->readSettings();
202 bool newFile = false; 202 bool newFile = false;
203 if( !QFile::exists( defaultFileName() ) ) { 203 if( !QFile::exists( defaultFileName() ) ) {
204 QFileInfo finfo ( defaultFileName() ); 204 QFileInfo finfo ( defaultFileName() );
205 QString oldFile = QDir::convertSeparators( QDir::homeDirPath()+"/Applications/korganizer/mycalendar.ics"); 205 QString oldFile = QDir::convertSeparators( QDir::homeDirPath()+"/Applications/korganizer/mycalendar.ics");
206 qDebug("oldfile %s ", oldFile.latin1()); 206 qDebug("oldfile %s ", oldFile.latin1());
207 QString message = "You are starting KO/Pi for the\nfirst time after updating to a\nversion >= 1.9.1. The location of the\ndefault calendar file has changed.\nA mycalendar.ics file was detected\nat the old location.\nThis file will be loaded now\nand stored at the new location!\n(Config file location has changed, too!)\nPlease read menu Help-What's New!\n"; 207 QString message = "You are starting KO/Pi for the\nfirst time after updating to a\nversion >= 1.9.1. The location of the\ndefault calendar file has changed.\nA mycalendar.ics file was detected\nat the old location.\nThis file will be loaded now\nand stored at the new location!\n(Config file location has changed, too!)\nPlease read menu Help-What's New!\n";
208 finfo.setFile( oldFile ); 208 finfo.setFile( oldFile );
209 if (finfo.exists() ) { 209 if (finfo.exists() ) {
210 KMessageBox::information( this, message); 210 KMessageBox::information( this, message);
211 mView->openCalendar( oldFile ); 211 mView->openCalendar( oldFile );
212 qApp->processEvents(); 212 qApp->processEvents();
213 } else { 213 } else {
214 oldFile = QDir::convertSeparators( QDir::homeDirPath()+"/korganizer/mycalendar.ics"); 214 oldFile = QDir::convertSeparators( QDir::homeDirPath()+"/korganizer/mycalendar.ics");
215 finfo.setFile( oldFile ); 215 finfo.setFile( oldFile );
216 if (finfo.exists() ) { 216 if (finfo.exists() ) {
217 KMessageBox::information( this, message); 217 KMessageBox::information( this, message);
218 mView->openCalendar( oldFile ); 218 mView->openCalendar( oldFile );
219 qApp->processEvents(); 219 qApp->processEvents();
220 } 220 }
221 } 221 }
222 mView->saveCalendar( defaultFileName() ); 222 mView->saveCalendar( defaultFileName() );
223 newFile = true; 223 newFile = true;
224 } 224 }
225 225
226 QTime neededSaveTime = QDateTime::currentDateTime().time(); 226 QTime neededSaveTime = QDateTime::currentDateTime().time();
227 mView->openCalendar( defaultFileName() ); 227 mView->openCalendar( defaultFileName() );
228 int msNeeded = neededSaveTime.msecsTo( QDateTime::currentDateTime().time() ); 228 int msNeeded = neededSaveTime.msecsTo( QDateTime::currentDateTime().time() );
229 qDebug("KO: Calendar loading time: %d ms",msNeeded ); 229 qDebug("KO: Calendar loading time: %d ms",msNeeded );
230 230
231 if ( KPimGlobalPrefs::instance()->mPreferredLanguage != KOPrefs::instance()->mOldLoadedLanguage ) { 231 if ( KPimGlobalPrefs::instance()->mPreferredLanguage != KOPrefs::instance()->mOldLoadedLanguage ) {
232 KOPrefs::instance()->setAllDefaults(); 232 KOPrefs::instance()->setAllDefaults();
233 int count = mView->addCategories(); 233 int count = mView->addCategories();
234 } 234 }
235 processIncidenceSelection( 0 ); 235 processIncidenceSelection( 0 );
236 connect( mView, SIGNAL( incidenceSelected( Incidence * ) ), 236 connect( mView, SIGNAL( incidenceSelected( Incidence * ) ),
237 SLOT( processIncidenceSelection( Incidence * ) ) ); 237 SLOT( processIncidenceSelection( Incidence * ) ) );
238 connect( mView, SIGNAL( modifiedChanged( bool ) ), 238 connect( mView, SIGNAL( modifiedChanged( bool ) ),
239 SLOT( slotModifiedChanged( bool ) ) ); 239 SLOT( slotModifiedChanged( bool ) ) );
240 240
241 241
242 connect( mView, SIGNAL( tempDisableBR(bool) ), 242 connect( mView, SIGNAL( tempDisableBR(bool) ),
243 SLOT( disableBR(bool) ) ); 243 SLOT( disableBR(bool) ) );
244 connect( &mSaveTimer, SIGNAL( timeout() ), SLOT( save() ) ); 244 connect( &mSaveTimer, SIGNAL( timeout() ), SLOT( save() ) );
245 mView->setModified( false ); 245 mView->setModified( false );
246 mBlockAtStartup = false; 246 mBlockAtStartup = false;
247 mView->setModified( false ); 247 mView->setModified( false );
248 setCentralWidget( mView ); 248 setCentralWidget( mView );
249 globalFlagBlockStartup = 0; 249 globalFlagBlockStartup = 0;
250 mView->show(); 250 mView->show();
251 delete splash; 251 delete splash;
252 if ( newFile ) 252 if ( newFile )
253 mView->updateConfig(); 253 mView->updateConfig();
254 // qApp->processEvents(); 254 // qApp->processEvents();
255 //qDebug("MainView x %d y %d w %d h %d", mView->x(),mView-> y(), mView->width(), mView->height ()); 255 //qDebug("MainView x %d y %d w %d h %d", mView->x(),mView-> y(), mView->width(), mView->height ());
256 //fillSyncMenu(); 256 //fillSyncMenu();
257 257
258 258
259 connect(mSyncManager , SIGNAL( save() ), this, SLOT( save() ) ); 259 connect(mSyncManager , SIGNAL( save() ), this, SLOT( save() ) );
260 connect(mView , SIGNAL( save() ), this, SLOT( save() ) ); 260 connect(mView , SIGNAL( save() ), this, SLOT( save() ) );
261 connect(mView , SIGNAL( saveStopTimer() ), this, SLOT( saveStopTimer() ) ); 261 connect(mView , SIGNAL( saveStopTimer() ), this, SLOT( saveStopTimer() ) );
262 connect(mSyncManager , SIGNAL( request_file() ), this, SLOT( syncFileRequest() ) ); 262 connect(mSyncManager , SIGNAL( request_file() ), this, SLOT( syncFileRequest() ) );
263 connect(mSyncManager , SIGNAL( getFile( bool )), this, SLOT(getFile( bool ) ) ); 263 connect(mSyncManager , SIGNAL( getFile( bool )), this, SLOT(getFile( bool ) ) );
264 mSyncManager->setDefaultFileName( sentSyncFile()); 264 mSyncManager->setDefaultFileName( sentSyncFile());
265 connect ( syncMenu, SIGNAL( activated ( int ) ), mSyncManager, SLOT (slotSyncMenu( int ) ) ); 265 connect ( syncMenu, SIGNAL( activated ( int ) ), mSyncManager, SLOT (slotSyncMenu( int ) ) );
266 mSyncManager->fillSyncMenu(); 266 mSyncManager->fillSyncMenu();
267 267
268 268
269 269
270 mView->viewManager()->agendaView()->setStartHour( KOPrefs::instance()->mDayBegins ); 270 mView->viewManager()->agendaView()->setStartHour( KOPrefs::instance()->mDayBegins );
271 if ( showWarning ) { 271 if ( showWarning ) {
272 KMessageBox::information( this, 272 KMessageBox::information( this,
273 "You are starting KO/Pi for the first time.\nPlease read menu: Help-What's New,\nif you did an update!\nPlease choose your timezone in the \nConfigure Dialog TAB Time Zone!\nPlease choose your language\nin the TAB Locale!\nYou get the Configure Dialog\nvia Menu: Actions - Configure....\nClick OK to show the Configure Dialog!\n", "KO/Pi information"); 273 "You are starting KO/Pi for the first time.\nPlease read menu: Help-What's New,\nif you did an update!\nPlease choose your timezone in the \nConfigure Dialog TAB Time Zone!\nPlease choose your language\nin the TAB Locale!\nYou get the Configure Dialog\nvia Menu: Actions - Configure....\nClick OK to show the Configure Dialog!\n", "KO/Pi information");
274 qApp->processEvents(); 274 qApp->processEvents();
275 mView->dialogManager()->showSyncOptions(); 275 mView->dialogManager()->showSyncOptions();
276 } 276 }
277 277
278 //US listen for result adressed from Ka/Pi 278 //US listen for result adressed from Ka/Pi
279#ifndef DESKTOP_VERSION 279#ifndef DESKTOP_VERSION
280 connect(qApp, SIGNAL (appMessage ( const QCString &, const QByteArray & )), ExternalAppHandler::instance(), SLOT (appMessage ( const QCString &, const QByteArray & ))); 280 connect(qApp, SIGNAL (appMessage ( const QCString &, const QByteArray & )), ExternalAppHandler::instance(), SLOT (appMessage ( const QCString &, const QByteArray & )));
281#endif 281#endif
282#ifndef DESKTOP_VERSION 282#ifndef DESKTOP_VERSION
283 infrared = 0; 283 infrared = 0;
284#endif 284#endif
285 updateWeek( mView->startDate() ); 285 updateWeek( mView->startDate() );
286 connect( mView->dateNavigator(), SIGNAL( datesSelected( const KCal::DateList & ) ), 286 connect( mView->dateNavigator(), SIGNAL( datesSelected( const KCal::DateList & ) ),
287 SLOT( updateWeekNum( const KCal::DateList & ) ) ); 287 SLOT( updateWeekNum( const KCal::DateList & ) ) );
288 mBRdisabled = false; 288 mBRdisabled = false;
289 //toggleBeamReceive(); 289 //toggleBeamReceive();
290 setFocusPolicy ( WheelFocus );
291} 290}
292MainWindow::~MainWindow() 291MainWindow::~MainWindow()
293{ 292{
294 //qDebug("MainWindow::~MainWindow() "); 293 //qDebug("MainWindow::~MainWindow() ");
295 //save toolbar location 294 //save toolbar location
296 delete mCalendar; 295 delete mCalendar;
297 delete mSyncManager; 296 delete mSyncManager;
298#ifndef DESKTOP_VERSION 297#ifndef DESKTOP_VERSION
299 if ( infrared ) 298 if ( infrared )
300 delete infrared; 299 delete infrared;
301#endif 300#endif
302 301
303 302
304} 303}
305 304
306void MainWindow::disableBR(bool b) 305void MainWindow::disableBR(bool b)
307{ 306{
308#ifndef DESKTOP_VERSION 307#ifndef DESKTOP_VERSION
309 if ( b ) { 308 if ( b ) {
310 if ( infrared ) { 309 if ( infrared ) {
311 toggleBeamReceive(); 310 toggleBeamReceive();
312 mBRdisabled = true; 311 mBRdisabled = true;
313 } 312 }
314 mBRdisabled = true; 313 mBRdisabled = true;
315 } else { 314 } else {
316 if ( mBRdisabled ) { 315 if ( mBRdisabled ) {
317 mBRdisabled = false; 316 mBRdisabled = false;
318 //makes no sense,because other cal ap is probably running 317 //makes no sense,because other cal ap is probably running
319 // toggleBeamReceive(); 318 // toggleBeamReceive();
320 } 319 }
321 } 320 }
322#endif 321#endif
323 322
324} 323}
325bool MainWindow::beamReceiveEnabled() 324bool MainWindow::beamReceiveEnabled()
326{ 325{
327#ifndef DESKTOP_VERSION 326#ifndef DESKTOP_VERSION
328 return ( infrared != 0 ); 327 return ( infrared != 0 );
329#endif 328#endif
330 return false; 329 return false;
331} 330}
332 331
333void MainWindow::toggleBeamReceive() 332void MainWindow::toggleBeamReceive()
334{ 333{
335 if ( mBRdisabled ) 334 if ( mBRdisabled )
336 return; 335 return;
337#ifndef DESKTOP_VERSION 336#ifndef DESKTOP_VERSION
338 if ( infrared ) { 337 if ( infrared ) {
339 qDebug("disable BeamReceive "); 338 qDebug("disable BeamReceive ");
340 delete infrared; 339 delete infrared;
341 infrared = 0; 340 infrared = 0;
342 brAction->setOn(false); 341 brAction->setOn(false);
343 return; 342 return;
344 } 343 }
345 qDebug("enable BeamReceive "); 344 qDebug("enable BeamReceive ");
346 brAction->setOn(true); 345 brAction->setOn(true);
347 infrared = new QCopChannel("QPE/Application/datebook",this, "channel" ) ; 346 infrared = new QCopChannel("QPE/Application/datebook",this, "channel" ) ;
348 QObject::connect( infrared, SIGNAL (received ( const QCString &, const QByteArray & )),this, SLOT(recieve( const QCString&, const QByteArray& ))); 347 QObject::connect( infrared, SIGNAL (received ( const QCString &, const QByteArray & )),this, SLOT(recieve( const QCString&, const QByteArray& )));
349#endif 348#endif
350} 349}
351void MainWindow::showMaximized () 350void MainWindow::showMaximized ()
352{ 351{
353#ifndef DESKTOP_VERSION 352#ifndef DESKTOP_VERSION
354 if ( ! globalFlagBlockStartup ) 353 if ( ! globalFlagBlockStartup )
355 if ( mClosed ) 354 if ( mClosed )
356 mView->goToday(); 355 mView->goToday();
357#endif 356#endif
358 QWidget::showMaximized () ; 357 QWidget::showMaximized () ;
359 mClosed = false; 358 mClosed = false;
360} 359}
361void MainWindow::closeEvent( QCloseEvent* ce ) 360void MainWindow::closeEvent( QCloseEvent* ce )
362{ 361{
363 362
364 363
365 364
366 if ( ! KOPrefs::instance()->mAskForQuit ) { 365 if ( ! KOPrefs::instance()->mAskForQuit ) {
367 saveOnClose(); 366 saveOnClose();
368 mClosed = true; 367 mClosed = true;
369 ce->accept(); 368 ce->accept();
370 return; 369 return;
371 370
372 } 371 }
373 372
374 switch( QMessageBox::information( this, "KO/Pi", 373 switch( QMessageBox::information( this, "KO/Pi",
375 i18n("Do you really want\nto close KO/Pi?"), 374 i18n("Do you really want\nto close KO/Pi?"),
376 i18n("Close"), i18n("No"), 375 i18n("Close"), i18n("No"),
377 0, 0 ) ) { 376 0, 0 ) ) {
378 case 0: 377 case 0:
379 saveOnClose(); 378 saveOnClose();
380 mClosed = true; 379 mClosed = true;
381 ce->accept(); 380 ce->accept();
382 break; 381 break;
383 case 1: 382 case 1:
384 ce->ignore(); 383 ce->ignore();
385 break; 384 break;
386 case 2: 385 case 2: