taskswitcher/contextengine/tsctxutils/src/tscenreplistener.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 26 Jan 2010 11:48:23 +0200
changeset 4 4d54b72983ae
permissions -rw-r--r--
Revision: 201001 Kit: 201004

/*
* 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: 
*
*/

#include <e32cmn.h>
#include <centralrepository.h>

#include "tscenreplistener.h"
// -----------------------------------------------------------------------------
// CTsCenrepListener::NewL
// -----------------------------------------------------------------------------
EXPORT_C CTsCenrepListener* CTsCenrepListener::NewL(const TUid& aRep, TUint32 aKey,
                                   MTsCenrepChangeObserver& aObserver)
    {
    CTsCenrepListener* self = CTsCenrepListener::NewLC(aRep, aKey, aObserver);
    CleanupStack::Pop(self);
    return self;
    }

// -----------------------------------------------------------------------------
// CTsCenrepListener::NewLC
// -----------------------------------------------------------------------------
EXPORT_C CTsCenrepListener* CTsCenrepListener::NewLC(const TUid& aRep, TUint32 aKey,
                                       MTsCenrepChangeObserver& aObserver)
    {
    CTsCenrepListener *self = new(ELeave) CTsCenrepListener(aKey, aObserver);
    CleanupStack::PushL(self);
    self->ConstructL(aRep);
    return self;
    }

// -----------------------------------------------------------------------------
// CTsCenrepListener::CTsCenrepListener
// -----------------------------------------------------------------------------
CTsCenrepListener::CTsCenrepListener(TUint32 aKey, 
                                     MTsCenrepChangeObserver& aObserver)
: CActive( CActive::EPriorityStandard ), iObserver( aObserver ), iKey( aKey )
    {
    CActiveScheduler::Add(this);
    }

// -----------------------------------------------------------------------------
// CTsCenrepListener::ConstructL
// -----------------------------------------------------------------------------
void CTsCenrepListener::ConstructL(const TUid& aRep)
    {
    iRep = CRepository::NewL( aRep );
    iRep->NotifyRequest( iKey, iStatus );
    SetActive();
    }

// -----------------------------------------------------------------------------
// CTsCenrepListener::~CTsCenrepListener
// -----------------------------------------------------------------------------
EXPORT_C CTsCenrepListener::~CTsCenrepListener()
    {
    Cancel();
    delete iRep;
    }

// -----------------------------------------------------------------------------
// CTsCenrepListener::DoCancel
// -----------------------------------------------------------------------------
void CTsCenrepListener::DoCancel()
    {
    iRep->NotifyCancelAll();
    }

// -----------------------------------------------------------------------------
// CTsCenrepListener::RunL
// -----------------------------------------------------------------------------
void CTsCenrepListener::RunL()
    {
    if ( iStatus.Int() != KErrCancel )
        {
        iObserver.CenrepChanged( iKey, Value() );
        iRep->NotifyRequest( iKey, iStatus );
        SetActive();
        }
    }

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

// -----------------------------------------------------------------------------
// CTsCenrepListener::Value
// -----------------------------------------------------------------------------
EXPORT_C TInt CTsCenrepListener::Value()
    {
    TInt val = 0;
    iRep->Get( iKey, val );
    return val;
    }

// end of file