--- /dev/null
+#include "DwellButton.h"\r
+\r
+#include <QBrush>\r
+\r
+QColor DwellButton::_bgcolor = Qt::gray;\r
+QColor DwellButton::_hovercolor = Qt::lightGray;\r
+QColor DwellButton::_validatedcolor = Qt::red;\r
+QColor DwellButton::_targetcolor = Qt::green;\r
+QColor DwellButton::_targethovercolor = Qt::yellow;\r
+\r
+DwellButton::DwellButton(QGraphicsItem *parent)\r
+:QGraphicsRectItem(parent), _active(false)\r
+{\r
+ setBrush(QBrush(_bgcolor));\r
+ setZValue(0);\r
+}\r
+\r
+DwellButton::DwellButton(float posx, float posy, float width, float height, QGraphicsItem *parent)\r
+:QGraphicsRectItem(posx, posy, width, height, parent), _active(false)\r
+{\r
+ setBrush(QBrush(_bgcolor));\r
+ setZValue(0);\r
+}\r
+\r
+DwellButton::DwellButton(QRect pos, QGraphicsItem *parent)\r
+:QGraphicsRectItem(pos, parent), _active(false)\r
+{\r
+ setBrush(QBrush(_bgcolor));\r
+ setZValue(0);\r
+}\r
+\r
+void DwellButton::setActive() \r
+{ \r
+ _active = true; \r
+ setBrush(QBrush(_targetcolor));\r
+}\r
+\r
+void DwellButton::hover()\r
+{\r
+ if (_active)\r
+ setBrush(QBrush(_targethovercolor));\r
+ else\r
+ setBrush(QBrush(_hovercolor));\r
+}\r
+\r
+void DwellButton::press()\r
+{\r
+ setBrush(QBrush(_validatedcolor));\r
+ emit clicked();\r
+ _active = false;\r
+ //disconnect(this);\r
+}\r
+\r
+void DwellButton::leave()\r
+{\r
+ if (_active)\r
+ setBrush(QBrush(_targetcolor));\r
+ else\r
+ setBrush(QBrush(_bgcolor));\r
+}\r
--- /dev/null
+#ifndef __DWELLBUTTON__\r
+#define __DWELLBUTTON__\r
+\r
+#include <QGraphicsRectItem>\r
+#include <QColor>\r
+\r
+class DwellButton: public QObject, public QGraphicsRectItem\r
+{\r
+ Q_OBJECT\r
+\r
+ public:\r
+ DwellButton(QGraphicsItem *parent = 0);\r
+ DwellButton(float posx, float posy, float width, float height, QGraphicsItem *parent = 0);\r
+ DwellButton(QRect pos, QGraphicsItem *parent = 0);\r
+\r
+ void setActive();\r
+\r
+ private:\r
+ static QColor _bgcolor, _hovercolor, _validatedcolor, _targetcolor, _targethovercolor;\r
+ bool _active;\r
+\r
+ public slots:\r
+ void hover();\r
+ void press();\r
+ void leave();\r
+\r
+ private slots:\r
+\r
+ signals:\r
+ void clicked();\r
+};\r
+\r
+#endif\r
--- /dev/null
+<?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>{2928B2FC-98F8-427E-B0D2-2CEA2DA1FFC9}</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.40219.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)$(ConfigurationName)</OutDir>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(ConfigurationName)</OutDir>\r
+ </PropertyGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ <ClCompile>\r
+ <PreprocessorDefinitions>UNICODE;WIN32;QT_LARGEFILE_SUPPORT;QT_CORE_LIB;QT_GUI_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <AdditionalIncludeDirectories>$(KINECTSDK10_DIR)\inc;.\GeneratedFiles;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\qtmain;$(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>$(KINECTSDK10_DIR)\lib\x86;$(QTDIR)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+ <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <AdditionalDependencies>tactonplayer.lib;Kinect10.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_NO_DEBUG;NDEBUG;QT_CORE_LIB;QT_GUI_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <AdditionalIncludeDirectories>$(KINECTSDK10_DIR)\inc;.\GeneratedFiles;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\qtmain;$(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>$(KINECTSDK10_DIR)\lib\x86;$(QTDIR)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+ <GenerateDebugInformation>false</GenerateDebugInformation>\r
+ <AdditionalDependencies>tactonplayer.lib;Kinect10.lib;qtmain.lib;QtCore4.lib;QtGui4.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+ </Link>\r
+ </ItemDefinitionGroup>\r
+ <ItemGroup>\r
+ <ClCompile Include="DwellButton.cpp" />\r
+ <ClCompile Include="dwellcursor.cpp" />\r
+ <ClCompile Include="DwellWidget.cpp" />\r
+ <ClCompile Include="ExperimentSetup.cpp" />\r
+ <ClCompile Include="GeneratedFiles\Debug\moc_DwellButton.cpp">\r
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
+ </ClCompile>\r
+ <ClCompile Include="GeneratedFiles\Debug\moc_dwellcursor.cpp">\r
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
+ </ClCompile>\r
+ <ClCompile Include="GeneratedFiles\Debug\moc_DwellWidget.cpp">\r
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
+ </ClCompile>\r
+ <ClCompile Include="GeneratedFiles\Debug\moc_ExperimentSetup.cpp">\r
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
+ </ClCompile>\r
+ <ClCompile Include="GeneratedFiles\Debug\moc_KinectInput.cpp">\r
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
+ </ClCompile>\r
+ <ClCompile Include="GeneratedFiles\Debug\moc_MainScene.cpp">\r
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
+ </ClCompile>\r
+ <ClCompile Include="GeneratedFiles\Debug\moc_MainView.cpp">\r
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
+ </ClCompile>\r
+ <ClCompile Include="GeneratedFiles\qrc_dwellcursor.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_DwellButton.cpp">\r
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
+ </ClCompile>\r
+ <ClCompile Include="GeneratedFiles\Release\moc_dwellcursor.cpp">\r
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
+ </ClCompile>\r
+ <ClCompile Include="GeneratedFiles\Release\moc_DwellWidget.cpp">\r
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
+ </ClCompile>\r
+ <ClCompile Include="GeneratedFiles\Release\moc_ExperimentSetup.cpp">\r
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
+ </ClCompile>\r
+ <ClCompile Include="GeneratedFiles\Release\moc_KinectInput.cpp">\r
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
+ </ClCompile>\r
+ <ClCompile Include="GeneratedFiles\Release\moc_MainScene.cpp">\r
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
+ </ClCompile>\r
+ <ClCompile Include="GeneratedFiles\Release\moc_MainView.cpp">\r
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
+ </ClCompile>\r
+ <ClCompile Include="KinectInput.cpp" />\r
+ <ClCompile Include="main.cpp" />\r
+ <ClCompile Include="MainScene.cpp" />\r
+ <ClCompile Include="MainView.cpp" />\r
+ </ItemGroup>\r
+ <ItemGroup>\r
+ <CustomBuild Include="dwellcursor.h">\r
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>\r
+ <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing %(Identity)...</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" -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_CORE_LIB -DQT_GUI_LIB "-I." "-I$(KINECTSDK10_DIR)\inc" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I." "-I." "-I." "-I." "dwellcursor.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"</Command>\r
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>\r
+ <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing %(Identity)...</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" -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB "-I." "-I$(KINECTSDK10_DIR)\inc" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I." "-I." "-I." "-I." "dwellcursor.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"</Command>\r
+ </CustomBuild>\r
+ </ItemGroup>\r
+ <ItemGroup>\r
+ <CustomBuild Include="dwellcursor.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_ExperimentSetup.h" />\r
+ <CustomBuild Include="ExperimentSetup.h">\r
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>\r
+ <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing %(Identity)...</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" -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_CORE_LIB -DQT_GUI_LIB "-I." "-I$(KINECTSDK10_DIR)\inc" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I." "-I." "-I." "-I." "ExperimentSetup.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"</Command>\r
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>\r
+ <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing %(Identity)...</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" -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB "-I." "-I$(KINECTSDK10_DIR)\inc" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I." "-I." "-I." "-I." "ExperimentSetup.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"</Command>\r
+ </CustomBuild>\r
+ <CustomBuild Include="MainView.h">\r
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>\r
+ <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing %(Identity)...</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" -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_CORE_LIB -DQT_GUI_LIB "-I." "-I$(KINECTSDK10_DIR)\inc" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I." "-I." "-I." "-I." "MainView.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"</Command>\r
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>\r
+ <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing %(Identity)...</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" -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB "-I." "-I$(KINECTSDK10_DIR)\inc" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I." "-I." "-I." "-I." "MainView.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"</Command>\r
+ </CustomBuild>\r
+ <CustomBuild Include="DwellWidget.h">\r
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>\r
+ <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing %(Identity)...</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" -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_CORE_LIB -DQT_GUI_LIB "-I." "-I$(KINECTSDK10_DIR)\inc" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I." "-I." "-I." "-I." "DwellWidget.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"</Command>\r
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>\r
+ <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing %(Identity)...</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" -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB "-I." "-I$(KINECTSDK10_DIR)\inc" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I." "-I." "-I." "-I." "DwellWidget.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"</Command>\r
+ </CustomBuild>\r
+ <CustomBuild Include="DwellButton.h">\r
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>\r
+ <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing %(Identity)...</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" -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_CORE_LIB -DQT_GUI_LIB "-I." "-I$(KINECTSDK10_DIR)\inc" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I." "-I." "-I." "-I." "DwellButton.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"</Command>\r
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>\r
+ <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing %(Identity)...</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" -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB "-I." "-I$(KINECTSDK10_DIR)\inc" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I." "-I." "-I." "-I." "DwellButton.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"</Command>\r
+ </CustomBuild>\r
+ <ClInclude Include="GeneratedFiles\ui_dwellcursor.h" />\r
+ <CustomBuild Include="KinectInput.h">\r
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>\r
+ <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing %(Identity)...</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" -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_CORE_LIB -DQT_GUI_LIB "-I." "-I$(KINECTSDK10_DIR)\inc" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I." "-I." "-I." "-I." "KinectInput.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"</Command>\r
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>\r
+ <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing %(Identity)...</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" -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB "-I." "-I$(KINECTSDK10_DIR)\inc" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I." "-I." "-I." "-I." "KinectInput.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"</Command>\r
+ </CustomBuild>\r
+ <CustomBuild Include="MainScene.h">\r
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>\r
+ <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing %(Identity)...</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" -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_CORE_LIB -DQT_GUI_LIB "-I." "-I$(KINECTSDK10_DIR)\inc" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I." "-I." "-I." "-I." "MainScene.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"</Command>\r
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>\r
+ <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing %(Identity)...</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" -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB "-I." "-I$(KINECTSDK10_DIR)\inc" "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I." "-I." "-I." "-I." "MainScene.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"</Command>\r
+ </CustomBuild>\r
+ </ItemGroup>\r
+ <ItemGroup>\r
+ <CustomBuild Include="dwellcursor.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="ExperimentSetup.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.7.3" />\r
+ </VisualStudio>\r
+ </ProjectExtensions>\r
+</Project>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+ <ItemGroup>\r
+ <Filter Include="Source Files">\r
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>\r
+ <Extensions>cpp;cxx;c;def</Extensions>\r
+ </Filter>\r
+ <Filter Include="Header Files">\r
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>\r
+ <Extensions>h</Extensions>\r
+ </Filter>\r
+ <Filter Include="Form Files">\r
+ <UniqueIdentifier>{99349809-55BA-4b9d-BF79-8FDBB0286EB3}</UniqueIdentifier>\r
+ <Extensions>ui</Extensions>\r
+ </Filter>\r
+ <Filter Include="Resource Files">\r
+ <UniqueIdentifier>{D9D6E242-F8AF-46E4-B9FD-80ECBC20BA3E}</UniqueIdentifier>\r
+ <Extensions>qrc;*</Extensions>\r
+ <ParseFiles>false</ParseFiles>\r
+ </Filter>\r
+ <Filter Include="Generated Files">\r
+ <UniqueIdentifier>{71ED8ED8-ACB9-4CE9-BBE1-E00B30144E11}</UniqueIdentifier>\r
+ <Extensions>moc;h;cpp</Extensions>\r
+ <SourceControlFiles>False</SourceControlFiles>\r
+ </Filter>\r
+ <Filter Include="Generated Files\Debug">\r
+ <UniqueIdentifier>{8395e438-d93a-41cb-9c3a-631bdb7f2df0}</UniqueIdentifier>\r
+ <Extensions>cpp;moc</Extensions>\r
+ <SourceControlFiles>False</SourceControlFiles>\r
+ </Filter>\r
+ <Filter Include="Generated Files\Release">\r
+ <UniqueIdentifier>{d92c74f0-c1ab-4435-b7b0-32ae41c89011}</UniqueIdentifier>\r
+ <Extensions>cpp;moc</Extensions>\r
+ <SourceControlFiles>False</SourceControlFiles>\r
+ </Filter>\r
+ </ItemGroup>\r
+ <ItemGroup>\r
+ <ClCompile Include="main.cpp">\r
+ <Filter>Source Files</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="dwellcursor.cpp">\r
+ <Filter>Source Files</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="GeneratedFiles\Debug\moc_dwellcursor.cpp">\r
+ <Filter>Generated Files\Debug</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="GeneratedFiles\Release\moc_dwellcursor.cpp">\r
+ <Filter>Generated Files\Release</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="GeneratedFiles\qrc_dwellcursor.cpp">\r
+ <Filter>Generated Files</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="DwellWidget.cpp">\r
+ <Filter>Source Files</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="MainScene.cpp">\r
+ <Filter>Source Files</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="GeneratedFiles\Debug\moc_DwellWidget.cpp">\r
+ <Filter>Generated Files\Debug</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="GeneratedFiles\Release\moc_DwellWidget.cpp">\r
+ <Filter>Generated Files\Release</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="KinectInput.cpp">\r
+ <Filter>Source Files</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="GeneratedFiles\Debug\moc_KinectInput.cpp">\r
+ <Filter>Generated Files\Debug</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="GeneratedFiles\Release\moc_KinectInput.cpp">\r
+ <Filter>Generated Files\Release</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="GeneratedFiles\Debug\moc_MainScene.cpp">\r
+ <Filter>Generated Files\Debug</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="GeneratedFiles\Release\moc_MainScene.cpp">\r
+ <Filter>Generated Files\Release</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="MainView.cpp">\r
+ <Filter>Source Files</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="GeneratedFiles\Debug\moc_MainView.cpp">\r
+ <Filter>Generated Files\Debug</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="GeneratedFiles\Release\moc_MainView.cpp">\r
+ <Filter>Generated Files\Release</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="DwellButton.cpp">\r
+ <Filter>Source Files</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="GeneratedFiles\Debug\moc_DwellButton.cpp">\r
+ <Filter>Generated Files\Debug</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="GeneratedFiles\Release\moc_DwellButton.cpp">\r
+ <Filter>Generated Files\Release</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="GeneratedFiles\Debug\moc_ExperimentSetup.cpp">\r
+ <Filter>Generated Files\Debug</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="GeneratedFiles\Release\moc_ExperimentSetup.cpp">\r
+ <Filter>Generated Files\Release</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="ExperimentSetup.cpp">\r
+ <Filter>Source Files</Filter>\r
+ </ClCompile>\r
+ </ItemGroup>\r
+ <ItemGroup>\r
+ <CustomBuild Include="dwellcursor.h">\r
+ <Filter>Header Files</Filter>\r
+ </CustomBuild>\r
+ <CustomBuild Include="dwellcursor.ui">\r
+ <Filter>Form Files</Filter>\r
+ </CustomBuild>\r
+ <CustomBuild Include="dwellcursor.qrc">\r
+ <Filter>Resource Files</Filter>\r
+ </CustomBuild>\r
+ <CustomBuild Include="DwellWidget.h">\r
+ <Filter>Header Files</Filter>\r
+ </CustomBuild>\r
+ <CustomBuild Include="KinectInput.h">\r
+ <Filter>Header Files</Filter>\r
+ </CustomBuild>\r
+ <CustomBuild Include="MainScene.h">\r
+ <Filter>Header Files</Filter>\r
+ </CustomBuild>\r
+ <CustomBuild Include="MainView.h">\r
+ <Filter>Header Files</Filter>\r
+ </CustomBuild>\r
+ <CustomBuild Include="DwellButton.h">\r
+ <Filter>Header Files</Filter>\r
+ </CustomBuild>\r
+ <CustomBuild Include="ExperimentSetup.h">\r
+ <Filter>Header Files</Filter>\r
+ </CustomBuild>\r
+ <CustomBuild Include="ExperimentSetup.ui">\r
+ <Filter>Form Files</Filter>\r
+ </CustomBuild>\r
+ </ItemGroup>\r
+ <ItemGroup>\r
+ <ClInclude Include="GeneratedFiles\ui_dwellcursor.h">\r
+ <Filter>Generated Files</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="GeneratedFiles\ui_ExperimentSetup.h">\r
+ <Filter>Generated Files</Filter>\r
+ </ClInclude>\r
+ </ItemGroup>\r
+</Project>
\ No newline at end of file
--- /dev/null
+#include "DwellWidget.h"\r
+\r
+#include <QBrush>\r
+#include <QPen>\r
+\r
+#include <TactonPlayer\Tacton.hpp>\r
+\r
+float DwellWidget::_widgetsize = 0.1;\r
+int DwellWidget::_activationduration = 300;\r
+int DwellWidget::_dwellduration = 1500;\r
+int DwellWidget::_validationduration = 200;\r
+int DwellWidget::_hoverduration = 50;\r
+\r
+QColor DwellWidget::_colornormal = Qt::transparent;\r
+QColor DwellWidget::_coloractivated = Qt::darkCyan;\r
+\r
+DwellWidget::DwellWidget(QGraphicsItem * parent)\r
+:_tactonplayer(NULL),\r
+ _activationtimeline(_activationduration), \r
+ _validationtimeline(_validationduration), \r
+ _progressiontimeline(_dwellduration), \r
+ _center(0, 0, _widgetsize / 2, _widgetsize / 2, this), \r
+ _background(0.0, 0.0, _widgetsize / 2, _widgetsize / 2, this), \r
+ _progress(0.0, 0.0, _widgetsize, _widgetsize, this), \r
+ _activation(), _validation()\r
+{\r
+/*\r
+ _activationtimeline.setFrameRange(0, 100);\r
+ _activation.setItem(&_center);\r
+ _activation.setTimeLine(&_activationtimeline);\r
+ _activation.setScaleAt(0, 1, 1);\r
+ _activation.setPosAt(0 , QPointF(-_widgetsize / 2, -_widgetsize / 2));\r
+ _activation.setScaleAt(1 , 0.5, 0.5);\r
+ _activation.setPosAt(1 , QPointF(-_widgetsize / 4, -_widgetsize / 4));\r
+ connect(&_activationtimeline, SIGNAL(finished()), this, SLOT(startdwell()));\r
+ */\r
+ _activationtimeline.setFrameRange(0, 100);\r
+ _activation.setItem(&_background);\r
+ _activation.setTimeLine(&_activationtimeline);\r
+ _activation.setScaleAt(0, 1, 1);\r
+ _activation.setPosAt(0 , QPointF(-_widgetsize / 4, -_widgetsize / 4));\r
+ _activation.setScaleAt(1 , 2, 2);\r
+ _activation.setPosAt(1 , QPointF(-_widgetsize / 2, -_widgetsize / 2));\r
+ connect(&_activationtimeline, SIGNAL(finished()), this, SLOT(startdwell()));\r
+\r
+// _progressiontimeline.setUpdateInterval(_dwellduration / 5760);\r
+ _progressiontimeline.setFrameRange(0, 5760);\r
+ _progress.setBrush(QBrush(_coloractivated));\r
+ _progress.setStartAngle(90 * 16);\r
+ _progress.setSpanAngle(0);\r
+ _progress.setPen(QPen(Qt::transparent));\r
+ connect(&_progressiontimeline, SIGNAL(frameChanged(int)), this, SLOT(progress(int)));\r
+ connect(&_progressiontimeline, SIGNAL(finished()), this, SLOT(startvalidation()));\r
+/*\r
+ _validationtimeline.setFrameRange(0, 300);\r
+ _validation.setItem(&_center); \r
+ _validation.setTimeLine(&_validationtimeline);\r
+ _validation.setScaleAt(0, 0.5, 0.5);\r
+ _validation.setPosAt(0 , QPointF(-_widgetsize / 4, -_widgetsize / 4));\r
+ _validation.setScaleAt(0.5 , 1.5, 1.5);\r
+ _validation.setPosAt(0.5 , QPointF(-_widgetsize * 3 / 4, -_widgetsize * 3 / 4));\r
+ _validation.setScaleAt(1 , 1, 1);\r
+ _validation.setPosAt(1 , QPointF(-_widgetsize / 2, -_widgetsize / 2));\r
+ connect(&_validationtimeline, SIGNAL(finished()), this, SLOT(validation()));\r
+*/\r
+ _validationtimeline.setFrameRange(0, 300);\r
+ _validation.setItem(&_center); \r
+ _validation.setTimeLine(&_validationtimeline);\r
+ _validation.setScaleAt(0, 2, 2);\r
+ _validation.setPosAt(0 , QPointF(-_widgetsize / 2, -_widgetsize / 2));\r
+ _validation.setScaleAt(0.5 , 2.5, 2.5);\r
+ _validation.setPosAt(0.5 , QPointF(-_widgetsize * 5 / 8, -_widgetsize * 5 / 8));\r
+ _validation.setScaleAt(1 , 1, 1);\r
+ _validation.setPosAt(1 , QPointF(-_widgetsize / 4, -_widgetsize / 4));\r
+ connect(&_validationtimeline, SIGNAL(finished()), this, SLOT(validation()));\r
+\r
+ _center.setZValue(10);\r
+ _center.setPos(QPointF(-_widgetsize / 4, -_widgetsize / 4));\r
+ _progress.setPos(QPointF(-_widgetsize / 2, -_widgetsize / 2));\r
+ _progress.setZValue(1);\r
+ _background.setZValue(5);\r
+ _background.setPos(QPointF(-_widgetsize / 4, -_widgetsize / 4));\r
+ _background.setBrush(QBrush(Qt::transparent));\r
+}\r
+\r
+DwellWidget::~DwellWidget()\r
+{\r
+ if (_tactonplayer)\r
+ _tactonplayer->stop();\r
+}\r
+\r
+void DwellWidget::init()\r
+{\r
+// _tactonplayer = new TactonPlayer("COM4");\r
+ //hover tacton\r
+ if (_tactonplayer)\r
+ {\r
+ _tactonplayer->regist(Tacton(0x0f, _hoverduration / 2, 100, 255));\r
+ //activation tacton\r
+ _tactonplayer->regist(Tacton(0x0f, _activationduration / 2, 250, 255));\r
+ //progression tacton\r
+ unsigned char animpatterns[8] = {POS2_UP, 0x00, POS2_RIGHT, 0x00, POS2_DOWN, 0x00, POS2_LEFT, 0x00};\r
+ unsigned int animdurations[8] = {_dwellduration / 8, _dwellduration / 8, _dwellduration / 8, _dwellduration / 8,\r
+ _dwellduration / 8, _dwellduration / 8, _dwellduration / 8, _dwellduration / 8};\r
+ unsigned int animfrequencies[8] = {250, 250, 250, 250, 250, 250, 250, 250};\r
+ unsigned char animamplitudes[8] = {255, 255, 255, 255, 255, 255, 255, 255};\r
+ _tactonplayer->regist(Tacton(8, animpatterns,animdurations, animfrequencies, animamplitudes));\r
+ //validation tacton\r
+ _tactonplayer->regist(Tacton(0x0f, _validationduration / 2, 250, 255));\r
+ }\r
+ _lasthover.restart();\r
+}\r
+\r
+void DwellWidget::hover()\r
+{\r
+ if (_lasthover.elapsed() > _hoverduration)\r
+ {\r
+ if (_tactonplayer)\r
+ _tactonplayer->play(0);\r
+ _lasthover.restart();\r
+ }\r
+}\r
+\r
+void DwellWidget::start()\r
+{\r
+// _currentstate = ACTIVATED;\r
+ //_activationpos = \r
+ _center.setBrush(QBrush(_coloractivated));\r
+ if (_tactonplayer)\r
+ _tactonplayer->play(1);\r
+ _activationtimeline.start();\r
+}\r
+\r
+void DwellWidget::startdwell()\r
+{\r
+ if (_tactonplayer)\r
+ _tactonplayer->play(2);\r
+ _progressiontimeline.start();\r
+}\r
+\r
+void DwellWidget::progress(int v)\r
+{\r
+ _progress.setSpanAngle(-v);\r
+}\r
+\r
+void DwellWidget::startvalidation()\r
+{\r
+ if (_tactonplayer)\r
+ _tactonplayer->play(3);\r
+ _activationtimeline.setCurrentTime(0);\r
+ _progressiontimeline.setCurrentTime(0);\r
+ _validationtimeline.start();\r
+}\r
+\r
+void DwellWidget::validation()\r
+{\r
+ emit validated();\r
+ reset();\r
+}\r
+\r
+\r
+void DwellWidget::interrupt()\r
+{\r
+ _activationtimeline.stop();\r
+ _progressiontimeline.stop();\r
+ _validationtimeline.stop();\r
+ reset();\r
+}\r
+\r
+void DwellWidget::reset()\r
+{\r
+ disconnect(this, 0, 0, 0);\r
+// _validationtimeline.setCurrentTime(0);\r
+ _progressiontimeline.setCurrentTime(0);\r
+ _activationtimeline.setCurrentTime(0);\r
+ _center.setScale(1);\r
+ _background.setScale(1);\r
+ _center.setBrush(QBrush(_colornormal));\r
+ _progress.setSpanAngle(0);\r
+ this->update();\r
+}\r
\ No newline at end of file
--- /dev/null
+#ifndef __DWELLWIDGET__\r
+#define __DWELLWIDGET__\r
+\r
+#include <QGraphicsItem>\r
+#include <QGraphicsItemGroup>\r
+#include <QGraphicsEllipseItem>\r
+#include <QGraphicsItemAnimation>\r
+#include <QColor>\r
+#include <QTimeLine>\r
+#include <QTime>\r
+\r
+#include <TactonPlayer\TactonPlayer.hpp>\r
+\r
+class DwellWidget: public QObject, public QGraphicsItemGroup\r
+{\r
+ Q_OBJECT\r
+\r
+ public:\r
+ DwellWidget(QGraphicsItem * parent = 0);\r
+ ~DwellWidget();\r
+\r
+ void init();\r
+\r
+ void hover();\r
+ void start();\r
+ void interrupt();\r
+ void reset();\r
+\r
+ private:\r
+ TactonPlayer *_tactonplayer;\r
+\r
+ QTimeLine _activationtimeline, _validationtimeline, _progressiontimeline;\r
+ QGraphicsEllipseItem _center, _background, _progress;\r
+ QGraphicsItemAnimation _activation, _validation;\r
+ QPointF _activationpos;\r
+\r
+ QTime _lasthover;\r
+\r
+ static float _widgetsize;\r
+\r
+ static int _activationduration;\r
+ static int _dwellduration;\r
+ static int _validationduration;\r
+ static int _hoverduration;\r
+\r
+ static QColor _colornormal;\r
+ static QColor _coloractivated;\r
+\r
+ signals:\r
+ void validated();\r
+\r
+ private slots:\r
+ void startdwell();\r
+ void startvalidation();\r
+ void validation();\r
+ void progress(int v);\r
+};\r
+\r
+#endif\r
\ No newline at end of file
--- /dev/null
+#include "ExperimentSetup.h"\r
+\r
+ExperimentSetup::ExperimentSetup(QWidget *parent, Qt::WFlags flags)\r
+ : QMainWindow(parent, flags)\r
+{\r
+ setupUi(this);\r
+\r
+ this->layout()->setSizeConstraint(QLayout::SetFixedSize);\r
+\r
+ QObject::connect(buttonstart, SIGNAL(clicked()), this, SLOT(runBlock()));\r
+}\r
+\r
+ExperimentSetup::~ExperimentSetup()\r
+{\r
+\r
+}\r
+\r
+void ExperimentSetup::runBlock(void)\r
+{\r
+ this->hide();\r
+ w.init(username->text(), condition->currentText(), repetitions->value(), \r
+ nbx->value(), nby->value(), \r
+ buttonssizex->value(), buttonssizey->value(),\r
+ spacex->value(), spacey->value());\r
+ w.show();\r
+}\r
--- /dev/null
+#ifndef EXPERIMENTSETUP_H\r
+#define EXPERIMENTSETUP_H\r
+\r
+#include <QtGui/QMainWindow>\r
+#include "ui_experimentsetup.h"\r
+\r
+#include "dwellcursor.h"\r
+class ExperimentSetup : public QMainWindow, Ui::ExperimentSetupClass\r
+{\r
+ Q_OBJECT\r
+\r
+public:\r
+ ExperimentSetup(QWidget *parent = 0, Qt::WFlags flags = 0);\r
+ ~ExperimentSetup();\r
+\r
+private:\r
+ DwellCursor w;\r
+\r
+private slots:\r
+ void runBlock();\r
+};\r
+\r
+#endif\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<ui version="4.0">\r
+ <class>ExperimentSetupClass</class>\r
+ <widget class="QMainWindow" name="ExperimentSetupClass">\r
+ <property name="windowModality">\r
+ <enum>Qt::NonModal</enum>\r
+ </property>\r
+ <property name="geometry">\r
+ <rect>\r
+ <x>0</x>\r
+ <y>0</y>\r
+ <width>324</width>\r
+ <height>277</height>\r
+ </rect>\r
+ </property>\r
+ <property name="windowTitle">\r
+ <string>Dwell Widgets</string>\r
+ </property>\r
+ <property name="locale">\r
+ <locale language="English" country="Canada"/>\r
+ </property>\r
+ <widget class="QWidget" name="centralWidget">\r
+ <layout class="QGridLayout" name="gridLayout_2">\r
+ <item row="0" column="0">\r
+ <layout class="QGridLayout" name="gridLayout">\r
+ <item row="0" column="0">\r
+ <widget class="QLabel" name="labeluser">\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="username"/>\r
+ </item>\r
+ <item row="2" column="0">\r
+ <widget class="QLabel" name="labelrepetitions">\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="maximum">\r
+ <number>100</number>\r
+ </property>\r
+ <property name="value">\r
+ <number>1</number>\r
+ </property>\r
+ </widget>\r
+ </item>\r
+ <item row="7" column="0">\r
+ <widget class="QLabel" name="labelexperiment">\r
+ <property name="text">\r
+ <string>Space x:</string>\r
+ </property>\r
+ </widget>\r
+ </item>\r
+ <item row="1" column="0">\r
+ <widget class="QLabel" name="label">\r
+ <property name="text">\r
+ <string>Condition:</string>\r
+ </property>\r
+ </widget>\r
+ </item>\r
+ <item row="3" column="0">\r
+ <widget class="QLabel" name="label_2">\r
+ <property name="text">\r
+ <string>Nb x:</string>\r
+ </property>\r
+ </widget>\r
+ </item>\r
+ <item row="4" column="0">\r
+ <widget class="QLabel" name="label_3">\r
+ <property name="text">\r
+ <string>Nb y:</string>\r
+ </property>\r
+ </widget>\r
+ </item>\r
+ <item row="5" column="0">\r
+ <widget class="QLabel" name="label_4">\r
+ <property name="text">\r
+ <string>BtSize x:</string>\r
+ </property>\r
+ </widget>\r
+ </item>\r
+ <item row="6" column="0">\r
+ <widget class="QLabel" name="label_5">\r
+ <property name="text">\r
+ <string>BtSize y:</string>\r
+ </property>\r
+ </widget>\r
+ </item>\r
+ <item row="8" column="0">\r
+ <widget class="QLabel" name="label_6">\r
+ <property name="text">\r
+ <string>Space y:</string>\r
+ </property>\r
+ </widget>\r
+ </item>\r
+ <item row="3" column="1">\r
+ <widget class="QSpinBox" name="nbx">\r
+ <property name="minimum">\r
+ <number>1</number>\r
+ </property>\r
+ <property name="maximum">\r
+ <number>10</number>\r
+ </property>\r
+ <property name="value">\r
+ <number>4</number>\r
+ </property>\r
+ </widget>\r
+ </item>\r
+ <item row="4" column="1">\r
+ <widget class="QSpinBox" name="nby">\r
+ <property name="minimum">\r
+ <number>1</number>\r
+ </property>\r
+ <property name="maximum">\r
+ <number>10</number>\r
+ </property>\r
+ <property name="value">\r
+ <number>4</number>\r
+ </property>\r
+ </widget>\r
+ </item>\r
+ <item row="1" column="1">\r
+ <widget class="QComboBox" name="condition">\r
+ <item>\r
+ <property name="text">\r
+ <string>Visual only</string>\r
+ </property>\r
+ </item>\r
+ <item>\r
+ <property name="text">\r
+ <string>Tactile + visual</string>\r
+ </property>\r
+ </item>\r
+ </widget>\r
+ </item>\r
+ <item row="5" column="1">\r
+ <widget class="QDoubleSpinBox" name="buttonssizex">\r
+ <property name="decimals">\r
+ <number>1</number>\r
+ </property>\r
+ <property name="minimum">\r
+ <double>0.100000000000000</double>\r
+ </property>\r
+ <property name="maximum">\r
+ <double>1.600000000000000</double>\r
+ </property>\r
+ <property name="singleStep">\r
+ <double>0.100000000000000</double>\r
+ </property>\r
+ <property name="value">\r
+ <double>0.200000000000000</double>\r
+ </property>\r
+ </widget>\r
+ </item>\r
+ <item row="6" column="1">\r
+ <widget class="QDoubleSpinBox" name="buttonssizey">\r
+ <property name="decimals">\r
+ <number>1</number>\r
+ </property>\r
+ <property name="minimum">\r
+ <double>0.100000000000000</double>\r
+ </property>\r
+ <property name="maximum">\r
+ <double>1.000000000000000</double>\r
+ </property>\r
+ <property name="singleStep">\r
+ <double>0.100000000000000</double>\r
+ </property>\r
+ <property name="value">\r
+ <double>0.100000000000000</double>\r
+ </property>\r
+ </widget>\r
+ </item>\r
+ <item row="7" column="1">\r
+ <widget class="QDoubleSpinBox" name="spacex">\r
+ <property name="decimals">\r
+ <number>1</number>\r
+ </property>\r
+ <property name="maximum">\r
+ <double>10.000000000000000</double>\r
+ </property>\r
+ <property name="singleStep">\r
+ <double>0.100000000000000</double>\r
+ </property>\r
+ <property name="value">\r
+ <double>1.600000000000000</double>\r
+ </property>\r
+ </widget>\r
+ </item>\r
+ <item row="8" column="1">\r
+ <widget class="QDoubleSpinBox" name="spacey">\r
+ <property name="decimals">\r
+ <number>1</number>\r
+ </property>\r
+ <property name="maximum">\r
+ <double>10.000000000000000</double>\r
+ </property>\r
+ <property name="singleStep">\r
+ <double>0.100000000000000</double>\r
+ </property>\r
+ <property name="value">\r
+ <double>1.000000000000000</double>\r
+ </property>\r
+ </widget>\r
+ </item>\r
+ </layout>\r
+ </item>\r
+ <item row="1" column="0">\r
+ <widget class="QPushButton" name="buttonstart">\r
+ <property name="locale">\r
+ <locale language="English" country="Canada"/>\r
+ </property>\r
+ <property name="text">\r
+ <string>Start experiment</string>\r
+ </property>\r
+ </widget>\r
+ </item>\r
+ </layout>\r
+ </widget>\r
+ </widget>\r
+ <layoutdefault spacing="6" margin="11"/>\r
+ <resources>\r
+ <include location="dwellcursor.qrc"/>\r
+ </resources>\r
+ <connections/>\r
+</ui>\r
--- /dev/null
+#include "KinectInput.h"\r
+\r
+#include <QDebug>\r
+\r
+#define TIMEOUT 100\r
+\r
+KinectInput::KinectInput()\r
+:_running(false), _skeletonid(-1)\r
+{\r
+ //creates the kinect sensor (id 0)\r
+ if(FAILED(NuiCreateSensorByIndex(0, &_kinect)))\r
+ {\r
+ qDebug() << "Cannot find a KINECT sensor" << endl;\r
+ //I should do something else, sucha as an exception\r
+ return;\r
+ }\r
+\r
+ if (_kinect->NuiInitialize(NUI_INITIALIZE_FLAG_USES_DEPTH_AND_PLAYER_INDEX | NUI_INITIALIZE_FLAG_USES_SKELETON) == E_NUI_SKELETAL_ENGINE_BUSY)\r
+ {\r
+ qDebug() << "Cannot initialize the KINECT sensor" << endl;\r
+ return;\r
+ }\r
+\r
+ //initialize the skeleton tracking\r
+ _skeletonEvent = CreateEvent(NULL, TRUE, FALSE, NULL);\r
+ if(!HasSkeletalEngine(_kinect) || FAILED(_kinect->NuiSkeletonTrackingEnable(_skeletonEvent, 0)))\r
+ {\r
+ qDebug() << "Cannot Initialize skeleton tracking" << endl;\r
+ return;\r
+ }\r
+}\r
+\r
+KinectInput::~KinectInput()\r
+{\r
+ NuiShutdown();\r
+ if( _skeletonEvent && ( _skeletonEvent != INVALID_HANDLE_VALUE ) )\r
+ CloseHandle( _skeletonEvent );\r
+}\r
+\r
+//thread that manages the kinect events\r
+void KinectInput::run()\r
+{\r
+ _running = true;\r
+ while(_running)\r
+ {\r
+ //wait for an event\r
+ if (WaitForSingleObject(_skeletonEvent, TIMEOUT) != 0)\r
+ continue;\r
+\r
+ //get skeleton values\r
+ NUI_SKELETON_FRAME SkeletonFrame;\r
+ HRESULT hr = _kinect->NuiSkeletonGetNextFrame( 0, &SkeletonFrame );\r
+// qDebug() << "Kinect frame " << SkeletonFrame.dwFrameNumber;\r
+\r
+ //if no skeleton already identified or not tracked anymore, search for one\r
+ if (_skeletonid < 0 || SkeletonFrame.SkeletonData[_skeletonid].eTrackingState != NUI_SKELETON_TRACKED)\r
+ {\r
+ for( int i = 0 ; i < NUI_SKELETON_COUNT ; i++ )\r
+ {\r
+ if(SkeletonFrame.SkeletonData[i].eTrackingState == NUI_SKELETON_TRACKED)\r
+ {\r
+ _skeletonid = i;\r
+ break;\r
+ }\r
+ }\r
+ }\r
+\r
+ //no skeleton found\r
+ if (_skeletonid < 0)\r
+ continue;\r
+\r
+ //retrieve information on the skeleton\r
+ NUI_SKELETON_DATA &data = SkeletonFrame.SkeletonData[_skeletonid];\r
+\r
+ //checking if we have a skeleton\r
+/* if (data.eTrackingState != NUI_SKELETON_TRACKED)\r
+ continue;*/\r
+\r
+ //smooth out the skeleton data\r
+ _kinect->NuiTransformSmooth(&SkeletonFrame, NULL);\r
+\r
+\r
+ if (data.eSkeletonPositionTrackingState[NUI_SKELETON_POSITION_HAND_RIGHT] == NUI_SKELETON_NOT_TRACKED)\r
+ continue; //right hand not detected\r
+ else\r
+ {\r
+/* float posx, posy;\r
+ NuiTransformSkeletonToDepthImageF(data.SkeletonPositions[NUI_SKELETON_POSITION_HAND_RIGHT], &posx, &posy);\r
+ emit rightHandMove(posx, posy,0);*/\r
+ Vector4 &skelpos = data.SkeletonPositions[NUI_SKELETON_POSITION_HAND_RIGHT];\r
+ emit rightHandMove(skelpos.x, skelpos.y, skelpos.z);\r
+ }\r
+ }\r
+}\r
+\r
+void KinectInput::stop()\r
+{\r
+ _running = false;\r
+}\r
\ No newline at end of file
--- /dev/null
+#ifndef __KINECTINPUT__\r
+#define __KINECTINPUT__\r
+\r
+#include <QObject>\r
+#include <QThread>\r
+#include <Windows.h>\r
+#include <NuiAPI.h>\r
+\r
+class KinectInput: public QThread\r
+{\r
+ Q_OBJECT\r
+ public:\r
+ KinectInput();\r
+ ~KinectInput();\r
+\r
+ void run();\r
+ void stop();\r
+\r
+ private:\r
+ INuiSensor* _kinect;\r
+ HANDLE _skeletonEvent;\r
+ bool _running;\r
+ int _skeletonid;\r
+\r
+ signals:\r
+ void rightHandMove(float x, float y, float z);\r
+};\r
+\r
+#endif\r
--- /dev/null
+#ifndef __MAINSCENE__\r
+#define __MAINSCENE__\r
+\r
+#include <QObject>\r
+#include <QGraphicsScene>\r
+#include <QGraphicsSceneMouseEvent>\r
+#include <QGraphicsSimpleTextItem>\r
+#include <QSignalMapper>\r
+\r
+#include "DwellWidget.h"\r
+#include "KinectInput.h"\r
+#include "DwellButton.h"\r
+\r
+#include <QTime>\r
+\r
+class MainScene: public QGraphicsScene\r
+{\r
+ Q_OBJECT\r
+\r
+ public:\r
+ MainScene(QObject * parent = 0);\r
+ ~MainScene();\r
+\r
+ void init(QString user, QString condition, int repetitions);\r
+\r
+ void mouseMoveEvent(QGraphicsSceneMouseEvent * mouseEvent);\r
+ void mousePressEvent(QGraphicsSceneMouseEvent * mouseEvent);\r
+\r
+ void setButtonArray(int x, int y, float sx, float sy, float bsx, float bsy);\r
+\r
+ void log(const QString &event, int button, int answer);\r
+ int indexOfButton(DwellButton *b) const;\r
+\r
+ private:\r
+ DwellWidget _dwellwidget;\r
+ KinectInput _kinectsensor;\r
+\r
+ QTime _enteredtime;\r
+ bool _alreadypressed;\r
+ DwellButton *_lastitemover;\r
+ DwellButton **_buttons;\r
+ int _nbbuttonsx, _nbbuttonsy;\r
+ QSignalMapper _signalmapper;\r
+\r
+ static int _dwelltime;\r
+\r
+ //experiment stuff\r
+ FILE *_logfile;\r
+ QTime _start;\r
+ QList<int> _trials;\r
+ int _currenttrial;\r
+\r
+ private slots:\r
+ void displayHandPosition(float x, float y, float z);\r
+ void buttonClicked(int n);\r
+};\r
+\r
+#endif\r
\ No newline at end of file
--- /dev/null
+#include "MainView.h"\r
+\r
+MainView::MainView(float sx, float sy, MainScene * scene, QWidget *parent)\r
+:QGraphicsView(scene, parent), _width(sx), _height(sy)\r
+{\r
+ setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform);\r
+ setMouseTracking(true);\r
+ setSceneRect(-sx / 2.0, -sy / 2.0, sx, sy);\r
+}\r
+\r
+MainView::~MainView()\r
+{\r
+}\r
+\r
+void MainView::resizeEvent(QResizeEvent * event)\r
+{\r
+ fitInView(-_width / 2.0, -_height / 2.0, _width, _height, Qt::KeepAspectRatio);\r
+}\r
--- /dev/null
+#ifndef __MAINVIEW__\r
+#define __MAINVIEW__\r
+\r
+#include <QGraphicsView>\r
+\r
+#include "MainScene.h"\r
+\r
+class MainView: public QGraphicsView\r
+{\r
+ Q_OBJECT\r
+\r
+ public:\r
+ MainView(float sx, float sy, MainScene * scene, QWidget * parent=0);\r
+ ~MainView();\r
+\r
+ private:\r
+ void resizeEvent(QResizeEvent * event);\r
+\r
+ float _width, _height;\r
+};\r
+\r
+#endif\r
--- /dev/null
+#include "dwellcursor.h"\r
+\r
+#include <QGraphicsView>\r
+\r
+DwellCursor::DwellCursor(QWidget *parent, Qt::WFlags flags)\r
+ : QMainWindow(parent, flags), _sound(new QSound("whitenoise05.wav"))\r
+{\r
+ setupUi(this);\r
+ if (_sound)\r
+ _sound->setLoops(-1);\r
+}\r
+\r
+DwellCursor::~DwellCursor()\r
+{\r
+}\r
+\r
+void DwellCursor::init(QString user, QString condition, int repetitions, int nbx, int nby, float bsx, float bsy,float spacex, float spacey)\r
+{\r
+ _user = user;\r
+ _condition = condition;\r
+ _repetitions = repetitions;\r
+ _nbx = nbx;\r
+ _nby = nby;\r
+ _bsx = bsx;\r
+ _bsy = bsy;\r
+ _spacex = spacex;\r
+ _spacey = spacey;\r
+\r
+ if (_sound)\r
+ _sound->play();\r
+\r
+ _scene = new MainScene();\r
+ _scene->setButtonArray(nbx, nby, spacex, spacey, bsx, bsy);\r
+ _scene->init(user, condition, repetitions);\r
+\r
+ _view = new MainView(spacex, spacey, _scene);\r
+ setCentralWidget(_view);\r
+}\r
--- /dev/null
+#ifndef DWELLCURSOR_H\r
+#define DWELLCURSOR_H\r
+\r
+#include <QtGui/QMainWindow>\r
+#include "ui_dwellcursor.h"\r
+#include <QSound>\r
+#include "DwellWidget.h"\r
+#include "MainScene.h"\r
+#include "MainView.h"\r
+\r
+class DwellCursor : public QMainWindow, Ui::DwellCursorClass\r
+{\r
+ Q_OBJECT\r
+\r
+public:\r
+ DwellCursor(QWidget *parent = 0, Qt::WFlags flags = 0);\r
+ ~DwellCursor();\r
+\r
+ void init(QString user, QString condition, int repetitions, int nbx, int nby, float bsx, float bsy, float spacex, float spacey);\r
+ void log(QString answer);\r
+\r
+private:\r
+ DwellWidget _dwellwidget;\r
+ MainScene *_scene;\r
+ QGraphicsView *_view;\r
+ QSound *_sound;\r
+\r
+ QString _user, _condition;\r
+ int _repetitions;\r
+ int _nbx, _nby;\r
+ float _bsx, _bsy;\r
+ float _spacex, _spacey;\r
+\r
+};\r
+\r
+#endif // DWELLCURSOR_H\r
--- /dev/null
+<RCC>\r
+ <qresource prefix="DwellCursor">\r
+ </qresource>\r
+</RCC>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<ui version="4.0">\r
+ <class>DwellCursorClass</class>\r
+ <widget class="QMainWindow" name="DwellCursorClass">\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>DwellCursor</string>\r
+ </property>\r
+ <widget class="QWidget" name="centralWidget"/>\r
+ </widget>\r
+ <layoutdefault spacing="6" margin="11"/>\r
+ <resources>\r
+ <include location="dwellcursor.qrc"/>\r
+ </resources>\r
+ <connections/>\r
+</ui>\r
--- /dev/null
+#include "ExperimentSetup.h"\r
+#include <QtGui/QApplication>\r
+\r
+int main(int argc, char *argv[])\r
+{\r
+ QApplication a(argc, argv);\r
+ ExperimentSetup w;\r
+ w.show();\r
+ return a.exec();\r
+}
\ No newline at end of file