From e16866e072f94410321d70daedbcb855ea878cac Mon Sep 17 00:00:00 2001 From: Timothy Pearson Date: Sun, 6 Nov 2011 15:56:40 -0600 Subject: Actually move the kde files that were renamed in the last commit --- tdecore/kicontheme.h | 369 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 369 insertions(+) create mode 100644 tdecore/kicontheme.h (limited to 'tdecore/kicontheme.h') diff --git a/tdecore/kicontheme.h b/tdecore/kicontheme.h new file mode 100644 index 000000000..d8e29d339 --- /dev/null +++ b/tdecore/kicontheme.h @@ -0,0 +1,369 @@ +/* vi: ts=8 sts=4 sw=4 + * + * This file is part of the KDE project, module tdecore. + * Copyright (C) 2000 Geert Jansen + * Antonio Larrosa + * + * 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 +#include +#include +#include +#include "kdelibs_export.h" + +class KConfig; +class KIconThemeDir; + +class KIconThemePrivate; + +class KIconPrivate; + +/** + * One icon as found by KIconTheme. Also serves as a namespace containing + * icon related constants. + * @see KIconEffect + * @see KIconTheme + * @see KIconLoader + */ +class KDECORE_EXPORT KIcon +{ +public: + KIcon() { size = 0; } + + /** + * Return true if this icon is valid, false otherwise. + */ + bool isValid() const { return size != 0; } + + /** + * Defines the context of the icon. + */ + enum Context { + Any, ///< Some icon with unknown purpose. + Action, ///< An action icon (e.g. 'save', 'print'). + Application, ///< An icon that represents an application. + Device, ///< An icon that represents a device. + FileSystem, ///< An icon that represents a file system. + MimeType, ///< An icon that represents a mime type (or file type). + Animation, ///< An icon that is animated. + Category, ///< An icon that represents a category. + Emblem, ///< An icon that adds information to an existing icon. + Emote, ///< An icon that expresses an emotion. + International, ///< An icon that represents a country's flag. + Place, ///< An icon that represents a location (e.g. 'home', 'trash'). + StatusIcon ///< An icon that represents an event. + }; + + /** + * The type of the icon. + */ + enum Type { + Fixed, ///< Fixed-size icon. + Scalable, ///< Scalable-size icon. + Threshold ///< A threshold icon. + }; + + /** + * The type of a match. + */ + enum MatchType { + MatchExact, ///< Only try to find an exact match. + MatchBest ///< Take the best match if there is no exact match. + + }; + + // if you add a group here, make sure to change the config reading in + // KIconLoader too + /** + * The group of the icon. + */ + enum Group { + /// No group + NoGroup=-1, + /// Desktop icons + Desktop=0, + /// First group + FirstGroup=0, + /// Toolbar icons + Toolbar, + /// Main toolbar icons + MainToolbar, + /// Small icons + Small, + /// Panel (Kicker) icons + Panel, + /// Last group + LastGroup, + /// User icons + User + }; + + /** + * These are the standard sizes for icons. + */ + enum StdSizes { + /// small icons for menu entries + SizeSmall=16, + /// slightly larger small icons for toolbars, panels, etc + SizeSmallMedium=22, + /// medium sized icons for the desktop + SizeMedium=32, + /// large sized icons for the panel + SizeLarge=48, + /// huge sized icons for iconviews + SizeHuge=64, + /// enormous sized icons for iconviews + SizeEnormous=128 + }; + + /** + * Defines the possible states of an icon. + */ + enum States { DefaultState, ///< The default state. + ActiveState, ///< Icon is active. + DisabledState, ///< Icon is disabled. + LastState ///< Last state (last constant) + }; + + /** + * This defines an overlay, a semi-transparent image that is + * projected onto the icon. They are used to show that the file + * represented by the icon is, for example, locked, zipped or hidden. + */ + enum Overlays { + LockOverlay=0x100, ///< a file is locked + ZipOverlay=0x200, ///< a file is zipped + LinkOverlay=0x400, ///< a file is a link + HiddenOverlay=0x800, ///< a file is hidden + ShareOverlay=0x1000, ///< a file is shared + OverlayMask = ~0xff + }; + + /** + * The size in pixels of the icon. + */ + int size; + + /** + * The context of the icon. + */ + Context context; + + /** + * The type of the icon: Fixed, Scalable or Threshold. + **/ + Type type; + + /** + * The threshold in case type == Threshold + */ + int threshold; + + /** + * The full path of the icon. + */ + TQString path; + +private: + KIconPrivate *d; +}; + +inline KIcon::Group& operator++(KIcon::Group& group) { group = static_cast(group+1); return group; } +inline KIcon::Group operator++(KIcon::Group& group,int) { KIcon::Group ret = group; ++group; return ret; } + +/** + * Class to use/access icon themes in KDE. This class is used by the + * iconloader but can be used by others too. + * @see KIconLoader + */ +class KDECORE_EXPORT KIconTheme +{ +public: + /** + * Load an icon theme by name. + * @param name the name of the theme (e.g. "hicolor" or "keramik") + * @param appName the name of the application. Can be null. This argument + * allows applications to have themed application icons. + */ + KIconTheme(const TQString& name, const TQString& appName=TQString::null); + ~KIconTheme(); + + /** + * The stylized name of the icon theme. + * @return the (human-readable) name of the theme + */ + TQString name() const { return mName; } + + /** + * A description for the icon theme. + * @return a human-readable description of the theme, TQString::null + * if there is none + */ + TQString description() const { return mDesc; } + + /** + * Return the name of the "example" icon. This can be used to + * present the theme to the user. + * @return the name of the example icon, TQString::null if there is none + */ + TQString example() const; + + /** + * Return the name of the screenshot. + * @return the name of the screenshot, TQString::null if there is none + */ + TQString screenshot() const; + + /** + * Returns the name of this theme's link overlay. + * @return the name of the link overlay + */ + TQString linkOverlay() const; + + /** + * Returns the name of this theme's zip overlay. + * @return the name of the zip overlay + */ + TQString zipOverlay() const; + + /** + * Returns the name of this theme's lock overlay. + * @return the name of the lock overlay + */ + TQString lockOverlay() const; + + /** + * Returns the name of this theme's share overlay. + * @return the name of the share overlay + * @since 3.1 + */ + TQString shareOverlay () const; + + /** + * Returns the toplevel theme directory. + * @return the directory of the theme + */ + TQString dir() const { return mDir; } + + /** + * The themes this icon theme falls back on. + * @return a list of icon themes that are used as fall-backs + */ + TQStringList inherits() const { return mInherits; } + + /** + * The icon theme exists? + * @return true if the icon theme is valid + */ + bool isValid() const; + + /** + * The icon theme should be hidden to the user? + * @return true if the icon theme is hidden + * @since 3.1 + */ + bool isHidden() const; + + /** + * The minimum display depth required for this theme. This can either + * be 8 or 32. + * @return the minimum bpp (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 KIcon::Group. + * @return The default size in pixels for the given icon group. + */ + int defaultSize(KIcon::Group group) const; + + /** + * Query available sizes for a group. + * @param group The icon group. See KIcon::Group. + * @return a list of available sized for the given group + */ + TQValueList querySizes(KIcon::Group group) const; + + /** + * Query available icons for a size and context. + * @param size the size of the icons + * @param context the context of the icons + * @return the list of icon names + */ + TQStringList queryIcons(int size, KIcon::Context context = KIcon::Any) const; + + /** + * Query available icons for a context and preferred size. + * @param size the size of the icons + * @param context the context of the icons + * @return the list of icon names + */ + TQStringList queryIconsByContext(int size, KIcon::Context 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, + * @see KIcon::isValid will return true, and false otherwise. + */ + KIcon iconPath(const TQString& name, int size, KIcon::MatchType match) const; + + /** + * Returns true if the theme has any icons for the given context. + * @since 3.5.5 + */ + bool hasContext( KIcon::Context context ) const; + + /** + * List all icon themes installed on the system, global and local. + * @return the list of all icon themes + */ + static TQStringList list(); + + /** + * Returns the current icon theme. + * @return the name of the current theme + */ + static TQString current(); + + /** + * Reconfigure the theme. + */ + static void reconfigure(); + + /** + * Returns the default icon theme. + * @return the name of the default theme name + * @since 3.1 + */ + static TQString defaultThemeName(); + +private: + int mDefSize[8]; + TQValueList mSizes[8]; + + int mDepth; + TQString mDir, mName, mDesc; + TQStringList mInherits; + TQPtrList mDirs; + KIconThemePrivate *d; + + static TQString *_theme; + static TQStringList *_theme_list; +}; + +#endif -- cgit v1.2.1