• 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
  • views
  • multiagendaview
multiagendaview.cpp
Go to the documentation of this file.
1 /*
2  This file is part of KOrganizer.
3 
4  Copyright (c) 2007 Volker Krause <vkrause@kde.org>
5 
6  This program is free software; you can redistribute it and/or modify
7  it under the terms of the GNU General Public License as published by
8  the Free Software Foundation; either version 2 of the License, or
9  (at your option) any later version.
10 
11  This program is distributed in the hope that it will be useful,
12  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  GNU General Public License for more details.
15 
16  You should have received a copy of the GNU General Public License along
17  with this program; if not, write to the Free Software Foundation, Inc.,
18  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
19 */
20 
21 #include "multiagendaview.h"
22 #include "akonadicollectionview.h"
23 #include "koeventpopupmenu.h"
24 #include "koprefs.h"
25 #include "ui_multiagendaviewconfigwidget.h"
26 
27 #include <akonadi_next/kcolumnfilterproxymodel.h>
28 
29 #include <calendarviews/agenda/agendaview.h>
30 #include <calendarviews/multiagenda/multiagendaview.h>
31 
32 #include <Akonadi/EntityTreeView>
33 #include <Akonadi/EntityTreeModel>
34 
35 #include <KCheckableProxyModel>
36 
37 #include <QHBoxLayout>
38 #include <QSortFilterProxyModel>
39 #include <QStandardItem>
40 
41 using namespace Future;
42 using namespace KOrg;
43 
44 static QString generateColumnLabel( int c )
45 {
46  return i18n( "Agenda %1", c + 1 );
47 }
48 
49 class MultiAgendaView::Private
50 {
51  public:
52  Private( MultiAgendaView *qq ) : q( qq )
53  {
54  QHBoxLayout *layout = new QHBoxLayout( q );
55  mMultiAgendaView = new EventViews::MultiAgendaView( q );
56  mMultiAgendaView->setPreferences( KOPrefs::instance()->eventViewsPreferences() );
57  layout->addWidget( mMultiAgendaView );
58 
59  mPopup = q->eventPopup();
60  }
61 
62  EventViews::MultiAgendaView *mMultiAgendaView;
63  KOEventPopupMenu *mPopup;
64 
65  private:
66  MultiAgendaView * const q;
67 };
68 
69 MultiAgendaView::MultiAgendaView( QWidget *parent )
70  : KOEventView( parent ), d( new Private( this ) )
71 {
72  connect( d->mMultiAgendaView, SIGNAL(datesSelected(KCalCore::DateList)),
73  SIGNAL(datesSelected(KCalCore::DateList)) );
74 
75  connect( d->mMultiAgendaView, SIGNAL(shiftedEvent(QDate,QDate)),
76  SIGNAL(shiftedEvent(QDate,QDate)) );
77 
78  connect( d->mMultiAgendaView, SIGNAL(showIncidencePopupSignal(Akonadi::Item,QDate)),
79  d->mPopup, SLOT(showIncidencePopup(Akonadi::Item,QDate)) );
80 
81  connect( d->mMultiAgendaView, SIGNAL(showNewEventPopupSignal()),
82  SLOT(showNewEventPopup()) );
83 
84  connect( d->mMultiAgendaView, SIGNAL(incidenceSelected(Akonadi::Item,QDate)),
85  SIGNAL(incidenceSelected(Akonadi::Item,QDate)) );
86 
87  connect( d->mMultiAgendaView, SIGNAL(showIncidenceSignal(Akonadi::Item)),
88  SIGNAL(showIncidenceSignal(Akonadi::Item)) );
89 
90  connect( d->mMultiAgendaView, SIGNAL(editIncidenceSignal(Akonadi::Item)),
91  SIGNAL(editIncidenceSignal(Akonadi::Item)) );
92 
93  connect( d->mMultiAgendaView, SIGNAL(deleteIncidenceSignal(Akonadi::Item)),
94  SIGNAL(deleteIncidenceSignal(Akonadi::Item)) );
95 
96  connect( d->mMultiAgendaView, SIGNAL(cutIncidenceSignal(Akonadi::Item)),
97  SIGNAL(cutIncidenceSignal(Akonadi::Item)) );
98 
99  connect( d->mMultiAgendaView, SIGNAL(copyIncidenceSignal(Akonadi::Item)),
100  SIGNAL(copyIncidenceSignal(Akonadi::Item)) );
101 
102  connect( d->mMultiAgendaView, SIGNAL(pasteIncidenceSignal()),
103  SIGNAL(pasteIncidenceSignal()) );
104 
105  connect( d->mMultiAgendaView, SIGNAL(toggleAlarmSignal(Akonadi::Item)),
106  SIGNAL(toggleAlarmSignal(Akonadi::Item)) );
107 
108  connect( d->mMultiAgendaView, SIGNAL(toggleTodoCompletedSignal(Akonadi::Item)),
109  SIGNAL(toggleTodoCompletedSignal(Akonadi::Item)) );
110 
111  connect( d->mMultiAgendaView, SIGNAL(copyIncidenceToResourceSignal(Akonadi::Item,QString)),
112  SIGNAL(copyIncidenceToResourceSignal(Akonadi::Item,QString)) );
113 
114  connect( d->mMultiAgendaView, SIGNAL(moveIncidenceToResourceSignal(Akonadi::Item,QString)),
115  SIGNAL(moveIncidenceToResourceSignal(Akonadi::Item,QString)) );
116 
117  connect( d->mMultiAgendaView, SIGNAL(dissociateOccurrencesSignal(Akonadi::Item,QDate)),
118  SIGNAL(dissociateOccurrencesSignal(Akonadi::Item,QDate)) );
119 
120  connect( d->mMultiAgendaView, SIGNAL(newEventSignal()),
121  SIGNAL(newEventSignal()) );
122 
123  connect( d->mMultiAgendaView, SIGNAL(newEventSignal(QDate)),
124  SIGNAL(newEventSignal(QDate)) );
125 
126  connect( d->mMultiAgendaView, SIGNAL(newEventSignal(QDateTime)),
127  SIGNAL(newEventSignal(QDateTime)) );
128 
129  connect( d->mMultiAgendaView, SIGNAL(newEventSignal(QDateTime,QDateTime)),
130  SIGNAL(newEventSignal(QDateTime,QDateTime)) );
131 
132  connect( d->mMultiAgendaView, SIGNAL(newTodoSignal(QDate)),
133  SIGNAL(newTodoSignal(QDate)) );
134 
135  connect( d->mMultiAgendaView, SIGNAL(newSubTodoSignal(Akonadi::Item)),
136  SIGNAL(newSubTodoSignal(Akonadi::Item)) );
137 
138  connect( d->mMultiAgendaView, SIGNAL(newJournalSignal(QDate)),
139  SIGNAL(newJournalSignal(QDate)) );
140 
141 }
142 
143 void MultiAgendaView::setCalendar( const Akonadi::ETMCalendar::Ptr &cal )
144 {
145  d->mMultiAgendaView->setCalendar( cal );
146  d->mPopup->setCalendar( cal );
147 }
148 
149 MultiAgendaView::~MultiAgendaView()
150 {
151  delete d;
152 }
153 
154 Akonadi::Item::List MultiAgendaView::selectedIncidences()
155 {
156  return d->mMultiAgendaView->selectedIncidences();
157 }
158 
159 KCalCore::DateList MultiAgendaView::selectedIncidenceDates()
160 {
161  return d->mMultiAgendaView->selectedIncidenceDates();
162 }
163 
164 int MultiAgendaView::currentDateCount() const
165 {
166  return d->mMultiAgendaView->currentDateCount();
167 }
168 
169 void MultiAgendaView::showDates( const QDate &start, const QDate &end, const QDate & )
170 {
171  d->mMultiAgendaView->showDates( start, end );
172 }
173 
174 void MultiAgendaView::showIncidences( const Akonadi::Item::List &incidenceList, const QDate &date )
175 {
176  d->mMultiAgendaView->showIncidences( incidenceList, date );
177 }
178 
179 void MultiAgendaView::updateView()
180 {
181  d->mMultiAgendaView->updateView();
182 }
183 
184 Akonadi::Collection::Id MultiAgendaView::collectionId() const
185 {
186  return d->mMultiAgendaView->collectionId();
187 }
188 
189 void MultiAgendaView::changeIncidenceDisplay( const Akonadi::Item &, Akonadi::IncidenceChanger::ChangeType )
190 {
191 }
192 
193 int MultiAgendaView::maxDatesHint() const
194 {
195  return EventViews::AgendaView::MAX_DAY_COUNT;
196 }
197 
198 void MultiAgendaView::setDateRange( const KDateTime &start, const KDateTime &end, const QDate & )
199 {
200  d->mMultiAgendaView->setDateRange( start, end );
201 }
202 
203 bool MultiAgendaView::eventDurationHint( QDateTime &startDt, QDateTime &endDt,
204  bool &allDay )
205 {
206  return d->mMultiAgendaView->eventDurationHint( startDt, endDt, allDay );
207 }
208 
209 void MultiAgendaView::setIncidenceChanger( Akonadi::IncidenceChanger *changer )
210 {
211  d->mMultiAgendaView->setIncidenceChanger( changer );
212 }
213 
214 void MultiAgendaView::updateConfig()
215 {
216  d->mMultiAgendaView->updateConfig();
217 }
218 
219 void MultiAgendaView::setChanges( EventViews::EventView::Changes changes )
220 {
221  // Only ConfigChanged and FilterChanged should go from korg->AgendaView
222  // All other values are already detected inside AgendaView.
223  // We could just pass "changes", but korganizer does a very bad job at
224  // determining what changed, for example if you move an incidence
225  // the BaseView::setDateRange(...) is called causing DatesChanged
226  // flag to be on, when no dates changed.
227  EventViews::EventView::Changes c;
228  if ( changes.testFlag( EventViews::EventView::ConfigChanged ) ) {
229  c = EventViews::EventView::ConfigChanged;
230  }
231 
232  if ( changes.testFlag( EventViews::EventView::FilterChanged ) ) {
233  c |= EventViews::EventView::FilterChanged;
234  }
235 
236  d->mMultiAgendaView->setChanges( c | d->mMultiAgendaView->changes() );
237 }
238 
239 bool MultiAgendaView::hasConfigurationDialog() const
240 {
241  // It has. And it's implemented in korg, not libeventviews.
242  return true;
243 }
244 
245 void MultiAgendaView::showConfigurationDialog( QWidget *parent )
246 {
247  QPointer<MultiAgendaViewConfigDialog> dlg(
248  new MultiAgendaViewConfigDialog( d->mMultiAgendaView->calendar()->entityTreeModel(),
249  parent ) );
250 
251  dlg->setUseCustomColumns( d->mMultiAgendaView->customColumnSetupUsed() );
252  dlg->setNumberOfColumns( d->mMultiAgendaView->customNumberOfColumns() );
253 
254  QVector<KCheckableProxyModel*> models = d->mMultiAgendaView->collectionSelectionModels();
255  for ( int i = 0; i < models.size(); ++i ) {
256  dlg->setSelectionModel( i, models[i] );
257  }
258 
259  QVector<QString> customColumnTitles = d->mMultiAgendaView->customColumnTitles();
260  for ( int i = 0; i < customColumnTitles.size(); ++i ) {
261  dlg->setColumnTitle( i, customColumnTitles[i] );
262  }
263 
264  if ( dlg->exec() == QDialog::Accepted ) {
265  d->mMultiAgendaView->customCollectionsChanged( dlg );
266  }
267 
268  delete dlg;
269 }
270 
271 KCheckableProxyModel *MultiAgendaView::takeCustomCollectionSelectionProxyModel()
272 {
273  return d->mMultiAgendaView->takeCustomCollectionSelectionProxyModel();
274 }
275 
276 void MultiAgendaView::setCustomCollectionSelectionProxyModel( KCheckableProxyModel *model )
277 {
278  d->mMultiAgendaView->setCustomCollectionSelectionProxyModel( model );
279 }
280 
281 class MultiAgendaViewConfigDialog::Private
282 {
283  public:
284  MultiAgendaViewConfigDialog *const q;
285  explicit Private( QAbstractItemModel *base, MultiAgendaViewConfigDialog *qq )
286  : q( qq ), baseModel( base ), currentColumn( 0 )
287  {}
288 
289  ~Private() { qDeleteAll( newlyCreated ); }
290 
291  void setUpColumns( int n );
292  AkonadiCollectionView *createView( KCheckableProxyModel *model );
293  AkonadiCollectionView *view( int index ) const;
294  QVector<KCheckableProxyModel*> newlyCreated;
295  QVector<KCheckableProxyModel*> selections;
296  QVector<QString> titles;
297  Ui::MultiAgendaViewConfigWidget ui;
298  QStandardItemModel listModel;
299  QAbstractItemModel *baseModel;
300  int currentColumn;
301 };
302 
303 void MultiAgendaView::restoreConfig( const KConfigGroup &configGroup )
304 {
305  d->mMultiAgendaView->restoreConfig( configGroup );
306 }
307 
308 void MultiAgendaView::saveConfig( KConfigGroup &configGroup )
309 {
310  d->mMultiAgendaView->saveConfig( configGroup );
311 }
312 
313 MultiAgendaViewConfigDialog::MultiAgendaViewConfigDialog( QAbstractItemModel *baseModel,
314  QWidget *parent )
315  : KDialog( parent ), d( new Private( baseModel, this ) )
316 {
317  setWindowTitle( i18n( "Configure Side-By-Side View" ) );
318  QWidget *widget = new QWidget;
319  d->ui.setupUi( widget );
320  setMainWidget( widget );
321  d->ui.columnList->setModel( &d->listModel );
322  connect( d->ui.columnList->selectionModel(),
323  SIGNAL(currentChanged(QModelIndex,QModelIndex)),
324  this, SLOT(currentChanged(QModelIndex)) );
325  connect( d->ui.useCustomRB, SIGNAL(toggled(bool)),
326  this, SLOT(useCustomToggled(bool)) );
327  connect( d->ui.columnNumberSB, SIGNAL(valueChanged(int)),
328  this, SLOT(numberOfColumnsChanged(int)) );
329  connect( d->ui.titleLE, SIGNAL(textEdited(QString)),
330  this, SLOT(titleEdited(QString)) );
331  d->setUpColumns( numberOfColumns() );
332  useCustomToggled( false );
333 }
334 
335 void MultiAgendaViewConfigDialog::currentChanged( const QModelIndex &index )
336 {
337  if ( !index.isValid() ) {
338  return;
339  }
340 
341  const int idx = index.data( Qt::UserRole ).toInt();
342  d->ui.titleLE->setText( index.data( Qt::DisplayRole ).toString() );
343  d->ui.selectionStack->setCurrentIndex( idx );
344  d->currentColumn = idx;
345 }
346 
347 void MultiAgendaViewConfigDialog::useCustomToggled( bool on )
348 {
349  d->ui.columnList->setEnabled( on );
350  d->ui.columnNumberLabel->setEnabled( on );
351  d->ui.columnNumberSB->setEnabled( on );
352  d->ui.selectedCalendarsLabel->setEnabled( on );
353  d->ui.selectionStack->setEnabled( on );
354  d->ui.titleLabel->setEnabled( on );
355  d->ui.titleLE->setEnabled( on );
356  // this explicit enabling/disabling of the ETV is necessary, as the stack
357  // widget state is not propagated to the collection views. pprobably because
358  // the Akonadi error overlays enable/disable the ETV explicitly and thus
359  // override the parent-child relationship?
360  for ( int i = 0; i < d->ui.selectionStack->count(); ++i ) {
361  d->view( i )->view()->setEnabled( on );
362  }
363 }
364 
365 AkonadiCollectionView *MultiAgendaViewConfigDialog::Private::createView(
366  KCheckableProxyModel *model )
367 {
368  AkonadiCollectionView *cview = new AkonadiCollectionView( 0, false, q );
369  cview->setSizePolicy( QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding );
370  cview->setCollectionSelectionProxyModel( model );
371  return cview;
372 }
373 
374 void MultiAgendaViewConfigDialog::Private::setUpColumns( int n )
375 {
376  Q_ASSERT( n > 0 );
377  const int oldN = selections.size();
378  if ( oldN == n ) {
379  return;
380  }
381 
382  if ( n < oldN ) {
383  for ( int i = oldN - 1; i >= n; --i ) {
384  QWidget *w = ui.selectionStack->widget( i );
385  ui.selectionStack->removeWidget( w );
386  delete w;
387  qDeleteAll( listModel.takeRow( i ) );
388  KCheckableProxyModel *const m = selections[i];
389  selections.remove( i );
390  const int pos = newlyCreated.indexOf( m );
391  if ( pos != -1 ) {
392  delete m;
393  newlyCreated.remove( pos );
394  }
395  }
396  } else {
397  selections.resize( n );
398  for ( int i = oldN; i < n; ++i ) {
399  QStandardItem *item = new QStandardItem;
400  item->setEditable( false );
401  if ( titles.count() <= i ) {
402  titles.resize( i + 1 );
403  titles[i] = generateColumnLabel( i );
404  }
405  item->setText( titles[i] );
406  item->setData( i, Qt::UserRole );
407  listModel.appendRow( item );
408 
409  QSortFilterProxyModel *sortProxy = new QSortFilterProxyModel;
410  sortProxy->setDynamicSortFilter( true );
411  sortProxy->setSourceModel( baseModel );
412 
413  KColumnFilterProxyModel *columnFilterProxy = new KColumnFilterProxyModel( sortProxy );
414  columnFilterProxy->setVisibleColumn( Akonadi::ETMCalendar::CollectionTitle );
415  columnFilterProxy->setSourceModel( sortProxy );
416 
417  QItemSelectionModel *qsm = new QItemSelectionModel( columnFilterProxy, columnFilterProxy );
418 
419  KCheckableProxyModel *selection = new KCheckableProxyModel;
420  selection->setSourceModel( columnFilterProxy );
421  selection->setSelectionModel( qsm );
422 
423  AkonadiCollectionView *cview = createView( selection );
424  const int idx = ui.selectionStack->addWidget( cview );
425  Q_ASSERT( i == idx );
426  Q_UNUSED( idx );
427  selections[i] = selection;
428  newlyCreated.push_back( selection );
429  }
430  }
431 }
432 
433 bool MultiAgendaViewConfigDialog::useCustomColumns() const
434 {
435  return d->ui.useCustomRB->isChecked();
436 }
437 
438 void MultiAgendaViewConfigDialog::setUseCustomColumns( bool custom )
439 {
440  if ( custom ) {
441  d->ui.useCustomRB->setChecked( true );
442  } else {
443  d->ui.useDefaultRB->setChecked( true );
444  }
445 }
446 
447 int MultiAgendaViewConfigDialog::numberOfColumns() const
448 {
449  return d->ui.columnNumberSB->value();
450 }
451 
452 void MultiAgendaViewConfigDialog::setNumberOfColumns( int n )
453 {
454  d->ui.columnNumberSB->setValue( n );
455  d->setUpColumns( n );
456 }
457 
458 KCheckableProxyModel *MultiAgendaViewConfigDialog::takeSelectionModel( int column )
459 {
460  if ( column < 0 || column >= d->selections.size() ) {
461  return 0;
462  }
463 
464  KCheckableProxyModel *const m = d->selections[column];
465  d->newlyCreated.erase( std::remove( d->newlyCreated.begin(),
466  d->newlyCreated.end(), m ),
467  d->newlyCreated.end() );
468  return m;
469 }
470 
471 AkonadiCollectionView *MultiAgendaViewConfigDialog::Private::view( int index ) const
472 {
473  return qobject_cast<AkonadiCollectionView*>( ui.selectionStack->widget( index ) );
474 }
475 
476 void MultiAgendaViewConfigDialog::setSelectionModel( int column, KCheckableProxyModel *model )
477 {
478  Q_ASSERT( column >= 0 && column < d->selections.size() );
479 
480  KCheckableProxyModel *const m = d->selections[column];
481  if ( m == model ) {
482  return;
483  }
484 
485  AkonadiCollectionView *cview = d->view( column );
486  Q_ASSERT( cview );
487  cview->setCollectionSelectionProxyModel( model );
488 
489  if ( d->newlyCreated.contains( m ) ) {
490  d->newlyCreated.erase( std::remove( d->newlyCreated.begin(),
491  d->newlyCreated.end(), m ),
492  d->newlyCreated.end() );
493  delete m;
494  }
495 
496  d->selections[column] = model;
497 }
498 
499 void MultiAgendaViewConfigDialog::titleEdited( const QString &text )
500 {
501  d->titles[d->currentColumn] = text;
502  d->listModel.item( d->currentColumn )->setText( text );
503 }
504 
505 void MultiAgendaViewConfigDialog::numberOfColumnsChanged( int number )
506 {
507  d->setUpColumns( number );
508 }
509 
510 QString MultiAgendaViewConfigDialog::columnTitle( int column ) const
511 {
512  Q_ASSERT( column >= 0 );
513  return column >= d->titles.count() ? QString() : d->titles[column];
514 }
515 
516 void MultiAgendaViewConfigDialog::setColumnTitle( int column, const QString &title )
517 {
518  Q_ASSERT( column >= 0 );
519  d->titles.resize( qMax( d->titles.size(), column + 1 ) );
520  d->titles[column] = title;
521  if ( QStandardItem *const item = d->listModel.item( column ) ) {
522  item->setText( title );
523  }
524  //TODO update LE if item is selected
525 }
526 
527 void MultiAgendaViewConfigDialog::accept()
528 {
529  d->newlyCreated.clear();
530  KDialog::accept();
531 }
532 
533 MultiAgendaViewConfigDialog::~MultiAgendaViewConfigDialog()
534 {
535  delete d;
536 }
537 
538 #include "multiagendaview.moc"
KOrg::MultiAgendaView::~MultiAgendaView
~MultiAgendaView()
Definition: multiagendaview.cpp:149
KOrg::MultiAgendaViewConfigDialog::useCustomColumns
bool useCustomColumns() const
Definition: multiagendaview.cpp:433
KOrg::MultiAgendaView::currentDateCount
int currentDateCount() const
Returns the number of currently shown dates.
Definition: multiagendaview.cpp:164
KOrg::BaseView::incidenceSelected
void incidenceSelected(const Akonadi::Item &, const QDate)
KCheckableProxyModel
KOrg::MultiAgendaView::setCalendar
void setCalendar(const Akonadi::ETMCalendar::Ptr &cal)
Definition: multiagendaview.cpp:143
KOrg::MultiAgendaView::showIncidences
void showIncidences(const Akonadi::Item::List &incidenceList, const QDate &date)
Definition: multiagendaview.cpp:174
KOrg::MultiAgendaView::collectionId
Akonadi::Collection::Id collectionId() const
Definition: multiagendaview.cpp:184
KOrg::MultiAgendaView::showDates
void showDates(const QDate &start, const QDate &end, const QDate &preferredMonth=QDate())
Definition: multiagendaview.cpp:169
KOrg::MultiAgendaView
Shows one agenda for every resource side-by-side.
Definition: multiagendaview.h:37
KOrg::MultiAgendaView::selectedIncidences
Akonadi::Item::List selectedIncidences()
Definition: multiagendaview.cpp:154
KOrg::MultiAgendaView::hasConfigurationDialog
bool hasConfigurationDialog() const
reimplemented from KOrg::BaseView
Definition: multiagendaview.cpp:239
KOrg::MultiAgendaViewConfigDialog::~MultiAgendaViewConfigDialog
~MultiAgendaViewConfigDialog()
Definition: multiagendaview.cpp:533
KOrg::MultiAgendaView::restoreConfig
void restoreConfig(const KConfigGroup &configGroup)
reads the view configuration.
Definition: multiagendaview.cpp:303
QWidget
KOrg::BaseView::toggleAlarmSignal
void toggleAlarmSignal(const Akonadi::Item &)
instructs the receiver to toggle the alarms of the Incidence.
KOrg::MultiAgendaViewConfigDialog::setUseCustomColumns
void setUseCustomColumns(bool)
Definition: multiagendaview.cpp:438
KDialog
KOEventView
KOEventView is the abstract base class from which all other calendar views for event data are derived...
Definition: koeventview.h:54
KOrg::MultiAgendaView::changeIncidenceDisplay
void changeIncidenceDisplay(const Akonadi::Item &, Akonadi::IncidenceChanger::ChangeType)
Definition: multiagendaview.cpp:189
KOrg::MultiAgendaView::saveConfig
void saveConfig(KConfigGroup &configGroup)
writes out the view configuration.
Definition: multiagendaview.cpp:308
KOrg::BaseView::newTodoSignal
void newTodoSignal(const QDate &)
KOrg::MultiAgendaView::takeCustomCollectionSelectionProxyModel
KCheckableProxyModel * takeCustomCollectionSelectionProxyModel()
Definition: multiagendaview.cpp:271
KOrg::MultiAgendaViewConfigDialog::columnTitle
QString columnTitle(int column) const
Definition: multiagendaview.cpp:510
akonadicollectionview.h
KOrg::MultiAgendaViewConfigDialog::MultiAgendaViewConfigDialog
MultiAgendaViewConfigDialog(QAbstractItemModel *baseModel, QWidget *parent=0)
Definition: multiagendaview.cpp:313
KOEventView::datesSelected
void datesSelected(const KCalCore::DateList datelist)
When the view changes the dates that are selected in one way or another, this signal is emitted...
KOrg::MultiAgendaView::selectedIncidenceDates
KCalCore::DateList selectedIncidenceDates()
Returns a list of the dates of selected events.
Definition: multiagendaview.cpp:159
KOrg::BaseView::dissociateOccurrencesSignal
void dissociateOccurrencesSignal(const Akonadi::Item &, const QDate &)
Dissociate from a recurring incidence the occurrence on the given date to a new incidence or dissocia...
koprefs.h
KOrg::MultiAgendaView::updateView
void updateView()
Definition: multiagendaview.cpp:179
KOrg::MultiAgendaView::maxDatesHint
int maxDatesHint() const
provides a hint back to the caller on the maximum number of dates that the view supports.
Definition: multiagendaview.cpp:193
KOrg::BaseView::editIncidenceSignal
void editIncidenceSignal(const Akonadi::Item &)
instructs the receiver to begin editing the incidence specified in some manner.
koeventpopupmenu.h
KOrg::BaseView::showIncidenceSignal
void showIncidenceSignal(const Akonadi::Item &)
instructs the receiver to show the incidence in read-only mode.
KOrg::MultiAgendaView::eventDurationHint
bool eventDurationHint(QDateTime &startDt, QDateTime &endDt, bool &allDay)
Sets the default start/end date/time for new events.
Definition: multiagendaview.cpp:203
KOrg::BaseView::copyIncidenceSignal
void copyIncidenceSignal(const Akonadi::Item &)
instructs the receiver to copy the incidence
KOrg::BaseView::newSubTodoSignal
void newSubTodoSignal(const Akonadi::Item &)
KOrg::BaseView::cutIncidenceSignal
void cutIncidenceSignal(const Akonadi::Item &)
instructs the receiver to cut the Incidence
KOrg::MultiAgendaViewConfigDialog::setNumberOfColumns
void setNumberOfColumns(int n)
Definition: multiagendaview.cpp:452
KOrg::MultiAgendaViewConfigDialog
Definition: multiagendaview.h:90
KOrg::BaseView::toggleTodoCompletedSignal
void toggleTodoCompletedSignal(const Akonadi::Item &)
instructs the receiver to toggle the completion state of the Incidence (which must be a Todo type)...
KOrg::MultiAgendaView::showConfigurationDialog
void showConfigurationDialog(QWidget *parent)
reimplemented from KOrg::BaseView
Definition: multiagendaview.cpp:245
KOrg::BaseView::deleteIncidenceSignal
void deleteIncidenceSignal(const Akonadi::Item &)
instructs the receiver to delete the Incidence in some manner; some possibilities include automatical...
KOrg::BaseView::moveIncidenceToResourceSignal
void moveIncidenceToResourceSignal(const Akonadi::Item &, const QString &)
Move the incidence to the specified resource.
KOEventPopupMenu
Context menu for event views with standard event actions.
Definition: koeventpopupmenu.h:38
KOrg::MultiAgendaView::setDateRange
void setDateRange(const KDateTime &start, const KDateTime &end, const QDate &preferredMonth=QDate())
Show incidences for the given date range.
Definition: multiagendaview.cpp:198
KOrg::MultiAgendaViewConfigDialog::setSelectionModel
void setSelectionModel(int column, KCheckableProxyModel *model)
Definition: multiagendaview.cpp:476
AkonadiCollectionView
This class provides a view of calendar resources.
Definition: akonadicollectionview.h:67
KOrg::BaseView::newEventSignal
void newEventSignal()
instructs the receiver to create a new event in given collection.
generateColumnLabel
static QString generateColumnLabel(int c)
Definition: multiagendaview.cpp:44
KOrg::MultiAgendaViewConfigDialog::numberOfColumns
int numberOfColumns() const
Definition: multiagendaview.cpp:447
KOPrefs::instance
static KOPrefs * instance()
Get instance of KOPrefs.
Definition: koprefs.cpp:68
KOrg::MultiAgendaViewConfigDialog::takeSelectionModel
KCheckableProxyModel * takeSelectionModel(int column)
Definition: multiagendaview.cpp:458
multiagendaview.h
KOrg::MultiAgendaView::setChanges
void setChanges(EventViews::EventView::Changes changes)
Notifies the view that there are pending changes so a redraw is needed.
Definition: multiagendaview.cpp:219
KOrg::MultiAgendaView::setCustomCollectionSelectionProxyModel
void setCustomCollectionSelectionProxyModel(KCheckableProxyModel *model)
Definition: multiagendaview.cpp:276
AkonadiCollectionView::setCollectionSelectionProxyModel
void setCollectionSelectionProxyModel(KCheckableProxyModel *)
Definition: akonadicollectionview.cpp:409
KOrg::BaseView::copyIncidenceToResourceSignal
void copyIncidenceToResourceSignal(const Akonadi::Item &, const QString &)
Copy the incidence to the specified resource.
KOrg::BaseView::newJournalSignal
void newJournalSignal(const QDate &)
KOEventView::shiftedEvent
void shiftedEvent(const QDate &olddate, const QDate &ewdate)
Emitted when an event is moved using the mouse in an agenda view (week / month).
KOrg::MultiAgendaView::updateConfig
void updateConfig()
Definition: multiagendaview.cpp:214
KOrg::MultiAgendaViewConfigDialog::accept
void accept()
reimplemented from QDialog
Definition: multiagendaview.cpp:527
KOrg::MultiAgendaView::setIncidenceChanger
void setIncidenceChanger(Akonadi::IncidenceChanger *changer)
Definition: multiagendaview.cpp:209
KOrg::BaseView::pasteIncidenceSignal
void pasteIncidenceSignal()
instructs the receiver to paste the incidence
KOEventView::showNewEventPopup
virtual void showNewEventPopup()
Definition: koeventview.cpp:151
KOrg::MultiAgendaViewConfigDialog::setColumnTitle
void setColumnTitle(int column, const QString &title)
Definition: multiagendaview.cpp:516
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