Adicionando um menu ao ícone na bandeja

12 F Y

Depois de mostrar como colocar um ícone na bandeja para a sua aplicação e a mostrar o balão de notificação a partir deste ícone, irei neste post descrever o passo-a-passo para atribuir um menu para este ícone de sua aplicação .NET. Este menu será acessado através do clique com o botão direito do mouse sobre o ícone.

ContextMenuStrip na toolbar do Visual Studio 2008

O primeiro passo é adicionar um controle ContextMenuStrip ao seu formulário. Como ilustrado na imagem acima, o controle se encontra na aba Menus & Toolbars da Toolbox do VS2008.

Clique e arraste para dentro do seu form, e a representação do seu controle ficará embaixo, fora do form, assim como o NotifyIcon fica quando é arrastado. Quando você clicar no controle, irá aparecer um menu no formulário. Não se preocupe, ele está ali apenas para facilitar seu trabalho durante a edição do menu, e não aparecerá naquele lugar durante a execução da sua aplicação.

Edit Items

Configure o menu de acordo com seu desejo, mudando sua aparência e adicionando itens. Tudo isso pode ser feito através da tela Edit Items, disponível ao clicar na imagem de “play” que surge ao clicar no componente.

Quando acabar, é só adicionar os eventos de clique para cada item do menu. Isto não pode ser feito através da tela Edit Items. Para acessar os eventos, deixe a janela de propriedades do Visual Studio visível e clique no componente. Quando o menu aparecer no form, clique no item desejado. Depois, clique no botão com um “raio” na janela de propriedades para exibir os eventos, e escolha qual evento você deseja adicionar algum comportamento. Provavelmente você irá escrever código para o evento Click.

Depois de atribuir o que deve acontecer quando cada item do menu for clicado, é hora de atribuir este menu ao seu ícone da bandeja. Para isso, clique no componente do ícone, e na janela de propriedades altere o valor da propriedade ContextMenuStrip para o menu que você acabou de criar. Isto irá associar este menu ao seu ícone, e automaticamente quando o ícone for clicado, seu menu irá ser mostrado para o usuário. No meu projeto de exemplo, o resultado é o seguinte:

Ícone na bandeja com menu

Pronto, é só isso! Seu menu está funcionando. Se forem bem escolhidos, os itens deste menu irão refletir as atividades mais comuns e que não exigem que toda a interface seja mostrada. Através deste menu, o usuário poderá então ser mais produtivo ao utilizar a aplicação.

Apesar de meu exemple ter sido feito em C#, o passo-a-passo deste artigo (e dos anteriores também) pode ser utilizado tranquilamente para quem prefere usar VB.NET.

Clique aqui para baixar um projeto com o código final deste exemplo. Este projeto tem o mínimo de código necessário para colocar o ícone na bandeja, exibir balões de notificação e atribuir um menu para o ícone.


Exibindo balões em ícones da bandeja

11 F Y

No post anterior, expliquei como colocar um ícone na bandeja para sua aplicação .NET. Mostrei apenas o básico, mas que já é suficiente para alguns usos. Outras características possíveis de se adicionar nestes botões, como os balões de notificação e os menus, trazem um poder muito grande ao seu pequeno ícone.

Configurando e exibindo balões de notificação para ícones na bandeja

Estes são aqueles balões que gerenciadores de download mostram quando um arquivo acaba de ser baixado, ou que o Windows mostra quando há algum problema de segurança, tipo anti-vírus desatualizado ou firewall desabilitado.

Balão de Notificação

Usá-los é bem simples. Você pode configurar um balão padrão, para mostrar quando o mouse é deixado em cima do ícone por exemplo, ou exibir um balão para avisar de algum evento ocorrido na execução de sua aplicação como o término de um download, no caso dos gerenciadores citado anteriormente.

Propriedades de NotifyIcon para o Balão

Para configurar um balão padrão, basta atribuir valores para as propriedades BalloonTipIcon, BalloonTipText e BaloonTipTitle de NotifyIcon, na janela de propriedades. Para mostrar o balão, chame a seguinte linha de código:

notifyIcon1.ShowBalloonTip(10000);

Onde, 10000 é um timeout, um tempo em milissegundos até o balão desaparecer. De acordo com algumas fontes que li, mesmo que você bote 3000ms por exemplo, o sistema operacional vai deixar por no mínimo entre 10 e 30 segundos. No teste que fiz com o XP, o mínimo foram 10s.

Para fazer o balão aparecer quando o mouse passa por cima do ícone*, basta chamar a linha de código acima no evento de MouseMove do seu NotifyIcon. O resultado desta chamada para as propriedades com os valores da imagem acima é o seguinte:

Balão com dados setados na janela de propriedades

Para mostrar um balão com outro texto, algo que necessite por exemplo de dados de tempo de execução, eu recomendo não alterar aquelas propriedades, mas sim chamar outra assinatura deste método. Esta outra assinatura recebe mais três parâmetros além do timeout:

notifyIcon1.ShowBalloonTip(timeout, tituloDoBalao, textoDoBalao, tipoDoBalao);

O título e o texto são auto-explicativos. O tipo do balão é um valor do tipo ToolTipIcon que definirá a imagem que aparece dentro do balão. Este parâmetro pode assumir o valor ToolTipIcon.Info, que diz que o balão representa uma informação qualquer, ToolTipIcon.Error, no qual o balão representa um erro e ToolTipIcon.Warning, que irá conter um aviso para o usuário.

De cima para baixo: Info, Error e Warning

Para exibir o balão, basta em qualquer lugar de seu código, chamar a linha de código acima passando os parâmetros desejados. Você pode avisar sobre algum evento que aconteceu durante a execução da sua aplicação, e mesmo que o usuário esteja com a atenção em outra aplicação, poderá ver o aviso através do balão.

Fica para o próximo post o tutorial de como colocar um menu, acessível ao clicar com o botão direito no ícone da bandeja, onde o usuário poderá acessar algumas funcionalidades de sua aplicação.

* Não recomendo mostrar o balão ao passar o mouse por cima do ícone, pois dificulta clicar no ícone e a também complica a exibição do menu.


Bichano.NET – Desenvolvendo aplicações para o Orkut

11 F Y

Pessoal,

Eu, Lucas Mello, João Paulo Oliveira e Flávio Almeida conseguimos finalmente botar nossa aplicação do Orkut lá dentro. Depois de várias semanas lutando pela aprovação, conseguimos que o pessoal do Orkut aprovasse. Por sinal, todos os agradecimentos possíveis e imagináveis pra esse pessoal que avalia e testa os aplicativos antes de serem aprovados. Eles realmente vão a procura de bugs que nós, desenvolvedores sem uma equipe de testes não conseguiamos imaginar.

Para acessar o Bichano.NET, você pode ir simplesmente em http://www.bichano.net, que você será redirecionado para nossa aplicação lá dentro do Orkut, ou ir direto em http://www.orkut.com.br/Application.aspx?appId=523254528764 e adicionar. Mas enfim…

O QUE É O BICHANO?

O Bichano.NET é um aplicativo para o Orkut que visa unir as pessoas que possuem pets. Com o Bichano, você pode ter um “mini-perfil” de seu pet, com foto e tudo mais, dentro do seu perfil do Orkut. Ao ver o aplicativo inteiro, você pode criar perfis de novos pets, pode procurar e adicionar outros pets como amigos, enviar recados para outros pets, criar a agenda de seus animais e procurar por pets de mesma espécie/raça que morem na mesma cidade que você. Com isso você pode encontrar pessoas para trocar informações, para cruzar seus pets e várias outras atividades.

E como é que nós fizemos o Bichano? Seguinte… o Bichano está participando de um concurso de aplicações para redes sociais organizado pela Mentez (http://www.mentez.com). Com isso, recebemos dos organizadores um servidor e uma base de dados online para trabalhar… mas com qualquer máquina que fique ligada 24 horas na net, e que você possa acessar externamente através de um endereço fixo (eu ouvi você falar “DynDNS” (http://www.dyndns.com) ou “No-IP” (http://www.no-ip.com) ?), ou até mesmo com os serviços de hospedagem gratuita que existem por aí, dá pra desenvolver.

Primeiros Passos

A primeira coisa que você deve fazer para desenvover uma aplicação pro Orkut é pedir acesso ao sandbox (sandbox.orkut.com). É nele que você vai dar os primeiros passos de sua aplicação, até ela estar madura o suficiente para ser aprovada pelo time do Orkut. Você pode pedir este acesso através deste link: http://code.google.com/support/opensocialsignup/. Infelizmente, eles tem uma pequena falha, e não enviam um email para você avisando que sua conta está pronta para acessar, logo, espere umas 24 horas e tente, provavelmente você já vai ter acesso. Enquanto isso, vá lendo a api de OpenSocial, que é a maneira que você tem de se comunicar com a rede social, podendo pegar alguns (poucos, pouquissimos…) dados do usuário entre outras coisas.

O que vou usar para desenvolver?

Você pode usar qualquer coisa… Nós fizemos nosso aplicativo com .NET, mas existem outros, como o (excelente, por sinal) TypeRacer e aquelas aplicações do globoesporte que são desenvolvidos em várias outras tecnologias. A nossa escolha por .NET (assim como qualquer outra escolha que “exija” que a página vá dentro de um iframe, como PHP ou Java), acarretou em uma série de dificuldades, pois por questões de segurança, os browsers não permitem que a página interna do iframe chame funções de javascript da página externa ao iframe… isso tira 99% das coisas legais que dá pra fazer com OpenSocial… mas o 1% ainda é bem legal.

A alternativa, pra você poder usar OpenSocial de verdade, é usar Google Gadgets. Com isso, você escreve no XML que é enviado ao Orkut e pode chamar tudo que está pronto lá.

Dificuldades

Além do pouco conhecimento na API e em como usá-la com .NET, uma coisa que foi séria no desenvolvimento do Bichano foi a quantidade de informações desencontradas que existem na net… Em um site do google, falando só da API OpenSocial, você se interessa por uma funcionalidade X… daí, quando vai usar na sua aplicação no Orkut, nada… Normal. Cada rede social tem sua implementação de OpenSocial, e ainda falta MUITA coisa… principalmente um esquema que dispensaria o uso de IFRAME e provavelmente serviria para fazer as chamadas de OpenSocial.

Coisas Legais

Putz, dá pra aprender muita coisa, você começa a prestar mais atenção nas requisições que sua página vai fazer, aprende algumas alternativas de como fazer as coisas… enfim, é muito divertido. E quando o pessoal do Orkut aprova, e você vê sua aplicação sendo acessada, a sensação é MUITO boa!

Só pra se ter uma noção, agora, às 3:45 da madrugada, momento em que estou com mais dois amigos da equipe de desenvolvimento do Bichano.NET aqui no Centro de Informática da UFPE, a aplicação conta com 3650 usuários cadastrados e quase 18000 pageviews… em 2 dias e meio no ar!

Enfim, quem quiser qualquer dica, ajuda, apoio ou qualquer outra coisa, entra em contato que eu vejo o que dá pra fazer!

Ai vão algumas coisas legais de ler pra começar a desenvolver pra o Orkut:

http://code.google.com/apis/opensocial/docs/ – API de OpenSocial

http://code.google.com/apis/orkut/docs/orkutdevguidelines.html – Guidelines para aplicações para o Orkut

http://www.google.com/webmasters/gadgets/ – Google Gadgets