loadIcon continued

Now lets discuss the other parameters of loadIcon.

size - Override the globally configured size for the specified icon group. Effects bound to the group are still applied.

state - The icon state. The icon state is one of KIcon::DefaultState, KIcon::ActiveState or KIcon::DisabledState. The icon state denotes in which state the icon is. Toolbar buttons, for example, are in state active if the mouse pointer is above them, in state disabled when they are not available, and default otherwise. Each icon state can have different effects assigned to it to give the user visual feedback.

path_store - If you want to know where the icon you just loaded is in the filesystem, you can pass a pointer to a QString here and the icon path is stored there.

canReturnNull - If the requested icon is not found, the result of loadIcon depends on this parameter. If canReturnNull is true, a null pixmap will be returned, if not, the "unknown" icon is returned.

Installing icons

Icons may come in different sizes and display depths.
I shall refer to these icons as themed icons. Icons that come in
just one form are referred to as unthemed icons.

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.

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:

QPixmappm;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:

QPixmappm;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.