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.
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();
43 if ( array
[i
] != 0 ) {
44 set
.insert( static_cast<EventViews::EventView::ItemIcon
>( i
) );
50 QByteArray
iconSetToArray( const QSet
<EventViews::EventView::ItemIcon
> &set
)
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 ) ;
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;
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;
91 class BaseConfig
: public PrefsBase
96 void setResourceColor( const QString
&resource
, const QColor
&color
);
98 void setTimeScaleTimezones( const QStringList
&timeZones
);
99 QStringList
timeScaleTimezones() const;
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
;
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]
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();
189 config()->setGroup( "FreeBusy" );
190 if ( mRememberRetrievePw
) {
192 KStringHandler::obscure( config()->readEntry( "Retrieve Server Password" ) );
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() );
225 if ( mRememberRetrievePw
) {
226 config()->writeEntry( "Retrieve Server Password",
227 KStringHandler::obscure( mRetrievePassword
) );
229 config()->deleteEntry( "Retrieve Server Password" );
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";
256 kDebug () << "----- time zone:" << zone
.name();
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;
295 BaseConfig mBaseConfig
;
296 KCoreConfigSkeleton
*mAppConfig
;
302 KConfigSkeletonItem
*Prefs::Private::appConfigItem(
303 const KConfigSkeletonItem
*baseConfigItem
) const
305 Q_ASSERT( baseConfigItem
);
308 return mAppConfig
->findItem( baseConfigItem
->name() );
314 void Prefs::Private::setBool( KCoreConfigSkeleton::ItemBool
*baseConfigItem
, bool value
)
316 KConfigSkeletonItem
*appItem
= appConfigItem( baseConfigItem
);
318 KCoreConfigSkeleton::ItemBool
*item
= dynamic_cast<KCoreConfigSkeleton::ItemBool
*>( appItem
);
320 item
->setValue( value
);
322 kError() << "Application config item" << appItem
->name() << "is not of type Bool";
325 baseConfigItem
->setValue( value
);
329 bool Prefs::Private::getBool( const KCoreConfigSkeleton::ItemBool
*baseConfigItem
) const
331 KConfigSkeletonItem
*appItem
= appConfigItem( baseConfigItem
);
333 KCoreConfigSkeleton::ItemBool
*item
= dynamic_cast<KCoreConfigSkeleton::ItemBool
*>( appItem
);
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
);
346 KCoreConfigSkeleton::ItemInt
*item
= dynamic_cast<KCoreConfigSkeleton::ItemInt
*>( appItem
);
348 item
->setValue( value
);
350 kError() << "Application config item" << appItem
->name() << "is not of type Int";
353 baseConfigItem
->setValue( value
);
357 int Prefs::Private::getInt( const KCoreConfigSkeleton::ItemInt
*baseConfigItem
) const
359 KConfigSkeletonItem
*appItem
= appConfigItem( baseConfigItem
);
361 KCoreConfigSkeleton::ItemInt
*item
= dynamic_cast<KCoreConfigSkeleton::ItemInt
*>( appItem
);
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
);
375 KCoreConfigSkeleton::ItemString
*item
=
376 dynamic_cast<KCoreConfigSkeleton::ItemString
*>( appItem
);
379 item
->setValue( value
);
381 kError() << "Application config item" << appItem
->name() << "is not of type String";
384 baseConfigItem
->setValue( value
);
388 QString
Prefs::Private::getString( const KCoreConfigSkeleton::ItemString
*baseConfigItem
) const
390 KConfigSkeletonItem
*appItem
= appConfigItem( baseConfigItem
);
392 KCoreConfigSkeleton::ItemString
*item
=
393 dynamic_cast<KCoreConfigSkeleton::ItemString
*>( appItem
);
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
);
408 KCoreConfigSkeleton::ItemDateTime
*item
=
409 dynamic_cast<KCoreConfigSkeleton::ItemDateTime
*>( appItem
);
412 item
->setValue( value
);
414 kError() << "Application config item" << appItem
->name() << "is not of type DateTime";
417 baseConfigItem
->setValue( value
);
421 QDateTime
Prefs::Private::getDateTime(
422 const KCoreConfigSkeleton::ItemDateTime
*baseConfigItem
) const
424 KConfigSkeletonItem
*appItem
= appConfigItem( baseConfigItem
);
426 KCoreConfigSkeleton::ItemDateTime
*item
=
427 dynamic_cast<KCoreConfigSkeleton::ItemDateTime
*>( appItem
);
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
);
442 KCoreConfigSkeleton::ItemStringList
*item
=
443 dynamic_cast<KCoreConfigSkeleton::ItemStringList
*>( appItem
);
446 item
->setValue( value
);
448 kError() << "Application config item" << appItem
->name() << "is not of type StringList";
451 baseConfigItem
->setValue( value
);
455 QStringList
Prefs::Private::getStringList(
456 const KCoreConfigSkeleton::ItemStringList
*baseConfigItem
) const
458 KConfigSkeletonItem
*appItem
= appConfigItem( baseConfigItem
);
460 KCoreConfigSkeleton::ItemStringList
*item
=
461 dynamic_cast<KCoreConfigSkeleton::ItemStringList
*>( appItem
);
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
);
475 KConfigSkeleton::ItemColor
*item
= dynamic_cast<KConfigSkeleton::ItemColor
*>( appItem
);
477 item
->setValue( value
);
479 kError() << "Application config item" << appItem
->name() << "is not of type Color";
482 baseConfigItem
->setValue( value
);
486 QColor
Prefs::Private::getColor( const KConfigSkeleton::ItemColor
*baseConfigItem
) const
488 KConfigSkeletonItem
*appItem
= appConfigItem( baseConfigItem
);
490 KConfigSkeleton::ItemColor
*item
= dynamic_cast<KConfigSkeleton::ItemColor
*>( appItem
);
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
);
503 KConfigSkeleton::ItemFont
*item
= dynamic_cast<KConfigSkeleton::ItemFont
*>( appItem
);
505 item
->setValue( value
);
507 kError() << "Application config item" << appItem
->name() << "is not of type Font";
510 baseConfigItem
->setValue( value
);
514 QFont
Prefs::Private::getFont( const KConfigSkeleton::ItemFont
*baseConfigItem
) const
516 KConfigSkeletonItem
*appItem
= appConfigItem( baseConfigItem
);
518 KConfigSkeleton::ItemFont
*item
= dynamic_cast<KConfigSkeleton::ItemFont
*>( appItem
);
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
) )
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
)
954 if ( !cal
.isEmpty() ) {
955 if ( d
->mBaseConfig
.mResourceColors
.contains( cal
) ) {
956 color
= d
->mBaseConfig
.mResourceColors
.value( cal
);
957 if ( !color
.isValid() ) {
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] );
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() ) {
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;
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();