--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/callaudiocontrol/src/CallAudioControlRepository.cpp Tue Feb 02 01:08:46 2010 +0200
@@ -0,0 +1,183 @@
+/*
+ * Copyright (c) 2007 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: This is the implementation of the CallAudioControlRepository class.
+ *
+ */
+
+// INCLUDE FILES
+#include "CallAudioControlRepository.h"
+#include "CallAudioControlImpl.h"
+#include "CallAudioControlCommon.h"
+
+// -----------------------------------------------------------------------------
+// CCallAudioControlRepository::NewL
+//
+// -----------------------------------------------------------------------------
+//
+CCallAudioControlRepository* CCallAudioControlRepository::NewL(
+ CCallAudioControlImpl* aImplParent, const TUid aUid,
+ const TUint32 aKey, TAction aAction)
+ {
+ CCallAudioControlRepository* self =
+ new (ELeave) CCallAudioControlRepository();
+ CleanupStack::PushL(self);
+ self->ConstructL(aImplParent, aUid, aKey, aAction);
+ CleanupStack::Pop(self);
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+// CCallAudioControlRepository::CCallAudioControlRepository
+// C++ constructor.
+// -----------------------------------------------------------------------------
+//
+CCallAudioControlRepository::CCallAudioControlRepository() :
+ CActive(EPriorityNormal), iSubscribed(EFalse)
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// CCallAudioControlRepository::ConstructL
+// Symbian 2nd phase constructor can leave.
+// -----------------------------------------------------------------------------
+//
+void CCallAudioControlRepository::ConstructL(
+ CCallAudioControlImpl* aImplParent, const TUid aUid,
+ const TUint32 aKey, TAction aAction)
+ {
+ CAC_TRACE1(_L("CCallAudioControlRepository::ConstructL enter"));
+ iImplParent = aImplParent;
+ iAction = aAction;
+ iKey = aKey;
+ //Create Repository object:
+ iRepository = CRepository::NewL(aUid);
+ CActiveScheduler::Add(this);
+ CAC_TRACE1(_L("CCallAudioControlRepository::ConstructL exit"));
+ }
+
+// -----------------------------------------------------------------------------
+// CCallAudioControlRepository::DestructL
+// Destructor
+// -----------------------------------------------------------------------------
+//
+CCallAudioControlRepository::~CCallAudioControlRepository()
+ {
+ CAC_TRACE2(_L("CCallAudioControlRepository[%x]::~CCallAudioControlRepository enter"),this);
+ Cancel();
+ delete iRepository;
+ CAC_TRACE2(_L("CCallAudioControlRepository[%x]::~CCallAudioControlRepository exit"),this);
+ }
+
+// ---------------------------------------------------------
+// CCallAudioControlRepository::NotifyRequest
+// ?implementation_description
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CCallAudioControlRepository::NotifyRequest()
+ {
+ CAC_TRACE2(_L("CCallAudioControlRepository[%x]::NotifyRequest"),this);
+ if (!IsActive())
+ {
+ iRepository->NotifyRequest(iKey, iStatus);
+ SetActive();
+ }
+ iSubscribed = ETrue;
+ }
+
+// ---------------------------------------------------------
+// CCallAudioControlRepository::NotifyCancel
+// ?implementation_description
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CCallAudioControlRepository::NotifyCancel()
+ {
+ CAC_TRACE2(_L("CCallAudioControlRepository[%x]::NotifyCancel"),this);
+ iRepository->NotifyCancel(iKey);
+ iSubscribed = EFalse;
+ }
+
+// -----------------------------------------------------------------------------
+// CCallAudioControlRepository::Get
+// -----------------------------------------------------------------------------
+//
+TInt CCallAudioControlRepository::Get(TInt& aValue)
+ {
+ CAC_TRACE2(_L("CCallAudioControlRepository[%x]::Get"), this);
+ TInt error = iRepository->Get(iKey, aValue);
+ return error;
+ }
+
+// -----------------------------------------------------------------------------
+// CCallAudioControlRepository::Set
+// -----------------------------------------------------------------------------
+//
+TInt CCallAudioControlRepository::Set(TInt aValue)
+ {
+ CAC_TRACE2(_L("CCallAudioControlRepository[%x]::Set"), this);
+ TInt error = iRepository->Set(iKey, aValue);
+ return error;
+ }
+
+//
+// Methods required for CActive
+//
+// -----------------------------------------------------------------------------
+// CCallAudioControlRepository::DoCancel
+// -----------------------------------------------------------------------------
+//
+void CCallAudioControlRepository::DoCancel()
+ {
+ if (iSubscribed)
+ {
+ iRepository->NotifyCancel(iKey);
+ iSubscribed = EFalse;
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CCallAudioControlRepository::RunL
+// -----------------------------------------------------------------------------
+//
+void CCallAudioControlRepository::RunL()
+ {
+ CAC_TRACE2(_L("CCallAudioControlRepository[%x]::RunL"), this);
+ TInt value;
+ TInt err = iRepository->Get(iKey, value);
+ if (err != KErrNone)
+ {
+ CAC_TRACE3(_L("CCallAudioControlRepository[%x]::RunL ERROR From Get: %d"), this,err);
+ }
+ // Notify CallAudioControl of change:
+ if (iImplParent != NULL)
+ {
+ iImplParent->NotifyL(iAction, err, value);
+ }
+ // Set self up to get future vol change notifications
+ iSubscribed = EFalse;
+ NotifyRequest();
+
+ }
+
+// -----------------------------------------------------------------------------
+// CCallAudioControlRepository::RunError
+// -----------------------------------------------------------------------------
+//
+TInt CCallAudioControlRepository::RunError()
+ {
+ return KErrNone;
+ }
+
+// End of file