kalarm Library API Documentation

prefsettings.cpp

00001 /*
00002  *  prefsettings.cpp  -  program preference settings
00003  *  Program:  kalarm
00004  *  (C) 2001, 2002 by David Jarvie  software@astrojar.org.uk
00005  *
00006  *  This program is free software; you can redistribute it and/or modify
00007  *  it under the terms of the GNU General Public License as published by
00008  *  the Free Software Foundation; either version 2 of the License, or
00009  *  (at your option) any later version.
00010  *
00011  *  This program is distributed in the hope that it will be useful,
00012  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
00013  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
00014  *  GNU General Public License for more details.
00015  *
00016  *  You should have received a copy of the GNU General Public License
00017  *  along with this program; if not, write to the Free Software
00018  *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
00019  */
00020 
00021 #include <kglobal.h>
00022 #include <kconfig.h>
00023 
00024 #include "prefsettings.moc"
00025 
00026 
00027 // Default config file settings
00028 const bool   Settings::default_runInSystemTray         = true;
00029 const bool   Settings::default_disableAlarmsIfStopped  = true;
00030 const bool   Settings::default_autostartTrayIcon       = true;
00031 const bool   Settings::default_confirmAlarmDeletion    = true;
00032 const int    Settings::default_daemonTrayCheckInterval = 10;     // (seconds)
00033 const QColor Settings::default_defaultBgColour(red);
00034 const QFont  Settings::default_messageFont(QString::fromLatin1("Helvetica"), 16, QFont::Bold);
00035 const QTime  Settings::default_startOfDay(0, 0);
00036 const bool   Settings::default_defaultLateCancel       = false;
00037 const bool   Settings::default_defaultConfirmAck       = false;
00038 const bool   Settings::default_defaultBeep             = false;
00039 const bool   Settings::default_defaultEmailBcc         = false;
00040 const RecurrenceEdit::RepeatType Settings::default_defaultRecurPeriod = RecurrenceEdit::SUBDAILY;
00041 
00042 // Config file entry names
00043 static const QString GENERAL_SECTION        = QString::fromLatin1("General");
00044 static const QString MESSAGE_BG_COLOUR      = QString::fromLatin1("MessageBackgroundColour");
00045 static const QString MESSAGE_FONT           = QString::fromLatin1("MessageFont");
00046 static const QString RUN_IN_SYSTEM_TRAY     = QString::fromLatin1("RunInSystemTray");
00047 static const QString DISABLE_IF_STOPPED     = QString::fromLatin1("DisableAlarmsIfStopped");
00048 static const QString AUTOSTART_TRAY         = QString::fromLatin1("AutostartTray");
00049 static const QString CONFIRM_ALARM_DELETION = QString::fromLatin1("ConfirmAlarmDeletion");
00050 static const QString DAEMON_TRAY_INTERVAL   = QString::fromLatin1("DaemonTrayCheckInterval");
00051 static const QString START_OF_DAY           = QString::fromLatin1("StartOfDay");
00052 static const QString START_OF_DAY_CHECK     = QString::fromLatin1("Sod");
00053 static const QString DEFAULTS_SECTION       = QString::fromLatin1("Defaults");
00054 static const QString DEF_LATE_CANCEL        = QString::fromLatin1("DefLateCancel");
00055 static const QString DEF_CONFIRM_ACK        = QString::fromLatin1("DefConfirmAck");
00056 static const QString DEF_BEEP               = QString::fromLatin1("DefBeep");
00057 static const QString DEF_EMAIL_BCC          = QString::fromLatin1("DefEmailBcc");
00058 static const QString DEF_RECUR_PERIOD       = QString::fromLatin1("DefRecurPeriod");
00059 
00060 inline int Settings::startOfDayCheck() const
00061 {
00062         // Combine with a 'random' constant to prevent 'clever' people fiddling the
00063         // value, and thereby screwing things up.
00064         return QTime().msecsTo(mStartOfDay) ^ 0x82451630;
00065 }
00066 
00067 
00068 Settings::Settings(QWidget* parent)
00069         : QObject(parent)
00070 {
00071         loadSettings();
00072 }
00073 
00074 void Settings::loadSettings()
00075 {
00076         KConfig* config = KGlobal::config();
00077         config->setGroup(GENERAL_SECTION);
00078         mDefaultBgColour         = config->readColorEntry(MESSAGE_BG_COLOUR, &default_defaultBgColour);
00079         mMessageFont             = config->readFontEntry(MESSAGE_FONT, &default_messageFont);
00080         mRunInSystemTray         = config->readBoolEntry(RUN_IN_SYSTEM_TRAY, default_runInSystemTray);
00081         mDisableAlarmsIfStopped  = config->readBoolEntry(DISABLE_IF_STOPPED, default_disableAlarmsIfStopped);
00082         mAutostartTrayIcon       = config->readBoolEntry(AUTOSTART_TRAY, default_autostartTrayIcon);
00083         mConfirmAlarmDeletion    = config->readBoolEntry(CONFIRM_ALARM_DELETION, default_confirmAlarmDeletion);
00084         mDaemonTrayCheckInterval = config->readNumEntry(DAEMON_TRAY_INTERVAL, default_daemonTrayCheckInterval);
00085         QDateTime defStartOfDay(QDate(1900,1,1), default_startOfDay);
00086         mStartOfDay              = config->readDateTimeEntry(START_OF_DAY, &defStartOfDay).time();
00087         mStartOfDayChanged       = (config->readNumEntry(START_OF_DAY_CHECK, 0) != startOfDayCheck());
00088         config->setGroup(DEFAULTS_SECTION);
00089         mDefaultLateCancel       = config->readBoolEntry(DEF_LATE_CANCEL, default_defaultLateCancel);
00090         mDefaultConfirmAck       = config->readBoolEntry(DEF_CONFIRM_ACK, default_defaultConfirmAck);
00091         mDefaultBeep             = config->readBoolEntry(DEF_BEEP, default_defaultBeep);
00092         mDefaultEmailBcc         = config->readBoolEntry(DEF_EMAIL_BCC, default_defaultEmailBcc);
00093         int recurPeriod          = config->readNumEntry(DEF_RECUR_PERIOD, default_defaultRecurPeriod);
00094         mDefaultRecurPeriod      = (recurPeriod < RecurrenceEdit::SUBDAILY || recurPeriod > RecurrenceEdit::ANNUAL)
00095                                  ? default_defaultRecurPeriod : (RecurrenceEdit::RepeatType)recurPeriod;
00096         emit settingsChanged();
00097 }
00098 
00099 void Settings::saveSettings(bool syncToDisc)
00100 {
00101         KConfig* config = KGlobal::config();
00102         config->setGroup(GENERAL_SECTION);
00103         config->writeEntry(MESSAGE_BG_COLOUR, mDefaultBgColour);
00104         config->writeEntry(MESSAGE_FONT, mMessageFont);
00105         config->writeEntry(RUN_IN_SYSTEM_TRAY, mRunInSystemTray);
00106         config->writeEntry(DISABLE_IF_STOPPED, mDisableAlarmsIfStopped);
00107         config->writeEntry(AUTOSTART_TRAY, mAutostartTrayIcon);
00108         config->writeEntry(CONFIRM_ALARM_DELETION, mConfirmAlarmDeletion);
00109         config->writeEntry(DAEMON_TRAY_INTERVAL, mDaemonTrayCheckInterval);
00110         config->writeEntry(START_OF_DAY, QDateTime(QDate(1900,1,1), mStartOfDay));
00111         // Start-of-day check value is only written once the start-of-day time has been processed.
00112         config->setGroup(DEFAULTS_SECTION);
00113         config->writeEntry(DEF_LATE_CANCEL, mDefaultLateCancel);
00114         config->writeEntry(DEF_CONFIRM_ACK, mDefaultConfirmAck);
00115         config->writeEntry(DEF_BEEP, mDefaultBeep);
00116 #ifdef KALARM_EMAIL
00117         config->writeEntry(DEF_EMAIL_BCC, mDefaultEmailBcc);
00118 #endif
00119         config->writeEntry(DEF_RECUR_PERIOD, mDefaultRecurPeriod);
00120         if (syncToDisc)
00121                 config->sync();
00122 }
00123 
00124 void Settings::updateStartOfDayCheck()
00125 {
00126         KConfig* config = KGlobal::config();
00127         config->setGroup(GENERAL_SECTION);
00128         config->writeEntry(START_OF_DAY_CHECK, startOfDayCheck());
00129         config->sync();
00130         mStartOfDayChanged = false;
00131 }
00132 
00133 void Settings::emitSettingsChanged()
00134 {
00135         emit settingsChanged();
00136 }
KDE Logo
This file is part of the documentation for kdelibs Version 3.1.5.
Documentation copyright © 1996-2002 the KDE developers.
Generated on Sun Feb 15 11:41:03 2004 by doxygen 1.3.5 written by Dimitri van Heesch, © 1997-2001