diff options
author | Lauro Neto <lauro.neto@openbossa.org> | 2011-09-19 19:18:41 -0300 |
---|---|---|
committer | Lauro Neto <lauro.neto@openbossa.org> | 2011-09-21 18:06:45 -0300 |
commit | db9fd3df55b85dd01e8b19a6ee5bcdf98b8f8090 (patch) | |
tree | ededca05f24c6c279e2bba8e69b5a17fa78e72f1 /mobility | |
parent | 055fec67791d6f2bead8346e15dfb0809695ffe6 (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.qml | 45 |
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(); + } + } +} |