BabySmash Silverlight – Part I (intro)

Já algum tempo que tenho desabafado no twitter que fico "chateado" com a falta de movimento da comunidade XAML tuga, mas também me apercebi que sou culpado de poucas vezes escrever aqui no meu blog. Por isso tentei comprometer-me comigo mesmo a colocar mais bits interessantes aqui no meu cantinho.

Fui pai o ano passado, e como qualquer pai programador comecei desde de cedo a procurar coisas interessantes para a minha filhota brincar nos pc’s cá de casa e “puxar” pela sua imaginação. Uma das ideias que encontrei foi o BabySmash, uma aplicação em WPF feita pelo Scott Hanselman que por sua vez é uma versão de um outro programa, o AlphaBaby para Macintosh. A aplicação serve para proteger o sistema operativo quando os pequenotes batem nas teclas do teclado. Quando se clica nas teclas aparecem formas das letras e números carregados ou formas geométricas para as outras teclas ao mesmo tempo a aplicação usa a voz do computador para dizer o número ou letra. Isto faz com que além de entreter as crianças ajuda-as a aprenderem ao relacionar as teclas ao som e ao seu formato quando aparecem no ecrã. A Scott também forneceu o código da aplicação para a comunidade ajudar a melhorar ou a adicionar funcionalidades. Eu claro, fiz o download e já brinquei com os bits, essencialmente apenas fiz algumas alterações para conseguir colocar o programa em português, mudei string's e algum código e instalei uma voz portuguesa.

Agora o que me faltava era colocar isto a correr no meu media-center aka Mac Mini da sala, que com o teclado wireless da Apple é muito bom para a minha filha se divertir na tv. Foi então que comecei a fazer uma versão em Silverlight 3/4 do BabySmash para poder correr no MacOS, e usando também esta app para explorar novas funcionalidades do SL4 e patterns como o MVVM. Fiz uma prova de conceito ainda com os bits beta de SL4, que consegui por a trabalhar mas sem a parte da voz no MacOs (não há cominterop nem Apple script).

A série de post’s que pretendo começar é exactamente em mostrar como criei essa aplicação e torná-la ainda mais interessante.com outras funcionalidades como por exemplo: Realidade aumentada com uso da webcam para criar brinquedos virtuais, fazer o upload de voz dos pais a dizer as letras ou palavras, fazer uso da localização par a aplicação funcionar em qualquer língua. Entre outras coisas que me possa lembrar, gostava também de abrir um canal de feedback com a comunidade em que podem sugerir funcionalidades e acima de tudo criticar e dar dicas do que podia ser feito melhor ou de outras maneiras de atingir o mesmo objectivo.

O que vou colocar aqui será acima de tudo os meus pensamentos ao criar a aplicação, a minha abordagem pode nem sempre ser a mais correcta. Vou falar da arquitectura da solução, a maneira como está organizada e estruturada, templates, estilos, ligações entre a view e a vm , entre outros para isso vou usar mvvm com o auxílio do toolkit MVVMLight (que é a minha ferramenta de eleição em wpf/silverlight), talvez o toolkit de silverlight e as dlls de MEF mais para a frente.

A aplicação vai correr como “fora do browser” ou OOB como se costuma chamar, deve correr em fullscreen e usar ComInterop para conseguirmos aceder á voz do pc em Windows, e usar a ficheiros de áudio para o MacOS.

Depois desta introdução vamos ao trabalho. Devem ter toolkit MVVMLight instalado para começar.

Começamos por criar um novo projecto MVVM SL 4 que aparece nos templates de projectos do visual studio (eu estou a usar o 2010 em Windows 7 64 bit). Depois de criamos esse projecto, criamos um projecto Asp.Net Application vazio que vai servir para alojarmos a nossa aplicação.

De seguida alteramos as propriedades do projecto de SL para permitir a aplicação correr fora do browser, vamos também pedir para a aplicação correr em Elevated Trust.

 Agora só nos falta ligar os dois projectos, navegamos até as propriedades do projecto de ASP.Net e na parte de Silverlight Applications adicionamos uma nova aplicação que imediatamente nos vai perguntar se queremos adicionar a aplicação SL existente na solução, aproveitamos e também adicionamos uma página para de teste para chamar o Xap.

CONTINUA…


Comments

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.