korganizer Library API Documentation

calendarview.h

00001 /* 00002 This file is part of KOrganizer. 00003 00004 Copyright (c) 2000,2001,2003 Cornelius Schumacher <schumacher@kde.org> 00005 00006 This program is free software; you can redistribute it and/or modify 00007 it under the terms of the GNU General Public License as published by 00008 the Free Software Foundation; either version 2 of the License, or 00009 (at your option) any later version. 00010 00011 This program is distributed in the hope that it will be useful, 00012 but WITHOUT ANY WARRANTY; without even the implied warranty of 00013 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00014 GNU General Public License for more details. 00015 00016 You should have received a copy of the GNU General Public License 00017 along with this program; if not, write to the Free Software 00018 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 00019 00020 As a special exception, permission is given to link this program 00021 with any edition of Qt, and distribute the resulting executable, 00022 without including the source code for Qt in the source distribution. 00023 */ 00024 #ifndef CALENDARVIEW_H 00025 #define CALENDARVIEW_H 00026 00027 #include <qframe.h> 00028 #include <qlayout.h> 00029 #include <qwidget.h> 00030 #include <qptrlist.h> 00031 #include <qvbox.h> 00032 #include <qmap.h> 00033 00034 #include <libkcal/calendar.h> 00035 #include <libkcal/scheduler.h> 00036 00037 #include <korganizer/calendarviewbase.h> 00038 00039 class QWidgetStack; 00040 class QSplitter; 00041 00042 class CalPrinter; 00043 class KOFilterView; 00044 class KOViewManager; 00045 class KODialogManager; 00046 class KOTodoView; 00047 class KDateNavigator; 00048 class DateNavigator; 00049 class KOIncidenceEditor; 00050 class ResourceView; 00051 class NavigatorBar; 00052 00053 namespace KOrg { class History; } 00054 00055 using namespace KCal; 00056 00057 class CalendarViewExtension : public QWidget 00058 { 00059 public: 00060 CalendarViewExtension( QWidget *parent, const char *name = 0 ) 00061 : QWidget( parent, name ) {} 00062 00063 class Factory 00064 { 00065 public: 00066 virtual CalendarViewExtension *create( QWidget *parent ) = 0; 00067 }; 00068 }; 00069 00079 class CalendarView : public KOrg::CalendarViewBase, public Calendar::Observer 00080 { 00081 Q_OBJECT 00082 public: 00089 CalendarView( QWidget *parent = 0, const char *name = 0 ); 00090 virtual ~CalendarView(); 00091 00092 void setCalendar( Calendar * ); 00093 Calendar *calendar(); 00094 00095 KOrg::History *history() { return mHistory; } 00096 00097 KOViewManager *viewManager(); 00098 KODialogManager *dialogManager(); 00099 00100 QDate startDate(); 00101 QDate endDate(); 00102 00103 QWidgetStack *viewStack(); 00104 QWidget *leftFrame(); 00105 NavigatorBar *navigatorBar(); 00106 00107 DateNavigator *dateNavigator(); 00108 00109 void addView( KOrg::BaseView * ); 00110 void showView( KOrg::BaseView * ); 00111 00116 void addExtension( CalendarViewExtension::Factory * ); 00117 00119 Incidence *currentSelection(); 00122 Incidence *selectedIncidence(); 00123 00124 signals: 00128 void configChanged(); 00131 void closingDown(); 00133 void closed( QWidget * ); 00134 00136 void modifiedChanged( bool ); 00137 00139 void readOnlyChanged( bool ); 00140 00142 void changeNavStringPrev( const QString & ); 00143 void changeNavStringNext( const QString & ); 00144 00146 void organizerEventsSelected( bool ); 00148 void groupEventsSelected( bool ); 00153 void incidenceSelected( Incidence * ); 00155 void todoSelected( bool ); 00156 00161 void pasteEnabled( bool ); 00162 00164 void numIncomingChanged( int ); 00165 00167 void numOutgoingChanged( int ); 00168 00170 void statusMessage( const QString & ); 00171 00172 void calendarViewExpanded( bool ); 00173 00174 public slots: 00177 void updateConfig(); 00178 00184 bool openCalendar( const QString &filename, bool merge = false ); 00185 00190 bool saveCalendar( const QString &filename ); 00191 00196 void closeCalendar(); 00197 00199 void archiveCalendar(); 00200 00201 void showIncidence(); 00202 void editIncidence(); 00203 void deleteIncidence(); 00204 00207 void newEvent( QDateTime, QDateTime, bool allDay = false ); 00208 void newEvent( QDateTime fh ); 00209 void newEvent( QDate dt ); 00212 void newEvent(); 00216 void newEvent( const QString & ); 00217 void newEvent( const QString &summary, const QString &description, 00218 const QString &attachment ); 00219 void newFloatingEvent(); 00220 00222 void showIncidence( Incidence * ); 00224 void editIncidence( Incidence * ); 00226 void deleteIncidence( Incidence * ); 00227 00229 void editEvent( Event * ); 00231 void deleteEvent( Event * ); 00236 bool deleteEvent( const QString &uid ); 00238 void showEvent( Event * ); 00239 00241 void editTodo( Todo * ); 00243 void showTodo( Todo * ); 00245 void newTodo(); 00247 void newSubTodo(); 00249 void newSubTodo( Todo * ); 00251 void deleteTodo( Todo * ); 00252 00253 void newTodo( const QString & ); 00254 void newTodo( const QString &summary, const QString &description, 00255 const QString &attachment ); 00256 00258 void todoModified( Todo *, Todo *, int ); 00259 00264 void checkClipboard(); 00265 00272 void readSettings(); 00273 00275 void writeSettings(); 00276 00278 void readFilterSettings( KConfig *config ); 00279 00281 void writeFilterSettings( KConfig *config ); 00282 00285 void changeEventDisplay( Event *, int ); 00286 00287 void incidenceAdded( Incidence * ); 00288 void incidenceChanged( Incidence *oldEvent, Incidence *newEvent ); 00289 void incidenceDeleted( Incidence * ); 00290 00291 void eventAdded( Event * ); 00292 void eventChanged( Event *oldEvent, Event *newEvent ); 00293 void eventToBeDeleted( Event * ); 00294 void eventDeleted( Event * ); 00295 00296 void todoAdded( Todo * ); 00297 void todoChanged( Todo *oldTodo, Todo *newTodo ); 00298 void todoDeleted( Todo * ); 00299 00300 void editCanceled( Incidence * ); 00301 00302 void updateView( const QDate &start, const QDate &end ); 00303 void updateView(); 00304 00306 void updateTodoViews(); 00307 00308 void updateUnmanagedViews(); 00309 00311 void edit_cut(); 00312 00314 void edit_copy(); 00315 00317 void edit_paste(); 00318 00320 void edit_options(); 00321 00326 void print(); 00327 void printSetup(); 00328 void printPreview(); 00329 00331 void exportICalendar(); 00332 00334 void exportVCalendar(); 00335 00337 void appointment_show(); 00343 void appointment_edit(); 00348 void appointment_delete(); 00349 00352 void action_mail(); 00353 00354 /* frees a subtodo from it's relation */ 00355 void todo_unsub(); 00356 00358 void takeOverEvent(); 00359 00361 void takeOverCalendar(); 00362 00364 bool isModified(); 00366 void setModified( bool modified = true ); 00367 00369 bool isReadOnly(); 00371 void setReadOnly( bool readOnly = true ); 00372 00373 void eventUpdated( Incidence * ); 00374 00375 /* iTIP scheduling actions */ 00376 void schedule_publish( Incidence *incidence = 0 ); 00377 void schedule_request( Incidence *incidence = 0 ); 00378 void schedule_refresh( Incidence *incidence = 0 ); 00379 void schedule_cancel( Incidence *incidence = 0 ); 00380 void schedule_add( Incidence *incidence = 0 ); 00381 void schedule_reply( Incidence *incidence = 0 ); 00382 void schedule_counter( Incidence *incidence = 0 ); 00383 void schedule_declinecounter( Incidence *incidence = 0 ); 00384 void schedule_publish_freebusy( int daysToPublish = 30 ); 00385 00386 void openAddressbook(); 00387 00388 void editFilters(); 00389 00390 void showFilter( bool visible ); 00391 void updateFilter(); 00392 void filterEdited(); 00393 00394 void showIntro(); 00395 00397 void goToday(); 00398 00400 void goNext(); 00401 00403 void goPrevious(); 00404 00405 void toggleExpand(); 00406 void showLeftFrame( bool show = true ); 00407 00408 void dialogClosing( Incidence * ); 00409 00411 void lookForIncomingMessages(); 00413 void lookForOutgoingMessages(); 00414 00415 void processMainViewSelection( Incidence * ); 00416 void processTodoListSelection( Incidence * ); 00417 00418 void processIncidenceSelection( Incidence * ); 00419 00420 void purgeCompleted(); 00421 00422 void slotCalendarChanged(); 00423 00424 void importQtopia( const QString &categoriesFile, 00425 const QString &datebookFile, 00426 const QString &tasklistFile ); 00427 00428 protected slots: 00430 void showDates( const KCal::DateList & ); 00431 00432 public: 00433 // show a standard warning 00434 // returns KMsgBox::yesNoCancel() 00435 int msgCalModified(); 00436 00440 void adaptNavigationUnits(); 00441 00442 //Attendee* getYourAttendee( Event *event ); 00443 00444 protected: 00445 void schedule( Scheduler::Method, Incidence *incidence = 0 ); 00446 00447 // returns KMsgBox::OKCandel() 00448 int msgItemDelete(); 00449 00450 Todo *selectedTodo(); 00451 00452 void warningChangeFailed( Incidence * ); 00453 00454 private: 00455 void init(); 00456 00457 void createPrinter(); 00458 00459 void calendarModified( bool, Calendar * ); 00460 00461 KOrg::History *mHistory; 00462 00463 CalPrinter *mCalPrinter; 00464 00465 QSplitter *mPanner; 00466 QSplitter *mLeftSplitter; 00467 QWidget *mLeftFrame; 00468 QWidgetStack *mRightFrame; 00469 00470 NavigatorBar *mNavigatorBar; 00471 00472 KDateNavigator *mDateNavigator; 00473 00474 KOFilterView *mFilterView; 00475 00476 QPtrList<CalendarViewExtension> mExtensions; 00477 00478 Calendar *mCalendar; 00479 00480 DateNavigator *mNavigator; 00481 00482 KOViewManager *mViewManager; 00483 KODialogManager *mDialogManager; 00484 00485 // Calendar filters 00486 QPtrList<CalFilter> mFilters; 00487 00488 // various housekeeping variables. 00489 bool mModified; // flag indicating if calendar is modified 00490 bool mReadOnly; // flag indicating if calendar is read-only 00491 QDate mSaveSingleDate; 00492 00493 Incidence *mSelectedIncidence; 00494 00495 KOTodoView *mTodoList; 00496 QMap<Incidence*,KOIncidenceEditor*> mDialogList; 00497 }; 00498 00499 00500 class CalendarViewVisitor : public Incidence::Visitor 00501 { 00502 public: 00503 CalendarViewVisitor() : mView( 0 ) {} 00504 00505 bool act( Incidence *incidence, CalendarView *view ) 00506 { 00507 mView = view; 00508 return incidence->accept( *this ); 00509 } 00510 00511 protected: 00512 CalendarView *mView; 00513 }; 00514 00515 class ShowIncidenceVisitor : public CalendarViewVisitor 00516 { 00517 protected: 00518 bool visit( Event *event ) { mView->showEvent( event ); return true; } 00519 bool visit( Todo *todo ) { mView->showTodo( todo ); return true; } 00520 bool visit( Journal * ) { return false; } 00521 }; 00522 00523 class EditIncidenceVisitor : public CalendarViewVisitor 00524 { 00525 protected: 00526 bool visit( Event *event ) { mView->editEvent( event ); return true; } 00527 bool visit( Todo *todo ) { mView->editTodo( todo ); return true; } 00528 bool visit( Journal * ) { return false; } 00529 }; 00530 00531 class DeleteIncidenceVisitor : public CalendarViewVisitor 00532 { 00533 protected: 00534 bool visit( Event *event ) { mView->deleteEvent( event ); return true; } 00535 bool visit( Todo *todo ) { mView->deleteTodo( todo ); return true; } 00536 bool visit( Journal * ) { return false; } 00537 }; 00538 00539 #endif
KDE Logo
This file is part of the documentation for korganizer Library Version 3.2.2.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Wed Jul 28 23:58:12 2004 by doxygen 1.3.7 written by Dimitri van Heesch, © 1997-2003