/* * prefdlg.h - program preferences dialog * Program: kalarm * Copyright © 2001-2007 by David Jarvie * * 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 PREFDLG_H #define PREFDLG_H #include #include #include #include #include "preferences.h" #include "recurrenceedit.h" #include "soundpicker.h" class TQButtonGroup; class TQCheckBox; class TQRadioButton; class TQPushButton; class TQComboBox; class TQLineEdit; class KColorCombo; class FontColourChooser; class ButtonGroup; class TimeEdit; class SpinBox; class SpecialActionsButton; class FontColourPrefTab; class EditPrefTab; class EmailPrefTab; class ViewPrefTab; class MiscPrefTab; // The Preferences dialog class KAlarmPrefDlg : public KDialogBase { Q_OBJECT public: static void display(); ~KAlarmPrefDlg(); FontColourPrefTab* mFontColourPage; EditPrefTab* mEditPage; EmailPrefTab* mEmailPage; ViewPrefTab* mViewPage; MiscPrefTab* mMiscPage; protected slots: virtual void slotOk(); virtual void slotApply(); virtual void slotHelp(); virtual void slotDefault(); virtual void slotCancel(); private: KAlarmPrefDlg(); void restore(); static KAlarmPrefDlg* mInstance; bool mValid; }; // Base class for each tab in the Preferences dialog class PrefsTabBase : public TQWidget { Q_OBJECT public: PrefsTabBase(TQVBox*); void setPreferences(); virtual void restore() = 0; virtual void apply(bool syncToDisc) = 0; virtual void setDefaults() = 0; static int indentWidth() { return mIndentWidth; } protected: TQVBox* mPage; private: static int mIndentWidth; // indent width for checkboxes etc. }; // Miscellaneous tab of the Preferences dialog class MiscPrefTab : public PrefsTabBase { Q_OBJECT public: MiscPrefTab(TQVBox*); virtual void restore(); virtual void apply(bool syncToDisc); virtual void setDefaults(); private slots: void slotAutostartDaemonClicked(); void slotRunModeToggled(bool); void slotDisableIfStoppedToggled(bool); void slotExpiredToggled(bool); void slotClearExpired(); void slotOtherTerminalToggled(bool); //#ifdef AUTOSTART_BY_KALARMD void slotAutostartToggled(bool); //#endif private: void setExpiredControls(int purgeDays); TQCheckBox* mAutostartDaemon; TQRadioButton* mRunInSystemTray; TQRadioButton* mRunOnDemand; TQCheckBox* mDisableAlarmsIfStopped; TQCheckBox* mQuitWarn; TQCheckBox* mAutostartTrayIcon; TQCheckBox* mConfirmAlarmDeletion; TQCheckBox* mKeepExpired; TQCheckBox* mPurgeExpired; SpinBox* mPurgeAfter; TQLabel* mPurgeAfterLabel; TQPushButton* mClearExpired; TimeEdit* mStartOfDay; TQButtonGroup* mXtermType; TQLineEdit* mXtermCommand; int mXtermFirst; // id of first terminal window radio button int mXtermCount; // number of terminal window types }; // Email tab of the Preferences dialog class EmailPrefTab : public PrefsTabBase { Q_OBJECT public: EmailPrefTab(TQVBox*); TQString validate(); virtual void restore(); virtual void apply(bool syncToDisc); virtual void setDefaults(); private slots: void slotEmailClientChanged(int); void slotFromAddrChanged(int); void slotBccAddrChanged(int); void slotAddressChanged() { mAddressChanged = true; } private: void setEmailAddress(Preferences::MailFrom, const TQString& address); void setEmailBccAddress(bool useControlCentre, const TQString& address); TQString validateAddr(ButtonGroup*, TQLineEdit* addr, const TQString& msg); ButtonGroup* mEmailClient; ButtonGroup* mFromAddressGroup; TQLineEdit* mEmailAddress; ButtonGroup* mBccAddressGroup; TQLineEdit* mEmailBccAddress; TQCheckBox* mEmailQueuedNotify; TQCheckBox* mEmailCopyToKMail; bool mAddressChanged; bool mBccAddressChanged; }; // Edit defaults tab of the Preferences dialog class EditPrefTab : public PrefsTabBase { Q_OBJECT public: EditPrefTab(TQVBox*); TQString validate(); virtual void restore(); virtual void apply(bool syncToDisc); virtual void setDefaults(); private slots: void slotBrowseSoundFile(); private: TQCheckBox* mAutoClose; TQCheckBox* mConfirmAck; TQComboBox* mReminderUnits; SpecialActionsButton* mSpecialActionsButton; TQCheckBox* mCmdScript; TQCheckBox* mCmdXterm; TQCheckBox* mEmailBcc; TQComboBox* mSound; TQLabel* mSoundFileLabel; TQLineEdit* mSoundFile; TQPushButton* mSoundFileBrowse; TQCheckBox* mSoundRepeat; TQCheckBox* mCopyToKOrganizer; TQCheckBox* mLateCancel; TQComboBox* mRecurPeriod; TQButtonGroup* mFeb29; static int soundIndex(SoundPicker::Type); static int recurIndex(RecurrenceEdit::RepeatType); }; // View tab of the Preferences dialog class ViewPrefTab : public PrefsTabBase { Q_OBJECT public: ViewPrefTab(TQVBox*); virtual void restore(); virtual void apply(bool syncToDisc); virtual void setDefaults(); private slots: void slotTooltipAlarmsToggled(bool); void slotTooltipMaxToggled(bool); void slotTooltipTimeToggled(bool); void slotTooltipTimeToToggled(bool); private: void setTooltip(int maxAlarms, bool time, bool timeTo, const TQString& prefix); TQCheckBox* mTooltipShowAlarms; TQCheckBox* mTooltipMaxAlarms; SpinBox* mTooltipMaxAlarmCount; TQCheckBox* mTooltipShowTime; TQCheckBox* mTooltipShowTimeTo; TQLineEdit* mTooltipTimeToPrefix; TQLabel* mTooltipTimeToPrefixLabel; TQCheckBox* mModalMessages; SpinBox* mDaemonTrayCheckInterval; }; // Font & Colour tab of the Preferences dialog class FontColourPrefTab : public PrefsTabBase { Q_OBJECT public: FontColourPrefTab(TQVBox*); virtual void restore(); virtual void apply(bool syncToDisc); virtual void setDefaults(); private: FontColourChooser* mFontChooser; KColorCombo* mDisabledColour; KColorCombo* mExpiredColour; }; #endif // PREFDLG_H