diff -r 3fec62e6e7fc -r 90fe62538f66 defaultapplicationsettings/services_db/src/services_db.cpp --- a/defaultapplicationsettings/services_db/src/services_db.cpp Thu Aug 19 09:55:50 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,230 +0,0 @@ -/* -* Copyright (c) 2005-2006 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: Implements the Services DB API -* -*/ - - -#include -#include -#include - -#include - -// ======== MEMBER FUNCTIONS ======== - -// --------------------------------------------------------------------------- -// CServicesDB::NewLC() -// -// -// --------------------------------------------------------------------------- -// -EXPORT_C CServicesDB* CServicesDB::NewLC( TResourceReader* aResReader ) - { - CServicesDB* self = new (ELeave) CServicesDB(); - CleanupStack::PushL(self); - self->ConstructL(aResReader); - return self; - } - -// --------------------------------------------------------------------------- -// CServicesDB::NewL() -// -// -// --------------------------------------------------------------------------- -// -EXPORT_C CServicesDB* CServicesDB::NewL( TResourceReader* aResReader ) - { - CServicesDB* self = CServicesDB::NewLC(aResReader); - CleanupStack::Pop(self); - return self; - } - -// --------------------------------------------------------------------------- -// CServicesDB::CServicesDB() -// -// -// --------------------------------------------------------------------------- -// -CServicesDB::CServicesDB() - { - //no implementation necessary - } - -// --------------------------------------------------------------------------- -// CServicesDB::~CServicesDB() -// -// -// --------------------------------------------------------------------------- -// -EXPORT_C CServicesDB::~CServicesDB() - { - iServiceUids.Close(); - iServiceNames.ResetAndDestroy(); - iServiceLoc.ResetAndDestroy(); - } - -// --------------------------------------------------------------------------- -// The class is constructed by reading the data from the specified resource id into memory -// --------------------------------------------------------------------------- -// -void CServicesDB::ConstructL( TResourceReader* aResReader ) - { - TInt i; - TInt count = aResReader->ReadInt16(); - for ( i = 0; i < count; i++ ) - { - //read the service uid - TInt uid=aResReader->ReadInt32(); - if(uid == 0)User::Leave(KErrArgument); - //read the service name - HBufC* service=aResReader->ReadHBufCL(); - if(!service)User::Leave(KErrArgument); - //read the localized string - HBufC* serviceLoc=aResReader->ReadHBufCL(); - if(!serviceLoc)User::Leave(KErrArgument); - - //append things - iServiceUids.Append(uid); - iServiceNames.Append(service);//takes ownership - iServiceLoc.Append(serviceLoc);//takes ownership - } - //done - } - -// --------------------------------------------------------------------------- -// Returns the number of available services -// (the number of services read from the resource during construction) -// --------------------------------------------------------------------------- -// -EXPORT_C TInt CServicesDB::Count() const - { - return iServiceUids.Count(); - } - -// --------------------------------------------------------------------------- -// Function to return the Uid of a service (by index). -// --------------------------------------------------------------------------- -// -EXPORT_C TUid CServicesDB::ServiceUidL(TInt aIndex) const - { - if(aIndex<0 || aIndex>=iServiceUids.Count()) - User::Leave(KErrArgument); - return TUid::Uid(iServiceUids[aIndex]); - } - - -// --------------------------------------------------------------------------- -// Function to return the localized name associated with a service. If the returned -// strings accepts a parameter, this can be specified as aParam -// --------------------------------------------------------------------------- -// -EXPORT_C HBufC* CServicesDB::ServiceStringLC(TInt aIndex, const TDes& aParam) const - { - TInt size=aParam.Size(); - HBufC *string=NULL; - - //check parameters - if(aIndex<0 || aIndex>=iServiceUids.Count()) - User::Leave(KErrArgument); - - //get the size of the new string - size+=iServiceLoc[aIndex]->Size(); - //allocate the string - string = HBufC::NewLC(size); - //create string content - TPtr ptr=string->Des(); - if(aParam.Size()) - { - //we have something in aParam - //ptr.Format(*iServiceLoc[aIndex],&aParam); - StringLoader::Format(ptr,*iServiceLoc[aIndex],-1,aParam); - } - else - { - //nothing in aParam, just copy the localized string to string - ptr.Copy(*iServiceLoc[aIndex]); - } - //done, return - return string; //string is on the stack, too - } - -// --------------------------------------------------------------------------- -// Function to return the localized name associated with a service. If the returned -// strings accepts a parameter, this can be specified as aParam -// --------------------------------------------------------------------------- -// -EXPORT_C HBufC* CServicesDB::ServiceStringLC(TUid aServiceUid, const TDes& aParam) const - { - HBufC* string=NULL; - TInt i; - - //look for the service UIDs - for(i=0; i=iServiceUids.Count()) - User::Leave(KErrArgument); - - //get the size of the new string - size=iServiceNames[aIndex]->Size(); - //allocate the string - string = HBufC::NewLC(size); - //create string content - TPtr ptr=string->Des(); - ptr.Copy(*iServiceNames[aIndex]); - return string; - } - -// --------------------------------------------------------------------------- -// Function to return the generic name of a service. -// --------------------------------------------------------------------------- -// -EXPORT_C HBufC* CServicesDB::ServiceNameLC(TUid aServiceUid) const - { - HBufC* string=NULL; - TInt i; - - //loc for the service UIDs - for(i=0; i