dcmofw/dcmoserver/src/dcmogenericcontrol.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Mon, 18 Jan 2010 21:00:49 +0200
changeset 2 5594fba90824
parent 0 b497e44ab2fc
permissions -rw-r--r--
Revision: 201001 Kit: 201003

/*
* 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;
}