168
Coletânea de Aplicativos para Windows Phone

Coletânea de Aplicativos para Windows Phone - fatecjd.edu.brfatecjd.edu.br/site/uploads/files/coletaneaappwp.pdf · Todos os direitos reservados e protegidos pela Lei 5988 de 14/12/1973

Embed Size (px)

Citation preview

Coletânea de Aplicativos para Windows Phone

Edições BrasilJundiaí/SP

[email protected]

Faculdade de Tecnologia de Jundiaí

CARLOS EDUARDO SCHUSTERCLÁUDIO LUIS VIEIRA OLIVEIRALUCIANA FERREIRA BAPTISTA

ORGANIZADORES

AUTORES:Profa. Dra. Viviane Rezi Dobarro

Prof. Ms. Carlos Eduardo SchusterProf. Ms. Cláudio Luís V. Oliveira

Profa. Ms. Luciana Ferreira BaptistaProfa. Ms. Adaní Cusin Sacilotti

Profa. Ms. Ângela Cristina de Oliveira LühmannProf. Ms. Benedito Cristiano Aparecido Petroni

Amanda Mayara de AraujoGeorge Petz

Gustavo da Silva OliveiraJoão Henrique Felício Barreto

Kelly SabaráRafael de Oliveira Sales

Reginaldo Bernardo Antonietti

Coletânea de Aplicativos para Windows Phone

1ª EdiçãoJundiaí/SP

Edições Brasil2013

© Edições Brasil - 2013Supervisão: Marlene Rodrigues da Silva AguiarCapa e figuras : Cláudio Luis Vieira OliveiraEditoração Eletrônica: João José Ferreira de AguiarRevisão ortográfica: Organizadores da Obra Conselho Editorial: Prof. Ms. João José Ferreira de Aguiar

Prof. Ms. João Carlos dos Santos Profª Dra. Teresa Helena Buscato Martins

Todos os direitos reservados e protegidos pela Lei 5988 de 14/12/1973. Todas as informações contidas nesta obra são de exclusiva responsabilidade dos autores.As figuras deste livro foram produzidas pelo autor Cláudio Luis Vieira Oliveira. Nenhuma parte deste livro poderá ser reproduzida ou transmitida por qualquer tipo de meio empregado (eletrônicos, mecânicos, fotográficos, fotocópias, digitalização, gravação, ou qualquer outro), sem previa autorização por escrito da editora. O mesmo se aplica às características gráficas e à editoração eletrônica desta obra.Alguns nomes de empresas e respectivos produtos e/ou marcas foram citadas apenas para fins didáticos, não havendo qualquer vínculo das mesmas com a obra.Dentro dos códigos de programação, algumas palavras não foram acentuadas por questões técnicas relacionadas ao hardware e/ou softwares utilizados pelos leitores.A editora e os autores acreditam que todas as informações apresentadas nesta obra estão corretas. Contudo, não há qualquer tipo de garantia de que o uso das mesmas resultará no esperado pelo leitor, principalmente por se tratar de linguagem de programação. Caso seja(m) necessária(s), a editora disponibilizará errata(s) em seu site.

Dados Internacionais de Catalogação na Publicação (CIP)

OL41c Oliveira, Claudio Luis Vieira

Coletânea de Aplicativos para Windows Phone / Cláudio Luis Vieira Oliveira, Carlos Eduardo Schuster, Luciana Ferreira Baptista - Jundiaí: Edições Brasil, 2013.

168 p. : il.

ISBN: 978-85-65364-17-1

1. Linguagem - Windows Phone. 2. Programação. I. Schuster, Carlos Eduardo. II. Baptista, Luciana Ferreira. III. Título

CDD: 005.133

Bibliotecária responsável Marinês de Campos Ribeiro CRB8/7227

Depósito legal na Biblioteca Nacional, conforme Decreto 1.823/1907.Versão eletrônica - e-book

[email protected] - www.edicoesbrasil.com.br

5

Coletânea de Aplicativos para Windows Phone

Sumário

1. Prefácio .......................................................................................... 72. A Faculdade de Tecnologia de Jundiaí (FATEC Jundiaí) .................. 93. Introdução .................................................................................... 114. Desenvolvimento para Windows Phone ...................................... 135. Área Geométrica .......................................................................... 196. Carrossel ....................................................................................... 277. Controle de Ciclo Menstrual ........................................................ 318. Controle de Glicemia .................................................................... 399. Conversor de Temperatura........................................................... 5110. Cronômetro ................................................................................ 5911. Desafios de Lógica ....................................................................... 7512. Diabetes Calculator ..................................................................... 8313. FuelManager ............................................................................... 9114. Jogo da Memória ...................................................................... 10715. RescisãoCLT .............................................................................. 11716. Tabuada .................................................................................... 12517. Todos os Aplicativos Desenvolvidos e Publicados .................... 133

6

Ângela Lühmann, Benedito Petroni e Cláudio Oliveira

7

Coletânea de Aplicativos para Windows Phone

Prefácio

Prof. Ms. Benedito Cristiano Aparecido Petroni

Motivados pelo resultado considerado surpreendente da parceria entre a Faculdade de Tecnologia de Jundiaí (FATEC Jundiaí) e o Instituto Nokia de Tecnologia (INdT), professores e alunos dos Cursos Superiores de Tecnologia em Análise e Desenvolvimento de Sistemas e Gestão da Tecnologia da Informação, elaboraram essa coletânea de aplicativos desenvolvidos como resultado dos dois treinamentos sobre Windows Phone realizados pelo INdT nas dependências da FATEC Jundiaí. Esse curso possibilitou aos participantes da instituição o contato com uma tecnologia cada vez mais crescente na vida das pessoas e no próprio mercado de trabalho.

Todos nós sabemos que a comunicação móvel atualmente faz parte da vida de muitas pessoas e está presente em praticamente todos os locais do planeta e em todos os setores. Com isso pode-se afirmar que não se trata apenas de uma invenção bem sucedida – a dos dispositivos móveis, mas de uma revolução sem precedentes no que se destina à suas necessidades de uso que possibilita praticidade e disponibilidade de informações. Dentro deste contexto, esta obra apresenta uma série de aplicativos criados, e que tomaram como referência todos os tópicos técnicos abordados durante os treinamentos.

Essa obra apresenta vários aplicativos que podem a princípio parecerem simples, e na verdade são, mas muito úteis no dia-a-dia e em um contexto mais abrangente, observa-se que o aproveitamento do recurso tecnológico por mais simples que pareça, pode fazer a diferença para muitas pessoas.

Agradecemos primeiramente a Nokia do Brasil, especficamente o Instituto Nokia de Tecnologia (INdT) pela oferta da capacitação técnica especializada, a Direção da FATEC Jundiaí pela oportunidade da realização, aos professores e principalmente aos alunos, pelo empenho, interesse e dedicação, razão da existência de

1. Prefácio

8

Ângela Lühmann, Benedito Petroni e Cláudio Oliveira

toda a comunidade acadêmica da FATEC Jundiaí. Por último, um agradecimento a Allan Bezerra, Gerente de Projetos no Instituto Nokia de Tecnologia e ao Jackson Feijó, Pesquisador do Instituto Nokia de Tecnologia que ministrou os treinamentos na FATEC Jundiaí.

9

Coletânea de Aplicativos para Windows Phone

Profa. Dra. Viviane Rezi DobarroDiretora da Faculdade de Tecnologia de Jundiaí

A FATEC Jundiaí é uma faculdade pública paulista vinculada ao Centro Estadual de Educação Tecnológica Paula Souza (CEETEPS), que é uma autarquia do Governo do Estado de São Paulo, estando vinculada à Secretaria de Desenvolvimento Econômico, Ciência e Tecnologia. Foi instalada no ano de 2002 na cidade de Jundiaí e conta atualmente com mais de 1.200 alunos. Atualmente contribui para a formação de mão-de-obra qualificada no setor de informática, logística, gestão ambiental e eventos.

Como uma instituição pública, o ensino da FATEC Jundiaí é gratuito e o ingresso se dá por meio de concurso público (vestibular) semestral, aberto a qualquer pessoa que tenha concluído ou esteja em vias de concluir o Ensino Médio.

Atualmente oferece cinco cursos superiores:(Fonte: http://www.vestibularfatec.com.br/)

O Tecnólogo em Análise e Desenvolvimento de Sistemas analisa, projeta, documenta, especifica, testa, implanta e mantém sistemas computacionais de informação. Esse profissional trabalha, também, com ferramentas computacionais, equipamentos de informática e metodologia de projetos na produção de sistemas. Raciocínio lógico, emprego de linguagens de programação e de metodologias de construção de projetos, preocupação com a qualidade, usabilidade, robustez, integridade e segurança de programas computacionais são fundamentais à atuação desse profissional.

O Tecnólogo em Eventos atua em instituições de eventos, de turismo e em meios de hospedagem, prestando serviços especializados no planejamento, organização e execução de eventos de negócios, sociais, esportivos, culturais, científicos, artísticos, de lazer e outros. Deve ter o domínio dos códigos funcionais e dos processos de interação dinâmica de todos os agentes integrados ao turismo e os variados aspectos culturais, econômicos e sociais da região em que atua, com consciência crítica acerca das orientações éticas, ambientais

2. A Faculdade de Tecnologia de Jundiaí (FATEC Jundiaí)

10

Ângela Lühmann, Benedito Petroni e Cláudio Oliveira

e legais.O Tecnólogo em Gestão Ambiental planeja, gerencia e executa

as atividades de diagnóstico, avaliação de impacto, proposição de medidas mitigadoras - corretivas e preventivas -, recuperação de áreas degradadas, acompanhamento e monitoramento da qualidade ambiental. Regulação do uso, controle, proteção e conservação do meio ambiente, avaliação de conformidade legal, análise de impacto ambiental, elaboração de laudos e pareceres são algumas das atribuições deste profissional, podendo elaborar e implantar ainda políticas e programas de educação ambiental, contribuindo assim para a melhoria da qualidade de vida e a preservação da natureza.

O Tecnólogo em Gestão da Tecnologia da Informação atua num segmento da área de informática que abrange a administração dos recursos de infraestrutura física e lógica dos ambientes informatizados. O profissional egresso desse curso define parâmetros de utilização de sistemas, gerencia os recursos humanos envolvidos, implanta e documenta rotinas, controla os níveis de serviço de sistemas operacionais e banco de dados, gerenciando os sistemas implantados.

O Tecnólogo em Logística é o profissional especializado em armazenagem, distribuição e transporte. Atuando na área logística de uma organização, planeja e coordena a movimentação física e de informações sobre as operações multimodais e intermodais de transporte, incluindo o gerenciamento de pessoas para proporcionar fluxo otimizado ao longo da cadeia de suprimentos. Ele projeta e gerencia redes de distribuição e unidades logísticas, estabelecendo processos de compras, identificando fornecedores, negociando e estabelecendo padrões de recebimento, armazenamento, movimentação e embalagem de materiais. Ocupa-se ainda do inventário e gerenciamento estratégico de estoques, sistemas de abastecimento, programação, monitoramento do fluxo de pedidos, cálculo de custos de fretes e transbordos, sistemas de tráfego e gerenciamento de transportes urbano de carga e passageiros, que envolvam os modais rodoviário, ferroviário, aeroviário, dutoviário e aquaviário.

FATEC JundiaíAv. União dos Ferroviários, 1760. Centro

CEP 13201-160 - Jundiaí/SPTel/Fax: (11) 4522-7549 / 4523-0092

http://www.fatecjd.edu.br

11

Coletânea de Aplicativos para Windows Phone

Prof. Ms. Carlos Eduardo SchusterProf. Ms. Cláudio Luís V. Oliveira

Profa. Ms. Luciana Ferreira Baptista

O Windows Phone é o sistema operacional da Microsoft para smartphones que apresenta novos recursos de usabilidade, muitos recursos de integração com computadores Windows e também com o console de jogos XBOX 360.

A presente obra apresenta uma coletânea de aplicativos, para o Windows Phone, desenvolvidos pelos professores e alunos da Faculdade de Tecnologia de Jundiaí (FATEC Jundiaí) durante o segundo semestre de 2012 e primeiro semestre de 2013.

Os aplicativos resultam da parceria entre o Instituto Nokia de Tecnologia (INdT) e a FATEC Jundiaí a qual propiciou o treinamento de 8 docentes e cerca de 75 alunos dos cursos de Tecnologia em Análise e Desenvolvimento de Sistemas e Gestão da Tecnologia da Informação. Com treinamentos realizados em novembro de 2012 e abril de 2013, ambos ministrados pelo instrutor Jackson Feijó do INdT.

Figura 3.1 - Turma de Abril/2013

3. Introdução

12

Ângela Lühmann, Benedito Petroni e Cláudio Oliveira

Os objetivos principais dos treinamentos ministrados são capacitar o corpo docente e discente no desenvolvimento para Windows Phone, bem como incentivar a criação de aplicativos para esta plataforma, que poderão ser comercializados pelos alunos por meio da loja da Microsoft.

Ao todo trinta e um aplicativos foram desenvolvidos e publicados na loja da Microsoft sendo que destes, doze são apresentados em detalhes nesta coletânea. No último capítulo desta obra também se encontram relacionados todos os aplicativos desenvolvidos.

13

Coletânea de Aplicativos para Windows Phone

Profa. Ms. Ângela Cristina de Oliveira LühmannProf. Ms. Benedito Cristiano Aparecido Petroni

Prof. Ms. Cláudio Luís Vieira Oliveira

O Windows Phone oferece um conjunto de soluções que facilitam o desenvolvimento de aplicativos para a plataforma. Fundamentado sobre o conceito de desenvolvimento da interface sobre um padrão XML, no caso, o Microsoft Silverlight e utilizando a linguagem de programação C#.

Para o desenvolvimento de aplicativos para o Windows Phone é necessário instalar o Visual Studio Express for Windows Phone que encontra-se disponível gratuitamente para download em http://dev.windowsphone.com.

A base de funcionamento do Visual Studio é o conceito de projeto. Um Projeto (Project) pode ser entendido como um grupo de classes, formulários e recursos diversos, como arquivos de imagens e sons entre outros, necessários à criação de um programa.

Figura 4.1 – Localização do Visual Studio

4. Desenvolvimento para Windows Phone

14

Ângela Lühmann, Benedito Petroni e Cláudio Oliveira

Desta forma, após abrir o Visual Studio, a primeira etapa na construção de um aplicativo para Windows Phone consiste em realizar a criação de um projeto. Para isso, escolha no menu principal a opção File e depois New Project:

Figura 4.2 – Modelos de Aplicativos

Nosso primeiro exemplo, que será criado com o intuito de ilustrar o funcionamento básico do Visual Studio, consiste em uma “Windows Phone Application” e será chamada de “Ola”. Em seguida, selecione a plataforma desejada:

Figura 4.3 – Definição da Versão do Sistema Operacional

15

Coletânea de Aplicativos para Windows Phone

O Visual Studio irá exibir a aplicação criada, a esquerda podemos observar como a mesma será exibida na tela de um smartphone com Windows Phone. A parte central consiste no código fonte da página principal em Silverlight for Windows Phone. Na direita temos a Solution Explorer e a Properties.

Figura 4.4 – Janela principal do Visual Studio

Quando trabalhamos com o Silverlight for Windows Phone, a base de qualquer aplicativo são as páginas XAML (eXtensible Application Markup Language), que consiste uma linguagem fundamentada sobre XML (eXtensible Markup Language) e permite a especificação do layout e dos componentes da página.

Quando criamos uma página a estrutura básica já é apresentada, desta forma, identifique no código fonte da aplicação o seguinte trecho:

<!--LayoutRoot is the root grid where all page content is placed--><Grid x:Name=”LayoutRoot” Background=”Transparent”> <Grid.RowDefinitions> <RowDefinition Height=”Auto”/> <RowDefinition Height=”*”/> </Grid.RowDefinitions>

<!--TitlePanel contains the name of the application and page title-->

16

Ângela Lühmann, Benedito Petroni e Cláudio Oliveira

<StackPanel x:Name=”TitlePanel” Grid.Row=”0” Margin=”12,17,0,28”> <TextBlock x:Name=”ApplicationTitle” Text=”MY APPLICATION” Style=”{StaticResource PhoneTextNormalStyle}”/> <TextBlock x:Name=”PageTitle” Text=”page name” Margin=”9,-7,0,0” Style=”{StaticResource PhoneTextTitle1Style}”/> </StackPanel>

<!--ContentPanel - place additional content here--> <Grid x:Name=”ContentPanel” Grid.Row=”1” Margin=”12,0,12,0”></Grid></Grid>

Este código representa a definição dos gerenciadores de layout que serão adotados, este exemplo, Grid e StackPanel. A área reservada para o título da aplicação e para o título da página utilizarão o elemento TextBlock, o qual permite a exibição de texto estático na página. Altere a propriedade Text do TextBlock chamado ApplicationTitle para “EXEMPLO DE APLICATIVO” e, em seguida modifique a propriedade Text do TexBlock chamado PageName para “olá”.

Após concluir as alterações no programa, gravar as alterações realizadas. O passo seguinte consiste em compilar a solução, para isso, podemos utilizar a opção do menu Build e depois Build Solution, também pode-se utilizar a tecla de atalho F6 para realizar o mesmo processo.

Após finalizar a construção da aplicação é importante observar na parte inferior da IDE se ocorreram erros ou avisos.

Figura 4.5 – Lista de Erros

17

Coletânea de Aplicativos para Windows Phone

Quando a compilação não apresentar erros a mesma poderá ser executada através do menu Debug utilizando os itens Start Debugging (F5). O emulador será iniciado e o resultado da execução do programa deverá ser similar ao ilustrado pela Figura 4.6.

Figura 4.6 – Emulador

Vamos adicionar um novo TextBlock ao ContentPanel, conforme mostrado a seguir.

<!--ContentPanel - place additional content here--><Grid x:Name=”ContentPanel” Grid.Row=”1” Margin=”12,0,12,0”> <TextBlock Text=”Bem-vindo” /></Grid>

Na Figura 4.7 podemos visualizar a execução do aplicativo na tela do emulador, sendo importante observar que todo novo objeto

18

Ângela Lühmann, Benedito Petroni e Cláudio Oliveira

da página deve ser colocado dentro do ContentPanel para que seja exibido.

Figura 4.7 – Tela do aplicativo

19

Coletânea de Aplicativos para Windows Phone

Gustavo da Silva OliveiraIntrodução

A proposta deste aplicativo é calcular a área geométrica de algumas figuras. O conceito básico consiste no usuário indicar umas das figuras pré-cadastradas: quadrado, triângulo e trapézio dentre outras também, e suas dimensões como, por exemplo, altura, largura e base. A partir disto, o aplicativo tem informações suficientes para efetuar o cálculo e retornar a área da figura.

Projeto O elemento principal da aplicação consiste no usuário selecionar

qual figura ele deseja calcular a área. Na aplicação o usuário pode calcular a área das seguintes figuras:

Figura 5.1 – Figuras suportadas pelos aplicativos

Após selecionar uma das figuras, o usuário é levado à outra página onde informações sobre como o cálculo é feito serão exibidas, podendo assim entender o conceito e indicar as informações necessárias para que a aplicação efetue o devido cálculo.

5. Área Geométrica

20

Gustavo da Silva Oliveira

Figura 5.2 - Página do Quadrado Figura 5.3 - Página do Quadrado

Figura 5.4 - Área do Quadrado Figura 5.5 – Cálculo da Área

21

Coletânea de Aplicativos para Windows Phone

Desenvolvimento Condiderando as dimensões reduzidas da tela de um

smartphone, será utilizado um controle do tipo Panorama de forma a conseguirmos maximizar a área da aplicação permitindo, desta forma, realizar a disposição das figuras de modo a não ficarmos limitados exclusivamente à área física da tela. No trecho de programa a seguir, é possível observar a implementação de um PanoramaItem dentro da página MainPage.xaml, dentro deste elemento será utilizado o Grid para organizar as figuras.

<!--Panorama item one--><controls:PanoramaItem Header=”selecione”> <Grid> <Image HorizontalAlignment=”Left” Height=”150” VerticalAlignment=”Top” Width=”150” Source=”/Img/Quadrado.png” Stretch=”Fill” Margin=”132,0,0,0” Tap=”Image_Tap_1”/> <Image HorizontalAlignment=”Left” Height=”150” VerticalAlignment=”Top” Width=”400” Source=”/Img/Quadrado.png” Stretch=”Fill” Margin=”10,230,0,0” Tap=”Image_Tap_2”/> <TextBlock HorizontalAlignment=”Left” TextWrapping=”Wrap” Text=”Quadrado” VerticalAlignment=”Top” Margin=”126,155,0,0” FontSize=”35”/> <TextBlock HorizontalAlignment=”Left” TextWrapping=”Wrap” Text=”Retângulo” VerticalAlignment=”Top” Margin=”126,385,0,0” FontSize=”35”/> </Grid> </controls:PanoramaItem>

O resultado final da página principal, que pode ser observado nas Figuras 5.6, 5.7, 5.8 e 5.9, consistindo em quatro PanoramaItem contendo, cada um, duas figuras.

22

Gustavo da Silva Oliveira

Figura 5.6 - Quadrados e Retângulos Figura 5.7 - Círculo e Anel

Figura 5.8 - Triângulo e Losango Figura 5.9 – Trapézio e Paralelograma

23

Coletânea de Aplicativos para Windows Phone

Uma nova página da aplicação pode ser aberta através do método Navigate disponível na classe NavigationService. A seguir podemos observar seu uso no desenvolvimento do evento Tap da figura Quadrado:

private void imgQuadrado_Tap(object sender, GestureEventArgs e){ NavigationService.Navigate(new Uri(“/Quadrado.xaml”, UriKind.Relative));}

Após desenvolver o layout da página principal, vamos definir o layout das páginas secundárias, onde o cálculo vai ser realizado, seguindo o mesmo padrão da MainPage, com PanoramaItem.

<!--Panorama item one--><controls:PanoramaItem Header=”fórmula”> <Grid> <Image HorizontalAlignment=”Left” Height=”194”VerticalAlignment=”Top” Width=”192” Source=”/Img/Mod/Quadrado.png”/> <TextBlock HorizontalAlignment=”Left” TextWrapping=”Wrap” VerticalAlignment=”Top” Margin=”207,10,0,0” Height=”178” Width=”213” FontSize=”47”> <Run Text=”A = Área;”/> <LineBreak/> <Run Text=”L = Lado;”/> <LineBreak/> <Run Text=”A = L * L”/> </TextBlock> <TextBox HorizontalAlignment=”Left” Height=”234” TextWrapping=”Wrap” Text=”O Quadrado é uma figura plana que possui quatro lados iguais e quatro ângulos retos (90°).” VerticalAlignment=”Top” Width=”420” Margin=”0,199,0,0” IsReadOnly=”True” FontSize=”33” TextAlignment=”Left”/> </Grid></controls:PanoramaItem>

24

Gustavo da Silva Oliveira

<!--Panorama item two--><controls:PanoramaItem Header=”calcular”> <Grid> <TextBlock HorizontalAlignment=”Left” TextWrapping=”Wrap” Text=”Insira o valor de L” VerticalAlignment=”Top” FontSize=”40” Margin=”56,10,0,0”/> <TextBox x:Name=”txtL” MaxLength=”6” HorizontalAlignment=”Left” Height=”94” TextWrapping=”Wrap” VerticalAlignment=”Top” Width=”420” Margin=”0,90,0,0” FontSize=”40” TextAlignment=”Center” InputScope=”Number” Tap=”txtL_Tap” TextChanged=”txtL_TextChanged” LostFocus=”txtL_LostFocus”/> <TextBlock x:Name=”txtbRes” HorizontalAlignment=”Left” TextWrapping=”Wrap” Text=”A área é:” VerticalAlignment=”Top” FontSize=”40” Margin=”130,220,0,0”/> <TextBox x:Name=”txtRes” HorizontalAlignment=”Left” Height=”94” TextWrapping=”Wrap” VerticalAlignment=”Top” Width=”420” Margin=”0,298,0,0” FontSize=”40” TextAlignment=”Center” InputScope=”Number” IsReadOnly=”True”/> </Grid></controls:PanoramaItem>

Cada layout está associado a uma classe C# onde podemos programar diretamente. Nas páginas secundárias, o método Calcular é responsável por fazer o cálculo da área.

public partial class Quadrado : PhoneApplicationPage{ private void calcular() { try { if ((txtL.Text != “”) && (txtL.Text != “.”) && (txtL.Text != “0”) && (txtL.Text != “0.0”)) { txtRes.Text = (Math.Pow((double.Parse( txtL.Text)), 2)).ToString();

25

Coletânea de Aplicativos para Windows Phone

} } catch { txtRes.Text = “Desculpe. Não foi possível Calcular”; } }}

Quando o usuário digita os valores necessários ao cálculo, automaticamente o método é chamado e o usuário poderá visualizar o resultado da área do objeto escolhido.

private void txtL_TextChanged(object sender, TextChangedEventArgs e){ calcular();}

Considerações FinaisA aplicação consiste em uma versão do que aprendemos na

escola sobre geometria. Apresenta como principais características, a facilidade e a usabilidade. O uso do recurso Panorama View apresenta novas perspectivas em relação ao layout de aplicações, pois, apresenta uma solução bastante funcional em relação às limitações de tamanho de tela existentes nos smartphones.

Após o desenvolvimento a aplicação foi submetida e aprovada para publicação no Windows Phone Marketplace, estando disponível para download no endereço http://www.windowsphone.com/pt-br/store/app/%C3%A1rea-gemom%C3%A9trica/2419a705-ed19-4cb0-8db0-d16495bcfe96

Referências BibliográficasMicrosoft. Windows Phone Dev Center. Disponível em <http://dev.windowsphone.com/en-us>. Acesso em 15 de agosto de 2013.

26

Ângela Lühmann, Benedito Petroni e Cláudio Oliveira

27

Coletânea de Aplicativos para Windows Phone

Profa. Ms. Luciana Ferreira Baptista

IntroduçãoA proposta deste aplicativo é a apresentação dos personagens

da novela Carrossel do SBT, com a possibilidade de ouvir a música tema da novela.

Projeto O projeto consiste em apresentar os desenhos dos personagens

(Figura 6.1) da novela Carrossel em ordem alfabética (Figura 6.2), com a possibilidade de ouvir a música tema “Carro Céu” quando clicar na imagem da Nota Musical.

Figura 6.1 – Tela inicial

6. Carrossel

28

Luciana Ferreira Baptista

Figura 6.2 – Tela de apresentação dos personagens

Clicando-se novamente na imagem da Nota Musical, a música é pausada.

Desenvolvimento

A aplicação foi desenvolvida para a plataforma Windows Phone e utilizando, para isso, o Silverlight para Windows Phone.

Devido às dimensões reduzidas da tela de um smartphone, será utilizado um controle do tipo Panorama de forma a conseguirmos maximizar a área da aplicação permitindo, desta forma, realizar a disposição de todos os personagens. No trecho de programa a seguir, podemos observar a implementação de um PanoramaItem dentro da página MainPage.xaml, dentro desta elemento será utilizado o StackPanel com a propriedade Orientation igual a Horizontal para organizar as imagens dos personagens e o botão que contém a imagem da Nota Musical.

29

Coletânea de Aplicativos para Windows Phone

<controls:PanoramaItem Header=”Personagens”> <StackPanel Orientation=”Horizontal”> <Image Source=”/Carrossel;component/imagens/persons.jpg” Height=”438” Width=”372” /> <Button Name=”btnSom1” Content=”som” Height=”60” Width=”60” VerticalAlignment=”Bottom” Click=”btnSom_Click”> <Button.Background> <ImageBrush ImageSource=”/Carrossel;component/imagens/som.jpg” Stretch=”Uniform” /> </Button.Background> </Button> </StackPanel></controls:PanoramaItem>

Ao clicar na imagem da Nota Musical é verificado o estado da música, ou seja, se ela deverá iniciar, se ela já iniciou e está pause (portanto deverá voltar do ponto que parou), ou se ela está tocando e deverá pausar:

private void btnSom_Click(object sender, RoutedEventArgs e){ if (MediaPlayer.State == MediaState.Paused) { MediaPlayer.Resume(); } else { if (MediaPlayer.State == MediaState.Playing) { MediaPlayer.Pause(); } else { PlaySound(“/carroceu.mp3”); } }}

Para tocar a música pela primeira vez é chamado o método PlaySound, passando a música tema da novela:

30

Luciana Ferreira Baptista

public void PlaySound(string pathToMp3){ Song song = Song.FromUri(“nome”, new Uri(pathToMp3, UriKind.Relative)); FrameworkDispatcher.Update(); MediaPlayer.Play(song);}

Considerações FinaisA aplicação consiste em uma versão simples para visualizar

os personagens da novela Carrossel, ouvindo também, se desejar, a música tema da novela.

Após o desenvolvimento a aplicação foi submetida e aprovada para publicação no Windows Phone Marketplace, estando disponível para download no endereço http://www.windowsphone.com/pt-br/store/app/carrossel/e4553915-11d7-4088-80ca-87a4c423045a

Melhorias futuras na aplicação consistem em acrescentar a descrição das características de cada personagem.

Referências BibliográficasMicrosoft. Windows Phone Dev Center. Disponível em <http://dev.windowsphone.com/en-us>. Acesso em 26.ago.2013.

SBT. Carrossel. Disponível em <http://www.sbt.com.br/carrossel/personagens/>. Acesso em 10.mai.2013.

31

Coletânea de Aplicativos para Windows Phone

Profa. Ms. Adaní Cusin SacilottiProf. Ms. Carlos Eduardo Schuster

Kelly Sabará

Introdução A proposta deste aplicativo é fornecer conforme seu ciclo

menstrual, a data aproximada da ovulação e seu período fértil. Embora este método de tabelinha não seja 100% confiável, pode ser utilizado, para se ter uma ideia das datas férteis. Ao ser digitado pelo usuário a data da última menstruação, o aplicativo calcula as datas de início da ovulação, fim da ovulação, dia mais fértil e próxima menstruação.

Projeto A aplicação consiste em efetuar cálculos com datas referentes

ao período fértil, a partir da data inserida da última menstruação, considerando um ciclo de 28 dias.

No campo para inserir a data da última menstruação é oferecido ao usuário um calendário, para que ele selecione o mês, o dia e o ano. Como facilidade para o usuário, é salvo no aplicativo a data da última menstruação.

A aplicação possui uma página inicial, contendo as informações do aplicativo, conforme a Figura 7.1.

7. Controle de Ciclo Menstrual

32

Adaní Cusin Sacilotti, Carlos Eduardo Schuster e Kelly Sabará

Figura 7.1 – Tela inicial

O usuário ao clicar no botão Acessar, irá para a tela de Cálculo do Ciclo, onde deverá informar a data da última menstruação e clicar no botão Calcular Datas, onde serão exibidos os cálculos de acordo com o ciclo de 28 dias, conforme a Figura 7.2.

33

Coletânea de Aplicativos para Windows Phone

Figura 7.2 – Cálculo do Ciclo

Ao clicar no campo para atualizar a data da última menstruação, que exibe a data atual extraída do sistema operacional ou a data da última menstruação gravada no aplicativo, é exibido um calendário para o usuário. Com facilidade, podem-se rolar os meses, dias e anos e selecioná-los (Figura 7.3).

34

Adaní Cusin Sacilotti, Carlos Eduardo Schuster e Kelly Sabará

Figura 7.3 - Calendário

Ao clicar no botão Calcular Datas, em relação à data digitada da última menstruação, a data de início da ovulação é acrescida de 11 dias. A data de fim da ovulação é acrescida de 17 dias. A data do dia mais fértil á crescida de 14 dias, e a data da próxima menstruação é acrescida de 28 dias. Conforme é exibido na Figura 7.4.

35

Coletânea de Aplicativos para Windows Phone

Figura 7.4 – Cálculo do Ciclo com os resultados

DesenvolvimentoA aplicação foi desenvolvida para a plataforma Windows Phone

sendo utilizado, para isso, o Silverlight para Windows Phone.Devido aos cálculos efetuados pelo aplicativo com datas, o

trecho de programa a seguir exibe a criação da variável dtIni, através do DatePicker e sua formatação.

<StackPanel x:Name=”ContentPanel” Grid.Row=”1” Margin=”12,0,12,0”> <TextBlock Text=”Data da última mestruação:”/> <toolkit:DatePicker Name=”dtIni” ValueStringFormat=”{}{0:dd-MM-yyyy}” /> <Button Content=”Calcular Datas” Click=”Button_Click”/> <Grid > <TextBlock Text=”Inicio da Ovulação” Margin=”10,0,142,0” FontSize=”28” /> <TextBlock Name=”txtDtiniO” Height=”38” Margin=”298,0,6,0” TextAlignment=”Right” FontSize=”28” VerticalAlignment=”Top” Foreground=”#FF760000” />

36

Adaní Cusin Sacilotti, Carlos Eduardo Schuster e Kelly Sabará

<TextBlock FontSize=”28” Margin=”10,46,142,-46” Text=”Fim da Ovulação” /> <TextBlock Name=”txtDtfimO” FontSize=”28” Foreground=”#FF760000” Height=”38” Margin=”298,46,6,0” TextAlignment=”Right” VerticalAlignment=”Top” /> <TextBlock FontSize=”28” Margin=”10,92,142,-46” Text=”Dia mais Fértil “ /> <TextBlock Name=”txtDtfertil” FontSize=”28” Foreground=”#FF760000” Height=”38” Margin=”298,92,6,0” TextAlignment=”Right” VerticalAlignment=”Top” /> <TextBlock FontSize=”28” Margin=”10,138,142,-46” Text=”Próxima Mestruação” /> <TextBlock Name=”txtDtprox” FontSize=”28” Foreground=”#FF760000” Height=”38” Margin=”298,138,6,0” TextAlignment=”Right” VerticalAlignment=”Top” /> </Grid></StackPanel>

Após desenvolver o layout da página principal, vamos definir a classe que irá definir os cálculos efetuados referentes ao ciclo menstrual, o carregamento da data da última menstruação gravada no aplicativo ou a data atual extraída do sistema operacional.

namespace ciclo{ public partial class calculo : PhoneApplicationPage { public calculo() { InitializeComponent(); string text;

if (loadText(“diaM.txt”, out text)) { dtIni.Value = Convert.ToDateTime(text); } }

private void Button_Click(object sender, RoutedEventArgs e)

37

Coletânea de Aplicativos para Windows Phone

{ DateTime dt = Convert.ToDateTime(dtIni.Value); saveText(“diaM.txt”, dt.ToString()); txtDtiniO.Text = dt.AddDays(11).ToString(“dd/MM/yyyy”); txtDtfimO.Text = dt.AddDays(17).ToString(“dd/MM/yyyy”); txtDtfertil.Text = dt.AddDays(14).ToString(“dd/MM/yyyy”); txtDtprox.Text = dt.AddDays(28).ToString(“dd/MM/yyyy”); }

private void saveText(string filename, string text) { using (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication()) { using (IsolatedStorageFileStream rawStream = isf.CreateFile(filename)) { StreamWriter writer = new StreamWriter(rawStream); writer.Write(text); writer.Close(); } } } private bool loadText(string filename, out string result) { result = “”; using (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication()) { if (isf.FileExists(filename)) { try { using (IsolatedStorageFileStream

38

Adaní Cusin Sacilotti, Carlos Eduardo Schuster e Kelly Sabará

rawStream = isf.OpenFile(filename, System.IO.FileMode.Open)) { StreamReader reader = new StreamReader(rawStream); result = reader.ReadToEnd(); reader.Close(); } } catch { return false; } } else { return false; } } return true; } }}

Considerações FinaisA aplicação consiste em uma versão que funciona para ciclos

menstruais de 28 dias. Apresenta como principais características, a possibilidade de alerta e informação ao usuário, e a ampliação dos cálculos para os mais variados ciclos menstruais.

Após o desenvolvimento a aplicação foi submetida e aprovada para publicação no Windows Phone Marketplace, estando disponível para download no endereço http://www.windowsphone.com/pt-br/store/app/ciclo/3652aa54-9a7e-4e20-a306-b70e129de0aa.

Melhorias futuras na aplicação consistem em realizar os cálculos para ciclos menstruais diferenciados.

Referências BibliográficasMicrosoft. Windows Phone Dev Center. Disponível em <http://dev.windowsphone.com/en-us>. Acesso em 15 jun. 2013.

39

Coletânea de Aplicativos para Windows Phone

Amanda Mayara de Araujo

IntroduçãoO objetivo deste aplicativo é criar um histórico diário com

os dados glicêmicos dos usuários que possuem Diabetes Tipo 1 e necessitam estar sempre realizando o teste de glicemia. O usuário informa o valor glicêmico obtido no teste, bem como a data e momento, por exemplo, em jejum e antes do almoço entre outros. Os dados são armazenados em um histórico no qual pode ser visualizado pelo usuário a qualquer momento.

Projeto A aplicação apresenta um pequeno questionário, no qual

dados serão requisitados aos usuários. Esses dados serão salvos e apresentados em um histórico.

Há uma página principal, onde é usado três controles PivotItem, um para captar os dados, outro para o histórico e um terceiro reservado para informações sobre o aplicativo e seu desenvolvedor. Esta página principal (MainPage) pode ser observada na Figura 8.1.

Figura 8.1 – Estrutura da aplicação

8. Controle de Glicemia

40

Amanda Mayara de Araujo

A página Adicionar Dados possui campos a serem preenchidos pelo usuário, são eles data, valor glicêmico (mg/dL) e o momento em que o teste foi realizado, conforme ilustrado na Figura 8.2. Um botão está disponível para o usuário confirmar, adicionando os dados fornecidos. Também há um botão de criar um novo histórico, caso seja a vontade do usuário.

Figura 8.2 - Adicionar Dados

Após os dados serem salvos, estes serão apresentados ao usuário na página em que contém o histórico. O usuário poderá visualizar dados recentemente armazenados ao pressionar o botão Atualizar. Também poderá apagar o histórico pelo botão Apagar. Uma ilustração dessa página pode ser observada na Figura 8.3.

41

Coletânea de Aplicativos para Windows Phone

Figura 8.3 - Histórico

Todos os dados serão armazenados na memória do telefone pelo Isolatedtorage.

DesenvolvimentoA aplicação foi desenvolvida para a plataforma Windows Phone,

versão 7.1, sendo utilizado o SilverLight para Windows Phone.

É usado o recurso Pivot, o qual conterá “três páginas em apenas uma”. Este recurso permite utilizar um espaço maior além das dimensões do aparelho e uma navegação mais rápida pelo aplicativo. Neste caso, usamos três controles PivotItem para disponibilizar os conteúdos de “Adicionar Dados”, “Histórico” e “Sobre” em uma única página, a MainPage.xaml.

Dentro dessa MainPage.xaml, temos um PivoItem para Adicionar dados. Foi usado um ScrollViewer que permite a rolagem da página. Também foram utilizados dois StackPanel, um para organizar a disposição dos textos e campos e outro para organizar os Radio Buttons, que selecionam o momento escolhido pelo usuário.

<controls:PivotItem Header=”Add Dados” FontFamily=”Comic Sans MS” FontSize=”24” Foreground=”White”> <ScrollViewer Visibility=”Visible”> <StackPanel>

42

Amanda Mayara de Araujo

<TextBlock Text=”Data” HorizontalAlignment=”Center” Margin=”0,5” FontSize=”28” /> <toolkit:DatePicker x:Name=”Date” Value=”” Background=”#E1DFEEF8” /> <TextBlock Name=”txtDate” Visibility=”Collapsed” /> <TextBlock Text=”Valor Glicêmico (mg/dL)” HorizontalAlignment=”Center” FontSize=”28” /> <TextBox Name=”txtValor” InputScope=”Number” Margin=”0,5” Background=”#E1DFEEF8”/> <TextBlock Text=”Momento do Teste” HorizontalAlignment=”Center” FontSize=”28” /> <StackPanel HorizontalAlignment=”Center” Width=”300” Background=”#43151519”> <RadioButton Name=”rbJejum” Content=”Jejum” HorizontalAlignment=”Left” Foreground=”White” Background=”#C7FFFFFF” /> <RadioButton Name=”rb1” Content=”Depois Café da Manhã” HorizontalAlignment=”Left” Foreground=”White” Background=”#C7FFFFFF” /> <RadioButton Name=”rb2” Content=”Antes do Almoço” HorizontalAlignment=”Left” Foreground=”White” Background=”#C7FFFFFF” /> <RadioButton Name=”rb3” Content=”Depois do Almoço” HorizontalAlignment=”Left” Foreground=”White” Background=”#C7FFFFFF” /> <RadioButton Name=”rb4” Content=”Antes do Jantar” HorizontalAlignment=”Left” Foreground=”White” Background=”#C7FFFFFF” /> <RadioButton Name=”rb5” Content=”Depois do Jantar” HorizontalAlignment=”Left” Foreground=”White” Background=”#C7FFFFFF” /> </StackPanel> <TextBlock Name=”txtMomento” Visibility=”Collapsed” /> <Button Name=”btnAdd” Content=”Adicionar” Click=”btnAdd_Click” Foreground=”White” Background=”#91193D6C” BorderBrush=”White” /> <Button Name=”btnNovo” Content=”Novo Histórico” Click=”btnNovo_Click” Foreground=”White” Background=”#DF8428DE” BorderBrush=”White” /> </StackPanel> </ScrollViewer></controls:PivotItem>

43

Coletânea de Aplicativos para Windows Phone

O resultado deste tópico pode ser observado pela Figura 8.4.

Figura 8.4 - Resultado final da página Add Dados

Com o ScrowViewer, a página pode ser rolada para que o usuário possa ter acesso a todos os dados e os botões. Um seguno PivotItem foi usado para criar o histórico.

<controls:PivotItem Header=”Histórico”> <ScrollViewer Visibility=”Visible” MaxHeight=”100000”> <StackPanel Background=”#81151519” > <StackPanel Orientation=”Horizontal”> <Button Name=”btnAtualizar” Content=”Atualizar” Click=”btnAtualizar_Click” HorizontalContentAlignment=”Center” Width=”150” Background=”#DF8428DE” Foreground=”White” BorderBrush=”White” /> <Button Name=”btnApagar” Content=”Apagar” HorizontalContentAlignment=”Center” Click=”btnApagar_Click” Width=”150” Foreground=”White” Background=”#F9134DA2” BorderBrush=”White” /> </StackPanel> <StackPanel> <TextBlock Name=”txtConteudo” TextWrapping=”Wrap” FontFamily=”Arial” Foreground=”White” FontSize=”24” />

44

Amanda Mayara de Araujo

</StackPanel> </StackPanel> </ScrollViewer></controls:PivotItem>

Neste PivotItem, também foi utilizado um ScrowViewer, assim como um StackPanel com orientação horizontal para organizar os botões de Atualizar e Apagar neste sentido. O resultado pode ser observado pela Figura 8.5.

Figura 8.5 - Resultado final do Histórico

Após o layout ser definido, vamos implementar as funcionlidades dos botões e o histórico, no MainPage.xaml.cs. O botão Novo histórico irá armazenar os dados fornecidos pelo usuário em um IsolatedStorage. Ao ser pressionado, será criado um novo histórico, substituindo o já existente.

private const string fileName = “historico.txt”;private const string folderName = “WP7Files”;private string filePath = System.IO.Path.Combine(folderName, fileName);

private void btnNovo_Click(object sender, RoutedEventArgs e){

45

Coletânea de Aplicativos para Windows Phone

StreamResourceInfo streamResourcenInfo = Application.GetResourceStream(new Uri(filePath, UriKind.Relative)); using (var myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication()) { string directoryName = System.IO.Path.GetDirectoryName(filePath); if (!string.IsNullOrEmpty(directoryName) && !myIsolatedStorage.DirectoryExists(directoryName) ) { myIsolatedStorage.CreateDirectory(directoryName); }

MessageBoxResult resultado = MessageBox.Show(“Deseja iniciar um novo histórico?”, “Atenção”, MessageBoxButton.OKCancel); if (resultado == MessageBoxResult.OK) { using (IsolatedStorageFileStream fileStream = myIsolatedStorage.OpenFile(filePath, System.IO.FileMode.Create, System.IO.FileAccess.Write)) { using (StreamWriter writer = new StreamWriter(fileStream)) { DateTime date = Convert.ToDateTime(Date.Value); txtDate.Text = date.ToString();

if (rbJejum.IsChecked == true) txtMomento.Text = rbJejum.Content.ToString(); else if (rb1.IsChecked == true) txtMomento.Text = rb1.Content.ToString(); else if (rb2.IsChecked == true) txtMomento.Text = rb2.Content.ToString(); else if (rb3.IsChecked == true) txtMomento.Text = rb3.Content.ToString();

46

Amanda Mayara de Araujo

else if (rb4.IsChecked == true) txtMomento.Text = rb4.Content.ToString(); else if (rb5.IsChecked == true) txtMomento.Text = rb5.Content.ToString(); string someTextData = “__________________________________ \n\n” + “Dia: “ + txtDate.Text + “\nValor Glicêmico: “ + txtValor.Text + “\nMomento: “ + txtMomento.Text; writer.WriteLine(someTextData); writer.Close(); MessageBox.Show(“Histórico criado com sucesso!”, “Atenção”, MessageBoxButton.OK); } } } else { return; } } Limpar();}

O botão Atualizar também armazenará dados em um IsolatedStorage, gravando-os no histórico existente.

private void btnAdd_Click(object sender, RoutedEventArgs e){ using (IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication()) { if (myIsolatedStorage.FileExists(filePath)) { using (IsolatedStorageFileStream fileStream = myIsolatedStorage.OpenFile(filePath, FileMode.Open, FileAccess.Write)) { using (StreamWriter writer =

47

Coletânea de Aplicativos para Windows Phone

new StreamWriter(fileStream)) { DateTime date = Convert.ToDateTime(Date.Value); txtDate.Text = date.ToString();

if (rbJejum.IsChecked == true) txtMomento.Text = rbJejum.Content.ToString(); else if (rb1.IsChecked == true) txtMomento.Text = rb1.Content.ToString(); else if (rb2.IsChecked == true) txtMomento.Text = rb2.Content.ToString(); else if (rb3.IsChecked == true) txtMomento.Text = rb3.Content.ToString(); else if (rb4.IsChecked == true) txtMomento.Text = rb4.Content.ToString(); else if (rb5.IsChecked == true) txtMomento.Text = rb5.Content.ToString(); string someTextData = “__________________________________ \n\n” + “Dia: “ + txtDate.Text + “\nValor Glicêmico: “ + txtValor.Text + “\nMomento: “ + txtMomento.Text; writer.BaseStream.Seek(0, SeekOrigin.End); writer.WriteLine(someTextData); writer.Close(); MessageBox.Show(“Dados salvos com sucesso!”, “Atenção”, MessageBoxButton.OK); } } } else { MessageBox.Show(“Não há um histórico a ser editado. Crie um novo histórico.”, “Atenção”, MessageBoxButton.OK); } } Limpar();}

48

Amanda Mayara de Araujo

É criado o método Limpar, usado para criar um novo histórico e para atualizar, esse método deverá limpar o campo do Valor Glicêmico e o item que foi selecionado para o Momento.

private void Limpar(){ rbJejum.IsChecked = false; rb1.IsChecked = false; rb2.IsChecked = false; rb3.IsChecked = false; rb4.IsChecked = false; rb5.IsChecked = false; txtValor.Text = string.Empty;}

No controle do Histórico, há o botão atualizar, que ao ser pressionado, deverá mostrar os novos dados que foram armazenados pelo usuário no IsolatedStorage.

private void btnAtualizar_Click(object sender, RoutedEventArgs e){ using (IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication()) { if (myIsolatedStorage.FileExists(filePath)) { using (IsolatedStorageFileStream fileStream = myIsolatedStorage.OpenFile(filePath, FileMode.Open, FileAccess.Read)) { using (StreamReader reader = new StreamReader(fileStream)) { txtConteudo.Text = reader.ReadToEnd(); } } } else

49

Coletânea de Aplicativos para Windows Phone

{ MessageBox.Show(“Histórico não encontrado. Crie um novo histórico.”, “Atenção”, MessageBoxButton.OK); } }}

Por fim, temos o botão Apagar elimina todos os dados o histórico.

private void btnApagar_Click(object sender, RoutedEventArgs e){ MessageBoxResult resultado = MessageBox.Show(“Deseja realmente apagar o histórico?”, “Atenção”, MessageBoxButton.OKCancel); if (resultado == MessageBoxResult.OK) { txtConteudo.Text = string.Empty; using (IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication()) { if (myIsolatedStorage.FileExists(filePath)) { myIsolatedStorage.DeleteFile(filePath); MessageBox.Show(“Histórico excuído com sucesso”, “Atenção”, MessageBoxButton.OK); } else { MessageBox.Show(“Não há dados a serem apagados.”, “Atenção”, MessageBoxButton.OK); } } }}

50

Amanda Mayara de Araujo

Considerações FinaisA aplicação foi desenvolvida especialmente para portadores do

Diabete Tipo 1, os quais necessitam estar sempre realizando seu teste glicêmico e possuir de maneira organizada os dados desse teste para um melhor controle de sua glicemia e ter uma saúde equilibrada.

Foi utilizado o recurso Pivot, para o usuário ter uma maior facilidade no uso e na visualização dos componentes do aplicativo.

A aplicação foi submetida e provada, sendo publicada no Windows Phone MarketPlace, estando disponível para download pelo endereço http://www.windowsphone.com/s?appid=b4525d80-eb18-4875-a177-adbbf03227ab.

Há futuras melhorias previstas para esta aplicação, nas quais serão adicionados mais recursos que poderão ser usados, para proporcionar um maior controle aos seus usuários finais.

Referências BibliográficasMicrosoft. Pivot control for Windows Phone. Disponível em <http://msdn.microsoft.com/en-us/library/windowsphone/develop/ff941098(v=vs.105).aspx >. Acesso em 3.Ago. 2013.

Microsoft. Windows Phone Dev Center. Disponível em <http://dev.windowsphone.com/en-us> . Acesso em 3.Ago.2013.

51

Coletânea de Aplicativos para Windows Phone

George Petz

IntroduçãoO desenvolvimento deste aplicativo tem como principal proposta

ser um conversor de temperatura de fácil uso. Seu funcionamento básico inicia com o usuário informando uma temperatura em uma medida e através de cálculos físicos é retornado a mesma temperatura em outra medida.

ProjetoA princípio, é exibido ao usuário um menu contento todas as

opções possíveis de conversão, assim que usuário selecionar uma delas uma nova tela é exibida, essas novas telas, se comparadas, são parecidas, pois a única informação que muda é o nome da unidade de medida (ºC, ºF e K), porém cada uma possui um cálculo diferente.

Figura 9.1 - Estrutura do Projeto

9. Conversor de Temperatura

52

George Petz

O projeto possui ao todo sete telas sendo elas o Menu e uma tela para cada tipo de conversão.

DesenvolvimentoPara o desenvolvimento do projeto foi utilizado o ambiente de

desenvolvimento Microsoft Visual Studio 2010 Express for Windows Phone, com Silverlight para Windows Phone. A linguagem escolhida foi a C#.

Como as diversas telas do aplicativo possuem poucas informações ao usuário, foi escolhido para todas as telas o controle do tipo Windows Phone Application, esse tipo de tela funciona como uma simples página.

A primeira interface que o usuário utiliza é o menu, os elementos encontrados nessa tela são organizados por um Grid (espécie de tabela).

<!--ContentPanel - place additional content here--><Grid x:Name=”ContentPanel” Grid.Row=”1” Margin=”12,0,12,0”> <Button Content=”ºC to ºF” FontSize=”32” Height=”100” HorizontalAlignment=”Left” Margin=”0,6,0,0” Name=”btnCtoF” VerticalAlignment=”Top” Width=”456” Click=”btnCtoF_Click” /> <Button Content=”ºC to K” FontSize=”32” Height=”100” HorizontalAlignment=”Left” Margin=”0,93,0,0” Name=”btnCtoK” VerticalAlignment=”Top” Width=”456” Click=”btnCtoK_Click” /> <Button Content=”ºF to ºC” FontSize=”32” Height=”100” HorizontalAlignment=”Left” Margin=”0,179,0,0” Name=”btnFtoC” VerticalAlignment=”Top” Width=”456” Click=”btnFtoC_Click” /> <Button Content=”ºF to K” FontSize=”32” Height=”100” HorizontalAlignment=”Left” Margin=”0,268,0,0” Name=”btnFtoK” VerticalAlignment=”Top” Width=”456” Click=”btnFtoK_Click” /> <Button Content=”K to ºC” FontSize=”32” Height=”100” HorizontalAlignment=”Left” Margin=”0,356,0,0” Name=”btnKtoC” VerticalAlignment=”Top” Width=”456” Click=”btnKtoC_Click” /> <Button Content=”K to ºF” FontSize=”32” Height=”100” HorizontalAlignment=”Left” Margin=”0,445,0,0” Name=”btnKtoF” VerticalAlignment=”Top” Width=”456” Click=”btnKtoF_Click” /></Grid>

53

Coletânea de Aplicativos para Windows Phone

O resultado da implementação deste código é esta interface ilustrada pela Figura 9.2:

Figura 9.2 – Menu

Por trás desta interface existe um código que basicamente utiliza a classe chamada NavigationService, nessa classe há o método chamado Navigate, que possui a funcionalidade de navegar entre páginas. Este método é chamado quando o evento Click de cada botão é disparado.

private void btnCtoF_Click(object sender, RoutedEventArgs e){ NavigationService.Navigate(new Uri(“/CtoF.xaml”, UriKind.Relative));}

private void btnCtoK_Click(object sender, RoutedEventArgs e){ NavigationService.Navigate(new Uri(“/CtoK.xaml”, UriKind.Relative));}

private void btnFtoC_Click(object sender, RoutedEventArgs e){

54

George Petz

NavigationService.Navigate(new Uri(“/FtoC.xaml”, UriKind.Relative));}

private void btnFtoK_Click(object sender, RoutedEventArgs e){ NavigationService.Navigate(new Uri(“/FtoK.xaml”, UriKind.Relative));}

private void btnKtoC_Click(object sender, RoutedEventArgs e){ NavigationService.Navigate(new Uri(“/KtoC.xaml”, UriKind.Relative));}

private void btnKtoF_Click(object sender, RoutedEventArgs e){ NavigationService.Navigate(new Uri(“/KtoF.xaml”, UriKind.Relative));}

Quando, por exemplo, o botão “btnCtoF” é clicado a tela “CtoF” é carregada e exibida.

As interfaces de conversão de temperatura são parecidas, sendo assim, sua organização é feita através de um Grid. Será mostrada como exemplo a tela de conversão ºC para ºF (CtoF.xaml).

<Grid x:Name=”ContentPanel” Grid.Row=”1” Margin=”12,0,12,0”> <TextBlock Height=”44” HorizontalAlignment=”Left” Margin=”12,61,0,0” Name=”textBlock1” Text=”ºC :” FontSize=”30” VerticalAlignment=”Top” Width=”92” /> <TextBox InputScope=”Number” Height=”74” Margin=”110,47,89,0” Name=”txtC” Text=”” VerticalAlignment=”Top” Tap=”txtKm_Tap” TextChanged=”txtC_TextChanged” LostFocus=”txtC_LostFocus” /> <Button Content=”Converter” Height=”99” HorizontalAlignment=”Left” Margin=”0,212,0,0”

55

Coletânea de Aplicativos para Windows Phone

Name=”btnConverter” FontSize=”40” VerticalAlignment=”Top” Width=”450” Click=”btnConverter_Click” /> <TextBlock FontSize=”30” Height=”44” HorizontalAlignment=”Left” Margin=”12,365,0,0” Name=”textBlock2” Text=”ºF :” VerticalAlignment=”Top” Width=”92” /> <TextBox Height=”74” Margin=”0,351,89,0” Name=”txtF” VerticalAlignment=”Top” HorizontalAlignment=”Right” Width=”257” IsEnabled=”False” /> <my:AdControl AdUnitId=”10051848” ApplicationId=”a85b90ad-23d2-494e-9b47-e66e4c9e1dc5” Height=”80” HorizontalAlignment=”Left” Margin=”-12,530,0,0” Name=”adControl1” VerticalAlignment=”Top” Width=”480” /> <CheckBox Content=”Negative” Height=”72” HorizontalAlignment=”Left” Margin=”12,134,0,0” Name=”chkNegative” VerticalAlignment=”Top” Width=”355” /></Grid>

Com esse código mostrado é criada a interface ilustrada pela Figura 9.3.

56

George Petz

Figura 9.3 - Tela ºC para ºF

Nesta tela o usuário informa o valor da temperatura em ºC e clica no botão “Converter”, com isso, o sistema através de cálculos retorna a mesma temperatura na escala ºF. Existe o checkbox Negativo, para que o usuário check caso a temperatura informada seja negativa. O aplicativo ainda contém a prevenção de erros, como por exemplo, efetuar o cálculo com números com mais de uma vírgula. A implementação deste modelo em formato de código é feita da seguinte forma:

float C;float F;

private void btnConverter_Click(object sender, RoutedEventArgs e){ if (VereficarPonto(txtC.Text) > 1)

57

Coletânea de Aplicativos para Windows Phone

{ MessageBox.Show(“It can’t calculate a value with more than one point(.)!”, “Attention!”, MessageBoxButton.OK); } else { if (string.IsNullOrEmpty(txtC.Text)) { txtC.Text = “0”; } if (chkNegative.IsChecked == true) { C = float.Parse(“-” + txtC.Text); } else { C = float.Parse(txtC.Text); } F = (float)(C * 1.8 + 32); txtF.Text = Convert.ToString(F); }}

private int VereficarPonto(string texto){ int ponto = 0; for (int i = 0; i < texto.Length; i++) { if (texto.ElementAt(i) == ‘.’) { ponto += 1; } } return ponto;}

A diferença de maior importância entre as telas de conversão de temperatura é o calculo realizado. A seguir estão relacionados os cálculos para as respectivas conversões:

58

George Petz

• ºC para ºF à F = (C * 1.8 + 32);• ºC para K à K = (C + 273.15);• ºF para ºC à C = ((F - 32) / 1.8);• ºF para K à K = ((F + 459.67) / 1.8);• K para ºC à C = (K - 273.15);• K para ºF à F = (K * 1.8 - 459.67);

Considerações FinaisA escolha de um conversor de temperatura como ideia para

o desenvolvimento do aplicativo foi acatada, pois os conversores existentes no Windows Phone Marketplace não são tão simples sendo, que a simplicidade é algo que deve se salientar em um projeto desta natureza.

Após o desenvolvimento a aplicação foi submetida e aprovada para publicação, estando disponível para download no endereço: http://www.windowsphone.com/pt-br/store/app/temperatures/97e7eec7-5973-49a7-87ca-abc8b6fae169

Referências BibliográficasMicrosoft. How to create your first app for Windows Phone. Disponível em: http://msdn.microsoft.com/en-us/library/windowsphone/develop/ff402526(v=vs.105).aspx Acessado em 24 de Agosto de 2013.

59

Coletânea de Aplicativos para Windows Phone

Rafael de Oliveira SalesIntrodução

A proposta desta aplicação é desenvolver um cronômetro onde o usuário terá as funções iniciar, parar, reiniciar ou zerar o cronômetro. A aplicação consiste em uma ferramenta onde o usuário pode escolher entre dois idiomas: inglês e português. Também é possível salvar os seus resultados, por exemplo, uma volta em certo circuito ou certa distância em uma lista.

ProjetoO elemento principal é o relógio que é usado para realizar

a função de cronômetro e uma lista para armazenar os resultados cronometrados. Os comandos que o usuário pode aplicar são os seguintes:

Figura 10.1 - Botões e suas funcionalidades.

10. Cronômetro

60

Rafael de Oliveira Sales

Primeiramente o usuário deve selecionar o idioma desejado. A Figura 10.2 mostra a tela de seleção do idioma.

Figura 10.2 - Tela de seleção de linguagem

Após ter feito a sua escolha o usuário é levado a uma tela contendo o relógio, com a lista e com os seguintes botões:

61

Coletânea de Aplicativos para Windows Phone

Figura 10.3 - Tela em português Figura 10.4 - Tela em inglês

Quando o usuário “apertar” o botão Começar ou GO!!!, conforme o idioma selecionado, o relógio começa a contagem, neste momento, o botão Começar/GO!!! será escondido, dando lugar ao botão Recomeçar/Resume e habilitará o botão Parar/Stop.

62

Rafael de Oliveira Sales

Figura 10.5 - Tela em português do cronômetro rodando

Figura 10.6 - Tela em inglês do cronômetro rodando

Na tela acima o usuário vai ter as seguintes ações disponíveis: Salvar o tempo ou Parar o relógio. Se o usuário clicar em Salvar Tempo ou Save time o aplicativo vai gravar, em forma de lista, os tempos no momento do clique, como mostram as Figura 10.7 e 10.8:

63

Coletânea de Aplicativos para Windows Phone

Figura 10.7 - Tela salvando o tempo em português

Figura 10.8 - Tela salvando o tempo em inglês

Já se o usuário clicar no botão no botão Parar ou Stop, o relógio pausa o tempo e aguarda uma decisão do usuário entre duas ações possíveis: Recomeçar/Resume que vai continuar o tempo no momento que o usuário clicou no Parar/Stop ou; o botão Zerar/Clear que vai apagar todos os resultados da lista e também vai zerar o relógio e assim retornando a mesma tela da Figura 10.3 ou da Figura 10.4.

64

Rafael de Oliveira Sales

Figura 10.9 - Tela do cronômetro pausado em português

Figura 10.10 - Tela do cronômetro pausado em inglês

Desenvolvimento A aplicação foi desenvolvida para a plataforma Windows Phone

e utilizando, para isso, o Silverlight para Windows Phone.

Para o desenvolvimento da interface foi utilizado a tela padrão de aplicação para o Windows Phone, chamada de Phone Aplicattion ou Portrait Page. No trecho de programa a seguir, podemos observar o código XAML dentro da página MainPage.xaml, será utilizado o Grid para organizar os botões na tela.

<!--ContentPanel - place additional content here--><Grid x:Name=”ContentPanel” Grid.Row=”1” Margin=”12,0,12,0” Background=”{x:Null}”> <Button Name=”btnComeçar” Content=”Começar” Height=”72” HorizontalAlignment=”Left” Margin=”15,529,0,0” VerticalAlignment=”Top” Width=”206” Click=”btnComeçar_Click” Foreground=”GreenYellow” /> <Button Name=”btnParar” Content=”Parar” Height=”72” HorizontalAlignment=”Left” Margin=”243,529,0,0” VerticalAlignment=”Top” Width=”206” Click=”button1_Click” Foreground=”GreenYellow” />

65

Coletânea de Aplicativos para Windows Phone

<Button Name=”btnRec” Content=”Recomeçar” Height=”72” HorizontalAlignment=”Left” Margin=”15,529,0,0” VerticalAlignment=”Top” Width=”206” IsEnabled=”True” Click=”btnRec_Click” Visibility=”Visible” Foreground=”GreenYellow” /> <Button Name=”btnVolta” Content=”Salvar tempo” Height=”72” HorizontalAlignment=”Left” Margin=”15,529,0,0” VerticalAlignment=”Top” Width=”206” Click=”btnVolta_Click” Foreground=”GreenYellow” /> <Button Name=”btnZerar” Content=”Zerar” Height=”72” HorizontalAlignment=”Left” Margin=”243,529,0,0” VerticalAlignment=”Top” Width=”206” Click=”btnZerar_Click” Foreground=”GreenYellow” /> <Button Name=”btnResume” Content=”Resume” Height=”72” HorizontalAlignment=”Left” Margin=”15,529,0,0” VerticalAlignment=”Top” Width=”206” Click=”btnResume_Click” Foreground=”GreenYellow” /> <Button Name=”btnPortu” Content=”Português” Height=”72” HorizontalAlignment=”Left” Margin=”146,246,0,0” VerticalAlignment=”Top” Width=”182” Click=”btnPortu_Click” Foreground=”GreenYellow” /> <Button Name=”btnEng” Content=”English” Height=”72” HorizontalAlignment=”Left” Margin=”146,324,0,0” VerticalAlignment=”Top” Width=”182” Click=”btnEng_Click” Foreground=”GreenYellow” /> <TextBlock Name=”txbMin” Height=”129” HorizontalAlignment=”Left” Margin=”182,25,0,0” Text=”00” VerticalAlignment=”Top” Width=”112” FontSize=”100” TextAlignment=”Center” Foreground=”GreenYellow” /> <TextBlock Name=”txbHrs” Height=”129” HorizontalAlignment=”Left” Margin=”61,25,0,0” Text=”00” VerticalAlignment=”Top” FontSize=”100” TextAlignment=”Center” TextWrapping=”NoWrap” FlowDirection=”RightToLeft” Foreground=”GreenYellow” /> <TextBlock Name=”txbP2” Height=”134” HorizontalAlignment=”Left” Margin=”168,20,0,0” Text=”:” VerticalAlignment=”Top” TextAlignment=”Center” FontSize=”100” Foreground=”GreenYellow” /> <TextBlock Name=”txbP1” Height=”127” HorizontalAlignment=”Left” Margin=”283,19,0,0” Text=”:” VerticalAlignment=”Top” Width=”32” FontSize=”100” TextAlignment=”Center” Foreground=”GreenYellow” />

66

Rafael de Oliveira Sales

<TextBlock Name=”txbVolta” Text=”” Height=”30” HorizontalAlignment=”Left” Margin=”15,172,0,0” VerticalAlignment=”Top” Width=”128” Foreground=”GreenYellow” /> <TextBlock Name=”txbLingua” Text=”Escolha o idioma/Choose Language” Height=”30” HorizontalAlignment=”Left” Margin=”80,208,0,0” VerticalAlignment=”Top” Foreground=”GreenYellow” /> <TextBlock Name=”txbCro” HorizontalAlignment=”Center” Margin=”300,25,44,0” Text=”00” Width=”112” FontSize=”100” VerticalAlignment=”Top” TextAlignment=”Center” Height=”121” Foreground=”GreenYellow” /> <TextBlock Name=”txbtempo” Text=”” Height=”30” HorizontalAlignment=”Left” Margin=”35,25,0,0” VerticalAlignment=”Top” /> <TextBlock Name=”txbDias” Text=”” Height=”30” HorizontalAlignment=”Right” Margin=”0,23,261,0” VerticalAlignment=”Top” /> <ListBox Name=”ltbVolta” Height=”271” HorizontalAlignment=”Right” Margin=”0,208,5,0” VerticalAlignment=”Top” Width=”437” Background=”Black” ItemsSource=”{Binding}” TabNavigation=”Local” FontSize=”30” UseLayoutRounding=”False” Foreground=”#FFF51F1F”></ListBox></Grid></Grid>

O resultado final da página principal, que pode ser observado na Figura 10.10, sendo que os outros botões, a lista e as outras mensagens ficam ocultos até que ocorra a escolha do idioma.

67

Coletânea de Aplicativos para Windows Phone

Figura 10.11 - Resultado Final

Após desenvolver o layout da página principal, vamos ocultar os botões, a lista e os textos e também declarar uma variável do tipo TimeSpan e definir o seu intervalo.

btnRec.Visibility = Visibility.Collapsed;btnVolta.Visibility = Visibility.Collapsed;btnZerar.Visibility = Visibility.Collapsed;

btnParar.IsEnabled = false;btnRec.IsEnabled = false;btnResume.IsEnabled = false;

tempo.Interval = new TimeSpan(0, 0, 0, 1);

btnComeçar.Visibility = Visibility.Collapsed;btnParar.Visibility = Visibility.Collapsed;txbCro.Visibility = Visibility.Collapsed;txbHrs.Visibility = Visibility.Collapsed;txbMin.Visibility = Visibility.Collapsed;txbP1.Visibility = Visibility.Collapsed;txbP2.Visibility = Visibility.Collapsed;txbVolta.Visibility = Visibility.Collapsed;ltbVolta.Visibility = Visibility.Collapsed;btnResume.Visibility = Visibility.Collapsed;

68

Rafael de Oliveira Sales

Agora vamos definir o código do botão Começar ou Go!!!, conforme podemos observar a seguir:

private void btnComeçar_Click(object sender, RoutedEventArgs e){ tempo.Start(); tempo.Tick += delegate { seg++; if (seg < 10) { txbCro.Text = “0” + seg.ToString(); } if (seg >= 10) { txbCro.Text = seg.ToString(); } if (seg == 60) { seg = 0; min++; txbCro.Text = “00”; if (min < 10) { txbMin.Text = “0” + min.ToString(); } if (min > 10) { txbMin.Text = min.ToString(); } if (min == 60) { min = 0; hrs++; txbMin.Text = “00”; if (hrs < 10) { txbHrs.Text = “0” + hrs.ToString(); }

69

Coletânea de Aplicativos para Windows Phone

if (hrs >= 10) { txbHrs.Text = hrs.ToString(); } if (hrs == 24) { hrs = 0; dia++; txbHrs.Text = “00”; if(btnEng.IsEnabled==true) { if (dia == 1) { txbDias.Text = dia.ToString() + “day”; } if (dia > 1) { txbDias.Text = dia.ToString() + “days”; } } if (btnPortu.IsEnabled==true) { if (dia == 1) { txbDias.Text = dia.ToString() + “ dia”; } if (dia > 1) { txbDias.Text = dia.ToString() + “ dias”; } } } } } }; btnComeçar.Visibility = Visibility.Collapsed; btnVolta.Visibility = Visibility.Visible; btnParar.IsEnabled = true; }

70

Rafael de Oliveira Sales

No cófigo-fonte a seguir temos a programação para o evento click do botão Parar/Stop que faz com que a contagem de tempo pare, além de ocultar e deixar visível alguns botões.

private void button1_Click(object sender, RoutedEventArgs e){ tempo.Stop(); btnParar.Visibility = System.Windows.Visibility.Collapsed; if (btnRec.IsEnabled == true) { btnRec.Visibility = System.Windows.Visibility.Visible; } if (btnResume.IsEnabled == true) { btnResume.Visibility = Visibility.Visible; } btnVolta.Visibility = Visibility.Collapsed; btnZerar.Visibility = Visibility.Visible;}

O botão Recomeçar/Resume volta a iniciar a variável tempo e deixa visível os botões Parar/Recomeçar e oculta o próprio botão Recomeçar e o botão Zerar/Clear.

private void btnRec_Click(object sender, RoutedEventArgs e){ tempo.Start(); btnRec.Visibility = System.Windows.Visibility.Collapsed; btnParar.Visibility = System.Windows.Visibility.Visible; btnZerar.Visibility = Visibility.Collapsed; btnVolta.Visibility = Visibility.Visible; btnParar.IsEnabled = true; btnRec.Content = “Recomeçar”; }

71

Coletânea de Aplicativos para Windows Phone

private void btnResume_Click(object sender, RoutedEventArgs e){ tempo.Start(); btnResume.Visibility = System.Windows.Visibility.Collapsed; btnParar.Visibility = System.Windows.Visibility.Visible; btnZerar.Visibility = Visibility.Collapsed; btnVolta.Visibility = Visibility.Visible; btnParar.IsEnabled = true; btnResume.Content = “Resume”;}

O botão Salvar Tempo/Save Time adiciona o tempo atual do relógio na lista.

private void btnVolta_Click(object sender, RoutedEventArgs e){ i++; ltbVolta.Items.Add(“ “ + i + “: “ + txbHrs.Text + “:” + txbMin.Text + “:” + txbCro.Text); }

O botão Zerar/Clear limpa todas as variáveis e a lista.

private void btnZerar_Click(object sender, RoutedEventArgs e){ i = 0; seg = 0; min = 0; hrs = 0; ltbVolta.Items.Clear(); txbCro.Text = “00”; txbMin.Text = “00”;

72

Rafael de Oliveira Sales

txbHrs.Text = “00”;

if (btnRec.IsEnabled == true) { btnRec.Content = “Começar”; } if (btnResume.IsEnabled == true) { btnResume.Content = “Go!!!”; } btnParar.Visibility=Visibility.Visible; btnZerar.Visibility = Visibility.Collapsed; btnParar.IsEnabled = false; }

A seguir podemos observar os códigos de atribuição dos textos nos botões e nos campos textos também de acordo com o idioma escolhido.

private void btnPortu_Click(object sender, RoutedEventArgs e){ PageTitle.Text = “cronômetro”; btnComeçar.Visibility = Visibility.Visible; btnParar.Visibility = Visibility.Visible; txbCro.Visibility = Visibility.Visible; txbHrs.Visibility = Visibility.Visible; txbMin.Visibility = Visibility.Visible; txbP1.Visibility = Visibility.Visible; txbP2.Visibility = Visibility.Visible; txbVolta.Visibility = Visibility.Visible; ltbVolta.Visibility = Visibility.Visible;

btnEng.Visibility = Visibility.Collapsed; btnPortu.Visibility = Visibility.Collapsed; txbLingua.Visibility = Visibility.Collapsed;

73

Coletânea de Aplicativos para Windows Phone

btnRec.IsEnabled = true; btnEng.IsEnabled = false;

txbVolta.Text = “Tempo Salvo”;}

private void btnEng_Click(object sender, RoutedEventArgs e){ PageTitle.Text = “chronometer”; txbCro.Visibility = Visibility.Visible; txbHrs.Visibility = Visibility.Visible; txbMin.Visibility = Visibility.Visible; txbP1.Visibility = Visibility.Visible; txbP2.Visibility = Visibility.Visible; txbVolta.Visibility = Visibility.Visible; ltbVolta.Visibility = Visibility.Visible; btnComeçar.Visibility = Visibility.Visible; btnParar.Visibility = Visibility.Visible; btnEng.Visibility = Visibility.Collapsed; btnPortu.Visibility = Visibility.Collapsed; txbLingua.Visibility = Visibility.Collapsed;

btnResume.IsEnabled = true; btnPortu.IsEnabled = false;

txbVolta.Text = “Time saved”; btnComeçar.Content = “Go!!!”; btnParar.Content = “Stop”; btnZerar.Content = “Clear”; btnVolta.Content = “Save time”;}

Considerações FinaisA aplicação consiste em cronometrar o tempo e suas principais

características é que qualquer usuário, independentemente do seu nível de conhecimento, vai conseguir usar o aplicativo, pois, o mesmo foi desenvolvido de forma simples e objetiva.

74

Rafael de Oliveira Sales

Após o desenvolvimento a aplicação foi submetida e aprovada para publicação no Windows Phone Marketplace, estando disponível para download no endereço http://www.windowsphone.com/pt-br/store/app/cronometro/fc52ee24-1e9a-4742-a67f-c390fcfb81e2

Referências BibliográficasMicrosoft. Windows Phone Dev Center. Disponível em <http://dev.windowsphone.com/en-us>. Acesso em 21 de agosto de 2013.

75

Coletânea de Aplicativos para Windows Phone

Profa. Ms. Adaní Cusin SacilottiProf. Ms. Carlos Eduardo Schuster

Kelly Sabará

Introdução A proposta deste aplicativo é o desenvolvimento de um teste de

raciocínio e lógica com níveis de dificuldade. O conceito básico consiste em mostrar uma determinada questão e as opções de resposta em relação ao nível de dificuldade selecionado. Após o usuário clicar sobre alguma opção de resposta, ele tem a possibilidade de verificar qual é a resposta correta. O aplicativo indica se a opção selecionada está correta ou não, caso a resposta assinalada esteja incorreta, ele exibe a mensagem de Resposta Incorreta - tente novamente, oferecendo a oportunidade ao usuário de tentar solucionar o problema novamente.

Projeto A aplicação consiste em um conjunto de três desafios de lógica

para cada nível de dificuldade (fácil, médio, difícil). As questões são exibidas de acordo com o nível de dificuldade selecionado e o usuário pode selecionar qual desafio responder.

As opções de respostas, logo abaixo de cada questão, estão no formato de teste. O usuário a qualquer momento poderá escolher o nível de dificuldade e a questão a ser respondida.

Quando o usuário selecionar uma opção de resposta correta, o aplicativo exibe a mensagem de Resposta Correta, seguida de uma breve explicação sobre a solução da questão.

A aplicação possui uma página inicial, contendo os objetivos do aplicativo, conforme a Figura 11.1.

11. Desafios de Lógica

76

Adaní Cusin Sacilotti, Carlos Eduardo Schuster e Kelly Sabará

Figura 11.1 – Tela inicial

Cada nível de dificuldade dos Desafios de Lógica será exibido em um PivotItem. Cada PivotItem irá exibir três desafios (questões), conforme ilustrado na Figura 11.2:

77

Coletânea de Aplicativos para Windows Phone

Figura 11.2 - Nível de dificuldade fácil

Os níveis médio e difícil apresentam o mesmo modelo apresentado no nível fácil (Figura 11.2).

São exibidos três desafios (desafio1, desafio2, desafio3). O usuário, ao clicar no desafio escolhido, tem a visão da questão com as opções de resposta no formato teste. Ao clicar na opção desejada, o usuário pode checar se a sua resposta está correta, clicando no botão Verificar Resposta (Figura 11.3).

78

Adaní Cusin Sacilotti, Carlos Eduardo Schuster e Kelly Sabará

Figura 11.3 - Nível de dificuldade fácil, primeiro desafio

Se a resposta estiver correta, é exibida uma mensagem de Resposta Correta e, uma breve explicação sobre a resolução (Figura 11.4). Se a reposta estiver errada, será exibida uma mensagem alertando o usuário.

79

Coletânea de Aplicativos para Windows Phone

Figura 11.4 – Verificar Resposta do primeiro desafio

DesenvolvimentoA aplicação foi desenvolvida para a plataforma Windows Phone

e utilizado, para isso, o Silverlight para Windows Phone.

Devido às dimensões reduzidas da tela de um smartphone, em algumas páginas que apresentavam textos longos, foi utilizado um controle de rolagem vertical de tela. No trecho de programa a seguir, podemos observar a implementação VerticalScrollBarVisibility em um ScrollViewer, dentro da página referente a questão de texto longo, onde o elemento utilizado é o StackPanel para organizar as linhas.

<StackPanel x:Name=”ContentPanel” Grid.Row=”1” Margin=”12,0,12,0”> <ScrollViewer MaxHeight=”600” VerticalScrollBarVisibility=”Visible”><StackPanel>

80

Adaní Cusin Sacilotti, Carlos Eduardo Schuster e Kelly Sabará

Após desenvolver o layout da página principal, vamos definir a classe que irá definir o nível de dificuldade e a questão escolhida para responder:

public partial class niveis: PhoneApplicationPage{ public niveis() { InitializeComponent(); }

private void StackPanel_Tap(object sender, GestureEventArgs e) { if (sender == f1) NavigationService.Navigate(new Uri(“/desafios/f1.xaml”, UriKind.Relative)); if (sender == f2) NavigationService.Navigate(new Uri(“/desafios/f2.xaml”, UriKind.Relative)); if (sender == f3) NavigationService.Navigate(new Uri(“/desafios/f3.xaml”, UriKind.Relative)); if (sender == m1) NavigationService.Navigate(new Uri(“/desafios/m1.xaml”, UriKind.Relative)); if (sender == m2) NavigationService.Navigate(new Uri(“/desafios/m2.xaml”, UriKind.Relative)); if (sender == m3) NavigationService.Navigate(new Uri(“/desafios/m3.xaml”, UriKind.Relative)); if (sender == d1) NavigationService.Navigate(new Uri(“/desafios/d1.xaml”, UriKind.Relative)); if (sender == d2) NavigationService.Navigate(new Uri(“/desafios/d2.xaml”, UriKind.Relative)); if (sender == d3) NavigationService.Navigate(new Uri(“/desafios/d3.xaml”, UriKind.Relative)); }}

Outra classe que foi desenvolvida, de acordo com o desafio escolhido, checa a opção de resposta selecionada e exibe mensagem ao usuário.

81

Coletânea de Aplicativos para Windows Phone

public partial class d1 : PhoneApplicationPage{ public d1() { InitializeComponent(); } private void btnResposta_Click(object sender, RoutedEventArgs e) { int indice = -1; for (int i = 0; i < stackradios.Children.Count; i++) { RadioButton rb = stackradios.Children.ElementAt(i) as RadioButton; if (rb.IsChecked == true) indice = i; } if (indice == 0) { txtCertoErrado.Text = “Resposta Correta”; txtResp.Text = “A sequência correta é: Rafael, Jorge, Anderson, Cláudio e Humberto”; txtResp1.Text = “”; } else { txtCertoErrado.Text = “Resposta Incorreta”; txtResp.Text = “”; txtResp1.Text = “Tente Novamente”; } }}

Na MainPage será carregada a página com os níveis de dificuldade dos desafios de lógica.

82

Adaní Cusin Sacilotti, Carlos Eduardo Schuster e Kelly Sabará

public partial class MainPage : PhoneApplicationPage{ // Constructor public MainPage() { InitializeComponent(); }

private void bt1_Click(object sender, RoutedEventArgs e) { NavigationService.Navigate(new Uri(“/niveis.xaml”, UriKind.Relative)); }}

Considerações FinaisA aplicação consiste em uma versão bem simples de testes

de lógica encontrados em livros e revistas de lógica, olimpíadas de matemática e concursos públicos. Apresenta como principais características, a possibilidade de customização de vários temas e questões como também a seleção de diferentes níveis de dificuldades, que possam ser implementados.

Após o desenvolvimento a aplicação foi submetida e aprovada para publicação no Windows Phone Marketplace, estando disponível para download no endereço http://www.windowsphone.com/pt-br/store/app/desafios/1f6d3254-b2bb-40b9-957e-f175c7cad167 .

Melhorias futuras na aplicação consistem em realizar a randomização de questões, temas e níveis de dificuldade.

Referências BibliográficasMicrosoft. Windows Phone Dev Center. Disponível em <http://dev.windowsphone.com/en-us>. Acesso em 15 jun. 2013.

83

Coletânea de Aplicativos para Windows Phone

Profa. Ms. Adaní Cusin SacilottiProf. Ms. Carlos Eduardo Schuster

Kelly Sabará

Introdução O objetivo deste aplicativo é auxiliar as pessoas com diabetes,

em especial a Diabetes Mellitus Tipo 1 (DM1) - insulino dependentes, e que seguem a dieta baseada na contagem de carboidratos (CHO) ingeridos. Basicamente o aplicativo funciona como uma calculadora especificamente projetada para calcular a quantidade de unidades de insulina que deve ser aplicada de acordo com a quantidade de CHO ingerida pela pessoa com diabetes.

Resumidamente, o dia-a-dia de um diabético (DM1) que utiliza a técnica de contagem de carboidratos é, antes de cada refeição do dia, 1) realizar a medição de sua glicemia de jejum por meio de dispositivo próprio; 2) alimentar-se, tomando o cuidado de verificar a quantidade de carboidratos de cada alimento ou bebida; 3) transformar essa quantidade de carboidratos em valor glicêmico, pois estes se transformarão em glicose no corpo; 4) somar com a glicemia medida antes dessa refeição; 5) subtrair este valor da glicemia final desejada e 6) converter este resultado em unidades de insulina a ser aplicada em seguida. Lembramos que esta é uma das técnicas comuns, existem outras com maior ou menor variação.

Projeto O aplicativo pode ser dividido em 5 módulos principais:

Figura 12.1 – Módulos do Aplicativo

Por se tratar de um aplicativo que lida com a saúde das pessoas a primeira preocupação é alertar o usuário a respeito de seu uso em

12. Diabetes Calculator

84

Adaní Cusin Sacilotti, Carlos Eduardo Schuster e Kelly Sabará

relação às indicações médicas, portanto, a primeira vez que o aplicativo é iniciado, a seguinte mensagem aparece: “O uso deste aplicativo não substitui em hipótese alguma as orientações de seu médico, trata-se apenas de uma ferramenta que automatiza o processo matemático que envolve a técnica de contagem de carboidratos. Consulte seu médico antes de utilizar este aplicativo”, juntamente com sua tradução para o inglês: “Take careful: not in any way replace your doctor orientation, it’s just a system that automates the mathematical process from Carb Counting technique. Consult your doctor before using this aplication.”.

O Módulo Configuração consiste no cadastro e armazenamento de 4 variáveis: 1) a Razão Insulina UI / CHO que significa quantas gramas de carboidrato são reduzidas aplicando-se uma unidade de insulina rápida. 2) o Fator de Sensibilidade nos informa quanto uma unidade de insulina rápida ou ultrarrápida reduz a glicemia. 3) a Meta Glicêmica Mínima indica o mínimo valor de glicemia aceitável e 4) a Meta Glicêmica Ideal corresponde ao valor máximo desejável. Lembrando que tais variáveis devem provir de orientação médica. A Figura 12.2 resume as 4 variáveis com alguns valores comumente utilizados.

Figura 12.2 – Variáveis necessárias para o cálculo

O Módulo Calculadora permite que o usuário insira até 8 valores diferentes de quantidades em gramas de carboidratos ingeridos. Supostamente o usuário poderia então lançar os valores de até 8 alimentos diferentes, como por exemplo, a quantidade de CHO de um suco de laranja, de duas colheres de arroz, uma colher de farofa temperada e uma colher de feijão, resultando 4 valores diferentes. O sistema fará a somatória e a exibirá.

85

Coletânea de Aplicativos para Windows Phone

Além da possibilidade de inserção dos carboidratos ingeridos o usuário poderá inserir o valor atual de sua glicemia em mg/dl.

O aplicativo, de posse do valor da glicemia e quantidades de CHO inseridos e, de acordo com os parâmetros registrados no módulo “Configuração”, poderá calcular a quantidade de insulina a ser aplicada. Como normalmente as unidades de insulinas são números inteiros, o aplicativo deverá exibir o valor inteiro mais próximo acima e abaixo do resultado e respectivo valor glicêmico final. Figura 12.3 ilustra o cálculo.

Figura 12.3 – Cálculos Realizados

O Módulo Regra de 3 é útil quando consumimos alimentos ou bebidas cuja informação nutricional não informa o valor total de carboidratos do produto ou quando é consumido apenas uma parte do mesmo. Para exemplificar, vamos supor que um “pacote de salgadinho” de 55g informa que a cada 25g consumidas contém 14g de carboidrato, logo um cálculo simples de regra de 3 deve ser realizado para se calcular o total de carboidratos do pacote todo, supondo o consumo total do mesmo. Este valor calculado pode ser transportado para um dos campos de consumo de carboidrato do módulo calculadora.

86

Adaní Cusin Sacilotti, Carlos Eduardo Schuster e Kelly Sabará

O Módulo Ajuda tem a intenção apenas de esclarecer e exemplificar os módulos citados anteriormente para que não fiquem dúvidas em como proceder em relação à entrada dos dados e forma de cálculo.

O Módulo Idioma permite alternar todo o aplicativo para o idioma Inglês ou Português. Optou-se pela interface também em inglês para que o aplicativo possa abranger um público maior.

DesenvolvimentoEste aplicativo foi desenvolvido especificamente para o

dispositivo Windows Phone OS 7.1 utilizando-se a IDE Microsoft Visual Studio 2010 Express juntamente com Microsoft Expression Blend 4.

Um dos desafios deste aplicativo seria em como proceder quanto à tradução para o idioma inglês. Como o sistema não é considerado muito grande e complexo optou-se por, após finalizado a versão para publicação, criar uma cópia exata do sistema em uma pasta específica denominada “english” e em cada interface trocar as palavras do português para o inglês, incluindo o módulo de ajuda.

Figura 12.4 – Pasta ‘english’ contendo o sistema traduzido para o idioma inglês

87

Coletânea de Aplicativos para Windows Phone

A primeira vez que o aplicativo é executado o usuário escolhe o idioma, imediatamente uma variável é salva como IsolatedStorage, assim, sempre que executar o aplicativo o idioma selecionado será o padrão. Em seguida é realizado o redirecionamento para a página principal do idioma selecionado.

private void ptVersion(object sender, System.Windows.Input.GestureEventArgs e){ saveText(“idioma”, “pt”); NavigationService.Navigate(new Uri(string.Format(“/MainPage1.xaml”), UriKind.Relative));}

private void enVersion(object sender, System.Windows.Input.GestureEventArgs e){ saveText(“idioma”, “en”); NavigationService.Navigate(new Uri(string.Format(“/english/MainPage_en.xaml”), UriKind.Relative));}

Figura 12.5 – Tela inicial de escolha do idioma

Uma vez selecionado o idioma nesta tela inicial, ela não mais abrirá. O aplicativo redireciona para a tela inicial de um dos dois idiomas.

88

Adaní Cusin Sacilotti, Carlos Eduardo Schuster e Kelly Sabará

Para tal verificação inicial no code-behind de App.xaml acrescentou-se a verificação do idioma escolhido.

void RootFrame_Navigating(object sender, NavigatingCancelEventArgs e){ if (e.Uri.ToString().Contains(“/MainPage.xaml”) != true) return; e.Cancel = true; RootFrame.Dispatcher.BeginInvoke(delegate { string text; loadText(“idioma”, out text); if (text == “pt”) RootFrame.Navigate(new Uri(“/MainPage1.xaml”, UriKind.Relative)); if (text == “en”) RootFrame.Navigate(new Uri(“/english/MainPage_en.xaml”, UriKind.Relative)); if (text != “pt” && text != “en”) RootFrame.Navigate(new Uri(“/entrada.xaml”, UriKind.Relative)); });}

No Módulo Calculadora, todos os campos são possuem o seu InputScope setado para “Number”. Ainda assim foi necessário uma rotina para impedir o uso do caracter “.” (ponto) para inserção de casas decimais. Para tal criou-se um método para cada campo que faz a verificação dos caracteres pressionados e se for um “ponto” o mesmo será trocado por um texto de tamanho zero.

89

Coletânea de Aplicativos para Windows Phone

Figura 12.6 – Tela da calculadora

private void KeyUp(object sender, System.Windows.Input. KeyEventArgs e){ TextBox txt = (TextBox)sender; if (txt.Text.Contains(‘.’)) { txt.Text = txt.Text.Replace(“.”, “”); txt.SelectionStart = txt.Text.Length; }}

Considerações FinaisNormalmente no cotidiano de um diabético infantil,

principalmente, os cuidados em relação à dieta baseada na contagem de carboidratos ocorrem dentro de sua casa, com a supervisão de seus pais que utilizam, normalmente, uma calculadora para auxiliar nos cálculos. Quando não se está em casa e, principalmente quando não há a calculadora disponível, o uso do aplicativo se torna muito prático.

Figura 12.7 – Ícone e Avaliação do Aplicativo

90

Adaní Cusin Sacilotti, Carlos Eduardo Schuster e Kelly Sabará

Este aplicativo está disponível no Windows Phone Marketplace, pelo endereço http://www.windowsphone.com/pt-br/store/app/diabetes-calculator/5c4f803a-8965-42ad-a86d-99968f8a1e92. Pode-se também digitar a palavra “diabetes” no campo de busca por aplicativos do site para retornar o aplicativo. Até o momento este sistema tem aparecido como um dos primeiros em relação à relevância de procura. Isto demonstra a necessidade e até mesmo a oportunidade de se publicar mais apps em relação ao assunto.

Futuras implementações podem ser realizadas tais como o registro diário das medições e consumo de carboidratos.

Referências BibliográficasMicrosoft. Windows Phone Dev Center. Disponível em <http://dev.windowsphone.com/en-us>. Acesso em 10.mar.2013.

91

Coletânea de Aplicativos para Windows Phone

João Henrique Felício Barreto

Introdução A proposta deste aplicativo é o desenvolvimento de um

aplicativo para o gerenciamento de combustível. O conceito básico consiste em selecionar a opção desejada: verificar combustível, verificar consumo ou fazer histórico e, posteriormente, fazer os cálculos ou as anotações segundo o parecer do usuário.

Projeto O projeto será baseado em quatro “paginas”, sendo elas

o “Menu” que será a pagina principal; “Verificar”, onde ocorrera o calculo referente ao melhor combustível a ser abastecido, considerando seu custo/beneficio; “Consumo”, onde será feito o calculo do consumo do carro a partir da quantidade de litros pela distancia percorrida; “Dados”, onde será dada ao usuário a opção de fazer um histórico dos dados dos abastecimentos realizados. Portanto, estará dividida em duas por uma pagina “Pivot”. Sendo assim, uma será destinada para o preenchimento dos dados e a outra para o salvamento dos mesmos, assim como na Figura 13.1.

13. FuelManager

92

João Henrique Felício Barreto

Figura 13.1 - Estrutura do Aplicativo

DesenvolvimentoA aplicação foi desenvolvida para a plataforma Windows Phone

e utilizando, para isso, o Silverlight para Windows Phone.

Na pagina principal, foi utilizado o “Windows Phone Application” para criar o menu. No código a seguir, são definidas as configurações dos elementos contidos no “TitlePanel”, ou seja, o topo da página.

<!--TitlePanel contains the name of the application and page title--><StackPanel x:Name=”TitlePanel” Grid.Row=”0” Margin=”12,17,0,28” Background=”{x:Null}”> <TextBlock x:Name=”ApplicationTitle” Text=”Fuel Manager” Style=”{StaticResource PhoneTextNormalStyle}”/> <TextBlock x:Name=”PageTitle” Text=”Menu” Margin=”9,-7,0,0” Style=”{StaticResource PhoneTextTitle1Style}” Foreground=”White” /></StackPanel>

93

Coletânea de Aplicativos para Windows Phone

Aqui, se inicia a parte de organização da página. Nela existem dois “StackPanel” onde podemos formatar melhor a pagina e um “Grid.Background” onde é definida a imagem de fundo do aplicativo.

<!--ContentPanel - place additional content here--><StackPanel x:Name=”ContentPanel” Grid.Row=”1” Margin=”12,0,12,0”> <StackPanel.Background> <ImageBrush/> </StackPanel.Background></StackPanel><StackPanel Orientation=”Vertical” VerticalAlignment=”Center” Margin=”12,50,12,297” Grid.Row=”1”> <Button Name=”btn1” Content=”Vantagem” Width=”250” Click=”btn1_Click” /> <Button Name=”btn4” Content=”Consumo” Width=”250” Click=”btn4_Click”/> <Button Name=”btn3” Content=”Dados” Width=”250” Click=”btn3_Click” /></StackPanel><Grid.Background> <ImageBrush ImageSource=”/App1;component/road.jpg” Stretch=”UniformToFill” /></Grid.Background>

O resultado final da página principal, que pode ser observado na Figura 13.2, irá consistir em um Windows Form Application contendo três botões.

94

João Henrique Felício Barreto

Figura 13.2 - Resultado Final

Para cada botão, é necessário fazer uma referencia para a página desejada dentro do evento “Click” do respectivo botão. Isso pode ser feito através do método Navigate disponível na classe NavigationService. Para chegar ao evento do botão pode ser usado a tecla de atalho F7 ou clique com o botão direito do mouse em Click=”btn1_Click” e selecione “Navigate to event handler”.

private void btn1_Click(object sender, RoutedEventArgs e){ NavigationService.Navigate(new Uri(“/Verificar.xaml”, UriKind.Relative));}

Após isso, será desenvolvida a página “Verificar”, onde será realizado o cálculo do combustível mais vantajoso. Para isso, cria-se outro Windows Form Application, onde mudaremos apenas o ContentPanel. As configurações do TitlePanel são as mesmas.

Nesta página serão criados alguns “TextBlock”, para identificação, organização e resposta, e dois “TextBox” para a entrada

95

Coletânea de Aplicativos para Windows Phone

de dados. Alem disso, serão criados ainda dois botões, um para apagar os valores e outro para realizar o cálculo.

<StackPanel x:Name=”ContentPanel” Grid.Row=”1” Margin=”12,0,12,0”> <!—TextBlock e TextBox 1 --> <TextBlock Text=”Informe o preço do álcool:” HorizontalAlignment=”Center”/> <StackPanel Orientation=”Horizontal” HorizontalAlignment=”Center”> <TextBlock Text=”R$” FontSize=”40”/> <TextBox Name=”Valor1” Width=”200” InputScope=”Number” TextChanged=”Valor2_TextChanged”/> </StackPanel> <!—TextBlock e TextBox 2 --> <TextBlock Text=”Informe o preço da gasolina:” HorizontalAlignment=”Center”/> <StackPanel Orientation=”Horizontal” HorizontalAlignment=”Center”> <TextBlock Text=”R$” FontSize=”40”/> <TextBox Name=”Valor2” Width=”200” InputScope=”Number” TextChanged=”Valor2_TextChanged”/> </StackPanel> <!—Botoes--> <StackPanel Orientation=”Horizontal” HorizontalAlignment=”Center”> <Button Name=”btn3” Width=”200” Content=”Novo” Click=”btn3_Click” IsEnabled=”False”/> <Button Name=”btn2” Width=”200” Content=”Resultado” Click=”btn2_Click” IsEnabled=”False”/> </StackPanel> <!—Apresentacao do resultado --> <TextBlock Name=”txtresultado” Text = “É melhor colocar Álcool” HorizontalAlignment=”Center” Foreground=”#FF1AEA20” FontSize=”32” OpacityMask=”#FFF2C0C0” Margin=”0,60,0,0” Visibility=”Collapsed”/> <TextBlock Name=”txtresultado2” HorizontalAlignment=”Center” Foreground=”#FFF5E516” FontSize=”32” OpacityMask=”#FFDBCDCD” Margin=”0,60,0,0”

96

João Henrique Felício Barreto

Text = “É melhor colocar Gasolina” Visibility=”Collapsed”/></StackPanel><Grid.Background> <ImageBrush ImageSource=”/App1;component/Images/road.png” Stretch=”UniformToFill” /></Grid.Background>

Agora, será desenvolvida a ação dos botões, “Novo” e “Resultado”, dentro do evento “Click” dos respectivos botões. O cálculo é feito dividindo o preço do álcool pelo da gasolina. Se o resultado for igual ou maior que 0,70 o álcool é mais vantajoso, senão é a gasolina.

private void btn2_Click(object sender, RoutedEventArgs e){ double X = Convert.ToDouble(Valor1.Text); double Y = Convert.ToDouble(Valor2.Text); double Z = X / Y;

if (Z <= 0.7) { txtresultado.Visibility = Visibility.Visible; txtresultado2.Visibility = Visibility.Collapsed; } else { txtresultado2.Visibility = Visibility.Visible; txtresultado.Visibility = Visibility.Collapsed; } btn3.IsEnabled = Valor1.Text.Length > 0 && Valor2.Text.Length > 0;}

No código acima, primeiramente, é preciso converter os valores informados para “double]” e depois realizar o cálculo. A apresentação dos resultados é feita através dos “txtresultado” e “txtresultado2” que são os nomes dos “TextBlock” definidos na pagina Verificar.xaml. A propriedade “Visibility” controla qual estará visível dependendo do resultado da condição. Na Figura 13.3, o resultado após o termino do desenvolvimento desta função do aplicativo.

97

Coletânea de Aplicativos para Windows Phone

Figura 13.3 - Resultado da pagina Verificar

O próximo passo é criar a função de verificação do consumo do carro. Então, cria-se outra página Windows Form Application e adicionamos os Texblock e Textbox para o design da interface e entrada de dados e adicionamos também os botões para o cálculo do resultado e limpar os textos, assim como anteriormente.

<TextBlock Margin=”0,50,0,0” Text=”Informe a quantidade de litros:” HorizontalAlignment=”Center”/><TextBox Name=”txtLitros” InputScope=”Number” Width=”200” TextChanged=”txtQuant_TextChanged” /><TextBlock Text=”Quantidade de Km rodados:” HorizontalAlignment=”Center”/><TextBox Name=”txtQuant” InputScope=”Number” Width=”200” TextChanged=”txtQuant_TextChanged”/><StackPanel Orientation=”Horizontal” HorizontalAlignment=”Center”> <Button Name=”btnVerificar” Content=”Verificar” Click=”btnVerificar_Click” Width=”200” IsEnabled=”False”/> <Button Name=”btnNovo” Content=”Novo” Click=”btnNovo_

98

João Henrique Felício Barreto

Click” Width=”200” IsEnabled=”False” /></StackPanel> <TextBlock Name=”txtresultado” FontSize=”32” Foreground=”#FFE6F803” /></StackPanel><Grid.Background> <ImageBrush ImageSource=”/App1;component/road.jpg” Stretch=”UniformToFill” /></Grid.Background>

Agora, novamente, devemos criar a ação dos botões. Para limpar, deve-se simplesmente preencher os campos com uma string “vazia”.

private void btnNovo_Click(object sender, RoutedEventArgs e){ txtLitros.Text = “”; txtQuant.Text = “”; txtresultado.Text = “”; btnNovo.IsEnabled = false;}

Para o botão de resultado, precisamos apenas dividir a quantidade de quilometros percorridos pela quantidade de litros abastecidos.

private void btnVerificar_Click(object sender, RoutedEventArgs e){ double Litros = Convert.ToDouble(txtLitros.Text); double km = Convert.ToDouble(txtQuant.Text); double consumo = km / Litros; double numeroRedondo = Math.Round(consumo,2); txtresultado.Text = “Media de consumo: “ + numeroRedondo + “Km/L”; btnNovo.IsEnabled = txtLitros.Text.Length > 0 && txtQuant.Text.Length > 0;}

99

Coletânea de Aplicativos para Windows Phone

No código acima, depois de converter as variáveis, é necessário limitar as casas decimais através do método Round da classe Math. Depois de apresentar o resultado e se os TextBox estiverem vazios, o botão irá ficar desabilitado através do IsEnabled. Na Figura 13.4, temos o resultado da página.

Figura 13.4 - Resultado da pagina Consumo

Por ultimo, será desenvolvida a página Dados. Nesta página, será utilizado outro recurso chamado Pivot. O Pivot é um controle de navegação que existe no Windows Phone que facilita o gerenciamento e exibição de dados para os usuários utilizando o toque e arraste para esquerda ou direita.

O item 1 do Pivot será destinado ao preenchimento das informações.

100

João Henrique Felício Barreto

<!--Pivot item one--><controls:PivotItem Header=”Dados”> <StackPanel> <TextBlock Text=”Data do Abastecimento” HorizontalAlignment=”Center”/> <toolkit:DatePicker x:Name=”datePicker” Value=””/> <TextBlock Text=”Horário” HorizontalAlignment=”Center”/> <toolkit:TimePicker x:Name=”timePicker” Value=””/> <TextBlock Name=”txtdatepicker”/> <StackPanel Orientation=”Horizontal”> <StackPanel HorizontalAlignment=”Center”> <TextBlock Text=”Litros” Margin=”75,0,0,0”/> <TextBox Name=”txtLitros” Width=”200” InputScope=”Number” /> </StackPanel> <StackPanel Margin=”20,0,0,0”> <TextBlock Text=”Valor Gasto” Margin=”90,0,0,0”/> <StackPanel Orientation=”Horizontal”> <TextBlock Text=”R$” Width=”32” FontSize=”30” Height=”40” /> <TextBox Name=”txtValorGasto” InputScope=”Number” Width =”200” Margin=”5,0,0,0”/> </StackPanel> </StackPanel> </StackPanel> <TextBlock Text=”KM na hora do abastecimento:” HorizontalAlignment=”Center”/> <TextBox Name=”txtKMabastecimento” Width=”200” InputScope=”Number”/> <Button Name=”btnSalvar” Content=”Criar novo Historico” Width=”400” Click=”btnSalvar_Click”/> <StackPanel Orientation=”Horizontal” HorizontalAlignment=”Center”> <Button Name=”btnEditar” Width=”200” Content=”Adicionar” Click=”Editar_Click”/> <Button Content=”Limpar” Height=”72” HorizontalAlignment=”Center” Name=”Apagar” VerticalAlignment=”Top” Width=”200” Click=”Apagar_Click”/> </StackPanel> </StackPanel></controls:PivotItem>

101

Coletânea de Aplicativos para Windows Phone

Nesta página foi adicionado um toolkit para a data e horário. Para ele funcionar é necessário primeiramente, baixar. Depois adicionar a referencia para o projeto e adicionar ainda o código a seguir no topo da pagina.

xmlns:toolkit=”clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit”

Agora, será feito a gravação e criação do histórico. O

armazenamento acontecerá no botão Criar novo histórico e para isto será usado o IsolatedStorage.

private void btnSalvar_Click(object sender, RoutedEventArgs e){ MessageBoxResult resultado = MessageBox.Show(“Deseja criar novo historico?”, “Mensagem”, MessageBoxButton.OKCancel); if (resultado == MessageBoxResult.Cancel) { return; } else { StreamResourceInfo streamResourceInfo = Application.GetResourceStream(new Uri(filePath, UriKind.Relative));

using (var myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication()) { string directoryName = System.IO.Path.GetDirectoryName(filePath); if (!string.IsNullOrEmpty(directoryName) && !myIsolatedStorage.DirectoryExists( directoryName)) { myIsolatedStorage.CreateDirectory( directoryName); }

102

João Henrique Felício Barreto

using (IsolatedStorageFileStream fileStream = myIsolatedStorage.OpenFile(filePath, System.IO.FileMode.Create, System.IO.FileAccess.Write)) { using (StreamWriter writer = new StreamWriter(fileStream)) { DateTime dt = Convert.ToDateTime(datePicker.Value); txtdatepicker.Text = dt.ToString(); string someTextData = “Data e Horario : “ + txtdatepicker.Text + “ Litros:” + txtLitros.Text + “L” + “ \n KM: “ + txtKMabastecimento.Text + “ Valor Gasto: R$ “ + txtValorGasto.Text; writer.WriteLine(someTextData); MessageBox.Show(“Novo historico criado com sucesso”, “Atenção”, MessageBoxButton.OK); } } } }}

O histórico será feito na pagina Pivot 2. Para isso, antes é necessário usar um método para verificar se um histórico já foi criado. Isto acontecerá ao clicar no botão Atualizar.

private void Ler_Click(object sender, RoutedEventArgs e){ txtLeituraArquivo.Text = string.Empty;

using (IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication()) { if (myIsolatedStorage.FileExists(filePath)) { using (IsolatedStorageFileStream fileStream = myIsolatedStorage.OpenFile(filePath, FileMode.Open,

103

Coletânea de Aplicativos para Windows Phone

FileAccess.Read)) { using (StreamReader reader = new StreamReader(fileStream)) { txtLeituraArquivo.Text = reader.ReadToEnd(); } } } else { MessageBox.Show(“Arquivo não encontrado”, “Atenção”, MessageBoxButton.OK); } }}

Para o botão Apagar, basta apenas preencher as variáveis como vazio. Assim como já realizado anteriormente. Por ultimo, mostrar os dados na pagina ao clicar no botão Adicionar.

private void Editar_Click(object sender, RoutedEventArgs e){ txtLeituraArquivo.Text = string.Empty; using (IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication()) { if (myIsolatedStorage.FileExists(filePath)) { using (IsolatedStorageFileStream fileStream = myIsolatedStorage.OpenFile(filePath, FileMode.Open, FileAccess.Write)) { using (StreamWriter writer = new StreamWriter(fileStream)) { DateTime dt = Convert.ToDateTime(datePicker.Value); txtdatepicker.Text = dt.ToString();

104

João Henrique Felício Barreto

string someTextData = “Data e Horario : “ + txtdatepicker.Text + “ Litros:” + txtLitros.Text + “L” + “ \n KM: “ + txtKMabastecimento.Text + “ Valor Gasto: R$ “ + txtValorGasto.Text; writer.BaseStream.Seek(0, SeekOrigin.End); writer.WriteLine(someTextData); writer.Close(); MessageBox.Show(“Arquivo salvo com sucesso”, “Atenção”, MessageBoxButton.OK); } } } else { MessageBox.Show(“Não existe arquivo para ser editado”, “Atenção”, MessageBoxButton.OK); } }}

Na Figura 13.5 temos o resultado da página ao final do processo de desenvolvimento.

105

Coletânea de Aplicativos para Windows Phone

Figura 13.5 - Resultado da página Dados

Considerações FinaisA aplicação consiste em um gerenciador de combustível e,

tem como principal característica, a possibilidade de criação de um histórico detalhado do abastecimento. No entanto, apresenta funções bastante úteis no dia-a-dia do usuário. O uso dos recursos Windows Form Application e principalmente o Pivot Control apresentam novas perspectivas em relação ao layout de aplicações, pois, apresentam soluções bastante eficazes no design de interfaces.

Após o desenvolvimento a aplicação foi submetida e aprovada para publicação no Windows Phone Marketplace, estando disponível para download no endereço http://www.windowsphone.com/pt-br/store/app/fuelmanager/45891be0-2555-4c3b-bf91-45e5689eb3ec

Esta é a segunda versão do aplicativo e está sujeita a melhorias futuras, como correção de texto e melhorias no seu design.

106

João Henrique Felício Barreto

Referências BibliográficasMicrosoft. Windows Phone Dev Center. Disponível em <http://dev.windowsphone.com/en-us>. Acesso em 20.jun.2013.

107

Coletânea de Aplicativos para Windows Phone

Prof. Ms. Benedito Cristiano Aparecido PetroniProf. Ms. Cláudio Luís Vieira Oliveira

Introdução A proposta deste aplicativo é o desenvolvimento de um jogo

de memória com elementos associativos. O conceito básico consiste em mostrar um determinado número de peças em relação ao nível de dificuldade selecionado e, após escondê-las, o usuário deverá clicar sobre as peças desejadas. Ao formar o par correto as peças ficarão visíveis, caso contrário, o par é escondido novamente.

Projeto O elemento principal da aplicação consiste em um conjunto de

peças, cada uma contendo um valor distinto, conforme o tema que foi escolhido pelo usuário. Estas peças terão o seu conteúdo exibido por padrão, de modo a permitir que o usuário consiga memoriza-las. O usuário a qualquer momento poderá iniciar um novo jogo, quando isso ocorrer o progresso atual do jogo será descartado, voltando ao início.

Os demais requisitos da aplicação estão relacionados ao número de peças, o qual irá determinar o nível de dificuldade, podendo ser 8, 16 ou 24 peças. Também deve ser permitido ao usuário habilitar ou não os efeitos sonoros e também realizar a troca do tema.

A aplicação também possui, conforme ilustrado na Figura 14.1, uma página para ajuste das configurações do jogo (Setup) e também outra página que exibe informações sobre o jogo e os autores (About).

14. Jogo da Memória

108

Benedito Petroni e Cláudio Oliveira

Figura 14.1 - O jogo

O nível de dificuldade do jogo também é determinado pela quantidade de PanoramaItem que serão exibidos, ou seja, no nível fácil serão mostradas 8 peças em apenas um PanoramaItem, conforme ilustrado na Figura 14.2:

Figura 14.2 - Nível de dificuldade fácil

No nível médio temos dois PanoramaItem sendo exibidos, conforme pode ser observado na Figura 14.3. No nível difícil os três

109

Coletânea de Aplicativos para Windows Phone

PanoramaItem são exibidos.

Figura 14.3 - Nível de dificuldade médio

O diagrama de classes, mostrado na Figura 14.4, mostra como as páginas MainPage, About e Setup encontram-se implementadas. Além da classe Peca que tem a função de realizar a associação entre duas peças na área do jogo, a classe Tema carrega as informações das peças com base no tema que foi selecionado pelo usuário. O armazenamento das peças correspondentes a cada tema é realizado localmente.

Figura 14.4 - Diagrama de Classes

110

Benedito Petroni e Cláudio Oliveira

Cada par é armazenado considerando o valor de cada peça e as respectivas cores, sendo todos os elementos separados por ponto-e-vírgula, por exemplo:

Water;#00FF00;Glass;#00FF00;

A pontuação, na aplicação, é calculada com base no critério de que cada acerto irá adicionar 10 pontos e a cada erro subtrai 10 pontos. O jogo tem início com o usuário começando com zero ponto.

DesenvolvimentoA aplicação foi desenvolvida para a plataforma Windows Phone

e utilizando, para isso, o Silverlight para Windows Phone.Devido às dimensões reduzidas da tela de um smartphone, na

página principal, foi utilizado um controle do tipo Panorama de forma a conseguirmos maximizar a área da aplicação permitindo, desta forma, realizar a disposição das peças do jogo de modo a não ficarmos limitados exclusivamente à área física da tela. No trecho de programa a seguir, podemos observar a implementação de um PanoramaItem dentro da página MainPage.xaml, dentro desta elemento foi utilizado o StackPanel para organizar os botões em linhas e outro StackPanel com a propriedade Orientation igual a Horizontal para as colunas.

<controls:PanoramaItem Header=”first page”><!--Double line list with text wrapping--> <StackPanel> <StackPanel Orientation=”Horizontal”> <Button Name=”btnPeca00” Content=”1” Width=”215” Height=”85” Background=”Red” BorderThickness=”0” Click=”Jogar_Click” /> <Button Name=”btnPeca01” Content=”2” Width=”215” Background=”Red” BorderThickness=”0” Click=”Jogar_Click” /> </StackPanel> <StackPanel Orientation=”Horizontal”> <Button Name=”btnPeca02” Content=”3” Width=”215” Height=”85” Background=”Red” BorderThickness=”0” Click=”Jogar_Click” /> <Button Name=”btnPeca03” Content=”4” Width=”215”

111

Coletânea de Aplicativos para Windows Phone

Background=”Red” BorderThickness=”0” Click=”Jogar_Click” /> </StackPanel> <!-- Demais elementos a serem implementados--> </StackPanel></controls:PanoramaItem>

O resultado final da página principal, que pode ser observado na Figura 14.5 consiste em três PanoramaItem contendo, cada um, 8 botões. A primeiro PanoramaItem possui também os botões New, Start, Setup e About além de um espaço reservado para publicidade no rodapé.

Figura 14.5 - Resultado final

Uma nova página da aplicação pode ser aberta através do método Navigate disponível na classe NavigationService. A seguir podemos observar seu uso no desenvolvimento do evento click do botão About:

private void btnAbout_Click(object sender, RoutedEventArgs e){ NavigationService.Navigate(new Uri(“/About.xaml”, UriKind.Relative));}

112

Benedito Petroni e Cláudio Oliveira

Após desenvolver o layout da página principal, vamos definir a classe Peca que define o conteúdo dos pares, a respectiva posição na área do jogo e também se o usuário já descobriu o local do par:

public class Peca{ public int Posicao1 { set; get; } public string Conteudo1 { set; get; } public int Posicao2 { set; get; } public string Conteudo2 { set; get; } public bool Acerto { set; get; }}

A outra classe desenvolvida obtém as peças associadas a determinado tema. O método criar armazena em um IsolatedStorage um conjunto de dados pré-definidos exemplificando um tema.

public class Tema{ private const string fileName = “ThemeData.txt”; private const string folderName = “MemoryGame”; private string filePath = System.IO.Path.Combine(folderName, fileName);

public void Criar() { StreamResourceInfo streamResourceInfo = Application.GetResourceStream(new Uri(filePath, UriKind.Relative)); using (var myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication()) { string directoryName = System.IO.Path.GetDirectoryName(filePath); if (!string.IsNullOrEmpty(directoryName) && !myIsolatedStorage.DirectoryExists( directoryName)) { myIsolatedStorage.CreateDirectory(

113

Coletânea de Aplicativos para Windows Phone

directoryName); } using (IsolatedStorageFileStream fileStream = myIsolatedStorage.OpenFile(filePath, FileMode.Create, FileAccess.Write)) { using (StreamWriter writer = new StreamWriter(fileStream)) { string someTextData = “Water;#00FF00;Glass;#00FF00;” + “Penguin;#00FF00;Antarctica;#00FF00;” + “Cat;#00FF00;Dog;#00FF00;” + “Feather;#00FF00;Bird;#00FF00;” + “Student;#00FF00;Teacher;#00FF00;” + “Mathematics ;#00FF00;Science;#00FF00;” + “Relativity;#00FF00;Einstein;#00FF00;” + “Catholic;#00FF00;Francisco;#00FF00”; writer.WriteLine(someTextData); } } } }

public string Ler() { string conteudo = string.Empty; using (IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication()) { if (myIsolatedStorage.FileExists(filePath)) { using (IsolatedStorageFileStream fileStream = myIsolatedStorage.OpenFile(filePath, FileMode.Open, FileAccess.Read)) { using (StreamReader reader = new StreamReader(fileStream)) { conteudo = reader.ReadToEnd(); }

114

Benedito Petroni e Cláudio Oliveira

} } else { MessageBox.Show(“O arquivo não existe!”, “Atenção”, MessageBoxButton.OK); } } return (conteudo); }}

O método Ler, desta mesma classe, deve retornar o conteúdo armazenado no IsolatedStorage em uma string. Em seguida, passamos para o desenvolvimento da MainPage. O primeiro passo consiste em definir os atributos desta classe:

private Peca[] peca;private bool iniciar = false;private bool verificar = false;private bool efeitoSom = true;private int[] par = { -1, -1 };

Agora no método construtor da MainPage a classe Tema deve ser instanciada. O método Carregar armazena o conteúdo no vetor de objetos da classe Peca enquanto, o método Embaralhar, deve misturar as peças na área do jogo.

public MainPage(){ InitializeComponent(); DataContext = App.ViewModel; this.Loaded += new RoutedEventHandler(MainPage_Loaded); Tema tema = new Tema(); tema.Criar(); Carregar(tema.Ler()); Embaralhar();}

115

Coletânea de Aplicativos para Windows Phone

O botão Start deve, através do método AtualizarPecas, esconder as peças de modo a dar início ao jogo:

private void btnStart_Click(object sender, RoutedEventArgs e){ AtualizarPecas(); verificar = false; iniciar = true;}

Quando o usuário pressiona um dos botões que corresponde a uma das peças, o atributo verificar define se é a primeira peça do par que o usuário está exibindo ou não. Quando é a segunda peça que está sendo exibida, deve ser realizada a verificação se houve o acerto do par, neste caso, as peças devem ficar visíveis, caso contrário, devem ser escondidas novamente.

private void Jogar_Click(object sender, RoutedEventArgs e){ if (iniciar) { Button btnTmpPeca = (Button)sender; btnTmpPeca.Foreground = new SolidColorBrush(Colors.White); if (!verificar) RegistrarJogada(0, btnTmpPeca); else { RegistrarJogada(1, btnTmpPeca); VerificarJogada(); iniciar = !VerificarFimJogo(); } verificar = !verificar; } else MessageBox.Show(“Please, press the START Button!”, “Attention”, MessageBoxButton.OK);}

116

Benedito Petroni e Cláudio Oliveira

O método VerificarFimJogo é chamado sempre após a verificação do par escolhido pelo usuário e irá indicar se existem ou não peças a serem exibidas.

Considerações FinaisA aplicação consiste em uma versão do popular jogo de memória

e, apresenta como principais características, a possibilidade de customização de vários temas e também a seleção de diferentes níveis de dificuldade. O uso do recurso Panorama View apresenta novas perspectivas em relação ao layout de aplicações, pois, apresenta uma solução bastante funcional em relação as limitações de tamanho de tela existentes nos smartphones.

Após o desenvolvimento a aplicação foi submetida e aprovada para publicação no Windows Phone Marketplace, estando disponível para download no endereço http://www.windowsphone.com/pt-br/store/app/memory-game/5d57d42d-1884-423a-9719-9f89c64ed251

Melhorias futuras na aplicação consistem em realizar a atualização automática do conjunto de temas através do acesso a rede. Outra melhoria prevista é a utilização de imagens nas peças.

Referências BibliográficasMicrosoft. Windows Phone Dev Center. Disponível em <http://dev.windowsphone.com/en-us>. Acesso em 6.jun.2013.

117

Coletânea de Aplicativos para Windows Phone

Reginaldo Bernardo Antonietti

Introdução A proposta deste aplicativo móvel, chamado “RescisãoCLT”, é dar

ao trabalhador brasileiro a chance de saber antecipadamente, quanto irá receber de seus direitos trabalhista, em uma eventual rescisão de contrato de trabalho. O aplicativo na sua versão 1.x é voltado a pessoas físicas e fornece além dos cálculos, acesso as tabelas oficiais do Brasil do INSS, IR (Imposto de Renda Pessoa Física) e Seguro-Desemprego. Esta APP tem seus cálculos centrados na CLT Brasileira, ou seja, a Consolidação das Leis do Trabalho 2013.

Projeto O aplicativo nasceu dentro do curso de Windows Phone

ministrado pela FATEC Jundiaí (Faculdade de Tecnologia de Jundiaí) em parceria com o INdT (Insituto Nokia de Tecnologia) em abril de 2013. Sendo assim, este aplicativo foi desenvolvido para dispositivos móveis que executam o Sistema Operacional Windows Phone 7.1 em diante. O curso foi ministrado pelo excelente instrutor Jackson da Nokia, que não deixou margem de dúvidas ao seu conhecimento e também ao passar para nós, alunos.

Durante o trajeto do curso, cada aluno tinha que desenvolver algum aplicativo, demonstrando com isso o aprendizado obtido e obviamente fazendo jus ao certificado de conclusão do mesmo. Este meu aplicativo obviamente não teve sua conclusão completa dentro do curso, pois acabou se tornando um projeto que demorou aproximadamente quase dois meses após o fim do mesmo, devido às inúmeras rotinas de cálculos que são necessárias para se chegar ao valor bruto e líquido do valor da rescisão a receber, bem os descontos por lei. Também as inúmeras telas e homologação por parte de um Contador profissional da área de Recursos Humanos (RH) foram

15. RescisãoCLT

118

Reginaldo Bernardo Antonietti

necessárias, causando a demora na publicação. Ufa, confesso que não imaginava que minha ideia iria se estender tanto.

A aplicação possui conforme ilustrado na Figura 15.1, a tela principal onde se pode ver além do título, três botões que dão acesso as telas de cálculo, as tabelas INSS, IR e Seguro-Desemprego e aos créditos da APP. Nota-se também um aviso dizendo que a APP é de uso exclusivo para a CLT do Brasil e o ano vigente.

Figura 15.1 – Tela Principal

Ao clicar no botão “Mensalista” e estando o dispositivo móvel configurado para a região do Brasil, a tela do “Cálculo Mensalista” abrirá para o devido cálculo da rescisão para trabalhadores que percebem salários fixos que podem ser MENSAIS, QUINZENAIS ou SEMANAIS, conforme a Figura 15.2:

119

Coletânea de Aplicativos para Windows Phone

Figura 15.2 – Tela de Cálculo para Salário Fixo

Excetuando os campos das HORAS EXTRAS, o resto é OBRIGATÓRIO. Após o preenchimento dos campos, dá-se um Tap (clique) no botão “Calcular” para que o aplicativo faça o cálculo da rescisão. Uma tela de “Resultados” conforme a Figura 15.3 se apresentará automaticamente após o cálculo concluído.

120

Reginaldo Bernardo Antonietti

Figura 15.3 – Resultado da Rescisão

Este aplicativo tem no botão “Calcular” seu principal evento. Segue um trecho do código como são realizados os cálculos após o usuário clicar no respectivo botão.

public void rb_Calcula_Rescisao_Click(object sender, RoutedEventArgs e){ // Inicializa as variáveis TOTALIZADORAS (Application.Current as App).v_valor_bruto = 0; (Application.Current as App).v_valor_liq = 0; . . .

// CONSISTÊNCIAS (Application.Current as App).v_ult_salario = Single.Parse(ed_UltSalario.Text);

121

Coletânea de Aplicativos para Windows Phone

(Application.Current as App).v_num_dependentes = byte.Parse(ed_NumDependentes.Text); (Application.Current as App).v_qtde_ferias_vencidas = byte.Parse(ed_NumFeriasVencidas.Text); (Application.Current as App).dt_admissao = String.Format(“{0:dd/MM/yyyy}”, datePicker1.Value); (Application.Current as App).dt_admissao = (Application.Current as App).dt_admissao.Substring( 0, 10); (Application.Current as App).dt_demissao = String.Format(“{0:dd/MM/yyyy}”, datePicker2.Value); (Application.Current as App).dt_demissao = (Application.Current as App).dt_demissao.Substring( 0, 10);

// Separa a DATA DE ADMISSÃO em dia, mês e ano (Application.Current as App).v_dia_admissao = Convert.ToInt16((Application.Current as App).dt_admissao.Substring(0, 2)); (Application.Current as App).v_mes_admissao = Convert.ToInt16((Application.Current as App).dt_admissao.Substring(3, 2)); (Application.Current as App).v_ano_admissao = Convert.ToInt16((Application.Current as App).dt_admissao.Substring(6, 4));

// Separa a DATA DE DEMISSÃO em dia, mês e ano (Application.Current as App).v_dia_demissao = Convert.ToInt16((Application.Current as App).dt_demissao.Substring(0, 2)); (Application.Current as App).v_mes_demissao = Convert.ToInt16((Application.Current as App).dt_demissao.Substring(3, 2)); (Application.Current as App).v_ano_demissao = Convert.ToInt16((Application.Current as App).dt_demissao.Substring(6, 4));

// ANOS TRABALHADOS para cálculo dos dias do AVISO // PRÉVIO que prevê 3 dias a mais a partir do 2º ano // de trabalho

122

Reginaldo Bernardo Antonietti

(Application.Current as App).v_anos_trabalhados = (Application.Current as App).v_ano_demissao – (Application.Current as App).v_ano_admissao;

// CÁLCULO DA RESCISÃO - MENSALISTA // SALDO DE SALÁRIO (dias trabalhados no mês da // rescisão) (Application.Current as App).v_saldo_salario = 0; (Application.Current as App).v_saldo_salario = ((Application.Current as App).v_ult_salario / 30) * (Application.Current as App).v_dia_demissao;

// HORAS EXTRAS (Se existirem) - Base 220 Horas // Mensais (Application.Current as App).v_total_horas_extras = 0;

// HORA EXTRA 50 % (Application.Current as App).v_hora_extra50 = 0; (Application.Current as App).v_qtde_Hr_Extras50 = 0; (Application.Current as App).v_total_hora_extra50 = 0;

if (cb_HoraExtra_50.IsChecked == true) { // Acha o valor da HORA EXTRA com 50% de acréscimo (Application.Current as App).v_hora_extra50 = (((Application.Current as App).v_ult_salario / 220) * 1.50);

// Valor TOTAL das HORAS EXTRAS trabalhadas (Application.Current as App).v_qtde_Hr_Extras50 = Convert.ToDouble(ed_Horas_50.Text); (Application.Current as App).v_total_hora_extra50 = (Application.Current as App).v_qtde_Hr_Extras50 * (Application.Current as App).v_hora_extra50;}

// HORA EXTRA 100 % (Application.Current as App).v_hora_extra100 = 0; (Application.Current as App).v_qtde_Hr_Extras100 = 0;

123

Coletânea de Aplicativos para Windows Phone

(Application.Current as App).v_total_hora_extra100 = 0;

if (cb_HoraExtra_100.IsChecked == true) { // Acha o valor da HORA EXTRA com 100% de acréscimo (Application.Current as App).v_hora_extra100 = (((Application.Current as App).v_ult_salario / 220) * 2.00);

// Valor TOTAL das HORAS EXTRAS trabalhadas (Application.Current as App).v_qtde_Hr_Extras100 = Convert.ToDouble(ed_Horas_100.Text); (Application.Current as App).v_total_hora_extra100 = (Application.Current as App).v_qtde_Hr_Extras100 * (Application.Current as App).v_hora_extra100; }

// Soma das HORAS EXTRAS trabalhadas (Application.Current as App).v_total_horas_extras = (Application.Current as App).v_total_hora_extra50 + (Application.Current as App).v_total_hora_extra100;...}

DesenvolvimentoA aplicação foi desenvolvida para a plataforma Windows Phone

como já mencionado e utilizando, portanto, o Silverlight para Windows Phone.

Devido às dimensões reduzidas da tela de um smartphone, procurei arranjar os componentes da melhor forma que fosse possível sua operação bem como sua leitura por parte dos usuários. Também foi dada uma atenção no que diz respeito a usar o mínimo de componentes possível para que a tela não ficasse sobrecarregada bem como a disposição em uma ordem natural na entrada de dados.

124

Reginaldo Bernardo Antonietti

Considerações FinaisA aplicação consiste em dar uma ferramenta para o usuário

que está debaixo das regras da CLT do Brasil. Seja ele trabalhador, profissionais da área de RH, sindicatos, advogados trabalhistas ou quem mais precisar do cálculo de uma rescisão de contrato de trabalho CLT. É um aplicativo que não precisou de recursos avançados de animação e imagem, mas que em uma versão mais completa poderá vir a utilizar.

Outros recursos tais como listboxes e gráficos de apresentação de resultados serão com o tempo acrescido, tornando mais rico a apresentação do cálculo e mais atraente para sua leitura. O uso do recurso Panorama View em futuras versões será utilizado para dar novas perspectivas em relação ao layout de aplicações, pois, apresenta uma solução bastante funcional em relação às limitações de tamanho de tela existentes nos smartphones.

Após o desenvolvimento a aplicação foi submetida e aprovada para publicação no Windows Phone Marketplace, estando disponível para download no endereço http://www.windowsphone.com/pt-br/store/app/rescis%C3%A3oclt/4ad1ea8a-f518-4ed0-aea5-6932ffc142b7

Melhorias futuras no aplicativo podem consistir, por exemplo, em realizar o cálculo baseado nos outros tipos de dispensa do trabalho e também para cálculo de trabalhadores horistas.

Referências BibliográficasMicrosoft. Windows Phone Dev Center. Disponível em <http://dev.windowsphone.com/en-us>. Acesso em 17.ago.2013.

125

Coletânea de Aplicativos para Windows Phone

Profa. Ms. Luciana Ferreira Baptista

Introdução A proposta deste aplicativo é a apresentação da tabuada de um

número. O conceito básico consiste em solicitar o número e apresentar o resultado da tabuada desse número, iniciando-a do número 1 até o número 10.

Projeto O elemento principal da aplicação consiste em solicitar um

número ao usuário e apresentar a tabuada desse número. A aplicação inicia com a escolha do idioma: inglês (default),

português ou espanhol, o qual será utilizado para mensagens que poderão ser apresentadas ao usuário (Figura 16.1).

Figura 16.1 – Tela inicial: escolha do idioma

Ao clicar no botão Continue é apresentada a tela para o usuário digitar o número que deseja visualizar a tabuada (Figura 16.2).

16. Tabuada

126

Luciana Ferreira Baptista

Figura 16.2 – Tela para digitação do número para o cálculo de sua tabuada

O resultado da tabuada é apresentado logo abaixo da digitação do número desejado (Figura 16.3).

Figura 16.3 – Apresentação da tabuada de acordo com o número digitado

127

Coletânea de Aplicativos para Windows Phone

DesenvolvimentoA aplicação foi desenvolvida para a plataforma Windows Phone

e utilizando, para isso, o Silverlight para Windows Phone.

Foram desenvolvidas duas páginas, a MainPage.xaml, onde o usuário escolhe o idioma por meio do RadioButton, o qual já vem selecionado no idioma inglês. Após clicar em Continue, é chamada a página Tabuada.xaml, passando como parâmetro o idioma selecionado no evento Click do RadioButton:

private void btnContinuar_Click(object sender, RoutedEventArgs e){ var queryData = string.Format(“?idioma={0}”, idioma, “ Maestro”); NavigationService.Navigate(new Uri(“/Tabuada.xaml” + queryData, UriKind.Relative));}

private void rbIngles_Click(object sender, RoutedEventArgs e){ idioma = “I”;}

private void rbPortugues_Click(object sender, RoutedEventArgs e){ idioma = “P”;}

private void rbEspanhol_Click(object sender, RoutedEventArgs e){ idioma = “S”;}

Na página seguinte (Tabuada.xaml) é recuperado o parâmetro idioma:

128

Luciana Ferreira Baptista

public string idioma { get; set; }

Os textos são apresentados na página de acordo com o idioma selecionado:

protected override void OnNavigatedTo( System.Windows.Navigation.NavigationEventArgs e){ var data = this.NavigationContext.QueryString; //Verifica se existe a Chave idioma if (data.ContainsKey(“idioma”)) idioma = data[“idioma”];

switch (idioma) { case “I”: ApplicationTitle.Text = “MULTIPLICATION TABLE”; txbNumero.Text = “Number”; txbResultado.Text = “Result”; erroMensagem = “Enter a number”; erroTitulo = “Attention”; break; case “P”: ApplicationTitle.Text = “TABUADA”; txbNumero.Text = “Número”; txbResultado.Text = “Resultado”; erroMensagem = “Entre um número”; erroTitulo = “Atenção”; break; case “S”: ApplicationTitle.Text = “TABUADA”; txbNumero.Text = “Número”; txbResultado.Text = “Resultar”; erroMensagem = “Entre un número”; erroTitulo = “¡Atención”; } base.OnNavigatedTo(e);}

129

Coletânea de Aplicativos para Windows Phone

Ao clicar no botão OK, o resultado da tabuada é apresentado. Mas se o número digitado contiver ponto, o resultado da tabuada é formatado para apresentação de somente dois dígitos após o ponto (Figura 16.4), além da apresentação da vírgula para a separação de milhares de acordo com o padrão americano (Figura 16.5).

private void btnOk_Click(object sender, RoutedEventArgs e){ double resp; int encontrar; string respFormat; try { lstResultado.Items.Clear(); for (int i = 1; i <= 10; i++) { resp = i * double.Parse(txtNumero.Text); encontrar = txtNumero.Text.IndexOf(“.”); if (encontrar >= 0) respFormat = resp.ToString(“###,##0.00”); else respFormat = resp.ToString(“###,##0”); lstResultado.Items.Add(i + “ X “ + txtNumero.Text + “ = “ + respFormat); } } catch (Exception) { MessageBox.Show(erroMensagem, erroTitulo, MessageBoxButton.OK); }}

A seguir podemos visualizar as Figuras 16.4 e 16.5 que ilustram a formatação dos números.

130

Luciana Ferreira Baptista

Figura 16.4 – Apresentação do resultado com ponto flutuante

Figura 16.5 – Resultado da tabuada com separação de milhares

Porém, caso o usuário digite um número inválido, uma

131

Coletânea de Aplicativos para Windows Phone

mensagem é apresentada (Figura 16.6) de acordo com o idioma selecionado.

Figura 16.6 – Mensagem para número inválido

Considerações FinaisA aplicação consiste em uma versão simples para visualizar

a tabuada de qualquer número. Sendo que os textos na página são apresentados de acordo com um dos três idiomas selecionados inicialmente.

Após o desenvolvimento a aplicação foi submetida e aprovada para publicação no Windows Phone Marketplace, estando disponível para download no endereço http://www.windowsphone.com/pt-br/store/app/multiplicationtable/28b3e480-1231-46b6-88a4-c9f4898dde45

Melhorias futuras na aplicação consistem em acrescentar outros idiomas, a fim de que qualquer pessoa do mundo possa ler os textos que são apresentados e consequentemente fazer melhor uso do produto.

132

Luciana Ferreira Baptista

Referências BibliográficasMicrosoft. Windows Phone Dev Center. Disponível em <http://dev.windowsphone.com/en-us>. Acesso em 26.ago.2013.

133

Coletânea de Aplicativos para Windows Phone

Prof. Ms. Carlos Eduardo SchusterProf. Ms. Cláudio Luís Vieira OliveiraProfa. Ms. Luciana Ferreira Baptista

Muitos projetos ainda estão sendo desenvolvidos pelos professores e alunos da FATEC Jundiaí. E poderão ser baixados no Windows Phone Marketplace.

Para ajudar a encontrá-los, o Quadro 17.1 contém a identificação dos autores, que apresentaram os seus projetos de forma detalhada nesta obra, como distribuidores no site do Windows Phone Marketplace, bem como o endereço para sua localização.

Autor – Identificação no Windows Phone MarketplaceEndereço

Amanda Mayara de Araujo - Amanda Mayarahttp://www.windowsphone.com/pt-BR/store/publishers?publisherId=Amanda%2BMayara&appId=b4525d80-eb18-4875-a177-adbbf03227ab

Benedito Cristiano Aparecido PetroniCláudio Luís Vieira Oliveira – clvoliveirahttp://www.windowsphone.com/pt-BR/store/publishers?publisherId=clvoliveira&appId=fc52ee24-1e9a-4742-a67f-c390fcfb81e2

George Petz – George Petzhttp://www.windowsphone.com/pt-BR/store/publishers?publisherId=George%2BPetz&appId=97e7eec7-5973-49a7-87ca-abc8b6fae169

Gustavo da Silva Oliveira – Gustavo Silvahttp://www.windowsphone.com/pt-BR/store/publishers?publisherId=Gustavo%2BSilva&appId=bbf5c243-90a6-49b8-9211-ffdb0d948a97

17. Todos os Aplicativos Desenvolvidos e Publicados

134

Carlos Schuster, Cláudio Oliveira e Luciana Baptista

Autor – Identificação no Windows Phone MarketplaceEndereço

João Henrique Felício Barreto - JoaoHenriquehttp://www.windowsphone.com/pt-BR/store/publishers?publisherId=JoaoHenrique&appId=fc52ee24-1e9a-4742-a67f-c390fcfb81e2

Adaní Cusin SacilottiCarlos Eduardo SchusterKelly Sabará – KSA, ASK e S&S Systemshttp://www.windowsphone.com/pt-BR/store/publishers?publisherId=KSA&appId=995b1b69-3adc-450b-9442-6c8ee4fb6913 (KSA)http://www.windowsphone.com/pt-BR/store/publishers?publisherId=ask&appId=fc52ee24-1e9a-4742-a67f-c390fcfb81e2 (ASK)

Luciana Ferreira Batpista – lubaphttp://www.windowsphone.com/pt-BR/store/publishers?publisherId=lubap&appId=400c49e6-45a4-4043-a8d2-65e1acce0ca6

Rafael de Oliveira Sales – Rafael Saleshttp://www.windowsphone.com/pt-BR/store/publishers?publisherId=Rafael%2BSales&appId=fc52ee24-1e9a-4742-a67f-c390fcfb81e2

Reginaldo Bernardo Antonietti – Reginaldo Antoniettih t t p : / / w w w . w i n d o w s p h o n e . c o m / p t - B R / s t o r e /publishers?publisherId=Reginaldo%20Antonietti&appId=995b1b69-3adc-450b-9442-6c8ee4fb6913

Quadro 17.1 – Localização dos projetos por autores

A seguir se encontram relacionados alguns dos aplicativos desenvolvidos e que são frutos da parceria entre a FATEC Jundiaí e o Insituto Nokia de Tecnologia (INdT).

135

Coletânea de Aplicativos para Windows Phone

Autor: Gustavo Silva

Calcule a Concentração de Álcool no seu Sangue com este aplicativo fácil e intuitivo.

Figura 17.1 – Álcool no Sangue

Download:

http://www.windowsphone.com/pt-br/store/app/%C3%A1lcool-no-sangue/bbf5c243-90a6-49b8-9211-ffdb0d948a97

Álcool no Sangue

136

Ângela Lühmann, Benedito Petroni e Cláudio Oliveira

Autora: Giovanna Schiavi

Visualize figuras de animais raros e extintos em seu celular!

Figura 17.2 – Animais Raros

Download:

http://www.windowsphone.com/pt-br/store/app/animais-raros/3df04c20-b842-4906-838c-18b5e9afd18c

Animais Raros

137

Coletânea de Aplicativos para Windows Phone

Autor: Gustavo Silva

Aplicativo ótimo pra quem precisa realizar cálculos de áreas geométricas sem perder tempo calculando no papel.

Figura 17.3 – Área Geométrica

Download:

h t t p : / / w w w.w i n d o w s p h o n e . c o m / p t- b r / s t o r e / a p p / % C 3 % A 1 r e a -gemom%C3%A9trica/2419a705-ed19-4cb0-8db0-d16495bcfe96

Área Geométrica

138

Ângela Lühmann, Benedito Petroni e Cláudio Oliveira

Autora: Mayara Thuany Alves do Livramento

Book List é um aplicativo para listar quais livros você já leu, quais você deseja ler e quais estão pendentes na sua estante. Tudo de

forma simples.

Figura 17.4 – Book List

Download:

http://www.windowsphone.com/pt-br/store/app/book-list/e82bcd00-ebdb-4662-8ad7-0a1cc1eb1c0e

Book List

139

Coletânea de Aplicativos para Windows Phone

Autor: Rafael de Oliveira Sales

Faça o calculo do seu patrimônio líquido com essa ferramenta como auxilio, basta colocar o seu Ativo (bens e direitos) e seu Passivo

(obrigações, contas e dívidas).

Figura 17.5 – Cálculo do Patrimônio Líquido

Download:

http://www.windowsphone.com/pt-br/store/app/c%C3%A1lculo-do-pl/81554ca8-5938-441e-9348-02e64c46b9f6

Cálculo do Patrimônio Líquido

140

Ângela Lühmann, Benedito Petroni e Cláudio Oliveira

Autor: Rafael de Oliveira Sales

Esta ferramenta vai te auxiliar na hora de calcular o benefício do seguro desemprego, basta colocar os seus 3 últimos salários que

software vai calcular os seu benefício, de acordo com a tabela disponibilizada pelo Mte 01/12.

Figura 17.6 – Cálculo do Seguro Desemprego

Download:

http://www.windowsphone.com/pt-br/store/app/c%C3%A1lculo-do-seguro-desemprego/82283612-a21f-4fb1-ad8d-1cdef8b75af4

Cálculo do Seguro Desemprego

141

Coletânea de Aplicativos para Windows Phone

Autor: Ricardo Alves

Calcule os seus direitos trabalhistas e direitos de Seguro Desemprego com essa simples APP.

Figura 17.7 – Cálculos Trabalhistas

Download:

h t t p : / / w w w. w i n d o w s p h o n e . c o m / p t - b r / s t o r e / a p p / c a l c u l o s -trabalhistas/8e90393f-7421-4ae5-aac5-5cb254d01818

Cálculos Trabalhistas

142

Ângela Lühmann, Benedito Petroni e Cláudio Oliveira

Autora: Luciana Ferreira Baptista

Aplicativo que mostra os personagens da novela Carrossel do SBT, com a música tema ao fundo.

Figura 17.8 – Carrossel

Download:

http://www.windowsphone.com/pt-br/store/app/carrossel/e4553915-11d7-4088-80ca-87a4c423045a

Carrossel

143

Coletânea de Aplicativos para Windows Phone

Autores: Adaní Cusin Sacilotti, Carlos Eduardo Schuster

e Kelly Sabará

Esse aplicativo fornece, conforme seu ciclo, a data aproximada da ovulação e seu período fértil considerando um ciclo de 28

dias.

Figura 17.9 – Ciclo

Download:

http://www.windowsphone.com/pt-br/store/app/ciclo/3652aa54-9a7e-4e20-a306-b70e129de0aa

Ciclo

144

Ângela Lühmann, Benedito Petroni e Cláudio Oliveira

Autora: Amanda Mayara de Araujo

Este aplicativo foi desenvolvido especialmente para portadores da Diabete Tipo 1, criando um histórico com dados obtidos a partir

do teste glicêmico que é feito com frequência, proporcionando um maior controle de seus resultados.

Figura 17.10 – Controle de Glicemia

Download:

http://www.windowsphone.com/pt-br/store/app/controledeglicemia/b4525d80-eb18-4875-a177-adbbf03227ab

Controle de Glicemia

145

Coletânea de Aplicativos para Windows Phone

Autor: André Luiz Carletti

How fast are you? play it and find out! Crazy Fingers is a funny game that you are supposed to touch the spiral before it disappear. With four different levels, this game is perfect for everyone. Challenge

your friends, reach the top of the highscores. Be the fast one.

Figura 17.11 – Crazy Fingers

Download:

http://www.windowsphone.com/en-us/store/app/crazy-fingers/b0c7f4a4-b0e1-45bc-b0ad-2d39483eb730

Crazy Fingers

146

Ângela Lühmann, Benedito Petroni e Cláudio Oliveira

Autor: Rafael de Oliveira Sales

Esta ferramenta é simples e de fácil manuseio, exatidão na hora de cronometrar é seu ponto forte.

Figura 17.12 – Cronômetro

Download:

http://www.windowsphone.com/pt-br/store/app/cronometro/fc52ee24-1e9a-4742-a67f-c390fcfb81e2

Cronômetro

147

Coletânea de Aplicativos para Windows Phone

Autores: Adaní Cusin Sacilotti, Carlos Eduardo Schuster

e Kelly Sabará

Desafie seu cérebro com esse aplicativo de desenvolvimento lógico, com perguntas que ajudarão a melhorar seu raciocínio.

Figura 17.13 – Desafios

Download:

http://www.windowsphone.com/pt-br/store/app/desafios/1f6d3254-b2bb-40b9-957e-f175c7cad167

Desafios

148

Ângela Lühmann, Benedito Petroni e Cláudio Oliveira

Autores: Adaní Cusin Sacilotti, Carlos Eduardo Schuster

e Kelly Sabará

Calculadora auxiliar para contagem de carboidratos. O objetivo deste aplicativo é auxiliar as pessoas com Diabetes Tipo 1 (DM1) - insulino dependentes, e que seguem a dieta baseada na contagem

de carboidratos (CHO) ingeridos. Lembramos que este aplicativo não substitui em hipótese alguma as orientações de seu médico, trata-se apenas de uma ferramenta que automatiza o processo matemático que envolve a técnica de contagem de carboidratos. Consulte seu

médico antes de utilizar este aplicativo.

Figura 17.14 – Diabetes Calculator

Download:

http://www.windowsphone.com/pt-br/store/app/diabetes-calculator/5c4f803a-8965-42ad-a86d-99968f8a1e92

Diabetes Calculator

149

Coletânea de Aplicativos para Windows Phone

Autor: Edih Araújo

Através deste simples simulador o usuário será capaz de obter informações como o valor pago pra cada km rodado, ou ainda,

quantos km o veículo pode rodar com dada quantidade de combustível e também o consumo médio de combustível.

Figura 17.15 – Donc

Download:

http://www.windowsphone.com/pt-br/store/app/donc/806860a4-cd9b-451b-9ec1-3225e05b527e

Donc

150

Ângela Lühmann, Benedito Petroni e Cláudio Oliveira

Autor: João Henrique Felício Barreto

Este aplicativo ajuda a ver qual combustível vale mais a pena abastecer, calcula o consumo do carro e permite fazer um histórico

dos abastecimentos para um melhor controle do gasto e do consumo.

Figura 17.16 – FuelManager

Download:

http://www.windowsphone.com/pt-br/store/app/fuelmanager/45891be0-2555-4c3b-bf91-45e5689eb3ec

FuelManager

151

Coletânea de Aplicativos para Windows Phone

Autor: Ricardo Alves

Gloo Rss é um leitor de rss de ótima qualidade vale a penas experimentar está versão free. Nesta versão você poderá visualizar

alguns Feeds pré definidos e alterar algumas configurações. Notas da versão: Agora você pode adicionar ou remover novos feeds.

Figura 17.17 – Gloo RSS

Download:

http://www.windowsphone.com/pt-br/store/app/gloo-rss/0f8a9f60-b422-4d04-b5b6-bb5165612ee7

Gloo RSS

152

Ângela Lühmann, Benedito Petroni e Cláudio Oliveira

Autor: Ricardo Alves

Este App vai auxiliar você em relação com escalas e acordes de cada tom, é um simples app que pode te ajudar muito na hora de mudar o tom de uma musica. Recomendado principalmente para iniciantes

com música.

Figura 17.18 – Guitar Scale Pro

Download:

http://www.windowsphone.com/pt-br/store/app/guitar-scale-pro/36020230-bde0-444f-bf51-406383089f4d

Guitar Scale Pro

153

Coletânea de Aplicativos para Windows Phone

Autora: Amanda Mayara de Araujo

Aplicativo para fãs de Harry Potter, com galeria de fotos, notícias e um teste seletor para as quatro casas de Hogwarts.

Figura 17.19 – HarryPotterMania

Download:

http://www.windowsphone.com/pt-br/store/app/harrypottermania/8b0b5e4d-5170-4861-a397-d2cf322b1f9d

HarryPotterMania

154

Ângela Lühmann, Benedito Petroni e Cláudio Oliveira

Autora: Giovanna Schiavi

O aplicativo reúne contos e lendas urbanas mais tradicionais, folclóricas, nacionais e internacionais.

Figura 17.20 – Lendas Urbanas

Download:

http://www.windowsphone.com/pt-br/store/app/lendas-urbanas/5e446cd9-e088-4842-94a9-a04f7f4c9e9a

Lendas Urbanas

155

Coletânea de Aplicativos para Windows Phone

Autora: Luciana Ferreira Baptista

Max Steel - Toys.

Figura 17.21 – Max Steel

Download:

http://www.windowsphone.com/pt-br/store/app/max-steel/d6191690-32d0-4f6b-9f9c-945beae61e5d

Max Steel

156

Ângela Lühmann, Benedito Petroni e Cláudio Oliveira

Autores: Benedito Cristiano Aparecido Petroni e Cláudio Luís Vieira Oliveira

Simple memory game with associative elements. Stay tuned for new updates!

Figura 17.22 – Memory Game

Download:

http://www.windowsphone.com/pt-br/store/app/memory-game/5d57d42d-1884-423a-9719-9f89c64ed251

Memory Game

157

Coletânea de Aplicativos para Windows Phone

Autora: Luciana Ferreira Baptista

Monster High Students.

Figura 17.23 – Monster High

Download:

http://www.windowsphone.com/pt-br/store/app/monster-high/a6ad4ab6-377a-4d14-aff9-ddd3d77c4d9c

Monster High

158

Ângela Lühmann, Benedito Petroni e Cláudio Oliveira

Autora: Luciana Ferreira Baptista

Application to display the multiplication table of a number entered.

Figura 17.24 – Multiplication Table

Download:

h t t p : / / w w w . w i n d o w s p h o n e . c o m / p t - b r / s t o r e / a p p /multiplicationtable/28b3e480-1231-46b6-88a4-c9f4898dde45

Multiplication Table

159

Coletânea de Aplicativos para Windows Phone

Autores: Gustavo Silva Oliveira e Rafael de Oliveira Sales

Qual é o Filme? BETA é um Game onde você escuta um trecho de 10 segundos da trilha sonora de um filme e tenta adivinhar o nome

deste filme.

Figura 17.25 – Qual é o Filme?

Download:

http://www.windowsphone.com/pt-br/store/app/qual-%C3%A9-o-filme/a41eaabc-0516-4a09-b4e3-1e4c65a61158

Qual é o Filme?

160

Ângela Lühmann, Benedito Petroni e Cláudio Oliveira

Autor: Allan Massaretto

Você está preparado para fazer o exame teórico de trânsito do DETRAN? Este aplicativo irá auxilia-lo a estudar as placas de trânsito de uma forma divertida. Primeiramente estude as placas através da opção Treinar e quando estiver preparado teste seus conhecimentos através de um Quiz de perguntas e respostas. Novidades da versão

1.3: As perguntas do quiz em um game só se repetirão, caso a quantidade de perguntas escolhidas na tela “Opções” for maior que a quantidade de placas dos grupos de placas escolhidos, em outras palavras, se todas as placas dos grupos de placas escolhidos pelo jogador se esgotarem em um game, todas as placas voltarão a ser

sorteadas.

Figura 17.26 – Quiz Placas de Trânsito

Download:http://www.windowsphone.com/pt-br/store/app/quiz-tr%C3%A2nsito/d677844a-967e-44ec-8a3f-195bcc37a261

Quiz Placas de Trânsito

161

Coletânea de Aplicativos para Windows Phone

Autor: Reginaldo Antonietti

Trabalhador saiba com antecedência quanto você irá receber de seus direitos trabalhistas. Os cálculos estão centrados na CLT brasileira, ou seja, a Consolidação das Leis do Trabalho. Nesta versão FREE

temos 2 opções: PEDIDO DE DEMISSÃO por parte do trabalhador e DEMISSÃO SEM JUSTA CAUSA por parte do empregador e cálculo do SEGURO-DESEMPREGO caso o trabalhador faça jus. A APP também

contém as tabelas oficiais do INSS, SEGURO-DESEMPREGO e IR (Imposto de Renda). Novas versões estarão disponíveis quando

houver melhorias, correções OU NOVAS TABELAS de cálculos oficiais do governo.

Figura 17.27 – RescisãoCLT

Download:http://www.windowsphone.com/pt-br/store/app/rescisaoclt/4ad1ea8a-f518-4ed0-aea5-6932ffc142b7

RecisãoCLT

162

Ângela Lühmann, Benedito Petroni e Cláudio Oliveira

Autor: George Petz

Simple speed converter.

Figura 17.28 – Speed Converter

Download:http://www.windowsphone.com/pt-br/store/app/speed-converter/e50bdcf4-e2a3-4221-9ea7-14dcfae9065d

Speed Converter

163

Coletânea de Aplicativos para Windows Phone

Autor: Gustavo Silva

Aplicativo para aqueles que precisam da tabuada na palma da mão, mas não querem/podem calculá-la no momento.

Figura 17.29 – Tabuada

Download:http://www.windowsphone.com/pt-br/store/app/tabuada/1d854a43-a9d0-40e6-8241-3b99a51634c1

Tabuada

164

Ângela Lühmann, Benedito Petroni e Cláudio Oliveira

Autor: George Petz

Simple temperature converter for easy use. Version 1.1: negative values implemented e values with two or more points corrected.

Figura 17.30 – Temperatures

Download:http://www.windowsphone.com/pt-br/store/app/temperatures/97e7eec7-5973-49a7-87ca-abc8b6fae169

Temperatures

165

Coletânea de Aplicativos para Windows Phone

Autora: Giovanna Schiavi

Visualize as notas antigas que saíram de circulação e que hoje fazem parte da história.

Figura 17.31 – Visualizador de Notas Antigas

Download:http://www.windowsphone.com/pt-br/store/app/visualizador-de-notas-antigas/c95554d2-2d0a-4df1-8417-7a56e6a6bb8a

Visualizador de Notas Antigas

166

Ângela Lühmann, Benedito Petroni e Cláudio Oliveira

167

Coletânea de Aplicativos para Windows Phone

Edições Brasil

www.edicoesbrasil.com.br

168

Carlos Schuster, Cláudio Oliveira e Luciana Baptista