diff options
Diffstat (limited to 'ftnoir_protocol_ftn')
| -rw-r--r-- | ftnoir_protocol_ftn/ftnoir_protocol_ftn.cpp | 236 | ||||
| -rw-r--r-- | ftnoir_protocol_ftn/ftnoir_protocol_ftn.h | 208 | ||||
| -rw-r--r-- | ftnoir_protocol_ftn/ftnoir_protocol_ftn_dialog.cpp | 360 | ||||
| -rw-r--r-- | ftnoir_protocol_ftn/ftnoir_protocol_ftn_dll.cpp | 98 | 
4 files changed, 451 insertions, 451 deletions
diff --git a/ftnoir_protocol_ftn/ftnoir_protocol_ftn.cpp b/ftnoir_protocol_ftn/ftnoir_protocol_ftn.cpp index 1fbc0b43..32d11c37 100644 --- a/ftnoir_protocol_ftn/ftnoir_protocol_ftn.cpp +++ b/ftnoir_protocol_ftn/ftnoir_protocol_ftn.cpp @@ -1,118 +1,118 @@ -/********************************************************************************
 -* FaceTrackNoIR		This program is a private project of the some enthusiastic	*
 -*					gamers from Holland, who don't like to pay much for			*
 -*					head-tracking.												*
 -*																				*
 -* Copyright (C) 2010-2011	Wim Vriend (Developing)								*
 -*							Ron Hendriks (Researching and Testing)				*
 -*																				*
 -* Homepage																		*
 -*																				*
 -* This program is free software; you can redistribute it and/or modify it		*
 -* under the terms of the GNU General Public License as published by the			*
 -* Free Software Foundation; either version 3 of the License, or (at your		*
 -* option) any later version.													*
 -*																				*
 -* This program is distributed in the hope that it will be useful, but			*
 -* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY	*
 -* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for	*
 -* more details.																	*
 -*																				*
 -* You should have received a copy of the GNU General Public License along		*
 -* with this program; if not, see <http://www.gnu.org/licenses/>.				*
 -*																				*
 -* FTNServer			FTNServer is the Class, that communicates headpose-data		*
 -*					to another FaceTrackNoIR program, using UDP.       			*
 -*					It is based on the (Linux) example made by Melchior FRANZ.	*
 -********************************************************************************/
 -#include "ftnoir_protocol_ftn.h"
 -#include <QFile>
 -#include "facetracknoir/global-settings.h"
 -
 -/** constructor **/
 -FTNoIR_Protocol::FTNoIR_Protocol()
 -{
 -	loadSettings();
 -    outSocket = 0;
 -}
 -
 -/** destructor **/
 -FTNoIR_Protocol::~FTNoIR_Protocol()
 -{
 -	if (outSocket != 0) {
 -		outSocket->close();
 -		delete outSocket;
 -	}
 -}
 -
 -//
 -// Load the current Settings from the currently 'active' INI-file.
 -//
 -void FTNoIR_Protocol::loadSettings() {
 -	QSettings settings("opentrack");	// Registry settings (in HK_USER)
 -
 -	QString currentFile = settings.value ( "SettingsFile", QCoreApplication::applicationDirPath() + "/Settings/default.ini" ).toString();
 -	QSettings iniFile( currentFile, QSettings::IniFormat );		// Application settings (in INI-file)
 -
 -	iniFile.beginGroup ( "FTN" );
 -
 -	QString destAddr = iniFile.value ( "IP-1", 192 ).toString() + "." + iniFile.value ( "IP-2", 168 ).toString() + "." + iniFile.value ( "IP-3", 2 ).toString() + "." + iniFile.value ( "IP-4", 1 ).toString();
 -	destIP = QHostAddress( destAddr );
 -	destPort = iniFile.value ( "PortNumber", 5550 ).toInt();
 -
 -	iniFile.endGroup ();
 -}
 -
 -//
 -// Update Headpose in Game.
 -//
 -void FTNoIR_Protocol::sendHeadposeToGame(double *headpose, double *rawheadpose ) {
 -    int no_bytes;
 -    double test_data[6];
 -	//
 -	// Copy the Raw measurements directly to the client.
 -	//
 -    for (int i = 0; i < 6; i++)
 -        test_data[i] = headpose[i];
 -	//
 -	// Try to send an UDP-message to the receiver
 -	//
 -
 -	//! [1]
 -	if (outSocket != 0) {
 -        no_bytes = outSocket->writeDatagram((const char *) test_data, sizeof( test_data ), destIP, destPort);
 -		if ( no_bytes > 0) {
 -//		qDebug() << "FTNServer::writePendingDatagrams says: bytes send =" << no_bytes << sizeof( double );
 -		}
 -		else {
 -			qDebug() << "FTNServer::writePendingDatagrams says: nothing sent!";
 -		}
 -	}
 -}
 -
 -//
 -// Check if the Client DLL exists and load it (to test it), if so.
 -// Returns 'true' if all seems OK.
 -//
 -bool FTNoIR_Protocol::checkServerInstallationOK()
 -{   
 -	if (outSocket == 0) {
 -		outSocket = new QUdpSocket();
 -	}
 -
 -	return true;
 -}
 -
 -////////////////////////////////////////////////////////////////////////////////
 -// Factory function that creates instances if the Protocol object.
 -
 -// Export both decorated and undecorated names.
 -//   GetProtocol     - Undecorated name, which can be easily used with GetProcAddress
 -//                Win32 API function.
 -//   _GetProtocol@0  - Common name decoration for __stdcall functions in C language.
 -//#pragma comment(linker, "/export:GetProtocol=_GetProtocol@0")
 -
 -extern "C" FTNOIR_PROTOCOL_BASE_EXPORT IProtocol* CALLING_CONVENTION GetConstructor()
 -{
 -    return new FTNoIR_Protocol;
 -}
 +/******************************************************************************** +* FaceTrackNoIR		This program is a private project of the some enthusiastic	* +*					gamers from Holland, who don't like to pay much for			* +*					head-tracking.												* +*																				* +* Copyright (C) 2010-2011	Wim Vriend (Developing)								* +*							Ron Hendriks (Researching and Testing)				* +*																				* +* Homepage																		* +*																				* +* This program is free software; you can redistribute it and/or modify it		* +* under the terms of the GNU General Public License as published by the			* +* Free Software Foundation; either version 3 of the License, or (at your		* +* option) any later version.													* +*																				* +* This program is distributed in the hope that it will be useful, but			* +* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY	* +* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for	* +* more details.																	* +*																				* +* You should have received a copy of the GNU General Public License along		* +* with this program; if not, see <http://www.gnu.org/licenses/>.				* +*																				* +* FTNServer			FTNServer is the Class, that communicates headpose-data		* +*					to another FaceTrackNoIR program, using UDP.       			* +*					It is based on the (Linux) example made by Melchior FRANZ.	* +********************************************************************************/ +#include "ftnoir_protocol_ftn.h" +#include <QFile> +#include "facetracknoir/global-settings.h" + +/** constructor **/ +FTNoIR_Protocol::FTNoIR_Protocol() +{ +	loadSettings(); +    outSocket = 0; +} + +/** destructor **/ +FTNoIR_Protocol::~FTNoIR_Protocol() +{ +	if (outSocket != 0) { +		outSocket->close(); +		delete outSocket; +	} +} + +// +// Load the current Settings from the currently 'active' INI-file. +// +void FTNoIR_Protocol::loadSettings() { +	QSettings settings("opentrack");	// Registry settings (in HK_USER) + +	QString currentFile = settings.value ( "SettingsFile", QCoreApplication::applicationDirPath() + "/Settings/default.ini" ).toString(); +	QSettings iniFile( currentFile, QSettings::IniFormat );		// Application settings (in INI-file) + +	iniFile.beginGroup ( "FTN" ); + +	QString destAddr = iniFile.value ( "IP-1", 192 ).toString() + "." + iniFile.value ( "IP-2", 168 ).toString() + "." + iniFile.value ( "IP-3", 2 ).toString() + "." + iniFile.value ( "IP-4", 1 ).toString(); +	destIP = QHostAddress( destAddr ); +	destPort = iniFile.value ( "PortNumber", 5550 ).toInt(); + +	iniFile.endGroup (); +} + +// +// Update Headpose in Game. +// +void FTNoIR_Protocol::sendHeadposeToGame(double *headpose, double *rawheadpose ) { +    int no_bytes; +    double test_data[6]; +	// +	// Copy the Raw measurements directly to the client. +	// +    for (int i = 0; i < 6; i++) +        test_data[i] = headpose[i]; +	// +	// Try to send an UDP-message to the receiver +	// + +	//! [1] +	if (outSocket != 0) { +        no_bytes = outSocket->writeDatagram((const char *) test_data, sizeof( test_data ), destIP, destPort); +		if ( no_bytes > 0) { +//		qDebug() << "FTNServer::writePendingDatagrams says: bytes send =" << no_bytes << sizeof( double ); +		} +		else { +			qDebug() << "FTNServer::writePendingDatagrams says: nothing sent!"; +		} +	} +} + +// +// Check if the Client DLL exists and load it (to test it), if so. +// Returns 'true' if all seems OK. +// +bool FTNoIR_Protocol::checkServerInstallationOK() +{    +	if (outSocket == 0) { +		outSocket = new QUdpSocket(); +	} + +	return true; +} + +//////////////////////////////////////////////////////////////////////////////// +// Factory function that creates instances if the Protocol object. + +// Export both decorated and undecorated names. +//   GetProtocol     - Undecorated name, which can be easily used with GetProcAddress +//                Win32 API function. +//   _GetProtocol@0  - Common name decoration for __stdcall functions in C language. +//#pragma comment(linker, "/export:GetProtocol=_GetProtocol@0") + +extern "C" FTNOIR_PROTOCOL_BASE_EXPORT IProtocol* CALLING_CONVENTION GetConstructor() +{ +    return new FTNoIR_Protocol; +} diff --git a/ftnoir_protocol_ftn/ftnoir_protocol_ftn.h b/ftnoir_protocol_ftn/ftnoir_protocol_ftn.h index 1c4b493e..31247d1e 100644 --- a/ftnoir_protocol_ftn/ftnoir_protocol_ftn.h +++ b/ftnoir_protocol_ftn/ftnoir_protocol_ftn.h @@ -1,104 +1,104 @@ -/********************************************************************************
 -* FaceTrackNoIR		This program is a private project of some enthusiastic		*
 -*					gamers from Holland, who don't like to pay much for			*
 -*					head-tracking.												*
 -*																				*
 -* Copyright (C) 2010-2011	Wim Vriend (Developing)								*
 -*							Ron Hendriks (Researching and Testing)				*
 -*																				*
 -* Homepage																		*
 -*																				*
 -* This program is free software; you can redistribute it and/or modify it		*
 -* under the terms of the GNU General Public License as published by the			*
 -* Free Software Foundation; either version 3 of the License, or (at your		*
 -* option) any later version.													*
 -*																				*
 -* This program is distributed in the hope that it will be useful, but			*
 -* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY	*
 -* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for	*
 -* more details.																	*
 -*																				*
 -* You should have received a copy of the GNU General Public License along		*
 -* with this program; if not, see <http://www.gnu.org/licenses/>.				*
 -*																				*
 -* FTNServer			FTNServer is the Class, that communicates headpose-data		*
 -*					to FlightGear, using UDP.				         			*
 -*					It is based on the (Linux) example made by Melchior FRANZ.	*
 -********************************************************************************/
 -#pragma once
 -#ifndef INCLUDED_FTNSERVER_H
 -#define INCLUDED_FTNSERVER_H
 -
 -#include "ftnoir_protocol_base/ftnoir_protocol_base.h"
 -#include "ftnoir_tracker_base/ftnoir_tracker_base.h"
 -#include "ui_ftnoir_ftncontrols.h"
 -#include <QThread>
 -#include <QUdpSocket>
 -#include <QMessageBox>
 -#include <QSettings>
 -#include <math.h>
 -#include "facetracknoir/global-settings.h"
 -
 -class FTNoIR_Protocol : public IProtocol
 -{
 -public:
 -	FTNoIR_Protocol();
 -	~FTNoIR_Protocol();
 -    bool checkServerInstallationOK();
 -    void sendHeadposeToGame( double *headpose, double *rawheadpose );
 -    QString getGameName() {
 -        return "UDP Tracker";
 -    }
 -
 -private:
 -	QUdpSocket *outSocket;									// Send to FaceTrackNoIR
 -	QHostAddress destIP;									// Destination IP-address
 -	int destPort;											// Destination port-number
 -	void loadSettings();
 -};
 -
 -// Widget that has controls for FTNoIR protocol client-settings.
 -class FTNControls: public QWidget, public IProtocolDialog
 -{
 -    Q_OBJECT
 -public:
 -
 -	explicit FTNControls();
 -    virtual ~FTNControls();
 -	void showEvent ( QShowEvent * event );
 -    void Initialize(QWidget *parent);
 -    void registerProtocol(IProtocol *protocol) {}
 -    void unRegisterProtocol() {}
 -
 -private:
 -	Ui::UICFTNControls ui;
 -	void loadSettings();
 -	void save();
 -
 -	/** helper **/
 -	bool settingsDirty;
 -
 -private slots:
 -	void doOK();
 -	void doCancel();
 -    void settingChanged() { settingsDirty = true; }
 -};
 -
 -//*******************************************************************************************************
 -// FaceTrackNoIR Protocol DLL. Functions used to get general info on the Protocol
 -//*******************************************************************************************************
 -class FTNoIR_ProtocolDll : public Metadata
 -{
 -public:
 -	FTNoIR_ProtocolDll();
 -	~FTNoIR_ProtocolDll();
 -
 -    void getFullName(QString *strToBeFilled) { *strToBeFilled = QString("FaceTrackNoIR"); }
 -    void getShortName(QString *strToBeFilled) { *strToBeFilled = QString("FTN Client"); }
 -    void getDescription(QString *strToBeFilled) { *strToBeFilled = QString("FaceTrackNoIR Client protocol"); }
 -
 -    void getIcon(QIcon *icon) { *icon = QIcon(":/images/facetracknoir.png"); }
 -};
 -
 -#endif//INCLUDED_FTNSERVER_H
 -//END
 +/******************************************************************************** +* FaceTrackNoIR		This program is a private project of some enthusiastic		* +*					gamers from Holland, who don't like to pay much for			* +*					head-tracking.												* +*																				* +* Copyright (C) 2010-2011	Wim Vriend (Developing)								* +*							Ron Hendriks (Researching and Testing)				* +*																				* +* Homepage																		* +*																				* +* This program is free software; you can redistribute it and/or modify it		* +* under the terms of the GNU General Public License as published by the			* +* Free Software Foundation; either version 3 of the License, or (at your		* +* option) any later version.													* +*																				* +* This program is distributed in the hope that it will be useful, but			* +* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY	* +* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for	* +* more details.																	* +*																				* +* You should have received a copy of the GNU General Public License along		* +* with this program; if not, see <http://www.gnu.org/licenses/>.				* +*																				* +* FTNServer			FTNServer is the Class, that communicates headpose-data		* +*					to FlightGear, using UDP.				         			* +*					It is based on the (Linux) example made by Melchior FRANZ.	* +********************************************************************************/ +#pragma once +#ifndef INCLUDED_FTNSERVER_H +#define INCLUDED_FTNSERVER_H + +#include "ftnoir_protocol_base/ftnoir_protocol_base.h" +#include "ftnoir_tracker_base/ftnoir_tracker_base.h" +#include "ui_ftnoir_ftncontrols.h" +#include <QThread> +#include <QUdpSocket> +#include <QMessageBox> +#include <QSettings> +#include <math.h> +#include "facetracknoir/global-settings.h" + +class FTNoIR_Protocol : public IProtocol +{ +public: +	FTNoIR_Protocol(); +	~FTNoIR_Protocol(); +    bool checkServerInstallationOK(); +    void sendHeadposeToGame( double *headpose, double *rawheadpose ); +    QString getGameName() { +        return "UDP Tracker"; +    } + +private: +	QUdpSocket *outSocket;									// Send to FaceTrackNoIR +	QHostAddress destIP;									// Destination IP-address +	int destPort;											// Destination port-number +	void loadSettings(); +}; + +// Widget that has controls for FTNoIR protocol client-settings. +class FTNControls: public QWidget, public IProtocolDialog +{ +    Q_OBJECT +public: + +	explicit FTNControls(); +    virtual ~FTNControls(); +	void showEvent ( QShowEvent * event ); +    void Initialize(QWidget *parent); +    void registerProtocol(IProtocol *protocol) {} +    void unRegisterProtocol() {} + +private: +	Ui::UICFTNControls ui; +	void loadSettings(); +	void save(); + +	/** helper **/ +	bool settingsDirty; + +private slots: +	void doOK(); +	void doCancel(); +    void settingChanged() { settingsDirty = true; } +}; + +//******************************************************************************************************* +// FaceTrackNoIR Protocol DLL. Functions used to get general info on the Protocol +//******************************************************************************************************* +class FTNoIR_ProtocolDll : public Metadata +{ +public: +	FTNoIR_ProtocolDll(); +	~FTNoIR_ProtocolDll(); + +    void getFullName(QString *strToBeFilled) { *strToBeFilled = QString("FaceTrackNoIR"); } +    void getShortName(QString *strToBeFilled) { *strToBeFilled = QString("FTN Client"); } +    void getDescription(QString *strToBeFilled) { *strToBeFilled = QString("FaceTrackNoIR Client protocol"); } + +    void getIcon(QIcon *icon) { *icon = QIcon(":/images/facetracknoir.png"); } +}; + +#endif//INCLUDED_FTNSERVER_H +//END diff --git a/ftnoir_protocol_ftn/ftnoir_protocol_ftn_dialog.cpp b/ftnoir_protocol_ftn/ftnoir_protocol_ftn_dialog.cpp index 328d866a..c902d6f8 100644 --- a/ftnoir_protocol_ftn/ftnoir_protocol_ftn_dialog.cpp +++ b/ftnoir_protocol_ftn/ftnoir_protocol_ftn_dialog.cpp @@ -1,180 +1,180 @@ -/********************************************************************************
 -* FaceTrackNoIR		This program is a private project of some enthusiastic		*
 -*					gamers from Holland, who don't like to pay much for			*
 -*					head-tracking.												*
 -*																				*
 -* Copyright (C) 2012	Wim Vriend (Developing)									*
 -*						Ron Hendriks (Researching and Testing)					*
 -*																				*
 -* Homepage																		*
 -*																				*
 -* This program is free software; you can redistribute it and/or modify it		*
 -* under the terms of the GNU General Public License as published by the			*
 -* Free Software Foundation; either version 3 of the License, or (at your		*
 -* option) any later version.													*
 -*																				*
 -* This program is distributed in the hope that it will be useful, but			*
 -* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY	*
 -* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for	*
 -* more details.																	*
 -*																				*
 -* You should have received a copy of the GNU General Public License along		*
 -* with this program; if not, see <http://www.gnu.org/licenses/>.				*
 -*																				*
 -********************************************************************************/
 -#include "ftnoir_protocol_ftn.h"
 -#include <QDebug>
 -#include "facetracknoir/global-settings.h"
 -
 -//*******************************************************************************************************
 -// FaceTrackNoIR Client Settings-dialog.
 -//*******************************************************************************************************
 -
 -//
 -// Constructor for server-settings-dialog
 -//
 -FTNControls::FTNControls() :
 -QWidget()
 -{
 -	ui.setupUi( this );
 -
 -	QPoint offsetpos(100, 100);
 -	//if (parent) {
 -	//	this->move(parent->pos() + offsetpos);
 -	//}
 -
 -	// Connect Qt signals to member-functions
 -	connect(ui.btnOK, SIGNAL(clicked()), this, SLOT(doOK()));
 -	connect(ui.btnCancel, SIGNAL(clicked()), this, SLOT(doCancel()));
 -	connect(ui.spinIPFirstNibble, SIGNAL(valueChanged(int)), this, SLOT(settingChanged()));
 -	connect(ui.spinIPSecondNibble, SIGNAL(valueChanged(int)), this, SLOT(settingChanged()));
 -	connect(ui.spinIPThirdNibble, SIGNAL(valueChanged(int)), this, SLOT(settingChanged()));
 -	connect(ui.spinIPFourthNibble, SIGNAL(valueChanged(int)), this, SLOT(settingChanged()));
 -	connect(ui.spinPortNumber, SIGNAL(valueChanged(int)), this, SLOT(settingChanged()));
 -
 -	// Load the settings from the current .INI-file
 -	loadSettings();
 -}
 -
 -//
 -// Destructor for server-dialog
 -//
 -FTNControls::~FTNControls() {
 -	qDebug() << "~FTNControls() says: started";
 -}
 -
 -//
 -// Initialize tracker-client-dialog
 -//
 -void FTNControls::Initialize(QWidget *parent) {
 -
 -	QPoint offsetpos(100, 100);
 -	if (parent) {
 -		this->move(parent->pos() + offsetpos);
 -	}
 -	show();
 -}
 -
 -//
 -// OK clicked on server-dialog
 -//
 -void FTNControls::doOK() {
 -	save();
 -	this->close();
 -}
 -
 -// override show event
 -void FTNControls::showEvent ( QShowEvent * event ) {
 -	loadSettings();
 -}
 -
 -//
 -// Cancel clicked on server-dialog
 -//
 -void FTNControls::doCancel() {
 -	//
 -	// Ask if changed Settings should be saved
 -	//
 -	if (settingsDirty) {
 -		int ret = QMessageBox::question ( this, "Settings have changed", "Do you want to save the settings?", QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel, QMessageBox::Discard );
 -
 -		qDebug() << "doCancel says: answer =" << ret;
 -
 -		switch (ret) {
 -			case QMessageBox::Save:
 -				save();
 -				this->close();
 -				break;
 -			case QMessageBox::Discard:
 -				this->close();
 -				break;
 -			case QMessageBox::Cancel:
 -				// Cancel was clicked
 -				break;
 -			default:
 -				// should never be reached
 -			break;
 -		}
 -	}
 -	else {
 -		this->close();
 -	}
 -}
 -
 -//
 -// Load the current Settings from the currently 'active' INI-file.
 -//
 -void FTNControls::loadSettings() {
 -//	qDebug() << "loadSettings says: Starting ";
 -	QSettings settings("opentrack");	// Registry settings (in HK_USER)
 -
 -	QString currentFile = settings.value ( "SettingsFile", QCoreApplication::applicationDirPath() + "/Settings/default.ini" ).toString();
 -	QSettings iniFile( currentFile, QSettings::IniFormat );		// Application settings (in INI-file)
 -
 -//	qDebug() << "loadSettings says: iniFile = " << currentFile;
 -
 -	iniFile.beginGroup ( "FTN" );
 -	ui.spinIPFirstNibble->setValue( iniFile.value ( "IP-1", 192 ).toInt() );
 -	ui.spinIPSecondNibble->setValue( iniFile.value ( "IP-2", 168 ).toInt() );
 -	ui.spinIPThirdNibble->setValue( iniFile.value ( "IP-3", 2 ).toInt() );
 -	ui.spinIPFourthNibble->setValue( iniFile.value ( "IP-4", 1 ).toInt() );
 -
 -	ui.spinPortNumber->setValue( iniFile.value ( "PortNumber", 5550 ).toInt() );
 -	iniFile.endGroup ();
 -
 -	settingsDirty = false;
 -}
 -
 -//
 -// Save the current Settings to the currently 'active' INI-file.
 -//
 -void FTNControls::save() {
 -	QSettings settings("opentrack");	// Registry settings (in HK_USER)
 -
 -	QString currentFile = settings.value ( "SettingsFile", QCoreApplication::applicationDirPath() + "/Settings/default.ini" ).toString();
 -	QSettings iniFile( currentFile, QSettings::IniFormat );		// Application settings (in INI-file)
 -
 -	iniFile.beginGroup ( "FTN" );
 -	iniFile.setValue ( "IP-1", ui.spinIPFirstNibble->value() );
 -	iniFile.setValue ( "IP-2", ui.spinIPSecondNibble->value() );
 -	iniFile.setValue ( "IP-3", ui.spinIPThirdNibble->value() );
 -	iniFile.setValue ( "IP-4", ui.spinIPFourthNibble->value() );
 -	iniFile.setValue ( "PortNumber", ui.spinPortNumber->value() );
 -	iniFile.endGroup ();
 -
 -	settingsDirty = false;
 -}
 -
 -////////////////////////////////////////////////////////////////////////////////
 -// Factory function that creates instances if the Protocol-settings dialog object.
 -
 -// Export both decorated and undecorated names.
 -//   GetProtocolDialog     - Undecorated name, which can be easily used with GetProcAddress
 -//                          Win32 API function.
 -//   _GetProtocolDialog@0  - Common name decoration for __stdcall functions in C language.
 -//#pragma comment(linker, "/export:GetProtocolDialog=_GetProtocolDialog@0")
 -
 -extern "C" FTNOIR_PROTOCOL_BASE_EXPORT IProtocolDialog* CALLING_CONVENTION GetDialog( )
 -{
 -    return new FTNControls;
 -}
 +/******************************************************************************** +* FaceTrackNoIR		This program is a private project of some enthusiastic		* +*					gamers from Holland, who don't like to pay much for			* +*					head-tracking.												* +*																				* +* Copyright (C) 2012	Wim Vriend (Developing)									* +*						Ron Hendriks (Researching and Testing)					* +*																				* +* Homepage																		* +*																				* +* This program is free software; you can redistribute it and/or modify it		* +* under the terms of the GNU General Public License as published by the			* +* Free Software Foundation; either version 3 of the License, or (at your		* +* option) any later version.													* +*																				* +* This program is distributed in the hope that it will be useful, but			* +* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY	* +* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for	* +* more details.																	* +*																				* +* You should have received a copy of the GNU General Public License along		* +* with this program; if not, see <http://www.gnu.org/licenses/>.				* +*																				* +********************************************************************************/ +#include "ftnoir_protocol_ftn.h" +#include <QDebug> +#include "facetracknoir/global-settings.h" + +//******************************************************************************************************* +// FaceTrackNoIR Client Settings-dialog. +//******************************************************************************************************* + +// +// Constructor for server-settings-dialog +// +FTNControls::FTNControls() : +QWidget() +{ +	ui.setupUi( this ); + +	QPoint offsetpos(100, 100); +	//if (parent) { +	//	this->move(parent->pos() + offsetpos); +	//} + +	// Connect Qt signals to member-functions +	connect(ui.btnOK, SIGNAL(clicked()), this, SLOT(doOK())); +	connect(ui.btnCancel, SIGNAL(clicked()), this, SLOT(doCancel())); +	connect(ui.spinIPFirstNibble, SIGNAL(valueChanged(int)), this, SLOT(settingChanged())); +	connect(ui.spinIPSecondNibble, SIGNAL(valueChanged(int)), this, SLOT(settingChanged())); +	connect(ui.spinIPThirdNibble, SIGNAL(valueChanged(int)), this, SLOT(settingChanged())); +	connect(ui.spinIPFourthNibble, SIGNAL(valueChanged(int)), this, SLOT(settingChanged())); +	connect(ui.spinPortNumber, SIGNAL(valueChanged(int)), this, SLOT(settingChanged())); + +	// Load the settings from the current .INI-file +	loadSettings(); +} + +// +// Destructor for server-dialog +// +FTNControls::~FTNControls() { +	qDebug() << "~FTNControls() says: started"; +} + +// +// Initialize tracker-client-dialog +// +void FTNControls::Initialize(QWidget *parent) { + +	QPoint offsetpos(100, 100); +	if (parent) { +		this->move(parent->pos() + offsetpos); +	} +	show(); +} + +// +// OK clicked on server-dialog +// +void FTNControls::doOK() { +	save(); +	this->close(); +} + +// override show event +void FTNControls::showEvent ( QShowEvent * event ) { +	loadSettings(); +} + +// +// Cancel clicked on server-dialog +// +void FTNControls::doCancel() { +	// +	// Ask if changed Settings should be saved +	// +	if (settingsDirty) { +		int ret = QMessageBox::question ( this, "Settings have changed", "Do you want to save the settings?", QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel, QMessageBox::Discard ); + +		qDebug() << "doCancel says: answer =" << ret; + +		switch (ret) { +			case QMessageBox::Save: +				save(); +				this->close(); +				break; +			case QMessageBox::Discard: +				this->close(); +				break; +			case QMessageBox::Cancel: +				// Cancel was clicked +				break; +			default: +				// should never be reached +			break; +		} +	} +	else { +		this->close(); +	} +} + +// +// Load the current Settings from the currently 'active' INI-file. +// +void FTNControls::loadSettings() { +//	qDebug() << "loadSettings says: Starting "; +	QSettings settings("opentrack");	// Registry settings (in HK_USER) + +	QString currentFile = settings.value ( "SettingsFile", QCoreApplication::applicationDirPath() + "/Settings/default.ini" ).toString(); +	QSettings iniFile( currentFile, QSettings::IniFormat );		// Application settings (in INI-file) + +//	qDebug() << "loadSettings says: iniFile = " << currentFile; + +	iniFile.beginGroup ( "FTN" ); +	ui.spinIPFirstNibble->setValue( iniFile.value ( "IP-1", 192 ).toInt() ); +	ui.spinIPSecondNibble->setValue( iniFile.value ( "IP-2", 168 ).toInt() ); +	ui.spinIPThirdNibble->setValue( iniFile.value ( "IP-3", 2 ).toInt() ); +	ui.spinIPFourthNibble->setValue( iniFile.value ( "IP-4", 1 ).toInt() ); + +	ui.spinPortNumber->setValue( iniFile.value ( "PortNumber", 5550 ).toInt() ); +	iniFile.endGroup (); + +	settingsDirty = false; +} + +// +// Save the current Settings to the currently 'active' INI-file. +// +void FTNControls::save() { +	QSettings settings("opentrack");	// Registry settings (in HK_USER) + +	QString currentFile = settings.value ( "SettingsFile", QCoreApplication::applicationDirPath() + "/Settings/default.ini" ).toString(); +	QSettings iniFile( currentFile, QSettings::IniFormat );		// Application settings (in INI-file) + +	iniFile.beginGroup ( "FTN" ); +	iniFile.setValue ( "IP-1", ui.spinIPFirstNibble->value() ); +	iniFile.setValue ( "IP-2", ui.spinIPSecondNibble->value() ); +	iniFile.setValue ( "IP-3", ui.spinIPThirdNibble->value() ); +	iniFile.setValue ( "IP-4", ui.spinIPFourthNibble->value() ); +	iniFile.setValue ( "PortNumber", ui.spinPortNumber->value() ); +	iniFile.endGroup (); + +	settingsDirty = false; +} + +//////////////////////////////////////////////////////////////////////////////// +// Factory function that creates instances if the Protocol-settings dialog object. + +// Export both decorated and undecorated names. +//   GetProtocolDialog     - Undecorated name, which can be easily used with GetProcAddress +//                          Win32 API function. +//   _GetProtocolDialog@0  - Common name decoration for __stdcall functions in C language. +//#pragma comment(linker, "/export:GetProtocolDialog=_GetProtocolDialog@0") + +extern "C" FTNOIR_PROTOCOL_BASE_EXPORT IProtocolDialog* CALLING_CONVENTION GetDialog( ) +{ +    return new FTNControls; +} diff --git a/ftnoir_protocol_ftn/ftnoir_protocol_ftn_dll.cpp b/ftnoir_protocol_ftn/ftnoir_protocol_ftn_dll.cpp index c52d6c9e..acd3b990 100644 --- a/ftnoir_protocol_ftn/ftnoir_protocol_ftn_dll.cpp +++ b/ftnoir_protocol_ftn/ftnoir_protocol_ftn_dll.cpp @@ -1,49 +1,49 @@ -/********************************************************************************
 -* FaceTrackNoIR		This program is a private project of some enthusiastic		*
 -*					gamers from Holland, who don't like to pay much for			*
 -*					head-tracking.												*
 -*																				*
 -* Copyright (C) 2012	Wim Vriend (Developing)									*
 -*						Ron Hendriks (Researching and Testing)					*
 -*																				*
 -* Homepage																		*
 -*																				*
 -* This program is free software; you can redistribute it and/or modify it		*
 -* under the terms of the GNU General Public License as published by the			*
 -* Free Software Foundation; either version 3 of the License, or (at your		*
 -* option) any later version.													*
 -*																				*
 -* This program is distributed in the hope that it will be useful, but			*
 -* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY	*
 -* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for	*
 -* more details.																	*
 -*																				*
 -* You should have received a copy of the GNU General Public License along		*
 -* with this program; if not, see <http://www.gnu.org/licenses/>.				*
 -*																				*
 -********************************************************************************/
 -#include "ftnoir_protocol_ftn.h"
 -#include <QDebug>
 -#include "facetracknoir/global-settings.h"
 -
 -FTNoIR_ProtocolDll::FTNoIR_ProtocolDll() {
 -}
 -
 -FTNoIR_ProtocolDll::~FTNoIR_ProtocolDll()
 -{
 -
 -}
 -
 -////////////////////////////////////////////////////////////////////////////////
 -// Factory function that creates instances if the Protocol object.
 -
 -// Export both decorated and undecorated names.
 -//   GetProtocolDll     - Undecorated name, which can be easily used with GetProcAddress
 -//						Win32 API function.
 -//   _GetProtocolDll@0  - Common name decoration for __stdcall functions in C language.
 -//#pragma comment(linker, "/export:GetProtocolDll=_GetProtocolDll@0")
 -
 -extern "C" FTNOIR_PROTOCOL_BASE_EXPORT Metadata* CALLING_CONVENTION GetMetadata()
 -{
 -	return new FTNoIR_ProtocolDll;
 -}
 +/******************************************************************************** +* FaceTrackNoIR		This program is a private project of some enthusiastic		* +*					gamers from Holland, who don't like to pay much for			* +*					head-tracking.												* +*																				* +* Copyright (C) 2012	Wim Vriend (Developing)									* +*						Ron Hendriks (Researching and Testing)					* +*																				* +* Homepage																		* +*																				* +* This program is free software; you can redistribute it and/or modify it		* +* under the terms of the GNU General Public License as published by the			* +* Free Software Foundation; either version 3 of the License, or (at your		* +* option) any later version.													* +*																				* +* This program is distributed in the hope that it will be useful, but			* +* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY	* +* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for	* +* more details.																	* +*																				* +* You should have received a copy of the GNU General Public License along		* +* with this program; if not, see <http://www.gnu.org/licenses/>.				* +*																				* +********************************************************************************/ +#include "ftnoir_protocol_ftn.h" +#include <QDebug> +#include "facetracknoir/global-settings.h" + +FTNoIR_ProtocolDll::FTNoIR_ProtocolDll() { +} + +FTNoIR_ProtocolDll::~FTNoIR_ProtocolDll() +{ + +} + +//////////////////////////////////////////////////////////////////////////////// +// Factory function that creates instances if the Protocol object. + +// Export both decorated and undecorated names. +//   GetProtocolDll     - Undecorated name, which can be easily used with GetProcAddress +//						Win32 API function. +//   _GetProtocolDll@0  - Common name decoration for __stdcall functions in C language. +//#pragma comment(linker, "/export:GetProtocolDll=_GetProtocolDll@0") + +extern "C" FTNOIR_PROTOCOL_BASE_EXPORT Metadata* CALLING_CONVENTION GetMetadata() +{ +	return new FTNoIR_ProtocolDll; +}  | 
