summaryrefslogtreecommitdiff
path: root/metawatch/qml/com
diff options
context:
space:
mode:
authorJavier S. Pedro <maemo@javispedro.com>2011-12-02 23:02:51 +0100
committerJavier S. Pedro <maemo@javispedro.com>2011-12-02 23:02:51 +0100
commitd5b5cfc83e1247ebc18ef2024f07bdd37d41164b (patch)
treed6c44ffe944c730f4bb16a3e5a412db78027f324 /metawatch/qml/com
parent1abf33ab7bcbf73ebb9eeb6c388c3c1c4abef445 (diff)
downloadsowatch-d5b5cfc83e1247ebc18ef2024f07bdd37d41164b.tar.gz
sowatch-d5b5cfc83e1247ebc18ef2024f07bdd37d41164b.zip
provide a set of metawatch common qml elements
Diffstat (limited to 'metawatch/qml/com')
-rw-r--r--metawatch/qml/com/javispedro/sowatch/metawatch/MWListView.qml56
-rw-r--r--metawatch/qml/com/javispedro/sowatch/metawatch/MWTitle.qml16
-rw-r--r--metawatch/qml/com/javispedro/sowatch/metawatch/qmldir2
3 files changed, 74 insertions, 0 deletions
diff --git a/metawatch/qml/com/javispedro/sowatch/metawatch/MWListView.qml b/metawatch/qml/com/javispedro/sowatch/metawatch/MWListView.qml
new file mode 100644
index 0000000..3e445fb
--- /dev/null
+++ b/metawatch/qml/com/javispedro/sowatch/metawatch/MWListView.qml
@@ -0,0 +1,56 @@
+import QtQuick 1.0
+
+ListView {
+ id: list
+
+ property bool selectable: true
+
+ interactive: false
+ highlightFollowsCurrentItem: false
+ boundsBehavior: Flickable.StopAtBounds
+
+ property real currentItemTop: currentItem !== null ? currentItem.y - contentY : 0
+ property real currentItemBottom: currentItem !== null ? currentItemTop + currentItem.height : 0
+
+ function scrollDown() {
+ if (count == 0) {
+ return; // No items
+ }
+ if (selectable) {
+ if (currentIndex == -1) {
+ // If no item is selected, select the first one.
+ currentItem = 0;
+ return;
+ }
+ if (currentIndex < count && currentItemBottom < height) {
+ // If the next item is visible, highlight it
+ incrementCurrentIndex();
+ }
+ if (currentItemBottom >= height) {
+ // If the next item now is still not visible, scroll
+ contentY += 96/3;
+ }
+ }
+ }
+
+ function scrollUp() {
+ if (count == 0) {
+ return; // No items
+ }
+ if (selectable) {
+ if (currentIndex == -1) {
+ // If no item is selected, select the last one.
+ currentIndex = count - 1;
+ return;
+ }
+ if (currentIndex >= 0 && currentItemTop > 0) {
+ // If the previous item is visible, highlight it
+ decrementCurrentIndex();
+ }
+ if (currentItemTop <= 0) {
+ // If the previous item now is still not visible, scroll
+ contentY -= 96/3;
+ }
+ }
+ }
+}
diff --git a/metawatch/qml/com/javispedro/sowatch/metawatch/MWTitle.qml b/metawatch/qml/com/javispedro/sowatch/metawatch/MWTitle.qml
new file mode 100644
index 0000000..8aa494c
--- /dev/null
+++ b/metawatch/qml/com/javispedro/sowatch/metawatch/MWTitle.qml
@@ -0,0 +1,16 @@
+import QtQuick 1.0
+
+Rectangle {
+ width: 96
+ height: 16
+
+ property alias text: label.text
+
+ Row {
+ anchors.fill: parent
+ Text {
+ id: label
+ font.bold: true
+ }
+ }
+}
diff --git a/metawatch/qml/com/javispedro/sowatch/metawatch/qmldir b/metawatch/qml/com/javispedro/sowatch/metawatch/qmldir
new file mode 100644
index 0000000..02221c3
--- /dev/null
+++ b/metawatch/qml/com/javispedro/sowatch/metawatch/qmldir
@@ -0,0 +1,2 @@
+MWTitle 1.0 MWTitle.qml
+MWListView 1.0 MWListView.qml