voicerecorder/RecViewSrc/CVRDiskSpaceWatcher.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Wed, 31 Mar 2010 21:35:17 +0300
branchRCL_3
changeset 9 45ab7373901d
parent 0 845549f293a7
permissions -rw-r--r--
Revision: 201010 Kit: 201013

/*
* Copyright (c) 2002 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: 
*       Observe the Disk Space
*
*/


// INCLUDE FILES
#include "CVRMdaRecorder.h"
#include "CVRDiskSpaceWatcher.h" 
#include "CVRMemo.h"



// ================= MEMBER FUNCTIONS =======================
// ---------------------------------------------------------------------------
// CVRDiskSpaceWatcher::CVRDiskSpaceWatcher
// 
// ---------------------------------------------------------------------------
//
inline CVRDiskSpaceWatcher::CVRDiskSpaceWatcher
        (CVRMdaRecorder& aRecorder, RFs& aFs) :
    CActive(CActive::EPriorityIdle),
    iRecorder(aRecorder), iFs(aFs)
    {
    CActiveScheduler::Add(this);
    }

// ---------------------------------------------------------------------------
//CVRDiskSpaceWatcher::NewL
// 
// ---------------------------------------------------------------------------
//
CVRDiskSpaceWatcher* CVRDiskSpaceWatcher::NewL
        (CVRMdaRecorder& aRecorder, RFs& aFs)
    {
    CVRDiskSpaceWatcher* self = new(ELeave) CVRDiskSpaceWatcher(aRecorder, aFs);
    return self;
    }

// ---------------------------------------------------------------------------
// CVRDiskSpaceWatcher::~CVRDiskSpaceWatcher
// 
// ---------------------------------------------------------------------------
//
CVRDiskSpaceWatcher::~CVRDiskSpaceWatcher()
    {
    Cancel();
    }

// ---------------------------------------------------------------------------
// CVRDiskSpaceWatcher::DoCancel
// 
// ---------------------------------------------------------------------------
//
void CVRDiskSpaceWatcher::DoCancel()
    {
    iFs.NotifyDiskSpaceCancel();
    }

// ---------------------------------------------------------------------------
// CVRDiskSpaceWatcher::RunL()
// 
// ---------------------------------------------------------------------------
//
void CVRDiskSpaceWatcher::RunL()
    {
    // if error returns, restart AO
    if (iStatus.Int())
    	{
   	    if (iRecorder.iMemo->Quality() == EQualityHigh)
   	    	{
    	    RequestNotification( iThreshold, iDrive);	
   	    	}
    	return;	
    	}

    // Disk space is below CL -> initiate a compress
    if(iRecorder.iAudioRecorder->State() == CMdaAudioClipUtility::ERecording)
    	{
        iRecorder.StopAndNotify();	
    	}
 
    // Renew notification request
    if (iRecorder.iMemo)
    	{
    	if (iRecorder.iMemo->Quality() == EQualityHigh)
    		{
   	    	RequestNotification( iThreshold, iDrive);	
    		}    		
    	}

    }

// ---------------------------------------------------------------------------
// CVRDiskSpaceWatcher::RunError
// 
// ---------------------------------------------------------------------------
//
TInt CVRDiskSpaceWatcher::RunError(TInt /*aError*/)
    {
    return KErrNone;
    }

// ---------------------------------------------------------------------------
// CVRDiskSpaceWatcher::RequestNotification
// 
// ---------------------------------------------------------------------------
//
void CVRDiskSpaceWatcher::RequestNotification( TInt64 aThreshold, TInt aDrive)
    {
    iThreshold = aThreshold;
    iDrive = aDrive;
    Cancel();
    iFs.NotifyDiskSpace(iThreshold,iDrive,iStatus);
    SetActive();
    }


//  End of File