summaryrefslogtreecommitdiffstats
path: root/kalarm/prefdlg.h
diff options
context:
space:
mode:
Diffstat (limited to 'kalarm/prefdlg.h')
-rw-r--r--kalarm/prefdlg.h270
1 files changed, 270 insertions, 0 deletions
diff --git a/kalarm/prefdlg.h b/kalarm/prefdlg.h
new file mode 100644
index 000000000..a5f1ee9a1
--- /dev/null
+++ b/kalarm/prefdlg.h
@@ -0,0 +1,270 @@
+/*
+ * prefdlg.h - program preferences dialog
+ * Program: kalarm
+ * Copyright © 2001-2007 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 PREFDLG_H
+#define PREFDLG_H
+
+#include <qsize.h>
+#include <qdatetime.h>
+#include <ktabctl.h>
+#include <kdialogbase.h>
+
+#include "preferences.h"
+#include "recurrenceedit.h"
+#include "soundpicker.h"
+
+class QButtonGroup;
+class QCheckBox;
+class QRadioButton;
+class QPushButton;
+class QComboBox;
+class QLineEdit;
+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 QWidget
+{
+ Q_OBJECT
+ public:
+ PrefsTabBase(QVBox*);
+
+ void setPreferences();
+ virtual void restore() = 0;
+ virtual void apply(bool syncToDisc) = 0;
+ virtual void setDefaults() = 0;
+ static int indentWidth() { return mIndentWidth; }
+
+ protected:
+ QVBox* mPage;
+
+ private:
+ static int mIndentWidth; // indent width for checkboxes etc.
+};
+
+
+// Miscellaneous tab of the Preferences dialog
+class MiscPrefTab : public PrefsTabBase
+{
+ Q_OBJECT
+ public:
+ MiscPrefTab(QVBox*);
+
+ 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);
+
+ QCheckBox* mAutostartDaemon;
+ QRadioButton* mRunInSystemTray;
+ QRadioButton* mRunOnDemand;
+ QCheckBox* mDisableAlarmsIfStopped;
+ QCheckBox* mQuitWarn;
+ QCheckBox* mAutostartTrayIcon;
+ QCheckBox* mConfirmAlarmDeletion;
+ QCheckBox* mKeepExpired;
+ QCheckBox* mPurgeExpired;
+ SpinBox* mPurgeAfter;
+ QLabel* mPurgeAfterLabel;
+ QPushButton* mClearExpired;
+ TimeEdit* mStartOfDay;
+ QButtonGroup* mXtermType;
+ QLineEdit* 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(QVBox*);
+
+ QString 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 QString& address);
+ void setEmailBccAddress(bool useControlCentre, const QString& address);
+ QString validateAddr(ButtonGroup*, QLineEdit* addr, const QString& msg);
+
+ ButtonGroup* mEmailClient;
+ ButtonGroup* mFromAddressGroup;
+ QLineEdit* mEmailAddress;
+ ButtonGroup* mBccAddressGroup;
+ QLineEdit* mEmailBccAddress;
+ QCheckBox* mEmailQueuedNotify;
+ QCheckBox* mEmailCopyToKMail;
+ bool mAddressChanged;
+ bool mBccAddressChanged;
+};
+
+
+// Edit defaults tab of the Preferences dialog
+class EditPrefTab : public PrefsTabBase
+{
+ Q_OBJECT
+ public:
+ EditPrefTab(QVBox*);
+
+ QString validate();
+ virtual void restore();
+ virtual void apply(bool syncToDisc);
+ virtual void setDefaults();
+
+ private slots:
+ void slotBrowseSoundFile();
+
+ private:
+ QCheckBox* mAutoClose;
+ QCheckBox* mConfirmAck;
+ QComboBox* mReminderUnits;
+ SpecialActionsButton* mSpecialActionsButton;
+ QCheckBox* mCmdScript;
+ QCheckBox* mCmdXterm;
+ QCheckBox* mEmailBcc;
+ QComboBox* mSound;
+ QLabel* mSoundFileLabel;
+ QLineEdit* mSoundFile;
+ QPushButton* mSoundFileBrowse;
+ QCheckBox* mSoundRepeat;
+ QCheckBox* mCopyToKOrganizer;
+ QCheckBox* mLateCancel;
+ QComboBox* mRecurPeriod;
+ QButtonGroup* 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(QVBox*);
+
+ 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 QString& prefix);
+
+ QCheckBox* mTooltipShowAlarms;
+ QCheckBox* mTooltipMaxAlarms;
+ SpinBox* mTooltipMaxAlarmCount;
+ QCheckBox* mTooltipShowTime;
+ QCheckBox* mTooltipShowTimeTo;
+ QLineEdit* mTooltipTimeToPrefix;
+ QLabel* mTooltipTimeToPrefixLabel;
+ QCheckBox* mModalMessages;
+ SpinBox* mDaemonTrayCheckInterval;
+};
+
+
+// Font & Colour tab of the Preferences dialog
+class FontColourPrefTab : public PrefsTabBase
+{
+ Q_OBJECT
+ public:
+ FontColourPrefTab(QVBox*);
+
+ virtual void restore();
+ virtual void apply(bool syncToDisc);
+ virtual void setDefaults();
+
+ private:
+ FontColourChooser* mFontChooser;
+ KColorCombo* mDisabledColour;
+ KColorCombo* mExpiredColour;
+};
+
+#endif // PREFDLG_H