Name : helloworldAppUi.cpp Author : Copyright : Your copyright notice Description : ChelloworldAppUi implementation============================================================================*/// INCLUDE FILES#include <avkon.hrh>#include <aknmessagequerydialog.h>#include <aknnotewrappers.h>#include <stringloader.h>#include <f32file.h>#include <s32file.h>#include <hlplch.h>#include <helloworld_0xE6282AB6.rsg>#include "helloworld_0xE6282AB6.hlp.hrh"#include "helloworld.hrh"#include "helloworld.pan"#include "helloworldApplication.h"#include "helloworldAppUi.h"#include "helloworldAppView.h"_LIT( KFileName, "C:\\private\\E6282AB6\\helloworld.txt" );_LIT( KText, "Hello World!");// ============================ MEMBER FUNCTIONS ===============================// -----------------------------------------------------------------------------// ChelloworldAppUi::ConstructL()// Symbian 2nd phase constructor can leave.// -----------------------------------------------------------------------------//void ChelloworldAppUi::ConstructL() { // Initialise app UI with standard value. BaseConstructL(CAknAppUi::EAknEnableSkin); // Create view object iAppView = ChelloworldAppView::NewL( ClientRect() ); // Create a file to write the text to RFs fsSession; User::LeaveIfError(fsSession.Connect()); CleanupClosePushL( fsSession ); TInt err = fsSession.MkDirAll(KFileName); if ( (KErrNone != err) && (KErrAlreadyExists != err) ) { CleanupStack::PopAndDestroy(1); // fsSession return; } RFile file; err = file.Replace(fsSession, KFileName, EFileWrite ); CleanupClosePushL( file ); if ( KErrNone != err ) { CleanupStack::PopAndDestroy(2); // file, fsSession return; } RFileWriteStream outputFileStream( file ); CleanupClosePushL( outputFileStream ); outputFileStream << KText; CleanupStack::PopAndDestroy(3); // outputFileStream, file, fsSession }// -----------------------------------------------------------------------------// ChelloworldAppUi::ChelloworldAppUi()// C++ default constructor can NOT contain any code, that might leave.// -----------------------------------------------------------------------------//ChelloworldAppUi::ChelloworldAppUi() { // No implementation required }// -----------------------------------------------------------------------------// ChelloworldAppUi::~ChelloworldAppUi()// Destructor.// -----------------------------------------------------------------------------//ChelloworldAppUi::~ChelloworldAppUi() { if ( iAppView ) { delete iAppView; iAppView = NULL; } }// -----------------------------------------------------------------------------// ChelloworldAppUi::HandleCommandL()// Takes care of command handling.// -----------------------------------------------------------------------------//void ChelloworldAppUi::HandleCommandL( TInt aCommand ) { switch( aCommand ) { case EEikCmdExit: case EAknSoftkeyExit: Exit(); break; case ECommand1: { // Load a string from the resource file and display it HBufC* textResource = StringLoader::LoadLC( R_COMMAND1_TEXT ); CAknInformationNote* informationNote; informationNote = new ( ELeave ) CAknInformationNote; // Show the information Note with // textResource loaded with StringLoader. informationNote->ExecuteLD( *textResource ); // Pop HBuf from CleanUpStack and Destroy it. CleanupStack::PopAndDestroy( textResource ); } break; case ECommand2: { RFs fsSession; RFile rFile; // Connects a client process to the fileserver User::LeaveIfError(fsSession.Connect()); CleanupClosePushL(fsSession); //Open file where the stream text is User::LeaveIfError(rFile.Open(fsSession,KFileName, EFileStreamText));//EFileShareReadersOnly));// EFileStreamText)); CleanupClosePushL(rFile); // copy stream from file to RFileStream object RFileReadStream inputFileStream(rFile); CleanupClosePushL(inputFileStream); // HBufC descriptor is created from the RFileStream object. HBufC* fileData = HBufC::NewLC(inputFileStream, 32); CAknInformationNote* informationNote; informationNote = new ( ELeave ) CAknInformationNote; // Show the information Note informationNote->ExecuteLD( *fileData); // Pop loaded resources from the cleanup stack CleanupStack::PopAndDestroy(4); // filedata, inputFileStream, rFile, fsSession fsSession.Close(); } break; case EHelp: { CArrayFix<TCoeHelpContext>* buf = CCoeAppUi::AppHelpContextL(); HlpLauncher::LaunchHelpApplicationL(iEikonEnv->WsSession(), buf); } break; case EAbout: { CAknMessageQueryDialog* dlg = new (ELeave)CAknMessageQueryDialog(); dlg->PrepareLC(R_ABOUT_QUERY_DIALOG); HBufC* title = iEikonEnv->AllocReadResourceLC(R_ABOUT_DIALOG_TITLE); dlg->QueryHeading()->SetTextL(*title); CleanupStack::PopAndDestroy(); //title HBufC* msg = iEikonEnv->AllocReadResourceLC(R_ABOUT_DIALOG_TEXT); dlg->SetMessageTextL(*msg); CleanupStack::PopAndDestroy(); //msg dlg->RunLD(); } break; default: Panic( EhelloworldUi ); break; } }// -----------------------------------------------------------------------------// Called by the framework when the application status pane// size is changed. Passes the new client rectangle to the// AppView// -----------------------------------------------------------------------------//void ChelloworldAppUi::HandleStatusPaneSizeChange() { iAppView->SetRect( ClientRect() ); } CArrayFix<TCoeHelpContext>* ChelloworldAppUi::HelpContextL() const { #warning "Please see comment about help and UID3..." // Note: help will not work if the application uid3 is not in the // protected range. The default uid3 range for projects created // from this template (0xE0000000 - 0xEFFFFFFF) are not in the protected range so they // can be self signed and installed on the device during testing. // Once you get your official uid3 from Symbian Ltd. and find/replace // all occurrences of uid3 in your project, the context help will // work. CArrayFixFlat<TCoeHelpContext>* array = new(ELeave)CArrayFixFlat<TCoeHelpContext>(1); CleanupStack::PushL(array); array->AppendL(TCoeHelpContext(KUidhelloworldApp, KGeneral_Information)); CleanupStack::Pop(array); return array; }// End of File