koprefs.cpp
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #include <time.h>
00026 #include <unistd.h>
00027
00028 #include <qdir.h>
00029 #include <qstring.h>
00030 #include <qfont.h>
00031 #include <qcolor.h>
00032 #include <qstringlist.h>
00033
00034 #include <kglobalsettings.h>
00035 #include <kglobal.h>
00036 #include <kconfig.h>
00037 #include <klocale.h>
00038 #include <kdebug.h>
00039 #include <kemailsettings.h>
00040 #include <kstaticdeleter.h>
00041 #include <kstringhandler.h>
00042
00043 #include "koprefs.h"
00044
00045 KOPrefs *KOPrefs::mInstance = 0;
00046 static KStaticDeleter<KOPrefs> insd;
00047
00048 QColor getTextColor(const QColor &c)
00049 {
00050 float luminance = (c.red() * 0.299) + (c.green() * 0.587) + (c.blue() * 0.114);
00051 return (luminance > 128.0) ? QColor( 0, 0 ,0 ) : QColor( 255, 255 ,255 );
00052 }
00053
00054
00055 KOPrefs::KOPrefs() :
00056 KOPrefsBase()
00057 {
00058 mCategoryColors.setAutoDelete(true);
00059
00060 mDefaultCategoryColor = QColor(151, 235, 121);
00061
00062 mDefaultMonthViewFont = KGlobalSettings::generalFont();
00063
00064 mDefaultMonthViewFont.setPointSize(mDefaultMonthViewFont.pointSize()-2);
00065
00066 KConfigSkeleton::setCurrentGroup("General");
00067
00068 addItemPath("Html Export File",mHtmlExportFile,
00069 QDir::homeDirPath() + "/" + i18n("Default export file", "calendar.html"));
00070
00071 monthViewFontItem()->setDefaultValue( mDefaultMonthViewFont );
00072 eventColorItem()->setDefaultValue( mDefaultCategoryColor );
00073 }
00074
00075
00076 KOPrefs::~KOPrefs()
00077 {
00078 kdDebug(5850) << "KOPrefs::~KOPrefs()" << endl;
00079 }
00080
00081
00082 KOPrefs *KOPrefs::instance()
00083 {
00084 if ( !mInstance ) {
00085 insd.setObject( mInstance, new KOPrefs() );
00086 mInstance->readConfig();
00087 }
00088
00089 return mInstance;
00090 }
00091
00092 void KOPrefs::usrSetDefaults()
00093 {
00094
00095
00096
00097 KEMailSettings settings;
00098 mName = settings.getSetting(KEMailSettings::RealName);
00099 mEmail = settings.getSetting(KEMailSettings::RealName);
00100 fillMailDefaults();
00101
00102 mMonthViewFont = mDefaultMonthViewFont;
00103
00104 setTimeZoneIdDefault();
00105
00106 mRememberPublishPw = false;
00107 mRememberRetrievePw = false;
00108
00109 KPimPrefs::usrSetDefaults();
00110 }
00111
00112 void KOPrefs::fillMailDefaults()
00113 {
00114 if (mName.isEmpty()) mName = i18n("Anonymous");
00115 if (mEmail.isEmpty()) mEmail = i18n("nobody@nowhere");
00116 }
00117
00118 void KOPrefs::setTimeZoneIdDefault()
00119 {
00120 QString zone;
00121
00122 char zonefilebuf[100];
00123 int len = readlink("/etc/localtime",zonefilebuf,100);
00124 if (len > 0 && len < 100) {
00125 zonefilebuf[len] = '\0';
00126 zone = zonefilebuf;
00127 zone = zone.mid(zone.find("zoneinfo/") + 9);
00128 } else {
00129 tzset();
00130 zone = tzname[0];
00131 }
00132
00133 kdDebug () << "----- time zone: " << zone << endl;
00134
00135 mTimeZoneId = zone;
00136 }
00137
00138 void KOPrefs::setCategoryDefaults()
00139 {
00140 mCustomCategories.clear();
00141
00142 mCustomCategories << i18n("Appointment") << i18n("Business")
00143 << i18n("Meeting") << i18n("Phone Call") << i18n("Education")
00144 << i18n("Holiday") << i18n("Vacation") << i18n("Special Occasion")
00145 << i18n("Personal") << i18n("Travel") << i18n("Miscellaneous")
00146 << i18n("Birthday");
00147
00148 QStringList::Iterator it;
00149 for (it = mCustomCategories.begin();it != mCustomCategories.end();++it ) {
00150 setCategoryColor(*it,mDefaultCategoryColor);
00151 }
00152 }
00153
00154
00155 void KOPrefs::usrReadConfig()
00156 {
00157 config()->setGroup("General");
00158 mCustomCategories = config()->readListEntry("Custom Categories");
00159 if (mCustomCategories.isEmpty()) setCategoryDefaults();
00160
00161 config()->setGroup("Personal Settings");
00162 mName = config()->readEntry("user_name");
00163 mEmail = config()->readEntry("user_email");
00164 fillMailDefaults();
00165
00166
00167
00168 config()->setGroup("Category Colors");
00169 QValueList<QColor> oldCategoryColors;
00170 QStringList::Iterator it;
00171 for (it = mCustomCategories.begin();it != mCustomCategories.end();++it ) {
00172 QColor c = config()->readColorEntry(*it, &mDefaultCategoryColor);
00173 oldCategoryColors.append( (c == QColor(196,196,196)) ?
00174 mDefaultCategoryColor : c);
00175 }
00176
00177
00178 config()->setGroup("Category Colors2");
00179 QValueList<QColor>::Iterator it2;
00180 for (it = mCustomCategories.begin(), it2 = oldCategoryColors.begin();
00181 it != mCustomCategories.end(); ++it, ++it2 ) {
00182 setCategoryColor(*it,config()->readColorEntry(*it, &*it2));
00183 }
00184
00185 if (mTimeZoneId.isEmpty()) {
00186 setTimeZoneIdDefault();
00187 }
00188
00189 config()->setGroup("Groupware");
00190 if( mRememberPublishPw )
00191 mPublishPassword = KStringHandler::obscure( config()->readEntry( "Publish Server Password" ) );
00192 if( mRememberRetrievePw )
00193 mRetrievePassword = KStringHandler::obscure( config()->readEntry( "Retrieve Server Password" ) );
00194
00195 KPimPrefs::usrReadConfig();
00196 }
00197
00198
00199 void KOPrefs::usrWriteConfig()
00200 {
00201 config()->setGroup("General");
00202 config()->writeEntry("Custom Categories",mCustomCategories);
00203
00204 config()->setGroup("Personal Settings");
00205 config()->writeEntry("user_name",mName);
00206 config()->writeEntry("user_email",mEmail);
00207
00208 config()->setGroup("Category Colors2");
00209 QDictIterator<QColor> it(mCategoryColors);
00210 while (it.current()) {
00211 config()->writeEntry(it.currentKey(),*(it.current()));
00212 ++it;
00213 }
00214
00215 config()->setGroup( "Groupware" );
00216 if( mRememberPublishPw )
00217 config()->writeEntry( "Publish Server Password", KStringHandler::obscure( mPublishPassword ) );
00218 else
00219 config()->deleteEntry( "Publish Server Password" );
00220 if( mRememberRetrievePw )
00221 config()->writeEntry( "Retrieve Server Password", KStringHandler::obscure( mRetrievePassword ) );
00222 else
00223 config()->deleteEntry( "Retrieve Server Password" );
00224
00225 KPimPrefs::usrWriteConfig();
00226 }
00227
00228 void KOPrefs::setCategoryColor(QString cat,const QColor & color)
00229 {
00230 mCategoryColors.replace(cat,new QColor(color));
00231 }
00232
00233 QColor *KOPrefs::categoryColor(QString cat)
00234 {
00235 QColor *color = 0;
00236
00237 if (!cat.isEmpty()) color = mCategoryColors[cat];
00238
00239 if (color) return color;
00240 else return &mDefaultCategoryColor;
00241 }
00242
00243 void KOPrefs::setFullName(const QString &name)
00244 {
00245 mName = name;
00246 }
00247
00248 void KOPrefs::setEmail(const QString &email)
00249 {
00250 mEmail = email;
00251 }
00252
00253 QString KOPrefs::fullName()
00254 {
00255 if (mEmailControlCenter) {
00256 KEMailSettings settings;
00257 return settings.getSetting(KEMailSettings::RealName);
00258 } else {
00259 return mName;
00260 }
00261 }
00262
00263 QString KOPrefs::email()
00264 {
00265 if (mEmailControlCenter) {
00266 KEMailSettings settings;
00267 return settings.getSetting(KEMailSettings::EmailAddress);
00268 } else {
00269 return mEmail;
00270 }
00271 }
This file is part of the documentation for korganizer Library Version 3.2.2.