javamanager/javacaptain/extensionplugins/settingslistener/src.s60/settingslistenerimpl.cpp
changeset 61 bf7ee68962da
parent 48 e0d6e9bd3ca7
equal deleted inserted replaced
48:e0d6e9bd3ca7 61:bf7ee68962da
    22 namespace java
    22 namespace java
    23 {
    23 {
    24 namespace captain
    24 namespace captain
    25 {
    25 {
    26 
    26 
    27     SettingsListenerImpl::SettingsListenerImpl(CoreInterface* aCore) :
    27 SettingsListenerImpl::SettingsListenerImpl(CoreInterface* aCore) :
    28         mCore(aCore)
    28         mCore(aCore)
       
    29 {
       
    30 }
       
    31 
       
    32 SettingsListenerImpl::~SettingsListenerImpl()
       
    33 {
       
    34     cleanUp();
       
    35 }
       
    36 
       
    37 void SettingsListenerImpl::startListening()
       
    38 {
       
    39     // All "listeners" must be created&started here.
       
    40 
       
    41     // Currently there is just this one CenRep key to be listened
       
    42     TInt error = KErrNone;
       
    43     CenRepListener* crMidpClassPathChangeListener =
       
    44         createCenRepKeyListener(KCRUidJavaRuntime, KJavaRuntimeMIDPClasspath,
       
    45                                 CCenRepNotifyHandler::EStringKey, error);
       
    46     if (crMidpClassPathChangeListener)
    29     {
    47     {
    30         JELOG2(EJavaCaptain);
    48         mCenRepListeners.push_back(crMidpClassPathChangeListener);
       
    49     }
       
    50     else
       
    51     {
       
    52         ELOG4(EJavaCaptain, "Error (code: %d) occured when starting "
       
    53               "CenRepListener (repo=%0x, key=%0x, keytype=%d)",
       
    54               error, KCRUidJavaRuntime.iUid, KJavaRuntimeMIDPClasspath,
       
    55               CCenRepNotifyHandler::EStringKey);
       
    56     }
       
    57 }
    31 
    58 
       
    59 void SettingsListenerImpl::stopListening()
       
    60 {
       
    61     cleanUp();
       
    62 }
       
    63 
       
    64 CenRepListener* SettingsListenerImpl::createCenRepKeyListener(TUid aRepoId, TUint32 aKeyId,
       
    65         CCenRepNotifyHandler::TCenRepKeyType aKeyType, TInt& aErrorCode)
       
    66 {
       
    67     CenRepListener* listener = NULL;
       
    68     TRAP(aErrorCode, listener = CenRepListener::NewL(mCore, aRepoId, aKeyId, aKeyType));
       
    69     return listener; // Possible error propagated as a function parameter
       
    70 }
       
    71 
       
    72 // Clean up owned resources
       
    73 void SettingsListenerImpl::cleanUp()
       
    74 {
       
    75     for (crListeners_t::iterator listenersIter = mCenRepListeners.begin();
       
    76             listenersIter != mCenRepListeners.end();  ++listenersIter)
       
    77     {
       
    78         delete *listenersIter;
       
    79         *listenersIter = 0;
    32     }
    80     }
    33 
    81     mCenRepListeners.clear();
    34     SettingsListenerImpl::~SettingsListenerImpl()
    82 }
    35     {
       
    36         JELOG2(EJavaCaptain);
       
    37         cleanUp();
       
    38     }
       
    39 
       
    40     void SettingsListenerImpl::StartListening()
       
    41     {
       
    42         JELOG2(EJavaCaptain);
       
    43         // All "listeners" must be created&started here.
       
    44 
       
    45         // Currently there is just this one CenRep key to be listened
       
    46         std::auto_ptr<CenRepListener> cRMidpClassPathChangeListener;
       
    47         int error = createCenRepKeyListener(KCRUidJavaRuntime, KJavaRuntimeMIDPClasspath,
       
    48                                          CCenRepNotifyHandler::EStringKey,
       
    49                                          cRMidpClassPathChangeListener);
       
    50         if ( KErrNone == error ) {
       
    51             mCenRepListeners.push_back(cRMidpClassPathChangeListener.release());
       
    52         } else {
       
    53             ELOG4(EJavaCaptain, "Error (code: %d) occured when starting "
       
    54                   "CenRepListener (repo=%0x, key=%0x, keytype=%d)",
       
    55                   error, KCRUidJavaRuntime.iUid, KJavaRuntimeMIDPClasspath,
       
    56                   CCenRepNotifyHandler::EStringKey);
       
    57         }
       
    58     }
       
    59 
       
    60     void SettingsListenerImpl::StopListening()
       
    61     {
       
    62         JELOG2(EJavaCaptain);
       
    63         cleanUp();
       
    64     }
       
    65 
       
    66     int SettingsListenerImpl::createCenRepKeyListener(TUid aRepoId, TUint32 aKeyId,
       
    67                                                   CCenRepNotifyHandler::TCenRepKeyType aKeyType,
       
    68                                                 std::auto_ptr<CenRepListener>& aListener)
       
    69     {
       
    70         JELOG2(EJavaCaptain);
       
    71         TRAPD( error, aListener.reset(CenRepListener::NewL(mCore, aRepoId, aKeyId, aKeyType)) );
       
    72         return error;
       
    73     }
       
    74 
       
    75     int SettingsListenerImpl::createCenRepListener(TUid aRepoId, CenRepListener*& aListener)
       
    76     {
       
    77         JELOG2(EJavaCaptain);
       
    78         TRAPD( error, aListener = CenRepListener::NewL(mCore, aRepoId));
       
    79         return error;
       
    80     }
       
    81 
       
    82     // Clean up owned resources
       
    83     void SettingsListenerImpl::cleanUp()
       
    84     {
       
    85         JELOG2(EJavaCaptain);
       
    86 
       
    87         for  ( crListeners_t::iterator listenersIter = mCenRepListeners.begin();
       
    88                listenersIter != mCenRepListeners.end();  ++listenersIter )
       
    89         {
       
    90             delete *listenersIter;
       
    91             *listenersIter = 0;
       
    92         }
       
    93         mCenRepListeners.clear();
       
    94     }
       
    95 
    83 
    96 } // namespace captain
    84 } // namespace captain
    97 } // namespace java
    85 } // namespace java
    98 
    86