From bc5b70046e84c6e5a33a19bd2e64e626fdf0579e Mon Sep 17 00:00:00 2001 From: "Javier S. Pedro" Date: Thu, 9 Aug 2012 18:50:23 +0200 Subject: first UI editable settings! --- sowatchui/main.cpp | 4 +++ sowatchui/qml/GroupHeader.qml | 26 ++++++++++++++ sowatchui/qml/MainPage.qml | 7 ++-- sowatchui/qml/WatchPage.qml | 69 ++++++++++++++++++++++++++++++------ sowatchui/sowatch_src_inkscape.svgz | Bin 0 -> 8771 bytes sowatchui/watchesmodel.cpp | 13 +++++++ sowatchui/watchesmodel.h | 4 ++- 7 files changed, 107 insertions(+), 16 deletions(-) create mode 100644 sowatchui/qml/GroupHeader.qml create mode 100644 sowatchui/sowatch_src_inkscape.svgz (limited to 'sowatchui') diff --git a/sowatchui/main.cpp b/sowatchui/main.cpp index f8c58af..af2a0c0 100644 --- a/sowatchui/main.cpp +++ b/sowatchui/main.cpp @@ -1,4 +1,5 @@ #include +#include #include "qmlapplicationviewer.h" #include @@ -21,6 +22,9 @@ Q_DECL_EXPORT int main(int argc, char *argv[]) qDebug() << "Starting" << watches << endl; + qmlRegisterType(); + qmlRegisterType("com.javispedro.sowatch", 1, 0, "GConfKey"); + viewer->rootContext()->setContextProperty("watches", watches); viewer->rootContext()->setContextProperty("watchScanner", watchScanner); diff --git a/sowatchui/qml/GroupHeader.qml b/sowatchui/qml/GroupHeader.qml new file mode 100644 index 0000000..0350ee0 --- /dev/null +++ b/sowatchui/qml/GroupHeader.qml @@ -0,0 +1,26 @@ +import QtQuick 1.1 +import com.nokia.meego 1.1 + +Item { + id: header + height: 40 + + property alias text: headerLabel.text + + Text { + id: headerLabel + anchors.right: parent.right + anchors.bottom: parent.bottom + anchors.rightMargin: 8 + anchors.bottomMargin: 2 + font: UiConstants.GroupHeaderFont + color: theme.inverted ? "#4D4D4D" : "#3C3C3C"; + } + Image { + anchors.right: headerLabel.left + anchors.left: parent.left + anchors.verticalCenter: headerLabel.verticalCenter + anchors.rightMargin: 24 + source: "image://theme/meegotouch-groupheader" + (theme.inverted ? "-inverted" : "") + "-background" + } +} diff --git a/sowatchui/qml/MainPage.qml b/sowatchui/qml/MainPage.qml index d722b3d..339b1a6 100644 --- a/sowatchui/qml/MainPage.qml +++ b/sowatchui/qml/MainPage.qml @@ -32,10 +32,9 @@ Page { anchors.verticalCenter: parent.verticalCenter } - onClicked: { - var page = Qt.createComponent("WatchPage.qml"); - pageStack.push(page); - } + onClicked: pageStack.push(Qt.resolvedUrl("WatchPage.qml"), + {configKey: model.configKey, + configQmlUrl: model.configQmlUrl}); } } ScrollDecorator { diff --git a/sowatchui/qml/WatchPage.qml b/sowatchui/qml/WatchPage.qml index 8159834..83932eb 100644 --- a/sowatchui/qml/WatchPage.qml +++ b/sowatchui/qml/WatchPage.qml @@ -1,6 +1,7 @@ import QtQuick 1.1 import com.nokia.meego 1.1 import com.nokia.extras 1.1 +import com.javispedro.sowatch 1.0 Page { id: watchPage @@ -8,6 +9,9 @@ Page { anchors.rightMargin: UiConstants.DefaultMargin orientationLock: PageOrientation.LockPortrait + property string configKey; + property url configQmlUrl; + tools: ToolBarLayout { ToolIcon { platformIconId: "toolbar-back" @@ -16,22 +20,65 @@ Page { } } - ListView { - id: emptyListView + GConfKey { + id: nameKey + key: configKey + "/name" + } + + Flickable { + id: mainFlickable anchors.fill: parent - model: ListModel { + contentHeight: mainColumn.height - } + Column { + id: mainColumn + width: parent.width + + Item { + id: enableItem + width: parent.width + height: UiConstants.ListItemHeightDefault + + Label { + text: qsTr("Enabled") + font: UiConstants.TitleFont + anchors.verticalCenter: parent.verticalCenter + anchors.left: parent.left + } + Switch { + anchors.verticalCenter: parent.verticalCenter + anchors.right: parent.right + checked: true + } + } + + GroupHeader { + width: parent.width + text: "Watch settings" + visible: configQmlLoader.status === Loader.Ready + } + + Loader { + id: configQmlLoader + source: configQmlUrl + width: parent.width + onLoaded: item.configKey = configKey; + } + + GroupHeader { + width: parent.width + text: "Watchlets" + visible: configQmlLoader.status === Loader.Ready + } - delegate: ListDelegate { - Image { - source: "image://theme/icon-m-common-drilldown-arrow" + (theme.inverted ? "-inverse" : "") - anchors.right: parent.right; - anchors.verticalCenter: parent.verticalCenter - } + GroupHeader { + width: parent.width + text: "Notification sources" + visible: configQmlLoader.status === Loader.Ready + } } } ScrollDecorator { - flickableItem: watchesListView + flickableItem: mainFlickable } } diff --git a/sowatchui/sowatch_src_inkscape.svgz b/sowatchui/sowatch_src_inkscape.svgz new file mode 100644 index 0000000..ea0ee94 Binary files /dev/null and b/sowatchui/sowatch_src_inkscape.svgz differ diff --git a/sowatchui/watchesmodel.cpp b/sowatchui/watchesmodel.cpp index 5644466..c45a229 100644 --- a/sowatchui/watchesmodel.cpp +++ b/sowatchui/watchesmodel.cpp @@ -14,6 +14,8 @@ WatchesModel::WatchesModel(QObject *parent) : roles[Qt::DisplayRole] = QByteArray("title"); roles[Qt::StatusTipRole] = QByteArray("subtitle"); roles[ObjectRole] = QByteArray("object"); + roles[ConfigKeyRole] = QByteArray("configKey"); + roles[ConfigQmlUrlRole] = QByteArray("configQmlUrl"); setRoleNames(roles); connect(_config, SIGNAL(changed()), @@ -57,6 +59,17 @@ QVariant WatchesModel::data(const QModelIndex &index, int role) const } else { return QVariant(tr("Disabled")); } + case ConfigKeyRole: + return QVariant::fromValue(key); + case ConfigQmlUrlRole: + if (config->isSet("driver")) { + QString driver = config->value("driver").toString(); + WatchPluginInterface *plugin = Registry::registry()->getWatchPlugin(driver); + if (plugin) { + return QVariant::fromValue(plugin->getConfigQmlUrl(driver)); + } + } + return QVariant::fromValue(QUrl()); } return QVariant(); } diff --git a/sowatchui/watchesmodel.h b/sowatchui/watchesmodel.h index 4962725..396fc8d 100644 --- a/sowatchui/watchesmodel.h +++ b/sowatchui/watchesmodel.h @@ -15,7 +15,9 @@ public: ~WatchesModel(); enum DataRoles { - ObjectRole = Qt::UserRole + ObjectRole = Qt::UserRole, + ConfigKeyRole, + ConfigQmlUrlRole }; int rowCount(const QModelIndex &parent) const; -- cgit v1.2.3