summaryrefslogtreecommitdiff
path: root/app/pebbleappiconprovider.cpp
diff options
context:
space:
mode:
authorTomasz Sterna <tomek@xiaoka.com>2015-01-03 16:38:02 +0100
committerTomasz Sterna <tomek@xiaoka.com>2015-01-03 19:07:48 +0100
commit4e7da1944f5fa75a0739c0757d40a8102f045365 (patch)
tree5f3fe179256536e4135eb4d5031a1d754af5e26c /app/pebbleappiconprovider.cpp
parent4150005566bec7827ce1cdd759a2397d47eba583 (diff)
parente6ec758b364fcaf9fda35e56740c3fcd7e8fe25e (diff)
Merge remote-tracking branch 'javispedro/js-testing'
Conflicts: daemon/daemon.pro daemon/dbusconnector.cpp daemon/manager.cpp daemon/watchcommands.cpp daemon/watchcommands.h daemon/watchconnector.cpp daemon/watchconnector.h log4qt-debug.conf log4qt-release.conf rpm/pebble.spec rpm/pebble.yaml
Diffstat (limited to 'app/pebbleappiconprovider.cpp')
-rw-r--r--app/pebbleappiconprovider.cpp28
1 files changed, 28 insertions, 0 deletions
diff --git a/app/pebbleappiconprovider.cpp b/app/pebbleappiconprovider.cpp
new file mode 100644
index 0000000..0e694ff
--- /dev/null
+++ b/app/pebbleappiconprovider.cpp
@@ -0,0 +1,28 @@
+#include <QDebug>
+#include <QUrl>
+#include "pebbleappiconprovider.h"
+
+PebbleAppIconProvider::PebbleAppIconProvider(PebbledInterface *interface)
+ : QQuickImageProvider(QQmlImageProviderBase::Image), pebbled(interface)
+{
+}
+
+QImage PebbleAppIconProvider::requestImage(const QString &id, QSize *size, const QSize &requestedSize)
+{
+ QUuid uuid(QUrl::fromPercentEncoding(id.toLatin1()));
+ QImage img = pebbled->menuIconForApp(uuid);
+
+ if (requestedSize.width() > 0 && requestedSize.height() > 0) {
+ img = img.scaled(requestedSize, Qt::KeepAspectRatio);
+ } else if (requestedSize.width() > 0) {
+ img = img.scaledToWidth(requestedSize.width());
+ } else if (requestedSize.height() > 0) {
+ img = img.scaledToHeight(requestedSize.height());
+ }
+
+ if (size) {
+ *size = img.size();
+ }
+
+ return img;
+}