/***************************************************************************
- * Copyright (C) 2005-09 by the Quassel Project *
+ * Copyright (C) 2005-2018 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
- * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
***************************************************************************/
-#ifndef ICON_H_
-#define ICON_H_
+#pragma once
-#ifndef HAVE_KDE
+#include <vector>
#include <QIcon>
-
-/// A very thin wrapper around QIcon
-/** This wrapper class allows us to load an icon by its theme name rather than its full file name.
- * The overloaded ctor uses IconLoader to locate an icon with this basename in the current theme
- * or in Qt Resources.
+#include <QString>
+
+namespace icon {
+
+/**
+ * Gets an icon from the current icon theme.
+ *
+ * If the theme does not provide the icon, tries to load the icon from the
+ * fallback path, if given.
+ *
+ * If no icon can be found, a warning is displayed and a null icon returned.
+ *
+ * @param iconName Icon name
+ * @param fallbackPath Full path to a fallback icon
+ * @returns The requested icon, if available
*/
-class Icon : public QIcon {
-
- public:
- Icon();
- explicit Icon(const QString &iconName);
- explicit Icon(const QIcon& copy);
-
- Icon& operator=(const Icon &other);
-};
-
-#else /* HAVE_KDE */
-#include <KIcon>
-class Icon : public KIcon {
-
- public:
- inline Icon() : KIcon() {};
- inline explicit Icon(const QString &iconName) : KIcon(iconName) {};
- inline explicit Icon(const QIcon& copy) : KIcon(copy) {};
-};
-
-#endif /* HAVE_KDE */
+QIcon get(const QString &iconName, const QString &fallbackPath = {});
+
+/**
+ * Gets an icon from the current icon theme.
+ *
+ * If the theme does not provide any of the given icon names, tries to load the
+ * icon from the fallback path, if given.
+ *
+ * If no icon can be found, a warning is displayed and a null icon returned.
+ *
+ * @param iconNames List of icon names (first match wins)
+ * @param fallbackPath Full path to a fallback icon
+ * @returns The requested icon, if available
+ */
+QIcon get(const std::vector<QString> &iconNames, const QString &fallbackPath = {});
-#endif
+}