osm_assignmentappui.cpp
来自「an addition application in symbian using」· C++ 代码 · 共 250 行
CPP
250 行
/*
============================================================================
Name : OSM_assignmentAppUi.cpp
Author : Salik iftikhar
Copyright : Assignment
Description : COSM_assignmentAppUi 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 <e32math.h>
#include <OSM_assignment_0xE54F2FB3.rsg>
//#include "OSM_assignment_0xE54F2FB3.hlp.hrh"
#include "OSM_assignment.hrh"
#include "OSM_assignment.pan"
#include "OSM_assignmentApplication.h"
#include "OSM_assignmentAppUi.h"
#include "OSM_assignmentAppView.h"
_LIT( KFileName, "C:\\private\\E54F2FB3\\OSM_assignment.txt" );
_LIT( KText, "Hi ");
// ============================ MEMBER FUNCTIONS ===============================
// -----------------------------------------------------------------------------
// COSM_assignmentAppUi::ConstructL()
// Symbian 2nd phase constructor can leave.
// -----------------------------------------------------------------------------
//
void COSM_assignmentAppUi::ConstructL()
{
// Initialise app UI with standard value.
BaseConstructL(CAknAppUi::EAknEnableSkin);
// Create view object
iAppView = COSM_assignmentAppView::NewL(ClientRect());
// Create a file to write the text to
TInt err = CCoeEnv::Static()->FsSession().MkDirAll(KFileName);
if ((KErrNone != err) && (KErrAlreadyExists != err))
{
return;
}
RFile file;
err = file.Replace(CCoeEnv::Static()->FsSession(), KFileName, EFileWrite);
CleanupClosePushL(file);
if (KErrNone != err)
{
CleanupStack::PopAndDestroy(1); // file
return;
}
RFileWriteStream outputFileStream(file);
CleanupClosePushL(outputFileStream);
outputFileStream << KText;
CleanupStack::PopAndDestroy(2); // outputFileStream, file
}
// -----------------------------------------------------------------------------
// COSM_assignmentAppUi::COSM_assignmentAppUi()
// C++ default constructor can NOT contain any code, that might leave.
// -----------------------------------------------------------------------------
//
COSM_assignmentAppUi::COSM_assignmentAppUi()
{
// No implementation required
}
// -----------------------------------------------------------------------------
// COSM_assignmentAppUi::~COSM_assignmentAppUi()
// Destructor.
// -----------------------------------------------------------------------------
//
COSM_assignmentAppUi::~COSM_assignmentAppUi()
{
if (iAppView)
{
delete iAppView;
iAppView = NULL;
}
}
// -----------------------------------------------------------------------------
// COSM_assignmentAppUi::HandleCommandL()
// Takes care of command handling.
// -----------------------------------------------------------------------------
//
void COSM_assignmentAppUi::HandleCommandL(TInt aCommand)
{
switch (aCommand)
{
case EEikCmdExit:
case EAknSoftkeyExit:
Exit();
break;
case ECommand1:
{
TInt64 iRandomnumber;
TTime time;
time.HomeTime();
iRandomnumber = time.Int64();
// Load a string from the resource file and display it
//HBufC* textResource = StringLoader::LoadLC( R_COMMAND1_TEXT );
CAknInformationNote* informationNote;
informationNote = new ( ELeave ) CAknInformationNote(R_AKN_INFORMATION_NOTE);
TInt imynumber2;
TInt imynumber = TInt (5 * TReal(Math::FRand(iRandomnumber)));
TInt imynumber1 = TInt (10 * TReal(Math::FRand(iRandomnumber)));
imynumber2=imynumber + imynumber1;
TBuf <40> s ;
s.Append(_L("Addition of two numbers "));
s.AppendNum(imynumber);
s.Append(_L(" and "));
s.AppendNum(imynumber1);
informationNote->ExecuteLD( s );
TInt anumber = 1;
TInt answer( anumber );
const CAknQueryDialog::TTone aTone = CAknQueryDialog::ENoTone;
CAknNumberQueryDialog* dialog = CAknNumberQueryDialog::NewL(answer, aTone);
dialog->ExecuteLD(R_DIALOG_LAYOUT);
if (answer==imynumber2)
{
CAknInformationNote* informationNote2;
informationNote2 = new ( ELeave ) CAknInformationNote(R_AKN_INFORMATION_NOTE);
TBuf <50> s_Correct;
s_Correct = _L("WoW...you are a genious");
informationNote2->ExecuteLD(s_Correct);
}
else
{
CAknInformationNote* informationNote2;
informationNote2 = new ( ELeave ) CAknInformationNote(R_AKN_INFORMATION_NOTE);
TBuf <50> s_Correct;
s_Correct = _L("sorry...no brains");
informationNote2->ExecuteLD(s_Correct);
}
iAppView->DrawNow();
}
break;
case ECommand2:
{
RFile rFile;
//Open file where the stream text is
User::LeaveIfError(rFile.Open(CCoeEnv::Static()->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(3); // filedata, inputFileStream, rFile
}
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(EOSM_assignmentUi);
break;
}
}
// -----------------------------------------------------------------------------
// Called by the framework when the application status pane
// size is changed. Passes the new client rectangle to the
// AppView
// -----------------------------------------------------------------------------
//
void COSM_assignmentAppUi::HandleStatusPaneSizeChange()
{
iAppView->SetRect(ClientRect());
}
CArrayFix<TCoeHelpContext>* COSM_assignmentAppUi::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 that 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. Alternatively, a patch now exists for the versions of
// HTML help compiler in SDKs and can be found here along with an FAQ:
// http://www3.symbian.com/faq.nsf/AllByDate/E9DF3257FD565A658025733900805EA2?OpenDocument
CArrayFixFlat<TCoeHelpContext>* array = new (ELeave) CArrayFixFlat<
TCoeHelpContext> (1);
CleanupStack::PushL(array);
//array->AppendL(TCoeHelpContext(KUidOSM_assignmentApp, KGeneral_Information));
CleanupStack::Pop(array);
return array;
}
// End of File
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?