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
#include <libkpimidentities/identitymanager.h>
00045
#include <libkpimidentities/identity.h>
00046
#include <libkdepim/email.h>
00047
#include <kabc/stdaddressbook.h>
00048
#include "kocore.h"
00049
00050 KOPrefs *KOPrefs::mInstance = 0;
00051
static KStaticDeleter<KOPrefs> insd;
00052
00053
QColor getTextColor(
const QColor &c)
00054 {
00055
float luminance = (c.red() * 0.299) + (c.green() * 0.587) + (c.blue() * 0.114);
00056
return (luminance > 128.0) ?
QColor( 0, 0 ,0 ) :
QColor( 255, 255 ,255 );
00057 }
00058
00059
00060 KOPrefs::KOPrefs() :
00061 KOPrefsBase()
00062 {
00063 mCategoryColors.setAutoDelete(
true);
00064
00065 mDefaultCategoryColor =
QColor(151, 235, 121);
00066
00067 mDefaultMonthViewFont = KGlobalSettings::generalFont();
00068
00069 mDefaultMonthViewFont.setPointSize(mDefaultMonthViewFont.pointSize()-2);
00070
00071 KConfigSkeleton::setCurrentGroup(
"General");
00072
00073 addItemPath(
"Html Export File",mHtmlExportFile,
00074 QDir::homeDirPath() +
"/" + i18n(
"Default export file",
"calendar.html"));
00075
00076 monthViewFontItem()->setDefaultValue( mDefaultMonthViewFont );
00077 eventColorItem()->setDefaultValue( mDefaultCategoryColor );
00078 }
00079
00080
00081 KOPrefs::~KOPrefs()
00082 {
00083 kdDebug(5850) <<
"KOPrefs::~KOPrefs()" << endl;
00084 }
00085
00086
00087 KOPrefs *KOPrefs::instance()
00088 {
00089
if ( !mInstance ) {
00090 insd.setObject( mInstance,
new KOPrefs() );
00091 mInstance->readConfig();
00092 }
00093
00094
return mInstance;
00095 }
00096
00097
void KOPrefs::usrSetDefaults()
00098 {
00099
00100
00101
00102 KEMailSettings settings;
00103 mName = settings.getSetting(KEMailSettings::RealName);
00104 mEmail = settings.getSetting(KEMailSettings::EmailAddress);
00105 fillMailDefaults();
00106
00107 mMonthViewFont = mDefaultMonthViewFont;
00108
00109 setTimeZoneIdDefault();
00110
00111 KPimPrefs::usrSetDefaults();
00112 }
00113
00114
void KOPrefs::fillMailDefaults()
00115 {
00116
QString defaultEmail = i18n(
"nobody@nowhere");
00117
if (mEmail.isEmpty())
00118 mEmail = defaultEmail;
00119
if ( mEmail == defaultEmail ) {
00120
00121 KEMailSettings settings;
00122
if ( !settings.getSetting( KEMailSettings::EmailAddress ).isEmpty() )
00123 mEmailControlCenter =
true;
00124 }
00125
if (mName.isEmpty()) mName = i18n(
"Anonymous");
00126 }
00127
00128
void KOPrefs::setTimeZoneIdDefault()
00129 {
00130
QString zone;
00131
00132
char zonefilebuf[100];
00133
int len = readlink(
"/etc/localtime",zonefilebuf,100);
00134
if (len > 0 && len < 100) {
00135 zonefilebuf[len] =
'\0';
00136 zone = zonefilebuf;
00137 zone = zone.mid(zone.find(
"zoneinfo/") + 9);
00138 }
else {
00139 tzset();
00140 zone = tzname[0];
00141 }
00142
00143 kdDebug () <<
"----- time zone: " << zone << endl;
00144
00145 mTimeZoneId = zone;
00146 }
00147
00148
void KOPrefs::setCategoryDefaults()
00149 {
00150 mCustomCategories.clear();
00151
00152 mCustomCategories << i18n(
"Appointment") << i18n(
"Business")
00153 << i18n(
"Meeting") << i18n(
"Phone Call") << i18n(
"Education")
00154 << i18n(
"Holiday") << i18n(
"Vacation") << i18n(
"Special Occasion")
00155 << i18n(
"Personal") << i18n(
"Travel") << i18n(
"Miscellaneous")
00156 << i18n(
"Birthday");
00157
00158 QStringList::Iterator it;
00159
for (it = mCustomCategories.begin();it != mCustomCategories.end();++it ) {
00160 setCategoryColor(*it,mDefaultCategoryColor);
00161 }
00162 }
00163
00164
00165
void KOPrefs::usrReadConfig()
00166 {
00167 config()->setGroup(
"General");
00168 mCustomCategories = config()->readListEntry(
"Custom Categories");
00169
if (mCustomCategories.isEmpty()) setCategoryDefaults();
00170
00171 config()->setGroup(
"Personal Settings");
00172 mName = config()->readEntry(
"user_name");
00173 mEmail = config()->readEntry(
"user_email");
00174 fillMailDefaults();
00175
00176
00177
00178 config()->setGroup(
"Category Colors");
00179
QValueList<QColor> oldCategoryColors;
00180 QStringList::Iterator it;
00181
for (it = mCustomCategories.begin();it != mCustomCategories.end();++it ) {
00182 QColor c = config()->readColorEntry(*it, &mDefaultCategoryColor);
00183 oldCategoryColors.append( (c == QColor(196,196,196)) ?
00184 mDefaultCategoryColor : c);
00185 }
00186
00187
00188 config()->setGroup(
"Category Colors2");
00189
QValueList<QColor>::Iterator it2;
00190
for (it = mCustomCategories.begin(), it2 = oldCategoryColors.begin();
00191 it != mCustomCategories.end(); ++it, ++it2 ) {
00192 setCategoryColor(*it,config()->readColorEntry(*it, &*it2));
00193 }
00194
00195
if (mTimeZoneId.isEmpty()) {
00196 setTimeZoneIdDefault();
00197 }
00198
00199 config()->setGroup(
"FreeBusy");
00200
#if 0
00201
if( mRememberRetrievePw )
00202 mRetrievePassword = KStringHandler::obscure( config()->readEntry(
"Retrieve Server Password" ) );
00203
#endif
00204
kdDebug()<<
"KOPrefs::usrReadConfig()"<<endl;
00205 KPimPrefs::usrReadConfig();
00206 }
00207
00208
00209
void KOPrefs::usrWriteConfig()
00210 {
00211 config()->setGroup(
"General");
00212 config()->writeEntry(
"Custom Categories",mCustomCategories);
00213
00214 config()->setGroup(
"Personal Settings");
00215 config()->writeEntry(
"user_name",mName);
00216 config()->writeEntry(
"user_email",mEmail);
00217
00218 config()->setGroup(
"Category Colors2");
00219
QDictIterator<QColor> it(mCategoryColors);
00220
while (it.current()) {
00221 config()->writeEntry(it.currentKey(),*(it.current()));
00222 ++it;
00223 }
00224
00225
if( !mFreeBusyPublishSavePassword ) {
00226 KConfigSkeleton::ItemPassword *i = freeBusyPublishPasswordItem();
00227 i->setValue(
"" );
00228 i->writeConfig( config() );
00229 }
00230
if( !mFreeBusyRetrieveSavePassword ) {
00231 KConfigSkeleton::ItemPassword *i = freeBusyRetrievePasswordItem();
00232 i->setValue(
"" );
00233 i->writeConfig( config() );
00234 }
00235
00236
#if 0
00237
if( mRememberRetrievePw )
00238 config()->writeEntry(
"Retrieve Server Password", KStringHandler::obscure( mRetrievePassword ) );
00239
else
00240 config()->deleteEntry(
"Retrieve Server Password" );
00241
#endif
00242
00243 KPimPrefs::usrWriteConfig();
00244 }
00245
00246
void KOPrefs::setCategoryColor(
QString cat,
const QColor & color)
00247 {
00248 mCategoryColors.replace( cat,
new QColor( color ) );
00249 }
00250
00251 QColor *KOPrefs::categoryColor(
QString cat)
00252 {
00253 QColor *color = 0;
00254
00255
if ( !cat.isEmpty() ) color = mCategoryColors[ cat ];
00256
00257
if ( color )
return color;
00258
else return &mDefaultCategoryColor;
00259 }
00260
00261
void KOPrefs::setFullName(
const QString &name)
00262 {
00263 mName = name;
00264 }
00265
00266
void KOPrefs::setEmail(
const QString &email)
00267 {
00268 mEmail = email;
00269 }
00270
00271
QString KOPrefs::fullName()
00272 {
00273
if (mEmailControlCenter) {
00274 KEMailSettings settings;
00275
return settings.getSetting(KEMailSettings::RealName);
00276 }
else {
00277
return mName;
00278 }
00279 }
00280
00281
QString KOPrefs::email()
00282 {
00283
if (mEmailControlCenter) {
00284 KEMailSettings settings;
00285
return settings.getSetting(KEMailSettings::EmailAddress);
00286 }
else {
00287
return mEmail;
00288 }
00289 }
00290
00291
QStringList KOPrefs::allEmails()
00292 {
00293
00294
QStringList lst = KOCore::self()->identityManager()->allEmails();
00295
00296 lst += mAdditionalMails;
00297
00298 lst += KABC::StdAddressBook::self()->whoAmI().emails();
00299
00300
00301
return lst;
00302 }
00303
00304
bool KOPrefs::thatIsMe(
const QString& _email )
00305 {
00306
if ( KOCore::self()->identityManager()->thatIsMe( _email ) )
00307
return true;
00308
00309
QString email = KPIM::getEmailAddr( _email );
00310
if ( mAdditionalMails.find( email ) != mAdditionalMails.end() )
00311
return true;
00312
QStringList lst = KABC::StdAddressBook::self()->whoAmI().emails();
00313
if ( lst.find( email ) != lst.end() )
00314
return true;
00315
return false;
00316 }