sl@0: // Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). sl@0: // All rights reserved. sl@0: // This component and the accompanying materials are made available sl@0: // under the terms of "Eclipse Public License v1.0" sl@0: // which accompanies this distribution, and is available sl@0: // at the URL "http://www.eclipse.org/legal/epl-v10.html". sl@0: // sl@0: // Initial Contributors: sl@0: // Nokia Corporation - initial contribution. sl@0: // sl@0: // Contributors: sl@0: // sl@0: // Description: sl@0: // ULogger sys config sl@0: // sl@0: // sl@0: sl@0: /** sl@0: @file sl@0: @internalTechnology sl@0: @prototype sl@0: */ sl@0: sl@0: sl@0: #ifndef SYSCONFIGIMPL_H sl@0: #define SYSCONFIGIMPL_H sl@0: sl@0: #include sl@0: #include sl@0: #include "uloggersysconfig.h" sl@0: #include sl@0: #include "uloggershared.h" sl@0: sl@0: sl@0: sl@0: namespace Ulogger sl@0: { sl@0: sl@0: NONSHARABLE_CLASS(CConfigSettingsImpl) : public CBase sl@0: { sl@0: public: sl@0: /**Standard Symbian OS construction method.*/ sl@0: static CConfigSettingsImpl* NewL(); sl@0: sl@0: TBool Next(TPtrC8& aSetting,TPtrC8& aSettingValue); sl@0: sl@0: void Reset(); sl@0: /**Destructor.*/ sl@0: ~CConfigSettingsImpl(); sl@0: private: sl@0: friend class CConfigImpl; sl@0: CConfigSettingsImpl(); sl@0: BSUL::CIniSecIter8* iIniSecIter; sl@0: }; sl@0: sl@0: sl@0: NONSHARABLE_CLASS(CConfigImpl) : public CBase sl@0: { sl@0: public: sl@0: static CConfigImpl* NewL(RHeap* aHeap,TFileName& aFilename); sl@0: ~CConfigImpl(); sl@0: sl@0: // Allow Objects to register for configuration change notifications sl@0: sl@0: //Get operation sl@0: TInt GetKeyValue(const TDesC8& aSectionName,const TDesC8& aKey,TPtrC8& aValue); sl@0: TInt GetSection(const TDesC8& aSectionName,CConfigSettingsIter& aSection); sl@0: TInt GetKeyCount(const TDesC8& aSectionName,TPtrC8& aLastKey); sl@0: sl@0: //modify operation sl@0: TInt SetKeyValue(const TDesC8& aSectionName,const TDesC8& aKey, const TDesC8& aValue); sl@0: TInt RemoveKey(const TDesC8& aSectionName,const TDesC8& aKeyName); sl@0: TInt RemoveSection(const TDesC8& aSectionName); sl@0: sl@0: //utils sl@0: TInt GetPointerToKeyName(const TDesC8& aSectionName,const TDesC8& aKeyName,TPtrC8& aKeyPointer); sl@0: TInt CheckValueExist(const TDesC8& aSectionName,const TDesC8& aValue,TInt& aKeyCount); sl@0: sl@0: TInt PersistIniFile(); sl@0: TInt GenerateInternalKey(const TDesC8& aSection,TBuf8<15>& aKeyName); sl@0: void GetSystemDrive(TDriveName& aSystemDrive); sl@0: sl@0: private: sl@0: CConfigImpl(RHeap* aHeap,TFileName& aFileName) : sl@0: iHeap(aHeap),iFileName(aFileName) {} sl@0: void ConstructL(); sl@0: void LoadConfigFileL(); sl@0: void GetConfigFileName(TFileName& aFileName); sl@0: sl@0: private: sl@0: /** Mutex for controlling write access */ sl@0: RMutex iWriteMutex; sl@0: /** Pointer to private heap */ sl@0: RHeap* iHeap; sl@0: /** Handle to file server */ sl@0: RFs iFs; sl@0: /** Ini-file parser */ sl@0: BSUL::CIniDocument8* iIniFileDocument; sl@0: sl@0: TFileName iFileName; sl@0: }; sl@0: sl@0: sl@0: } sl@0: #endif // SYSCONFIGIMPL_H sl@0: