diff -r 10c6e6d6e4d9 -r bec11adf88f9 extras/about/inc/AboutResourceLoader.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/extras/about/inc/AboutResourceLoader.h Tue Sep 14 21:21:28 2010 +0300 @@ -0,0 +1,146 @@ +/* +* Copyright (c) 2010 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: Resource loader for About in order to asynchronous load resource. +* +*/ + +#ifndef ABOUTRESOURCELOADER_H +#define ABOUTRESOURCELOADER_H + +#include // For CActive +#include // For TResourceReader +#include "about.hrh" // For TAboutItemType; + +// Class declaration +class CEikonEnv; +class MResourceLoaderObserver; +class RConeResourceLoader; +class CAboutResource; + +/* + * The resource loader for about application. + * Resource loader load the resource items asynchronously. + */ +class CAboutResourceLoader : public CActive + { +public: + // Cancel and destroy + ~CAboutResourceLoader(); + + // Two-phased constructor. + static CAboutResourceLoader* NewL( CEikonEnv* aEikonEnv, + MResourceLoaderObserver* aObserver ); + + // Two-phased constructor. + static CAboutResourceLoader* NewLC( CEikonEnv* aEikonEnv, + MResourceLoaderObserver* aObserver ); + +private: + // C++ constructor + CAboutResourceLoader( CEikonEnv* aEikonEnv, + MResourceLoaderObserver* aObserver ); + + // Second-phase constructor + void ConstructL(); + +private: //From CActive + void RunL(); + void DoCancel(); + TInt RunError( TInt aError ); + +private: + /* + * Activate itself. + */ + void Activate(); + +public: + + /* + * Start the loader. + * Note: The resource id must be set before this method called, + * otherwise, leave with KErrGeneral. + */ + void StartL(); + + /** + * Set the id of the resource to be loaded. + * @Param aResourceId the id of the resource to be loaded. + * @aLoaded Indicate the resource file has been loaded or not. + * If the resource file is not load yet, the resource path must + * pass to loader. + * @aResourcePath the path of the resource file which the resouce stored in. + */ + void SetResourceId( const TInt aResourceId, + const TBool aLoaded, const TDesC& aResourcePath ); + + /** + * Get the currentlly resource Id from the loader + * @Return The current resource Id + */ + TInt CurrentResourceId(); + + /* + * Get the loaded items array. + * @Return The loaded items array. + */ + RPointerArray* LoadedResourceItems() const; + + /* + * Delete the loaded items. + */ + void ReleaseLoadedItems(); + + /* + * Return the count of the item in the resource. + */ + TInt ItemCount() const; + +private: + // Ref: Environment. + CEikonEnv* iEnv; + + // The id of the resource which the stings stored in. + TInt iResourceId; + + // The flag indicates the resource file has been loaded or not. + TBool iLoaded; + + // The path of resource file + TFileName iResourcePath; + + // Ref: Observer + MResourceLoaderObserver* iObserver; + + // Iterator. + TInt iItemIterator; + + // Owned: the buffer for the resource. + HBufC8* iResourceBuffer; + + // Reader. + TResourceReader iReader; + + // The count of the items in the resource. + TInt iItemCount; + + // Owned: Resource file loader. + RConeResourceLoader* iLoader; + + // Owned: the array store the loaded items. + RPointerArray* iLoadedItem; + + }; + +#endif // ABOUTRESOURCELOADER_H