summaryrefslogtreecommitdiff
path: root/src/availablewidgetsmodel.cpp
diff options
context:
space:
mode:
authorJavier S. Pedro <dev.git@javispedro.com>2014-09-13 22:40:39 +0200
committerJavier S. Pedro <dev.git@javispedro.com>2014-09-13 22:40:39 +0200
commit85fb48bc51fed06a50b6178727fdf9e96aea4fc4 (patch)
treee5aa942addaf99bb29c73f5e946cf250ca8b80f8 /src/availablewidgetsmodel.cpp
parented40a7f1cbc1da5ae21c58882df241fc0071c2f7 (diff)
downloadsalmeta-85fb48bc51fed06a50b6178727fdf9e96aea4fc4.tar.gz
salmeta-85fb48bc51fed06a50b6178727fdf9e96aea4fc4.zip
UI can now add some widgets around
Diffstat (limited to 'src/availablewidgetsmodel.cpp')
-rw-r--r--src/availablewidgetsmodel.cpp65
1 files changed, 65 insertions, 0 deletions
diff --git a/src/availablewidgetsmodel.cpp b/src/availablewidgetsmodel.cpp
new file mode 100644
index 0000000..02ca746
--- /dev/null
+++ b/src/availablewidgetsmodel.cpp
@@ -0,0 +1,65 @@
+#include <sailfishapp.h>
+
+#include "availablewidgetsmodel.h"
+
+AvailableWidgetsModel::AvailableWidgetsModel(QObject *parent) :
+ QAbstractListModel(parent)
+{
+ reload();
+}
+
+QHash<int, QByteArray> AvailableWidgetsModel::roleNames() const
+{
+ QHash<int, QByteArray> roles;
+
+ roles[UrlRole] = "url";
+ roles[SizeRole] = "size";
+
+ return roles;
+}
+
+int AvailableWidgetsModel::rowCount(const QModelIndex &parent) const
+{
+ if (parent.isValid()) return 0;
+ return _widgets.size();
+}
+
+QVariant AvailableWidgetsModel::data(const QModelIndex &index, int role) const
+{
+ if (!index.isValid()) return QVariant();
+ const int row = index.row();
+ if (row < 0 || row >= _widgets.size()) return QVariant();
+
+ switch (role) {
+ case UrlRole:
+ return QVariant::fromValue<QUrl>(_widgets[row].url());
+ case DescriptionRole:
+ return QVariant::fromValue<QString>(_widgets[row].description());
+ case SizeRole:
+ return QVariant::fromValue<int>(_widgets[row].size());
+ default:
+ qWarning() << "Unknown role:" << role;
+ return QVariant();
+ }
+}
+
+void AvailableWidgetsModel::reload()
+{
+ beginResetModel();
+ _widgets.clear();
+
+ // Load builtin widgets
+ WidgetInfo info;
+
+ info.setUrl(SailfishApp::pathTo("qml/watch/faces/builtinface4.qml"));
+ info.setDescription("Watchface #4");
+ info.setSize(WidgetInfo::Size4Q);
+ _widgets.append(info);
+
+ info.setUrl(SailfishApp::pathTo("qml/watch/faces/builtinface4.qml"));
+ info.setDescription("Watchface #4");
+ info.setSize(WidgetInfo::Size4Q);
+ _widgets.append(info);
+
+ endResetModel();
+}