aboutsummaryrefslogtreecommitdiffstats
path: root/mobility
diff options
context:
space:
mode:
authorLauro Neto <lauro.neto@openbossa.org>2011-09-19 19:18:41 -0300
committerLauro Neto <lauro.neto@openbossa.org>2011-09-21 18:06:45 -0300
commitdb9fd3df55b85dd01e8b19a6ee5bcdf98b8f8090 (patch)
treeededca05f24c6c279e2bba8e69b5a17fa78e72f1 /mobility
parent055fec67791d6f2bead8346e15dfb0809695ffe6 (diff)
Add extra widget, HoldButton
It emits a "held" signal if the button is pressed for enough time. A signal "clickedWithoutHold" is used to replace Button's "clicked", as it keeps being emitted when "held" is also emitted.
Diffstat (limited to 'mobility')
-rw-r--r--mobility/servicebrowser/HoldButton.qml45
1 files changed, 45 insertions, 0 deletions
diff --git a/mobility/servicebrowser/HoldButton.qml b/mobility/servicebrowser/HoldButton.qml
new file mode 100644
index 0000000..32ce02e
--- /dev/null
+++ b/mobility/servicebrowser/HoldButton.qml
@@ -0,0 +1,45 @@
+
+import QtQuick 1.1
+import com.nokia.meego 1.0
+
+Button {
+ text: ""
+
+ property int holdTime: 800 // Hold time in msecs
+
+ signal held
+ signal clickedWithoutHold // Replace the original clicked signal, which keeps being emitted.
+
+ onPressedChanged: {
+ if (pressed) {
+ // Start counting
+ holdTimer.wasTriggered = false;
+ holdTimer.start();
+ } else {
+ // Just stop the timer
+ holdTimer.restart();
+ holdTimer.stop();
+ }
+
+ if (!pressed && !holdTimer.wasTriggered) {
+ // Replaces the clicked signal
+ clickedWithoutHold();
+ holdTimer.restart();
+ holdTimer.stop();
+ }
+ }
+
+ Timer {
+ property bool wasTriggered: false
+ id: holdTimer
+ interval: holdTime
+ running: false
+ repeat: false
+ onTriggered: {
+ wasTriggered = true
+ held();
+ restart();
+ stop();
+ }
+ }
+}