installationservices/swi/source/apprscparser/apprscparser.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 31 Aug 2010 15:21:33 +0300
branchRCL_3
changeset 25 7333d7932ef7
permissions -rw-r--r--
Revision: 201033 Kit: 201035

/*
* Copyright (c) 2009-2010 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:
* apprscreader.h 
*
*/

#ifndef __APPRSCPARSER_H__
#define __APPRSCPARSER_H__

#include <usif/scr/appregentries.h>

class RFs;
class CResourceFile;
class RResourceReader;

/**
 * @file
 * Application resource file parser for SWI
 *
 * @internalTechnology
 * @prototype
*/

const TInt KMaxAppGroupName=0x10;
const TInt KMaximumDataTypeLength=256;
typedef TBuf<KMaxAppGroupName> TAppGroupName;

/** Defines an application's attributes as a set of bit flags. */
enum TCapabilityAttribute
    {    
    EBuiltAsDll         = 0x00000001,
    EControlPanelItem   = 0x00000002,
    ENonNative          = 0x00000004
    };

class CLocalizableRsc : public CBase
    {
public:
    static CLocalizableRsc* NewL();
    static CLocalizableRsc* NewLC();
    ~CLocalizableRsc();
    
private:
    CLocalizableRsc() {}
    
public:
    TFileName iFileName;
    CResourceFile* iRscFile;
    TLanguage iLanguage;
    };

/**
 This class reads application information from a combination of registration file,
 optional localizable resource file and optional icon file.
*/
class CAppRegInfoReader : public CBase
	{
public:
    IMPORT_C static CAppRegInfoReader* NewL(RFs& aFs, const TDesC& aRegistrationFileName);
    IMPORT_C static CAppRegInfoReader* NewL(RFs& aFs, const RFile& aRegistrationFile);
    IMPORT_C Usif::CApplicationRegistrationData* ReadL(const RArray<TLanguage>& aAppLanguages);    
    IMPORT_C ~CAppRegInfoReader();

private:
    CAppRegInfoReader(RFs& aFs, const TDesC& aRegistrationFileName);
    CAppRegInfoReader(RFs& aFs, const RFile& aRegistrationFile);
	void ConstructL();
	void ReadMandatoryInfoL(RResourceReader& aResourceReader);
	void ReadNonLocalizableInfoL(RResourceReader& aResourceReader, TUint& aLocalizableResourceId, const RArray<TLanguage>& aAppLanguages);
	void ReadNonLocalizableOptionalInfoL(RResourceReader& aResourceReader, const CResourceFile* aRegistrationFile);
	void ReadMimeTypesSupportedL(RResourceReader& aResourceReader, RPointerArray<Usif::CDataType>& aDataTypes);
	void ReadLocalizableInfoL(const CResourceFile& aResourceFile, TUint aResourceId, TLanguage aLanguage);
	void ReadOpaqueDataL(TUint aResourceId, const CResourceFile* aRegistrationFile, RPointerArray<Usif::COpaqueData>& aOpaqueDataArray);
	HBufC* CreateFullIconFileNameL(const TDesC& aIconFileName) const;
	void FindLocalizableResourceFilesL(const TLanguage& aApplicationLanguage);
	void CheckForDefaultResourceFileL();
	TBool TypeUidIsForRegistrationFile(const TUidType& aUidType);   
	void GetInstalledLanguagesL();
     
    static void Panic(TInt aPanic);
	
public:
	//From ReadMandatoryInfoL
	HBufC* iAppBinaryFullName;
	//From ReadNonLocalizableInfoL
	Usif::TApplicationCharacteristics iAppCharacteristics;
    TUint iDefaultScreenNumber;
    RPointerArray<HBufC> iOwnedFileArray;
    //From ReadNonLocalizableOptionalInfoL
    RPointerArray<Usif::CServiceInfo> iServiceArray; 
    RPointerArray<Usif::COpaqueData> iOpaqueDataArray;
    //From ReadLocalizableInfoL
    RPointerArray<Usif::CLocalizableAppInfo> iLocalizableAppInfoArray;    
            	
private:
    RFs& iFs;
    TUid iAppUid;   
    TUidType iAppBinaryUidType;
    TFileName iTempLocalizableRscFileName; // Localizsed resource file name from rsc
    TBool iLegacyDataTypesPresent;
    RPointerArray<CLocalizableRsc> iLocalizableRscArray;    
            
	const TDesC* iRegistrationFileName;
	const RFile* iRegFileHandle;
	TBool iReadOnlyOneLocalizedRscInfo;
    TBool iUseRegFileHandle;
    RArray<TLanguage> iDeviceSupportedLanguages;
	};

#endif	// __APPRSCPARSER_H__