korganizer
koincidenceeditor.h
00001 /* 00002 This file is part of KOrganizer. 00003 00004 Copyright (c) 2001,2003 Cornelius Schumacher <schumacher@kde.org> 00005 Copyright (C) 2003-2004 Reinhold Kainhofer <reinhold@kainhofer.com> 00006 00007 This program is free software; you can redistribute it and/or modify 00008 it under the terms of the GNU General Public License as published by 00009 the Free Software Foundation; either version 2 of the License, or 00010 (at your option) any later version. 00011 00012 This program is distributed in the hope that it will be useful, 00013 but WITHOUT ANY WARRANTY; without even the implied warranty of 00014 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00015 GNU General Public License for more details. 00016 00017 You should have received a copy of the GNU General Public License 00018 along with this program; if not, write to the Free Software 00019 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 00020 00021 As a special exception, permission is given to link this program 00022 with any edition of Qt, and distribute the resulting executable, 00023 without including the source code for Qt in the source distribution. 00024 */ 00025 #ifndef KOINCIDENCEEDITOR_H 00026 #define KOINCIDENCEEDITOR_H 00027 00028 #include <kdialogbase.h> 00029 #include <kurl.h> 00030 00031 class QDateTime; 00032 00033 namespace KPIM { 00034 class CategorySelectDialog; 00035 class DesignerFields; 00036 class EmbeddedURLPage; 00037 } 00038 00039 namespace KOrg { class IncidenceChangerBase; } 00040 00041 class KOEditorDetails; 00042 class KOEditorAttachments; 00043 00044 namespace KCal { 00045 class Calendar; 00046 class CalendarLocal; 00047 class Incidence; 00048 } 00049 using namespace KCal; 00050 using namespace KOrg; 00051 00055 class KOIncidenceEditor : public KDialogBase 00056 { 00057 Q_OBJECT 00058 public: 00062 KOIncidenceEditor( const QString &caption, Calendar *calendar, 00063 QWidget *parent ); 00064 virtual ~KOIncidenceEditor(); 00065 00067 virtual void init() = 0; 00069 virtual void modified (int /*change*/=0) {} 00070 00071 virtual void reload() = 0; 00072 00073 public slots: 00074 void updateCategoryConfig(); 00076 virtual void editIncidence(Incidence *) = 0; 00077 virtual void setIncidenceChanger( IncidenceChangerBase *changer ) { 00078 mChanger = changer; } 00079 00080 00081 signals: 00082 void deleteAttendee( Incidence * ); 00083 00084 void editCategories(); 00085 void dialogClose( Incidence * ); 00086 void editCanceled( Incidence * ); 00087 00088 void deleteIncidenceSignal( Incidence * ); 00089 00090 protected slots: 00091 void slotApply(); 00092 void slotOk(); 00093 void slotCancel(); 00094 void openURL( const KURL &url ); 00095 00096 virtual void slotManageTemplates(); 00097 00098 virtual void slotSaveTemplate( const QString & ) = 0; 00099 virtual void slotLoadTemplate( const QString& ); 00100 virtual void slotTemplatesChanged( const QStringList& ); 00101 00102 protected: 00103 virtual QString type() { return QString::null; } 00104 virtual QStringList& templates() const = 0; 00105 virtual void loadTemplate( /*const*/ CalendarLocal& ) = 0; 00106 00107 void setupAttendeesTab(); 00108 void setupAttachmentsTab(); 00109 void setupDesignerTabs( const QString &type ); 00110 00111 void saveAsTemplate( Incidence *, const QString &name ); 00112 00113 void readDesignerFields( Incidence *i ); 00114 void writeDesignerFields( Incidence *i ); 00115 // Returns the page widget. To remove the tab, just delete that one. 00116 QWidget *addDesignerTab( const QString &uifile ); 00117 00118 void setupEmbeddedURLPage( const QString &label, const QString &url, 00119 const QString &mimetype ); 00120 void createEmbeddedURLPages( Incidence *i ); 00121 00125 virtual bool processInput() { return false; } 00126 00127 virtual void processCancel() {} 00128 00129 void cancelRemovedAttendees( Incidence *incidence ); 00130 00131 Calendar *mCalendar; 00132 00133 KPIM::CategorySelectDialog *mCategoryDialog; 00134 00135 KOEditorDetails *mDetails; 00136 KOEditorAttachments *mAttachments; 00137 KOrg::IncidenceChangerBase *mChanger; 00138 00139 QPtrList<KPIM::DesignerFields> mDesignerFields; 00140 QMap<QWidget*, KPIM::DesignerFields*> mDesignerFieldForWidget; 00141 QPtrList<QWidget> mEmbeddedURLPages; 00142 QPtrList<QWidget> mAttachedDesignerFields; 00143 }; 00144 00145 #endif 00146 00147