diff options
Diffstat (limited to 'kalarm/editdlg.h')
-rw-r--r-- | kalarm/editdlg.h | 260 |
1 files changed, 260 insertions, 0 deletions
diff --git a/kalarm/editdlg.h b/kalarm/editdlg.h new file mode 100644 index 000000000..8a8f40ce9 --- /dev/null +++ b/kalarm/editdlg.h @@ -0,0 +1,260 @@ +/* + * editdlg.h - dialogue to create or modify an alarm or alarm template + * Program: kalarm + * Copyright © 2001-2006,2008 by David Jarvie <djarvie@kde.org> + * + * 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. + */ + +#ifndef EDITDLG_H +#define EDITDLG_H + +#include <qdatetime.h> +#include <qlineedit.h> + +#include <kdialogbase.h> + +#include "alarmevent.h" +#include "alarmtext.h" +#include "datetime.h" +#include "soundpicker.h" + +class QButton; +class QGroupBox; +class QComboBox; +class QTabWidget; +class QVBox; +class QHBox; +class EmailIdCombo; +class FontColourButton; +class ColourCombo; +class ButtonGroup; +class TimeEdit; +class RadioButton; +class CheckBox; +class LateCancelSelector; +class AlarmTimeWidget; +class RecurrenceEdit; +class Reminder; +class SpecialActionsButton; +class TimeSpinBox; +class LineEdit; +class TextEdit; +class PickAlarmFileRadio; + + +class EditAlarmDlg : public KDialogBase +{ + Q_OBJECT + public: + enum MessageType { MESSAGE, FILE }; + enum CmdLogType { DISCARD_OUTPUT, LOG_TO_FILE, EXEC_IN_TERMINAL }; + + EditAlarmDlg(bool Template, const QString& caption, QWidget* parent = 0, const char* name = 0, + const KAEvent* = 0, bool readOnly = false); + virtual ~EditAlarmDlg(); + bool getEvent(KAEvent&); + void setAction(KAEvent::Action, const AlarmText& = AlarmText()); + + static CheckBox* createConfirmAckCheckbox(QWidget* parent, const char* name = 0); + + static QString i18n_ConfirmAck(); // plain text of 'Confirm acknowledgement' checkbox + static QString i18n_k_ConfirmAck(); // text of 'Confirm acknowledgement' checkbox, with 'k' shortcut + static QString i18n_SpecialActions(); // plain text of 'Special Actions...' button + static QString i18n_ShowInKOrganizer(); // plain text of 'Show in KOrganizer' checkbox + static QString i18n_g_ShowInKOrganizer(); // text of 'Show in KOrganizer' checkbox, with 'G' shortcut + static QString i18n_EnterScript(); // plain text of 'Enter a script' checkbox + static QString i18n_p_EnterScript(); // text of 'Enter a script' checkbox, with 'P' shortcut + static QString i18n_ExecInTermWindow(); // plain text of 'Execute in terminal window' checkbox + static QString i18n_w_ExecInTermWindow(); // text of 'Execute in terminal window' radio button, with 'W' shortcut + static QString i18n_u_ExecInTermWindow(); // text of 'Execute in terminal window' radio button, with 'U' shortcut + static QString i18n_g_LogToFile(); // text of 'Log to file' radio button, with 'G' shortcut + static QString i18n_CopyEmailToSelf(); // plain text of 'Copy email to self' checkbox + static QString i18n_e_CopyEmailToSelf(); // text of 'Copy email to self' checkbox, with 'E' shortcut + static QString i18n_s_CopyEmailToSelf(); // text of 'Copy email to self' checkbox, with 'S' shortcut + static QString i18n_EmailFrom(); // plain text of 'From:' (email address) + static QString i18n_f_EmailFrom(); // text of 'From:' (email address), with 'F' shortcut + static QString i18n_EmailTo(); // plain text of 'To:' (email addressee) + static QString i18n_EmailSubject(); // plain text of 'Subject:' (email) + static QString i18n_j_EmailSubject(); // text of 'Subject:' (email), with 'J' shortcut + + protected: + virtual void resizeEvent(QResizeEvent*); + virtual void showEvent(QShowEvent*); + protected slots: + virtual void slotOk(); + virtual void slotCancel(); + virtual void slotTry(); + virtual void slotDefault(); // Load Template + private slots: + void slotRecurTypeChange(int repeatType); + void slotRecurFrequencyChange(); + void slotAlarmTypeChanged(int id); + void slotEditDeferral(); + void openAddressBook(); + void slotAddAttachment(); + void slotRemoveAttachment(); + void slotShowMainPage(); + void slotShowRecurrenceEdit(); + void slotAnyTimeToggled(bool anyTime); + void slotTemplateTimeType(int id); + void slotSetSubRepetition(); + void slotCmdScriptToggled(bool); + + private: + void initialise(const KAEvent*); + void setReadOnly(); + void setEvent(KAEvent&, const QString& text, bool trial); + KAEvent::Action getAlarmType() const; + int getAlarmFlags() const; + bool checkText(QString& result, bool showErrorMessage = true) const; + void setSoundPicker(); + void setRecurTabTitle(const KAEvent* = 0); + bool checkCommandData(); + bool checkEmailData(); + + void initDisplayAlarms(QWidget* parent); + void initCommand(QWidget* parent); + void initEmail(QWidget* parent); + void saveState(const KAEvent*); + bool stateChanged() const; + + QTabWidget* mTabs; // the tabs in the dialog + int mMainPageIndex; + int mRecurPageIndex; + bool mMainPageShown; // true once the main tab has been displayed + bool mRecurPageShown; // true once the recurrence tab has been displayed + bool mRecurSetDefaultEndDate; // adjust default end date/time when recurrence tab is displayed + + ButtonGroup* mActionGroup; + RadioButton* mMessageRadio; + RadioButton* mCommandRadio; + PickAlarmFileRadio* mFileRadio; + RadioButton* mEmailRadio; + QWidgetStack* mAlarmTypeStack; + + // Templates + QLineEdit* mTemplateName; + ButtonGroup* mTemplateTimeGroup; + RadioButton* mTemplateDefaultTime; // no alarm time is specified + RadioButton* mTemplateUseTimeAfter;// alarm time is specified as an offset from current + RadioButton* mTemplateAnyTime; // alarms have date only, no time + RadioButton* mTemplateUseTime; // an alarm time is specified + TimeSpinBox* mTemplateTimeAfter; // the specified offset from the current time + TimeEdit* mTemplateTime; // the alarm time which is specified + + // Display alarm options widgets + QFrame* mDisplayAlarmsFrame; + QHBox* mFileBox; + QHBox* mFilePadding; + SoundPicker* mSoundPicker; + CheckBox* mConfirmAck; + FontColourButton* mFontColourButton; // for text display option + ColourCombo* mBgColourButton; // for file display option + QHBox* mBgColourBox; + SpecialActionsButton* mSpecialActionsButton; + Reminder* mReminder; + bool mReminderDeferral; + bool mReminderArchived; + // Text message alarm widgets + TextEdit* mTextMessageEdit; // text message edit box + // Text file alarm widgets + LineEdit* mFileMessageEdit; // text file URL edit box + QPushButton* mFileBrowseButton; // text file browse button + QString mFileDefaultDir; // default directory for browse button + // Command alarm widgets + QFrame* mCommandFrame; + CheckBox* mCmdTypeScript; // entering a script + LineEdit* mCmdCommandEdit; // command line edit box + TextEdit* mCmdScriptEdit; // script edit box + ButtonGroup* mCmdOutputGroup; // what to do with command output + LineEdit* mCmdLogFileEdit; // log file URL edit box + QWidget* mCmdPadding; + // Email alarm widgets + QFrame* mEmailFrame; + EmailIdCombo* mEmailFromList; + LineEdit* mEmailToEdit; + QPushButton* mEmailAddressButton; // email open address book button + QLineEdit* mEmailSubjectEdit; + TextEdit* mEmailMessageEdit; // email body edit box + QComboBox* mEmailAttachList; + QPushButton* mEmailAddAttachButton; + QPushButton* mEmailRemoveButton; + CheckBox* mEmailBcc; + QString mAttachDefaultDir; + + QGroupBox* mDeferGroup; + QLabel* mDeferTimeLabel; + QPushButton* mDeferChangeButton; + + AlarmTimeWidget* mTimeWidget; + LateCancelSelector* mLateCancel; + CheckBox* mShowInKorganizer; + + RecurrenceEdit* mRecurrenceEdit; + + QString mAlarmMessage; // message text/file name/command/email message + DateTime mAlarmDateTime; + DateTime mDeferDateTime; + EmailAddressList mEmailAddresses; // list of addresses to send email to + QStringList mEmailAttachments; // list of email attachment file names + unsigned long mKMailSerialNumber; // if email text, message's KMail serial number, else 0 + int mDeferGroupHeight; // height added by deferred time widget + int mDesktop; // desktop to display the dialog in + bool mTemplate; // editing an alarm template + bool mExpiredRecurrence; // initially a recurrence which has expired + mutable bool mChanged; // controls other than deferral have changed since dialog was displayed + mutable bool mOnlyDeferred; // the only change made in the dialog was to the existing deferral + bool mDesiredReadOnly; // the specified read-only status of the dialogue + bool mReadOnly; // the actual read-only status of the dialogue + + // Initial state of all controls + KAEvent* mSavedEvent; + QString mSavedTemplateName; // mTemplateName value + QButton* mSavedTemplateTimeType; // selected button in mTemplateTimeGroup + QTime mSavedTemplateTime; // mTemplateTime value + int mSavedTemplateAfterTime; // mTemplateAfterTime value + QButton* mSavedTypeRadio; // mMessageRadio, etc + SoundPicker::Type mSavedSoundType; // mSoundPicker sound type + bool mSavedRepeatSound; // mSoundPicker repeat status + QString mSavedSoundFile; // mSoundPicker sound file + float mSavedSoundVolume; // mSoundPicker volume + float mSavedSoundFadeVolume;// mSoundPicker fade volume + int mSavedSoundFadeSeconds;// mSoundPicker fade time + bool mSavedConfirmAck; // mConfirmAck status + QFont mSavedFont; // mFontColourButton font + QColor mSavedBgColour; // mFontColourButton background colour + QColor mSavedFgColour; // mFontColourButton foreground colour + QString mSavedPreAction; // mSpecialActionsButton pre-alarm action + QString mSavedPostAction; // mSpecialActionsButton post-alarm action + int mSavedReminder; // mReminder value + bool mSavedOnceOnly; // mReminder once-only status + QString mSavedTextFileCommandMessage; // mTextMessageEdit/mFileMessageEdit/mCmdCommandEdit/mEmailMessageEdit value + QString mSavedEmailFrom; // mEmailFromList current value + QString mSavedEmailTo; // mEmailToEdit value + QString mSavedEmailSubject; // mEmailSubjectEdit value + QStringList mSavedEmailAttach; // mEmailAttachList values + bool mSavedEmailBcc; // mEmailBcc status + bool mSavedCmdScript; // mCmdTypeScript status + QButton* mSavedCmdOutputRadio; // selected button in mCmdOutputGroup + QString mSavedCmdLogFile; // mCmdLogFileEdit value + DateTime mSavedDateTime; // mTimeWidget value + int mSavedRecurrenceType; // RecurrenceEdit::RepeatType value + int mSavedLateCancel; // mLateCancel value + bool mSavedAutoClose; // mLateCancel->isAutoClose() value + bool mSavedShowInKorganizer; // mShowInKorganizer status +}; + +#endif // EDITDLG_H |