aboutsummaryrefslogtreecommitdiffstats
path: root/mobility/feedback
diff options
context:
space:
mode:
authorLauro Neto <lauro.neto@openbossa.org>2011-09-01 18:52:40 -0300
committerLauro Neto <lauro.neto@openbossa.org>2011-09-01 18:52:40 -0300
commitcfc698861e3016fcbbee780ca7162d6fe62e1ad2 (patch)
tree98dd74be690cde7ec69f95ea4863c87f97889c5d /mobility/feedback
parente1cd2f6675dae7ccec0f7c45cb42c356cdd14d68 (diff)
Add qml version of haptics square.
Diffstat (limited to 'mobility/feedback')
-rw-r--r--mobility/feedback/MainPage.qml43
-rw-r--r--mobility/feedback/hapticsquare-qtgui.py127
-rw-r--r--mobility/feedback/hapticsquare.py136
-rw-r--r--mobility/feedback/main.qml11
4 files changed, 236 insertions, 81 deletions
diff --git a/mobility/feedback/MainPage.qml b/mobility/feedback/MainPage.qml
new file mode 100644
index 0000000..4678be9
--- /dev/null
+++ b/mobility/feedback/MainPage.qml
@@ -0,0 +1,43 @@
+
+
+import QtQuick 1.1
+import com.nokia.meego 1.0
+
+Page {
+ id: mainPage
+ anchors.margins: rootWindow.pageMargin
+
+ Flow {
+ anchors.top: parent.top
+ anchors.right: parent.right
+ anchors.left: parent.left
+ anchors.margins: 10
+
+ spacing: 10
+
+ Button {
+ id: rumble
+ text: "Rumble"
+ onClicked: effectPlayer.playRumble()
+ }
+
+ Button {
+ id: ocean
+ text: "Ocean"
+ onClicked: effectPlayer.playOcean()
+ }
+
+ Button {
+ id: buttonClick
+ text: "Button Click"
+ onClicked: effectPlayer.playButtonClick()
+ }
+
+ Button {
+ id: negativeEffect
+ text: "Negative Effect"
+ onClicked: effectPlayer.playNegativeEffect()
+ }
+ }
+
+}
diff --git a/mobility/feedback/hapticsquare-qtgui.py b/mobility/feedback/hapticsquare-qtgui.py
new file mode 100644
index 0000000..0554f4d
--- /dev/null
+++ b/mobility/feedback/hapticsquare-qtgui.py
@@ -0,0 +1,127 @@
+'''
+ Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+ All rights reserved.
+ Contact: Nokia Corporation (qt-info@nokia.com)
+
+ This file is part of the Qt Mobility Components.
+
+ $QT_BEGIN_LICENSE:LGPL$
+ No Commercial Usage
+ This file contains pre-release code and may not be distributed.
+ You may use this file in accordance with the terms and conditions
+ contained in the Technology Preview License Agreement accompanying
+ this package.
+
+ GNU Lesser General Public License Usage
+ Alternatively, this file may be used under the terms of the GNU Lesser
+ General Public License version 2.1 as published by the Free Software
+ Foundation and appearing in the file LICENSE.LGPL included in the
+ packaging of this file. Please review the following information to
+ ensure the GNU Lesser General Public License version 2.1 requirements
+ will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+
+ In addition, as a special exception, Nokia gives you certain additional
+ rights. These rights are described in the Nokia Qt LGPL Exception
+ version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+
+ If you have questions regarding the use of this file, please contact
+ Nokia at qt-info@nokia.com.
+'''
+
+from PySide.QtCore import *
+from PySide.QtGui import *
+from QtMobility.Feedback import *
+
+class HapticButton(QWidget):
+ clicked = Signal()
+ toggled = Signal(bool)
+
+ def __init__(self, label):
+ QWidget.__init__(self, None)
+ self.m_label = label
+ self.m_checked = False
+ self.m_checkable = False
+
+ self.setMinimumSize(100, 100)
+
+ def mousePressEvent(self, qMouseEvent):
+ self.clicked.emit()
+
+ def paintEvent(self, qPaintEvent):
+ paint = QPainter(self)
+
+ r = QRect(1, 1, self.width()-2, self.height()-2)
+ paint.drawRoundedRect(r, 10, 10)
+ paint.drawText(r, Qt.AlignCenter, self.m_label)
+
+class Dialog(QDialog):
+
+ def __init__(self):
+ QDialog.__init__(self)
+ self.m_rumble = QFeedbackHapticsEffect()
+ self.m_rumble.setAttackIntensity(0.1)
+ self.m_rumble.setAttackTime(250)
+ self.m_rumble.setIntensity(1)
+ self.m_rumble.setDuration(1000)
+ self.m_rumble.setFadeTime(250)
+ self.m_rumble.setFadeIntensity(0.1)
+
+ self.m_ocean = QFeedbackHapticsEffect()
+ self.m_ocean.setAttackIntensity(0.1)
+ self.m_ocean.setAttackTime(450)
+ self.m_ocean.setIntensity(0.8)
+ self.m_ocean.setDuration(6000)
+ self.m_ocean.setFadeTime(900)
+ self.m_ocean.setFadeIntensity(0.05)
+ self.m_ocean.setPeriod(1500)
+
+ self.m_btnRumble = HapticButton("Rumble!")
+ self.m_btnOcean = HapticButton("Ocean")
+ self.m_btnButtonClick = HapticButton("Click")
+ self.m_btnNegativeEffect = HapticButton("Oops!")
+ self.topLayout = QGridLayout(self)
+ self.topLayout.addWidget(self.m_btnRumble, 0, 0)
+ self.topLayout.addWidget(self.m_btnOcean, 0, 1)
+ self.topLayout.addWidget(self.m_btnButtonClick, 1, 0)
+ self.topLayout.addWidget(self.m_btnNegativeEffect, 1, 1)
+
+ self.m_btnRumble.clicked.connect(self.playRumble)
+ self.m_btnOcean.clicked.connect(self.playOcean)
+ self.m_btnButtonClick.clicked.connect(self.playButtonClick)
+ self.m_btnNegativeEffect.clicked.connect(self.playNegativeEffect)
+
+ def __del__(self):
+ del self.m_btnRumble
+ del self.m_btnOcean
+ del self.m_btnButtonClick
+ del self.m_btnNegativeEffect
+
+ def playRumble(self):
+ self.m_rumble.start()
+ print "Play rumble"
+
+ def playOcean(self):
+ if self.m_ocean.state() == QFeedbackEffect.Stopped:
+ self.m_ocean.start()
+ print "Ocean start"
+ else:
+ self.m_ocean.stop()
+ print "Ocean stop"
+
+ def playButtonClick(self):
+ QFeedbackEffect.playThemeEffect(QFeedbackEffect.ThemeBasicButton)
+ print "Play button click"
+
+ def playNegativeEffect(self):
+ QFeedbackEffect.playThemeEffect(QFeedbackEffect.ThemeNegativeTacticon)
+ print "Play negative button click"
+
+
+def main():
+ app = QApplication([])
+ w = Dialog()
+ w.showMaximized()
+ return app.exec_()
+
+if __name__ == "__main__":
+ main()
diff --git a/mobility/feedback/hapticsquare.py b/mobility/feedback/hapticsquare.py
index 0554f4d..3206d29 100644
--- a/mobility/feedback/hapticsquare.py
+++ b/mobility/feedback/hapticsquare.py
@@ -1,5 +1,5 @@
'''
- Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+ Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
All rights reserved.
Contact: Nokia Corporation (qt-info@nokia.com)
@@ -30,77 +30,38 @@
from PySide.QtCore import *
from PySide.QtGui import *
+from PySide.QtDeclarative import *
from QtMobility.Feedback import *
-class HapticButton(QWidget):
- clicked = Signal()
- toggled = Signal(bool)
-
- def __init__(self, label):
- QWidget.__init__(self, None)
- self.m_label = label
- self.m_checked = False
- self.m_checkable = False
-
- self.setMinimumSize(100, 100)
-
- def mousePressEvent(self, qMouseEvent):
- self.clicked.emit()
-
- def paintEvent(self, qPaintEvent):
- paint = QPainter(self)
-
- r = QRect(1, 1, self.width()-2, self.height()-2)
- paint.drawRoundedRect(r, 10, 10)
- paint.drawText(r, Qt.AlignCenter, self.m_label)
-
-class Dialog(QDialog):
-
- def __init__(self):
- QDialog.__init__(self)
- self.m_rumble = QFeedbackHapticsEffect()
- self.m_rumble.setAttackIntensity(0.1)
- self.m_rumble.setAttackTime(250)
- self.m_rumble.setIntensity(1)
- self.m_rumble.setDuration(1000)
- self.m_rumble.setFadeTime(250)
- self.m_rumble.setFadeIntensity(0.1)
-
- self.m_ocean = QFeedbackHapticsEffect()
- self.m_ocean.setAttackIntensity(0.1)
- self.m_ocean.setAttackTime(450)
- self.m_ocean.setIntensity(0.8)
- self.m_ocean.setDuration(6000)
- self.m_ocean.setFadeTime(900)
- self.m_ocean.setFadeIntensity(0.05)
- self.m_ocean.setPeriod(1500)
-
- self.m_btnRumble = HapticButton("Rumble!")
- self.m_btnOcean = HapticButton("Ocean")
- self.m_btnButtonClick = HapticButton("Click")
- self.m_btnNegativeEffect = HapticButton("Oops!")
- self.topLayout = QGridLayout(self)
- self.topLayout.addWidget(self.m_btnRumble, 0, 0)
- self.topLayout.addWidget(self.m_btnOcean, 0, 1)
- self.topLayout.addWidget(self.m_btnButtonClick, 1, 0)
- self.topLayout.addWidget(self.m_btnNegativeEffect, 1, 1)
-
- self.m_btnRumble.clicked.connect(self.playRumble)
- self.m_btnOcean.clicked.connect(self.playOcean)
- self.m_btnButtonClick.clicked.connect(self.playButtonClick)
- self.m_btnNegativeEffect.clicked.connect(self.playNegativeEffect)
-
- def __del__(self):
- del self.m_btnRumble
- del self.m_btnOcean
- del self.m_btnButtonClick
- del self.m_btnNegativeEffect
-
- def playRumble(self):
- self.m_rumble.start()
- print "Play rumble"
-
- def playOcean(self):
+class EffectPlayer(QObject):
+
+ def __init__(self, parent=None):
+ QObject.__init__(self, parent)
+
+ self.m_rumble = QFeedbackHapticsEffect()
+ self.m_rumble.setAttackIntensity(0.1)
+ self.m_rumble.setAttackTime(250)
+ self.m_rumble.setIntensity(1)
+ self.m_rumble.setDuration(1000)
+ self.m_rumble.setFadeTime(250)
+ self.m_rumble.setFadeIntensity(0.1)
+
+ self.m_ocean = QFeedbackHapticsEffect()
+ self.m_ocean.setAttackIntensity(0.1)
+ self.m_ocean.setAttackTime(450)
+ self.m_ocean.setIntensity(0.8)
+ self.m_ocean.setDuration(6000)
+ self.m_ocean.setFadeTime(900)
+ self.m_ocean.setFadeIntensity(0.05)
+ self.m_ocean.setPeriod(1500)
+
+ @Slot()
+ def playRumble(self):
+ print "Starting rumble effect"
+ self.m_rumble.start()
+
+ @Slot()
+ def playOcean(self):
if self.m_ocean.state() == QFeedbackEffect.Stopped:
self.m_ocean.start()
print "Ocean start"
@@ -108,20 +69,33 @@ class Dialog(QDialog):
self.m_ocean.stop()
print "Ocean stop"
- def playButtonClick(self):
- QFeedbackEffect.playThemeEffect(QFeedbackEffect.ThemeBasicButton)
- print "Play button click"
+ @Slot()
+ def playButtonClick(self):
+ QFeedbackEffect.playThemeEffect(QFeedbackEffect.ThemeBasicButton)
+ print "Play button click"
- def playNegativeEffect(self):
- QFeedbackEffect.playThemeEffect(QFeedbackEffect.ThemeNegativeTacticon)
- print "Play negative button click"
+ @Slot()
+ def playNegativeEffect(self):
+ QFeedbackEffect.playThemeEffect(QFeedbackEffect.ThemeNegativeTacticon)
+ print "Play negative button click"
def main():
- app = QApplication([])
- w = Dialog()
- w.showMaximized()
- return app.exec_()
+ app = QApplication([])
+ view = QDeclarativeView()
+ player = EffectPlayer()
+ context = view.rootContext()
+ context.setContextProperty("effectPlayer", player)
-if __name__ == "__main__":
+ url = QUrl('main.qml')
+ view.setSource(url)
+ view.show()
+
+ app.exec_()
+
+
+if __name__ == '__main__':
main()
+
+
+
diff --git a/mobility/feedback/main.qml b/mobility/feedback/main.qml
new file mode 100644
index 0000000..dd3484d
--- /dev/null
+++ b/mobility/feedback/main.qml
@@ -0,0 +1,11 @@
+
+import QtQuick 1.1
+import com.nokia.meego 1.0
+
+PageStackWindow {
+
+ id: rootWindow
+ showStatusBar: false
+ initialPage: MainPage { }
+
+}