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 modified (int /*change*/=0) {} 00068 00069 virtual void reload() = 0; 00070 00071 public slots: 00072 void updateCategoryConfig(); 00074 virtual void editIncidence(Incidence *) = 0; 00075 virtual void setIncidenceChanger( IncidenceChangerBase *changer ) { 00076 mChanger = changer; } 00078 virtual void init() = 0; 00082 void addAttachments( const QStringList &attachments ); 00086 void addAttendees( const QStringList &attendees ); 00087 00088 00089 signals: 00090 void deleteAttendee( Incidence * ); 00091 00092 void editCategories(); 00093 void dialogClose( Incidence * ); 00094 void editCanceled( Incidence * ); 00095 00096 void deleteIncidenceSignal( Incidence * ); 00097 00098 protected slots: 00099 void slotApply(); 00100 void slotOk(); 00101 void slotCancel(); 00102 void openURL( const KURL &url ); 00103 00104 virtual void slotManageTemplates(); 00105 00106 virtual void slotSaveTemplate( const QString & ) = 0; 00107 virtual void slotLoadTemplate( const QString& ); 00108 virtual void slotTemplatesChanged( const QStringList& ); 00109 00110 protected: 00111 virtual QString type() { return QString::null; } 00112 virtual QStringList& templates() const = 0; 00113 virtual void loadTemplate( /*const*/ CalendarLocal& ) = 0; 00114 00115 void setupAttendeesTab(); 00116 void setupAttachmentsTab(); 00117 void setupDesignerTabs( const QString &type ); 00118 00119 void saveAsTemplate( Incidence *, const QString &name ); 00120 00121 void readDesignerFields( Incidence *i ); 00122 void writeDesignerFields( Incidence *i ); 00123 // Returns the page widget. To remove the tab, just delete that one. 00124 QWidget *addDesignerTab( const QString &uifile ); 00125 00126 void setupEmbeddedURLPage( const QString &label, const QString &url, 00127 const QString &mimetype ); 00128 void createEmbeddedURLPages( Incidence *i ); 00129 00133 virtual bool processInput() { return false; } 00134 00135 virtual void processCancel() {} 00136 00137 void cancelRemovedAttendees( Incidence *incidence ); 00138 00139 Calendar *mCalendar; 00140 00141 KOEditorDetails *mDetails; 00142 KOEditorAttachments *mAttachments; 00143 KOrg::IncidenceChangerBase *mChanger; 00144 00145 QPtrList<KPIM::DesignerFields> mDesignerFields; 00146 QMap<QWidget*, KPIM::DesignerFields*> mDesignerFieldForWidget; 00147 QPtrList<QWidget> mEmbeddedURLPages; 00148 QPtrList<QWidget> mAttachedDesignerFields; 00149 }; 00150 00151 #endif 00152 00153