Import new experiments
authorThomas Pietrzak <thomas.pietrzak@gmail.com>
Mon, 25 Mar 2013 14:40:07 +0000 (14:40 +0000)
committerThomas Pietrzak <thomas.pietrzak@gmail.com>
Mon, 25 Mar 2013 14:40:07 +0000 (14:40 +0000)
git-svn-id: svn+ssh://thomaspietrzak.com/var/svn/rep@107 47cf9a05-e0a8-4ed5-9e9b-101a649bc004

18 files changed:
TactileMenus/TMenu.cpp [new file with mode: 0644]
TactileMenus/TMenu.h [new file with mode: 0644]
TactileMenus/TactileMenus.cpp [new file with mode: 0644]
TactileMenus/TactileMenus.h [new file with mode: 0644]
TactileMenus/TactileMenus.vcxproj [new file with mode: 0644]
TactileMenus/main.cpp [new file with mode: 0644]
TactileMenus/tactilemenus.qrc [new file with mode: 0644]
TactileMenus/tactilemenus.ui [new file with mode: 0644]
Tactons Experiment.sln
Touchscreen Buttons Experiment/SetupGUI.cpp [new file with mode: 0644]
Touchscreen Buttons Experiment/SetupGUI.h [new file with mode: 0644]
Touchscreen Buttons Experiment/Touchscreen Buttons Experiment.vcxproj [new file with mode: 0644]
Touchscreen Buttons Experiment/TouchscreenButtonsExperiment.cpp [new file with mode: 0644]
Touchscreen Buttons Experiment/TouchscreenButtonsExperiment.h [new file with mode: 0644]
Touchscreen Buttons Experiment/main.cpp [new file with mode: 0644]
Touchscreen Buttons Experiment/setupgui.ui [new file with mode: 0644]
Touchscreen Buttons Experiment/setupgui2.ui [new file with mode: 0644]
Touchscreen Buttons Experiment/touchscreenbuttonsexperiment.ui [new file with mode: 0644]

diff --git a/TactileMenus/TMenu.cpp b/TactileMenus/TMenu.cpp
new file mode 100644 (file)
index 0000000..c12c962
--- /dev/null
@@ -0,0 +1,32 @@
+#include "TMenu.h"\r
+\r
+\r
+TMenu::TMenu(TactonPlayer *tactonPlayer, QWidget *parent)\r
+:QMenu(parent), _tactonPlayer(tactonPlayer)\r
+{\r
+       this->setStyleSheet(" QMenu {\\r
+                       background-color: #bbbbbb;\\r
+                       border: 1px solid black;\\r
+                       font-size: 30pt;\\r
+               }\\r
+               QMenu::item {\\r
+                       background-color: transparent;\\r
+                       padding: 10px 50px 10px 50px;\\r
+               }\\r
+               QMenu::item:selected {\\r
+                       background-color: #eeeeee;\\r
+       }");\r
+}\r
+\r
+\r
+TMenu::~TMenu(void)\r
+{\r
+}\r
+\r
+void TMenu::mouseReleaseEvent(QMouseEvent * event)\r
+{\r
+       QAction *a;\r
+       if ((a = activeAction()) != NULL)\r
+               a->trigger();\r
+       close();\r
+}
\ No newline at end of file
diff --git a/TactileMenus/TMenu.h b/TactileMenus/TMenu.h
new file mode 100644 (file)
index 0000000..28d0e8c
--- /dev/null
@@ -0,0 +1,21 @@
+#ifndef __TMENU__\r
+#define __TMENU__\r
+\r
+#include <QMenu.h>\r
+\r
+#include <TactonPlayer/TactonPlayer.hpp>\r
+\r
+\r
+class TMenu : public QMenu\r
+{\r
+       public:\r
+               TMenu(TactonPlayer *_tactonPlayer, QWidget *parent=NULL);\r
+               ~TMenu();\r
+\r
+               void mouseReleaseEvent(QMouseEvent * event);\r
+\r
+       private:\r
+               TactonPlayer *_tactonPlayer;\r
+};\r
+\r
+#endif\r
diff --git a/TactileMenus/TactileMenus.cpp b/TactileMenus/TactileMenus.cpp
new file mode 100644 (file)
index 0000000..7310d17
--- /dev/null
@@ -0,0 +1,63 @@
+#include "TactileMenus.h"\r
+\r
+#include <QMouseEvent>\r
+#include <QDebug>\r
+\r
+TactileMenus::TactileMenus(QWidget *parent, Qt::WFlags flags)\r
+       : QMainWindow(parent, flags), _menu(NULL)\r
+{\r
+       setupUi(this);\r
+       QWidget::showMaximized();\r
+       \r
+       try\r
+       {\r
+               _tactonPlayer = new TactonPlayer("COM8");\r
+       }\r
+       catch(...)\r
+       {\r
+               qDebug() << "Cannot find the touchscreen or the wristband";\r
+               _tactonPlayer = NULL;\r
+       }\r
+\r
+       _menu = new TMenu(_tactonPlayer, this);\r
+\r
+       _signalMapper = new QSignalMapper(this);\r
+\r
+     for (int i = 1 ; i < 8 ; i++) \r
+        {\r
+                QAction *a = new QAction(QString::number(i), this);\r
+                _menu->addAction(a);\r
+         connect(a, SIGNAL(triggered()), _signalMapper, SLOT(map()));\r
+         connect(a, SIGNAL(hovered()), this, SLOT(pouet()));\r
+         _signalMapper->setMapping(a, i);\r
+     }\r
+\r
+     connect(_signalMapper, SIGNAL(mapped(int)), this, SLOT(execute(int)));\r
+}\r
+\r
+\r
+\r
+TactileMenus::~TactileMenus()\r
+{\r
+       if (_tactonPlayer)\r
+               delete _tactonPlayer;\r
+}\r
+\r
+void TactileMenus::mousePressEvent(QMouseEvent *evt)\r
+{\r
+       //pouet();\r
+       _menu->exec(evt->globalPos());\r
+}\r
+\r
+void TactileMenus::execute(int val)\r
+{\r
+       if (_tactonPlayer)\r
+               _tactonPlayer->play(Tacton(0x0f, 15, 250, 255));\r
+       _text->setText(QString::number(val));\r
+}\r
+\r
+void TactileMenus::pouet()\r
+{\r
+       if (_tactonPlayer)\r
+               _tactonPlayer->play(Tacton(0x0f, 10, 100, 150));\r
+}
\ No newline at end of file
diff --git a/TactileMenus/TactileMenus.h b/TactileMenus/TactileMenus.h
new file mode 100644 (file)
index 0000000..95935ad
--- /dev/null
@@ -0,0 +1,35 @@
+#ifndef TACTILEMENUS_H\r
+#define TACTILEMENUS_H\r
+\r
+#include <QtGui/QMainWindow>\r
+#include "ui_tactilemenus.h"\r
+#include "TMenu.h"\r
+#include <QSignalMApper>\r
+\r
+#include <TactonPlayer/TactonPlayer.hpp>\r
+\r
+class TactileMenus : public QMainWindow, public Ui::TactileMenusClass\r
+{\r
+       Q_OBJECT\r
+\r
+       public:\r
+               TactileMenus(QWidget *parent = 0, Qt::WFlags flags = 0);\r
+               ~TactileMenus();\r
+\r
+               void mousePressEvent(QMouseEvent * event);\r
+               //void mouseReleaseEvent(QMouseEvent * event);\r
+\r
+       public slots:\r
+               void execute(int);\r
+               void pouet();\r
+\r
+       signals:\r
+               void selected(int);\r
+\r
+       private:\r
+               TMenu *_menu;\r
+               QSignalMapper *_signalMapper;\r
+               TactonPlayer *_tactonPlayer;\r
+};\r
+\r
+#endif // TACTILEMENUS_H\r
diff --git a/TactileMenus/TactileMenus.vcxproj b/TactileMenus/TactileMenus.vcxproj
new file mode 100644 (file)
index 0000000..89d8b16
--- /dev/null
@@ -0,0 +1,146 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{49223BDA-A1D1-4CAB-A637-3028D969EB2F}</ProjectGuid>\r
+    <Keyword>Qt4VSv1.0</Keyword>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>\r
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />\r
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />\r
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>\r
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />\r
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <ClCompile>\r
+      <PreprocessorDefinitions>UNICODE;WIN32;QT_LARGEFILE_SUPPORT;QT_DLL;QT_CORE_LIB;QT_GUI_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <AdditionalIncludeDirectories>.\GeneratedFiles;.;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <Optimization>Disabled</Optimization>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>\r
+    </ClCompile>\r
+    <Link>\r
+      <SubSystem>Windows</SubSystem>\r
+      <OutputFile>$(OutDir)\$(ProjectName).exe</OutputFile>\r
+      <AdditionalLibraryDirectories>$(QTDIR)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <AdditionalDependencies>TactonPlayerd.lib;qtmaind.lib;QtCored4.lib;QtGuid4.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <ClCompile>\r
+      <PreprocessorDefinitions>UNICODE;WIN32;QT_LARGEFILE_SUPPORT;QT_DLL;QT_NO_DEBUG;NDEBUG;QT_CORE_LIB;QT_GUI_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <AdditionalIncludeDirectories>.\GeneratedFiles;.;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <DebugInformationFormat>\r
+      </DebugInformationFormat>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>\r
+    </ClCompile>\r
+    <Link>\r
+      <SubSystem>Windows</SubSystem>\r
+      <OutputFile>$(OutDir)\$(ProjectName).exe</OutputFile>\r
+      <AdditionalLibraryDirectories>$(QTDIR)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>false</GenerateDebugInformation>\r
+      <AdditionalDependencies>TactonPlayer.lib;qtmain.lib;QtCore4.lib;QtGui4.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="GeneratedFiles\Debug\moc_TactileMenus.cpp">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\qrc_tactilemenus.cpp">\r
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+      </PrecompiledHeader>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\Release\moc_TactileMenus.cpp">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
+    </ClCompile>\r
+    <ClCompile Include="main.cpp" />\r
+    <ClCompile Include="TMenu.cpp" />\r
+    <ClCompile Include="TactileMenus.cpp" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <CustomBuild Include="TactileMenus.h">\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing TactileMenus.h...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui"</Command>\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing TactileMenus.h...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui"</Command>\r
+    </CustomBuild>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <CustomBuild Include="tactilemenus.ui">\r
+      <FileType>Document</FileType>\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\uic.exe;%(AdditionalInputs)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Uic%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\ui_%(Filename).h;%(Outputs)</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\uic.exe" -o ".\GeneratedFiles\ui_%(Filename).h" "%(FullPath)"</Command>\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\uic.exe;%(AdditionalInputs)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Uic%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\ui_%(Filename).h;%(Outputs)</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\uic.exe" -o ".\GeneratedFiles\ui_%(Filename).h" "%(FullPath)"</Command>\r
+    </CustomBuild>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClInclude Include="GeneratedFiles\ui_tactilemenus.h" />\r
+    <ClInclude Include="TMenu.h" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <CustomBuild Include="tactilemenus.qrc">\r
+      <FileType>Document</FileType>\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(FullPath);%(AdditionalInputs)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Rcc%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\qrc_%(Filename).cpp;%(Outputs)</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\rcc.exe" -name "%(Filename)" -no-compress "%(FullPath)" -o .\GeneratedFiles\qrc_%(Filename).cpp</Command>\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(FullPath);%(AdditionalInputs)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Rcc%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\qrc_%(Filename).cpp;%(Outputs)</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\rcc.exe" -name "%(Filename)" -no-compress "%(FullPath)" -o .\GeneratedFiles\qrc_%(Filename).cpp</Command>\r
+    </CustomBuild>\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+  <ProjectExtensions>\r
+    <VisualStudio>\r
+      <UserProperties UicDir=".\GeneratedFiles" MocDir=".\GeneratedFiles\$(ConfigurationName)" MocOptions="" RccDir=".\GeneratedFiles" lupdateOnBuild="0" lupdateOptions="" lreleaseOptions="" QtVersion_x0020_Win32="4.8.2" />\r
+    </VisualStudio>\r
+  </ProjectExtensions>\r
+</Project>
\ No newline at end of file
diff --git a/TactileMenus/main.cpp b/TactileMenus/main.cpp
new file mode 100644 (file)
index 0000000..b82a5f6
--- /dev/null
@@ -0,0 +1,10 @@
+#include "TactileMenus.h"\r
+#include <QtGui/QApplication>\r
+\r
+int main(int argc, char *argv[])\r
+{\r
+       QApplication a(argc, argv);\r
+       TactileMenus w;\r
+       w.show();\r
+       return a.exec();\r
+}\r
diff --git a/TactileMenus/tactilemenus.qrc b/TactileMenus/tactilemenus.qrc
new file mode 100644 (file)
index 0000000..6ca33d8
--- /dev/null
@@ -0,0 +1,4 @@
+<RCC>\r
+    <qresource prefix="TactileMenus">\r
+    </qresource>\r
+</RCC>\r
diff --git a/TactileMenus/tactilemenus.ui b/TactileMenus/tactilemenus.ui
new file mode 100644 (file)
index 0000000..e20d7fd
--- /dev/null
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<ui version="4.0">\r
+ <class>TactileMenusClass</class>\r
+ <widget class="QMainWindow" name="TactileMenusClass">\r
+  <property name="geometry">\r
+   <rect>\r
+    <x>0</x>\r
+    <y>0</y>\r
+    <width>600</width>\r
+    <height>400</height>\r
+   </rect>\r
+  </property>\r
+  <property name="windowTitle">\r
+   <string>TactileMenus</string>\r
+  </property>\r
+  <widget class="QWidget" name="centralWidget">\r
+   <layout class="QVBoxLayout" name="verticalLayout">\r
+    <item>\r
+     <widget class="QLabel" name="_text">\r
+      <property name="font">\r
+       <font>\r
+        <pointsize>60</pointsize>\r
+        <weight>75</weight>\r
+        <bold>true</bold>\r
+       </font>\r
+      </property>\r
+      <property name="text">\r
+       <string>Press me</string>\r
+      </property>\r
+      <property name="alignment">\r
+       <set>Qt::AlignCenter</set>\r
+      </property>\r
+     </widget>\r
+    </item>\r
+    <item>\r
+     <spacer name="verticalSpacer">\r
+      <property name="orientation">\r
+       <enum>Qt::Vertical</enum>\r
+      </property>\r
+      <property name="sizeHint" stdset="0">\r
+       <size>\r
+        <width>20</width>\r
+        <height>40</height>\r
+       </size>\r
+      </property>\r
+     </spacer>\r
+    </item>\r
+   </layout>\r
+  </widget>\r
+ </widget>\r
+ <layoutdefault spacing="6" margin="11"/>\r
+ <resources>\r
+  <include location="tactilemenus.qrc"/>\r
+ </resources>\r
+ <connections/>\r
+</ui>\r
index 728a917a65b7dc51e3b5bdf8a8ba15ef84534976..8c727a8208fbddca4d61d4a428e26d5b4a4e90a3 100644 (file)
@@ -15,6 +15,10 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DeltaTimeJND", "DeltaTimeJN
 EndProject\r
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AngularPosition", "AngularPosition\AngularPosition.vcxproj", "{002CBB10-B3C0-490E-BB15-02827293648A}"\r
 EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Touchscreen Buttons Experiment", "Touchscreen Buttons Experiment\Touchscreen Buttons Experiment.vcxproj", "{9466E3E8-496E-4DDF-BCE6-20DD992504C1}"\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TactileMenus", "TactileMenus\TactileMenus.vcxproj", "{49223BDA-A1D1-4CAB-A637-3028D969EB2F}"\r
+EndProject\r
 Global\r
        GlobalSection(SolutionConfigurationPlatforms) = preSolution\r
                Debug|Win32 = Debug|Win32\r
@@ -49,6 +53,14 @@ Global
                {002CBB10-B3C0-490E-BB15-02827293648A}.Debug|Win32.Build.0 = Debug|Win32\r
                {002CBB10-B3C0-490E-BB15-02827293648A}.Release|Win32.ActiveCfg = Release|Win32\r
                {002CBB10-B3C0-490E-BB15-02827293648A}.Release|Win32.Build.0 = Release|Win32\r
+               {9466E3E8-496E-4DDF-BCE6-20DD992504C1}.Debug|Win32.ActiveCfg = Debug|Win32\r
+               {9466E3E8-496E-4DDF-BCE6-20DD992504C1}.Debug|Win32.Build.0 = Debug|Win32\r
+               {9466E3E8-496E-4DDF-BCE6-20DD992504C1}.Release|Win32.ActiveCfg = Release|Win32\r
+               {9466E3E8-496E-4DDF-BCE6-20DD992504C1}.Release|Win32.Build.0 = Release|Win32\r
+               {49223BDA-A1D1-4CAB-A637-3028D969EB2F}.Debug|Win32.ActiveCfg = Debug|Win32\r
+               {49223BDA-A1D1-4CAB-A637-3028D969EB2F}.Debug|Win32.Build.0 = Debug|Win32\r
+               {49223BDA-A1D1-4CAB-A637-3028D969EB2F}.Release|Win32.ActiveCfg = Release|Win32\r
+               {49223BDA-A1D1-4CAB-A637-3028D969EB2F}.Release|Win32.Build.0 = Release|Win32\r
        EndGlobalSection\r
        GlobalSection(SolutionProperties) = preSolution\r
                HideSolutionNode = FALSE\r
diff --git a/Touchscreen Buttons Experiment/SetupGUI.cpp b/Touchscreen Buttons Experiment/SetupGUI.cpp
new file mode 100644 (file)
index 0000000..3080d11
--- /dev/null
@@ -0,0 +1,25 @@
+#include "SetupGUI.h"\r
+\r
+\r
+SetupGUI::SetupGUI(QWidget *parent, Qt::WFlags flags)\r
+:QMainWindow(parent, flags), _expwindow(NULL)\r
+{\r
+       setupUi(this);\r
+\r
+       connect(_start, SIGNAL(clicked()), this, SLOT(init()));\r
+}\r
+\r
+\r
+SetupGUI::~SetupGUI()\r
+{\r
+       if (_expwindow)\r
+               delete _expwindow;\r
+}\r
+\r
+void SetupGUI::init()\r
+{\r
+       _expwindow = new TouchscreenButtonsExperiment();\r
+       _expwindow->init(_user->text(), _effects->text(), _repetitions->value());\r
+       _expwindow->show();\r
+       this->hide();\r
+}\r
diff --git a/Touchscreen Buttons Experiment/SetupGUI.h b/Touchscreen Buttons Experiment/SetupGUI.h
new file mode 100644 (file)
index 0000000..070232a
--- /dev/null
@@ -0,0 +1,24 @@
+#ifndef __SETUPGUI__\r
+#define __SETUPGUI__\r
+\r
+#include <QtGui/QMainWindow>\r
+#include "ui_setupgui.h"\r
+\r
+#include "TouchscreenButtonsExperiment.h"\r
+\r
+class SetupGUI : public QMainWindow, public Ui::SetupGUI\r
+{\r
+       Q_OBJECT\r
+\r
+       public:\r
+               SetupGUI(QWidget *parent = 0, Qt::WFlags flags = 0);\r
+               ~SetupGUI();\r
+\r
+       public slots:\r
+               void init();\r
+\r
+       private:\r
+               TouchscreenButtonsExperiment *_expwindow;\r
+};\r
+\r
+#endif\r
diff --git a/Touchscreen Buttons Experiment/Touchscreen Buttons Experiment.vcxproj b/Touchscreen Buttons Experiment/Touchscreen Buttons Experiment.vcxproj
new file mode 100644 (file)
index 0000000..9fdd84a
--- /dev/null
@@ -0,0 +1,194 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{9466E3E8-496E-4DDF-BCE6-20DD992504C1}</ProjectGuid>\r
+    <Keyword>Qt4VSv1.0</Keyword>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>\r
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />\r
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />\r
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>\r
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />\r
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <ClCompile>\r
+      <PreprocessorDefinitions>UNICODE;WIN32;QT_LARGEFILE_SUPPORT;QT_DLL;QT_CORE_LIB;QT_GUI_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <AdditionalIncludeDirectories>.\GeneratedFiles;.;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <Optimization>Disabled</Optimization>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>\r
+    </ClCompile>\r
+    <Link>\r
+      <SubSystem>Windows</SubSystem>\r
+      <OutputFile>$(OutDir)\$(ProjectName).exe</OutputFile>\r
+      <AdditionalLibraryDirectories>$(QTDIR)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <AdditionalDependencies>tactonplayerd.lib;hidapid.lib;qtmaind.lib;QtCored4.lib;QtGuid4.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <ClCompile>\r
+      <PreprocessorDefinitions>UNICODE;WIN32;QT_LARGEFILE_SUPPORT;QT_DLL;QT_NO_DEBUG;NDEBUG;QT_CORE_LIB;QT_GUI_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <AdditionalIncludeDirectories>.\GeneratedFiles;.;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <DebugInformationFormat>\r
+      </DebugInformationFormat>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>\r
+    </ClCompile>\r
+    <Link>\r
+      <SubSystem>Windows</SubSystem>\r
+      <OutputFile>$(OutDir)\$(ProjectName).exe</OutputFile>\r
+      <AdditionalLibraryDirectories>$(QTDIR)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>false</GenerateDebugInformation>\r
+      <AdditionalDependencies>tactonplayer.lib;hidapi.lib;qtmain.lib;QtCore4.lib;QtGui4.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="..\..\dwell\TouchscreenButton\USBHIDImmersionTouchscreen.cpp" />\r
+    <ClCompile Include="..\..\dwell\TouchscreenButton\Wristband.cpp" />\r
+    <ClCompile Include="GeneratedFiles\Debug\moc_SetupGUI.cpp">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\Debug\moc_TouchscreenButtonsExperiment.cpp">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\qrc_touchscreenbuttonsexperiment.cpp">\r
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+      </PrecompiledHeader>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\Release\moc_SetupGUI.cpp">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\Release\moc_TouchscreenButtonsExperiment.cpp">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
+    </ClCompile>\r
+    <ClCompile Include="main.cpp" />\r
+    <ClCompile Include="SetupGUI.cpp" />\r
+    <ClCompile Include="TouchscreenButtonsExperiment.cpp" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <CustomBuild Include="TouchscreenButtonsExperiment.h">\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing TouchscreenButtonsExperiment.h...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui"</Command>\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing TouchscreenButtonsExperiment.h...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui"</Command>\r
+    </CustomBuild>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <CustomBuild Include="touchscreenbuttonsexperiment.ui">\r
+      <FileType>Document</FileType>\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\uic.exe;%(AdditionalInputs)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Uic%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\ui_%(Filename).h;%(Outputs)</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\uic.exe" -o ".\GeneratedFiles\ui_%(Filename).h" "%(FullPath)"</Command>\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\uic.exe;%(AdditionalInputs)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Uic%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\ui_%(Filename).h;%(Outputs)</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\uic.exe" -o ".\GeneratedFiles\ui_%(Filename).h" "%(FullPath)"</Command>\r
+    </CustomBuild>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClInclude Include="..\..\dwell\TouchscreenButton\USBHIDImmersionTouchscreen.h" />\r
+    <ClInclude Include="..\..\dwell\TouchscreenButton\Wristband.h" />\r
+    <ClInclude Include="GeneratedFiles\ui_setupgui.h" />\r
+    <ClInclude Include="GeneratedFiles\ui_touchscreenbuttonsexperiment.h" />\r
+    <ClInclude Include="GeneratedFiles\ui_touchscreenbuttonsexperimenten.h" />\r
+    <CustomBuild Include="SetupGUI.h">\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing SetupGUI.h...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui"</Command>\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing SetupGUI.h...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui"</Command>\r
+    </CustomBuild>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <CustomBuild Include="touchscreenbuttonsexperiment.qrc">\r
+      <FileType>Document</FileType>\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(FullPath);%(AdditionalInputs)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Rcc%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\qrc_%(Filename).cpp;%(Outputs)</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\rcc.exe" -name "%(Filename)" -no-compress "%(FullPath)" -o .\GeneratedFiles\qrc_%(Filename).cpp</Command>\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(FullPath);%(AdditionalInputs)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Rcc%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\qrc_%(Filename).cpp;%(Outputs)</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\rcc.exe" -name "%(Filename)" -no-compress "%(FullPath)" -o .\GeneratedFiles\qrc_%(Filename).cpp</Command>\r
+    </CustomBuild>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <CustomBuild Include="setupgui.ui">\r
+      <FileType>Document</FileType>\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\uic.exe;%(AdditionalInputs)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Uic%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\ui_%(Filename).h;%(Outputs)</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\uic.exe" -o ".\GeneratedFiles\ui_%(Filename).h" "%(FullPath)"</Command>\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\uic.exe;%(AdditionalInputs)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Uic%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\ui_%(Filename).h;%(Outputs)</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\uic.exe" -o ".\GeneratedFiles\ui_%(Filename).h" "%(FullPath)"</Command>\r
+    </CustomBuild>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <None Include="ClassDiagram1.cd" />\r
+    <CustomBuild Include="touchscreenbuttonsexperimenten.ui">\r
+      <FileType>Document</FileType>\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\uic.exe;%(AdditionalInputs)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Uic%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\ui_%(Filename).h;%(Outputs)</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\uic.exe" -o ".\GeneratedFiles\ui_%(Filename).h" "%(FullPath)"</Command>\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\uic.exe;%(AdditionalInputs)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Uic%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\ui_%(Filename).h;%(Outputs)</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\uic.exe" -o ".\GeneratedFiles\ui_%(Filename).h" "%(FullPath)"</Command>\r
+    </CustomBuild>\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+  <ProjectExtensions>\r
+    <VisualStudio>\r
+      <UserProperties UicDir=".\GeneratedFiles" MocDir=".\GeneratedFiles\$(ConfigurationName)" MocOptions="" RccDir=".\GeneratedFiles" lupdateOnBuild="0" lupdateOptions="" lreleaseOptions="" QtVersion_x0020_Win32="4.8.2" />\r
+    </VisualStudio>\r
+  </ProjectExtensions>\r
+</Project>
\ No newline at end of file
diff --git a/Touchscreen Buttons Experiment/TouchscreenButtonsExperiment.cpp b/Touchscreen Buttons Experiment/TouchscreenButtonsExperiment.cpp
new file mode 100644 (file)
index 0000000..de61150
--- /dev/null
@@ -0,0 +1,179 @@
+#include "TouchscreenButtonsExperiment.h"\r
+\r
+#include <QDateTime>\r
+#include <QDebug>\r
+\r
+TouchscreenButtonsExperiment::TouchscreenButtonsExperiment(QWidget *parent, Qt::WFlags flags)\r
+: QMainWindow(parent, flags), _current(0)\r
+{\r
+       setupUi(this);\r
+\r
+       try\r
+       {\r
+               _touchscreen = new USBHIDImmersionTouchscreen();\r
+       }\r
+       catch(...)\r
+       {\r
+               qDebug() << "Cannot find the touchscreen";\r
+               _touchscreen = NULL;\r
+       }\r
+\r
+       try\r
+       {\r
+               _wristband = new Wristband();\r
+       }\r
+       catch(...)\r
+       {\r
+               qDebug() << "Cannot find the wristband";\r
+               _wristband = NULL;\r
+       }\r
+\r
+       connect(_play, SIGNAL(pressed()), this, SLOT(pressWristband()));\r
+       connect(_play, SIGNAL(released()), this, SLOT(releaseWristband()));\r
+       connect(_play, SIGNAL(pressed()), this, SLOT(pressTouchscreen()));\r
+\r
+       connect(_answer1, SIGNAL(actionTriggered(int)), this, SLOT(slider1Action(int)));\r
+       connect(_answer2, SIGNAL(actionTriggered(int)), this, SLOT(slider2Action(int)));\r
+\r
+\r
+       connect(_validate, SIGNAL(pressed()), this, SLOT(answer()));\r
+}\r
+\r
+TouchscreenButtonsExperiment::~TouchscreenButtonsExperiment()\r
+{\r
+       if (_logfile)\r
+               fclose(_logfile);\r
+       if (_touchscreen)\r
+               delete _touchscreen;\r
+       if (_wristband)\r
+               delete _wristband;\r
+       hid_exit();\r
+}\r
+\r
+void TouchscreenButtonsExperiment::init(QString user, QString effects, int repetitions)\r
+{\r
+       _user = user;\r
+        QStringList effectlist = effects.split(";");\r
+        _effects = new int[effectlist.length()];\r
+        for (unsigned int i = 0 ; i < effectlist.length() ; i++)\r
+                _effects[i] = effectlist[i].toInt();\r
+        _repetitions = repetitions;\r
+\r
+        //create log file\r
+       QString date = QDate::currentDate().toString("yyyy-MM-dd") + "-" + QTime::currentTime().toString("HH-mm-ss");\r
+       QString logfilename = user + "-" + QString::number(repetitions) + "-" + date + ".csv";\r
+       _logfile = fopen(logfilename.toStdString().c_str(), "w");\r
+       qDebug() << "log: " << logfilename;\r
+       if (_logfile)\r
+               fprintf(_logfile, "Time,User,Condition,Effect,NbPress,Answer1,Answer2\n");\r
+\r
+        //Prepare trials\r
+       for (int i = 0 ; i < _repetitions ; i++)\r
+       {\r
+               QList<QPair<unsigned char,int> > temp;\r
+               //generate the block\r
+               for (int j = 0 ; j < NBCONDITIONS ; j++)\r
+                       for (int k = 0 ; k < effectlist.length() ; k++)\r
+                               temp.push_back(QPair<unsigned char,int>(k, j));\r
+               //shuffle\r
+               for (int j = 0; j < temp.count(); j++)\r
+                       temp.swap(j, (rand() % (temp.count() - j)) + j);\r
+               //add the block to the trial\r
+               _trials.append(temp);\r
+       }\r
+\r
+        //run trial\r
+       _timer.start();\r
+       runTrial();\r
+}\r
+\r
+void TouchscreenButtonsExperiment::runTrial()\r
+{\r
+       if (_current >= _trials.count())\r
+       {\r
+               _validate->setText("Terminé");\r
+               _validate->setDisabled(true);\r
+               _play->setDisabled(true);\r
+\r
+               disconnect(_play, SIGNAL(pressed()), this, SLOT(pressWristband()));\r
+               disconnect(_play, SIGNAL(released()), this, SLOT(releaseWristband()));\r
+               disconnect(_play, SIGNAL(pressed()), this, SLOT(pressTouchscreen()));\r
+               return;\r
+       }\r
+\r
+       //reset stats\r
+       _presses = 0;\r
+       _validate->setDisabled(true);\r
+       _answer1->setValue((_answer1->minimum() + _answer1->maximum()) / 2);\r
+       _answer2->setValue((_answer2->minimum() + _answer2->maximum()) / 2);\r
+}\r
+\r
+\r
+void TouchscreenButtonsExperiment::answer()\r
+{\r
+       //write answer in the log file\r
+       log();\r
+\r
+       _current++;\r
+\r
+       //run next trial\r
+       runTrial();\r
+}\r
+\r
+void TouchscreenButtonsExperiment::log()\r
+{\r
+       if (_logfile)\r
+               fprintf(_logfile, "%lld,%s,%d,%d,%d,%d,%d\n",\r
+                       _timer.elapsed(),\r
+                       _user.toStdString().c_str(),\r
+                       _trials.at(_current).second,\r
+                       _trials.at(_current).first,\r
+                       _presses,\r
+                       _answer1->value(),\r
+                       _answer2->value());\r
+}\r
+\r
+void TouchscreenButtonsExperiment::pressWristband()\r
+{\r
+       switch (_trials.at(_current).second)\r
+       {\r
+               case WRISTBAND:\r
+                       _wristband->playEffect(_trials.at(_current).first, 1);\r
+                       break;\r
+               case  WRISTBANDTIME: case BOTH:\r
+                       _wristband->playEffect(_trials.at(_current).first, 2);\r
+                       break;\r
+               default:\r
+                       break;\r
+       }       _validate->setEnabled(true);\r
+}\r
+\r
+void TouchscreenButtonsExperiment::releaseWristband()\r
+{\r
+       if (_trials.at(_current).second == WRISTBAND)\r
+               _wristband->playEffect(_trials.at(_current).first, 1);\r
+\r
+       _presses++;\r
+}\r
+\r
+void TouchscreenButtonsExperiment::pressTouchscreen()\r
+{\r
+       if (_trials.at(_current).second == TOUCHSCREEN || _trials.at(_current).second == BOTH)\r
+               _touchscreen->playEffect(_trials.at(_current).first, 1);\r
+\r
+       _validate->setEnabled(true);\r
+}\r
+\r
+void TouchscreenButtonsExperiment::slider1Action(int action)\r
+{\r
+       // prevents the wlider from moving when pressing the sides of the handle\r
+       if (action != QAbstractSlider::SliderMove)\r
+               _answer1->setSliderPosition(_answer1->value());\r
+}\r
+\r
+void TouchscreenButtonsExperiment::slider2Action(int action)\r
+{\r
+       // prevents the wlider from moving when pressing the sides of the handle\r
+       if (action != QAbstractSlider::SliderMove)\r
+               _answer2->setSliderPosition(_answer2->value());\r
+}\r
diff --git a/Touchscreen Buttons Experiment/TouchscreenButtonsExperiment.h b/Touchscreen Buttons Experiment/TouchscreenButtonsExperiment.h
new file mode 100644 (file)
index 0000000..0f076b6
--- /dev/null
@@ -0,0 +1,62 @@
+#ifndef TOUCHSCREENBUTTONSEXPERIMENT_H\r
+#define TOUCHSCREENBUTTONSEXPERIMENT_H\r
+\r
+#include <QtGui/QMainWindow>\r
+#include <QElapsedTimer>\r
+#include "ui_touchscreenbuttonsexperimenten.h"\r
+\r
+#include "..\..\dwell\TouchscreenButton\Wristband.h"\r
+#include "..\..\dwell\TouchscreenButton\USBHIDImmersionTouchscreen.h"\r
+\r
+class TouchscreenButtonsExperiment : public QMainWindow, public Ui::TouchscreenButtonsExperimentClass\r
+{\r
+       Q_OBJECT\r
+\r
+       public:\r
+               TouchscreenButtonsExperiment(QWidget *parent = 0, Qt::WFlags flags = 0);\r
+               ~TouchscreenButtonsExperiment();\r
+\r
+               void init(QString user, QString effects, int repetitions);\r
+\r
+               void log();\r
+\r
+\r
+               void runTrial();\r
+\r
+       public slots:\r
+               void answer();\r
+               void pressWristband();\r
+               void releaseWristband();\r
+               void pressTouchscreen();\r
+\r
+               void slider1Action(int);\r
+               void slider2Action(int);\r
+\r
+       private:\r
+\r
+               enum Condition { \r
+                       NOEFFECT,\r
+                       WRISTBAND, \r
+                       WRISTBANDTIME,\r
+                       TOUCHSCREEN,\r
+                       BOTH,\r
+                       NBCONDITIONS\r
+               };\r
+\r
+               USBHIDImmersionTouchscreen *_touchscreen;\r
+               Wristband *_wristband;\r
+\r
+               QString _user;\r
+               int *_effects;\r
+               int _repetitions;\r
+               int _presses;\r
+\r
+               //each trial is a pair of <effect, condition>\r
+               QList<QPair<unsigned char, int> > _trials;\r
+               int _current;\r
+               QElapsedTimer _timer;\r
+\r
+               FILE *_logfile;\r
+};\r
+\r
+#endif // TOUCHSCREENBUTTONSEXPERIMENT_H\r
diff --git a/Touchscreen Buttons Experiment/main.cpp b/Touchscreen Buttons Experiment/main.cpp
new file mode 100644 (file)
index 0000000..677f9ee
--- /dev/null
@@ -0,0 +1,10 @@
+#include "SetupGUI.h"\r
+#include <QtGui/QApplication>\r
+\r
+int main(int argc, char *argv[])\r
+{\r
+       QApplication a(argc, argv);\r
+       SetupGUI w;\r
+       w.show();\r
+       return a.exec();\r
+}\r
diff --git a/Touchscreen Buttons Experiment/setupgui.ui b/Touchscreen Buttons Experiment/setupgui.ui
new file mode 100644 (file)
index 0000000..97a256b
--- /dev/null
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<ui version="4.0">\r
+ <class>SetupGUI</class>\r
+ <widget class="QMainWindow" name="SetupGUI">\r
+  <property name="geometry">\r
+   <rect>\r
+    <x>0</x>\r
+    <y>0</y>\r
+    <width>236</width>\r
+    <height>121</height>\r
+   </rect>\r
+  </property>\r
+  <property name="windowTitle">\r
+   <string>Touchscreen buttons experiment</string>\r
+  </property>\r
+  <property name="windowOpacity">\r
+   <double>1.000000000000000</double>\r
+  </property>\r
+  <widget class="QWidget" name="Layout">\r
+   <layout class="QVBoxLayout" name="verticalLayout">\r
+    <item>\r
+     <layout class="QFormLayout" name="formLayout">\r
+      <item row="0" column="0">\r
+       <widget class="QLabel" name="userLabel">\r
+        <property name="text">\r
+         <string>User: </string>\r
+        </property>\r
+       </widget>\r
+      </item>\r
+      <item row="0" column="1">\r
+       <widget class="QLineEdit" name="_user"/>\r
+      </item>\r
+      <item row="1" column="0">\r
+       <widget class="QLabel" name="effectsLabel">\r
+        <property name="text">\r
+         <string>Effects: </string>\r
+        </property>\r
+       </widget>\r
+      </item>\r
+      <item row="1" column="1">\r
+       <widget class="QLineEdit" name="_effects">\r
+        <property name="text">\r
+         <string>3;8;12;13</string>\r
+        </property>\r
+       </widget>\r
+      </item>\r
+      <item row="2" column="0">\r
+       <widget class="QLabel" name="repetitionsLabel">\r
+        <property name="text">\r
+         <string>Repetitions: </string>\r
+        </property>\r
+       </widget>\r
+      </item>\r
+      <item row="2" column="1">\r
+       <widget class="QSpinBox" name="_repetitions">\r
+        <property name="minimum">\r
+         <number>1</number>\r
+        </property>\r
+        <property name="value">\r
+         <number>3</number>\r
+        </property>\r
+       </widget>\r
+      </item>\r
+     </layout>\r
+    </item>\r
+    <item>\r
+     <widget class="QPushButton" name="_start">\r
+      <property name="text">\r
+       <string>Start</string>\r
+      </property>\r
+     </widget>\r
+    </item>\r
+   </layout>\r
+  </widget>\r
+ </widget>\r
+ <resources/>\r
+ <connections/>\r
+</ui>\r
diff --git a/Touchscreen Buttons Experiment/setupgui2.ui b/Touchscreen Buttons Experiment/setupgui2.ui
new file mode 100644 (file)
index 0000000..3399a5d
--- /dev/null
@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<ui version="4.0">\r
+ <class>SetupGUI</class>\r
+ <widget class="QDialog" name="SetupGUI">\r
+  <property name="geometry">\r
+   <rect>\r
+    <x>0</x>\r
+    <y>0</y>\r
+    <width>222</width>\r
+    <height>123</height>\r
+   </rect>\r
+  </property>\r
+  <property name="windowTitle">\r
+   <string>Dialog</string>\r
+  </property>\r
+  <layout class="QVBoxLayout" name="verticalLayout">\r
+   <item>\r
+    <layout class="QVBoxLayout" name="verticalLayout_2">\r
+     <property name="spacing">\r
+      <number>6</number>\r
+     </property>\r
+     <property name="margin">\r
+      <number>0</number>\r
+     </property>\r
+     <item>\r
+      <layout class="QFormLayout" name="formLayout">\r
+       <property name="fieldGrowthPolicy">\r
+        <enum>QFormLayout::AllNonFixedFieldsGrow</enum>\r
+       </property>\r
+       <item row="0" column="0">\r
+        <widget class="QLabel" name="_luser">\r
+         <property name="text">\r
+          <string>User:</string>\r
+         </property>\r
+        </widget>\r
+       </item>\r
+       <item row="0" column="1">\r
+        <widget class="QLineEdit" name="_user"/>\r
+       </item>\r
+       <item row="1" column="0">\r
+        <widget class="QLabel" name="effectsLabel">\r
+         <property name="text">\r
+          <string>Effects:</string>\r
+         </property>\r
+        </widget>\r
+       </item>\r
+       <item row="1" column="1">\r
+        <widget class="QLineEdit" name="_effects">\r
+         <property name="text">\r
+          <string>0;1;2</string>\r
+         </property>\r
+        </widget>\r
+       </item>\r
+       <item row="2" column="0">\r
+        <widget class="QLabel" name="repetitionsLabel">\r
+         <property name="text">\r
+          <string>Repetitions:</string>\r
+         </property>\r
+        </widget>\r
+       </item>\r
+       <item row="2" column="1">\r
+        <widget class="QSpinBox" name="_repetitions">\r
+         <property name="maximum">\r
+          <number>10</number>\r
+         </property>\r
+         <property name="value">\r
+          <number>3</number>\r
+         </property>\r
+        </widget>\r
+       </item>\r
+      </layout>\r
+     </item>\r
+     <item>\r
+      <widget class="QPushButton" name="_start">\r
+       <property name="text">\r
+        <string>Start</string>\r
+       </property>\r
+      </widget>\r
+     </item>\r
+    </layout>\r
+   </item>\r
+  </layout>\r
+ </widget>\r
+ <resources/>\r
+ <connections>\r
+  <connection>\r
+   <sender>_start</sender>\r
+   <signal>clicked()</signal>\r
+   <receiver>SetupGUI</receiver>\r
+   <slot>accept()</slot>\r
+   <hints>\r
+    <hint type="sourcelabel">\r
+     <x>278</x>\r
+     <y>253</y>\r
+    </hint>\r
+    <hint type="destinationlabel">\r
+     <x>96</x>\r
+     <y>254</y>\r
+    </hint>\r
+   </hints>\r
+  </connection>\r
+ </connections>\r
+</ui>\r
diff --git a/Touchscreen Buttons Experiment/touchscreenbuttonsexperiment.ui b/Touchscreen Buttons Experiment/touchscreenbuttonsexperiment.ui
new file mode 100644 (file)
index 0000000..26f46e6
--- /dev/null
@@ -0,0 +1,290 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<ui version="4.0">\r
+ <class>TouchscreenButtonsExperimentClass</class>\r
+ <widget class="QMainWindow" name="TouchscreenButtonsExperimentClass">\r
+  <property name="geometry">\r
+   <rect>\r
+    <x>0</x>\r
+    <y>0</y>\r
+    <width>740</width>\r
+    <height>588</height>\r
+   </rect>\r
+  </property>\r
+  <property name="windowTitle">\r
+   <string>TouchscreenButtonsExperiment</string>\r
+  </property>\r
+  <widget class="QWidget" name="centralWidget">\r
+   <layout class="QVBoxLayout" name="verticalLayout">\r
+    <item>\r
+     <spacer name="verticalSpacer_2">\r
+      <property name="orientation">\r
+       <enum>Qt::Vertical</enum>\r
+      </property>\r
+      <property name="sizeHint" stdset="0">\r
+       <size>\r
+        <width>20</width>\r
+        <height>40</height>\r
+       </size>\r
+      </property>\r
+     </spacer>\r
+    </item>\r
+    <item>\r
+     <widget class="QPushButton" name="_play">\r
+      <property name="font">\r
+       <font>\r
+        <pointsize>50</pointsize>\r
+       </font>\r
+      </property>\r
+      <property name="styleSheet">\r
+       <string notr="true">QPushButton {\r
+    border: 2px solid #8f8f91;\r
+     border-radius: 6px;\r
+     background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,\r
+                                       stop: 0 #d6d7da, stop: 1 #babbbe);\r
+     min-width: 80px;\r
+ }\r
+\r
+ QPushButton:hover {\r
+     background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,\r
+                                       stop: 0#f6f7fa , stop: 1 #dadbde);\r
+ }\r
+\r
+ QPushButton:hover:pressed {\r
+     background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,\r
+                                       stop: 0 #babbbe, stop: 1 #f6f7fa);\r
+ }\r
+\r
+ QPushButton:flat {\r
+     border: none; /* no border for a flat push button */\r
+ }\r
+\r
+ QPushButton:default {\r
+     border-color: navy; /* make the default button prominent */\r
+ }</string>\r
+      </property>\r
+      <property name="text">\r
+       <string>Play</string>\r
+      </property>\r
+     </widget>\r
+    </item>\r
+    <item>\r
+     <spacer name="verticalSpacer">\r
+      <property name="orientation">\r
+       <enum>Qt::Vertical</enum>\r
+      </property>\r
+      <property name="sizeHint" stdset="0">\r
+       <size>\r
+        <width>20</width>\r
+        <height>40</height>\r
+       </size>\r
+      </property>\r
+     </spacer>\r
+    </item>\r
+    <item>\r
+     <widget class="QLabel" name="label">\r
+      <property name="font">\r
+       <font>\r
+        <pointsize>12</pointsize>\r
+       </font>\r
+      </property>\r
+      <property name="text">\r
+       <string>A quel point avez-vous l'impression de presser un bouton ?</string>\r
+      </property>\r
+     </widget>\r
+    </item>\r
+    <item>\r
+     <layout class="QHBoxLayout" name="horizontalLayout">\r
+      <item>\r
+       <widget class="QLabel" name="label_2">\r
+        <property name="font">\r
+         <font>\r
+          <pointsize>12</pointsize>\r
+         </font>\r
+        </property>\r
+        <property name="text">\r
+         <string>Pas du tout</string>\r
+        </property>\r
+       </widget>\r
+      </item>\r
+      <item>\r
+       <widget class="QSlider" name="_answer1">\r
+        <property name="minimumSize">\r
+         <size>\r
+          <width>50</width>\r
+          <height>50</height>\r
+         </size>\r
+        </property>\r
+        <property name="styleSheet">\r
+         <string notr="true">QSlider { height: 100px}\r
+\r
+QSlider::groove:horizontal {\r
+ border:2px solid #999999;\r
+ height:60px;\r
+ margin: 0 0 0 0;\r
+}\r
+\r
+QSlider::handle:horizontal {\r
+ background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #B1B1B1, stop:1 #c4c4c4);\r
+ border: 1px solid #5c5c5c;\r
+ width:70px;\r
+ margin: -10px 0 -10px 0;\r
+ border-radius: 3px;\r
+}\r
+</string>\r
+        </property>\r
+        <property name="minimum">\r
+         <number>1</number>\r
+        </property>\r
+        <property name="maximum">\r
+         <number>100</number>\r
+        </property>\r
+        <property name="value">\r
+         <number>50</number>\r
+        </property>\r
+        <property name="orientation">\r
+         <enum>Qt::Horizontal</enum>\r
+        </property>\r
+       </widget>\r
+      </item>\r
+      <item>\r
+       <widget class="QLabel" name="label_3">\r
+        <property name="font">\r
+         <font>\r
+          <pointsize>12</pointsize>\r
+         </font>\r
+        </property>\r
+        <property name="text">\r
+         <string>Beaucoup</string>\r
+        </property>\r
+       </widget>\r
+      </item>\r
+     </layout>\r
+    </item>\r
+    <item>\r
+     <widget class="QLabel" name="label_4">\r
+      <property name="font">\r
+       <font>\r
+        <pointsize>12</pointsize>\r
+       </font>\r
+      </property>\r
+      <property name="text">\r
+       <string>Est-ce que le ressenti du bouton est agréable ?</string>\r
+      </property>\r
+     </widget>\r
+    </item>\r
+    <item>\r
+     <layout class="QHBoxLayout" name="horizontalLayout_2">\r
+      <item>\r
+       <widget class="QLabel" name="label_6">\r
+        <property name="font">\r
+         <font>\r
+          <pointsize>12</pointsize>\r
+         </font>\r
+        </property>\r
+        <property name="text">\r
+         <string>Pas du tout</string>\r
+        </property>\r
+       </widget>\r
+      </item>\r
+      <item>\r
+       <widget class="QSlider" name="_answer2">\r
+        <property name="minimumSize">\r
+         <size>\r
+          <width>0</width>\r
+          <height>50</height>\r
+         </size>\r
+        </property>\r
+        <property name="styleSheet">\r
+         <string notr="true">QSlider { height: 100px}\r
+\r
+QSlider::groove:horizontal {\r
+ border:2px solid #999999;\r
+ height:60px;\r
+ margin: 0 0 0 0;\r
+}\r
+\r
+QSlider::handle:horizontal {\r
+ background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #B1B1B1, stop:1 #c4c4c4);\r
+ border: 1px solid #5c5c5c;\r
+ width:70px;\r
+ margin: -10px 0 -10px 0;\r
+ border-radius: 3px;\r
+}\r
+</string>\r
+        </property>\r
+        <property name="minimum">\r
+         <number>1</number>\r
+        </property>\r
+        <property name="maximum">\r
+         <number>100</number>\r
+        </property>\r
+        <property name="value">\r
+         <number>50</number>\r
+        </property>\r
+        <property name="orientation">\r
+         <enum>Qt::Horizontal</enum>\r
+        </property>\r
+       </widget>\r
+      </item>\r
+      <item>\r
+       <widget class="QLabel" name="label_5">\r
+        <property name="font">\r
+         <font>\r
+          <pointsize>12</pointsize>\r
+         </font>\r
+        </property>\r
+        <property name="text">\r
+         <string>Beaucoup</string>\r
+        </property>\r
+       </widget>\r
+      </item>\r
+     </layout>\r
+    </item>\r
+    <item>\r
+     <widget class="QPushButton" name="_validate">\r
+      <property name="font">\r
+       <font>\r
+        <pointsize>50</pointsize>\r
+       </font>\r
+      </property>\r
+      <property name="styleSheet">\r
+       <string notr="true">QPushButton {\r
+    border: 2px solid #8f8f91;\r
+     border-radius: 6px;\r
+     background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,\r
+                                       stop: 0 #d6d7da, stop: 1 #babbbe);\r
+     min-width: 80px;\r
+ }\r
+\r
+ QPushButton:hover {\r
+     background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,\r
+                                       stop: 0#f6f7fa , stop: 1 #dadbde);\r
+ }\r
+\r
+ QPushButton:hover:pressed {\r
+     background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,\r
+                                       stop: 0 #babbbe, stop: 1 #f6f7fa);\r
+ }\r
+\r
+ QPushButton:flat {\r
+     border: none; /* no border for a flat push button */\r
+ }\r
+\r
+ QPushButton:default {\r
+     border-color: navy; /* make the default button prominent */\r
+ }</string>\r
+      </property>\r
+      <property name="text">\r
+       <string>Valider</string>\r
+      </property>\r
+     </widget>\r
+    </item>\r
+   </layout>\r
+  </widget>\r
+ </widget>\r
+ <layoutdefault spacing="6" margin="11"/>\r
+ <resources>\r
+  <include location="touchscreenbuttonsexperiment.qrc"/>\r
+ </resources>\r
+ <connections/>\r
+</ui>\r