
Depois de mais de uma ano de projeto, finalmente esta liberado ao publico o Google Destop Gadget da bolsa de Nova Iorque ! um sistema de alertas para investidores, que funciona no google desktop, é um prazer fazer parte deste projeto
Posts Tagged ‘gadget’
nyse google gadget
December 11th, 2009google gadget – div com links
November 26th, 2008
Olás apesar de saber que este problema é bem específico, vou discutir a solução aqui assim mesmo, vai que alguém passa pelo mesmo … =)
é o seguinte, imagina uma div que precisa aumentar de tamanho quando passamos o mouse por cima, e reduzir quando saimos com o mouse de cima, pois bem isto seria bem facinho, bastava implementar algo no onmouseover, e o onmouseout e todo ficam felizes.
mas como nada é simples, tem dois labels dentro da div que são links, e quando o mouse vai sobre eles dispara o método onmouseout da div que os contém … assim foi necessário implementar uma solução que pudesse ter labels como links dentro de uma div expansível.
O jeito foi tratar os clicks do mouse na div e delegar para o comportamento de cada label, e para evitar diversos ifs com os nomes das labels preferi usar uma regra de nomes, onde o metodo chamado eh o nome do componente seguido de _onclick().
Este techo de codigo eh o tratador de cliques da div
function div1_onclick() {
for( var n=0; n < div1.children.count; n++ ){
var child = div1.children(n);
if( child.y < event.y
&& child.y + child.height > event.y ){
eval(child.name+'_onclick();');
debug.trace(child.name);
}
}
}
Note que percorro a lista de filhos da div, e baseado no event.y comparo se o o mesmo esta entre o y e o y+ altura do componente filho e assim identifico o nome do mesmo e uso para montar o nome do método a ser chamado, e com o método eval() executo o referido método. simples não ? =)
segue em anexo o codigo do google gadget para fazer isto.
E o gadget pronto para ser instalado
sqlite no google gadget
October 13th, 2008Acompanhando a lista de discussão do google gadget developer, vi um assunto bem interessante hoje, sobre a integração do sqlite com o google gadget, ou seja como colocar um mini banco de dados dentro do google gadget …
o codigo referenciado do blog de desenvolvimento do google, eh simples, mas foi necessario remexer nos comentarios do post para poder colocar as pecas juntas e funcionando. O que fiz basicamente eh um gadget que grava um valor no banco em memoria, e apos isto joga este valor numa label de forma a representar tanto a gravação quanto a leitura de dados.
vamos ver o codigo por partes
este trecho é o método que esta assinalado para ser executado quando da abertura do gadget
function view_onOpen() {
Aqui a dll do acesso banco é lida
var sqliteDLL = storage.extract(“sqlite3.dll”);
A DLL lida eh registrada manualmente
var wshShell = new ActiveXObject(“WScript.Shell”);
wshShell.run(“regsvr32 /s \”"+sqliteDLL+”\”", 0, true);
Cria o objeto baseado no activeX registrado
var sqlite = new ActiveXObject(“LiteX.LiteConnection”);
escreve uma linha no debug do google gadget
debug.trace(‘SQLite3 version: ‘ + sqlite.version(true) );
Abre em memória o banco de dados
sqlite.open(“:memory:”);
Cria a tabela e adiciona dados
sqlite.execute(“CREATE TABLE Test(a);”);
sqlite.execute(“INSERT INTO test VALUES (4);”);
Executa a consulta
var statement = sqlite.prepare( ‘SELECT * FROM test;’);
Varre o conjunto de resultados e adiciona o resultado na label1
while( ! statement.step() ){
label1.innerText = label1.innerText + statement.ColumnValue(0);
}
Limpeza final, fecha o statement e fecha a conexão
statement.close();
sqlite.close();
}
Nada complicado …
segue o codigo fonte do gadget sql_lite_sample
e as referências usadas
how to embed SQLite in a Google Gadget
http://googledesktopapis.blogspot.com/2008/07/tip-embed-sqlite3-database.html
Home of the activex wrapper
http://www.assembla.com/wiki/show/litex
documentation of the wrapper
http://www.assembla.com/spaces/litex/documents/c-5hiSb6ar3y3sab7jnrAJ/download/litex.pdf
home of the sqlite
http://www.sqlite.org/
API do google gadget
http://code.google.com/apis/desktop/docs/gadget_apiref.html
mini webserver
September 29th, 2008Estou desenvolvendo google gadgets, e alguns dados recebo de uns serviços no server, mas para desenvolver com certa independência procurei isolar os resultados destas chamadas de serviços em arquivo texto, que vou chamar remotamente como se fossem os serviços.
Neste caso os dados resultantes da chamada do serviço estão no formato json, veja um exemplo :
{“date”:”02 Sep”,”error”:”",”errorFieldName”:”",”items”:[
],”itemsMap”:null,”page”:0,”pageSize”:0,”pageTotal”:0,
“rowCount”:0,”time”:”18:14:34 EDT”}
Mas esbarrei no problema de ter que instalar um http server local para facilitar os testes, e com certeza nâo queria usar o IIS, ou o xampp que costumeiramente uso para desenvolvimento PHP, então após um cadim de pesquisa achei este simpático miniwebserver, que funciona de forma bem simples:
- passo 1. executa o jar
- passo 2. não tem passo 2 =)
só isto e nada mais, executa o jar e pronto ele disponibiliza através da porta 80 os arquivos que estiverem no diretório em que o jar foi executado. fácil rápido e pequeno, show de bola !
google gadget – debug console
September 26th, 2008Agora recomeça a sessâo estou desenvolvendo google gadgets ! e como primeira lembrança : use o debug console ele é seu amigo … =)
este link detalha como usar : http://code.google.com/apis/desktop/docs/Tutorials/GadgetDesigner/index.html#5
mas em sintese basta chamar debug.info(‘mensagem’);
Google Desktop 5.8 – It’s time to party! (i’m there)
September 15th, 2008I’m there just waiting … =)

Here is the announce email
Hello,
The latest release of Google Desktop has been dubbed “the performance
release” by various members of our team. We hope you find Google
Desktop 5.8 to be faster, more stable, and more enjoyable.To celebrate, we’re throwing a get-together at our Lively developer
lounge this Wednesday, September 17, at 10:30 a.m. Pacific time to
11:30 a.m.Here’s the URL to the developer lounge:
http://www.lively.com/dr?rid=-6058992854362690611
And start times for other timezones:
So get your avatars ready and stop by to say hello. We’d love to hear
your thoughts about 5.8 and the future of Google Desktop.Now as far as the release goes, Joi’s post on the Google Blog goes
into detail about the planning and engineering behind the release:http://googleblog.blogspot.com/2008/09/google-desktop-58-for-windows-increased.html
lively
August 26th, 2008
Oh well, here I am at the google gadgets developers room … nobody there
that’s ok 6:4AM ET, everyone is supossed to be sleeping anyway heheheh,
visit there at
http://www.lively.com/dr?rid=-6058992854362690611
fade color
August 25th, 2008This is a experiment on google gadgets, based on 2 colors calculate the transition of colors to go from the first to the second, in order to create a nice color transition.
This is the link for the gadgets page : my-google-gadgets
And this is the piece of code that make the color calculations :
this dont validate the colors
*/
function calculateColor( startColor, endColor, step, iterations ) {
var redStart = startColor.substring(1, 3);
var greenStart = startColor.substring(3, 5);
var blueStart = startColor.substring(5);
var redEnd = endColor.substring(1, 3);
var greenEnd = endColor.substring(3, 5);
var blueEnd = endColor.substring(5);
var redStepColor = calculateOneColor( redStart, redEnd, step, iterations );
var greenStepColor = calculateOneColor( greenStart, greenEnd, step, iterations );
var blueStepColor = calculateOneColor( blueStart, blueEnd, step, iterations );
return “#” + redStepColor + greenStepColor + blueStepColor;
}
/*
convert each color in the Hex format to integer
then calculate the difference, divide the difference
by the number of iterations and multiply by the current
step, convert back to hexa and you have the step color =)
*/
function calculateOneColor( start, end, step, iterations ) {
var intStart = parseInt(“0X” + start );
var intEnd = parseInt(“0X” + end );
var difference = intEnd – intStart;
var intOneStep = difference / iterations;
var intResult = Math.round( intStart + ( intOneStep * step ));
var result = intResult.toString(16).toUpperCase();
if( result.length < 2 ) {
result = “0″ + result;
}
return result;
}