summaryrefslogtreecommitdiff
path: root/src/widgetview.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/widgetview.cpp')
-rw-r--r--src/widgetview.cpp50
1 files changed, 50 insertions, 0 deletions
diff --git a/src/widgetview.cpp b/src/widgetview.cpp
new file mode 100644
index 0000000..e5bf21e
--- /dev/null
+++ b/src/widgetview.cpp
@@ -0,0 +1,50 @@
+#include <QtQml/QQmlContext>
+#include <sailfishapp.h>
+
+#include "widgetview.h"
+
+#define NUM_WIDGETS 16
+
+WidgetView::WidgetView(const QString &settingsPrefix, QQuickView *view, QObject *parent)
+ : QObject(parent),
+ _settings(new MDConfGroup(this)),
+ _view(view)
+{
+ _settings->setPath(settingsPrefix);
+
+ if (!_view) {
+ _view = new QQuickView;
+ }
+
+ for (int w = 0; w < NUM_WIDGETS; w++) {
+ WidgetInfo *info = new WidgetInfo(this);
+
+ _widgets.append(info);
+ _widgetObjects.append(static_cast<QObject*>(info));
+ }
+
+ reload();
+
+ _view->setResizeMode(QQuickView::SizeViewToRootObject);
+ _view->setSource(SailfishApp::pathTo("qml/widgetview.qml"));
+ _view->rootContext()->setContextProperty("widgets", QVariant::fromValue(_widgetObjects));
+}
+
+QList<WidgetInfo*> WidgetView::widgets()
+{
+ return _widgets;
+}
+
+void WidgetView::reload()
+{
+ for (int w = 0; w < _widgets.size(); w++) {
+ WidgetInfo *widget = _widgets[w];
+ QString base = QString("widget%1/").arg(w);
+
+ widget->setInvert(_settings->value(base + "invert").toBool());
+ widget->setPage(_settings->value(base + "page").toInt());
+ widget->setSize(static_cast<WidgetInfo::WidgetSize>(_settings->value(base + "size").toInt()));
+ widget->setPosition(static_cast<WidgetInfo::WidgetPosition>(_settings->value(base + "position").toInt()));
+ widget->setUrl(_settings->value(base + "url").toUrl());
+ }
+}