akntouchgesturefw/src/akntouchgesturefwcenreplistener.cpp
author srilekhas <srilekhas@symbian.org>
Fri, 22 Oct 2010 15:49:04 +0100
branchRCL_3
changeset 73 7437a26b11d0
parent 0 2f259fa3e83a
permissions -rw-r--r--
Merge RCL_3 Fixes to Bug 2846,Bug 2584,Bug 2012

/*
* 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:  Touch gesture framework central repository listener.
*
*/

#include <centralrepository.h>

#include "akntouchgesturefwcenreplistener.h"

using namespace AknTouchGestureFw;

const TUint32 KAknTouchGestureFwPartialKey( 0x00000001 );
const TUint32 KAknTouchGestureFwKeyBitMask( 0xfffffff0 );


// ======== MEMBER FUNCTIONS ========

// ---------------------------------------------------------------------------
// Two-phased constructor.
// ---------------------------------------------------------------------------
//
CAknTouchGestureFwCenRepListener* CAknTouchGestureFwCenRepListener::NewL(
    CRepository* aCenRep,
    MAknTouchGestureFwCenRepObserver* aObserver )
    {
    CAknTouchGestureFwCenRepListener* self =
        CAknTouchGestureFwCenRepListener::NewLC( aCenRep, aObserver );
    CleanupStack::Pop( self );
    return self;
    }


// ---------------------------------------------------------------------------
// Two-phased constructor.
// ---------------------------------------------------------------------------
//
CAknTouchGestureFwCenRepListener* CAknTouchGestureFwCenRepListener::NewLC(
    CRepository* aCenRep,
    MAknTouchGestureFwCenRepObserver* aObserver )
    {
    CAknTouchGestureFwCenRepListener* self =
        new ( ELeave ) CAknTouchGestureFwCenRepListener( aCenRep, aObserver );
    CleanupStack::PushL( self );
    self->ConstructL();
    return self;
    }


// ---------------------------------------------------------------------------
//  Destructor.
// ---------------------------------------------------------------------------
//
CAknTouchGestureFwCenRepListener::~CAknTouchGestureFwCenRepListener()
    {
    Cancel();
    }


// ---------------------------------------------------------------------------
// Handles the request completion, called when an observed
// CenRep value changes.
// ---------------------------------------------------------------------------
//
void CAknTouchGestureFwCenRepListener::RunL()
    {
    TInt status( iStatus.Int() );
    RenewRequestL();
    iObserver->CenRepValueChanged( status );
    }


// ---------------------------------------------------------------------------
// Cancels an outstanding request.
// ---------------------------------------------------------------------------
//
void CAknTouchGestureFwCenRepListener::DoCancel()
    {
    iCenRep->NotifyCancelAll();
    }


// ---------------------------------------------------------------------------
// Handles possible leaves on request completion.
// ---------------------------------------------------------------------------
//
TInt CAknTouchGestureFwCenRepListener::RunError( TInt /*aError*/ )
    {
    // Fail silently.
    return KErrNone;
    }


// ---------------------------------------------------------------------------
// C++ constructor.
// ---------------------------------------------------------------------------
//
CAknTouchGestureFwCenRepListener::CAknTouchGestureFwCenRepListener(
    CRepository* aCenRep,
    MAknTouchGestureFwCenRepObserver* aObserver )
    : CActive( EPriorityStandard ),
      iCenRep( aCenRep ),
      iObserver( aObserver )
    {
    }


// ---------------------------------------------------------------------------
// Symbian second-phase constructor.
// ---------------------------------------------------------------------------
//
void CAknTouchGestureFwCenRepListener::ConstructL()
    {
    CActiveScheduler::Add( this );
    RenewRequestL();
    }


// ---------------------------------------------------------------------------
// Renews the request.
// ---------------------------------------------------------------------------
//
void CAknTouchGestureFwCenRepListener::RenewRequestL()
    {
    User::LeaveIfError(
        iCenRep->NotifyRequest(
                KAknTouchGestureFwPartialKey,
                KAknTouchGestureFwKeyBitMask, iStatus ) );
    SetActive();
    }

// End of File