summaryrefslogtreecommitdiffstats
path: root/korganizer/koincidenceeditor.h
diff options
context:
space:
mode:
Diffstat (limited to 'korganizer/koincidenceeditor.h')
-rw-r--r--korganizer/koincidenceeditor.h161
1 files changed, 161 insertions, 0 deletions
diff --git a/korganizer/koincidenceeditor.h b/korganizer/koincidenceeditor.h
new file mode 100644
index 000000000..6816c7808
--- /dev/null
+++ b/korganizer/koincidenceeditor.h
@@ -0,0 +1,161 @@
+/*
+ This file is part of KOrganizer.
+
+ Copyright (c) 2001,2003 Cornelius Schumacher <schumacher@kde.org>
+ Copyright (C) 2003-2004 Reinhold Kainhofer <reinhold@kainhofer.com>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ As a special exception, permission is given to link this program
+ with any edition of Qt, and distribute the resulting executable,
+ without including the source code for Qt in the source distribution.
+*/
+#ifndef KOINCIDENCEEDITOR_H
+#define KOINCIDENCEEDITOR_H
+
+#include <kdialogbase.h>
+#include <kurl.h>
+
+class QDateTime;
+
+namespace KPIM {
+class CategorySelectDialog;
+class DesignerFields;
+class EmbeddedURLPage;
+}
+
+namespace KOrg { class IncidenceChangerBase; }
+
+class KOEditorDetails;
+class KOAttendeeEditor;
+
+namespace KCal {
+class Calendar;
+class CalendarLocal;
+class Incidence;
+}
+using namespace KCal;
+using namespace KOrg;
+
+/**
+ This is the base class for the calendar component editors.
+*/
+class KOIncidenceEditor : public KDialogBase
+{
+ Q_OBJECT
+ public:
+ /**
+ Construct new IncidenceEditor.
+ */
+ KOIncidenceEditor( const QString &caption, Calendar *calendar,
+ QWidget *parent );
+ virtual ~KOIncidenceEditor();
+
+ /** This incidence has been modified externally */
+ virtual void modified (int /*change*/=0) {}
+
+ virtual void reload() = 0;
+
+ virtual void selectInvitationCounterProposal( bool enable );
+
+ public slots:
+ /** Edit an existing todo. */
+ virtual void editIncidence(Incidence *, Calendar *) = 0;
+ virtual void setIncidenceChanger( IncidenceChangerBase *changer ) {
+ mChanger = changer; }
+ /** Initialize editor. This function creates the tab widgets. */
+ virtual void init() = 0;
+ /**
+ Adds attachments to the editor
+ */
+ void addAttachments( const QStringList &attachments,
+ const QStringList& mimeTypes = QStringList(),
+ bool inlineAttachment = false );
+ /**
+ Adds attendees to the editor
+ */
+ void addAttendees( const QStringList &attendees );
+
+
+ signals:
+ void deleteAttendee( Incidence * );
+
+ void editCategories();
+ void updateCategoryConfig();
+ void dialogClose( Incidence * );
+ void editCanceled( Incidence * );
+
+ void deleteIncidenceSignal( Incidence * );
+ void signalAddAttachments( const QStringList &attachments,
+ const QStringList& mimeTypes = QStringList(),
+ bool inlineAttachment = false );
+
+
+ protected slots:
+ void slotApply();
+ void slotOk();
+ void slotCancel();
+ void openURL( const KURL &url );
+
+ virtual void slotManageTemplates();
+
+ virtual void slotSaveTemplate( const QString & ) = 0;
+ virtual void slotLoadTemplate( const QString& );
+ virtual void slotTemplatesChanged( const QStringList& );
+
+ protected:
+ virtual QString type() { return QString::null; }
+ virtual QStringList& templates() const = 0;
+ virtual void loadTemplate( /*const*/ CalendarLocal& ) = 0;
+
+ void setupAttendeesTab();
+ void setupDesignerTabs( const QString &type );
+
+ void saveAsTemplate( Incidence *, const QString &name );
+
+ void readDesignerFields( Incidence *i );
+ void writeDesignerFields( Incidence *i );
+ // Returns the page widget. To remove the tab, just delete that one.
+ QWidget *addDesignerTab( const QString &uifile );
+
+ void setupEmbeddedURLPage( const QString &label, const QString &url,
+ const QString &mimetype );
+ void createEmbeddedURLPages( Incidence *i );
+
+ /**
+ Process user input and create or update event. Returns false if input is invalid.
+ */
+ virtual bool processInput() { return false; }
+
+ virtual void processCancel() {}
+
+ void cancelRemovedAttendees( Incidence *incidence );
+
+ Calendar *mCalendar;
+
+ KOEditorDetails *mDetails;
+ KOAttendeeEditor *mAttendeeEditor;
+ KOrg::IncidenceChangerBase *mChanger;
+
+ QPtrList<KPIM::DesignerFields> mDesignerFields;
+ QMap<QWidget*, KPIM::DesignerFields*> mDesignerFieldForWidget;
+ QPtrList<QWidget> mEmbeddedURLPages;
+ QPtrList<QWidget> mAttachedDesignerFields;
+ bool mIsCounter;
+};
+
+#endif
+
+