Muitos sistemas operacionais têm uma barra de tarefas, como o encaixe do Mac OS X, que pode conter um ícone representando um aplicativo. O Adobe® AIR® oferece uma interface que permite interagir com o ícone na barra de tarefas através da propriedade
NativeApplication.nativeApplication.icon
.
Sobre ícones na barra de tarefas
O AIR cria o objeto
NativeApplication.nativeApplication.icon
automaticamente. O tipo de objeto é DockIcon ou SystemTrayIcon, dependendo do sistema operacional. É possível determinar qual destas subclasses InteractiveIcon é suportada pelo AIR no sistema operacional atual usando as propriedades
NativeApplication.supportsDockIcon
e
NativeApplication.supportsSystemTrayIcon
. A classe base InteractiveIcon oferece as propriedades
width
,
height
e
bitmaps
, que você pode usar para alterar a imagem utilizada para o ícone. No entanto, acessar propriedades específicas de DockIcon ou SystemTrayIcon no sistema operacional incorreto gera um erro de execução.
Para definir ou alterar a imagem usada para um ícone, crie uma matriz que contenha uma ou mais imagens e a atribua à propriedade
NativeApplication.nativeApplication.icon.bitmaps
. O tamanho dos ícones na barra de tarefas pode ser diferente nos diferentes sistemas operacionais. Para evitar a degradação da imagem devido ao dimensionamento, é possível adicionar vários tamanhos de imagem à matriz
bitmaps
. Se você fornecer mais de uma imagem, o AIR selecionará o tamanho mais próximo do tamanho de exibição atual do ícone na barra de tarefas e só o dimensionará se for necessário. O exemplo abaixo define a imagem para um ícone da barra de tarefas usando duas imagens:
NativeApplication.nativeApplication.icon.bitmaps =
[bmp16x16.bitmapData, bmp128x128.bitmapData];
Para alterar a imagem de um ícone, atribua uma matriz que contenha a(s) nova(s) imagem(ns) à propriedade
bitmaps
. Você pode animar o ícone alterando a imagem em resposta a um evento
enterFrame
ou
timer
.
Para remover o ícone da área de notificação no Windows e no Linux ou para restaurar a aparência do ícone padrão no Mac OS X, defina
bitmaps
como uma matriz vazia:
NativeApplication.nativeApplication.icon.bitmaps = [];
Ícones de encaixe
O AIR suporta ícones de encaixe quando
NativeApplication.supportsDockIcon
é
true
. A propriedade
NativeApplication.nativeApplication.icon
representa o ícone do aplicativo no encaixe (não um ícone de encaixe na janela).
Nota:
O AIR não permite alterar ícones de janela no encaixe do Mac OS X. Além disso, as alterações feitas no ícone de encaixe de aplicativo só são aplicadas enquanto um aplicativo está em execução — o ícone reassume a aparência normal quando o aplicativo é encerrado.
Menus com ícone no encaixe
É possível adicionar comandos ao menu de encaixe padrão criando um objeto NativeMenu que contenha os comandos e atribuindo o objeto à propriedade
NativeApplication.nativeApplication.icon.menu
. Os itens do menu são exibidos acima dos itens padrão do menu com ícones no encaixe.
Fazer o encaixe pular
É possível fazer com que o ícone no encaixe pule chamando o método
NativeApplication.nativeApplication.icon.bounce()
. Se você definir o parâmetro
bounce() priority
como informativo, o ícone pulará uma vez. Se você definir o parâmetro como crítico, o ícone pulará até o usuário ativar o aplicativo. As constantes do parâmetro
priority
são definidas na classe NotificationType.
Nota:
O ícone não pula se o aplicativo já está ativo.
Eventos de ícones no encaixe
Quando o usuário clica em um ícone no encaixe, o objeto NativeApplication despacha um evento
invoke
. Se o aplicativo não estiver em execução, será iniciado pelo sistema. Caso contrário, o evento
invoke
será entregue à ocorrência do aplicativo em execução.
Ícones de bandeja do sistema
O AIR oferece suporte a ícones de bandeja do sistema quando
NativeApplication.supportsSystemTrayIcon
for
true
, o que no momento só ocorre no Windows e na maioria das distribuições do Linux. No Windows e no Linux, os ícones de bandeja do sistema são exibidos na área de notificação da barra de tarefas. Nenhum ícone é exibido por padrão. Para mostrar um ícone, atribua uma matriz contendo objetos BitmapData à propriedade
bitmaps
do ícone. Para alterar a imagem do ícone, atribua uma matriz que contenha as novas imagens a
bitmaps
. Para remover o ícone, defina
bitmaps
como
null
.
Menus de ícones da bandeja do sistema
É possível adicionar um menu ao ícone da bandeja do sistema criando-se um objeto NativeMenu e o atribuindo à propriedade
NativeApplication.nativeApplication.icon.menu
(o sistema operacional não oferece um menu padrão). Acesse o menu do ícone da bandeja do sistema clicando no ícone com o botão direito do mouse.
Dicas de ferramentas sobre ícones da bandeja do sistema
Adicione uma dica de ferramenta a um ícone definindo a propriedade tooltip:
NativeApplication.nativeApplication.icon.tooltip = "Application name";
Eventos de ícone da bandeja do sistema
O objeto SystemTrayIcon referenciado pela propriedade NativeApplication.nativeApplication.icon despacha um ScreenMouseEvent para eventos
click
,
mouseDown
,
mouseUp
,
rightClick
,
rightMouseDown
e
rightMouseUp
. Você pode usar esses eventos, junto com um menu de ícone, para que os usuários possam interagir com seu aplicativo quando ele não tiver janelas visíveis.
Exemplo: Criação de um aplicativo sem janelas
O exemplo a seguir cria um aplicativo do AIR que tem um ícone na bandeja do sistema, mas nenhuma janela visível. (A propriedade
visible
do aplicativo não deve ser definida como
true
no descrito do aplicativo, ou a janela será visível quando o aplicativo for iniciado.)
package
{
import flash.display.Loader;
import flash.display.NativeMenu;
import flash.display.NativeMenuItem;
import flash.display.NativeWindow;
import flash.display.Sprite;
import flash.desktop.DockIcon;
import flash.desktop.SystemTrayIcon;
import flash.events.Event;
import flash.net.URLRequest;
import flash.desktop.NativeApplication;
public class SysTrayApp extends Sprite
{
public function SysTrayApp():void{
NativeApplication.nativeApplication.autoExit = false;
var icon:Loader = new Loader();
var iconMenu:NativeMenu = new NativeMenu();
var exitCommand:NativeMenuItem = iconMenu.addItem(new NativeMenuItem("Exit"));
exitCommand.addEventListener(Event.SELECT, function(event:Event):void {
NativeApplication.nativeApplication.icon.bitmaps = [];
NativeApplication.nativeApplication.exit();
});
if (NativeApplication.supportsSystemTrayIcon) {
NativeApplication.nativeApplication.autoExit = false;
icon.contentLoaderInfo.addEventListener(Event.COMPLETE, iconLoadComplete);
icon.load(new URLRequest("icons/AIRApp_16.png"));
var systray:SystemTrayIcon =
NativeApplication.nativeApplication.icon as SystemTrayIcon;
systray.tooltip = "AIR application";
systray.menu = iconMenu;
}
if (NativeApplication.supportsDockIcon){
icon.contentLoaderInfo.addEventListener(Event.COMPLETE,iconLoadComplete);
icon.load(new URLRequest("icons/AIRApp_128.png"));
var dock:DockIcon = NativeApplication.nativeApplication.icon as DockIcon;
dock.menu = iconMenu;
}
}
private function iconLoadComplete(event:Event):void
{
NativeApplication.nativeApplication.icon.bitmaps =
[event.target.content.bitmapData];
}
}
}
Nota:
Ao usar o componente WindowedApplication do Flex, defina o atributo
visible
da tag WindowedApplication como
false
. Este atributo substitui a configuração no descritor de aplicativo.
Nota:
O exemplo pressupõe que existem arquivos de imagem chamados
AIRApp_16.png
e
AIRApp_128.png
em um subdiretório
icons
do aplicativo. (Arquivos de ícone de exemplo, que você pode copiar para a pasta do seu projeto, são fornecidos no SDK do AIR.)
Ícones e botões da barra de tarefas do Windows
As representações em forma de ícone de janelas geralmente são exibidas na área de janela de uma barra de tarefas ou de um encaixe, para que os usuários tenham fácil acesso a janelas em segundo plano ou minimizadas. O encaixe do Mac OS X exibe um ícone do seu aplicativo e um ícone de cada janela minimizada. As barras de tarefas do Microsoft Windows e do Linux exibem um botão que contém o ícone do programa e o título de cada janela de tipo normal do seu aplicativo.
Realce do botão da janela na barra de ferramentas
Quando uma janela está em segundo plano, você pode notificar o usuário de que ocorreu um evento de interesse relacionado à janela. No Mac OS X, você pode notificar o usuário fazendo o ícone de encaixe do aplicativo pular (conforme descrito em
Fazer o encaixe pular
). No Windows e no Linux, você pode realçar o botão da barra de tarefas da janela chamando o método
notifyUser()
da ocorrência NativeWindow. O parâmetro
type
passado para o método determina a urgência da notificação:
-
NotificationType.CRITICAL
: o ícone da janela fica piscando até o usuário colocar a janela no primeiro plano.
-
NotificationType.INFORMATIONAL
: o ícone da janela fica realçado pela troca de cores.
Nota:
No Linux, só há suporte para o tipo informativo de notificação. Passar um dos valores de tipo para a função
notifyUser()
criará o mesmo efeito.
A seguinte instrução realça o botão da barra de tarefas de uma janela:
stage.nativeWindow.notifyUser(NotificationType.CRITICAL);
Chamar o método
NativeWindow.notifyUser()
em um sistema operacional que não dá suporte a notificações de janela não produz qualquer efeito. Use a propriedade
NativeWindow.supportsNotification
para determinar se a notificação de janela é suportada.
Criação de janelas sem botões ou ícones na barra de tarefas
No sistema operacional Windows, as janelas criadas com os tipos
utility
ou
lightweight
não aparecem na barra de tarefas. As janelas invisíveis também não.
Como a janela inicial é necessariamente do tipo
normal
, para criar um aplicativo sem nenhuma janela aparecendo na barra de tarefas, você deve fechar a janela inicial ou deixá-la invisível. Para fechar todas as janelas do seu aplicativo sem encerrá-lo, defina a propriedade
autoExit
do objeto NativeApplication como
false
antes de fechar a última janela. Para impedir que a janela inicial se torne visível, adicione
<visible>false</visible>
ao elemento
<initalWindow>
do arquivo de descrição do aplicativo (e não defina a propriedade
visible
como
true
ou chame o método
activate()
da janela).
Nas novas janelas abertas pelo aplicativo, defina a propriedade
type
do objeto NativeWindowInitOption passado para o construtor de janela como
NativeWindowType.UTILITY
ou
NativeWindowType.LIGHTWEIGHT
.
No Mac OS X, as janelas minimizadas são exibidas na barra de tarefas do encaixe. Para impedir que o ícone minimizado seja exibido, oculte a janela em vez de minimizá-la. O exemplo a seguir monitora um evento de alteração
nativeWindowDisplayState
e o cancela se a janela está sendo minimizada. O manipulador define a propriedade
visible
da janela como
false
:
private function preventMinimize(event:NativeWindowDisplayStateEvent):void{
if(event.afterDisplayState == NativeWindowDisplayState.MINIMIZED){
event.preventDefault();
event.target.visible = false;
}
}
Se uma janela está minimizada no encaixe do Mac OS X quando você define a propriedade
visible
como
false
, o ícone no encaixe não é removido. Um usuário ainda poderá clicar no ícone para fazer com que a janela reapareça.
|
|
|