french -> French
[kdepim.git] / calendarviews / prefs.cpp
blobf7195488f1e7f4c6edfcd8df4d2173f76599327d
1 /*
2 Copyright (c) 2001,2003 Cornelius Schumacher <schumacher@kde.org>
3 Copyright (C) 2003-2004 Reinhold Kainhofer <reinhold@kainhofer.com>
5 Copyright (C) 2010 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.net
6 Author: Kevin Krammer, krake@kdab.com
8 This program is free software; you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation; either version 2 of the License, or
11 (at your option) any later version.
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
18 You should have received a copy of the GNU General Public License along
19 with this program; if not, write to the Free Software Foundation, Inc.,
20 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
22 As a special exception, permission is given to link this program
23 with any edition of Qt, and distribute the resulting executable,
24 without including the source code for Qt in the source distribution.
26 #include "prefs.h"
27 #include "prefs_base.h"
29 #include <KEMailSettings>
30 #include <KGlobalSettings>
31 #include <KSystemTimeZone>
33 using namespace EventViews;
35 QSet<EventViews::EventView::ItemIcon> iconArrayToSet( const QByteArray &array )
37 QSet<EventViews::EventView::ItemIcon> set;
38 for ( int i=0; i<array.count(); ++i ) {
39 if ( i >= EventViews::EventView::IconCount ) {
40 kWarning() << "Icon array is too big: " << array.count();
41 return set;
43 if ( array[i] != 0 ) {
44 set.insert( static_cast<EventViews::EventView::ItemIcon>( i ) );
47 return set;
50 QByteArray iconSetToArray( const QSet<EventViews::EventView::ItemIcon> &set )
52 QByteArray array;
53 for ( int i=0; i<EventViews::EventView::IconCount; ++i ) {
54 const bool contains = set.contains( static_cast<EventViews::EventView::ItemIcon>( i ) );
55 array.append( contains ? 1 : 0 ) ;
58 return array;
61 QByteArray agendaViewIconDefaults()
63 QByteArray iconDefaults;
65 iconDefaults[EventViews::EventView::CalendarCustomIcon] = 1;
66 iconDefaults[EventViews::EventView::TaskIcon] = 1;
67 iconDefaults[EventViews::EventView::JournalIcon] = 1;
68 iconDefaults[EventViews::EventView::RecurringIcon] = 1;
69 iconDefaults[EventViews::EventView::ReminderIcon] = 1;
70 iconDefaults[EventViews::EventView::ReadOnlyIcon] = 1;
71 iconDefaults[EventViews::EventView::ReplyIcon] = 0;
73 return iconDefaults;
76 QByteArray monthViewIconDefaults()
78 QByteArray iconDefaults;
80 iconDefaults[EventViews::EventView::CalendarCustomIcon] = 1;
81 iconDefaults[EventViews::EventView::TaskIcon] = 1;
82 iconDefaults[EventViews::EventView::JournalIcon] = 1;
83 iconDefaults[EventViews::EventView::RecurringIcon] = 0;
84 iconDefaults[EventViews::EventView::ReminderIcon] = 0;
85 iconDefaults[EventViews::EventView::ReadOnlyIcon] = 1;
86 iconDefaults[EventViews::EventView::ReplyIcon] = 0;
88 return iconDefaults;
91 class BaseConfig : public PrefsBase
93 public:
94 BaseConfig();
96 void setResourceColor( const QString &resource, const QColor &color );
98 void setTimeScaleTimezones( const QStringList &timeZones );
99 QStringList timeScaleTimezones() const;
101 public:
102 QHash<QString,QColor> mResourceColors;
103 QColor mDefaultResourceColor;
105 QFont mDefaultMonthViewFont;
106 QFont mDefaultAgendaTimeLabelsFont;
108 KDateTime::Spec mTimeSpec;
109 QStringList mTimeScaleTimeZones;
111 QSet<EventViews::EventView::ItemIcon> mAgendaViewIcons;
112 QSet<EventViews::EventView::ItemIcon> mMonthViewIcons;
114 protected:
115 void usrSetDefaults();
116 void usrReadConfig();
117 void usrWriteConfig();
119 void setTimeZoneDefault();
122 BaseConfig::BaseConfig() : PrefsBase()
124 mDefaultResourceColor = QColor(); //Default is a color invalid
126 mDefaultAgendaTimeLabelsFont = KGlobalSettings::generalFont();
127 // make a large default time bar font, at least 16 points.
128 mDefaultAgendaTimeLabelsFont.setPointSize(
129 qMax( mDefaultAgendaTimeLabelsFont.pointSize() + 4, 16 ) );
131 mDefaultMonthViewFont = KGlobalSettings::generalFont();
132 // make it a bit smaller
133 mDefaultMonthViewFont.setPointSize(
134 qMax( mDefaultMonthViewFont.pointSize() - 2, 6 ) );
136 agendaTimeLabelsFontItem()->setDefaultValue( mDefaultAgendaTimeLabelsFont );
137 agendaTimeLabelsFontItem()->setDefault();
138 monthViewFontItem()->setDefaultValue( mDefaultMonthViewFont );
139 monthViewFontItem()->setDefault();
142 void BaseConfig::setResourceColor( const QString &resource, const QColor &color )
144 mResourceColors.insert( resource, color );
147 void BaseConfig::setTimeScaleTimezones( const QStringList &list )
149 mTimeScaleTimeZones = list;
152 QStringList BaseConfig::timeScaleTimezones() const
154 return mTimeScaleTimeZones;
157 void BaseConfig::usrSetDefaults()
159 setAgendaTimeLabelsFont( mDefaultAgendaTimeLabelsFont );
160 setMonthViewFont( mDefaultMonthViewFont );
162 setTimeZoneDefault();
164 PrefsBase::usrSetDefaults();
167 void BaseConfig::usrReadConfig()
169 KConfigGroup generalConfig( config(), "General" );
171 // Note that the [Category Colors] group was removed after 3.2 due to
172 // an algorithm change. That's why we now use [Category Colors2]
173 // Resource colors
174 KConfigGroup rColorsConfig( config(), "Resources Colors" );
175 const QStringList colorKeyList = rColorsConfig.keyList();
177 QStringList::ConstIterator it3;
178 for ( it3 = colorKeyList.begin(); it3 != colorKeyList.end(); ++it3 ) {
179 QColor color = rColorsConfig.readEntry( *it3, mDefaultResourceColor );
180 //kDebug() << "key:" << (*it3) << "value:" << color;
181 setResourceColor( *it3, color );
184 if ( !mTimeSpec.isValid() ) {
185 setTimeZoneDefault();
188 #if 0
189 config()->setGroup( "FreeBusy" );
190 if ( mRememberRetrievePw ) {
191 mRetrievePassword =
192 KStringHandler::obscure( config()->readEntry( "Retrieve Server Password" ) );
194 #endif
195 KConfigGroup defaultCalendarConfig( config(), "Calendar" );
197 KConfigGroup timeScaleConfig( config(), "Timescale" );
198 setTimeScaleTimezones( timeScaleConfig.readEntry( "Timescale Timezones", QStringList() ) );
200 KConfigGroup monthViewConfig( config(), "Month View" );
201 KConfigGroup agendaViewConfig( config(), "Agenda View" );
202 const QByteArray agendaIconArray =
203 agendaViewConfig.readEntry<QByteArray>( "agendaViewItemIcons", agendaViewIconDefaults() );
204 const QByteArray monthIconArray =
205 monthViewConfig.readEntry<QByteArray>( "monthViewItemIcons", monthViewIconDefaults() );
207 mAgendaViewIcons = iconArrayToSet( agendaIconArray );
208 mMonthViewIcons = iconArrayToSet( monthIconArray );
210 KConfigSkeleton::usrReadConfig();
213 void BaseConfig::usrWriteConfig()
215 KConfigGroup generalConfig( config(), "General" );
217 KConfigGroup rColorsConfig( config(), "Resources Colors" );
218 QHash<QString, QColor>::const_iterator i = mResourceColors.constBegin();
219 while ( i != mResourceColors.constEnd() ) {
220 rColorsConfig.writeEntry( i.key(), i.value() );
221 ++i;
224 #if 0
225 if ( mRememberRetrievePw ) {
226 config()->writeEntry( "Retrieve Server Password",
227 KStringHandler::obscure( mRetrievePassword ) );
228 } else {
229 config()->deleteEntry( "Retrieve Server Password" );
231 #endif
233 KConfigGroup timeScaleConfig( config(), "Timescale" );
234 timeScaleConfig.writeEntry( "Timescale Timezones", timeScaleTimezones() );
236 KConfigGroup monthViewConfig( config(), "Month View" );
237 KConfigGroup agendaViewConfig( config(), "Agenda View" );
239 const QByteArray agendaIconArray = iconSetToArray( mAgendaViewIcons );
240 const QByteArray monthIconArray = iconSetToArray( mMonthViewIcons );
242 agendaViewConfig.writeEntry<QByteArray>( "agendaViewItemIcons", agendaIconArray );
243 monthViewConfig.writeEntry<QByteArray>( "monthViewItemIcons", monthIconArray );
245 KConfigSkeleton::usrWriteConfig();
248 void BaseConfig::setTimeZoneDefault()
250 KTimeZone zone = KSystemTimeZones::local();
251 if ( !zone.isValid() ) {
252 kError() << "KSystemTimeZones::local() return 0";
253 return;
256 kDebug () << "----- time zone:" << zone.name();
258 mTimeSpec = zone;
261 class Prefs::Private
263 public:
264 Private( Prefs *parent ) : mAppConfig( 0 ), q( parent ) {}
265 Private( Prefs *parent, KCoreConfigSkeleton *appConfig )
266 : mAppConfig( appConfig ), q( parent ) {}
268 void setTimeZoneDefault();
270 KConfigSkeletonItem *appConfigItem( const KConfigSkeletonItem *baseConfigItem ) const;
272 void setBool( KCoreConfigSkeleton::ItemBool *baseConfigItem, bool value );
273 bool getBool( const KCoreConfigSkeleton::ItemBool *baseConfigItem ) const;
275 void setInt( KCoreConfigSkeleton::ItemInt *baseConfigItem, int value );
276 int getInt( const KCoreConfigSkeleton::ItemInt *baseConfigItem ) const;
278 void setString( KCoreConfigSkeleton::ItemString *baseConfigItem, const QString &value );
279 QString getString( const KCoreConfigSkeleton::ItemString *baseConfigItem ) const;
281 void setDateTime( KCoreConfigSkeleton::ItemDateTime *baseConfigItem, const QDateTime &value );
282 QDateTime getDateTime( const KCoreConfigSkeleton::ItemDateTime *baseConfigItem ) const;
284 void setStringList( KCoreConfigSkeleton::ItemStringList *baseConfigItem,
285 const QStringList &value );
286 QStringList getStringList( const KCoreConfigSkeleton::ItemStringList *baseConfigItem ) const;
288 void setColor( KConfigSkeleton::ItemColor *baseConfigItem, const QColor &value );
289 QColor getColor( const KConfigSkeleton::ItemColor *baseConfigItem ) const;
291 void setFont( KConfigSkeleton::ItemFont *baseConfigItem, const QFont &value );
292 QFont getFont( const KConfigSkeleton::ItemFont *baseConfigItem ) const;
294 public:
295 BaseConfig mBaseConfig;
296 KCoreConfigSkeleton *mAppConfig;
298 private:
299 Prefs *q;
302 KConfigSkeletonItem *Prefs::Private::appConfigItem(
303 const KConfigSkeletonItem *baseConfigItem ) const
305 Q_ASSERT( baseConfigItem );
307 if ( mAppConfig ) {
308 return mAppConfig->findItem( baseConfigItem->name() );
311 return 0;
314 void Prefs::Private::setBool( KCoreConfigSkeleton::ItemBool *baseConfigItem, bool value )
316 KConfigSkeletonItem *appItem = appConfigItem( baseConfigItem );
317 if ( appItem ) {
318 KCoreConfigSkeleton::ItemBool *item = dynamic_cast<KCoreConfigSkeleton::ItemBool*>( appItem );
319 if ( item ) {
320 item->setValue( value );
321 } else {
322 kError() << "Application config item" << appItem->name() << "is not of type Bool";
324 } else {
325 baseConfigItem->setValue( value );
329 bool Prefs::Private::getBool( const KCoreConfigSkeleton::ItemBool *baseConfigItem ) const
331 KConfigSkeletonItem *appItem = appConfigItem( baseConfigItem );
332 if ( appItem ) {
333 KCoreConfigSkeleton::ItemBool *item = dynamic_cast<KCoreConfigSkeleton::ItemBool*>( appItem );
334 if ( item ) {
335 return item->value();
337 kError() << "Application config item" << appItem->name() << "is not of type Bool";
339 return baseConfigItem->value();
342 void Prefs::Private::setInt( KCoreConfigSkeleton::ItemInt *baseConfigItem, int value )
344 KConfigSkeletonItem *appItem = appConfigItem( baseConfigItem );
345 if ( appItem ) {
346 KCoreConfigSkeleton::ItemInt *item = dynamic_cast<KCoreConfigSkeleton::ItemInt*>( appItem );
347 if ( item ) {
348 item->setValue( value );
349 } else {
350 kError() << "Application config item" << appItem->name() << "is not of type Int";
352 } else {
353 baseConfigItem->setValue( value );
357 int Prefs::Private::getInt( const KCoreConfigSkeleton::ItemInt *baseConfigItem ) const
359 KConfigSkeletonItem *appItem = appConfigItem( baseConfigItem );
360 if ( appItem ) {
361 KCoreConfigSkeleton::ItemInt *item = dynamic_cast<KCoreConfigSkeleton::ItemInt*>( appItem );
362 if ( item ) {
363 return item->value();
365 kError() << "Application config item" << appItem->name() << "is not of type Int";
367 return baseConfigItem->value();
370 void Prefs::Private::setString( KCoreConfigSkeleton::ItemString *baseConfigItem,
371 const QString &value )
373 KConfigSkeletonItem *appItem = appConfigItem( baseConfigItem );
374 if ( appItem ) {
375 KCoreConfigSkeleton::ItemString *item =
376 dynamic_cast<KCoreConfigSkeleton::ItemString*>( appItem );
378 if ( item ) {
379 item->setValue( value );
380 } else {
381 kError() << "Application config item" << appItem->name() << "is not of type String";
383 } else {
384 baseConfigItem->setValue( value );
388 QString Prefs::Private::getString( const KCoreConfigSkeleton::ItemString *baseConfigItem ) const
390 KConfigSkeletonItem *appItem = appConfigItem( baseConfigItem );
391 if ( appItem ) {
392 KCoreConfigSkeleton::ItemString *item =
393 dynamic_cast<KCoreConfigSkeleton::ItemString*>( appItem );
395 if ( item ) {
396 return item->value();
398 kError() << "Application config item" << appItem->name() << "is not of type String";
400 return baseConfigItem->value();
403 void Prefs::Private::setDateTime( KCoreConfigSkeleton::ItemDateTime *baseConfigItem,
404 const QDateTime &value )
406 KConfigSkeletonItem *appItem = appConfigItem( baseConfigItem );
407 if ( appItem ) {
408 KCoreConfigSkeleton::ItemDateTime *item =
409 dynamic_cast<KCoreConfigSkeleton::ItemDateTime*>( appItem );
411 if ( item ) {
412 item->setValue( value );
413 } else {
414 kError() << "Application config item" << appItem->name() << "is not of type DateTime";
416 } else {
417 baseConfigItem->setValue( value );
421 QDateTime Prefs::Private::getDateTime(
422 const KCoreConfigSkeleton::ItemDateTime *baseConfigItem ) const
424 KConfigSkeletonItem *appItem = appConfigItem( baseConfigItem );
425 if ( appItem ) {
426 KCoreConfigSkeleton::ItemDateTime *item =
427 dynamic_cast<KCoreConfigSkeleton::ItemDateTime*>( appItem );
429 if ( item ) {
430 return item->value();
432 kError() << "Application config item" << appItem->name() << "is not of type DateTime";
434 return baseConfigItem->value();
437 void Prefs::Private::setStringList( KCoreConfigSkeleton::ItemStringList *baseConfigItem,
438 const QStringList &value )
440 KConfigSkeletonItem *appItem = appConfigItem( baseConfigItem );
441 if ( appItem ) {
442 KCoreConfigSkeleton::ItemStringList *item =
443 dynamic_cast<KCoreConfigSkeleton::ItemStringList*>( appItem );
445 if ( item ) {
446 item->setValue( value );
447 } else {
448 kError() << "Application config item" << appItem->name() << "is not of type StringList";
450 } else {
451 baseConfigItem->setValue( value );
455 QStringList Prefs::Private::getStringList(
456 const KCoreConfigSkeleton::ItemStringList *baseConfigItem ) const
458 KConfigSkeletonItem *appItem = appConfigItem( baseConfigItem );
459 if ( appItem ) {
460 KCoreConfigSkeleton::ItemStringList *item =
461 dynamic_cast<KCoreConfigSkeleton::ItemStringList*>( appItem );
463 if ( item ) {
464 return item->value();
466 kError() << "Application config item" << appItem->name() << "is not of type StringList";
468 return baseConfigItem->value();
471 void Prefs::Private::setColor( KConfigSkeleton::ItemColor *baseConfigItem, const QColor &value )
473 KConfigSkeletonItem *appItem = appConfigItem( baseConfigItem );
474 if ( appItem ) {
475 KConfigSkeleton::ItemColor *item = dynamic_cast<KConfigSkeleton::ItemColor*>( appItem );
476 if ( item ) {
477 item->setValue( value );
478 } else {
479 kError() << "Application config item" << appItem->name() << "is not of type Color";
481 } else {
482 baseConfigItem->setValue( value );
486 QColor Prefs::Private::getColor( const KConfigSkeleton::ItemColor *baseConfigItem ) const
488 KConfigSkeletonItem *appItem = appConfigItem( baseConfigItem );
489 if ( appItem ) {
490 KConfigSkeleton::ItemColor *item = dynamic_cast<KConfigSkeleton::ItemColor*>( appItem );
491 if ( item ) {
492 return item->value();
494 kError() << "Application config item" << appItem->name() << "is not of type Color";
496 return baseConfigItem->value();
499 void Prefs::Private::setFont( KConfigSkeleton::ItemFont *baseConfigItem, const QFont &value )
501 KConfigSkeletonItem *appItem = appConfigItem( baseConfigItem );
502 if ( appItem ) {
503 KConfigSkeleton::ItemFont *item = dynamic_cast<KConfigSkeleton::ItemFont*>( appItem );
504 if ( item ) {
505 item->setValue( value );
506 } else {
507 kError() << "Application config item" << appItem->name() << "is not of type Font";
509 } else {
510 baseConfigItem->setValue( value );
514 QFont Prefs::Private::getFont( const KConfigSkeleton::ItemFont *baseConfigItem ) const
516 KConfigSkeletonItem *appItem = appConfigItem( baseConfigItem );
517 if ( appItem ) {
518 KConfigSkeleton::ItemFont *item = dynamic_cast<KConfigSkeleton::ItemFont*>( appItem );
519 if ( item ) {
520 return item->value();
522 kError() << "Application config item" << appItem->name() << "is not of type Font";
524 return baseConfigItem->value();
527 Prefs::Prefs() : d( new Private( this ) )
531 Prefs::Prefs( KCoreConfigSkeleton *appConfig ) : d( new Private( this, appConfig ) )
535 Prefs::~Prefs()
537 delete d;
540 void Prefs::readConfig()
542 d->mBaseConfig.readConfig();
543 if ( d->mAppConfig ) {
544 d->mAppConfig->readConfig();
548 void Prefs::writeConfig()
550 d->mBaseConfig.writeConfig();
551 if ( d->mAppConfig ) {
552 d->mAppConfig->writeConfig();
556 void Prefs::setMarcusBainsShowSeconds( bool showSeconds )
558 d->setBool( d->mBaseConfig.marcusBainsShowSecondsItem(), showSeconds );
561 bool Prefs::marcusBainsShowSeconds() const
563 return d->getBool( d->mBaseConfig.marcusBainsShowSecondsItem() );
566 void Prefs::setAgendaMarcusBainsLineLineColor( const QColor &color )
568 d->setColor( d->mBaseConfig.agendaMarcusBainsLineLineColorItem(), color );
571 QColor Prefs::agendaMarcusBainsLineLineColor() const
573 return d->getColor( d->mBaseConfig.agendaMarcusBainsLineLineColorItem() );
576 void Prefs::setMarcusBainsEnabled( bool enabled )
578 d->setBool( d->mBaseConfig.marcusBainsEnabledItem(), enabled );
581 bool Prefs::marcusBainsEnabled() const
583 return d->getBool( d->mBaseConfig.marcusBainsEnabledItem() );
586 void Prefs::setAgendaMarcusBainsLineFont( const QFont &font )
588 d->setFont( d->mBaseConfig.agendaMarcusBainsLineFontItem(), font );
591 QFont Prefs::agendaMarcusBainsLineFont() const
593 return d->getFont( d->mBaseConfig.agendaMarcusBainsLineFontItem() );
596 void Prefs::setHourSize( int size )
598 d->setInt( d->mBaseConfig.hourSizeItem(), size );
601 int Prefs::hourSize() const
603 return d->getInt( d->mBaseConfig.hourSizeItem() );
606 void Prefs::setDayBegins( const QDateTime &dateTime )
608 d->setDateTime( d->mBaseConfig.dayBeginsItem(), dateTime );
611 QDateTime Prefs::dayBegins() const
613 return d->getDateTime( d->mBaseConfig.dayBeginsItem() );
616 void Prefs::setWorkingHoursStart( const QDateTime &dateTime )
618 d->setDateTime( d->mBaseConfig.workingHoursStartItem(), dateTime );
621 QDateTime Prefs::workingHoursStart() const
623 return d->getDateTime( d->mBaseConfig.workingHoursStartItem() );
626 void Prefs::setWorkingHoursEnd( const QDateTime &dateTime )
628 d->setDateTime( d->mBaseConfig.workingHoursEndItem(), dateTime );
631 QDateTime Prefs::workingHoursEnd() const
633 return d->getDateTime( d->mBaseConfig.workingHoursEndItem() );
636 void Prefs::setSelectionStartsEditor( bool startEditor )
638 d->setBool( d->mBaseConfig.selectionStartsEditorItem(), startEditor );
641 bool Prefs::selectionStartsEditor() const
643 return d->getBool( d->mBaseConfig.selectionStartsEditorItem() );
646 void Prefs::setAgendaGridWorkHoursBackgroundColor( const QColor &color )
648 d->setColor( d->mBaseConfig.agendaGridWorkHoursBackgroundColorItem(), color );
651 QColor Prefs::agendaGridWorkHoursBackgroundColor() const
653 return d->getColor( d->mBaseConfig.agendaGridWorkHoursBackgroundColorItem() );
656 void Prefs::setAgendaGridHighlightColor( const QColor &color )
658 d->setColor( d->mBaseConfig.agendaGridHighlightColorItem(), color );
661 QColor Prefs::agendaGridHighlightColor() const
663 return d->getColor( d->mBaseConfig.agendaGridHighlightColorItem() );
666 void Prefs::setAgendaGridBackgroundColor( const QColor &color )
668 d->setColor( d->mBaseConfig.agendaGridBackgroundColorItem(), color );
671 QColor Prefs::agendaGridBackgroundColor() const
673 return d->getColor( d->mBaseConfig.agendaGridBackgroundColorItem() );
676 void Prefs::setEnableAgendaItemIcons( bool enable )
678 d->setBool( d->mBaseConfig.enableAgendaItemIconsItem(), enable );
681 bool Prefs::enableAgendaItemIcons() const
683 return d->getBool( d->mBaseConfig.enableAgendaItemIconsItem() );
686 void Prefs::setTodosUseCategoryColors( bool useColors )
688 d->setBool( d->mBaseConfig.todosUseCategoryColorsItem(), useColors );
691 bool Prefs::todosUseCategoryColors() const
693 return d->getBool( d->mBaseConfig.todosUseCategoryColorsItem() );
696 void Prefs::setAgendaHolidaysBackgroundColor( const QColor &color ) const
698 d->setColor( d->mBaseConfig.agendaHolidaysBackgroundColorItem(), color );
701 QColor Prefs::agendaHolidaysBackgroundColor() const
703 return d->getColor( d->mBaseConfig.agendaHolidaysBackgroundColorItem() );
706 void Prefs::setAgendaViewColors( int colors )
708 d->setInt( d->mBaseConfig.agendaViewColorsItem(), colors );
711 int Prefs::agendaViewColors() const
713 return d->getInt( d->mBaseConfig.agendaViewColorsItem() );
716 void Prefs::setAgendaViewFont( const QFont &font )
718 d->setFont( d->mBaseConfig.agendaViewFontItem(), font );
721 QFont Prefs::agendaViewFont() const
723 return d->getFont( d->mBaseConfig.agendaViewFontItem() );
726 void Prefs::setMonthViewFont( const QFont &font )
728 d->setFont( d->mBaseConfig.monthViewFontItem(), font );
731 QFont Prefs::monthViewFont() const
733 return d->getFont( d->mBaseConfig.monthViewFontItem() );
736 QColor Prefs::monthGridBackgroundColor() const
738 return d->getColor( d->mBaseConfig.monthGridBackgroundColorItem() );
741 void Prefs::setMonthGridBackgroundColor( const QColor &color )
743 d->setColor( d->mBaseConfig.monthGridBackgroundColorItem(), color );
746 QColor Prefs::monthGridWorkHoursBackgroundColor() const
748 return d->getColor( d->mBaseConfig.monthGridWorkHoursBackgroundColorItem() );
751 void Prefs::monthGridWorkHoursBackgroundColor( const QColor &color )
753 d->setColor( d->mBaseConfig.monthGridWorkHoursBackgroundColorItem(), color );
756 int Prefs::monthViewColors() const
758 return d->getInt( d->mBaseConfig.monthViewColorsItem() );
761 void Prefs::setMonthViewColors( int colors ) const
763 d->setInt( d->mBaseConfig.monthViewColorsItem(), colors );
766 void Prefs::setEnableMonthItemIcons( bool enable )
768 d->setBool( d->mBaseConfig.enableMonthItemIconsItem(), enable );
771 bool Prefs::enableMonthItemIcons() const
773 return d->getBool( d->mBaseConfig.enableMonthItemIconsItem() );
776 bool Prefs::showTimeInMonthView() const
778 return d->getBool( d->mBaseConfig.showTimeInMonthViewItem() );
781 void Prefs::setShowTimeInMonthView( bool show )
783 d->setBool( d->mBaseConfig.showTimeInMonthViewItem(), show );
786 bool Prefs::showTodosMonthView() const
788 return d->getBool( d->mBaseConfig.showTodosMonthViewItem() );
791 void Prefs::setShowTodosMonthView( bool enable )
793 d->setBool( d->mBaseConfig.showTodosMonthViewItem(), enable );
796 bool Prefs::showJournalsMonthView() const
798 return d->getBool( d->mBaseConfig.showJournalsMonthViewItem() );
801 void Prefs::setShowJournalsMonthView( bool enable )
803 d->setBool( d->mBaseConfig.showJournalsMonthViewItem(), enable );
806 bool Prefs::fullViewMonth() const
808 return d->getBool( d->mBaseConfig.fullViewMonthItem() );
811 void Prefs::setFullViewMonth( bool fullView )
813 d->setBool( d->mBaseConfig.fullViewMonthItem(), fullView );
816 bool Prefs::sortCompletedTodosSeparately() const
818 return d->getBool( d->mBaseConfig.sortCompletedTodosSeparatelyItem() );
821 void Prefs::setSortCompletedTodosSeparately( bool enable )
823 d->setBool( d->mBaseConfig.sortCompletedTodosSeparatelyItem(), enable );
826 void Prefs::setEnableToolTips( bool enable )
828 d->setBool( d->mBaseConfig.enableToolTipsItem(), enable );
831 bool Prefs::enableToolTips() const
833 return d->getBool( d->mBaseConfig.enableToolTipsItem() );
836 void Prefs::setShowTodosAgendaView( bool show )
838 d->setBool( d->mBaseConfig.showTodosAgendaViewItem(), show );
841 bool Prefs::showTodosAgendaView() const
843 return d->getBool( d->mBaseConfig.showTodosAgendaViewItem() );
846 void Prefs::setAgendaTimeLabelsFont( const QFont &font )
848 d->setFont( d->mBaseConfig.agendaTimeLabelsFontItem(), font );
851 QFont Prefs::agendaTimeLabelsFont() const
853 return d->getFont( d->mBaseConfig.agendaTimeLabelsFontItem() );
856 KDateTime::Spec Prefs::timeSpec() const
858 return KSystemTimeZones::local();
861 void Prefs::setTimeSpec( const KDateTime::Spec &spec )
863 d->mBaseConfig.mTimeSpec = spec;
866 bool Prefs::colorAgendaBusyDays() const
868 return d->getBool( d->mBaseConfig.colorBusyDaysEnabledItem() );
871 bool Prefs::colorMonthBusyDays() const
873 return d->getBool( d->mBaseConfig.colorMonthBusyDaysEnabledItem() );
876 QColor Prefs::viewBgBusyColor() const
878 return d->getColor( d->mBaseConfig.viewBgBusyColorItem() );
881 void Prefs::setViewBgBusyColor( const QColor &color )
883 d->mBaseConfig.mViewBgBusyColor = color;
886 QColor Prefs::holidayColor() const
888 return d->getColor( d->mBaseConfig.holidayColorItem() );
891 void Prefs::setHolidayColor( const QColor &color )
893 d->mBaseConfig.mHolidayColor = color;
896 QColor Prefs::agendaViewBackgroundColor() const
898 return d->getColor( d->mBaseConfig.agendaBgColorItem() );
901 void Prefs::setAgendaViewBackgroundColor( const QColor &color )
903 d->mBaseConfig.mAgendaBgColor = color;
906 QColor Prefs::workingHoursColor() const
908 return d->getColor( d->mBaseConfig.workingHoursColorItem() );
911 void Prefs::setWorkingHoursColor( const QColor &color )
913 d->mBaseConfig.mWorkingHoursColor = color;
916 QColor Prefs::todoDueTodayColor() const
918 return d->getColor( d->mBaseConfig.todoDueTodayColorItem() );
921 void Prefs::setTodoDueTodayColor( const QColor &color )
923 d->mBaseConfig.mTodoDueTodayColor = color;
926 QColor Prefs::todoOverdueColor() const
928 return d->getColor( d->mBaseConfig.todoOverdueColorItem() );
931 void Prefs::setTodoOverdueColor( const QColor &color )
933 d->mBaseConfig.mTodoOverdueColor = color;
936 void Prefs::setColorAgendaBusyDays( bool enable )
938 d->mBaseConfig.mColorBusyDaysEnabled = enable;
941 void Prefs::setColorMonthBusyDays( bool enable )
943 d->mBaseConfig.mColorMonthBusyDaysEnabled = enable;
946 void Prefs::setResourceColor ( const QString &cal, const QColor &color )
948 d->mBaseConfig.setResourceColor( cal, color );
951 QColor Prefs::resourceColor( const QString &cal )
953 QColor color;
954 if ( !cal.isEmpty() ) {
955 if ( d->mBaseConfig.mResourceColors.contains( cal ) ) {
956 color = d->mBaseConfig.mResourceColors.value( cal );
957 if ( !color.isValid() ) {
958 return color;
961 } else {
962 return d->mBaseConfig.mDefaultResourceColor;
965 // assign default color if enabled
966 if ( !cal.isEmpty() && !color.isValid() &&
967 d->getBool( d->mBaseConfig.assignDefaultResourceColorsItem() ) ) {
968 QColor defColor( 0x37, 0x7A, 0xBC );
969 const int seed = d->getInt( d->mBaseConfig.defaultResourceColorSeedItem() );
970 const QStringList colors = d->getStringList( d->mBaseConfig.defaultResourceColorsItem() );
971 if ( seed > 0 && seed - 1 < (int)colors.size() ) {
972 defColor = QColor( colors[seed-1] );
973 } else {
974 int h, s, v;
975 defColor.getHsv( &h, &s, &v );
976 h = ( seed % 12 ) * 30;
977 s -= s * static_cast<int>( ( ( seed / 12 ) % 2 ) * 0.5 );
978 defColor.setHsv( h, s, v );
980 d->setInt( d->mBaseConfig.defaultResourceColorSeedItem(), ( seed + 1 ) );
981 d->mBaseConfig.setResourceColor( cal, defColor );
982 color = d->mBaseConfig.mResourceColors[cal];
985 if ( color.isValid() ) {
986 return color;
987 } else {
988 return d->mBaseConfig.mDefaultResourceColor;
992 QStringList Prefs::timeScaleTimezones() const
994 return d->mBaseConfig.timeScaleTimezones();
997 void Prefs::setTimeScaleTimezones( const QStringList &list )
999 d->mBaseConfig.setTimeScaleTimezones( list );
1002 KConfigSkeleton::ItemFont *Prefs::fontItem( const QString &name ) const
1004 KConfigSkeletonItem *item = d->mAppConfig ? d->mAppConfig->findItem( name ) : 0;
1006 if ( !item ) {
1007 item = d->mBaseConfig.findItem( name );
1010 return dynamic_cast<KConfigSkeleton::ItemFont *>( item );
1013 QStringList Prefs::selectedPlugins() const
1015 return d->mBaseConfig.mSelectedPlugins;
1018 QStringList Prefs::decorationsAtAgendaViewTop() const
1020 return d->mBaseConfig.decorationsAtAgendaViewTop();
1023 QStringList Prefs::decorationsAtAgendaViewBottom() const
1025 return d->mBaseConfig.decorationsAtAgendaViewBottom();
1028 void Prefs::setSelectedPlugins( const QStringList &plugins )
1030 d->mBaseConfig.setSelectedPlugins( plugins );
1033 void Prefs::setDecorationsAtAgendaViewTop( const QStringList &decorations )
1035 d->mBaseConfig.setDecorationsAtAgendaViewTop( decorations );
1038 void Prefs::setDecorationsAtAgendaViewBottom( const QStringList &decorations )
1040 d->mBaseConfig.setDecorationsAtAgendaViewBottom( decorations );
1043 QSet<EventViews::EventView::ItemIcon> Prefs::agendaViewIcons() const
1045 return d->mBaseConfig.mAgendaViewIcons;
1048 void Prefs::setAgendaViewIcons( const QSet<EventViews::EventView::ItemIcon> &icons )
1050 d->mBaseConfig.mAgendaViewIcons = icons;
1053 QSet<EventViews::EventView::ItemIcon> Prefs::monthViewIcons() const
1055 return d->mBaseConfig.mMonthViewIcons;
1058 void Prefs::setMonthViewIcons( const QSet<EventViews::EventView::ItemIcon> &icons )
1060 d->mBaseConfig.mMonthViewIcons = icons;
1063 void Prefs::setFlatListTodo( bool enable )
1065 d->mBaseConfig.mFlatListTodo = enable;
1068 bool Prefs::flatListTodo() const
1070 return d->mBaseConfig.mFlatListTodo;
1073 void Prefs::setFullViewTodo( bool enable )
1075 d->mBaseConfig.mFullViewTodo = enable;
1078 bool Prefs::fullViewTodo() const
1080 return d->mBaseConfig.mFullViewTodo;
1083 bool Prefs::enableTodoQuickSearch() const
1085 return d->mBaseConfig.mEnableTodoQuickSearch;
1088 void Prefs::setEnableTodoQuickSearch( bool enable )
1090 d->mBaseConfig.mEnableTodoQuickSearch = enable;
1093 bool Prefs::enableQuickTodo() const
1095 return d->mBaseConfig.mEnableQuickTodo;
1098 void Prefs::setEnableQuickTodo( bool enable )
1100 d->mBaseConfig.mEnableQuickTodo = enable;
1103 bool Prefs::highlightTodos() const
1105 return d->mBaseConfig.mHighlightTodos;
1108 void Prefs::setHighlightTodos( bool highlight )
1110 d->mBaseConfig.mHighlightTodos = highlight;
1113 KConfig *Prefs::config() const
1115 return d->mAppConfig ? d->mAppConfig->config() : d->mBaseConfig.config();