diff -r 2e1adbfc62af -r ee64f059b8e1 qtinternetradio/irqsystemeventhandler/src/irqsystemeventhandler_p.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtinternetradio/irqsystemeventhandler/src/irqsystemeventhandler_p.cpp Fri May 14 15:43:29 2010 +0300 @@ -0,0 +1,174 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Contains logic for watching certain disk's space +* +*/ + +#include "irqsystemeventhandler.h" +#include "irqsystemeventhandler_p.h" +#include "irdiskspaceobserver.h" +#include "iralarmobserver.h" + +#ifdef USER_DEFINED_DISKSPACE +#include +#include +#include +#endif + + +IRQSystemEventHandlerPrivate::IRQSystemEventHandlerPrivate(IRQSystemEventHandler *aSystemEventHandler) : q_ptr(aSystemEventHandler), + mAlarmOn(false),mDefaultLevel(3*1024*1024),mAlarmObserver(NULL), mDiskSpaceObserver(NULL) +{ +} + +IRQSystemEventHandlerPrivate::~IRQSystemEventHandlerPrivate() +{ + cancel(); + delete mDiskSpaceObserver; + delete mAlarmObserver; +} + +bool IRQSystemEventHandlerPrivate::init() +{ +#ifdef USER_DEFINED_DISKSPACE + getDiskSpaceCriticalLevel(mDefaultLevel); +#endif + + TRAPD(err, initializeL()); + if( KErrNone == err ) + { + return true; + } + else + { + mDiskSpaceObserver = NULL; + mAlarmObserver = NULL; + } + + + return false; +} + +qint64 IRQSystemEventHandlerPrivate::diskCriticalLevel() const +{ + if(NULL != mDiskSpaceObserver) + { + return (qint64)(mDiskSpaceObserver->CriticalLevel()); + } + else + { + return -1; + } +} + + +void IRQSystemEventHandlerPrivate::initializeL() +{ + mAlarmObserver = CIRAlarmObserver::NewLC(this); + mDiskSpaceObserver = CIRDiskSpaceObserver::NewL(this); + CleanupStack::Pop(mAlarmObserver); +} + +void IRQSystemEventHandlerPrivate::cancel() +{ + if( mAlarmObserver ) + { + mAlarmObserver->Cancel(); + } + + if( mDiskSpaceObserver ) + { + mDiskSpaceObserver->Cancel(); + } +} + +void IRQSystemEventHandlerPrivate::start() +{ + if( mAlarmObserver ) + { + mAlarmObserver->Start(); + } + + if( mDiskSpaceObserver ) + { + mDiskSpaceObserver->Start((TInt64)mDefaultLevel); + } +} + +bool IRQSystemEventHandlerPrivate::isBelowCriticalLevel(const qint64 aCriticalLevel) +{ + if( 0 == aCriticalLevel ) + { + return mDiskSpaceObserver->IsBelowCriticalLevel((TInt64)mDefaultLevel ); + } + + return mDiskSpaceObserver->IsBelowCriticalLevel((TInt64)aCriticalLevel ); +} + +#ifdef USER_DEFINED_DISKSPACE +void IRQSystemEventHandlerPrivate::getDiskSpaceCriticalLevel(qint64 & aLevel) +{ + QFile file("C:\\data\\QTIRConfigure.txt"); + if(file.open(QIODevice::ReadOnly)) + { + QTextStream stream( &file ); + QString line; + QStringList parameter; + while (!stream.atEnd()) + { + line = stream.readLine(); + parameter = line.split("="); + if (parameter.count() == 2) + { + if (parameter.first() == "diskSpaceCriticalLevel") + { + QString level = parameter.last(); + aLevel = level.toLongLong(); + break; + } + } + } + } + + file.close(); +} +#endif + +void IRQSystemEventHandlerPrivate::alarmStarted() +{ + if( !mAlarmOn ) + { + emit q_ptr->alarmStarted(); + mAlarmOn = true; + } +} + +void IRQSystemEventHandlerPrivate::alarmStopped() +{ + if( mAlarmOn ) + { + emit q_ptr->alarmStopped(); + mAlarmOn = false; + } +} + +void IRQSystemEventHandlerPrivate::notifyLowDiskSpace(qint64 aCriticalLevel) +{ + emit q_ptr->diskSpaceLowNotification(aCriticalLevel); +} + + + + +