kde-playground/kdepim/korganizer/koglobals.cpp
2015-04-14 21:49:29 +00:00

139 lines
3.5 KiB
C++

/*
This file is part of KOrganizer.
Copyright (c) 2002,2003 Cornelius Schumacher <schumacher@kde.org>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
As a special exception, permission is given to link this program
with any edition of Qt, and distribute the resulting executable,
without including the source code for Qt in the source distribution.
*/
#include "koglobals.h"
#include "koprefs.h"
#include <KHolidays/HolidayRegion>
#include <KGlobal>
#include <KIconLoader>
#include <QApplication>
class KOGlobalsSingletonPrivate
{
public:
KOGlobals instance;
};
K_GLOBAL_STATIC( KOGlobalsSingletonPrivate, sKOGlobalsSingletonPrivate )
KOGlobals *KOGlobals::self()
{
return &sKOGlobalsSingletonPrivate->instance;
}
KOGlobals::KOGlobals()
: mOwnInstance( "korganizer" ), mHolidays( 0 )
{
KIconLoader::global()->addAppDir( QLatin1String("kdepim") );
}
KConfig *KOGlobals::config() const
{
KSharedConfig::Ptr c = mOwnInstance.config();
return c.data();
}
KOGlobals::~KOGlobals()
{
delete mHolidays;
}
const KCalendarSystem *KOGlobals::calendarSystem() const
{
return KGlobal::locale()->calendar();
}
bool KOGlobals::reverseLayout()
{
return QApplication::isRightToLeft();
}
QPixmap KOGlobals::smallIcon( const QString &name ) const
{
return SmallIcon( name );
}
QMap<QDate,QStringList> KOGlobals::holiday( const QDate &start, const QDate &end ) const
{
QMap<QDate,QStringList> holidaysByDate;
if ( !mHolidays ) {
return holidaysByDate;
}
const KHolidays::Holiday::List list = mHolidays->holidays( start, end );
for ( int i = 0; i < list.count(); ++i ) {
const KHolidays::Holiday &h = list.at( i );
holidaysByDate[h.date()].append( h.text() );
}
return holidaysByDate;
}
QList<QDate> KOGlobals::workDays( const QDate &startDate,
const QDate &endDate ) const
{
QList<QDate> result;
const int mask( ~( KOPrefs::instance()->mWorkWeekMask ) );
const int numDays = startDate.daysTo( endDate ) + 1;
for ( int i = 0; i < numDays; ++i ) {
const QDate date = startDate.addDays( i );
if ( !( mask & ( 1 << ( date.dayOfWeek() - 1 ) ) ) ) {
result.append( date );
}
}
if ( mHolidays && KOPrefs::instance()->mExcludeHolidays ) {
const KHolidays::Holiday::List list = mHolidays->holidays( startDate, endDate );
for ( int i = 0; i < list.count(); ++i ) {
const KHolidays::Holiday &h = list.at( i );
const QString dateString = h.date().toString();
if ( h.dayType() == KHolidays::Holiday::NonWorkday ) {
result.removeAll( h.date() );
}
}
}
return result;
}
int KOGlobals::getWorkWeekMask()
{
return KOPrefs::instance()->mWorkWeekMask;
}
void KOGlobals::setHolidays( KHolidays::HolidayRegion *h )
{
delete mHolidays;
mHolidays = h;
}
KHolidays::HolidayRegion *KOGlobals::holidays() const
{
return mHolidays;
}