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 QDate;
00032 class QDateTime;
00033 
00034 namespace KPIM {
00035 class CategorySelectDialog;
00036 class DesignerFields;
00037 class EmbeddedURLPage;
00038 }
00039 
00040 namespace KOrg { class IncidenceChangerBase; }
00041 
00042 class KOEditorDetails;
00043 class KOAttendeeEditor;
00044 
00045 namespace KCal {
00046 class Calendar;
00047 class CalendarLocal;
00048 class Incidence;
00049 }
00050 using namespace KCal;
00051 using namespace KOrg;
00052 
00056 class KOIncidenceEditor : public KDialogBase
00057 {
00058     Q_OBJECT
00059   public:
00063     KOIncidenceEditor( const QString &caption, Calendar *calendar,
00064                        QWidget *parent );
00065     virtual ~KOIncidenceEditor();
00066 
00068     virtual void modified() {}
00069 
00070     virtual void reload() = 0;
00071 
00072     virtual void selectInvitationCounterProposal( bool enable );
00073     virtual void selectCreateTask( bool enable );
00074 
00075   public slots:
00077     virtual void editIncidence(Incidence *, const QDate &, Calendar *) = 0;
00078     virtual void setIncidenceChanger( IncidenceChangerBase *changer ) {
00079         mChanger = changer; }
00081     virtual void init() = 0;
00085     void addAttachments( const QStringList &attachments,
00086                          const QStringList& mimeTypes = QStringList(),
00087                          bool inlineAttachment = false );
00091     void addAttendees( const QStringList &attendees );
00092 
00093 
00094   signals:
00095     void deleteAttendee( Incidence * );
00096 
00097     void editCategories();
00098     void updateCategoryConfig();
00099     void dialogClose( Incidence * );
00100     void editCanceled( Incidence * );
00101 
00102     void deleteIncidenceSignal( Incidence * );
00103     void signalAddAttachments( const QStringList &attachments,
00104                                const QStringList& mimeTypes = QStringList(),
00105                                bool inlineAttachment = false );
00106 
00107 
00108   protected slots:
00109     void slotApply();
00110     void slotOk();
00111     void slotCancel();
00112     void openURL( const KURL &url );
00113 
00114     virtual void slotManageTemplates();
00115 
00116     virtual void slotSaveTemplate( const QString & ) = 0;
00117     virtual void slotLoadTemplate( const QString& );
00118     virtual void slotTemplatesChanged( const QStringList& );
00119 
00120   protected:
00121     virtual QString type() { return QString::null; }
00122     virtual QStringList& templates() const = 0;
00123     virtual void loadTemplate( /*const*/ CalendarLocal& ) = 0;
00124 
00125     void setupAttendeesTab();
00126     void setupDesignerTabs( const QString &type );
00127 
00128     void saveAsTemplate( Incidence *, const QString &name );
00129 
00130     void readDesignerFields( Incidence *i );
00131     void writeDesignerFields( Incidence *i );
00132     // Returns the page widget. To remove the tab, just delete that one.
00133     QWidget *addDesignerTab( const QString &uifile );
00134 
00135     void setupEmbeddedURLPage( const QString &label, const QString &url,
00136                                const QString &mimetype );
00137     void createEmbeddedURLPages( Incidence *i );
00138 
00142     virtual bool processInput() { return false; }
00143 
00144     virtual void processCancel() {}
00145 
00146     void cancelRemovedAttendees( Incidence *incidence );
00147 
00148     Calendar *mCalendar;
00149 
00150     KOEditorDetails *mDetails;
00151     KOAttendeeEditor *mAttendeeEditor;
00152     KOrg::IncidenceChangerBase *mChanger;
00153 
00154     QPtrList<KPIM::DesignerFields> mDesignerFields;
00155     QMap<QWidget*, KPIM::DesignerFields*> mDesignerFieldForWidget;
00156     QPtrList<QWidget> mEmbeddedURLPages;
00157     QPtrList<QWidget> mAttachedDesignerFields;
00158     bool mIsCounter;
00159     bool mIsCreateTask;
00160 };
00161 
00162 #endif
00163 
00164 
KDE Home | KDE Accessibility Home | Description of Access Keys