• 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
  • agendaview
koagendaview.cpp
Go to the documentation of this file.
1 /*
2  This file is part of KOrganizer.
3  Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org>
4  Copyright (C) 2003-2004 Reinhold Kainhofer <reinhold@kainhofer.com>
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  As a special exception, permission is given to link this program
21  with any edition of Qt, and distribute the resulting executable,
22  without including the source code for Qt in the source distribution.
23 */
24 
25 #include "koagendaview.h"
26 #include "koeventpopupmenu.h"
27 #include "koprefs.h"
28 
29 #include <calendarviews/agenda/agendaview.h>
30 
31 #include <QHBoxLayout>
32 
33 class KOAgendaView::Private
34 {
35  public:
36  Private( bool isSideBySide, KOAgendaView *parent ) : q( parent )
37  {
38  mAgendaView = new EventViews::AgendaView( KOPrefs::instance()->eventViewsPreferences(),
39  QDate::currentDate(),
40  QDate::currentDate(),
41  true,
42  isSideBySide,
43  parent );
44  mPopup = q->eventPopup();
45  }
46 
47  ~Private()
48  {
49  delete mAgendaView;
50  delete mPopup;
51  }
52 
53  EventViews::AgendaView *mAgendaView;
54  KOEventPopupMenu *mPopup;
55 
56  private:
57  KOAgendaView * const q;
58 };
59 
60 KOAgendaView::KOAgendaView( QWidget *parent, bool isSideBySide ) :
61  KOEventView( parent ), d( new Private( isSideBySide, this ) )
62 {
63  QHBoxLayout *layout = new QHBoxLayout( this );
64  layout->setMargin( 0 );
65  layout->addWidget( d->mAgendaView );
66 
67  connect( d->mAgendaView, SIGNAL(zoomViewHorizontally(QDate,int)),
68  SIGNAL(zoomViewHorizontally(QDate,int)) );
69 
70  connect( d->mAgendaView, SIGNAL(timeSpanSelectionChanged()),
71  SIGNAL(timeSpanSelectionChanged()) );
72 
73  connect( d->mAgendaView, SIGNAL(showIncidencePopupSignal(Akonadi::Item,QDate)),
74  d->mPopup, SLOT(showIncidencePopup(Akonadi::Item,QDate)) );
75 
76  connect( d->mAgendaView, SIGNAL(showNewEventPopupSignal()),
77  SLOT(showNewEventPopup()) );
78 
79  connect( d->mAgendaView, SIGNAL(datesSelected(KCalCore::DateList)),
80  SIGNAL(datesSelected(KCalCore::DateList)) );
81 
82  connect( d->mAgendaView, SIGNAL(shiftedEvent(QDate,QDate)),
83  SIGNAL(shiftedEvent(QDate,QDate)) );
84 
85  connect( d->mAgendaView, SIGNAL(incidenceSelected(Akonadi::Item,QDate)),
86  SIGNAL(incidenceSelected(Akonadi::Item,QDate)) );
87 
88  connect( d->mAgendaView, SIGNAL(showIncidenceSignal(Akonadi::Item)),
89  SIGNAL(showIncidenceSignal(Akonadi::Item)) );
90 
91  connect( d->mAgendaView, SIGNAL(editIncidenceSignal(Akonadi::Item)),
92  SIGNAL(editIncidenceSignal(Akonadi::Item)) );
93 
94  connect( d->mAgendaView, SIGNAL(deleteIncidenceSignal(Akonadi::Item)),
95  SIGNAL(deleteIncidenceSignal(Akonadi::Item)) );
96 
97  connect( d->mAgendaView, SIGNAL(cutIncidenceSignal(Akonadi::Item)),
98  SIGNAL(cutIncidenceSignal(Akonadi::Item)) );
99 
100  connect( d->mAgendaView, SIGNAL(copyIncidenceSignal(Akonadi::Item)),
101  SIGNAL(copyIncidenceSignal(Akonadi::Item)) );
102 
103  connect( d->mAgendaView, SIGNAL(pasteIncidenceSignal()),
104  SIGNAL(pasteIncidenceSignal()) );
105 
106  connect( d->mAgendaView, SIGNAL(toggleAlarmSignal(Akonadi::Item)),
107  SIGNAL(toggleAlarmSignal(Akonadi::Item)) );
108 
109  connect( d->mAgendaView, SIGNAL(toggleTodoCompletedSignal(Akonadi::Item)),
110  SIGNAL(toggleTodoCompletedSignal(Akonadi::Item)) );
111 
112  connect( d->mAgendaView, SIGNAL(copyIncidenceToResourceSignal(Akonadi::Item,QString)),
113  SIGNAL(copyIncidenceToResourceSignal(Akonadi::Item,QString)) );
114 
115  connect( d->mAgendaView, SIGNAL(moveIncidenceToResourceSignal(Akonadi::Item,QString)),
116  SIGNAL(moveIncidenceToResourceSignal(Akonadi::Item,QString)) );
117 
118  connect( d->mAgendaView, SIGNAL(dissociateOccurrencesSignal(Akonadi::Item,QDate)),
119  SIGNAL(dissociateOccurrencesSignal(Akonadi::Item,QDate)) );
120 
121  connect( d->mAgendaView, SIGNAL(newEventSignal()),
122  SIGNAL(newEventSignal()) );
123 
124  connect( d->mAgendaView, SIGNAL(newEventSignal(QDate)),
125  SIGNAL(newEventSignal(QDate)) );
126 
127  connect( d->mAgendaView, SIGNAL(newEventSignal(QDateTime)),
128  SIGNAL(newEventSignal(QDateTime)) );
129 
130  connect( d->mAgendaView, SIGNAL(newEventSignal(QDateTime,QDateTime)),
131  SIGNAL(newEventSignal(QDateTime,QDateTime)) );
132 
133  connect( d->mAgendaView, SIGNAL(newTodoSignal(QDate)),
134  SIGNAL(newTodoSignal(QDate)) );
135 
136  connect( d->mAgendaView, SIGNAL(newSubTodoSignal(Akonadi::Item)),
137  SIGNAL(newSubTodoSignal(Akonadi::Item)) );
138 
139  connect( d->mAgendaView, SIGNAL(newJournalSignal(QDate)),
140  SIGNAL(newJournalSignal(QDate)) );
141 
142  d->mAgendaView->show();
143 }
144 
145 KOAgendaView::~KOAgendaView()
146 {
147  delete d;
148 }
149 
150 void KOAgendaView::setCalendar( const Akonadi::ETMCalendar::Ptr &cal )
151 {
152  KOEventView::setCalendar( cal );
153  d->mPopup->setCalendar( cal );
154  d->mAgendaView->setCalendar( cal );
155 }
156 
157 void KOAgendaView::zoomInVertically()
158 {
159  d->mAgendaView->zoomInVertically();
160 }
161 
162 void KOAgendaView::zoomOutVertically()
163 {
164  d->mAgendaView->zoomOutVertically();
165 }
166 
167 void KOAgendaView::zoomInHorizontally( const QDate &date )
168 {
169  d->mAgendaView->zoomInHorizontally( date );
170 }
171 
172 void KOAgendaView::zoomOutHorizontally( const QDate &date )
173 {
174  d->mAgendaView->zoomOutHorizontally( date );
175 }
176 
177 void KOAgendaView::zoomView( const int delta, const QPoint &pos, const Qt::Orientation orient )
178 {
179  d->mAgendaView->zoomView( delta, pos, orient );
180 }
181 
182 void KOAgendaView::enableAgendaUpdate( bool enable )
183 {
184  d->mAgendaView->enableAgendaUpdate( enable );
185 }
186 
187 int KOAgendaView::maxDatesHint() const
188 {
189  // Not sure about the max number of events, so return 0 for now.
190  return 0;
191 }
192 
193 int KOAgendaView::currentDateCount() const
194 {
195  return d->mAgendaView->currentDateCount();
196 }
197 
198 Akonadi::Item::List KOAgendaView::selectedIncidences()
199 {
200  return d->mAgendaView->selectedIncidences();
201 }
202 
203 DateList KOAgendaView::selectedIncidenceDates()
204 {
205  return d->mAgendaView->selectedIncidenceDates();
206 }
207 
208 bool KOAgendaView::eventDurationHint( QDateTime &startDt, QDateTime &endDt, bool &allDay )
209 {
210  return d->mAgendaView->eventDurationHint( startDt, endDt, allDay );
211 }
212 
214 bool KOAgendaView::selectedIsSingleCell()
215 {
216  return d->mAgendaView->selectedIsSingleCell();
217 }
218 
219 void KOAgendaView::updateView()
220 {
221  d->mAgendaView->updateView();
222 }
223 
224 void KOAgendaView::updateConfig()
225 {
226  d->mAgendaView->updateConfig();
227 }
228 
229 void KOAgendaView::showDates( const QDate &start, const QDate &end, const QDate & )
230 {
231  d->mAgendaView->showDates( start, end );
232 }
233 
234 void KOAgendaView::showIncidences( const Akonadi::Item::List &incidences, const QDate &date )
235 {
236  d->mAgendaView->showIncidences( incidences, date );
237 }
238 
239 void KOAgendaView::changeIncidenceDisplayAdded( const Akonadi::Item & )
240 {
241  // Do nothing, EventViews::AgendaView knows when items change
242 }
243 
244 void KOAgendaView::changeIncidenceDisplay( const Akonadi::Item &, Akonadi::IncidenceChanger::ChangeType )
245 {
246  // Do nothing, EventViews::AgendaView knows when items change
247 }
248 
249 CalPrinter::PrintType KOAgendaView::printType() const
250 {
251  // If up to three days are selected, use day style, otherwise week
252  if ( currentDateCount() <= 3 ) {
253  return CalPrinter::Day;
254  } else {
255  return CalPrinter::Week;
256  }
257 }
258 
259 void KOAgendaView::readSettings()
260 {
261  d->mAgendaView->readSettings();
262 }
263 
264 void KOAgendaView::readSettings( KConfig *config )
265 {
266  d->mAgendaView->readSettings( config );
267 }
268 
269 void KOAgendaView::writeSettings( KConfig *config )
270 {
271  d->mAgendaView->writeSettings( config );
272 }
273 
274 void KOAgendaView::clearSelection()
275 {
276  d->mAgendaView->clearSelection();
277 }
278 
279 void KOAgendaView::deleteSelectedDateTime()
280 {
281  d->mAgendaView->deleteSelectedDateTime();
282 }
283 
284 void KOAgendaView::setIncidenceChanger( Akonadi::IncidenceChanger *changer )
285 {
286  d->mAgendaView->setIncidenceChanger( changer );
287 }
288 
289 QDateTime KOAgendaView::selectionStart()
290 {
291  return d->mAgendaView->selectionStart();
292 }
293 
294 QDateTime KOAgendaView::selectionEnd()
295 {
296  return d->mAgendaView->selectionEnd();
297 }
298 
299 bool KOAgendaView::selectedIsAllDay()
300 {
301  return d->mAgendaView->selectedIsAllDay();
302 }
303 
304 void KOAgendaView::setTypeAheadReceiver( QObject *o )
305 {
306  d->mAgendaView->setTypeAheadReceiver( o );
307 }
308 
309 void KOAgendaView::setChanges( EventViews::EventView::Changes changes )
310 {
311  // Only ConfigChanged and FilterChanged should go from korg->AgendaView
312  // All other values are already detected inside AgendaView.
313  // We could just pass "changes", but korganizer does a very bad job at
314  // determining what changed, for example if you move an incidence
315  // the BaseView::setDateRange(...) is called causing DatesChanged
316  // flag to be on, when no dates changed.
317  EventViews::EventView::Changes c;
318  if ( changes.testFlag( EventViews::EventView::ConfigChanged ) ) {
319  c = EventViews::EventView::ConfigChanged;
320  }
321 
322  if ( changes.testFlag( EventViews::EventView::FilterChanged ) ) {
323  c |= EventViews::EventView::FilterChanged;
324  }
325 
326  d->mAgendaView->setChanges( c | d->mAgendaView->changes() );
327 }
328 
329 void KOAgendaView::setDateRange( const KDateTime &start, const KDateTime &end, const QDate & )
330 {
331  d->mAgendaView->setDateRange( start, end );
332 }
333 
334 #include "koagendaview.moc"
koagendaview.h
KOrg::BaseView::incidenceSelected
void incidenceSelected(const Akonadi::Item &, const QDate)
KOAgendaView::writeSettings
void writeSettings(KConfig *)
Definition: koagendaview.cpp:269
KOAgendaView::eventDurationHint
virtual bool eventDurationHint(QDateTime &startDt, QDateTime &endDt, bool &allDay)
return the default start/end date/time for new events
Definition: koagendaview.cpp:208
KOAgendaView::zoomViewHorizontally
void zoomViewHorizontally(const QDate &, int count)
KOAgendaView::selectedIncidences
virtual Akonadi::Item::List selectedIncidences()
returns the currently selected events
Definition: koagendaview.cpp:198
KOAgendaView
KOAgendaView is the agenda-like view that displays events in a single or multi-day view...
Definition: koagendaview.h:36
KOAgendaView::updateView
virtual void updateView()
Definition: koagendaview.cpp:219
KOAgendaView::readSettings
void readSettings()
Definition: koagendaview.cpp:259
KOAgendaView::setChanges
void setChanges(EventViews::EventView::Changes changes)
Notifies the view that there are pending changes so a redraw is needed.
Definition: koagendaview.cpp:309
KOAgendaView::printType
CalPrinter::PrintType printType() const
Definition: koagendaview.cpp:249
KOAgendaView::setTypeAheadReceiver
virtual void setTypeAheadReceiver(QObject *o)
reimpl
Definition: koagendaview.cpp:304
QWidget
KOrg::BaseView::toggleAlarmSignal
void toggleAlarmSignal(const Akonadi::Item &)
instructs the receiver to toggle the alarms of the Incidence.
KOAgendaView::showIncidences
virtual void showIncidences(const Akonadi::Item::List &incidenceList, const QDate &date)
Definition: koagendaview.cpp:234
KOAgendaView::setCalendar
virtual void setCalendar(const Akonadi::ETMCalendar::Ptr &cal)
Definition: koagendaview.cpp:150
KOAgendaView::enableAgendaUpdate
void enableAgendaUpdate(bool enable)
Definition: koagendaview.cpp:182
QObject
KOEventView
KOEventView is the abstract base class from which all other calendar views for event data are derived...
Definition: koeventview.h:54
KOrg::BaseView::newTodoSignal
void newTodoSignal(const QDate &)
KOrg::BaseView::setCalendar
virtual void setCalendar(const Akonadi::ETMCalendar::Ptr &cal)
Definition: baseview.cpp:68
KOAgendaView::showDates
virtual void showDates(const QDate &start, const QDate &end, const QDate &preferredMonth=QDate())
Definition: koagendaview.cpp:229
KOAgendaView::selectedIncidenceDates
virtual KCalCore::DateList selectedIncidenceDates()
returns the currently selected incidence's dates
Definition: koagendaview.cpp:203
KOAgendaView::~KOAgendaView
virtual ~KOAgendaView()
Definition: koagendaview.cpp:145
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...
KOAgendaView::updateConfig
virtual void updateConfig()
Definition: koagendaview.cpp:224
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::BaseView::editIncidenceSignal
void editIncidenceSignal(const Akonadi::Item &)
instructs the receiver to begin editing the incidence specified in some manner.
koeventpopupmenu.h
KOAgendaView::selectedIsAllDay
bool selectedIsAllDay()
returns true if selection is for whole day
Definition: koagendaview.cpp:299
KOrg::BaseView::showIncidenceSignal
void showIncidenceSignal(const Akonadi::Item &)
instructs the receiver to show the incidence in read-only mode.
KOAgendaView::zoomInHorizontally
void zoomInHorizontally(const QDate &date=QDate())
Definition: koagendaview.cpp:167
KOAgendaView::zoomOutVertically
void zoomOutVertically()
Definition: koagendaview.cpp:162
KOrg::BaseView::copyIncidenceSignal
void copyIncidenceSignal(const Akonadi::Item &)
instructs the receiver to copy the incidence
KOrg::BaseView::newSubTodoSignal
void newSubTodoSignal(const Akonadi::Item &)
KOAgendaView::setIncidenceChanger
void setIncidenceChanger(Akonadi::IncidenceChanger *changer)
Definition: koagendaview.cpp:284
KOrg::BaseView::cutIncidenceSignal
void cutIncidenceSignal(const Akonadi::Item &)
instructs the receiver to cut the Incidence
KOrg::CalPrinterBase::Day
Definition: printplugin.h:47
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)...
KOAgendaView::clearSelection
void clearSelection()
Definition: koagendaview.cpp:274
KOrg::BaseView::deleteIncidenceSignal
void deleteIncidenceSignal(const Akonadi::Item &)
instructs the receiver to delete the Incidence in some manner; some possibilities include automatical...
KOAgendaView::deleteSelectedDateTime
void deleteSelectedDateTime()
make selected start/end invalid
Definition: koagendaview.cpp:279
KOAgendaView::currentDateCount
virtual int currentDateCount() const
Returns number of currently shown dates.
Definition: koagendaview.cpp:193
KOrg::BaseView::moveIncidenceToResourceSignal
void moveIncidenceToResourceSignal(const Akonadi::Item &, const QString &)
Move the incidence to the specified resource.
KOAgendaView::zoomInVertically
void zoomInVertically()
Definition: koagendaview.cpp:157
KOEventPopupMenu
Context menu for event views with standard event actions.
Definition: koeventpopupmenu.h:38
KOrg::CalPrinterBase::Week
Definition: printplugin.h:48
KOAgendaView::setDateRange
void setDateRange(const KDateTime &start, const KDateTime &end, const QDate &preferredMonth=QDate())
reimpl
Definition: koagendaview.cpp:329
KOAgendaView::selectedIsSingleCell
bool selectedIsSingleCell()
returns if only a single cell is selected, or a range of cells
Definition: koagendaview.cpp:214
KOAgendaView::selectionEnd
virtual QDateTime selectionEnd()
end-datetime of selection
Definition: koagendaview.cpp:294
KOrg::BaseView::newEventSignal
void newEventSignal()
instructs the receiver to create a new event in given collection.
KOAgendaView::selectionStart
virtual QDateTime selectionStart()
start-datetime of selection
Definition: koagendaview.cpp:289
KOAgendaView::timeSpanSelectionChanged
void timeSpanSelectionChanged()
KOAgendaView::maxDatesHint
virtual int maxDatesHint() const
Returns maximum number of days supported by the koagendaview.
Definition: koagendaview.cpp:187
KOAgendaView::zoomOutHorizontally
void zoomOutHorizontally(const QDate &date=QDate())
Definition: koagendaview.cpp:172
KOAgendaView::KOAgendaView
KOAgendaView(QWidget *parent=0, bool isSideBySide=false)
Definition: koagendaview.cpp:60
KOPrefs::instance
static KOPrefs * instance()
Get instance of KOPrefs.
Definition: koprefs.cpp:68
KOAgendaView::zoomView
void zoomView(const int delta, const QPoint &pos, const Qt::Orientation orient=Qt::Horizontal)
Definition: koagendaview.cpp:177
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).
KOAgendaView::changeIncidenceDisplay
void changeIncidenceDisplay(const Akonadi::Item &incidence, Akonadi::IncidenceChanger::ChangeType)
Definition: koagendaview.cpp:244
KOrg::BaseView::pasteIncidenceSignal
void pasteIncidenceSignal()
instructs the receiver to paste the incidence
KOAgendaView::changeIncidenceDisplayAdded
void changeIncidenceDisplayAdded(const Akonadi::Item &incidence)
Definition: koagendaview.cpp:239
KOrg::CalPrinterBase::PrintType
PrintType
Definition: printplugin.h:45
KOEventView::showNewEventPopup
virtual void showNewEventPopup()
Definition: koeventview.cpp:151
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