accessoryservices/autoaudioasy/src/cautoaudioasypropertyobserver.cpp
changeset 45 c6215323ad55
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/accessoryservices/autoaudioasy/src/cautoaudioasypropertyobserver.cpp	Tue Jul 06 15:43:30 2010 +0300
@@ -0,0 +1,92 @@
+/*
+* 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:  Notify service class about connection state.
+*
+*/
+
+#include "cautoaudioasypropertyobserver.h" 
+#include "autoaudiopskeys.h"
+#include "mautoaudioasypropertylistener.h"
+
+#include "acc_debug.h"
+
+// ---------------------------------------------------------------------------
+// CAutoAudioAsyPropertyObserver::NewL
+// ---------------------------------------------------------------------------
+CAutoAudioAsyPropertyObserver* CAutoAudioAsyPropertyObserver::NewL ( TUid aCategory, TUint aKey,
+        MAutoAudioAsyPropertyListener& aListener )
+	{
+    COM_TRACE_1 ( "[AccFW:AutoAudioAsy] CAutoAudioAsyPropertyObserver::NewL(), key- %d", aKey );
+    return new ( ELeave ) CAutoAudioAsyPropertyObserver ( aCategory, aKey, aListener );
+	}
+
+// ---------------------------------------------------------------------------
+// CAutoAudioAsyPropertyObserver::CAutoAudioAsyPropertyObserver
+// ---------------------------------------------------------------------------
+CAutoAudioAsyPropertyObserver::CAutoAudioAsyPropertyObserver ( TUid aCategory, TUint aKey,
+        MAutoAudioAsyPropertyListener& aListener ):
+    CActive ( EPriorityStandard ),
+    iCategory ( aCategory ), iKey ( aKey ), iListener ( aListener )
+    {
+    CActiveScheduler::Add ( this );    
+    iProperty.Attach ( iCategory, iKey );
+    iProperty.Subscribe ( iStatus );
+    SetActive ();
+    }
+
+// ---------------------------------------------------------------------------
+// CAutoAudioAsyPropertyObserver::~CAutoAudioAsyPropertyObserver
+// ---------------------------------------------------------------------------
+CAutoAudioAsyPropertyObserver::~CAutoAudioAsyPropertyObserver ()
+    {
+    COM_TRACE_ ( "[AccFW:AutoAudioAsy] CAutoAudioAsyPropertyObserver::~CAutoAudioAsyPropertyObserver");
+    Cancel ();
+    iProperty.Close ();
+    }
+
+// ---------------------------------------------------------------------------
+// CAutoAudioAsyPropertyObserver::RunL
+// ---------------------------------------------------------------------------
+void CAutoAudioAsyPropertyObserver::RunL ()
+    {                      
+    COM_TRACE_ ( "AccFW:AutoAudioAsy] CAutoAudioAsyPropertyObserver::RunL");
+
+    TInt status = iStatus.Int ();
+    COM_TRACE_3 ( "[AccFW:AutoAudioAsy] key 0x%08x/%u changed, status %d", iCategory.iUid, iKey, status );
+    // Subscribe for the next change BEFORE invoking the listener to make sure
+    // that we never miss any property changes.
+    iProperty.Subscribe ( iStatus );
+    SetActive ();
+
+    // Notify the listener
+    iListener.PropertyChange ( iProperty, iCategory, iKey, status );
+    }
+
+// ---------------------------------------------------------------------------
+// CAutoAudioAsyPropertyObserver::DoCancel
+// ---------------------------------------------------------------------------
+void CAutoAudioAsyPropertyObserver::DoCancel ()
+    {
+    COM_TRACE_ ( "[AccFW:AutoAudioAsy] CAutoAudioAsyPropertyObserver::DoCancel" );
+    iProperty.Cancel ();
+    }    
+
+// ---------------------------------------------------------------------------
+// CAutoAudioAsyPropertyObserver::RunError
+// ---------------------------------------------------------------------------
+TInt CAutoAudioAsyPropertyObserver::RunError ( TInt /* aError */ )
+	{
+    COM_TRACE_ ( "[AccFW:AutoAudioAsy] CAutoAudioAsyPropertyObserver::RunError" );
+    return KErrNone;
+	}