diff options
Diffstat (limited to 'src/widgetview.cpp')
-rw-r--r-- | src/widgetview.cpp | 50 |
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()); + } +} |