williamr@2: // COEUTILS.H williamr@2: williamr@2: /* williamr@2: * Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). williamr@2: * All rights reserved. williamr@2: * This component and the accompanying materials are made available williamr@2: * under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members williamr@2: * which accompanies this distribution, and is available williamr@2: * at the URL "http://www.symbianfoundation.org/legal/licencesv10.html". williamr@2: * williamr@2: * Initial Contributors: williamr@2: * Nokia Corporation - initial contribution. williamr@2: * williamr@2: * Contributors: williamr@2: * williamr@2: * Description: williamr@2: * williamr@2: */ williamr@2: williamr@2: williamr@2: williamr@2: #ifndef __COEUTILS_H__ williamr@2: #define __COEUTILS_H__ williamr@2: williamr@2: #include williamr@2: class CCoeEnv; williamr@2: williamr@2: /** Provides file and path utility functions. williamr@2: williamr@2: @publishedAll williamr@2: @released */ williamr@2: class ConeUtils williamr@2: { williamr@2: public: williamr@2: IMPORT_C static TBool FileExists(const TDesC& aFileName); williamr@2: IMPORT_C static void EnsurePathExistsL(const TPtrC& aFileName); williamr@2: }; williamr@2: williamr@2: williamr@2: /** williamr@2: Class encapsulates methods for opening and closing localised resource files williamr@2: in the CONE environment. The actual reading of resources from an opened williamr@2: resource file is done using various CCoeEnv provided resource-reading williamr@2: methods. The Cone Resource Loader API consists of the RCoeResourceLoader class. williamr@2: williamr@2: Only one resource at a time may be opened by one RCoeResourceLoader instance. williamr@2: You can use several RCoeResourceLoader instances for accessing several williamr@2: resources simultaneously or use one instance and close the previous resource williamr@2: before opening a new one. williamr@2: williamr@2: The implementation uses BaflUtils::NearestLanguageFile to search for williamr@2: a localised resource in proper search order. williamr@2: williamr@2: Usage example: williamr@2: williamr@2: @code williamr@2: #include williamr@2: williamr@2: // Get CCoeEnv instance williamr@2: CEikonEnv* eikEnv = CEikonEnv::Static(); williamr@2: // Initialize loader williamr@2: RCoeResourceLoader rLoader(eikEnv); williamr@2: williamr@2: // Push resource loader to cleanup stack, so that it will always be properly williamr@2: // closed when popped. williamr@2: CleanupClosePushL(rLoader); williamr@2: williamr@2: // Open resource file williamr@2: _LIT( KSampleResourceFileName, "Z:\\System\\Apps\\sample\\sample.rsc" ); williamr@2: TFileName fileName(KSampleResourceFileName); williamr@2: rLoader.OpenL(fileName); williamr@2: williamr@2: // Read a resource williamr@2: iSomeArray = eikEnv->ReadDesC16ArrayResourceL(R_SOME_RESOURCE); williamr@2: williamr@2: // Pop and destroy rLoader from stack. williamr@2: // This also calls the rLoader close function after CleanupClosePushL is used. williamr@2: CleanupStack::PopAndDestroy(); // rLoader williamr@2: @endcode williamr@2: williamr@2: @publishedAll williamr@2: @released */ williamr@2: NONSHARABLE_CLASS(RCoeResourceLoader) williamr@2: { williamr@2: public: williamr@2: IMPORT_C RCoeResourceLoader(CCoeEnv& aEnv); williamr@2: IMPORT_C TInt Open(TFileName& aFileName); williamr@2: IMPORT_C void OpenL(TFileName& aFileName); williamr@2: IMPORT_C void Close(); williamr@2: private: williamr@2: // Prohibit copy constructor and assigment operator because not deriving from CBase. williamr@2: RCoeResourceLoader(); williamr@2: RCoeResourceLoader(const RCoeResourceLoader&); williamr@2: RCoeResourceLoader& operator= (const RCoeResourceLoader&); williamr@2: private: williamr@2: // Needed for closing williamr@2: CCoeEnv& iEnv; williamr@2: TInt iResourceFileOffset; williamr@2: }; williamr@2: williamr@2: williamr@2: #endif // __COEUTILS_H__