⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 setting.cpp

📁 手机天气预报系统
💻 CPP
字号:
/*
 ============================================================================
 Name		: Setting.cpp
 Author	  : Richie Chyi
 Copyright   : Copyright?2008
 Description : Weather Setting class implementation
 ============================================================================
 */

#include <e32def.h>
#include <S32STRM.H> // For RReadStream RWriteStream
#include <f32file.h> // For RFs
#include <S32FILE.H> // For RFileReadStream RFileWriteStream
#include <BAUTILS.H> // For BaflUtils

#include "Setting.h"

CSetting* CSetting::NewLC()
	{
	CSetting* self = new (ELeave) CSetting;
	CleanupStack::PushL(self);
	self->ConstructL();
	
	return self;
	}

CSetting* CSetting::NewL()
	{
	CSetting* self = NewLC();
	CleanupStack::Pop(self);
	
	return self;
	}

CSetting::~CSetting()
	{
	
	}

CSetting::CSetting()
	{
	
	}

void CSetting::ConstructL()
	{
	
	}

/**
 * 外化
 */
void CSetting::ExternalizeL(RWriteStream& aStream)
	{
	aStream.WriteInt8L(iCityIndex);
	aStream.WriteInt8L(iHour);
	aStream.WriteInt8L(iMinute);
	}

/**
 * 内化
 */
void CSetting::InternalizeL(RReadStream& aStream)
	{
	iCityIndex = aStream.ReadInt8L();
	iHour = aStream.ReadInt8L();
	iMinute = aStream.ReadInt8L();
	}

/**
 *  从文件读取数据
 */
TInt CSetting::ReadFromFileL()
	{
	RFs session;
	TRAPD(err, session.Connect());
	if (KErrNone != err)
		return err;

	RFileReadStream readStream;
	TRAP(err, readStream.Open(session, KConfigFileName, EFileRead));
	if (KErrNone != err)
		return err;
	
	readStream.PushL();

	InternalizeL(readStream);

	readStream.Pop();
	readStream.Release();

	session.Close();
	
	return KErrNone;
	}
	
/**
 * 保存至文件
 */
TInt CSetting::SaveToFileL()
	{
	RFs session;
	TRAPD(err, session.Connect());
	if (KErrNone != err)
		return err;
	
	RFileWriteStream outStream;
	TRAP(err, outStream.Replace(session, KConfigFileName, EFileWrite));
	if (KErrNone != err)
		return err;
	
	outStream.PushL();

	ExternalizeL(outStream);

	outStream.CommitL();
	outStream.Pop();
	outStream.Release();

	session.Close();
	
	return KErrNone;
	}
	
/**
 * 是否已保存过
 */
TBool CSetting::IsSaved()
	{
	RFs session;
	session.Connect();

	TBool saved =  BaflUtils::FileExists(session, KConfigFileName);

	session.Close();

	return saved;
	}

/**
 * 根据索引获取城市名称字符串
 */
void CSetting::CityNameForIndex(TInt aCityIndex, TDes& aBuf)
	{
	// 这里的对应值,须参照资源中PopupField的定义
	switch(aCityIndex)
		{
		case 0:
			aBuf.Append(_L("Shanghai,China"));
			break;
		case 1:
			aBuf.Append(_L("Beijing,China"));
			break;
		case 2:
			aBuf.Append(_L("Xian,China"));
			break;
		case 3:
			aBuf.Append(_L("Jinan,China"));
			break;
		case 4:
			aBuf.Append(_L("Qingdao,China"));
			break;
		case 5:
			aBuf.Append(_L("Shenzhen,China"));
			break;
		default:
			ASSERT(0);
			break;
		}
	}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -