×
Namespaces

Variants
Actions

Criando uma UI S60 para um componente Open C

From Nokia Developer Wiki
Jump to: navigation, search
Article Metadata

Compatibilidade
Plataforma(s):
Symbian

Artigo
Tradução:
Por kyllercg
Última alteração feita por hamishwillee em 08 May 2013

Contents

Introdução

Este artigo discute quais as opções existentes e como criar um interface de usuário S60 para um componente Open C. Duas aplicações de linha de comando para desktop, Potrace e MkBitmap, são usadas como exemplo (Portando a aplicação desktop Potrace para S60 usando Open C).


Criando o esqueleto da aplicação

A maneira mais fácil para criar uma UI é usando o wizard que vem com o Carbide C++. Este exemplo foi feito usando a versão gratuita Carbide C++ v1.2 Express.

GUI1.png

O tipo de aplicação é S60 3rd Ed. GUI Application

GUI2.png

O UID 0xA0002AD9 da aplicação foi solicitado a Symbian. A ferramenta mostra um alerta pois o UID verdadeiro é usado em vez de um UID de teste.

A estrutura de diretório da aplicação

A estrutura de diretório da aplicação


Adicionand uma interface ao componente Open C

O wizard cria uma cópia da aplicação HelloWorldBasic. Os nomes de classes e UID são as únicas coisas diferentes.

Função original

// -----------------------------------------------------------------------------
// COpenCUIExampleAppUi::HandleCommandL()
// Cuida da manipulação da linha de comando.
// -----------------------------------------------------------------------------
//
void COpenCUIExampleAppUi::HandleCommandL( TInt aCommand )
{
switch( aCommand )
{
case EEikCmdExit:
case EAknSoftkeyExit:
Exit();
break;
 
case ECommand1:
{
 
// Carrega uma string arquivo e mostra ela
HBufC* textResource = StringLoader::LoadLC( R_COMMAND1_TEXT );
CAknInformationNote* informationNote;
 
informationNote = new ( ELeave ) CAknInformationNote;
 
// Mostra a nota de informação com
// textResource carregada com StringLoader.
informationNote->ExecuteLD( *textResource );
 
// Pop HBuf da CleanUpStack e destrói.
CleanupStack::PopAndDestroy( textResource );
}
break;
case ECommand2:
{
 
RFs fsSession;
RFile rFile;
 
// Conecta processo cliente ao servidor de arquivos
User::LeaveIfError(fsSession.Connect());
CleanupClosePushL(fsSession);
 
// Abre arquivo com stream de texto
User::LeaveIfError(rFile.Open(fsSession,KFileName, EFileStreamText));//EFileShareReadersOnly));// EFileStreamText));
CleanupClosePushL(rFile);
 
// copia stream do arquivo para objeto RFileStream
RFileReadStream inputFileStream(rFile);
CleanupClosePushL(inputFileStream);
 
// descritor HBufC é criado do objeto RFileStream.
HBufC* fileData = HBufC::NewLC(inputFileStream, 32);
 
CAknInformationNote* informationNote;
 
informationNote = new ( ELeave ) CAknInformationNote;
// Mostra a informationNote
informationNote->ExecuteLD( *fileData);
 
// Pop recursos carregado da 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( EOpenCUIExampleUi );
break;
}
}

Passando dados entre processos

This page was last modified on 8 May 2013, at 02:59.
48 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.

 

Thank you!

We appreciate your feedback.

×