diff -r 000000000000 -r 14df0fbfcc4e sapi_applicationmanager/appmanagerservice/src/appinfo.cpp --- /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(); + }