sapi_applicationmanager/appmanagerservice/src/appinfo.cpp
changeset 0 14df0fbfcc4e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sapi_applicationmanager/appmanagerservice/src/appinfo.cpp	Mon Mar 30 12:51:10 2009 +0300
@@ -0,0 +1,240 @@
+/*
+* Copyright (c) 2007-2007 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "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 Class provides information of Application installed on phone.
+*
+*
+*/
+
+
+#include "appinfo.h"
+
+// Length of heap descriptor holding keyvalue.
+
+ //(8*8) + (2 * 8) = 64 + 16 = 80 , 10 bytes + 1 = 11 bytes
+const TInt KUidLength = 20;
+
+_LIT(KHEXAdd,"0x");
+// -----------------------------------------------------------------------------
+// CAppInfo::NewL
+// Returns the instance of CAppInfo class.
+// -----------------------------------------------------------------------------
+CAppInfo*  CAppInfo::NewL(TApaAppInfo& aAppInfo)
+	{
+	CAppInfo* self = new(ELeave) CAppInfo(aAppInfo);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+// -----------------------------------------------------------------------------
+// CAppInfo::ConstructL
+// Two-phased constructor
+// -----------------------------------------------------------------------------
+void CAppInfo::ConstructL()
+	{
+	iKeyArray = new(ELeave)	CDesC8ArraySeg( KArrayGranularity );
+
+	iKeyArray->AppendL(KName);
+	iKeyArray->AppendL(KUid);
+	iKeyArray->AppendL(KCaption);
+	iKeyArray->AppendL(KShortCaption);
+    TInt count = iKeyArray->Count();
+	for(TInt index = 0 ; index < count ;index++)
+		{
+		//Intializing the Array
+		iKeyValArray.AppendL(NULL);
+		}
+
+
+	}
+
+
+// -----------------------------------------------------------------------------
+// CAppInfo::CAppInfo
+// C++ constructor
+// -----------------------------------------------------------------------------
+CAppInfo::CAppInfo(TApaAppInfo& aAppInfo):iAppInfo(aAppInfo)
+	{
+
+	}
+
+// -----------------------------------------------------------------------------
+// CAppInfo::~CAppInfo
+// destructor
+// -----------------------------------------------------------------------------
+CAppInfo::~CAppInfo()
+	{
+
+
+	iKeyValArray.ResetAndDestroy();
+
+    if(iKeyArray)
+		{
+
+		iKeyArray->Reset();
+		delete iKeyArray;
+
+		}
+	}
+
+// -----------------------------------------------------------------------------
+// CAppInfo::FindL
+// This function finds the value as per key given in argument
+// -----------------------------------------------------------------------------
+ TBool  CAppInfo::FindL(const TDesC8& aKey, TPtrC& aVal)
+	{
+	TBool flgret = ETrue;
+	TInt index = -1;
+
+    //For each key fetching the Value from underlying S60 classes
+	if(aKey.CompareF(KName) == KErrNone)
+		{
+
+		iKeyArray->Find(KName,index);
+
+		if(index >= 0)
+			{
+			if( NULL == iKeyValArray[index])
+			{
+			HBufC* keyval = HBufC::NewL(iAppInfo.iFullName.Length());
+
+			TPtr val(keyval->Des());
+
+			val.Append(iAppInfo.iFullName);
+
+
+
+			iKeyValArray.Insert(keyval,index);
+			}
+
+		aVal.Set(*iKeyValArray[index]);
+
+			}
+
+		}
+	else if(aKey.CompareF(KUid) == KErrNone)
+		{
+
+		iKeyArray->Find(KUid,index);
+
+		if(index >= 0)
+			{
+		if(NULL == iKeyValArray[index])
+			{
+
+			HBufC* keyval = HBufC::NewL(KUidLength);
+
+			TPtr val(keyval->Des());
+				val.Append(KHEXAdd);
+			val.AppendNum(iAppInfo.iUid.iUid,EHex);
+
+
+			iKeyValArray.Insert(keyval,index);
+			}
+
+		aVal.Set(*iKeyValArray[index]);
+
+			}
+
+		}
+	else if(aKey.CompareF(KShortCaption) == KErrNone)
+		{
+
+		iKeyArray->Find(KShortCaption,index);
+
+		if(index >= 0)
+			{
+		if(NULL == iKeyValArray[index])
+			{
+
+			HBufC* keyval = HBufC::NewL(iAppInfo.iShortCaption.Length());
+
+			TPtr val(keyval->Des());
+
+			val.Append(iAppInfo.iShortCaption);
+
+
+			iKeyValArray.Insert(keyval,index);
+			}
+
+		aVal.Set(*iKeyValArray[index]);
+
+			}
+
+		}
+	else if(aKey.CompareF(KCaption) == KErrNone)
+		{
+
+		iKeyArray->Find(KCaption,index);
+
+		if(index >= 0)
+			{
+		if(NULL == iKeyValArray[index])
+			{
+
+			HBufC* keyval = HBufC::NewL(iAppInfo.iCaption.Length());
+
+			TPtr val(keyval->Des());
+
+			val.Append(iAppInfo.iCaption);
+
+
+			iKeyValArray.Insert(keyval,index); // it can b made as leaving function so what to do
+			}
+
+		aVal.Set(*iKeyValArray[index]);
+
+			}
+		}
+	else
+		{
+		flgret = EFalse;
+		}
+
+	return flgret;
+	}
+
+
+// -----------------------------------------------------------------------------
+// CAppInfo::AtL
+// This function gives the key value at a given index
+// -----------------------------------------------------------------------------
+ TBool CAppInfo::AtL(TInt aIndex, TDes8& aKeyVal)
+	{
+	TBool flgret= EFalse;
+
+	 if((-1 < aIndex)&& (aIndex< iKeyArray->Count()))
+	    {
+	    aKeyVal.Copy((*iKeyArray)[aIndex]);
+	    flgret = ETrue;
+	    }
+	 else
+	    {
+	    flgret = EFalse;
+	    }
+
+	return flgret;
+	 
+	}
+
+// -----------------------------------------------------------------------------
+// CAppInfo::Count
+// This function gives the number of keys
+// -----------------------------------------------------------------------------
+ TInt CAppInfo::Count() const
+	{
+
+	return iKeyArray->Length();
+	}