Source: kicontheme.h

# Source: kicontheme.h |
Annotated List
Files
Globals
Hierarchy
Index
Main

    /* vi: ts=8 sts=4 sw=4
     *
     * $Id: kicontheme.h,v 1.13 2000/10/13 23:22:27 antlarr Exp $
     *
     * This file is part of the KDE project, module kdecore.
     * Copyright (C) 2000 Geert Jansen <jansen@kde.org>
     *                    Antonio Larrosa <larrosa@kde.org>
     *
     * This is free software; it comes under the GNU Library General
     * Public License, version 2. See the file "COPYING.LIB" for the
     * exact licensing terms.
     *
     */

    #ifndef __KIconTheme_h_Included__
    #define __KIconTheme_h_Included__

    #include <qstring.h>
    #include <qstringlist.h>
    #include <qlist.h>

    class KConfig;
    class KIconThemeDir;

    class KIconThemePrivate;

    class KIconPrivate;

    /**
     * One icon as found by KIconTheme. Also serves as a namespace containing
     * icon related constants.
     */
    class KIcon
    {
    public:
        KIcon() { size = 0; }

        /** Return true if this icon is valid, false otherwise. */
        bool isValid() const { return size != 0; }

        enum Context { Any, Action, Application, Device, FileSystem, MimeType };
        enum Types { Fixed, Scalable };
        enum MatchType { MatchExact, MatchBest };
        // if you add a group here, make sure to change the config reading in
        // KIconLoader too
        enum Group { NoGroup=-1, Desktop=0, Toolbar, MainToolbar, Small,
    	         Panel, LastGroup, User };
        enum StdSizes { SizeSmall=16, SizeMedium=32, SizeLarge=48 };
        enum States { DefaultState, ActiveState, DisabledState, LastState };
        enum Overlays { LockOverlay=0x100, ZipOverlay=0x200, LinkOverlay=0x400,
    	    OverlayMask = ~0xff };

        /** The size in pixels of the icon. */
        int size;

        /** The context of the icon. */
        int context;

        /** The type of the icon: Fixed or Scalable. */
        int type;

        /** The full path of the icon. */
        QString path;

    private:
        KIconPrivate *d;
    };

    /**
     * Class to use/access icon themes in KDE. This class is used by the
     * iconloader but can be used by others too.
     */
    class KIconTheme
    {
    public:
        /** Load an icon theme by name.  */
        KIconTheme(const QString& name, const QString& appName=QString::null);
        ~KIconTheme();

        /** The stylized name of the icont theme. */
        QString name() const { return mName; }

        /** A description for the icon theme. */
        QString description() const { return mDesc; }

        /** Return the name of the "example" icon. */
        QString example() const;

        /** Return the name of the screenshot. */
        QString screenshot() const;

        /** Returns the name of this theme's link overlay. */
        QString linkOverlay() const;

        /** Returns the name of this theme's zip overlay. */
        QString zipOverlay() const;

        /** Returns the name of this theme's lock overlay. */
        QString lockOverlay() const;

        /** Returns the toplevel theme directory. */
        QString dir() const { return mDir; }

        /** The themes this icon theme falls back on. */
        QStringList inherits() const { return mInherits; }

        /** The icon theme exists? */
        bool isValid() const;

        /** The mimimum display depth required for this theme. This can either
         * be 8 or 32 */
        int depth() const { return mDepth; }

        /** The default size of this theme for a certain icon group.
         * @param group The icon group. See @ref #KIcon::Group.
         * @return The default size in pixels for the given icon group.
         */
        int defaultSize(int group) const;

        /** Query available sizes for a group. */
        QValueList<int> querySizes(int group) const;

        /** Query available icons for a size and context. */
        QStringList queryIcons(int size, int context = KIcon::Any) const;

        /** Query available icons for a context and preferred size. */
        QStringList queryIconsByContext(int size, int context = KIcon::Any) const;

        /** Lookup an icon in the theme.
         * @param name The name of the icon, without extension.
         * @param size The desired size of the icon.
         * @param match The matching mode. KIcon::MatchExact returns an icon
         * only if matches exactly. KIcon::MatchBest returns the best matching
         * icon.
         * @return A KIcon class that describes the icon. If an icon is found,
         * @ref #KIcon::isValid will return true, and false otherwise.
         */
        KIcon iconPath(const QString& name, int size, int match) const;

        /** List all icon themes installed on the system, global and local. */
        static QStringList list();

        /** Returns the current icon theme. */
        static QString current();

        static void reconfigure();

    private:
        int mDefSize[8];
        QValueList<int> mSizes[8];

        int mDepth;
        QString mDir, mName, mDesc;
        QStringList mInherits;
        QList<KIconThemeDir> mDirs;
        KIconThemePrivate *d;

        static QString *_theme;
        static QStringList *_theme_list;
    };

    #endif