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   class ResourceCalendar;
00050 }
00051 using namespace KCal;
00052 using namespace KOrg;
00053 
00057 class KOIncidenceEditor : public KDialogBase
00058 {
00059   Q_OBJECT
00060   public:
00064     KOIncidenceEditor( const QString &caption, Calendar *calendar,
00065                        QWidget *parent );
00066     virtual ~KOIncidenceEditor();
00067 
00069     virtual void modified() {}
00070 
00071     virtual void reload() = 0;
00072 
00073     virtual void setResource( ResourceCalendar *res, const QString &subRes );
00074     virtual void selectInvitationCounterProposal( bool enable );
00075     virtual void selectCreateTask( bool enable );
00076 
00089     void setRecurringIncidence( Incidence *originalIncidence, Incidence *incAfterDissociation );
00090 
00091   public slots:
00093     virtual void editIncidence(Incidence *, const QDate &, Calendar *) = 0;
00094     virtual void setIncidenceChanger( IncidenceChangerBase *changer ) {
00095         mChanger = changer; }
00097     virtual void init() = 0;
00101     void addAttachments( const QStringList &attachments,
00102                          const QStringList& mimeTypes = QStringList(),
00103                          bool inlineAttachment = false );
00107     void addAttendees( const QStringList &attendees );
00108 
00109   signals:
00110     void editCategories();
00111     void updateCategoryConfig();
00112     void dialogClose( Incidence * );
00113     void editCanceled( Incidence * );
00114 
00115     void deleteIncidenceSignal( Incidence * );
00116     void signalAddAttachments( const QStringList &attachments,
00117                                const QStringList& mimeTypes = QStringList(),
00118                                bool inlineAttachment = false );
00119 
00120 
00121   protected slots:
00122     void slotApply();
00123     void slotOk();
00124     void slotCancel();
00125     void openURL( const KURL &url );
00126 
00127     virtual void slotManageTemplates();
00128 
00129     virtual void slotSaveTemplate( const QString & ) = 0;
00130     virtual void slotLoadTemplate( const QString& );
00131     virtual void slotTemplatesChanged( const QStringList& );
00132 
00133   protected:
00134     virtual QString type() { return QString::null; }
00135     virtual QStringList& templates() const = 0;
00136     virtual void loadTemplate( /*const*/ CalendarLocal& ) = 0;
00137 
00138     void setupAttendeesTab();
00139     void setupDesignerTabs( const QString &type );
00140 
00141     void saveAsTemplate( Incidence *, const QString &name );
00142 
00143     void readDesignerFields( Incidence *i );
00144     void writeDesignerFields( Incidence *i );
00145     // Returns the page widget. To remove the tab, just delete that one.
00146     QWidget *addDesignerTab( const QString &uifile );
00147 
00148     void setupEmbeddedURLPage( const QString &label, const QString &url,
00149                                const QString &mimetype );
00150     void createEmbeddedURLPages( Incidence *i );
00151 
00155     virtual bool processInput() { return false; }
00156 
00157     virtual void processCancel() {}
00158 
00159     void cancelRemovedAttendees( Incidence *incidence );
00160 
00161     Calendar *mCalendar;
00162 
00163     KOEditorDetails *mDetails;
00164     KOAttendeeEditor *mAttendeeEditor;
00165     KOrg::IncidenceChangerBase *mChanger;
00166 
00167     QPtrList<KPIM::DesignerFields> mDesignerFields;
00168     QMap<QWidget*, KPIM::DesignerFields*> mDesignerFieldForWidget;
00169     QPtrList<QWidget> mEmbeddedURLPages;
00170     QPtrList<QWidget> mAttachedDesignerFields;
00171     ResourceCalendar *mResource;
00172     QString mSubResource;
00173     bool mIsCounter;
00174     bool mIsCreateTask;
00175 
00176     Incidence *mRecurIncidence;
00177     Incidence *mRecurIncidenceAfterDissoc;
00178 
00179 };
00180 
00181 #endif
00182 
00183 
KDE Home | KDE Accessibility Home | Description of Access Keys