<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Nação do Cimbalino &#187; Widgets</title>
	<atom:link href="http://www.pedrolamas.com/category/programacao/widgets-programacao/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.pedrolamas.com</link>
	<description>( ou a “Página Pessoal de Pedro Lamas” )</description>
	<lastBuildDate>Fri, 10 Feb 2012 17:10:35 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Windows Mobile Widgets &#8211; Parte 4</title>
		<link>http://www.pedrolamas.com/2009/11/13/windows-mobile-widgets-parte-4/</link>
		<comments>http://www.pedrolamas.com/2009/11/13/windows-mobile-widgets-parte-4/#comments</comments>
		<pubDate>Fri, 13 Nov 2009 15:09:19 +0000</pubDate>
		<dc:creator>Pedro Lamas</dc:creator>
				<category><![CDATA[Widgets]]></category>
		<category><![CDATA[Mobilidade]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Windows Mobile]]></category>
		<category><![CDATA[Windows Mobile 6.5]]></category>
		<category><![CDATA[Windows Mobile Widgets]]></category>

		<guid isPermaLink="false">http://www.pedrolamas.com/?p=1087</guid>
		<description><![CDATA[TweetEm mais um artigo da série sobre desenvolvimento de Windows Mobile Widgets, hoje venho falar sobre o seu modelo de objectos (object model) de Javascript. Voltando ao essencial, um Widget é apenas HTML + CSS + Javascript&#8230; sendo o HTML &#8230; <a href="http://www.pedrolamas.com/2009/11/13/windows-mobile-widgets-parte-4/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div style="float: right; margin-left: 10px; clear: right;"><a href="http://twitter.com/share?url=http://www.pedrolamas.com/2009/11/13/windows-mobile-widgets-parte-4/&via=pedrolamas&text=Windows Mobile Widgets - Parte 4&related=pedrolamas:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><p><img class="alignright size-full wp-image-1099" title="Windows Mobile Widgets Part 3" src="http://www.pedrolamas.com/wp-content/uploads/2009/11/Windows-Mobile-Widgets-Part-3.jpg" alt="Windows Mobile Widgets Part 3" width="150" height="106" />Em mais um artigo da série sobre desenvolvimento de <a href="http://www.pedrolamas.com/tag/windows-mobile-widgets/">Windows Mobile Widgets</a>, hoje venho falar sobre o seu modelo de objectos (object model) de Javascript.</p>
<p>Voltando ao essencial, um Widget é apenas <acronym title="HyperText Markup Language">HTML</acronym> + <acronym title="Cascading Style Sheet">CSS</acronym> + Javascript&#8230; sendo o <acronym title="HyperText Markup Language">HTML</acronym> e o <acronym title="Cascading Style Sheet">CSS</acronym> utilizado para o desenho da interface, o Javascript serve para a implementação da lógica e programação do Widget.</p>
<p><span id="more-1087"></span>Os Widgets de Windows Mobile disponibilizam um objecto chamado <em><strong>widget</strong></em>, que permite o acesso a algumas informações do estado do dispositivo, bem como a algumas funcionalidades relacionadas com o próprio Widget.</p>
<p>Esta é a definição do objecto <em>widget</em>:</p>
<ul>
<li>Propriedades:
<ul>
<li><strong>authorEmail</strong> &#8211; O endereço de e-mail do autor do Widget, correspondendo ao valor do atributo<em> email</em> do elemento <em>&lt;author&gt;</em> no manifesto</li>
<li><strong>authorName</strong> &#8211; O nome do autor do Widget, correspondendo ao valor do elemento <em>&lt;author&gt;</em> no manifesto</li>
<li><strong>authorURL</strong> &#8211; O nome do autor do Widget, correspondendo ao valor do atributo <em>href</em> do elemento <em>&lt;author&gt;</em> no manifesto</li>
<li><strong>currentIcon</strong> &#8211; O icon que está em uso neste Widget; este é um object do tipo <em><strong>WidgetIcon</strong></em>.</li>
<li><strong>description</strong> &#8211; A descrição do Widget, correspondendo ao valor do elemento <em>&lt;description&gt;</em> no manifesto</li>
<li><strong>height</strong> &#8211; A altura do Widget em pixels</li>
<li><strong>identifier</strong> &#8211; O identificador único do Widget, correspondendo ao atributo <em>id</em> do elemento <em>&lt;widget&gt;</em> no manifesto</li>
<li><strong>locale</strong> &#8211; O identificador do idioma (<em>locale</em>) em uso, conforme as definições regionais (<em>Regional Settings</em>) do dispositivo</li>
<li><strong>menu</strong> &#8211; O menu do Widget; este é um objecto do tipo <em><strong>Menu</strong></em>.</li>
<li><strong>name</strong> &#8211; O nome do Widget, correspondendo ao valor do elemento <em>&lt;name&gt;</em> no manifesto</li>
<li><strong>version</strong> &#8211; A versão do Widget, correspondendo ao valor do atributo <em>version</em> do elemento <em>&lt;widget&gt;</em></li>
<li><strong>width</strong> &#8211; A largura do Widget em pixels</li>
</ul>
</li>
<li>Métodos
<ul>
<li><strong>createObject(type)</strong> &#8211; Cria uma instancia do tipo indicado</li>
<li><strong>preferenceForKey(key)</strong> &#8211; Obtém os dados persistentes relativos ao identificador indicado</li>
<li><strong>setPreferenceForKey(value, key)</strong> &#8211; Guardar persistentemente os dados indicados, relacionando-os com um identificador</li>
</ul>
</li>
<li>Eventos
<ul>
<li><strong>onHide</strong> &#8211; Ocorre quando a janela do Widget perde o foco (minimizar)</li>
</ul>
<ul>
<li><strong>onShow</strong> &#8211; Ocorre ao focar a janela do Widget</li>
</ul>
</li>
</ul>
<p>Para efeito de exemplo, vamos utilizar novamente o nosso &#8220;Hello World&#8221; (a versão <a href="http://www.pedrolamas.com/2009/08/21/windows-mobile-widgets-parte-2/">deste</a> post), e fazer com que este apresente no ecrã principal o seu nome e versão, alterando para isso o ficheiro <em>default.htm</em>:</p>
<pre class="brush: xml; highlight: [8,14]; title: ; notranslate">&lt;html&gt;
&lt;head&gt;
&lt;title&gt;Hello World&lt;/title&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;resources.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
window.onload = function() {
  HelloWorldLabel.innerText = Resources.HelloWorldText;
  WidgetInformation.innerText = widget.name + &quot; v&quot; + widget.version;
};
&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;p id=&quot;HelloWorldLabel&quot;&gt;&lt;/p&gt;
&lt;p id=&quot;WidgetInformation&quot;&gt;&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<p>Abrindo o Widget no emulador, o resultado deverá ser como a seguinte imagem:</p>
<p><img class="alignnone size-full wp-image-1090" title="Hello World Widget with identification" src="http://www.pedrolamas.com/wp-content/uploads/2009/11/Hello-World-Widget-with-identification.jpg" alt="Hello World Widget with identification" width="282" height="362" /></p>
<p>Como pudemos ver acima, existem ainda pelo menos mais dois objectos: o <em>WidgetIcon</em> e o <em>Menu</em>.</p>
<p>O <em>WidgetIcon</em> tem a seguinte estrutura:</p>
<ul>
<li>Propriedades
<ul>
<li><strong>height</strong> &#8211; A altura do icon</li>
<li><strong>src</strong> &#8211; O url do icon</li>
<li><strong>width</strong> &#8211; A largura do icon</li>
</ul>
</li>
</ul>
<p>Por sua vez, o <em>Menu</em> apresenta a seguinte estrutura:</p>
<ul>
<li>Propriedades
<ul>
<li><strong>leftSoftKeyIndex</strong> &#8211; Utilizado pelo método setSoftkey para representar a tecla (<em>soft-key</em>) da esquerda</li>
<li><strong>rightSoftKeyIndex</strong> &#8211; Utilizado pelo método setSoftkey para representar a tecla (<em>soft-key</em>) da direita</li>
</ul>
</li>
<li>Métodos
<ul>
<li><strong>append(item)</strong> &#8211; acrescente um objecto do tipo <em>MenuItem</em> à tecla (<em>soft key</em>) da direita</li>
<li><strong>clear()</strong> &#8211; Limpa o conteúdo do menu principal</li>
<li><strong>createMenuItem(id)</strong> &#8211; cria um novo objecto <em><strong>MenuItem</strong></em> com o identificador indicado</li>
<li><strong>getMenuItemById(id)</strong> &#8211; obtém o objecto <em>MenuItem</em> dado o seu identificador</li>
<li><strong>remove(item)</strong> &#8211; remove do menu o objecto <em>MenuItem</em> indicado</li>
<li><strong>setSoftKey(item, id)</strong> &#8211; atribui o <em>MenuItem</em> a uma tecla (<em>soft key</em>) específica.</li>
</ul>
</li>
</ul>
<p>E aqui aparece mais um objecto, o <em>MenuItem</em>, que tem a seguinte estrutura:</p>
<ul>
<li>Propriedades
<ul>
<li><strong>text</strong> &#8211; O texto a apresentar neste item</li>
</ul>
</li>
<li>Eventos
<ul>
<li><strong>onSelect</strong> &#8211; Ocorre quando o item é seleccionado</li>
</ul>
</li>
</ul>
<p>Utilizando agora estes conceitos, vamos criar um novo item &#8220;About&#8221; para o nosso menu:</p>
<pre class="brush: xml; highlight: [10,11,12,13,14,15,16]; title: ; notranslate">&lt;html&gt;
&lt;head&gt;
&lt;title&gt;Hello World&lt;/title&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;resources.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
window.onload = function() {
 HelloWorldLabel.innerText = Resources.HelloWorldText;
};

var menu = widget.menu;
var aboutMenuItem = menu.createMenuItem(1001);
aboutMenuItem.text = &quot;About&quot;;
aboutMenuItem.onSelect = function() {
 alert(widget.name + &quot; v&quot; + widget.version);
};
menu.setSoftKey(aboutMenuItem, menu.leftSoftKeyIndex);
&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;p id=&quot;HelloWorldLabel&quot;&gt;&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<p>A imagem seguinte mostrar o resultado obtido; reparem bem na tecla (soft key) da esquerda:</p>
<p><img class="alignnone size-full wp-image-1097" title="Hello World Widget custom Menu" src="http://www.pedrolamas.com/wp-content/uploads/2009/11/Hello-World-Widget-custom-Menu.jpg" alt="Hello World Widget custom Menu" width="282" height="362" /></p>
<p>Podem <a href="http://www.pedrolamas.com/2009/11/13/windows-mobile-widgets-parte-4/hello-world-2/">aqui</a> encontrar o ficheiro &#8220;Hello World.wgt&#8221; com o resultado das alterações&#8230; e até à próxima! <img src='http://www.pedrolamas.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>]]></content:encoded>
			<wfw:commentRss>http://www.pedrolamas.com/2009/11/13/windows-mobile-widgets-parte-4/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Windows Mobile Widgets &#8211; Parte 3</title>
		<link>http://www.pedrolamas.com/2009/10/12/windows-mobile-widgets-parte-3/</link>
		<comments>http://www.pedrolamas.com/2009/10/12/windows-mobile-widgets-parte-3/#comments</comments>
		<pubDate>Mon, 12 Oct 2009 15:41:44 +0000</pubDate>
		<dc:creator>Pedro Lamas</dc:creator>
				<category><![CDATA[Widgets]]></category>
		<category><![CDATA[Mobilidade]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Windows Mobile]]></category>
		<category><![CDATA[Windows Mobile 6.5]]></category>
		<category><![CDATA[Windows Mobile Widgets]]></category>

		<guid isPermaLink="false">http://www.pedrolamas.com/?p=968</guid>
		<description><![CDATA[TweetContinuando a &#8220;saga&#8221; do desenvolvimento de Windows Mobile Widgets, este terceiro artigo vai focar o manifesto dos Widgets, mostrando para que serve e como o podemos utilizar para nosso próprio proveito. O manifesto de um Widget para Windows Mobile tem &#8230; <a href="http://www.pedrolamas.com/2009/10/12/windows-mobile-widgets-parte-3/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div style="float: right; margin-left: 10px; clear: right;"><a href="http://twitter.com/share?url=http://www.pedrolamas.com/2009/10/12/windows-mobile-widgets-parte-3/&via=pedrolamas&text=Windows Mobile Widgets - Parte 3&related=pedrolamas:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><p>Continuando a &#8220;saga&#8221; do desenvolvimento de <a href="http://www.pedrolamas.com/tag/windows-mobile-widgets/">Windows Mobile Widgets</a>, este terceiro artigo vai focar o manifesto dos Widgets, mostrando para que serve e como o podemos utilizar para nosso próprio proveito.</p>
<p>O manifesto de um Widget para Windows Mobile tem obrigatoriamente o nome de &#8220;<em><strong>config.xml</strong></em>&#8221; e obedece ao standard definido pelo <a href="http://www.w3.org/TR/2008/WD-widgets-20081222/" target="_blank">draft para desenho de Widgets da <acronym title="World Wide Web Consortium">W3C</acronym>, de 22 Dezembro de 2008</a>. Este standard é um rascunho (draft) do que é pretendido para a versão final; no entanto, no seu aspecto base é garantida pelo Windows Mobile a retro-compatibilidade das próximas versões com as mais antigas.</p>
<p><span id="more-968"></span></p>
<p>Este manifesto, tal como o nome do ficheiro indica, não é nada mais do que texto <acronym title="Extensible Markup Language">XML</acronym> que descreve &#8220;quem&#8221; o nosso Widget realmente é!</p>
<p>Assim, e pegando novamente no exemplo Hello World que venho a apresentar desde o primeiro artigo, o manifesto completo para este Widget poderia ser algo deste tipo:</p>
<pre class="brush: xml; title: ; notranslate">&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot; ?&gt;
&lt;widget xmlns=&quot;http://www.w3.org/ns/widgets&quot; id=&quot;http://www.pedrolamas.com/WindowsMobileWidgets/HelloWorld&quot; version=&quot;1.0&quot;&gt;
&lt;name&gt;Hello World&lt;/name&gt;
&lt;content src=&quot;default.htm&quot; type=&quot;text/html&quot; /&gt;
&lt;access network=&quot;false&quot; /&gt;
&lt;icon src=&quot;icon.png&quot; /&gt;
&lt;icon src=&quot;icon.ico&quot; /&gt;
&lt;description&gt;
Hello World Demo Application!
&lt;/description&gt;
&lt;author href=&quot;http://www.pedrolamas.com&quot; email=&quot;pedrolamas@gmail.com&quot;&gt;
Pedro Lamas
&lt;/author&gt;
&lt;license&gt;
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.
&lt;/license&gt;
&lt;/widget&gt;</pre>
<p>Começando pela raiz do documento <acronym title="Extensible Markup Language">XML</acronym>, vemos que dentro do elemento <strong>widget</strong> podemos encontrar os seguintes atributos:</p>
<ul>
<li><strong>id</strong> &#8211; Este é o identificador único para este Widget, e permite que em futuras instalações deste mesmo Widget (com o mesmo id), sejam comparadas as versões, permitindo assim  que este seja actualizado. O seu conteúdo é obrigatoriamente um <acronym title="Uniform Resource Identifier">URI</acronym> válido</li>
<li><strong>version</strong> &#8211; A versão do Widget</li>
</ul>
<p>Passamos agora aos elementos internos:</p>
<ul>
<li><strong>name</strong> &#8211; O nome do Widget, que entre outras coisas será utilizado ao criar um atalho no Start</li>
<li><strong>content</strong> &#8211; Identifica o conteúdo do Widget e tem os seguintes atributos:
<ul>
<li> <strong>src</strong> &#8211; O ficheiro de arranque do Widget</li>
<li> <strong>type</strong> &#8211; O tipo de conteúdo <acronym title="Multipurpose Internet Mail Extensions">MIME</acronym> do ficheiro de arranque</li>
</ul>
</li>
<li><strong>access</strong> &#8211; Os acessos que este Widget irá necessitar, apresentando os seguintes atributos:
<ul>
<li> <strong>network</strong> &#8211; Indica que o Widget precisa de acesso à internet; em caso afirmativo, será apresentado um aviso ao utilizador para que este dê efectivamente o acesso</li>
</ul>
</li>
<li><strong>icon</strong> &#8211; Identifica um icon a ser apresentado no Widget, com estes atributos:
<ul>
<li> <strong>src</strong> &#8211; O ficheiro de imagem do icon propriamente dito</li>
</ul>
</li>
<li><strong>description</strong> &#8211; A descrição do Widget, apresentada por exemplo quando este é instalado</li>
<li><strong>author</strong> &#8211; O nome do autor do Widget, bem como os seguintes atributos:
<ul>
<li> <strong>href</strong> &#8211; Um endereço de internet, normalmente representando a página de suporte do Widget ou do seu autor</li>
<li> <strong>email</strong> &#8211; Um endereço de email, sendo normalmente o email de suporte do Widget ou do seu autor</li>
</ul>
</li>
<li><strong>license</strong> &#8211; A licença associada ao Widget</li>
</ul>
<p>De todo o manifesto, acho pessoalmente que o identificador (id) e versão (version) são os mais importantes e essenciais, já que é com base nestes dois atributos que o Windows Mobile nos permite efectuar actualizações aos nossos Widgets; assim, aconselho a que coloquem sempre um identificador bastante completo, de forma a garantir que este é verdadeiramente único.</p>
<p>Todo o manifesto do Widget pode ser acedido programaticamente através do modelo de objectos (Object Model) que os Widgets expõe para o Javascript, mas esse será o tema do próximo artigo&#8230; <img src='http://www.pedrolamas.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>]]></content:encoded>
			<wfw:commentRss>http://www.pedrolamas.com/2009/10/12/windows-mobile-widgets-parte-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Windows Mobile Widgets &#8211; Parte 2</title>
		<link>http://www.pedrolamas.com/2009/08/21/windows-mobile-widgets-parte-2/</link>
		<comments>http://www.pedrolamas.com/2009/08/21/windows-mobile-widgets-parte-2/#comments</comments>
		<pubDate>Fri, 21 Aug 2009 14:19:12 +0000</pubDate>
		<dc:creator>Pedro Lamas</dc:creator>
				<category><![CDATA[Widgets]]></category>
		<category><![CDATA[Mobilidade]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Windows Mobile]]></category>
		<category><![CDATA[Windows Mobile 6.5]]></category>
		<category><![CDATA[Windows Mobile Widgets]]></category>

		<guid isPermaLink="false">http://www.pedrolamas.com/?p=872</guid>
		<description><![CDATA[TweetNa continuação da série de artigos sobre Windows Mobile Widgets que tenho pensada, este segundo artigo focará em essencial como podemos &#8220;internacionalizar&#8221; os nossos Widgets, ou seja, como fazer para que a interface do Widget seja multi-língua (Localization), apresentando o &#8230; <a href="http://www.pedrolamas.com/2009/08/21/windows-mobile-widgets-parte-2/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div style="float: right; margin-left: 10px; clear: right;"><a href="http://twitter.com/share?url=http://www.pedrolamas.com/2009/08/21/windows-mobile-widgets-parte-2/&via=pedrolamas&text=Windows Mobile Widgets - Parte 2&related=pedrolamas:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><p>Na continuação da série de artigos sobre <a href="http://www.pedrolamas.com/tag/windows-mobile-widgets/">Windows Mobile Widgets</a> que tenho pensada, este segundo artigo focará em essencial como podemos &#8220;internacionalizar&#8221; os nossos Widgets, ou seja, como fazer para que a interface do Widget seja multi-língua (<em>Localization</em>), apresentando o idioma correcto conforme as <em>Regional Settings</em> (Definições Regionais) do <acronym title="Personal Digital Assistant">PDA</acronym> onde ele estiver a ser executado.</p>
<p><span id="more-872"></span></p>
<p>A localização da interface de Widgets consiste em dividir a aplicação em &#8220;recursos&#8221;, sejam eles imagens, javascript, ou outros tipos de ficheiros, e colocar cópias desses recursos devidamente localizados em pastas individuais que indicam qual o idioma (<em>Locale</em>).</p>
<p>Antes de mais, há que perceber o conceito de <em>Locale ID</em> (ou LCID): trata-se de um código que identifica o idioma utilizado num dado elemento. Os códigos LCID que podem ser utilizados nos Widgets do Windows Mobile podem ser consultados <a href="http://msdn.microsoft.com/en-us/goglobal/bb896001.aspx" target="_blank">aqui</a>.</p>
<p>Utilizando por base o exemplo &#8220;Hello World&#8221; apresentado no artigo anterior, para que o interface deste widget tenha suporte para multi-língua, teremos de remover o texto da própria interface e fazer com que este seja carregado dinamicamente de um ficheiro javascript (.js), ficheiro este que será posteriormente replicado para as línguas que pretendermos. Assim, o primeiro passo será criar o ficheiro &#8220;<em><strong>resources.js</strong></em>&#8221; com os recursos do nosso Widget:</p>
<pre class="brush: jscript; title: ; notranslate">var Resources = {
 HelloWorldText: &quot;Hello World&quot;
};</pre>
<p>De seguida, vamos alterar o ficheiro de interface &#8220;<em><strong>default.htm</strong></em>&#8221; para que este consuma o ficheiro de recursos:</p>
<pre class="brush: xml; highlight: [4,5,6,7,8,9,12]; title: ; notranslate">&lt;html&gt;
&lt;head&gt;
&lt;title&gt;Hello World&lt;/title&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;resources.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
window.onload = function() {
 HelloWorldLabel.innerText = Resources.HelloWorldText;
};
&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;p id=&quot;HelloWorldLabel&quot;&gt;&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<p>As linhas marcadas acima indicam os locais em que o ficheiro original foi alterado.</p>
<p>Para efeitos de exemplo, vamos fazer agora a tradução dos recursos para Português de Portugal. Para isso, vamos criar directamente na raiz do nosso Widget uma nova pasta e dar-lhe o nome de &#8220;<em><strong>pt</strong></em>&#8220;; depois criamos uma cópia do ficheiro &#8220;<em>resources.js</em>&#8221; dentro da pasta &#8220;<em>pt</em>&#8220;. Falta agora modificar o conteúdo do ficheiro, traduzindo os textos para a língua correcta, sendo o resultado final como o seguinte:</p>
<pre class="brush: jscript; highlight: [2]; title: ; notranslate">var Resources = {
 HelloWorldText: &quot;Olá Mundo&quot;
};</pre>
<p>Esta é a estrutura de ficheiros do nosso Widget já alterado:</p>
<p><img class="alignnone size-full wp-image-895" title="Hello World localized files" src="http://www.pedrolamas.com/wp-content/uploads/2009/08/Hello-World-localized-files.jpg" alt="Hello World localized files" width="508" height="339" /></p>
<p>Falta apenas empacotar os ficheiros seguindo as indicações do <a href="http://www.pedrolamas.com/2009/07/25/windows-mobile-widgets-parte-1/">primeiro artigo</a>, instalar e testar!</p>
<p>Para correctamente podermos ver o nosso Widget em Português, teremos que indicar ao <acronym title="Personal Digital Assistant">PDA</acronym> que pretendemos utilizar as Definições Regionais de Portugal, utilizando para isso as opções que podemos encontram em <em>Start \ Settings \ System \ Regional Settings</em>, e alterando as definições tal como mostra a imagem seguinte:</p>
<p><a href="http://www.pedrolamas.com/wp-content/uploads/2009/08/Regional-Settings.jpg"><img class="alignnone size-full wp-image-897" title="Regional Settings" src="http://www.pedrolamas.com/wp-content/uploads/2009/08/Regional-Settings.jpg" alt="Regional Settings" width="276" height="356" /></a></p>
<p>Irá aparecer um aviso para reiniciar o <acronym title="Personal Digital Assistant">PDA</acronym>, que no nosso caso poderá ser ignorado visto que para a execução de Widgets a alteração das Definições Regionais são imediatas.</p>
<p>De seguida executando o Widget, poderemos ver a interface em Português de Portugal tal como pretendiamos:</p>
<p><a href="http://www.pedrolamas.com/wp-content/uploads/2009/08/Hello-World-Widget-running-localized.jpg"><img class="alignnone size-full wp-image-898" title="Hello World Widget running localized" src="http://www.pedrolamas.com/wp-content/uploads/2009/08/Hello-World-Widget-running-localized.jpg" alt="Hello World Widget running localized" width="276" height="356" /></a></p>
<p>Podem <a href="http://www.pedrolamas.com/2009/07/25/windows-mobile-widgets-parte-2/localized-hello-world/">aqui</a> descarregar o ficheiro &#8220;Localized Hello World.wgt&#8221; que tem o resultado desta demonstração&#8230; encontramo-nos no próximo artigo! <img src='http://www.pedrolamas.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>]]></content:encoded>
			<wfw:commentRss>http://www.pedrolamas.com/2009/08/21/windows-mobile-widgets-parte-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Windows Mobile Widgets &#8211; Parte 1</title>
		<link>http://www.pedrolamas.com/2009/07/25/windows-mobile-widgets-parte-1/</link>
		<comments>http://www.pedrolamas.com/2009/07/25/windows-mobile-widgets-parte-1/#comments</comments>
		<pubDate>Sat, 25 Jul 2009 14:13:04 +0000</pubDate>
		<dc:creator>Pedro Lamas</dc:creator>
				<category><![CDATA[Widgets]]></category>
		<category><![CDATA[Mobilidade]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Windows Mobile]]></category>
		<category><![CDATA[Windows Mobile 6.5]]></category>
		<category><![CDATA[Windows Mobile Widgets]]></category>

		<guid isPermaLink="false">http://www.pedrolamas.com/?p=823</guid>
		<description><![CDATA[TweetEste é o primeiro de uma série de artigos que tenho em vista, onde pretendo demonstrar como podem utilizar a nova forma de desenvolvimento para o Windows Mobile 6.5: Widgets! Utilizando o suspeito do costume, para dar a conhecer os &#8230; <a href="http://www.pedrolamas.com/2009/07/25/windows-mobile-widgets-parte-1/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div style="float: right; margin-left: 10px; clear: right;"><a href="http://twitter.com/share?url=http://www.pedrolamas.com/2009/07/25/windows-mobile-widgets-parte-1/&via=pedrolamas&text=Windows Mobile Widgets - Parte 1&related=pedrolamas:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><p><img class="alignright size-full wp-image-849" title="Hello World Widget Thumbnail" src="http://www.pedrolamas.com/wp-content/uploads/2009/07/Hello-World-Widget-Thumbnail.jpg" alt="Hello World Widget Thumbnail" width="150" height="193" />Este é o primeiro de uma série de artigos que tenho em vista, onde pretendo demonstrar como podem utilizar a nova forma de desenvolvimento para o Windows Mobile 6.5: <strong>Widgets</strong>!</p>
<p>Utilizando o suspeito do costume, para dar a conhecer os conceitos base associados ao desenvolvimento numa qualquer tecnologia/linguagem, apresento agora o programa <em>&#8220;Hello World&#8221;</em>, passo a passo! <img src='http://www.pedrolamas.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><span id="more-823"></span></p>
<p>Para esta demonstração vamos precisar do <a href="http://www.pedrolamas.com/2009/06/04/windows-mobile-6-5-developer-tool-kit/">Windows Mobile 6.5 Developer Tool Kit</a> (disponível <a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=20686a1d-97a8-4f80-bc6a-ae010e085a6e" target="_blank">aqui</a>); depois de instalado no computador, os emuladores de WM 6.5 podem ser encontrados directamente no menu iniciar e depois pesquisando em <em>Programas \ Windows Mobile 6 <acronym title="Software Development Kit">SDK</acronym> \ Standalone Emulator Images \ US English</em> (sendo que esta última aparecerá conforme a linguagem do Dev. Toolkit que instalaram).</p>
<p><img class="alignnone size-full wp-image-836" title="Windows Mobile 6.5 Emulator Images" src="http://www.pedrolamas.com/wp-content/uploads/2009/07/Windows-Mobile-6.5-Emulator-Images.jpg" alt="Windows Mobile 6.5 Emulator Images" width="336" height="430" /></p>
<p>Abrindo o emulador &#8220;WM 6.5 Professional&#8221; e mal este acabe de arrancar, devem ver uma imagem como a seguinte, onde se mostra o <em>Today</em> do WM 6.5:</p>
<p><img class="alignnone size-full wp-image-835" title="Windows Mobile 6.5 Professional Today" src="http://www.pedrolamas.com/wp-content/uploads/2009/07/Windows-Mobile-6.5-Today.jpg" alt="Windows Mobile 6.5 Professional Today" width="382" height="574" /></p>
<p>Feito isto, estamos em condições de começar a desenvolver o nosso programa!</p>
<p>Na sua essência, um Widget nada mais é uma ou mais páginas de Internet, no qual são aplicadas as tecnologias regularmente associadas como <acronym title="HyperText Markup Language">HTML</acronym>, <acronym title="Cascading Style Sheet">CSS</acronym> e Flash (sendo que futuramente é de se esperar também o suporte para Silverlight) para a interface, e Javascript para a programação da interacção, e algumas técnicas como por exemplo o <acronym title="Asynchronous Javascript and XML">AJAX</acronym>.</p>
<p>Assim, a nossa página <em>&#8220;Hello World&#8221;</em> pode ser resumida simplesmente ao seguinte código:</p>
<pre class="brush: xml; title: ; notranslate">&lt;html&gt;
&lt;head&gt;
&lt;title&gt;Hello World&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;p&gt;Hello World&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<p>Copiando o código acima para o bloco de notas do computador, e guardando o resultado como ficheiro de <acronym title="HyperText Markup Language">HTML</acronym> com o nome <em><strong>&#8220;default.htm&#8221;</strong></em> (<span style="text-decoration: underline;">com aspas</span>, de forma a que ao guardar, o Bloco de Notas não adicione a extensão <em>&#8220;.txt&#8221;</em> ao nome do ficheiro, acabando com algo como <em>&#8220;default.htm.txt&#8221;</em> o que não é o pretendido), temos a página de arranque do nosso Widget.</p>
<p>De seguida temos que criar o ficheiro de manifesto da aplicação! Este ficheiro tem sempre o nome de &#8220;config.xml&#8221; e permite ao gestor de Widgets saber o que fazer com este especificamente, definindo assim elementos como a origem, instalação, necessidades especiais, etc.. O formato do ficheiro obedece ao <a href="http://www.w3.org/TR/2008/WD-widgets-20081222/" target="_blank">draft para desenho de Widgets da <acronym title="World Wide Web Consortium">W3C</acronym>, de 22 Dezembro de 2008</a>.</p>
<p>Para o nosso exemplo, vamos considerar o seguinte manifesto:</p>
<pre class="brush: xml; title: ; notranslate">&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot; ?&gt;
&lt;widget version=&quot;1.0&quot; xmlns=&quot;http://www.w3.org/ns/widgets&quot; id=&quot;&quot;&gt;
&lt;name&gt;Hello World&lt;/name&gt;
&lt;content src=&quot;default.htm&quot; type=&quot;text/html&quot; /&gt;
&lt;access network=&quot;false&quot; /&gt;
&lt;icon src=&quot;icon.png&quot; /&gt;
&lt;description&gt;Hello World Demo Application!&lt;/description&gt;
&lt;/widget&gt;</pre>
<p>Mais uma vez, recorremos ao Bloco de Notas para copiar o texto acima para um novo ficheiro, que deverá ser guardado como <em><strong>&#8220;config.xml&#8221;</strong></em> (atenção às aspas, que devem ser mantidas no Bloco de Notas!) na mesma pasta do anterior <em>&#8220;default.htm&#8221;</em>.</p>
<p>Analisando o manifesto anterior, podemos que foi indicado o nome de <em>&#8220;Hello World&#8221;</em> para o nosso Widget, a descrição <em>&#8220;Hello World Demo Application&#8221;</em>, o ficheiro de arranque <em>&#8220;default.htm&#8221;</em>, que não vai necessitar do acesso à rede (internet ou local), e ainda que tem como ícone o ficheiro <strong><em>&#8220;icon.png&#8221;</em></strong>; para ícone podem usar qualquer imagem no formato .ico, .png e .jpg, com um dos seguintes formatos:</p>
<ul>
<li>36&#215;36@96</li>
<li>45&#215;45@96</li>
<li>64&#215;64@96</li>
<li>60&#215;60@128</li>
<li>60&#215;60@192</li>
<li>90&#215;90@192</li>
</ul>
<p>No entanto, devo referir que no caso do Windows Mobile 6.5 Standard, este apenas aceita ficheiros .ico, pelo que se pretendermos desenvolver Widgets para as duas plataformas, devemos sempre ter pelo menos um ficheiro .ico, aparecendo a referência para o .ico em último lugar. Por exemplo:</p>
<pre class="brush: xml; title: ; notranslate">&lt;icon src=&quot;icon.png&quot; /&gt;
&lt;icon src=&quot;icon.ico&quot; /&gt;</pre>
<p>Terminado este passo, devemos ter neste momento 3 ficheiros: <em>&#8220;default.htm&#8221;</em>, <em>&#8220;config.xml&#8221;</em> e <em>&#8220;icon.png&#8221;</em>.</p>
<p><img class="alignnone size-full wp-image-842" title="Hello World files" src="http://www.pedrolamas.com/wp-content/uploads/2009/07/Hello-World-files.jpg" alt="Hello World files" width="511" height="451" /></p>
<p>Temos agora de empacotar os três ficheiros, simplesmente seleccionando os mesmos e clicando com o botão direito do rato na selecção, para depois clicar em <em>Enviar para \ Pasta comprimida</em>. Ao fazer isto vai aparecer um novo ficheiro .zip, que contém os 3 outros ficheiros devidamente <em>&#8220;zippados&#8221;</em> (compactados em formato zip). Para que o ficheiro possa ser usado como um Widget, a extensão deve ser alterada de .zip para .wgt</p>
<p>E pronto, temos o nosso Widget prontinho para teste e distribuir! <img src='http://www.pedrolamas.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><img class="alignnone size-full wp-image-843" title="Hello Word Widget file" src="http://www.pedrolamas.com/wp-content/uploads/2009/07/Hello-Word-Widget-file.jpg" alt="Hello Word Widget file" width="511" height="451" /></p>
<p>Nesta altura falta-nos apenas testar o nosso Widget e para isso temos o emulador que abrimos anteriormente; para copiar o ficheiro para o emulador, a maneira mais fácil é clicando em <em>File \ Configure</em> e depois no campo <em>Shared Folder</em> escolhera pasta onde se encontra o nosso Widget (a pasta da imagem acima). Depois, no emulador propriamente dito ir a <em>Start</em>, abrir o <em>File Manager</em>, navegar até <em>\Storage Card</em>, e clicar sobre o ficheiro .wgt para instalar o Widget.</p>
<p><img class="alignnone size-full wp-image-839" title="Widget file on File Explorer" src="http://www.pedrolamas.com/wp-content/uploads/2009/07/Widget-file-on-File-Explorer.jpg" alt="Widget file on File Explorer" width="276" height="356" /></p>
<p>No final da instalação, é criado um novo atalho no <em>Start</em> que irá abrir o nosso Widget. E heis o resultado final! <img src='http://www.pedrolamas.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><img class="alignnone size-full wp-image-840" title="Hello World Widget running" src="http://www.pedrolamas.com/wp-content/uploads/2009/07/Hello-World-Widget-running.jpg" alt="Hello World Widget running" width="276" height="356" /></p>
<p>Podem <a href="http://www.pedrolamas.com/2009/07/25/windows-mobile-widgets-parte-1/hello-world/">aqui</a> descarregar o ficheiro <em>&#8220;Hello World.wgt&#8221;</em> que corresponde ao produto acabado.</p>
<p>Espero que tenham gostado deste pequeno tutorial, os próximos serão dentro deste alinhamento, onde tentarei explicar alguns conceitos mais avançados de forma a melhorar-mos os nossos Widgets!</p>]]></content:encoded>
			<wfw:commentRss>http://www.pedrolamas.com/2009/07/25/windows-mobile-widgets-parte-1/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Desenvolvendo Widgets para Windows Mobile 6.5</title>
		<link>http://www.pedrolamas.com/2009/07/19/desenvolvendo-widgets-para-windows-mobile-6-5/</link>
		<comments>http://www.pedrolamas.com/2009/07/19/desenvolvendo-widgets-para-windows-mobile-6-5/#comments</comments>
		<pubDate>Sun, 19 Jul 2009 12:57:55 +0000</pubDate>
		<dc:creator>Pedro Lamas</dc:creator>
				<category><![CDATA[Widgets]]></category>
		<category><![CDATA[Mobilidade]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Windows Mobile]]></category>
		<category><![CDATA[Windows Mobile 6.5]]></category>

		<guid isPermaLink="false">http://www.pedrolamas.com/?p=820</guid>
		<description><![CDATA[TweetUma das novidades que o Windows Mobile 6.5 apresentou aos programadores, foi a possibilidade de desenvolvimento de pequenas aplicações com base em HTML e CSS para a interface e JavaScript para o código, chamadas de Widgets, ao bom estilo dos &#8230; <a href="http://www.pedrolamas.com/2009/07/19/desenvolvendo-widgets-para-windows-mobile-6-5/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div style="float: right; margin-left: 10px; clear: right;"><a href="http://twitter.com/share?url=http://www.pedrolamas.com/2009/07/19/desenvolvendo-widgets-para-windows-mobile-6-5/&via=pedrolamas&text=Desenvolvendo Widgets para Windows Mobile 6.5&related=pedrolamas:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><p>Uma das novidades que o Windows Mobile 6.5 apresentou aos programadores, foi a possibilidade de desenvolvimento de pequenas aplicações com base em <acronym title="HyperText Markup Language">HTML</acronym> e <acronym title="Cascading Style Sheet">CSS</acronym> para a interface e JavaScript para o código, chamadas de Widgets, ao bom estilo dos Sidebar Gadgets que podemos encontrar no Windows Vista e 7!</p>
<p>São óbvias as vantagens desta aproximação, mas a que se destaca mais facilmente é mesmo quando comparada com o desenvolvimento de aplicações com .NET Compact Framework: enquanto que para desenvolvimento em .NET é necessário um IDE como o Visual Studio ou o SharpDevelop, para o desenvolvimento de Widgets basta recorrer-se ao Bloco de Notas!&#8230; A flexibilidade do JavaScript e das técnicas utilizadas para criar páginas dinâmicas permitem criar poderosos Widgets com a aparência de uma qualquer aplicação de Windows Mobile.</p>
<p>Dentro de alguns dias pretendo colocar aqui no blog um tutorial de como fazer um simples Widget e o instalar e utilizar no Windows Mobile 6.5, mas para já deixo apenas a ligação para a <a href="http://msdn.microsoft.com/en-us/library/dd721906.aspx" target="_blank">documentação</a> oficial na <acronym title="Microsoft Developer Network">MSDN</acronym>!</p>]]></content:encoded>
			<wfw:commentRss>http://www.pedrolamas.com/2009/07/19/desenvolvendo-widgets-para-windows-mobile-6-5/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

