📄 settingexampleui.cpp
字号:
/*
* ============================================================================
* Name : CSettingExampleAppUi from SettingExampleUi.cpp
* Part of : SettingExample
* Created : 29/05/2006 by Forum Nokia
* Version : 2.0
* Copyright: Forum Nokia
* ============================================================================
*/
#include "SettingExampleUi.h"
#include "SettingExampleListView.h"
#include "SettingExampleSettingList.h"
#include "SettingExampleSettingsData.h"
#include <aknutils.h>
#include <S32FILE.H>
#include <f32file.h>
#include <EIKAPP.H>
// Constants
_LIT(KSettingsFile, "settings.dat");
// ConstructL is called by the application framework
void CSettingExampleAppUi::ConstructL()
{
BaseConstructL(EAknEnableSkin);
RFs& fsSession = iEikonEnv->FsSession();
#ifdef __SERIES60_3X__
User::LeaveIfError(fsSession.CreatePrivatePath( EDriveC ) );
User::LeaveIfError(fsSession.PrivatePath(iSettingsFile));
iSettingsFile += KSettingsFile;
#else
TFileName appFullName = Application()->AppFullName();
TParsePtr appPath(appFullName);
#ifdef __WINS__
iSettingsFile = _L("c:");
iSettingsFile.Append(appPath.Path());
fsSession.MkDir(iSettingsFile);
#else
iSettingsFile = appPath.DriveAndPath();
#endif // __WINS__
iSettingsFile.Append(KSettingsFile);
#endif // __SERIES60_3x__
// construct the data object the settings list will use
iData = CSettingsData::NewL();
InternalizeSettingsDataL();
// construct the view as well.
CAknView* view;
view = CSettingListView::NewLC(*iData);
AddViewL(view);
CleanupStack::Pop(view);
ActivateLocalViewL(view->Id());
}
CSettingExampleAppUi::CSettingExampleAppUi()
{
}
CSettingExampleAppUi::~CSettingExampleAppUi()
{
// make sure we clean up the data object
delete iData;
}
// handle menu commands
void CSettingExampleAppUi::HandleCommandL(TInt aCommand)
{
switch(aCommand)
{
case EEikCmdExit:
case EAknSoftkeyExit: // only softkey handled at this level
ExternalizeSettingsDataL();
Exit();
break;
default:
break;
}
}
void CSettingExampleAppUi::InternalizeSettingsDataL()
{
RFs& fs = iEikonEnv->FsSession();
RFileReadStream readStream;
TInt error = readStream.Open(fs, iSettingsFile, EFileRead);
TInt internalizationError = KErrNone;
// if file existed, try to read settings.
if (error == KErrNone)
{
TRAP(internalizationError, iData->LoadL(readStream);)
}
readStream.Release();
// reading failed, settings file might be corrupted.
if (internalizationError != KErrNone)
{
User::LeaveIfError(fs.Delete(iSettingsFile));
}
}
void CSettingExampleAppUi::ExternalizeSettingsDataL() const
{
RFs& fs = iEikonEnv->FsSession();
RFileWriteStream writeStream;
TInt error = writeStream.Open(fs, iSettingsFile, EFileWrite);
// setting file did not exist, create one.
if (error != KErrNone)
{
User::LeaveIfError(writeStream.Create(fs, iSettingsFile, EFileWrite));
}
writeStream.PushL();
iData->SaveL(writeStream);
writeStream.CommitL();
writeStream.Pop();
writeStream.Release();
}
//EOF
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -