/* This file is part of KOrganizer. Copyright (c) 2002,2003 Cornelius Schumacher 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 TQt, and distribute the resulting executable, without including the source code for TQt in the source distribution. */ #include #include #include #include #include #include #include #include #include #include #include #include "alarmclient.h" #include "koglobals.h" #include "koprefs.h" #include "korganizer_part.h" #if 0 // unused class NopAlarmClient : public AlarmClient { public: void startDaemon() {} void stopDaemon() {} }; #endif KOGlobals *KOGlobals::mSelf = 0; static KStaticDeleter koGlobalsDeleter; KOGlobals *KOGlobals::self() { if ( !mSelf ) { koGlobalsDeleter.setObject( mSelf, new KOGlobals ); } return mSelf; } KOGlobals::KOGlobals() : mHolidays(0) { // Needed to distinguish from global TDEInstance // in case we are a KPart mOwnInstance = new TDEInstance( "korganizer" ); mOwnInstance->config()->setGroup( "General" ); mOwnInstance->iconLoader()->addAppDir( "tdepim" ); TDEGlobal::iconLoader()->addAppDir( "tdepim" ); mAlarmClient = new AlarmClient; } TDEConfig* KOGlobals::config() const { return mOwnInstance->config(); } KOGlobals::~KOGlobals() { delete mAlarmClient; delete mOwnInstance; delete mHolidays; } const KCalendarSystem *KOGlobals::calendarSystem() const { return TDEGlobal::locale()->calendar(); } AlarmClient *KOGlobals::alarmClient() const { return mAlarmClient; } void KOGlobals::fitDialogToScreen( TQWidget *wid, bool force ) { bool resized = false; int w = wid->frameSize().width(); int h = wid->frameSize().height(); TQRect desk = TDEGlobalSettings::desktopGeometry( wid ); if ( w > desk.width() ) { w = desk.width(); resized = true; } // FIXME: ugly hack. Is the -30 really to circumvent the size of kicker?! if ( h > desk.height() - 30 ) { h = desk.height() - 30; resized = true; } if ( resized || force ) { wid->resize( w, h ); wid->move( desk.x(), desk.y()+15 ); if ( force ) wid->setFixedSize( w, h ); } } bool KOGlobals::reverseLayout() { return TQApplication::reverseLayout(); } TQPixmap KOGlobals::smallIcon( const TQString& name ) { return SmallIcon( name, mOwnInstance ); } TQIconSet KOGlobals::smallIconSet( const TQString& name, int size ) { return SmallIconSet( name, size, mOwnInstance ); } TQStringList KOGlobals::holiday( const TQDate &date ) { TQStringList hdays; if ( !mHolidays ) return hdays; TQValueList list = mHolidays->getHolidays( date ); TQValueList::ConstIterator it = list.begin(); for ( ; it != list.end(); ++it ) { hdays.append( (*it).text ); } return hdays; } bool KOGlobals::isWorkDay( const TQDate &date ) { int mask( ~( KOPrefs::instance()->mWorkWeekMask ) ); bool nonWorkDay = ( mask & ( 1 << ( date.dayOfWeek() - 1 ) ) ); if ( KOPrefs::instance()->mExcludeHolidays && mHolidays ) { TQValueList list = mHolidays->getHolidays( date ); TQValueList::ConstIterator it = list.begin(); for ( ; it != list.end(); ++it ) { nonWorkDay = nonWorkDay || ( (*it).Category == KHolidays::HOLIDAY ); } } return !nonWorkDay; } int KOGlobals::getWorkWeekMask() { return KOPrefs::instance()->mWorkWeekMask; } void KOGlobals::setHolidays( KHolidays *h ) { delete mHolidays; mHolidays = h; } KHolidays *KOGlobals::holidays() const { return mHolidays; }