Namespaces

Variants
Actions

Please note that as of October 24, 2014, the Nokia Developer Wiki will no longer be accepting user contributions, including new entries, edits and comments, as we begin transitioning to our new home, in the Windows Phone Development Wiki. We plan to move over the majority of the existing entries over the next few weeks. Thanks for all your past and future contributions.

Criando uma UI S60 para um componente Open C

From Wiki
Jump to: navigation, search
Article Metadata

Compatibilidade
Plataforma(s):
Symbian

Artigo
Tradução:
Por kyllercg
Última alteração feita por hamishwillee em 07 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 7 May 2013, at 23:59.
151 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.

×