• 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
calendarview.h
Go to the documentation of this file.
1 /*
2  This file is part of KOrganizer.
3 
4  Copyright (c) 2000,2001,2003,2004 Cornelius Schumacher <schumacher@kde.org>
5  Copyright (C) 2003-2004 Reinhold Kainhofer <reinhold@kainhofer.com>
6  Copyright (c) 2005 Rafal Rzepecki <divide@users.sourceforge.net>
7 
8  This program is free software; you can redistribute it and/or modify
9  it under the terms of the GNU General Public License as published by
10  the Free Software Foundation; either version 2 of the License, or
11  (at your option) any later version.
12 
13  This program is distributed in the hope that it will be useful,
14  but WITHOUT ANY WARRANTY; without even the implied warranty of
15  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  GNU General Public License for more details.
17 
18  You should have received a copy of the GNU General Public License along
19  with this program; if not, write to the Free Software Foundation, Inc.,
20  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
21 
22  As a special exception, permission is given to link this program
23  with any edition of Qt, and distribute the resulting executable,
24  without including the source code for Qt in the source distribution.
25 */
26 
27 #ifndef KORG_CALENDARVIEW_H
28 #define KORG_CALENDARVIEW_H
29 
30 #include "korganizer_export.h"
31 #include "interfaces/korganizer/calendarviewbase.h"
32 
33 #include <KCalCore/Incidence>
34 #include <KCalCore/Visitor>
35 #include <KCalCore/ScheduleMessage>
36 
37 #include <akonadi/calendar/itiphandler.h>
38 
39 #include <calendarsupport/messagewidget.h>
40 
41 class DateChecker;
42 class DateNavigator;
43 class DateNavigatorContainer;
44 class KODialogManager;
45 class KOTodoView;
46 class KOViewManager;
47 class NavigatorBar;
48 class KOCheckableProxyModel;
49 class AkonadiCollectionView;
50 namespace KOrg {
51  class HTMLExportSettings;
52 }
53 
54 namespace CalendarSupport {
55  class CalPrinter;
56  class IncidenceViewer;
57 }
58 
59 namespace IncidenceEditorNG {
60  class IncidenceDialog;
61 }
62 
63 namespace Akonadi {
64  class History;
65  class IncidenceChanger;
66  class CalendarClipboard;
67  class TodoPurger;
68 }
69 
70 class KVBox;
71 
72 class QSplitter;
73 class QStackedWidget;
74 
75 using namespace KOrg;
76 
77 class CalendarViewExtension : public QWidget
78 {
79  public:
80  explicit CalendarViewExtension( QWidget *parent ) : QWidget( parent ) {}
81 
82  class Factory
83  {
84  public:
85  virtual ~Factory() {}
86  virtual CalendarViewExtension *create( QWidget *parent ) = 0;
87  };
88 };
89 
99 class KORGANIZERPRIVATE_EXPORT CalendarView : public KOrg::CalendarViewBase,
100  public Akonadi::ETMCalendar::CalendarObserver
101 {
102  Q_OBJECT
103  public:
108  explicit CalendarView( QWidget *parent=0 );
109  virtual ~CalendarView();
110 
111  class CalendarViewVisitor : public KCalCore::Visitor
112  {
113  public:
114  CalendarViewVisitor() : mView( 0 )
115  {
116  }
117 
118  bool act( KCalCore::IncidenceBase::Ptr &incidence, CalendarView *view )
119  {
120  mView = view;
121  return incidence->accept( *this, incidence );
122  }
123 
124  protected:
125  CalendarView *mView;
126  };
127 
128  void setCalendar( const Akonadi::ETMCalendar::Ptr & );
129  Akonadi::ETMCalendar::Ptr calendar() const;
130 
131  void showMessage(const QString &message, KMessageWidget::MessageType);
132 
133  Akonadi::History *history() const;
134  void setCheckableProxyModel( KOCheckableProxyModel * );
135 
136  KOViewManager *viewManager() const { return mViewManager; }
137  KODialogManager *dialogManager() const { return mDialogManager; }
138 
139  QStackedWidget *viewStack() const { return mRightFrame; }
140  QWidget *leftFrame() const { return mLeftFrame; }
141  NavigatorBar *navigatorBar() const { return mNavigatorBar; }
142  DateNavigator *dateNavigator() const { return mDateNavigator; }
143  // TODO_NG
144  //IncidenceEditors::IncidenceEditor *editorDialog( const Akonadi::Item &item ) const;
145  virtual Akonadi::IncidenceChanger *incidenceChanger() const { return mChanger; }
146 
152  void updateHighlightModes();
153 
154  QDate startDate();
155  QDate endDate();
156 
157  KOrg::BaseView *currentView() const;
158  void addView( KOrg::BaseView * );
159  void showView( KOrg::BaseView * );
160 
165  void addExtension( CalendarViewExtension::Factory * );
166 
171  Akonadi::Item currentSelection();
172 
177  Akonadi::Item selectedIncidence();
178 
182  bool isFiltered() const;
183 
187  QString currentFilterName() const;
188 
189  signals:
193  void configChanged();
194 
196  void closed( QWidget * );
197 
199  void modifiedChanged( bool );
200 
202  void readOnlyChanged( bool );
203 
205  void changeNavStringPrev( const QString & );
206  void changeNavStringNext( const QString & );
207 
209  void organizerEventsSelected( bool );
211  void groupEventsSelected( bool );
216  void incidenceSelected( const Akonadi::Item &incidence, const QDate &date );
219  void todoSelected( bool );
220  void subtodoSelected( bool );
221 
224  void dayPassed( const QDate & );
225 
230  void pasteEnabled( bool );
232  void statusMessage( const QString & );
233 
234  void calendarViewExpanded( bool );
235 
237  void autoArchivingSettingsModified();
238 
239  void newIncidenceChanger( Akonadi::IncidenceChanger * );
240  void exportHTML( KOrg::HTMLExportSettings * );
241 
242  void filtersUpdated( const QStringList &, int );
243  void filterChanged();
244 
245  public slots:
248  void updateConfig();
249  void updateConfig( const QByteArray & );
250 
251  void handleIncidenceCreated(const Akonadi::Item &item);
252 
258  bool saveCalendar( const QString &filename );
259 
261  void archiveCalendar();
262 
263  void newEvent( const QDate & );
264 
269  void newEvent();
270 
275  void newEvent( const QDateTime &startDt );
276 
277  void newEvent( const QDateTime &startDt, const QDateTime &EndDt, bool allDay=false );
278 
283  void newEvent( const QString &summary,
284  const QString &description=QString(),
285  const QStringList &attachment=QStringList(),
286  const QStringList &attendees=QStringList(),
287  const QStringList &attachmentMimetypes=QStringList(),
288  bool inlineAttachment=false );
289  void newFloatingEvent();
290 
293  void showIncidence( const Akonadi::Item &item );
294  bool showIncidence( Akonadi::Item::Id id );
295  void showIncidence();
296 
302  void showIncidenceContext( const Akonadi::Item &incidence );
303  bool showIncidenceContext( Akonadi::Item::Id id );
304 
306  bool editIncidence( const Akonadi::Item &item, bool isCounter = false );
307  bool editIncidence( Akonadi::Item::Id id );
308  void editIncidence();
309 
317  bool deleteIncidence( const Akonadi::Item &item, bool force=false );
318  bool deleteIncidence( Akonadi::Item::Id id, bool force=false );
319  void deleteIncidence();
320 
329  bool addIncidence( const QString &ical );
330  bool addIncidence( const KCalCore::Incidence::Ptr &incidence );
331 
335  void cutIncidence( const Akonadi::Item & );
336 
340  void copyIncidence( const Akonadi::Item & );
341 
345  void pasteIncidence();
346 
348  void deleteSubTodosIncidence ( const Akonadi::Item &todo );
349 
355  void deleteTodoIncidence ( const Akonadi::Item &todo, bool force=false );
356 
358  void newTodo();
359 
361  void newTodo( const QDate &date );
362 
364  void newTodo( const Akonadi::Collection &collection );
365 
367  void newSubTodo();
368 
370  void newSubTodo( const Akonadi::Item &todo );
371 
373  void newSubTodo( const Akonadi::Collection &collection );
374 
375  void newTodo( const QString &summary, const QString &description=QString(),
376  const QStringList &attachments=QStringList(),
377  const QStringList &attendees=QStringList(),
378  const QStringList &attachmentMimetypes=QStringList(),
379  bool inlineAttachment=false );
380 
381  void newJournal();
382  void newJournal( const QDate &date );
383  void newJournal( const QString &text, const QDate &date=QDate() );
384  void newJournal( const Akonadi::Collection &collection );
385 
386  void configureCurrentView();
387 
388  void toggleAlarm( const Akonadi::Item &incidence );
389  void toggleTodoCompleted( const Akonadi::Item &incidence );
390  void copyIncidenceToResource(const Akonadi::Item &incidence, const Akonadi::Collection &col );
391  void moveIncidenceToResource( const Akonadi::Item &incidence, const Akonadi::Collection &col );
392  void dissociateOccurrences( const Akonadi::Item &incidence, const QDate &date );
393 
398  void checkClipboard();
399 
406  void readSettings();
407 
409  void writeSettings();
410 
412  void readFilterSettings( KConfig *config );
413 
415  void writeFilterSettings( KConfig *config );
416 
419  void changeIncidenceDisplay( const Akonadi::Item &incidence,
420  Akonadi::IncidenceChanger::ChangeType );
421 
422  void slotCreateFinished( int changeId,
423  const Akonadi::Item &item,
424  Akonadi::IncidenceChanger::ResultCode resultCode,
425  const QString &errorString );
426 
427  void slotModifyFinished( int changeId,
428  const Akonadi::Item &item,
429  Akonadi::IncidenceChanger::ResultCode resultCode,
430  const QString &errorString );
431 
432  void slotDeleteFinished( int changeId,
433  const QVector<Akonadi::Item::Id> &itemIdList,
434  Akonadi::IncidenceChanger::ResultCode resultCode,
435  const QString &errorString );
436 
437  void startMultiModify( const QString &text );
438  void endMultiModify();
439 
440  void updateView( const QDate &start, const QDate &end,
441  const QDate &preferredMonth, const bool updateTodos=true );
442  void updateView();
443 
444  void updateUnmanagedViews();
445 
447  void edit_cut();
448 
450  void edit_copy();
451 
453  void edit_paste();
454 
455  void onCutFinished();
456 
458  void edit_options();
459 
464  void print();
465  void printPreview();
466 
468  void exportWeb();
469 
471  void exportICalendar();
472 
474  void exportVCalendar();
475 
477  void appointment_show();
483  void appointment_edit();
484 
489  void appointment_delete();
490 
492  void todo_unsub();
493 
494  /* Frees an incidence's children from it's relation, without the view update
495  Works with any incidence type, although currently we only pass to-dos
496  */
497  bool incidence_unsub( const Akonadi::Item &item );
498 
500  bool makeSubTodosIndependent( );
501 
505  bool makeChildrenIndependent( const Akonadi::Item &item );
506 
508  void takeOverEvent();
509 
511  bool isReadOnly() const;
512 
516  void setReadOnly( bool readOnly=true );
517 
518  void eventUpdated( const Akonadi::Item &incidence );
519 
520  /* iTIP scheduling actions */
521  void schedule_publish( const Akonadi::Item &incidence=Akonadi::Item() );
522  void schedule_request( const Akonadi::Item &incidence=Akonadi::Item() );
523  void schedule_refresh( const Akonadi::Item &incidence=Akonadi::Item() );
524  void schedule_cancel( const Akonadi::Item &incidence=Akonadi::Item() );
525  void schedule_add( const Akonadi::Item &incidence=Akonadi::Item() );
526  void schedule_reply( const Akonadi::Item &incidence=Akonadi::Item() );
527  void schedule_counter( const Akonadi::Item &incidence=Akonadi::Item() );
528  void schedule_declinecounter( const Akonadi::Item &incidence=Akonadi::Item() );
529  void schedule_forward( const Akonadi::Item &incidence=Akonadi::Item() );
530  void mailFreeBusy( int daysToPublish=30 );
531  void uploadFreeBusy();
532 
533  void openAddressbook();
534 
535  void editFilters();
536 
537  void updateFilter();
538 
539  void showIntro();
540 
541  void showDateNavigator( bool );
542  void showTodoView( bool );
543  void showEventViewer( bool );
544 
546  void goDate( const QDate &date );
547 
549  void showDate( const QDate &date );
550 
552  void goToday();
553 
555  void goNext();
556 
558  void goPrevious();
559 
560  void showLeftFrame( bool show=true );
561 
562  void dialogClosing( const Akonadi::Item &incidence );
563 
564  void processMainViewSelection( const Akonadi::Item &incidence, const QDate &date );
565  void processTodoListSelection( const Akonadi::Item &incidence, const QDate &date );
566 
567  void processIncidenceSelection( const Akonadi::Item &incidence, const QDate &date );
568 
569  void purgeCompleted();
570 
571  void slotAutoArchivingSettingsModified() { emit autoArchivingSettingsModified(); }
572 
573  void showErrorMessage( const QString & );
574  void schedule( KCalCore::iTIPMethod, const Akonadi::Item &incidence );
575  void addIncidenceOn( const Akonadi::Item &incidence, const QDate & );
576  void moveIncidenceTo( const Akonadi::Item &incidence, const QDate & );
577  void filterActivated( int filterNum );
578 
579  void resourcesChanged();
580 
590  void selectWeek( const QDate &week, const QDate &preferredMonth );
591 
598  void changeFullView( bool fullView );
599 
600  protected slots:
606  void showDates( const KCalCore::DateList &, const QDate &preferredMonth = QDate() );
607 
608  public:
609  int msgCalModified();
610 
614  void adaptNavigationUnits();
615 
622  QDate activeIncidenceDate();
623 
634  QDate activeDate( bool fallbackToToday = false );
635 
636  protected:
637  int msgItemDelete( const Akonadi::Item &incidence );
638 
639  Akonadi::Item selectedTodo();
640  IncidenceEditorNG::IncidenceDialog *incidenceDialog(const Akonadi::Item &);
641 
642  void warningChangeFailed( const Akonadi::Item & );
643  void checkForFilteredChange( const Akonadi::Item &incidence );
644 
649  void dateTimesForNewEvent( QDateTime &startDt, QDateTime &endDt, bool &allDay );
650  IncidenceEditorNG::IncidenceDialog *newEventEditor( const KCalCore::Event::Ptr &event );
651 
652  bool eventFilter( QObject *watched, QEvent *event );
653 
654  private Q_SLOTS:
655  void onCheckableProxyAboutToToggle( bool newState );
656  void onCheckableProxyToggled( bool newState );
657  void onTodosPurged(bool success, int numDeleted, int numIgnored);
658 
659  private:
660  void init();
661  Akonadi::Collection selectedCollection() const;
662  Akonadi::Collection::List checkedCollections() const;
663 
664  void createPrinter();
665 
666  void dissociateOccurrence( const Akonadi::Item &incidence, const QDate & , bool futureOccurrences);
667 
674  Akonadi::Collection defaultCollection(
675  const QLatin1String &mimeType = QLatin1String( "" ) ) const;
676 
681  IncidenceEditorNG::IncidenceDialog *createIncidenceEditor(
682  const Akonadi::Item &item, const Akonadi::Collection &collection = Akonadi::Collection() );
683 
684  CalendarSupport::CalPrinter *mCalPrinter;
685  Akonadi::TodoPurger *mTodoPurger;
686 
687  QSplitter *mPanner;
688  QSplitter *mLeftSplitter;
689  QWidget *mLeftFrame;
690  QStackedWidget *mRightFrame;
691  CalendarSupport::MessageWidget *mMessageWidget;
692 
693  // This navigator bar is used when in full window month view
694  // It has nothing to do with the date navigator
695  NavigatorBar *mNavigatorBar;
696 
697  DateNavigatorContainer *mDateNavigatorContainer;
698 
699  QList<CalendarViewExtension*> mExtensions;
700 
701  Akonadi::ETMCalendar::Ptr mCalendar;
702 
703  DateNavigator *mDateNavigator;
704  DateChecker *mDateChecker;
705 
706  KVBox *mEventViewerBox;
707  CalendarSupport::IncidenceViewer *mEventViewer;
708  KOViewManager *mViewManager;
709  KODialogManager *mDialogManager;
710 
711  // Calendar filters
712  QList<KCalCore::CalFilter*> mFilters;
713  KCalCore::CalFilter *mCurrentFilter;
714 
715  // various housekeeping variables.
716  bool mReadOnly; // flag indicating if calendar is read-only
717 
718  Akonadi::Item mSelectedIncidence;
719  QDate mSaveDate;
720 
721  KOTodoView *mTodoList;
722  Akonadi::IncidenceChanger *mChanger;
723  Akonadi::ITIPHandler *mITIPHandler;
724  QList<int> mMainSplitterSizes; // temp store for main splitter sizes while left frame is hidden
725  bool mSplitterSizesValid;
726  bool mCreatingEnabled;
727 
728  Akonadi::CalendarClipboard *mCalendarClipboard;
729  KOCheckableProxyModel *mCheckableProxyModel;
730  AkonadiCollectionView *mETMCollectionView;
731 };
732 
733 #endif
QEvent
QWidget
calendarviewbase.h
CalendarView::CalendarViewVisitor::CalendarViewVisitor
CalendarViewVisitor()
Definition: calendarview.h:114
CalendarView::incidenceChanger
virtual Akonadi::IncidenceChanger * incidenceChanger() const
Definition: calendarview.h:145
CalendarView::viewStack
QStackedWidget * viewStack() const
Definition: calendarview.h:139
DateChecker
Definition: datechecker.h:34
DateNavigatorContainer
Definition: datenavigatorcontainer.h:38
QByteArray
CalendarView::CalendarViewVisitor::mView
CalendarView * mView
Definition: calendarview.h:125
CalendarViewExtension::Factory
Definition: calendarview.h:82
CalendarView::navigatorBar
NavigatorBar * navigatorBar() const
Definition: calendarview.h:141
CalendarView::CalendarViewVisitor::act
bool act(KCalCore::IncidenceBase::Ptr &incidence, CalendarView *view)
Definition: calendarview.h:118
CalendarView::CalendarViewVisitor
Definition: calendarview.h:111
CalendarView::dialogManager
KODialogManager * dialogManager() const
Definition: calendarview.h:137
CalendarView
This is the main calendar widget.
Definition: calendarview.h:99
QObject
CalendarView::dateNavigator
DateNavigator * dateNavigator() const
Definition: calendarview.h:142
CalendarViewExtension::CalendarViewExtension
CalendarViewExtension(QWidget *parent)
Definition: calendarview.h:80
QDate
KORGANIZERPRIVATE_EXPORT
#define KORGANIZERPRIVATE_EXPORT
Definition: korganizer_export.h:35
CalendarViewExtension
Definition: calendarview.h:77
QStackedWidget
QString
CalendarObserver
QList< CalendarViewExtension * >
QStringList
CalendarView::slotAutoArchivingSettingsModified
void slotAutoArchivingSettingsModified()
Definition: calendarview.h:571
CalendarViewExtension::Factory::~Factory
virtual ~Factory()
Definition: calendarview.h:85
korganizer_export.h
NavigatorBar
Definition: navigatorbar.h:33
QSplitter
KOrg::BaseView
This class provides an interface for all views being displayed within the main calendar view...
Definition: baseview.h:52
QVector
AkonadiCollectionView
This class provides a view of calendar resources.
Definition: akonadicollectionview.h:67
CalendarView::leftFrame
QWidget * leftFrame() const
Definition: calendarview.h:140
DateNavigator
This class controls date navigation.
Definition: datenavigator.h:41
QLatin1String
KOCheckableProxyModel
A KCheckableProxyModel that emits a signal before and after toggling.
Definition: kocheckableproxymodel.h:37
KOTodoView
Definition: kotodoview.h:39
KOViewManager
This class manages the views of the calendar.
Definition: koviewmanager.h:61
KOrg::CalendarViewBase
interface for main calendar view widget
Definition: calendarviewbase.h:35
CalendarView::viewManager
KOViewManager * viewManager() const
Definition: calendarview.h:136
KODialogManager
This class manages the dialogs used by the calendar view.
Definition: kodialogmanager.h:54
QDateTime
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