os/persistentdata/traceservices/tracefw/ulogger/src/sysconfig/configfilemanager.cpp
First public contribution.
1 // Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
2 // All rights reserved.
3 // This component and the accompanying materials are made available
4 // under the terms of "Eclipse Public License v1.0"
5 // which accompanies this distribution, and is available
6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
8 // Initial Contributors:
9 // Nokia Corporation - initial contribution.
17 #include "uloggerconfigmanager.h"
18 #include "uloggershared.h"
25 EXPORT_C CConfigFileManager* CConfigFileManager::NewL()
27 CConfigFileManager* self = new (ELeave) CConfigFileManager;
28 CleanupStack::PushL(self);
30 TInt error = self->ConstructL();
40 TInt CConfigFileManager::ConstructL()
42 return InitializeFilesL();
45 EXPORT_C TInt CConfigFileManager::RefreshConfigFiles()
47 return InitializeFilesL();
50 TInt CConfigFileManager::InitializeFilesL()
52 //Load the respective configuration file
53 TInt error = CheckIfFileExistsInPathL(KConfigFilename, KPublicConfigFilePath, iFilename);
54 if (error == KErrNotFound || error == KErrPathNotFound)
56 error = CheckIfFileExistsInPathL(KConfigFilename, KPrivateConfigFilePath, iFilename);
57 if((error != KErrNotFound) && (iFilename == KDefaultConfigFilePath))
59 error = CopyFileToSystemDriveL(iFilename);
66 iConfig = CConfig::NewL(NULL, iFilename);
73 TInt CConfigFileManager::CheckIfFileExistsInPathL(const TDesC& aFilename, const TDesC& aPath, TFileName& aFullFilePath)
77 User::LeaveIfError(fs.Connect());
78 TFindFile findfile(fs);
79 TInt error = findfile.FindByDir(aFilename,aPath);
80 if(error == KErrNone) //file is found, now set the aFullFilePath to the full path including drive
82 fileParse.Set(findfile.File(),NULL,NULL);
84 aFullFilePath.Append(fileParse.FullName());
90 /* Copy file to the System drives private path
91 * if the drive exists otherwise
92 * create the drive and copy the file*/
93 TInt CConfigFileManager::CopyFileToSystemDriveL(TFileName &aFilePath)
96 TDriveName aSystemDrive;
97 TDriveUnit driveunit(RFs::GetSystemDrive());
99 aSystemDrive=driveunit.Name();
101 fileName.Append(aSystemDrive);
102 fileName.Append(KPrivateConfigFilePath);
105 User::LeaveIfError(fs.Connect());
107 TInt error= fs.MkDir(fileName);
108 if(error==KErrNone || error== KErrAlreadyExists)
110 CFileMan* fMan = CFileMan::NewL(fs);
111 CleanupStack::PushL(fMan);
112 fileName.Append(KConfigFilename);
113 User::LeaveIfError(fMan->Copy(KDefaultConfigFilePath, fileName, CFileMan::EOverWrite) );
114 CleanupStack::PopAndDestroy(fMan);
115 User::LeaveIfError(fs.SetAtt(fileName,0, KEntryAttReadOnly));
119 aFilePath.Append(fileName);
124 EXPORT_C TInt CConfigFileManager::GetSectionValues(const TDesC8& aSectionName,CConfigSettingsIter& aIter)
126 TInt error = RefreshConfigFiles();
129 error = iConfig->GetSectionValues(aSectionName, aIter);
134 EXPORT_C TInt CConfigFileManager::GetOutputPlugins(CConfigSettingsIter& aIter)
136 TInt error = RefreshConfigFiles();
139 error = iConfig->GetOutputPlugins(aIter);
144 EXPORT_C TInt CConfigFileManager::RemovePluginSettings(const TDesC8& aOutputChanId)
146 TInt error = RefreshConfigFiles();
149 error = iConfig->RemovePluginSettings(aOutputChanId);
153 EXPORT_C TInt CConfigFileManager::GetActiveFilters(CConfigSettingsIter& aIter,TInt aFilter)
155 TInt error = RefreshConfigFiles();
158 error = iConfig->GetActiveFilters(aIter, aFilter);
163 EXPORT_C TInt CConfigFileManager::RemoveActiveFilter(const RArray<TUint32>& aFilter, const TInt &aFilterValue)
165 TInt error = RefreshConfigFiles();
168 error = iConfig->RemoveActiveFilter(aFilter, aFilterValue);
172 //Get direct setting's value API
173 EXPORT_C TInt CConfigFileManager::SetActiveFilter(const RArray<TUint32>& aFilter, const TDesC8 &aSectionName)
175 TInt error = RefreshConfigFiles();
178 error = iConfig->SetActiveFilter(aFilter, aSectionName);
182 EXPORT_C TInt CConfigFileManager::SetTraceSettings(const TDesC8& aValue, const TDesC8& aSetting)
184 TInt error = RefreshConfigFiles();
187 error = iConfig->SetTraceSettings(aValue, aSetting);
191 EXPORT_C TInt CConfigFileManager::SetPluginSetting(const TDesC8& aOutputChanId,
192 const TDesC8& aSetting,
193 const TDesC8& aValue)
195 TInt error = RefreshConfigFiles();
198 error = iConfig->SetPluginSetting(aOutputChanId, aSetting, aValue);
202 EXPORT_C TInt CConfigFileManager::SetActiveOutputPlugin(const TDesC8& aMediaName)
204 TInt error = RefreshConfigFiles();
207 error = iConfig->SetActiveOutputPlugin(aMediaName);
211 EXPORT_C TInt CConfigFileManager::SetActiveInputPlugin(const TDesC8& aMediaName)
213 TInt error = RefreshConfigFiles();
216 error = iConfig->SetActiveInputPlugin(aMediaName);
220 EXPORT_C TInt CConfigFileManager::GetActiveInputPlugins(CConfigSettingsIter& aIter)
222 TInt error = RefreshConfigFiles();
225 error = iConfig->GetActivePlugins(aIter);
229 EXPORT_C TInt CConfigFileManager::GetPluginSettings(CConfigSettingsIter& aIter)
231 TInt error = RefreshConfigFiles();
234 error = iConfig->GetTraceSettings(aIter);
238 EXPORT_C TInt CConfigFileManager::DeActivateOutputPlugin(const TDesC8& aMediaName)
240 TInt error = RefreshConfigFiles();
243 error = iConfig->DeActivateOutputPlugin(aMediaName);
247 EXPORT_C TInt CConfigFileManager::DeActivateInputPlugin(const TDesC8& aMediaName)
249 TInt error = RefreshConfigFiles();
252 error = iConfig->DeActivateInputPlugin(aMediaName);