diff options
Diffstat (limited to 'kalarm/preferences.h')
-rw-r--r-- | kalarm/preferences.h | 235 |
1 files changed, 235 insertions, 0 deletions
diff --git a/kalarm/preferences.h b/kalarm/preferences.h new file mode 100644 index 000000000..f0eeb4ea6 --- /dev/null +++ b/kalarm/preferences.h @@ -0,0 +1,235 @@ +/* + * preferences.h - program preference settings + * Program: kalarm + * Copyright © 2001-2007 by David Jarvie <[email protected]> + * + * 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 PREFERENCES_H +#define PREFERENCES_H + +#include "kalarm.h" + +#include <qobject.h> +#include <qcolor.h> +#include <qfont.h> +#include <qdatetime.h> +#include <qvaluelist.h> +class QWidget; + +#include "colourlist.h" +#include "editdlg.h" +#include "karecurrence.h" +#include "recurrenceedit.h" +#include "soundpicker.h" +#include "timeperiod.h" + + +// Settings configured in the Preferences dialog +class Preferences : public QObject +{ + Q_OBJECT + public: + enum MailClient { SENDMAIL, KMAIL }; + enum MailFrom { MAIL_FROM_KMAIL, MAIL_FROM_CONTROL_CENTRE, MAIL_FROM_ADDR }; + enum CmdLogType { DISCARD_OUTPUT, LOG_TO_FILE, EXEC_IN_TERMINAL }; + + static void initialise(); + static void save(bool syncToDisc = true); + static void syncToDisc(); + static void updateStartOfDayCheck(); + static void connect(const char* signal, const QObject* receiver, const char* member); + + // Access to settings + static const ColourList& messageColours() { return mMessageColours; } + static QColor defaultBgColour() { return mDefaultBgColour; } + static QColor defaultFgColour() { return default_defaultFgColour; } + static const QFont& messageFont() { return mMessageFont; } + static const QTime& startOfDay() { return mStartOfDay; } + static bool hasStartOfDayChanged() { return mStartOfDayChanged; } + static bool runInSystemTray() { return mRunInSystemTray; } + static bool disableAlarmsIfStopped() { return mDisableAlarmsIfStopped; } + static bool quitWarn() { return notifying(QUIT_WARN); } + static void setQuitWarn(bool yes) { setNotify(QUIT_WARN, yes); } + static bool autostartTrayIcon() { return mAutostartTrayIcon; } + static bool confirmAlarmDeletion() { return notifying(CONFIRM_ALARM_DELETION); } + static void setConfirmAlarmDeletion(bool yes){ setNotify(CONFIRM_ALARM_DELETION, yes); } + static bool modalMessages() { return mModalMessages; } + static int messageButtonDelay() { return mMessageButtonDelay; } + static int tooltipAlarmCount() { return mTooltipAlarmCount; } + static bool showTooltipAlarmTime() { return mShowTooltipAlarmTime; } + static bool showTooltipTimeToAlarm() { return mShowTooltipTimeToAlarm; } + static const QString& tooltipTimeToPrefix() { return mTooltipTimeToPrefix; } + static int daemonTrayCheckInterval() { return mDaemonTrayCheckInterval; } + static MailClient emailClient() { return mEmailClient; } + static bool emailCopyToKMail() { return mEmailCopyToKMail && mEmailClient == SENDMAIL; } + static bool emailQueuedNotify() { return notifying(EMAIL_QUEUED_NOTIFY); } + static void setEmailQueuedNotify(bool yes) { setNotify(EMAIL_QUEUED_NOTIFY, yes); } + static MailFrom emailFrom() { return mEmailFrom; } + static bool emailBccUseControlCentre() { return mEmailBccFrom == MAIL_FROM_CONTROL_CENTRE; } + static QString emailAddress(); + static QString emailBccAddress(); + static QString cmdXTermCommand() { return mCmdXTermCommand; } + static QColor disabledColour() { return mDisabledColour; } + static QColor expiredColour() { return mExpiredColour; } + static int expiredKeepDays() { return mExpiredKeepDays; } + static SoundPicker::Type defaultSoundType() { return mDefaultSoundType; } + static const QString& defaultSoundFile() { return mDefaultSoundFile; } + static float defaultSoundVolume() { return mDefaultSoundVolume; } + static bool defaultSoundRepeat() { return mDefaultSoundRepeat; } + static int defaultLateCancel() { return mDefaultLateCancel; } + static bool defaultAutoClose() { return mDefaultAutoClose; } + static bool defaultConfirmAck() { return mDefaultConfirmAck; } + static bool defaultCopyToKOrganizer() { return mDefaultCopyToKOrganizer; } + static bool defaultCmdScript() { return mDefaultCmdScript; } + static EditAlarmDlg::CmdLogType + defaultCmdLogType() { return mDefaultCmdLogType; } + static QString defaultCmdLogFile() { return mDefaultCmdLogFile; } + static bool defaultEmailBcc() { return mDefaultEmailBcc; } + static RecurrenceEdit::RepeatType + defaultRecurPeriod() { return mDefaultRecurPeriod; } + static KARecurrence::Feb29Type + defaultFeb29Type() { return mDefaultFeb29Type; } + static TimePeriod::Units defaultReminderUnits() { return mDefaultReminderUnits; } + static const QString& defaultPreAction() { return mDefaultPreAction; } + static const QString& defaultPostAction() { return mDefaultPostAction; } + + // Config file entry names for notification messages + static const QString QUIT_WARN; + static const QString CONFIRM_ALARM_DELETION; + static const QString EMAIL_QUEUED_NOTIFY; + + // Default values for settings + static const ColourList default_messageColours; + static const QColor default_defaultBgColour; + static const QColor default_defaultFgColour; + static const QFont& default_messageFont() { return mDefault_messageFont; }; + static const QTime default_startOfDay; + static const bool default_runInSystemTray; + static const bool default_disableAlarmsIfStopped; + static const bool default_quitWarn; + static const bool default_autostartTrayIcon; + static const bool default_confirmAlarmDeletion; + static const bool default_modalMessages; + static const int default_messageButtonDelay; + static const int default_tooltipAlarmCount; + static const bool default_showTooltipAlarmTime; + static const bool default_showTooltipTimeToAlarm; + static const QString default_tooltipTimeToPrefix; + static const int default_daemonTrayCheckInterval; + static const MailClient default_emailClient; + static const bool default_emailCopyToKMail; + static MailFrom default_emailFrom(); + static const bool default_emailQueuedNotify; + static const MailFrom default_emailBccFrom; + static const QString default_emailAddress; + static const QString default_emailBccAddress; + static const QColor default_disabledColour; + static const QColor default_expiredColour; + static const int default_expiredKeepDays; + static const QString default_defaultSoundFile; + static const float default_defaultSoundVolume; + static const int default_defaultLateCancel; + static const bool default_defaultAutoClose; + static const bool default_defaultCopyToKOrganizer; + static const SoundPicker::Type default_defaultSoundType; + static const bool default_defaultSoundRepeat; + static const bool default_defaultConfirmAck; + static const bool default_defaultCmdScript; + static const EditAlarmDlg::CmdLogType default_defaultCmdLogType; + static const bool default_defaultEmailBcc; + static const RecurrenceEdit::RepeatType default_defaultRecurPeriod; + static const KARecurrence::Feb29Type default_defaultFeb29Type; + static const TimePeriod::Units default_defaultReminderUnits; + static const QString default_defaultPreAction; + static const QString default_defaultPostAction; + + signals: + void preferencesChanged(); + void startOfDayChanged(const QTime& oldStartOfDay); + + private: + Preferences() { } // only one instance allowed + void emitPreferencesChanged(); + void emitStartOfDayChanged(); + + static void read(); + static void convertOldPrefs(); + static int startOfDayCheck(); + static QString emailFrom(MailFrom, bool useAddress, bool bcc); + static MailFrom emailFrom(const QString&); + static void setNotify(const QString& messageID, bool notify); + static bool notifying(const QString& messageID); + + static Preferences* mInstance; + static QFont mDefault_messageFont; + static QString mEmailAddress; + static QString mEmailBccAddress; + + // All the following members are accessed by the Preferences dialog classes + friend class MiscPrefTab; + friend class EditPrefTab; + friend class ViewPrefTab; + friend class FontColourPrefTab; + friend class EmailPrefTab; + static void setEmailAddress(MailFrom, const QString& address); + static void setEmailBccAddress(bool useControlCentre, const QString& address); + static ColourList mMessageColours; + static QColor mDefaultBgColour; + static QFont mMessageFont; + static QTime mStartOfDay; + static bool mRunInSystemTray; + static bool mDisableAlarmsIfStopped; + static bool mAutostartTrayIcon; + static bool mModalMessages; + static int mMessageButtonDelay; // 0 = scatter; -1 = no delay, no scatter; >0 = delay, no scatter + static int mTooltipAlarmCount; + static bool mShowTooltipAlarmTime; + static bool mShowTooltipTimeToAlarm; + static QString mTooltipTimeToPrefix; + static int mDaemonTrayCheckInterval; + static MailClient mEmailClient; + static MailFrom mEmailFrom; + static MailFrom mEmailBccFrom; + static bool mEmailCopyToKMail; + static QString mCmdXTermCommand; + static QColor mDisabledColour; + static QColor mExpiredColour; + static int mExpiredKeepDays; // 0 = don't keep, -1 = keep indefinitely + // Default settings for Edit Alarm dialog + static QString mDefaultSoundFile; + static float mDefaultSoundVolume; + static int mDefaultLateCancel; + static bool mDefaultAutoClose; + static bool mDefaultCopyToKOrganizer; + static SoundPicker::Type mDefaultSoundType; + static bool mDefaultSoundRepeat; + static bool mDefaultConfirmAck; + static bool mDefaultEmailBcc; + static bool mDefaultCmdScript; + static EditAlarmDlg::CmdLogType mDefaultCmdLogType; + static QString mDefaultCmdLogFile; + static RecurrenceEdit::RepeatType mDefaultRecurPeriod; + static KARecurrence::Feb29Type mDefaultFeb29Type; + static TimePeriod::Units mDefaultReminderUnits; + static QString mDefaultPreAction; + static QString mDefaultPostAction; + // Change tracking + static QTime mOldStartOfDay; // previous start-of-day time + static bool mStartOfDayChanged; // start-of-day check value doesn't tally with mStartOfDay +}; + +#endif // PREFERENCES_H |