Join Now
Quality Rating:
  • Currently 0.0 / 5
(0.0 / 5 - 0 votes cast)
Expertise Level:
  • Currently 0.0 / 5
(0.0 / 5 - 0 votes cast)

This page was last modified 21:14, 26 October 2007.

Criando uma UI S60 para um componente Open C

From Forum Nokia Wiki


Original: Creating a S60 UI to an existing Open C component

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.

Image:GUI1.png

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

Image: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

 
Powered by MediaWiki
     
     RDF Facets:
     
     
     qfnZtypeQUqfnTypeZCommunityContentQ
     qfnZtypeQUqfnTypeZWebpageQ
     qfnZtypeQUqfnTypeZWikiContentQ
     qmarsZlanguageQUxhttpE3aE2fE2fswE2enokiaE2ecomE2flanguageE2d1E2fenX