javamanager/javacaptain/extensionplugins/settingslistener/src.s60/settingslistenerimpl.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 06 Jul 2010 14:10:26 +0300
changeset 48 e0d6e9bd3ca7
child 50 023eef975703
permissions -rw-r--r--
Revision: v2.2.3 Kit: 2010127

/*
* Copyright (c) 2010 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 "settingslistenerimpl.h"
#include "cenreplistener.h"
#include "logger.h"

namespace java
{
namespace captain
{

    SettingsListenerImpl::SettingsListenerImpl(CoreInterface* aCore) :
        mCore(aCore)
    {
        JELOG2(EJavaCaptain);

    }

    SettingsListenerImpl::~SettingsListenerImpl()
    {
        JELOG2(EJavaCaptain);
        cleanUp();
    }

    void SettingsListenerImpl::StartListening()
    {
        JELOG2(EJavaCaptain);
        // All "listeners" must be created&started here.

        // Currently there is just this one CenRep key to be listened
        std::auto_ptr<CenRepListener> cRMidpClassPathChangeListener;
        int error = createCenRepKeyListener(KCRUidJavaRuntime, KJavaRuntimeMIDPClasspath,
                                         CCenRepNotifyHandler::EStringKey,
                                         cRMidpClassPathChangeListener);
        if ( KErrNone == error ) {
            mCenRepListeners.push_back(cRMidpClassPathChangeListener.release());
        } else {
            ELOG4(EJavaCaptain, "Error (code: %d) occured when starting "
                  "CenRepListener (repo=%0x, key=%0x, keytype=%d)",
                  error, KCRUidJavaRuntime.iUid, KJavaRuntimeMIDPClasspath,
                  CCenRepNotifyHandler::EStringKey);
        }
    }

    void SettingsListenerImpl::StopListening()
    {
        JELOG2(EJavaCaptain);
        cleanUp();
    }

    int SettingsListenerImpl::createCenRepKeyListener(TUid aRepoId, TUint32 aKeyId,
                                                  CCenRepNotifyHandler::TCenRepKeyType aKeyType,
                                                std::auto_ptr<CenRepListener>& aListener)
    {
        JELOG2(EJavaCaptain);
        TRAPD( error, aListener.reset(CenRepListener::NewL(mCore, aRepoId, aKeyId, aKeyType)) );
        return error;
    }

    int SettingsListenerImpl::createCenRepListener(TUid aRepoId, CenRepListener*& aListener)
    {
        JELOG2(EJavaCaptain);
        TRAPD( error, aListener = CenRepListener::NewL(mCore, aRepoId));
        return error;
    }

    // Clean up owned resources
    void SettingsListenerImpl::cleanUp()
    {
        JELOG2(EJavaCaptain);

        for  ( crListeners_t::iterator listenersIter = mCenRepListeners.begin();
               listenersIter != mCenRepListeners.end();  ++listenersIter )
        {
            delete *listenersIter;
            *listenersIter = 0;
        }
        mCenRepListeners.clear();
    }

} // namespace captain
} // namespace java