#include "IconResourceHandler.h" #include <xdgicon.h> #include <QDir> #include <QDebug> QList<std::weak_ptr<IconResourceHandler>> IconResourceHandler::m_iconHandlers; IconResourceHandler::IconResourceHandler(const QString &key) : m_key(key) { } void IconResourceHandler::setTheme(const QString &theme) { // notify everyone for (auto handler : m_iconHandlers) { std::shared_ptr<IconResourceHandler> ptr = handler.lock(); if (ptr) { ptr->setResult(ptr->get()); } } } void IconResourceHandler::init(std::shared_ptr<ResourceHandler> &ptr) { m_iconHandlers.append(std::dynamic_pointer_cast<IconResourceHandler>(ptr)); // we always have a result, so lets report it now! setResult(get()); } QVariant IconResourceHandler::get() const { return XdgIcon::fromTheme(m_key); }