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

korganizer

  • sources
  • kde-4.12
  • 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 "koprefs.h"
32 #include "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,QString)),
316  mMainView, SLOT(copyIncidenceToResource(Akonadi::Item,QString)) );
317  connect( view, SIGNAL(moveIncidenceToResourceSignal(Akonadi::Item,QString)),
318  mMainView, SLOT(moveIncidenceToResource(Akonadi::Item,QString)) );
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  connect( mMainView, SIGNAL(categoryConfigChanged()),
370  todoView, SLOT(updateCategories()) );
371 
372  connect( todoView, SIGNAL(fullViewChanged(bool)),
373  mMainView, SLOT(changeFullView(bool)) );
374 }
375 
376 void KOViewManager::zoomInHorizontally()
377 {
378  if ( mAgendaView == mCurrentView ) {
379  mAgendaView->zoomInHorizontally();
380  }
381 }
382 
383 void KOViewManager::zoomOutHorizontally()
384 {
385  if ( mAgendaView == mCurrentView ) {
386  mAgendaView->zoomOutHorizontally();
387  }
388 }
389 
390 void KOViewManager::zoomInVertically()
391 {
392  if ( mAgendaView == mCurrentView ) {
393  mAgendaView->zoomInVertically();
394  }
395 }
396 
397 void KOViewManager::zoomOutVertically()
398 {
399  if ( mAgendaView == mCurrentView ) {
400  mAgendaView->zoomOutVertically();
401  }
402 }
403 
404 void KOViewManager::addView( KOrg::BaseView *view, bool isTab )
405 {
406  connectView( view );
407  mViews.append( view );
408  const KConfigGroup group = KGlobal::config()->group( view->identifier() );
409  view->restoreConfig( group );
410  if ( !isTab ) {
411  mMainView->viewStack()->addWidget( view );
412  }
413 }
414 
415 void KOViewManager::showTimeSpentView()
416 {
417  if ( !mTimeSpentView ) {
418  mTimeSpentView = new KOTimeSpentView( mMainView->viewStack() );
419  mTimeSpentView->setCalendar( mMainView->calendar() );
420  mTimeSpentView->setIdentifier( "DefaultTimeSpentView" );
421  addView( mTimeSpentView );
422  }
423  goMenu( true );
424  showView( mTimeSpentView );
425 }
426 
427 void KOViewManager::showMonthView()
428 {
429  if ( !mMonthView ) {
430  mMonthView = new KOrg::MonthView( mMainView->viewStack() );
431  mMonthView->setCalendar( mMainView->calendar() );
432  mMonthView->setIdentifier( "DefaultMonthView" );
433  addView( mMonthView );
434  connect( mMonthView, SIGNAL(fullViewChanged(bool)),
435  mMainView, SLOT(changeFullView(bool)) );
436  }
437  goMenu( true );
438  showView( mMonthView );
439 }
440 
441 void KOViewManager::showWhatsNextView()
442 {
443  if ( !mWhatsNextView ) {
444  mWhatsNextView = new KOWhatsNextView( mMainView->viewStack() );
445  mWhatsNextView->setCalendar( mMainView->calendar() );
446  mWhatsNextView->setIdentifier( "DefaultWhatsNextView" );
447  addView( mWhatsNextView );
448  }
449  goMenu( true );
450  showView( mWhatsNextView );
451 }
452 
453 void KOViewManager::showListView()
454 {
455  if ( !mListView ) {
456  mListView = new KOListView( mMainView->calendar(), mMainView->viewStack() );
457  mListView->setIdentifier( "DefaultListView" );
458  addView( mListView );
459  }
460  goMenu( true );
461  showView( mListView );
462 }
463 
464 void KOViewManager::showAgendaView()
465 {
466  const bool showBoth =
467  KOPrefs::instance()->agendaViewCalendarDisplay() == KOPrefs::AllCalendarViews;
468  const bool showMerged =
469  showBoth || KOPrefs::instance()->agendaViewCalendarDisplay() == KOPrefs::CalendarsMerged;
470  const bool showSideBySide =
471  showBoth || KOPrefs::instance()->agendaViewCalendarDisplay() == KOPrefs::CalendarsSideBySide;
472 
473  QWidget *parent = mMainView->viewStack();
474  if ( showBoth ) {
475  if ( !mAgendaViewTabs && showBoth ) {
476  mAgendaViewTabs = new KTabWidget( mMainView->viewStack() );
477  connect( mAgendaViewTabs, SIGNAL(currentChanged(QWidget*)),
478  this, SLOT(currentAgendaViewTabChanged(QWidget*)) );
479  mMainView->viewStack()->addWidget( mAgendaViewTabs );
480 
481  KConfig *config = KOGlobals::self()->config();
482  KConfigGroup viewConfig( config, "Views" );
483  mAgendaViewTabIndex = viewConfig.readEntry( "Agenda View Tab Index", 0 );
484  }
485  parent = mAgendaViewTabs;
486  }
487 
488  if ( showMerged ) {
489  if ( !mAgendaView ) {
490  mAgendaView = new KOAgendaView( parent );
491  mAgendaView->setCalendar( mMainView->calendar() );
492  mAgendaView->setIdentifier( "DefaultAgendaView" );
493 
494  addView( mAgendaView, showBoth );
495 
496  connect( mAgendaView,SIGNAL(zoomViewHorizontally(QDate,int)),
497  mMainView->dateNavigator(), SLOT(selectDates(QDate,int)) );
498  mAgendaView->readSettings( KOGlobals::self()->config() );
499  }
500  if ( showBoth && mAgendaViewTabs->indexOf( mAgendaView ) < 0 ) {
501  mAgendaViewTabs->addTab( mAgendaView, i18n( "Merged calendar" ) );
502  } else if ( !showBoth && mMainView->viewStack()->indexOf( mAgendaView ) < 0 ) {
503  mAgendaView->setParent( parent );
504  mMainView->viewStack()->addWidget( mAgendaView );
505  }
506  }
507 
508  if ( showSideBySide ) {
509  if ( !mAgendaSideBySideView ) {
510  mAgendaSideBySideView = new MultiAgendaView( parent );
511  mAgendaSideBySideView->setIdentifier( "DefaultAgendaSideBySideView" );
512  mAgendaSideBySideView->setCalendar( mMainView->calendar() );
513  addView( mAgendaSideBySideView, showBoth );
514 
515 /*
516  connect( mAgendaSideBySideView,SIGNAL(zoomViewHorizontally(QDate,int)),
517  mMainView->dateNavigator(),SLOT(selectDates(QDate,int)) );*/
518  }
519  if ( showBoth && mAgendaViewTabs->indexOf( mAgendaSideBySideView ) < 0 ) {
520  mAgendaViewTabs->addTab( mAgendaSideBySideView, i18n( "Calendars Side by Side" ) );
521  mAgendaViewTabs->setCurrentIndex( mAgendaViewTabIndex );
522  } else if ( !showBoth && mMainView->viewStack()->indexOf( mAgendaSideBySideView ) < 0 ) {
523  mAgendaSideBySideView->setParent( parent );
524  mMainView->viewStack()->addWidget( mAgendaSideBySideView );
525  }
526  }
527 
528  goMenu( true );
529  if ( showBoth ) {
530  showView( static_cast<KOrg::BaseView*>( mAgendaViewTabs->currentWidget() ) );
531  } else if ( showMerged ) {
532  showView( mAgendaView );
533  } else if ( showSideBySide ) {
534  showView( mAgendaSideBySideView );
535  }
536 }
537 
538 void KOViewManager::selectDay()
539 {
540  mRangeMode = DAY_RANGE;
541  const QDate date = mMainView->activeDate();
542  mMainView->dateNavigator()->selectDate( date );
543 }
544 
545 void KOViewManager::selectWorkWeek()
546 {
547  if ( KOGlobals::self()->getWorkWeekMask() != 0 ) {
548  mRangeMode = WORK_WEEK_RANGE;
549  QDate date = mMainView->activeDate();
550  mMainView->dateNavigator()->selectWorkWeek( date );
551  } else {
552  KMessageBox::sorry(
553  mMainView,
554  i18n( "Unable to display the work week since there are no work days configured. "
555  "Please properly configure at least 1 work day in the Time and Date preferences." ) );
556  }
557 }
558 
559 void KOViewManager::selectWeek()
560 {
561  mRangeMode = WEEK_RANGE;
562  QDate date = mMainView->activeDate();
563  mMainView->dateNavigator()->selectWeek( date );
564 }
565 
566 void KOViewManager::selectNextX()
567 {
568  mRangeMode = NEXTX_RANGE;
569  mMainView->dateNavigator()->selectDates( QDate::currentDate(),
570  KOPrefs::instance()->mNextXDays );
571 }
572 
573 void KOViewManager::showTodoView()
574 {
575  if ( !mTodoView ) {
576  mTodoView = new KOTodoView( false/*not sidebar*/, mMainView->viewStack() );
577  mTodoView->setCalendar( mMainView->calendar() );
578  mTodoView->setIdentifier( "DefaultTodoView" );
579  mTodoView->setCalendar( mMainView->calendar() );
580  addView( mTodoView );
581  connectTodoView( mTodoView );
582 
583  KConfig *config = KOGlobals::self()->config();
584  mTodoView->restoreLayout( config, QLatin1String("Todo View"), false );
585  }
586  goMenu( false );
587  showView( mTodoView );
588 }
589 
590 void KOViewManager::showJournalView()
591 {
592  if ( !mJournalView ) {
593  mJournalView = new KOJournalView( mMainView->viewStack() );
594  mJournalView->setCalendar( mMainView->calendar() );
595  mJournalView->setIdentifier( "DefaultJournalView" );
596  addView( mJournalView );
597  }
598  goMenu( true );
599  showView( mJournalView );
600 }
601 
602 void KOViewManager::showTimeLineView()
603 {
604  if ( !mTimelineView ) {
605  mTimelineView = new KOTimelineView( mMainView->viewStack() );
606  mTimelineView->setCalendar( mMainView->calendar() );
607  mTimelineView->setIdentifier( "DefaultTimelineView" );
608  addView( mTimelineView );
609  }
610  goMenu( true );
611  showView( mTimelineView );
612 }
613 
614 void KOViewManager::showEventView()
615 {
616  if ( mLastEventView ) {
617  goMenu( true );
618  showView( mLastEventView );
619  } else {
620  showAgendaView();
621  selectWeek();
622  }
623 }
624 
625 Akonadi::Item KOViewManager::currentSelection()
626 {
627  if ( !mCurrentView ) {
628  return Akonadi::Item();
629  }
630 
631  Akonadi::Item::List incidenceList = mCurrentView->selectedIncidences();
632  if ( incidenceList.isEmpty() ) {
633  return Akonadi::Item();
634  }
635  return incidenceList.first();
636 }
637 
638 QDate KOViewManager::currentSelectionDate()
639 {
640  QDate qd;
641  if ( mCurrentView ) {
642  DateList qvl = mCurrentView->selectedIncidenceDates();
643  if ( !qvl.isEmpty() ) {
644  qd = qvl.first();
645  }
646  }
647  return qd;
648 }
649 
650 void KOViewManager::setDocumentId( const QString &id )
651 {
652  if ( mTodoView ) {
653  mTodoView->setDocumentId( id );
654  }
655 }
656 
657 QWidget *KOViewManager::widgetForView( KOrg::BaseView *view ) const
658 {
659  if ( mAgendaViewTabs && mAgendaViewTabs->indexOf( view ) >= 0 ) {
660  return mAgendaViewTabs;
661  }
662  return view;
663 }
664 
665 void KOViewManager::currentAgendaViewTabChanged( QWidget *widget )
666 {
667  KConfig *config = KOGlobals::self()->config();
668  KConfigGroup viewConfig( config, "Views" );
669  viewConfig.writeEntry( "Agenda View Tab Index", mAgendaViewTabs->currentIndex() );
670 
671  if ( widget ) {
672  goMenu( true );
673  showView( static_cast<KOrg::BaseView*>( widget ) );
674  }
675 }
676 
677 void KOViewManager::addChange( EventViews::EventView::Change change )
678 {
679  foreach ( BaseView *view, mViews ) {
680  if ( view ) {
681  view->setChanges( view->changes() | change );
682  }
683  }
684 }
685 
686 void KOViewManager::updateMultiCalendarDisplay()
687 {
688  if ( agendaIsSelected() ) {
689  showAgendaView();
690  } else {
691  updateView();
692  }
693 }
694 
695 bool KOViewManager::agendaIsSelected() const
696 {
697  return mCurrentView == mAgendaView ||
698  mCurrentView == mAgendaSideBySideView ||
699  ( mAgendaViewTabs && mCurrentView == mAgendaViewTabs->currentWidget() );
700 }
701 
702 #include "koviewmanager.moc"
703 
KOViewManager::setDocumentId
void setDocumentId(const QString &)
Definition: koviewmanager.cpp:650
koagendaview.h
KOViewManager::showJournalView
void showJournalView()
Definition: koviewmanager.cpp:590
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:559
KOViewManager::agendaIsSelected
bool agendaIsSelected() const
Returns true if agenda is the current view.
Definition: koviewmanager.cpp:695
KOPrefsBase::AllCalendarViews
Definition: koprefs_base.h:16
CalendarView::showLeftFrame
void showLeftFrame(bool show=true)
Definition: calendarview.cpp:2113
kolistview.h
KOTodoView::updateView
virtual void updateView()
Definition: kotodoview.cpp:144
KOViewManager::showAgendaView
void showAgendaView()
Definition: koviewmanager.cpp:464
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:36
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:573
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:404
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:383
KOrg::BaseView::usesFullWindow
virtual bool usesFullWindow()
returns whether this view should be displayed full window.
Definition: baseview.cpp:202
QWidget
KOViewManager::showWhatsNextView
void showWhatsNextView()
Definition: koviewmanager.cpp:441
CalendarView::navigatorBar
NavigatorBar * navigatorBar() const
Definition: calendarview.h:141
KOJournalView::setCalendar
void setCalendar(const Akonadi::ETMCalendar::Ptr &)
Definition: kojournalview.cpp:174
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:677
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
QObject
KOPrefsBase::agendaViewCalendarDisplay
int agendaViewCalendarDisplay() const
Get Multiple Calendar Display.
Definition: koprefs_base.h:752
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:753
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:538
KOrg::BaseView::setIdentifier
virtual void setIdentifier(const QByteArray &identifier)
Definition: baseview.cpp:158
CalendarView
This is the main calendar widget.
Definition: calendarview.h:99
CalendarView::calendar
Akonadi::ETMCalendar::Ptr calendar() const
Definition: calendarview.cpp:313
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:390
DateNavigator::selectDates
void selectDates(const KCalCore::DateList &, const QDate &preferredMonth=QDate())
Definition: datenavigator.cpp:55
koprefs.h
KOViewManager::showEventView
void showEventView()
Definition: koviewmanager.cpp:614
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:376
mainwindow.h
KOViewManager::updateMultiCalendarDisplay
void updateMultiCalendarDisplay()
Definition: koviewmanager.cpp:686
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:427
KOWhatsNextView::setCalendar
void setCalendar(const Akonadi::ETMCalendar::Ptr &)
Definition: kowhatsnextview.cpp:133
KOrg::MainWindow::getActionCollection
virtual KActionCollection * getActionCollection() const =0
Return actionCollection of this main window.
KOViewManager::showListView
void showListView()
Definition: koviewmanager.cpp:453
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:109
KOListView
Definition: kolistview.h:44
CalendarView::activeDate
QDate activeDate(bool fallbackToToday=false)
Returns the best guess at the current active date in the view.
Definition: calendarview.cpp:318
KOrg::MainWindow
interface for korganizer main window
Definition: mainwindow.h:44
KOrg::BaseView::selectedIncidences
virtual Akonadi::Item::List selectedIncidences()=0
KOPrefsBase::CalendarsSideBySide
Definition: koprefs_base.h:16
CalendarView::updateHighlightModes
void updateHighlightModes()
Informs the date navigator which incidence types should be used to embolden days, this function is ma...
Definition: calendarview.cpp:2633
CalendarView::processIncidenceSelection
void processIncidenceSelection(const Akonadi::Item &incidence, const QDate &date)
Definition: calendarview.cpp:1928
KOTodoView::saveLayout
void saveLayout(KConfig *config, const QString &group) const
Definition: kotodoview.cpp:233
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:51
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:638
KOViewManager::showTimeSpentView
void showTimeSpentView()
Definition: koviewmanager.cpp:415
KOViewManager::configChanged
void configChanged()
KOViewManager::zoomOutVertically
void zoomOutVertically()
Definition: koviewmanager.cpp:397
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:625
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
KOViewManager::readSettings
void readSettings(KConfig *config)
Definition: koviewmanager.cpp:79
KOViewManager::selectWorkWeek
void selectWorkWeek()
Definition: koviewmanager.cpp:545
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
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:228
DateNavigator::selectWorkWeek
void selectWorkWeek()
Definition: datenavigator.cpp:127
kotimelineview.h
CalendarView::adaptNavigationUnits
void adaptNavigationUnits()
Adapts navigation units according to the current view's navigation step size.
Definition: calendarview.cpp:1898
KOViewManager::selectNextX
void selectNextX()
Definition: koviewmanager.cpp:566
KOGlobals::config
KConfig * config() const
Definition: koglobals.cpp:54
KOPrefsBase::CalendarsMerged
Definition: koprefs_base.h:16
kowhatsnextview.h
KOrg::BaseView::selectedIncidenceDates
virtual KCalCore::DateList selectedIncidenceDates()=0
Returns a list of the dates of selected events.
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:602
KOViewManager::writeSettings
void writeSettings(KConfig *config)
Definition: koviewmanager.cpp:128
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-2014 The KDE developers.
Generated on Tue Oct 14 2014 22:56:19 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

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