summaryrefslogtreecommitdiffstats
path: root/application/handlers/IconResourceHandler.cpp
diff options
context:
space:
mode:
authorPetr Mrázek <peterix@gmail.com>2015-09-27 22:31:52 +0200
committerPetr Mrázek <peterix@gmail.com>2015-09-27 22:31:52 +0200
commit33c3850b40aba095b056738448c235190aeb1aab (patch)
tree7f38782803ffeb20b10f6394840302fc35460cc9 /application/handlers/IconResourceHandler.cpp
parent271ad9e4fdb4f003abd33b59ca9cadfb5bab9823 (diff)
downloadMultiMC-33c3850b40aba095b056738448c235190aeb1aab.tar
MultiMC-33c3850b40aba095b056738448c235190aeb1aab.tar.gz
MultiMC-33c3850b40aba095b056738448c235190aeb1aab.tar.lz
MultiMC-33c3850b40aba095b056738448c235190aeb1aab.tar.xz
MultiMC-33c3850b40aba095b056738448c235190aeb1aab.zip
NOISSUE add missing files
Diffstat (limited to 'application/handlers/IconResourceHandler.cpp')
-rw-r--r--application/handlers/IconResourceHandler.cpp37
1 files changed, 37 insertions, 0 deletions
diff --git a/application/handlers/IconResourceHandler.cpp b/application/handlers/IconResourceHandler.cpp
new file mode 100644
index 00000000..b03553fd
--- /dev/null
+++ b/application/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);
+}