Development/Architecture/KDE3/Icon Loader/pt-br

From KDE TechBase
Revision as of 20:10, 29 June 2014 by Aracele (talk | contribs) (Created page with "Í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 c...")


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.

Loading icons

Acessando o iconloader

Í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();

Carregando ícones com loadIcon

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:

  1. name - O nome do ícone a ser carregado. Você deve passar o nome do ícone aqui, sem extensão.
  2. group - O grupo do ícone. Isto é explicado abaixo.

Grupos de ícone

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::.

  • Desktop - Ícones para uso na área de trabalho, no gerenciador de arquivos e locais similares.
  • Toolbar - Ícone para as barras de ferramentas normais.
  • MainToolbar - Ícones para a barra de ferramentas principal. Um aplicativo pode ter várias barras de ferramentas, das quais uma é sempre a principal. Isso normalmente tem ítens como "Salvar" e "Abrir" e contém ícones maiores que outras barras de ferramentas.
  • Small - Vários ícones pequenos, como os de menus pop-up, exibição em lista e listas em árvore.
  • User - Grupo especial para carregar ícones específicos de aplicativos. Isso é explicado na seção 3: Instalando ícones.

Assim, para carregar o ícone "kfind" para usar no grupo Desktop, você usaria:

QPixmap icon;
icon = loader->loadIcon("kfind", KIcon::Desktop);

loadIcon continua

Agora vamos discutir os outros parâmetros de loadIcon.

  1. size - Substituir o tamanho configurado globalmente para o grupo de ícone especificado. Efeitos ligados ao grupo ainda são aplicados.
  2. state - O estado do ícone. O estado do ícone é KIcon::DefaultState, KIcon::ActiveState ou KIcon::DisabledState. O estado ícone denota em que estado o ícone está. Botões da barra de ferramentas, por exemplo, estão no estado "ativo se o ponteiro do mouse está sobre eles, no estado desativado quando eles não estão disponíveis, e padrão caso contrário. Cada estado do ícone pode ter diferentes efeitos atribuídos a ele para dar o feedback ao visual do usuário.
  3. path_store - Se você quer saber onde o ícone que você acabou de carregar está no sistema de arquivos, você pode passar um ponteiro para uma QString aqui e o caminho do ícone é armazenado lá.
  4. canReturnNull - Se o ícone requisitado não for encontrado, o resultado de loadIcon depende desse parâmetro. Se canReturnNull é true, um pixmap nulo retornará, se não, o ícone "unknown" é retornado.

Instalando ícones

Í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.

Default icon sizes

Themed icons come in different sizes and display depths. The standard sizes are:

40 Colors
16x16 pixels
22x22 pixels
32x32 pixels
Truecolor
22x22 pixels
32x32 pixels
48x48 pixels

Please refer to the KDE icon factory for information on which icon sizes are mandatory and more. Remember that each of these sizes can be bound to an icon group.

Icon context

Themed icons are stored in a directory hierarchy according to their 1. depth, 2. size and 3. context. The term context is new concept introduced by the KDE icon scheme. The context of an icon is what the icon means. The standard contexts are given below:

  • action - The icon represents an action in a toolbar, for example "Open" or "Save".
  • application - The icon represents an application, for example "kfind".
  • device - The icon represents something related to a device, for example "floppy" or "mount".
  • filesystem - The icon represents something in the filesystem, for example "directory", "socket" or "trashcan".
  • mimetype - The icon represents an mimetype, for example "text/html".

Contexts are important in one case: selecting an icon. When an application wants the user to select an icon for, say, a toolbar, it would be very user unfriendly to show every single icon installed in KDE. Instead, it is much better to let the user select an icon from the "action" icons only. These all represent some action and therefore are suitable for in toolbars.

Directory hierarchy

The directory hierarchy in which themed icons are stored follows. The directory names are self explanatory.

hicolor/
    22x22/
        actions/
        apps/
        devices/
        filesystems/
        mimetypes/
    32x32/
        ...
    48x48/
        ...

locolor/
    16x16/
        ...
    22x22/
        ...
    32x32/
        ...

Directory roots

Themed icons can be installed either globally with respect to KDE, or in application specific place. In the global case, the icon theme hierarchy resides under $KDEDIR/share/icons while in the application specific case, it is under $KDEDIR/share/apps/$APPNAME/icons.

Installing themed icons

The KDE source configuration system (specifically, am_edit) has support for installing themed icons. First, you have to name your icons in a way that it is clear where it must be installed. The naming convention is explained in the table below:

depth size - context - name .png
hi 16 action
lo 22 app
32 device
48 filesys
mime

Examples:

lo22-action-open.png
hi48-app-kfind.png

To install these icons globally, add this line to your Makefile.am.

KDE_ICON = open kfind

and to install them in an application specific directory, use this:

icondir = $(kde_datadir)/myapp/icons
icon_ICON = open kfind

Loading themed icons

Themed icons are loaded with the iconloader, using the standard icon groups. For example:

QPixmap pm;
pm = loader->loadIcon("kfind", KIcon::Desktop);

This will load the "kfind" icon, of depth and size specified for the Desktop group.

Unthemed icons

Unthemed icons are installed in $KDEDIR/share/apps/$APPNAME/pics. To install them, use this in you Makefile.am.

icondir = $(kde_datadir)/myapp/pics
icon_DATA = open kfind

You must not give the icons special names. Also, no further processing is done on them: no effects and size,depth selection is done.

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);

Conclusion

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 <[email protected]>