tsrc/propertystub/src/e32property.cpp
changeset 22 496ad160a278
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/propertystub/src/e32property.cpp	Fri Jun 11 13:36:18 2010 +0300
@@ -0,0 +1,239 @@
+/*
+* Copyright (c) 2009 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 "e32property.h"
+#include "mussessionproperties.h"
+#include "mussesseioninformationapi.h"
+#include <e32cmn.h>
+
+static RArray<TUint> iIntProperty;
+static TInt iErrorCode = KErrNone;
+static RProperty::TPropertyCalledFunctions iCalledFunction = RProperty::ENone;
+// Large enough to store maximum length descriptor for RProperty
+static TBuf<RProperty::KMaxPropertySize> iString = KNullDesC();
+static TBuf<RProperty::KMaxPropertySize> iVideoCodecList = KNullDesC();
+static TBuf<RProperty::KMaxPropertySize> iSessionRecipient = KNullDesC();
+static TBuf<RProperty::KMaxPropertySize> iEngineName = KNullDesC();
+static TInt iValue = KErrNotFound;
+
+
+_LIT( KMusTestPropertyReadDesc, "TEST" );
+
+// Function definitions
+
+TInt RProperty::Define( TUid /*aCategory*/, TUint /*aKey*/, TInt /*aAttr*/,TInt /*aPreallocate=0*/ )
+    {    
+    iCalledFunction = RProperty::EDefine;
+    return iErrorCode;
+    }
+    
+TInt RProperty::Delete( TUid /*aCategory*/, TUint aKey)
+    {
+    for(TInt i=0;i<iIntProperty.Count();i=i+2)
+        {
+        if( aKey == iIntProperty[i] )
+            {
+            iIntProperty.Remove( i );
+            iIntProperty.Remove( i );
+            return KErrNone;
+            }
+        }
+    
+    return iErrorCode;
+    }
+    
+
+TInt RProperty::Get( TUid /*aCategory*/, TUint aKey, TInt& aVal)
+    {
+    if ( !iErrorCode )
+        {
+        // if errorcode not set , then try to get value from array.
+        TInt error = Get(aKey,aVal);
+        if ( error != KErrNone )
+            {
+            aVal = iValue;
+            error = iValue == KErrNotFound ? error : KErrNone;
+            }
+        return error;
+        }
+    else
+        {
+        // if error code is set value doesnt matter.
+        return iErrorCode;    
+        }    
+    }
+
+TInt RProperty::Get( TInt& aValue)
+    {
+    TInt error = iErrorCode;
+    aValue = iPValue;
+    return error;
+    }
+
+
+TInt RProperty::Get( TUid /*aCategory*/, TUint /*aKey*/, TDes8& aValue)
+    {
+    // This is not widely used in Mush , so who cares in stub.
+    aValue.Append( KMusTestPropertyReadDesc );
+    return iErrorCode;
+    }
+
+
+TInt RProperty::Get( TUid /*aCategory*/, TUint aKey, TDes16& aValue )
+    {
+    if ( aKey == NMusSessionInformationApi::KMUSCallProvider )
+         {
+         aValue = iEngineName;
+         }
+    else if ( aKey == NMusSessionApi::KVideoCodecs )
+        {
+        aValue = iVideoCodecList;
+        }
+    else if ( aKey == NMusSessionApi::KRemoteSipAddress )
+        {
+        aValue = iSessionRecipient;
+        }
+    else
+        {
+        aValue = iString;
+        }
+    
+    return iErrorCode;
+    }
+
+TInt RProperty::Set( TUid /*aCategory*/, TUint aKey, TInt aValue)
+    {    
+    for(TInt i=0;i<iIntProperty.Count();i=i+2)
+        {
+        if( aKey == iIntProperty[i] )
+            {
+            iIntProperty[i+1] = aValue;
+            return KErrNone;
+            }
+        }
+
+    TInt error = KErrNone;
+    error = iIntProperty.Append(aKey);
+    if (!error)
+        {
+        error = iIntProperty.Append(aValue);
+        }
+    return iErrorCode ? iErrorCode : error;
+    }
+
+TInt RProperty::Set( TUid /*aCategory*/, TUint /*aKey*/, const TDesC8& /*aValue*/)
+    {
+    // This is not widely used in Mush , so who cares in stub.
+    return iErrorCode;
+    }
+
+
+TInt RProperty::Set( TUid /*aCategory*/, TUint aKey, const TDesC& aValue )
+    {
+
+    if ( aKey == NMusSessionInformationApi::KMUSCallProvider )
+        {
+        iEngineName = aValue;
+        }
+    
+    else if ( aKey == NMusSessionApi::KVideoCodecs )
+        {
+        iVideoCodecList = aValue;
+        }
+    else if ( aKey == NMusSessionApi::KRemoteSipAddress )
+        {
+        iSessionRecipient = aValue;
+        }
+    else
+        {
+        iString = aValue;
+        }
+    return iErrorCode;
+    }
+
+
+TInt RProperty::Attach(  TUid /*aCategory*/, TUint /*aKey*/)
+    {
+    return iErrorCode;
+    }   
+
+
+void RProperty::Cancel()
+    {    
+    iCalledFunction = RProperty::ECancel;
+    if ( iRequestStatus )
+        {
+        User::RequestComplete( iRequestStatus, KErrCancel );
+        }
+    iRequestStatus = NULL;
+    }
+
+TInt RProperty::Set(TInt aValue) // Non-Static
+    {
+    iPValue = aValue;
+    return iErrorCode;
+    }
+    
+
+void RProperty::Subscribe(TRequestStatus& aRequest)
+    {
+    aRequest = KRequestPending;
+    iRequestStatus = &aRequest;
+    
+    }
+
+TInt RProperty::Get(TUint& aKey,TInt& aVal)
+    {    
+    for(TInt i=0;i<iIntProperty.Count();i=i+2)
+        {
+        if( aKey == iIntProperty[i] )
+            {
+            aVal = iIntProperty[i+1];
+            return KErrNone;
+            }
+        }
+    return KErrNotFound;
+    }
+
+/*
+ * Stub helper function to set error codes
+ */
+void PropertyHelper::SetErrorCode(TInt aVal)
+    {
+    iErrorCode = aVal;
+    }
+
+RProperty::TPropertyCalledFunctions PropertyHelper::GetCalledFunction()
+    {
+    return iCalledFunction;
+    }
+
+void RProperty::Close()
+    {
+    Cancel();
+    }
+
+void PropertyHelper::Close()
+    {
+    iIntProperty.Close();
+    iErrorCode = KErrNone;
+    iCalledFunction = RProperty::ENone;
+    iString = KNullDesC();
+    iEngineName = KNullDesC();
+    iValue = KErrNotFound;
+    }
+