mmserv/callaudiocontrol/src/CallAudioControlRepository.cpp
changeset 0 71ca22bcf22a
--- /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