summaryrefslogtreecommitdiffstats
path: root/api/dead/src/handlers/IconResourceHandler.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'api/dead/src/handlers/IconResourceHandler.cpp')
-rw-r--r--api/dead/src/handlers/IconResourceHandler.cpp37
1 files changed, 37 insertions, 0 deletions
diff --git a/api/dead/src/handlers/IconResourceHandler.cpp b/api/dead/src/handlers/IconResourceHandler.cpp
new file mode 100644
index 00000000..b03553fd
--- /dev/null
+++ b/api/dead/src/handlers/IconResourceHandler.cpp
@@ -0,0 +1,37 @@
+#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);
+}