diff -r e5618cc85d74 -r 6c158198356e javamanager/javacaptain/extensionplugins/settingslistener/src.s60/settingslistenerimpl.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javamanager/javacaptain/extensionplugins/settingslistener/src.s60/settingslistenerimpl.cpp Thu Aug 19 09:48:13 2010 +0300 @@ -0,0 +1,86 @@ +/* +* 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) +{ +} + +SettingsListenerImpl::~SettingsListenerImpl() +{ + cleanUp(); +} + +void SettingsListenerImpl::startListening() +{ + // All "listeners" must be created&started here. + + // Currently there is just this one CenRep key to be listened + TInt error = KErrNone; + CenRepListener* crMidpClassPathChangeListener = + createCenRepKeyListener(KCRUidJavaRuntime, KJavaRuntimeMIDPClasspath, + CCenRepNotifyHandler::EStringKey, error); + if (crMidpClassPathChangeListener) + { + mCenRepListeners.push_back(crMidpClassPathChangeListener); + } + 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() +{ + cleanUp(); +} + +CenRepListener* SettingsListenerImpl::createCenRepKeyListener(TUid aRepoId, TUint32 aKeyId, + CCenRepNotifyHandler::TCenRepKeyType aKeyType, TInt& aErrorCode) +{ + CenRepListener* listener = NULL; + TRAP(aErrorCode, listener = CenRepListener::NewL(mCore, aRepoId, aKeyId, aKeyType)); + return listener; // Possible error propagated as a function parameter +} + +// Clean up owned resources +void SettingsListenerImpl::cleanUp() +{ + for (crListeners_t::iterator listenersIter = mCenRepListeners.begin(); + listenersIter != mCenRepListeners.end(); ++listenersIter) + { + delete *listenersIter; + *listenersIter = 0; + } + mCenRepListeners.clear(); +} + +} // namespace captain +} // namespace java +