Carregando e instalando ícones no KDE
Os ícones são um importante elemento de interface do usuário em qualquer ambiente de trabalho. Devido a diferentes preferências do usuário e de hardware de vídeo, um ícone pode vir em diferentes tamanhos e profundidades de exibição. Para que isso seja gerenciável, uma forma padrão de armazenamento e acesso a ícones foi desenvolvido.
Ícones são carregados usando a classe KIconLoader. Todo appliation do KDE tem um objeto iconloader global. Você pode acessar esse objeto com:
#include <kglobal.h>
#include <kiconloader.h>
KIconLoader *loader = KGlobal::iconLoader();
O iconloader carrega ícones, faz o cache deles e aplica efeitos. Para carregar um ícone, use o método loadIcon(), que é definido assim:
QPixmap loadIcon( QString name, int group, int size=0,
int state=KIcon::DefaultState,
QString *path_store=0L, bool canReturnNull=false);
Como você vê, existem muitos parâmetros. Os dois primeiros são os mais importantes:
A ideia de um grupo de ícone é um conceito importante no esquema de ícone do KDE. O grupo de ícone indica onde na tela o ícone vai ser usado. Isso é relevante, pois o usuário pode vincular os tamanhos dos ícones e efeitos visuais do KDE para cada grupo. Ao passar o grupo de ícone para o carregador de ícone, você está na verdade dizendo-lhe que encarnação do ícone deve carregar. E, exigindo o argumento do grupo, o iconloader fornece os meios para ter um consistente e configurável exame de ícone sobre toda a área de trabalho do KDE.
Por exemplo: o usuário pode configurar que ele deseja ícones de 32 pixels com 0.2 de dessaturação para as barras de ferramentas principais.
Os grupos de ícones disponíveis são apresentados abaixo. Todos estão definidos na classe KIcon, assim prefixe-os com KIcon::.
Assim, para carregar o ícone "kfind" para usar no grupo Desktop, você usaria:
QPixmap icon;
icon = loader->loadIcon("kfind", KIcon::Desktop);
Agora vamos discutir os outros parâmetros de loadIcon.
Ícones podem vir em diferentes tamanhos e profundidades de exibição. Vou me referir a esses ícones como ícones temáticos. Ícones que vêm em apenas uma forma são chamados de ícones não temáticos.
Ícones temáticos vêm em diferentes tamanhos e profundidades de exibição. Os tamanhos normais são os seguintes:
Por favor, consulte KDE icon factory para informações quais tamanhos de ícones são obrigatórios e mais. Lembre-se que cada uma destas dimensões pode ser ligada a um grupo de ícones.
Ícones temáticos são armazenados em uma hierarquia de diretório de acordo aos seus 1. profundidade, 2. tamanho e 3. contexto. O termo contexto é um novo conceito introduzido pelo esquema de ícone do KDE. O contexto de um ícone é o que o ícone significa. Os contextos padrões são apresentados abaixo:
Os "contextos" são importantes em um caso: selecionar um ícone. Quando um aplicativo deseja que o usuário selecione um ícone para, digamos, uma barra de ferramentas, seria muito hostil mostrar todos os ícones instalados no KDE. Em vez disso, é muito melhor deixar o usuário selecionar um ícone dos ícones de "ação" apenas. Todos estes representam alguma ação e portanto, são adequados para barras de ferramentas.
A hierarquia dos diretórios na qual ícones temáticos são armazenados segue. Os nomes dos diretórios são auto-explicativos.
hicolor/ 22x22/ actions/ apps/ devices/ filesystems/ mimetypes/ 32x32/ ... 48x48/ ... locolor/ 16x16/ ... 22x22/ ... 32x32/ ...
Ícones temáticos podem ser instalados de forma global com relação ao KDE, ou em um lugar especifico do aplicativo. No caso global, a hierarquia do tema do ícone reside em $KDEDIR/share/icons enquanto no caso do aplicativo específico, está em $KDEDIR/share/apps/$APPNAME/icons.
O sistema de configuração fonte do KDE (especificamente, am_edit) tem suporte para instalação de ícones temáticos. Primeiro, você tem que nomear seus ícones de uma forma que seja claro onde eles devem ser instalados. A convenção de nomenclatura é explicada na tabela que se segue:
depth | size | - | context | - | name | .png |
---|---|---|---|---|---|---|
hi | 16 | action | ||||
lo | 22 | app | ||||
32 | device | |||||
48 | filesys | |||||
mime |
Exemplos:
lo22-action-open.png hi48-app-kfind.png
Para instalar estes ícones globalmente, adicione essa linha ao seu Makefile.am.
KDE_ICON = open kfind
e para instalá-los num diretório específico de aplicativo, use isso:
icondir = $(kde_datadir)/myapp/icons icon_ICON = open kfind
Ícones temáticos são carregados com o iconloader, usando os grupos de ícone padrões. Por exemplo:
QPixmap pm;
pm = loader->loadIcon("kfind", KIcon::Desktop);
Isso carregará o ícone "kfind", de profundidade e tamanho especificados pelo grupo Desktop.
Ícones não temáticos são instalados em $KDEDIR/share/apps/$APPNAME/pics. Para instalá-los, use isso em seu Makefile.am.
icondir = $(kde_datadir)/myapp/pics icon_DATA = open kfind
Você não deve dar aos ícones nomes especiais. Além disso, nenhum outro processamento é feito com eles: sem efeitos e tamanho, seleção de profundidade.
Unthemed icons can be loaded with the iconloader using the User group. This will load a user icon:
QPixmap pm;
pm = loader->loadIcon("myicon", KIcon::User);
There are 3 ways to install icons: global themed, application specific themed and unthemed. All types of icons can be loaded with the iconloader. You should choose a specific installation depending on your needs.
Initial Author: Geert Jansen <jansen@kde.org>