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

📄 tempview.cpp

📁 symbian有关文件操作的一个很好的例子
💻 CPP
字号:
/* Copyright (c) 2007, Nokia. All rights reserved */
#include <akncontext.h> 
#include <aknnotewrappers.h> 
#include <akntitle.h> 
#include <HelloLDCI.rsg>
#include <Helloldci.mbg>
#include <s32file.h>
#include "HelloLDCIAppUi.h"
#include "TempView.h"
#include "TempContainer.h"
#include "HelloLDCI.hrh"
#include "AddressCenter.h"
#include <eikmenub.h> 
#include <coecntrl.h>
//数据
_LIT(KNAME, "My Name is Jerry");
_LIT(KTEL, "13810010010");


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

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

void CTempView::ConstructL()
{
	BaseConstructL(R_HL_TEMP_VIEW);
	m_pAddressCenter = CAddressCenter::NewL(KNAME,KTEL);
}

CTempView::CTempView()
{
	m_pAppContainer = NULL;
	aflag = ETrue;
}


CTempView::~CTempView()
{
//	m_pAddressCenter->Distroy();
	delete m_pAddressCenter;
}

TUid CTempView::Id() const
{
	return TUid::Uid(ETempViewID);
}

void CTempView::HandleCommandL(TInt aCommand)
{
	switch(aCommand)
	{
//包含子菜单:EHLTempCCTV1、EHLTempCCTV2,操作大多在子菜单中进行处理
//  	case EHLTempCCTV:	//goto colorView			
//  		break;
	case EHLTempHNTV:
		aflag = !aflag;
		break;
	case EHLTempFHTV: //go to grid
		AppUi()->ActivateLocalViewL(TUid::Uid(EGridViewID)); 
	    break;
	case EHLTempCCTV1:
	//	WriteFileByText();
		WriteFileByStream();
		break;
	case EHLTempCCTV2:
	//	ReadFileByText();
		ReadFileByStream();
		break;
	default:
		AppUi()->HandleCommandL(aCommand);
	    break;
	}		
}

void CTempView::HandleClientRectChange()
{

}

void CTempView::DoActivateL(const TVwsViewId&, TUid, const TDesC8&)
{
	m_pAppContainer = new( ELeave ) CTempContainer();
	m_pAppContainer->SetMopParent(this);
	m_pAppContainer->ConstructL( TRect(TPoint(0,44),TPoint(176,188)));

	//传递m_pAddressCenter的指针到CTempContainer
	m_pAppContainer->SetAddress(m_pAddressCenter);
	AppUi()->AddToStackL( *this, m_pAppContainer );
	
//加载位图(icon,mask)
	TBuf<KMaxPath> pathMbm;
#ifdef __WINS__
	pathMbm.Copy(_L("\\system\\apps\\HELLOLDCI\\helloldci.mbm"));
#else
	//手机上执行如下代码:2009-02-10 15:00
	CHelloLDCIAppUi* pApp = (CHelloLDCIAppUi*)CEikonEnv::Static()->AppUi();
	pApp->GetAppPath(pathMbm);
	pathMbm.Append(_L("helloldci.mbm"));
#endif

	CFbsBitmap* bitmap = iEikonEnv->CreateBitmapL(pathMbm, EMbmHelloldciSnoopy_2_icon);
	CFbsBitmap* bitmapmask = iEikonEnv->CreateBitmapL(pathMbm, EMbmHelloldciSnoopy_2_mask);
	
//	CFbsBitmap* bitmap = iEikonEnv->CreateBitmapL(_L("\\system\\apps\\HELLOLDCI\\helloldci.mbm"), EMbmHelloldciSnoopy_2_icon);
//	CFbsBitmap* bitmapmask = iEikonEnv->CreateBitmapL(_L("\\system\\apps\\HELLOLDCI\\helloldci.mbm"), EMbmHelloldciSnoopy_2_mask);
	
	//修改视图图标:2009-02-10
	//获取状态面板的指针
	CEikStatusPane* sp=StatusPane();	//iEikonEnv->AppUiFactory()->StatusPane();
	//Set view icon
	CAknContextPane* contextPane = (CAknContextPane*) sp->ControlL(TUid::Uid(EEikStatusPaneUidContext));	
	//设置图片
	contextPane->SetPicture(bitmap,bitmapmask);

	//设置view标题
	TBuf<32> title;
	//从资源中加载文字
	CEikonEnv::Static()->ReadResource(title, R_HD_TEMPVIEW_TITLE);
	CAknTitlePane* titlePane = (CAknTitlePane*) sp->ControlL(TUid::Uid(EEikStatusPaneUidTitle));
	titlePane->SetTextL(title);
}

void CTempView::DoDeactivate()
{
	if(m_pAppContainer)
	{
		AppUi()->RemoveFromStack( m_pAppContainer );
		delete m_pAppContainer;
		m_pAppContainer = NULL;
	}
}

// void CTempView::DynInitMenuBarL(TInt aResourceId, CEikMenuBar* aMenuBar)
// {
// // 	if(aResourceId != R_TEMP_MENUBAR2)
// // 	{
// // 		aMenuBar->SetMenuTitleResourceId(R_TEMP_MENUBAR2);
// // 	}
// // 	else if(aResourceId != R_TEMP_MENUBAR)
// // 	{
// // 		aMenuBar->SetMenuTitleResourceId(R_TEMP_MENUBAR);
// // 	}
// 
// }
//隐藏菜单栏
void CTempView::DynInitMenuPaneL(TInt aResourceId, CEikMenuPane* aMenuPane)
{
	if(aResourceId != R_HL_TEMP_MENU) return;

	if (aflag)
	{
		aMenuPane->SetItemDimmed(EHLTempCCTV,	ETrue);
		aMenuPane->SetItemDimmed(EHLTempHNTV,	EFalse);
		aMenuPane->SetItemDimmed(EHLTempFHTV,	ETrue);
	
	}else
	{
		aMenuPane->SetItemDimmed(EHLTempCCTV,	EFalse);
		aMenuPane->SetItemDimmed(EHLTempHNTV,	EFalse);
		aMenuPane->SetItemDimmed(EHLTempFHTV,	EFalse);
	}
	
}

void	CTempView::WriteFileByText()
{
	RFs session = iCoeEnv->FsSession();
	RFile file;
//	User::LeaveIfError(file.Create(session,_L("c:\\T20.txt"),EFileWrite));
	TInt err = file.Open(session,_L("c:\\T20.txt"),EFileWrite);
	if (err == KErrNotFound)
	{
		file.Create(session,_L("c:\\T20.txt"),EFileWrite);
	}
	if (err != KErrNone)
	{
		return;
	}	
	HBufC8* buf8 = HBufC8::NewL(100);
	buf8->Des().Copy(_L(" KErrNone"));
	file.Write(buf8->Des());
	file.Close();

	if (buf8)
	{
		delete buf8;
		buf8 = NULL;
	}
}
void	CTempView::ReadFileByText()
{
	RFs session = iCoeEnv->FsSession();
	RFile file;
	TInt err = file.Open(session,_L("c:\\T20.txt"),EFileRead);
	if (err == KErrNotFound)
	{
		file.Create(session,_L("c:\\T20.txt"),EFileWrite);
	}
	if (err != KErrNone)
	{
		return;
	}
	
	TInt length;
	file.Size(length);
	HBufC8* pbuf8 = HBufC8::NewL(length);
	file.Read(pbuf8->Des());

	file.Close();

	HBufC* pbuf16 = HBufC::NewL(length);
	pbuf16->Des().Copy(pbuf8->Des());

	if (pbuf8)
	{
		delete pbuf8;
		pbuf8 = NULL;
	}
	if (pbuf16)
	{
		delete pbuf16;
		pbuf16 = NULL;
	}

}

void	CTempView::WriteFileByStream()
{
	RFs session = iCoeEnv->FsSession();
	session.Delete(_L("C:\\T20.snow"));
	RFileWriteStream writeStream;
	User::LeaveIfError(writeStream.Create(session,_L("C:\\T20.snow"),EFileWrite));
	writeStream.PushL();
	//prepare the data
	HBufC* pContent = HBufC::NewL(128);
	pContent->Des().Copy(_L("session = iCoeEnv->FsSession()"));
	
	if (pContent)
	{
		writeStream.WriteInt32L(pContent->Length());
		writeStream << pContent->Des();
	}
	else
	{
		writeStream.WriteInt32L(0);
	}


	pContent->Des().Copy(_L("12345678901234567"));	
	if (pContent)
	{
		writeStream.WriteInt32L(pContent->Length());
		writeStream << pContent->Des();
	}
	else
	{
		writeStream.WriteInt32L(0);
	}

	if (pContent)
	{
		delete pContent;
		pContent = NULL;
	}
	writeStream.CommitL();
	writeStream.Pop();
	writeStream.Release();
	//writeStream.Close();
	

}
void	CTempView::ReadFileByStream()
{
	RFs session = iCoeEnv->FsSession();
//	session.Delete(_L("C:\\T20.snow"));
	RFileReadStream readStream;
	User::LeaveIfError(readStream.Open(session,_L("C:\\T20.snow"),EFileRead));
	readStream.PushL();
	//prepare the data

	TInt length = readStream.ReadInt32L();

	if (length > 0)
	{
		HBufC* pContent = HBufC::NewL(length);
		readStream >> pContent->Des();

		CAknInformationNote* pNote = new(ELeave)CAknInformationNote;
		pNote->ExecuteLD(pContent->Des());

		if (pContent)
		{
			delete pContent;
			pContent = NULL;
		}
	}

	length = readStream.ReadInt32L();

	if (length > 0)
	{
		HBufC* pContent1 = HBufC::NewL(length);
		readStream >> pContent1->Des();
		
		CAknInformationNote* pNote = new(ELeave)CAknInformationNote;
		pNote->ExecuteLD(pContent1->Des());
		
		if (pContent1)
		{
			delete pContent1;
			pContent1 = NULL;
		}
	}

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

⌨️ 快捷键说明

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