quarta-feira, 3 de novembro de 2010

Hello World Samsung bada

Olá povo,

Pra quem pensa que nesse blog só sai artigo sobre Android... Vocês tem uma grande parcela de razão :) Então hoje vou variar um pouquinho e falar sobre a plataforma bada da Samsung. Depois faremos um "Hello World"!

bada é o sistema operacional desenvolvido pela Samsung projetado para cobrir tanto os celulares "top de linha" quanto celulares mais modestos da compania. A empresa afirma que bada irá rapidamente substituir sua plataforma proprietária para "feature phones", transformando esse tipo de aparelho em smartphones.

Para iniciar o desenvolvimento com a plataforma devemos acessar http://developer.bada.com, se registrar gratuitamente e fazer o download do SDK. O instalador do SDK é bem simples, e o bacana é que diferentemente do Android, não precisamos baixar o Eclipse, baixar SDK, instalar plugin... Tudo é instalado e configurado junto.

A IDE é baseada em Eclipse e é uma extensão do CDT que permite o desenvolvimento C/C++ . Dentro da IDE temos compilador, debugger e a visualização da aplicação através de um simulador.

Vamos criar o primeiro projeto. Acesse o menu File > New > bada Application Project, digite "HelloWorld" no nome do projeto, selecione "bada Form Based Application", e clique em "Finish" (existem diversas configurações se clicar em Next, mas vou deixar pra um próximo post). Será criada a seguinte estrutura do projeto:


  • Include: bibliotecas do bada;
  • inc: ficarão os arquivos de cabeçalho (extensão .h);
  • src: arquivos de implementação (extensão .cpp);
  • Home: arquivos de escrita e leitura utilizados pela aplicação;
  • Res: Arquivos de recursos.
Abra o arquivo IDF_FORM1.xml. Ele terá um botão com o texto "OK". Arraste um componente "Edit Field" logo acima do botão e um "Label" abaixo.
Agora, abra o arquivo Form1.h e deixe a seção "protected" como abaixo:


// Implementation
protected:
static const int ID_BUTTON_OK = 101;
Osp::Ui::Controls::Button *__pButtonOk;
Osp::Ui::Controls::Label *__meuLabel;
Osp::Ui::Controls::EditField *__meuEdit;


No arquivo Form1.cpp, fica a implementação do comportamento da classe. No método OnInitializing, vamos realizar a ligação entre o código-fonte e os componentes que adicionamos ao formulário. Deixe-o conforme abaixo:


result
Form1::OnInitializing(void)
{
result r = E_SUCCESS;

// TODO: Add your initialization code here

// Get a button via resource ID
__pButtonOk = static_cast<Button *>
(GetControl(L"IDC_BUTTON_OK"));
__meuLabel = static_cast<Label *>
(GetControl(L"IDC_LABEL1"));
__meuEdit = static_cast<EditField *>
(GetControl(L"IDC_EDITFIELD1"));

if (__pButtonOk != null)
{
__pButtonOk->SetActionId(ID_BUTTON_OK);
__pButtonOk->AddActionEventListener(*this);
}
return r;
}


Notem que inicializamos os componentes com o método GetControl passando uma String. Essa String representa o ID do componente. Depois, associamos um evento ao botão, que é tratado pela própria classe pelo método OnActionPerformed. Deixe-o conforme abaixo:


void
Form1::OnActionPerformed(const Osp::Ui::Control& source, int actionId)
{
switch(actionId)
{
case ID_BUTTON_OK:
{
AppLog("OK Button is clicked! \n");

__meuLabel->SetText(
__meuEdit->GetText().GetPointer());

__meuLabel->RequestRedraw(true);
}
break;
default:
break;
}
}


A maioria do código já foi implementado pelo plugin, o que fizemos aqui foi definir o texto do label de acordo com o que o usuário digitou na caixa de texto e logo após, solicitar o redesenho do componente. Feito isso, clique com o botão direito sobre o projeto e selecione "Run as > bada Simulator Application". A aplicação deve ficar como na figura abaixo:


Estou começando a aprender essa nova plataforma. Mais informações aqui. O que acharam? Deixem seus comentários.

4br4ç05,
nglauber

Nenhum comentário: