dcmofw/dcmoserver/src/dcmogenericcontrol.cpp
changeset 0 b497e44ab2fc
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dcmofw/dcmoserver/src/dcmogenericcontrol.cpp	Thu Dec 17 09:07:52 2009 +0200
@@ -0,0 +1,262 @@
+/*
+* 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:  DCMO GenericControl implementation
+*
+*/
+
+#include <e32base.h>
+#include <centralrepository.h>
+#include "dcmogenericcontrol.h"
+#include "dcmoserver.h"
+#include "dcmoconst.h"
+#include "dcmodebug.h"
+
+const TInt KBufferSize = 30;
+// ----------------------------------------------------------------------------------------
+// CDCMOGenericControl::CDCMOGenericControl() 
+// ----------------------------------------------------------------------------------------
+
+CDCMOGenericControl::CDCMOGenericControl() 
+	{	
+	RDEBUG("CDCMOGenericControl::CDCMOGenericControl");
+	}
+
+// ----------------------------------------------------------------------------------------
+// CDCMOGenericControl::~CDCMOGenericControl() 
+// ----------------------------------------------------------------------------------------
+CDCMOGenericControl::~CDCMOGenericControl()
+{
+	RDEBUG("CDCMOGenericControl::CDCMOGenericControl Destructor");
+}
+
+// ----------------------------------------------------------------------------------------
+// CDCMOGenericControl::~CDCMOGenericControl() 
+// ----------------------------------------------------------------------------------------
+TInt CDCMOGenericControl::GetGroupValueL(TDes& aStrValue)
+{
+  RDEBUG("CDCMOGenericControl::GetGroupValueL(): begin");
+  TInt ret(-1);
+	if(aStrValue.Match(KDCMOHardware()) == KErrNone )
+		ret = 0;
+	else if( aStrValue.Match(KDCMOIO()) == KErrNone )
+		ret = 1;
+	else if( aStrValue.Match(KDCMOConnectivity()) == KErrNone )
+		ret = 2;
+	else if(	aStrValue.Match(KDCMOSoftware()) == KErrNone )
+		ret = 3;
+	else if(	aStrValue.Match(KDCMOService()) == KErrNone )
+		ret = 4;
+	
+	RDEBUG("CDCMOGenericControl::GetGroupValueL(): end");
+	return ret;		
+}
+
+// ----------------------------------------------------------------------------------------
+// CDCMOGenericControl::GetIntAttributeL(TInt aCategotyNumber, TDCMONode aId, TInt& aValue)
+// ----------------------------------------------------------------------------------------
+TDCMOStatus CDCMOGenericControl::GetIntAttributeL(TInt aCategotyNumber, TDCMONode aId, TInt& aValue)
+{
+    RDEBUG("CDCMOGenericControl::GetIntAttributeL(): begin");
+		TDCMOStatus err(EDcmoFail);
+		TInt reterr(-1);
+		switch(aId)
+		{
+				case EGroup: 
+						{
+							RDEBUG("CDCMOGenericControl::GetIntAttributeL(): In Group");
+							TBuf<KBufferSize> group;
+							CRepository * centrep = CRepository::NewLC( KCRUidDCMOServer );
+							TUint32 centrepKey = aCategotyNumber + KDCMOGroupNumber;
+							reterr = centrep->Get( centrepKey, group );
+							CleanupStack::PopAndDestroy( centrep );
+							aValue = GetGroupValueL(group);
+						}
+					break;
+		
+				case EAttached:
+						{
+							RDEBUG("CDCMOGenericControl::GetIntAttributeL(): In Attached");							
+							aValue = 1; // Attached
+							reterr = KErrNone;
+						}
+					break;
+				case EEnabled:	
+						{	
+							RDEBUG("CDCMOGenericControl::GetIntAttributeL(): In Enabled");						
+							CRepository * centrep = CRepository::NewLC( KCRUidDCMOServer );
+							TUint32 centrepKey = aCategotyNumber + KDCMOMainKeyNumber;
+							TInt centrepMainKey, centrepActualKey;
+							reterr = centrep->Get( centrepKey, centrepMainKey );
+							centrepKey = aCategotyNumber + KDCMOActualKeyNumber;							
+							reterr = centrep->Get( centrepKey, centrepActualKey );
+							TUid uidValue = {centrepMainKey};
+							CRepository* centrep1 = CRepository::NewLC( uidValue );
+							reterr = centrep1->Get( centrepActualKey, aValue );
+							if( !aCategotyNumber ) // for Camera
+							{
+								if(aValue == 0)
+								{
+									aValue = 1;
+								}
+								else if(aValue == 1)
+								{
+									aValue = 0;
+								} 
+							}
+							CleanupStack::PopAndDestroy( centrep1 );
+							CleanupStack::PopAndDestroy( centrep );
+						}
+						break;
+		
+				case EDenyUserEnable:
+						{
+							RDEBUG("CDCMOGenericControl::GetIntAttributeL(): In DenyUserEnable");							
+							aValue = 1; // DenyUserEnable
+							reterr = KErrNone;
+						}
+						break;
+				case ENotifyUser:
+						{
+							RDEBUG("CDCMOGenericControl::GetIntAttributeL(): In NotifyUser");							
+							aValue = 1; // NotifyUser
+							reterr = KErrNone;
+						}
+						break;
+				default :
+					{
+						RDEBUG("CDCMOGenericControl::GetIntAttributeL(): Not Found");
+						err = EDcmoNotFound;
+					}
+		}
+		if(reterr == KErrNone)
+			err = EDcmoSuccess;
+	  RDEBUG("CDCMOGenericControl::GetIntAttributeL(): end");
+	  return err;
+}
+
+// ----------------------------------------------------------------------------------------
+// CDCMOGenericControl::GetStrAttributeL(TInt aCategotyNumber, TDCMONode aId, TDes& aStrValue)
+// ----------------------------------------------------------------------------------------
+TDCMOStatus CDCMOGenericControl::GetStrAttributeL(TInt aCategotyNumber, TDCMONode aId, TDes& aStrValue) 
+{
+	RDEBUG("CDCMOGenericControl::GetStrAttributeL(): begin");
+	TDCMOStatus err(EDcmoFail);
+	TInt reterr(-1);
+	switch(aId)
+	{
+				case EProperty:
+						{
+							RDEBUG("CDCMOGenericControl::GetStrAttributeL(): In Property");
+							CRepository * centrep = CRepository::NewLC( KCRUidDCMOServer );
+							TUint32 centrepKey = aCategotyNumber + KDCMOPropertyNumber;
+							reterr = centrep->Get( centrepKey, aStrValue );
+							CleanupStack::PopAndDestroy( centrep );
+						}
+						break;
+		
+				case EDescription:
+						{
+							RDEBUG("CDCMOGenericControl::GetStrAttributeL(): In Description");
+							CRepository * centrep = CRepository::NewLC( KCRUidDCMOServer );
+							TUint32 centrepKey = aCategotyNumber + KDCMODescriptionNumber;
+							reterr = centrep->Get( centrepKey, aStrValue );
+							CleanupStack::PopAndDestroy( centrep );
+						}	
+						break;
+				default :
+						{
+							RDEBUG("CDCMOGenericControl::GetStrAttributeL(): Not Found");
+							err = EDcmoNotFound;
+					  }
+	
+	}	
+	if(reterr == KErrNone)
+		err = EDcmoSuccess;		
+	
+	RDEBUG("CDCMOGenericControl::GetStrAttributeL(): end");
+	return err;
+}
+
+// ----------------------------------------------------------------------------------------
+// CDCMOGenericControl::SetIntAttributeL(TInt aCategotyNumber, TDCMONode aId, TInt aValue)
+// ----------------------------------------------------------------------------------------
+TDCMOStatus CDCMOGenericControl::SetIntAttributeL(TInt aCategotyNumber, TDCMONode aId, TInt aValue)
+{
+	RDEBUG("CDCMOGenericControl::SetIntAttributeL(): begin");
+	TDCMOStatus err(EDcmoFail);
+	TInt reterr(-1);
+	switch(aId)
+	{
+				case EDenyUserEnable:
+					{
+							RDEBUG("CDCMOGenericControl::SetIntAttributeL(): In DenyUserEnable");	
+							err = EDcmoNotSupported;
+					}
+					break;
+				case ENotifyUser:
+					{
+							RDEBUG("CDCMOGenericControl::SetIntAttributeL(): In NotifyUser");	
+							err = EDcmoNotSupported;
+					}
+					break;
+				case EEnable:	
+					{
+							RDEBUG("CDCMOGenericControl::SetIntAttributeL(): In Enable");	
+							if((aValue == 0)|| (aValue == 1))
+							{
+								CRepository * centrep = CRepository::NewLC( KCRUidDCMOServer );
+								TUint32 centrepKey = aCategotyNumber + KDCMOMainKeyNumber;
+								TInt centrepMainKey, centrepActualKey;
+								reterr = centrep->Get( centrepKey, centrepMainKey );
+								centrepKey = aCategotyNumber + KDCMOActualKeyNumber;							
+								reterr = centrep->Get( centrepKey, centrepActualKey );
+								TUid uidValue = {centrepMainKey};
+								CRepository * centrep1 = CRepository::NewLC( uidValue );
+								if( aCategotyNumber == 0) // this is only if the category is Camera
+								{
+									if(aValue == 0)
+										aValue = 1;
+									else if (aValue == 1)
+										aValue = 0; 	
+								}
+								reterr = centrep1->Set( centrepActualKey, aValue );
+								CleanupStack::PopAndDestroy( centrep1 );
+								CleanupStack::PopAndDestroy( centrep );							
+							}	
+					}	
+					break;
+					default :
+						{
+							RDEBUG("CDCMOGenericControl::SetIntAttributeL(): Not Found");
+							err = EDcmoNotFound;
+					  }
+	}
+	if(reterr == KErrNone)
+		err = EDcmoSuccess;			
+	
+	RDEBUG("CDCMOGenericControl::SetIntAttributeL(): end");
+	return err;
+}
+
+// ----------------------------------------------------------------------------------------
+// CDCMOGenericControl::SetStrAttributeL(TInt /*aCategotyNumber*/, TDCMONode /*aId*/, const TDes& /*aStrValue*/) 
+// ----------------------------------------------------------------------------------------
+TDCMOStatus CDCMOGenericControl::SetStrAttributeL(TInt /*aCategotyNumber*/, TDCMONode /*aId*/, const TDes& /*aStrValue*/)
+{
+	RDEBUG("CDCMOGenericControl::SetStrAttributeL(): begin");
+	TDCMOStatus err(EDcmoFail);
+	err = EDcmoNotSupported;
+	RDEBUG("CDCMOGenericControl::SetStrAttributeL(): end");	
+	return err;
+}