• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdepim API Reference
  • KDE Home
  • Contact Us
 

korganizer

  • sources
  • kde-4.14
  • kdepim
  • korganizer
koviewmanager.cpp
Go to the documentation of this file.
1 /*
2  This file is part of KOrganizer.
3 
4  Copyright (c) 2001,2003 Cornelius Schumacher <schumacher@kde.org>
5  Copyright (C) 2003-2004 Reinhold Kainhofer <reinhold@kainhofer.com>
6 
7  This program is free software; you can redistribute it and/or modify
8  it under the terms of the GNU General Public License as published by
9  the Free Software Foundation; either version 2 of the License, or
10  (at your option) any later version.
11 
12  This program is distributed in the hope that it will be useful,
13  but WITHOUT ANY WARRANTY; without even the implied warranty of
14  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  GNU General Public License for more details.
16 
17  You should have received a copy of the GNU General Public License along
18  with this program; if not, write to the Free Software Foundation, Inc.,
19  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
20 
21  As a special exception, permission is given to link this program
22  with any edition of Qt, and distribute the resulting executable,
23  without including the source code for Qt in the source distribution.
24 */
25 
26 #include "koviewmanager.h"
27 #include "actionmanager.h"
28 #include "calendarview.h"
29 #include "datenavigator.h"
30 #include "koglobals.h"
31 #include "prefs/koprefs.h"
32 #include "widgets/navigatorbar.h"
33 #include "korganizer/mainwindow.h"
34 #include "views/agendaview/koagendaview.h"
35 #include "views/journalview/kojournalview.h"
36 #include "views/listview/kolistview.h"
37 #include "views/monthview/monthview.h"
38 #include "views/multiagendaview/multiagendaview.h"
39 #include "views/timelineview/kotimelineview.h"
40 #include "views/timespentview/kotimespentview.h"
41 #include "views/todoview/kotodoview.h"
42 #include "views/whatsnextview/kowhatsnextview.h"
43 
44 #include <KActionCollection>
45 #include <KMessageBox>
46 #include <KTabWidget>
47 
48 #include <QAction>
49 #include <QStackedWidget>
50 
51 KOViewManager::KOViewManager( CalendarView *mainView )
52  : QObject(), mMainView( mainView )
53 {
54  mCurrentView = 0;
55  mLastEventView = 0;
56  mWhatsNextView = 0;
57  mTodoView = 0;
58  mAgendaView = 0;
59  mAgendaSideBySideView = 0;
60  mListView = 0;
61  mJournalView = 0;
62  mTimelineView = 0;
63  mAgendaViewTabs = 0;
64  mAgendaViewTabIndex = 0;
65  mTimeSpentView = 0;
66  mMonthView = 0;
67  mRangeMode = NO_RANGE;
68 }
69 
70 KOViewManager::~KOViewManager()
71 {
72 }
73 
74 KOrg::BaseView *KOViewManager::currentView()
75 {
76  return mCurrentView;
77 }
78 
79 void KOViewManager::readSettings( KConfig *config )
80 {
81  KConfigGroup generalConfig( config, "General" );
82  const QString view = generalConfig.readEntry( "Current View" );
83 
84  if ( view == QLatin1String( "WhatsNext" ) ) {
85  showWhatsNextView();
86  } else if ( view == QLatin1String( "OldMonth" ) ) {
87  // the oldmonth view is gone, so we assume the new month view
88  showMonthView();
89  } else if ( view == QLatin1String( "List" ) ) {
90  showListView();
91  mListView->readSettings( config );
92  } else if ( view == QLatin1String( "Journal" ) ) {
93  showJournalView();
94  } else if ( view == QLatin1String( "Todo" ) ) {
95  showTodoView();
96  } else if ( view == QLatin1String( "Timeline" ) ) {
97  showTimeLineView();
98  } else if ( view == QLatin1String( "TimeSpent" ) ) {
99  showTimeSpentView();
100  } else if ( view == QLatin1String( "Month" ) ) {
101  showMonthView();
102  } else {
103  showAgendaView();
104  }
105 
106  mRangeMode = RangeMode( generalConfig.readEntry( "Range Mode", int( OTHER_RANGE ) ) );
107 
108  switch ( mRangeMode ) {
109  case WORK_WEEK_RANGE:
110  selectWorkWeek();
111  break;
112  case WEEK_RANGE:
113  selectWeek();
114  break;
115  case NEXTX_RANGE:
116  selectNextX();
117  break;
118  case DAY_RANGE:
119  selectDay();
120  break;
121  case NO_RANGE:
122  default:
123  // Someone has been playing with the config file.
124  mRangeMode = OTHER_RANGE;
125  }
126 }
127 
128 void KOViewManager::writeSettings( KConfig *config )
129 {
130  KConfigGroup generalConfig( config, "General" );
131  QString view;
132  if ( mCurrentView == mWhatsNextView ) {
133  view = QLatin1String( "WhatsNext" );
134  } else if ( mCurrentView == mListView ) {
135  view = QLatin1String( "List" );
136  } else if ( mCurrentView == mJournalView ) {
137  view = QLatin1String( "Journal" );
138  } else if ( mCurrentView == mTodoView ) {
139  view = QLatin1String( "Todo" );
140  } else if ( mCurrentView == mTimelineView ) {
141  view = QLatin1String( "Timeline" );
142  } else if ( mCurrentView == mTimeSpentView ) {
143  view = QLatin1String( "TimeSpent" );
144  } else if ( mCurrentView == mMonthView ) {
145  view = QLatin1String( "Month" );
146  } else {
147  view = QLatin1String( "Agenda" );
148  }
149 
150  generalConfig.writeEntry( "Current View", view );
151 
152  if ( mAgendaView ) {
153  mAgendaView->writeSettings( config );
154  }
155  if ( mListView ) {
156  mListView->writeSettings( config );
157  }
158  if ( mTodoView ) {
159  mTodoView->saveLayout( config, QLatin1String("Todo View") );
160  }
161 
162  // write out custom view configuration
163  Q_FOREACH ( KOrg::BaseView *const view, mViews ) {
164  KConfigGroup group = KGlobal::config()->group( view->identifier() );
165  view->saveConfig( group );
166  }
167 
168  generalConfig.writeEntry( "Range Mode", int( mRangeMode ) );
169 }
170 
171 void KOViewManager::showView( KOrg::BaseView *view )
172 {
173  if ( view == mCurrentView ) {
174  return;
175  }
176 
177  mCurrentView = view;
178  mMainView->updateHighlightModes();
179 
180  if ( mCurrentView && mCurrentView->isEventView() ) {
181  mLastEventView = mCurrentView;
182  }
183 
184  if ( mAgendaView ) {
185  mAgendaView->deleteSelectedDateTime();
186  }
187 
188  raiseCurrentView();
189  mMainView->processIncidenceSelection( Akonadi::Item(), QDate() );
190  mMainView->updateView();
191  mMainView->adaptNavigationUnits();
192  KOrg::MainWindow *w = ActionManager::findInstance( KUrl() );
193 
194  if ( w ) {
195  KActionCollection *ac = w->getActionCollection();
196  if ( ac ) {
197  if ( QAction *action = ac->action( QLatin1String("configure_view") ) ) {
198  action->setEnabled( view->hasConfigurationDialog() );
199  }
200 
201  QStringList zoomActions;
202  QStringList rangeActions;
203 
204  zoomActions << QLatin1String("zoom_in_horizontally")
205  << QLatin1String("zoom_out_horizontally")
206  << QLatin1String("zoom_in_vertically")
207  << QLatin1String("zoom_out_vertically");
208  rangeActions << QLatin1String("select_workweek")
209  << QLatin1String("select_week")
210  << QLatin1String("select_day")
211  << QLatin1String("select_nextx");
212 
213  for ( int i = 0; i < zoomActions.size(); ++i ) {
214  if ( QAction *action = ac->action( zoomActions[i] ) ) {
215  action->setEnabled( view->supportsZoom() );
216  }
217  }
218 
219  for ( int i = 0; i < rangeActions.size(); ++i ) {
220  if ( QAction *action = ac->action( rangeActions[i] ) ) {
221  action->setEnabled( view->supportsDateRangeSelection() );
222  }
223  }
224  }
225  }
226 }
227 
228 void KOViewManager::goMenu( bool enable )
229 {
230  KOrg::MainWindow *w = ActionManager::findInstance( KUrl() );
231  if ( w ) {
232  KActionCollection *ac = w->getActionCollection();
233  if ( ac ) {
234  QAction *action;
235  action = ac->action( QLatin1String("go_today") );
236  if ( action ) {
237  action->setEnabled( enable );
238  }
239  action = ac->action( QLatin1String("go_previous") );
240  if ( action ) {
241  action->setEnabled( enable );
242  }
243  action = ac->action( QLatin1String("go_next") );
244  if ( action ) {
245  action->setEnabled( enable );
246  }
247  }
248  }
249 }
250 
251 void KOViewManager::raiseCurrentView()
252 {
253  if ( mCurrentView && mCurrentView->usesFullWindow() ) {
254  mMainView->showLeftFrame( false );
255  if ( mCurrentView == mTodoView ) {
256  mMainView->navigatorBar()->hide();
257  } else {
258  mMainView->navigatorBar()->show();
259  }
260  } else {
261  mMainView->showLeftFrame( true );
262  mMainView->navigatorBar()->hide();
263  }
264  mMainView->viewStack()->setCurrentWidget( widgetForView( mCurrentView ) );
265 }
266 
267 void KOViewManager::updateView()
268 {
269  if ( mCurrentView ) {
270  mCurrentView->updateView();
271  }
272 }
273 
274 void KOViewManager::updateView( const QDate &start, const QDate &end, const QDate &preferredMonth )
275 {
276  if ( mCurrentView && mCurrentView != mTodoView ) {
277  mCurrentView->setDateRange( KDateTime( start ), KDateTime( end ), preferredMonth );
278  } else if ( mTodoView ) {
279  mTodoView->updateView();
280  }
281 }
282 
283 void KOViewManager::connectView( KOrg::BaseView *view )
284 {
285  if ( !view ) {
286  return;
287  }
288 
289  if ( view->isEventView() ) {
290  connect( view, SIGNAL(datesSelected(KCalCore::DateList)),
291  SIGNAL(datesSelected(KCalCore::DateList)) );
292  }
293 
294  // selecting an incidence
295  connect( view, SIGNAL(incidenceSelected(Akonadi::Item,QDate)),
296  mMainView, SLOT(processMainViewSelection(Akonadi::Item,QDate)) );
297 
298  // showing/editing/deleting an incidence. The calendar view takes care of the action.
299  connect( view, SIGNAL(showIncidenceSignal(Akonadi::Item)),
300  mMainView, SLOT(showIncidence(Akonadi::Item)) );
301  connect( view, SIGNAL(editIncidenceSignal(Akonadi::Item)),
302  mMainView, SLOT(editIncidence(Akonadi::Item)) );
303  connect( view, SIGNAL(deleteIncidenceSignal(Akonadi::Item)),
304  mMainView, SLOT(deleteIncidence(Akonadi::Item)) );
305  connect( view, SIGNAL(copyIncidenceSignal(Akonadi::Item)),
306  mMainView, SLOT(copyIncidence(Akonadi::Item)) );
307  connect( view, SIGNAL(cutIncidenceSignal(Akonadi::Item)),
308  mMainView, SLOT(cutIncidence(Akonadi::Item)) );
309  connect( view, SIGNAL(pasteIncidenceSignal()),
310  mMainView, SLOT(pasteIncidence()) );
311  connect( view, SIGNAL(toggleAlarmSignal(Akonadi::Item)),
312  mMainView, SLOT(toggleAlarm(Akonadi::Item)) );
313  connect( view, SIGNAL(toggleTodoCompletedSignal(Akonadi::Item)),
314  mMainView, SLOT(toggleTodoCompleted(Akonadi::Item)) );
315  connect( view, SIGNAL(copyIncidenceToResourceSignal(Akonadi::Item,Akonadi::Collection)),
316  mMainView, SLOT(copyIncidenceToResource(Akonadi::Item,Akonadi::Collection)) );
317  connect( view, SIGNAL(moveIncidenceToResourceSignal(Akonadi::Item,Akonadi::Collection)),
318  mMainView, SLOT(moveIncidenceToResource(Akonadi::Item,Akonadi::Collection)) );
319  connect( view, SIGNAL(dissociateOccurrencesSignal(Akonadi::Item,QDate)),
320  mMainView, SLOT(dissociateOccurrences(Akonadi::Item,QDate)) );
321 
322  // signals to create new incidences
323  connect( view, SIGNAL(newEventSignal()),
324  mMainView, SLOT(newEvent()) );
325  connect( view, SIGNAL(newEventSignal(QDateTime)),
326  mMainView, SLOT(newEvent(QDateTime)) );
327  connect( view, SIGNAL(newEventSignal(QDateTime,QDateTime)),
328  mMainView, SLOT(newEvent(QDateTime,QDateTime)) );
329  connect( view, SIGNAL(newEventSignal(QDate)),
330  mMainView, SLOT(newEvent(QDate)) );
331 
332  connect( view, SIGNAL(newTodoSignal(QDate)),
333  mMainView, SLOT(newTodo(QDate)) );
334  connect( view, SIGNAL(newSubTodoSignal(Akonadi::Item)),
335  mMainView, SLOT(newSubTodo(Akonadi::Item)) );
336  connect( view, SIGNAL(newJournalSignal(QDate)),
337  mMainView, SLOT(newJournal(QDate)) );
338 
339  // reload settings
340  connect( mMainView, SIGNAL(configChanged()), view, SLOT(updateConfig()) );
341 
342  // Notifications about added, changed and deleted incidences
343  connect( mMainView, SIGNAL(dayPassed(QDate)),
344  view, SLOT(dayPassed(QDate)) );
345  connect( view, SIGNAL(startMultiModify(QString)),
346  mMainView, SLOT(startMultiModify(QString)) );
347  connect( view, SIGNAL(endMultiModify()),
348  mMainView, SLOT(endMultiModify()) );
349 
350  connect( mMainView, SIGNAL(newIncidenceChanger(Akonadi::IncidenceChanger*)),
351  view, SLOT(setIncidenceChanger(Akonadi::IncidenceChanger*)) );
352 
353  view->setIncidenceChanger( mMainView->incidenceChanger() );
354 }
355 
356 void KOViewManager::connectTodoView( KOTodoView *todoView )
357 {
358  if ( !todoView ) {
359  return;
360  }
361 
362  // SIGNALS/SLOTS FOR TODO VIEW
363  connect( todoView, SIGNAL(purgeCompletedSignal()),
364  mMainView, SLOT(purgeCompleted()) );
365  connect( todoView, SIGNAL(unSubTodoSignal()),
366  mMainView, SLOT(todo_unsub()) );
367  connect( todoView, SIGNAL(unAllSubTodoSignal()),
368  mMainView, SLOT(makeSubTodosIndependent()) );
369 
370  connect( todoView, SIGNAL(fullViewChanged(bool)),
371  mMainView, SLOT(changeFullView(bool)) );
372 }
373 
374 void KOViewManager::zoomInHorizontally()
375 {
376  if ( mAgendaView == mCurrentView ) {
377  mAgendaView->zoomInHorizontally();
378  }
379 }
380 
381 void KOViewManager::zoomOutHorizontally()
382 {
383  if ( mAgendaView == mCurrentView ) {
384  mAgendaView->zoomOutHorizontally();
385  }
386 }
387 
388 void KOViewManager::zoomInVertically()
389 {
390  if ( mAgendaView == mCurrentView ) {
391  mAgendaView->zoomInVertically();
392  }
393 }
394 
395 void KOViewManager::zoomOutVertically()
396 {
397  if ( mAgendaView == mCurrentView ) {
398  mAgendaView->zoomOutVertically();
399  }
400 }
401 
402 void KOViewManager::addView( KOrg::BaseView *view, bool isTab )
403 {
404  connectView( view );
405  mViews.append( view );
406  const KConfigGroup group = KGlobal::config()->group( view->identifier() );
407  view->restoreConfig( group );
408  if ( !isTab ) {
409  mMainView->viewStack()->addWidget( view );
410  }
411 }
412 
413 void KOViewManager::showTimeSpentView()
414 {
415  if ( !mTimeSpentView ) {
416  mTimeSpentView = new KOTimeSpentView( mMainView->viewStack() );
417  mTimeSpentView->setCalendar( mMainView->calendar() );
418  mTimeSpentView->setIdentifier( "DefaultTimeSpentView" );
419  addView( mTimeSpentView );
420  }
421  goMenu( true );
422  showView( mTimeSpentView );
423 }
424 
425 void KOViewManager::showMonthView()
426 {
427  if ( !mMonthView ) {
428  mMonthView = new KOrg::MonthView( mMainView->viewStack() );
429  mMonthView->setCalendar( mMainView->calendar() );
430  mMonthView->setIdentifier( "DefaultMonthView" );
431  addView( mMonthView );
432  connect( mMonthView, SIGNAL(fullViewChanged(bool)),
433  mMainView, SLOT(changeFullView(bool)) );
434  }
435  goMenu( true );
436  showView( mMonthView );
437 }
438 
439 void KOViewManager::showWhatsNextView()
440 {
441  if ( !mWhatsNextView ) {
442  mWhatsNextView = new KOWhatsNextView( mMainView->viewStack() );
443  mWhatsNextView->setCalendar( mMainView->calendar() );
444  mWhatsNextView->setIdentifier( "DefaultWhatsNextView" );
445  addView( mWhatsNextView );
446  }
447  goMenu( true );
448  showView( mWhatsNextView );
449 }
450 
451 void KOViewManager::showListView()
452 {
453  if ( !mListView ) {
454  mListView = new KOListView( mMainView->calendar(), mMainView->viewStack() );
455  mListView->setIdentifier( "DefaultListView" );
456  addView( mListView );
457  }
458  goMenu( true );
459  showView( mListView );
460 }
461 
462 void KOViewManager::showAgendaView()
463 {
464  const bool showBoth =
465  KOPrefs::instance()->agendaViewCalendarDisplay() == KOPrefs::AllCalendarViews;
466  const bool showMerged =
467  showBoth || KOPrefs::instance()->agendaViewCalendarDisplay() == KOPrefs::CalendarsMerged;
468  const bool showSideBySide =
469  showBoth || KOPrefs::instance()->agendaViewCalendarDisplay() == KOPrefs::CalendarsSideBySide;
470 
471  QWidget *parent = mMainView->viewStack();
472  if ( showBoth ) {
473  if ( !mAgendaViewTabs && showBoth ) {
474  mAgendaViewTabs = new KTabWidget( mMainView->viewStack() );
475  connect( mAgendaViewTabs, SIGNAL(currentChanged(QWidget*)),
476  this, SLOT(currentAgendaViewTabChanged(QWidget*)) );
477  mMainView->viewStack()->addWidget( mAgendaViewTabs );
478 
479  KConfig *config = KOGlobals::self()->config();
480  KConfigGroup viewConfig( config, "Views" );
481  mAgendaViewTabIndex = viewConfig.readEntry( "Agenda View Tab Index", 0 );
482  }
483  parent = mAgendaViewTabs;
484  }
485 
486  if ( showMerged ) {
487  if ( !mAgendaView ) {
488  mAgendaView = new KOAgendaView( parent );
489  mAgendaView->setCalendar( mMainView->calendar() );
490  mAgendaView->setIdentifier( "DefaultAgendaView" );
491 
492  addView( mAgendaView, showBoth );
493 
494  connect( mAgendaView,SIGNAL(zoomViewHorizontally(QDate,int)),
495  mMainView->dateNavigator(), SLOT(selectDates(QDate,int)) );
496  mAgendaView->readSettings( KOGlobals::self()->config() );
497  }
498  if ( showBoth && mAgendaViewTabs->indexOf( mAgendaView ) < 0 ) {
499  mAgendaViewTabs->addTab( mAgendaView, i18n( "Merged calendar" ) );
500  } else if ( !showBoth && mMainView->viewStack()->indexOf( mAgendaView ) < 0 ) {
501  mAgendaView->setParent( parent );
502  mMainView->viewStack()->addWidget( mAgendaView );
503  }
504  }
505 
506  if ( showSideBySide ) {
507  if ( !mAgendaSideBySideView ) {
508  mAgendaSideBySideView = new MultiAgendaView( parent );
509  mAgendaSideBySideView->setIdentifier( "DefaultAgendaSideBySideView" );
510  mAgendaSideBySideView->setCalendar( mMainView->calendar() );
511  addView( mAgendaSideBySideView, showBoth );
512 
513 /*
514  connect( mAgendaSideBySideView,SIGNAL(zoomViewHorizontally(QDate,int)),
515  mMainView->dateNavigator(),SLOT(selectDates(QDate,int)) );*/
516  }
517  if ( showBoth && mAgendaViewTabs->indexOf( mAgendaSideBySideView ) < 0 ) {
518  mAgendaViewTabs->addTab( mAgendaSideBySideView, i18n( "Calendars Side by Side" ) );
519  mAgendaViewTabs->setCurrentIndex( mAgendaViewTabIndex );
520  } else if ( !showBoth && mMainView->viewStack()->indexOf( mAgendaSideBySideView ) < 0 ) {
521  mAgendaSideBySideView->setParent( parent );
522  mMainView->viewStack()->addWidget( mAgendaSideBySideView );
523  }
524  }
525 
526  goMenu( true );
527  if ( showBoth ) {
528  showView( static_cast<KOrg::BaseView*>( mAgendaViewTabs->currentWidget() ) );
529  } else if ( showMerged ) {
530  showView( mAgendaView );
531  } else if ( showSideBySide ) {
532  showView( mAgendaSideBySideView );
533  }
534 }
535 
536 void KOViewManager::selectDay()
537 {
538  mRangeMode = DAY_RANGE;
539  const QDate date = mMainView->activeDate();
540  mMainView->dateNavigator()->selectDate( date );
541 }
542 
543 void KOViewManager::selectWorkWeek()
544 {
545  if ( KOGlobals::self()->getWorkWeekMask() != 0 ) {
546  mRangeMode = WORK_WEEK_RANGE;
547  QDate date = mMainView->activeDate();
548  mMainView->dateNavigator()->selectWorkWeek( date );
549  } else {
550  KMessageBox::sorry(
551  mMainView,
552  i18n( "Unable to display the work week since there are no work days configured. "
553  "Please properly configure at least 1 work day in the Time and Date preferences." ) );
554  }
555 }
556 
557 void KOViewManager::selectWeek()
558 {
559  mRangeMode = WEEK_RANGE;
560  QDate date = mMainView->activeDate();
561  mMainView->dateNavigator()->selectWeek( date );
562 }
563 
564 void KOViewManager::selectNextX()
565 {
566  mRangeMode = NEXTX_RANGE;
567  mMainView->dateNavigator()->selectDates( QDate::currentDate(),
568  KOPrefs::instance()->mNextXDays );
569 }
570 
571 void KOViewManager::showTodoView()
572 {
573  if ( !mTodoView ) {
574  mTodoView = new KOTodoView( false/*not sidebar*/, mMainView->viewStack() );
575  mTodoView->setCalendar( mMainView->calendar() );
576  mTodoView->setIdentifier( "DefaultTodoView" );
577  mTodoView->setCalendar( mMainView->calendar() );
578  addView( mTodoView );
579  connectTodoView( mTodoView );
580 
581  KConfig *config = KOGlobals::self()->config();
582  mTodoView->restoreLayout( config, QLatin1String("Todo View"), false );
583  }
584  goMenu( false );
585  showView( mTodoView );
586 }
587 
588 void KOViewManager::showJournalView()
589 {
590  if ( !mJournalView ) {
591  mJournalView = new KOJournalView( mMainView->viewStack() );
592  mJournalView->setCalendar( mMainView->calendar() );
593  mJournalView->setIdentifier( "DefaultJournalView" );
594  addView( mJournalView );
595  }
596  goMenu( true );
597  showView( mJournalView );
598 }
599 
600 void KOViewManager::showTimeLineView()
601 {
602  if ( !mTimelineView ) {
603  mTimelineView = new KOTimelineView( mMainView->viewStack() );
604  mTimelineView->setCalendar( mMainView->calendar() );
605  mTimelineView->setIdentifier( "DefaultTimelineView" );
606  addView( mTimelineView );
607  }
608  goMenu( true );
609  showView( mTimelineView );
610 }
611 
612 void KOViewManager::showEventView()
613 {
614  if ( mLastEventView ) {
615  goMenu( true );
616  showView( mLastEventView );
617  } else {
618  showAgendaView();
619  selectWeek();
620  }
621 }
622 
623 Akonadi::Item KOViewManager::currentSelection()
624 {
625  if ( !mCurrentView ) {
626  return Akonadi::Item();
627  }
628 
629  Akonadi::Item::List incidenceList = mCurrentView->selectedIncidences();
630  if ( incidenceList.isEmpty() ) {
631  return Akonadi::Item();
632  }
633  return incidenceList.first();
634 }
635 
636 QDate KOViewManager::currentSelectionDate()
637 {
638  QDate qd;
639  if ( mCurrentView ) {
640  KCalCore::DateList qvl = mCurrentView->selectedIncidenceDates();
641  if ( !qvl.isEmpty() ) {
642  qd = qvl.first();
643  }
644  }
645  return qd;
646 }
647 
648 void KOViewManager::setDocumentId( const QString &id )
649 {
650  if ( mTodoView ) {
651  mTodoView->setDocumentId( id );
652  }
653 }
654 
655 QWidget *KOViewManager::widgetForView( KOrg::BaseView *view ) const
656 {
657  if ( mAgendaViewTabs && mAgendaViewTabs->indexOf( view ) >= 0 ) {
658  return mAgendaViewTabs;
659  }
660  return view;
661 }
662 
663 void KOViewManager::currentAgendaViewTabChanged( QWidget *widget )
664 {
665  KConfig *config = KOGlobals::self()->config();
666  KConfigGroup viewConfig( config, "Views" );
667  viewConfig.writeEntry( "Agenda View Tab Index", mAgendaViewTabs->currentIndex() );
668 
669  if ( widget ) {
670  goMenu( true );
671  showView( static_cast<KOrg::BaseView*>( widget ) );
672  }
673 }
674 
675 void KOViewManager::addChange( EventViews::EventView::Change change )
676 {
677  foreach ( BaseView *view, mViews ) {
678  if ( view ) {
679  view->setChanges( view->changes() | change );
680  }
681  }
682 }
683 
684 void KOViewManager::updateMultiCalendarDisplay()
685 {
686  if ( agendaIsSelected() ) {
687  showAgendaView();
688  } else {
689  updateView();
690  }
691 }
692 
693 bool KOViewManager::agendaIsSelected() const
694 {
695  return mCurrentView == mAgendaView ||
696  mCurrentView == mAgendaSideBySideView ||
697  ( mAgendaViewTabs && mCurrentView == mAgendaViewTabs->currentWidget() );
698 }
699 
700 
KOViewManager::setDocumentId
void setDocumentId(const QString &)
Definition: koviewmanager.cpp:648
koagendaview.h
KOViewManager::showJournalView
void showJournalView()
Definition: koviewmanager.cpp:588
KOrg::BaseView::supportsDateRangeSelection
virtual bool supportsDateRangeSelection()
returns whether this view supports date range selection Base implementation returns true...
Definition: baseview.cpp:212
KOViewManager::selectWeek
void selectWeek()
Definition: koviewmanager.cpp:557
KOViewManager::agendaIsSelected
bool agendaIsSelected() const
Returns true if agenda is the current view.
Definition: koviewmanager.cpp:693
CalendarView::showLeftFrame
void showLeftFrame(bool show=true)
Definition: calendarview.cpp:2128
QWidget
kolistview.h
KOTodoView::updateView
virtual void updateView()
Definition: kotodoview.cpp:152
KOViewManager::showAgendaView
void showAgendaView()
Definition: koviewmanager.cpp:462
KOAgendaView::writeSettings
void writeSettings(KConfig *)
Definition: koagendaview.cpp:269
koglobals.h
KOViewManager::connectView
void connectView(KOrg::BaseView *)
Definition: koviewmanager.cpp:283
KOAgendaView
KOAgendaView is the agenda-like view that displays events in a single or multi-day view...
Definition: koagendaview.h:37
KOrg::MultiAgendaView::setCalendar
void setCalendar(const Akonadi::ETMCalendar::Ptr &cal)
Definition: multiagendaview.cpp:143
KOrg::BaseView::identifier
QByteArray identifier() const
Definition: baseview.cpp:153
CalendarView::incidenceChanger
virtual Akonadi::IncidenceChanger * incidenceChanger() const
Definition: calendarview.h:145
CalendarView::viewStack
QStackedWidget * viewStack() const
Definition: calendarview.h:139
KOTimeSpentView
This view show the time spent on each category.
Definition: kotimespentview.h:38
KOAgendaView::readSettings
void readSettings()
Definition: koagendaview.cpp:259
KOViewManager::showTodoView
void showTodoView()
Definition: koviewmanager.cpp:571
KOrg::MultiAgendaView
Shows one agenda for every resource side-by-side.
Definition: multiagendaview.h:37
KOViewManager::addView
void addView(KOrg::BaseView *, bool isTab=false)
Definition: koviewmanager.cpp:402
navigatorbar.h
KOrg::BaseView::restoreConfig
virtual void restoreConfig(const KConfigGroup &configGroup)
reads the view configuration.
Definition: baseview.cpp:163
KOrg::BaseView::setDateRange
virtual void setDateRange(const KDateTime &start, const KDateTime &end, const QDate &preferredMonth=QDate())
Show incidences for the given date range.
Definition: baseview.cpp:118
DateNavigator::selectDate
void selectDate(const QDate &)
Definition: datenavigator.cpp:63
KOViewManager::zoomOutHorizontally
void zoomOutHorizontally()
Definition: koviewmanager.cpp:381
KOrg::BaseView::usesFullWindow
virtual bool usesFullWindow()
returns whether this view should be displayed full window.
Definition: baseview.cpp:202
KOViewManager::showWhatsNextView
void showWhatsNextView()
Definition: koviewmanager.cpp:439
CalendarView::navigatorBar
NavigatorBar * navigatorBar() const
Definition: calendarview.h:141
KOJournalView::setCalendar
void setCalendar(const Akonadi::ETMCalendar::Ptr &)
Definition: kojournalview.cpp:172
KOListView::writeSettings
void writeSettings(KConfig *config)
Definition: kolistview.cpp:190
KOrg::BaseView::isEventView
virtual bool isEventView()
Returns if this view is a view for displaying events.
Definition: baseview.cpp:85
KOrg::BaseView::hasConfigurationDialog
virtual bool hasConfigurationDialog() const
Definition: baseview.cpp:113
KOViewManager::addChange
void addChange(EventViews::EventView::Change change)
Notifies all views that an update is needed.
Definition: koviewmanager.cpp:675
kotodoview.h
KOrg::MonthView
Definition: monthview.h:33
actionmanager.h
KOViewManager::raiseCurrentView
void raiseCurrentView()
Definition: koviewmanager.cpp:251
KOAgendaView::setCalendar
virtual void setCalendar(const Akonadi::ETMCalendar::Ptr &cal)
Definition: koagendaview.cpp:150
QWidget::setParent
void setParent(QWidget *parent)
KOViewManager::goMenu
void goMenu(bool enable)
Definition: koviewmanager.cpp:228
CalendarView::updateView
void updateView(const QDate &start, const QDate &end, const QDate &preferredMonth, const bool updateTodos=true)
Definition: calendarview.cpp:767
QList::size
int size() const
KOWhatsNextView
This class provides a view of the next events and todos.
Definition: kowhatsnextview.h:33
datenavigator.h
kotimespentview.h
KOViewManager::selectDay
void selectDay()
Definition: koviewmanager.cpp:536
QList::append
void append(const T &value)
KOrg::BaseView::setIdentifier
virtual void setIdentifier(const QByteArray &identifier)
Definition: baseview.cpp:158
QStackedWidget::setCurrentWidget
void setCurrentWidget(QWidget *widget)
CalendarView
This is the main calendar widget.
Definition: calendarview.h:99
CalendarView::calendar
Akonadi::ETMCalendar::Ptr calendar() const
Definition: calendarview.cpp:319
DateNavigator::selectWeek
void selectWeek()
Definition: datenavigator.cpp:108
KOViewManager::connectTodoView
void connectTodoView(KOTodoView *todoView)
Definition: koviewmanager.cpp:356
KOViewManager::zoomInVertically
void zoomInVertically()
Definition: koviewmanager.cpp:388
DateNavigator::selectDates
void selectDates(const KCalCore::DateList &, const QDate &preferredMonth=QDate())
Definition: datenavigator.cpp:55
koprefs.h
KOViewManager::showEventView
void showEventView()
Definition: koviewmanager.cpp:612
QObject
KOViewManager::NEXTX_RANGE
Definition: koviewmanager.h:72
ActionManager::findInstance
static KOrg::MainWindow * findInstance(const KUrl &url)
Is there a instance with this URL?
Definition: actionmanager.cpp:1273
KOViewManager::currentView
KOrg::BaseView * currentView()
Definition: koviewmanager.cpp:74
CalendarView::dateNavigator
DateNavigator * dateNavigator() const
Definition: calendarview.h:142
KOViewManager::zoomInHorizontally
void zoomInHorizontally()
Definition: koviewmanager.cpp:374
mainwindow.h
KOViewManager::updateMultiCalendarDisplay
void updateMultiCalendarDisplay()
Definition: koviewmanager.cpp:684
KOAgendaView::zoomInHorizontally
void zoomInHorizontally(const QDate &date=QDate())
Definition: koagendaview.cpp:167
KOAgendaView::zoomOutVertically
void zoomOutVertically()
Definition: koagendaview.cpp:162
KOViewManager::showMonthView
void showMonthView()
Definition: koviewmanager.cpp:425
KOWhatsNextView::setCalendar
void setCalendar(const Akonadi::ETMCalendar::Ptr &)
Definition: kowhatsnextview.cpp:133
QDate
KOrg::MainWindow::getActionCollection
virtual KActionCollection * getActionCollection() const =0
Return actionCollection of this main window.
KOViewManager::showListView
void showListView()
Definition: koviewmanager.cpp:451
KOViewManager::OTHER_RANGE
Definition: koviewmanager.h:73
KOViewManager::DAY_RANGE
Definition: koviewmanager.h:69
KOJournalView
This class provides a journal view.
Definition: kojournalview.h:42
KOTodoView::setCalendar
virtual void setCalendar(const Akonadi::ETMCalendar::Ptr &)
Definition: kotodoview.cpp:117
KOListView
Definition: kolistview.h:44
QString
CalendarView::activeDate
QDate activeDate(bool fallbackToToday=false)
Returns the best guess at the current active date in the view.
Definition: calendarview.cpp:324
QWidget::hide
void hide()
KOrg::MainWindow
interface for korganizer main window
Definition: mainwindow.h:44
KOrg::BaseView::selectedIncidences
virtual Akonadi::Item::List selectedIncidences()=0
QStringList
CalendarView::updateHighlightModes
void updateHighlightModes()
Informs the date navigator which incidence types should be used to embolden days, this function is ma...
Definition: calendarview.cpp:2629
CalendarView::processIncidenceSelection
void processIncidenceSelection(const Akonadi::Item &incidence, const QDate &date)
Definition: calendarview.cpp:1942
KOTodoView::saveLayout
void saveLayout(KConfig *config, const QString &group) const
Definition: kotodoview.cpp:235
KOrg::BaseView::updateView
virtual void updateView()=0
Updates the current display to reflect changes that may have happened in the calendar since the last ...
KOAgendaView::deleteSelectedDateTime
void deleteSelectedDateTime()
make selected start/end invalid
Definition: koagendaview.cpp:279
KOTimelineView
This class provides a view ....
Definition: kotimelineview.h:41
KOAgendaView::zoomInVertically
void zoomInVertically()
Definition: koagendaview.cpp:157
KOrg::BaseView::changes
EventViews::EventView::Changes changes() const
Returns if there are pending changes and a redraw is needed.
Definition: baseview.cpp:234
KOViewManager::KOViewManager
KOViewManager(CalendarView *)
Definition: koviewmanager.cpp:51
KOGlobals::self
static KOGlobals * self()
Definition: koglobals.cpp:43
KOViewManager::WORK_WEEK_RANGE
Definition: koviewmanager.h:70
KOViewManager::showView
void showView(KOrg::BaseView *)
changes the view to be the currently selected view
Definition: koviewmanager.cpp:171
KOViewManager::WEEK_RANGE
Definition: koviewmanager.h:71
KOrg::BaseView
This class provides an interface for all views being displayed within the main calendar view...
Definition: baseview.h:52
KOTodoView::setDocumentId
void setDocumentId(const QString &)
Definition: kotodoview.h:52
KOViewManager::updateView
void updateView()
Definition: koviewmanager.cpp:267
KOViewManager::currentSelectionDate
QDate currentSelectionDate()
If there's a selected incidence, it's date is returned, otherwise an invalid QDate is returned...
Definition: koviewmanager.cpp:636
QLatin1String
KOViewManager::showTimeSpentView
void showTimeSpentView()
Definition: koviewmanager.cpp:413
KOViewManager::configChanged
void configChanged()
QStackedWidget::indexOf
int indexOf(QWidget *widget) const
KOViewManager::zoomOutVertically
void zoomOutVertically()
Definition: koviewmanager.cpp:395
KOListView::readSettings
void readSettings(KConfig *config)
Definition: kolistview.cpp:185
KOViewManager::~KOViewManager
virtual ~KOViewManager()
Definition: koviewmanager.cpp:70
KOViewManager::currentSelection
Akonadi::Item currentSelection()
Definition: koviewmanager.cpp:623
KOTodoView
Definition: kotodoview.h:39
KOViewManager::datesSelected
void datesSelected(const KCalCore::DateList &)
KOViewManager::NO_RANGE
Definition: koviewmanager.h:68
KOAgendaView::zoomOutHorizontally
void zoomOutHorizontally(const QDate &date=QDate())
Definition: koagendaview.cpp:172
QDate::currentDate
QDate currentDate()
QAction
KOViewManager::readSettings
void readSettings(KConfig *config)
Definition: koviewmanager.cpp:79
KOViewManager::selectWorkWeek
void selectWorkWeek()
Definition: koviewmanager.cpp:543
KOrg::BaseView::setChanges
virtual void setChanges(EventViews::EventView::Changes changes)
Notifies the view that there are pending changes so a redraw is needed.
Definition: baseview.cpp:229
KOPrefs::instance
static KOPrefs * instance()
Get instance of KOPrefs.
Definition: koprefs.cpp:68
monthview.h
calendarview.h
koviewmanager.h
multiagendaview.h
KOrg::BaseView::setIncidenceChanger
virtual void setIncidenceChanger(Akonadi::IncidenceChanger *changer)
Assign a new incidence change helper object.
Definition: baseview.cpp:95
QWidget::show
void show()
KOrg::BaseView::supportsZoom
virtual bool supportsZoom()
returns whether this view supports zoom.
Definition: baseview.cpp:207
KOTodoView::restoreLayout
void restoreLayout(KConfig *config, const QString &group, bool minimalDefaults)
Definition: kotodoview.cpp:230
QStackedWidget::addWidget
int addWidget(QWidget *widget)
DateNavigator::selectWorkWeek
void selectWorkWeek()
Definition: datenavigator.cpp:127
QObject::connect
bool connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
kotimelineview.h
QObject::parent
QObject * parent() const
CalendarView::adaptNavigationUnits
void adaptNavigationUnits()
Adapts navigation units according to the current view's navigation step size.
Definition: calendarview.cpp:1912
KOViewManager::selectNextX
void selectNextX()
Definition: koviewmanager.cpp:564
KOGlobals::config
KConfig * config() const
Definition: koglobals.cpp:54
kowhatsnextview.h
KOrg::BaseView::selectedIncidenceDates
virtual KCalCore::DateList selectedIncidenceDates()=0
Returns a list of the dates of selected events.
QAction::setEnabled
void setEnabled(bool)
KOViewManager::RangeMode
RangeMode
Definition: koviewmanager.h:67
KOTimelineView::setCalendar
virtual void setCalendar(const Akonadi::ETMCalendar::Ptr &cal)
Definition: kotimelineview.cpp:195
KOViewManager::showTimeLineView
void showTimeLineView()
Definition: koviewmanager.cpp:600
KOViewManager::writeSettings
void writeSettings(KConfig *config)
Definition: koviewmanager.cpp:128
QDateTime
KOTimeSpentView::setCalendar
void setCalendar(const Akonadi::ETMCalendar::Ptr &cal)
Definition: kotimespentview.cpp:143
kojournalview.h
KOrg::MonthView::setCalendar
void setCalendar(const Akonadi::ETMCalendar::Ptr &cal)
Definition: monthview.cpp:229
KOrg::BaseView::saveConfig
virtual void saveConfig(KConfigGroup &configGroup)
writes out the view configuration.
Definition: baseview.cpp:168
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Mon Jun 22 2020 13:32:59 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

korganizer

Skip menu "korganizer"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Related Pages

kdepim API Reference

Skip menu "kdepim API Reference"
  • akonadi_next
  • akregator
  • blogilo
  • calendarsupport
  • console
  •   kabcclient
  •   konsolekalendar
  • kaddressbook
  • kalarm
  •   lib
  • kdgantt2
  • kjots
  • kleopatra
  • kmail
  • knode
  • knotes
  • kontact
  • korgac
  • korganizer
  • ktimetracker
  • libkdepim
  • libkleo
  • libkpgp
  • mailcommon
  • messagelist
  • messageviewer
  • pimprint

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal