diff -r 2e1adbfc62af -r ee64f059b8e1 qtinternetradio/irqdiskspacewatcher/src/irqdiskspaceobserver.cpp --- a/qtinternetradio/irqdiskspacewatcher/src/irqdiskspaceobserver.cpp Mon May 03 12:25:23 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,179 +0,0 @@ -/* -* 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 -#include "irqdiskspaceobserver.h" -#include "irqdiskspaceobserverinterface.h" - -const TDriveNumber KQtIRDefaultDrive = EDriveC; - -const TUint KDriveAValue = 'A'; -const TUint KDriveZValue = 'Z'; -const TUint KDriveaValue = 'a'; -const TUint KDrivezValue = 'z'; - -static TDriveNumber phoneMemRootDrive(); - -// --------------------------------------------------------------------------- -// Constructor -// --------------------------------------------------------------------------- -// -IRQDiskSpaceObserver* IRQDiskSpaceObserver::NewL(MIRQDiskSpaceObserver* aObserver) -{ - IRQDiskSpaceObserver* self = new (ELeave) IRQDiskSpaceObserver(aObserver); - - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(self); - return self; - -} - -// --------------------------------------------------------------------------- -// Second stage constructor -// --------------------------------------------------------------------------- -// -void IRQDiskSpaceObserver::ConstructL() -{ - CActiveScheduler::Add(this); - User::LeaveIfError(iFs.Connect()); -} - -// --------------------------------------------------------------------------- -// C++ Constructor -// --------------------------------------------------------------------------- -// -IRQDiskSpaceObserver::IRQDiskSpaceObserver( MIRQDiskSpaceObserver* aObserver ) - : CActive( CActive::EPriorityStandard ), - iObserver( aObserver ), - iCriticalLevel(0) -{ -} - -// --------------------------------------------------------------------------- -// Destructor -// --------------------------------------------------------------------------- -// -IRQDiskSpaceObserver::~IRQDiskSpaceObserver() -{ - Cancel(); - iFs.Close(); -} - -// --------------------------------------------------------------------------- -// Critical Level -// --------------------------------------------------------------------------- -// -TInt64 IRQDiskSpaceObserver::criticalLevel() const -{ - if(IsActive()) - { - return iCriticalLevel; - } - else - { - return -1; - } -} - -// --------------------------------------------------------------------------- -// Start Monitoring -// --------------------------------------------------------------------------- -// -void IRQDiskSpaceObserver::start(const TInt64 aCriticalLevel) -{ - Cancel(); - iCriticalLevel = aCriticalLevel; - run(); -} - - -// --------------------------------------------------------------------------- -// From class CActive. -// Cancels the pending request. -// --------------------------------------------------------------------------- -// -void IRQDiskSpaceObserver::DoCancel() -{ - iFs.NotifyDiskSpaceCancel(iStatus); -} - - -// --------------------------------------------------------------------------- -// From class CActive. -// Invoked when the observed disk's free disk space has run below -// the supplied critical level. -// Notifies the observer and regenerates the request to RFs' NotifyDiskSpace. -// --------------------------------------------------------------------------- -// -void IRQDiskSpaceObserver::RunL() -{ - run(); -} - - -// --------------------------------------------------------------------------- -// Returns true if below the critical level in defined disk, otherwise false -// --------------------------------------------------------------------------- -// -bool IRQDiskSpaceObserver::isBelowCriticalLevel(const TInt64 aCriticalLevel) const -{ - TVolumeInfo volInfo; - if(KErrNone == iFs.Volume(volInfo, KQtIRDefaultDrive)) - { - if(volInfo.iFree < aCriticalLevel) - { - return true; - } - } - - return false; -} - -void IRQDiskSpaceObserver::run() -{ - if( iObserver && isBelowCriticalLevel(iCriticalLevel)) - { - iObserver->notifyLowDiskSpace((qint64)iCriticalLevel); - } - - iFs.NotifyDiskSpace(iCriticalLevel, phoneMemRootDrive(), iStatus); - SetActive(); -} - -TDriveNumber phoneMemRootDrive() -{ - TParsePtrC phoneMemoryRootPath( PathInfo::PhoneMemoryRootPath() ); - TPtrC drive( phoneMemoryRootPath.Drive() ); - TUint driveValue = drive[0]; - TUint delta = 0; - if( driveValue >= KDriveAValue && - driveValue <= KDriveZValue) - { - delta = driveValue - KDriveAValue; - } - else if( driveValue >= KDriveaValue && - driveValue <= KDrivezValue) - { - delta = driveValue - KDriveaValue; - } - else - { - return KQtIRDefaultDrive; - } - - return static_cast(EDriveA + delta); -}