* [package] Add QtSvg support DLLs for Windows.
* [Simulator] Add images/css resources for new version; Create SimulatorIcon and SimulatorStyle classes; Build with SVG support, remove unused bitmaps.
* [Simulator] Improve and simplify VirtualJoystickWidget resize event (sticks maintain X/Y position) & improve values layout w/out trims.
* [Simulator] Refactor Trainer simulator to use VirtualJoystickWidget, gains lock/hold buttons and X/Y position readout.
* [Simulator] More compact layout for Telemetry simulator, reduces min. width and adds scrolling columns to allow smaller window sizes.
* [Simulator] Add new SimulatorMainWindow and RadioOutputsWidget UI classes.
* [storage] Add non-persistent sessionId() to AppData for tracking currently active radio profile ID.
* [Simulator] Major UI updates:
* Use a MainWindow interface with dockable/floatable windows, proper toolbar & menu;
* Persistent size/layout state of all windows/docks/etc between uses, per radio profile;
* Completely separate radio Outputs window with configurable layout (also persistent between uses);
* Translations now enabled in standalone Simulator, follows main Companion setting (they need a lot of updates);
* New custom icons throughout, toolbar icon sizes adhere to user preference in Companion.
* [Simulator] Debug Output console updates:
* New filter feature with optional full RegEx support, can work in inclusive or exclusive modes (full help text is included in UI);
* Up to 50 user-defined filters are saved to permanent settings, also a few predefined filters are provided;
* Saves/restores the last filter used and if it was en/disabled;
* Added word wrap and clear screen features;
* Configurable scroll-back buffer size;
* Increased efficiency & performance of the buffering/printing process.
* [Simulator][OSX] Visual UI tweaks for OS X.
* [Simulator] Fix some debug console settings not being restored properly.
* [Simulator] Add ability to hide/show menu bar; Persist view state of menu bar and radio title bar; Reduce font size on OS X; Other small visual tweaks and improvements.
* [build] Add QtSvg to Linux build scripts (a guess for Dockerfile).
* [build] Fix for Qt 5.3.
* Add OpenTx headers to new files.
* [Companion][storage] Update GeneralSettings() initializer to use current sessionId for profile data retrieval, removes workaround for standalone Simulator being started with arbitrary profile; AppData: always update sessionId when global id() changes.
* [X10] Fixes for new simulator
102 lines
2.4 KiB
C++
102 lines
2.4 KiB
C++
/*
|
|
* Copyright (C) OpenTX
|
|
*
|
|
* Based on code named
|
|
* th9x - http://code.google.com/p/th9x
|
|
* er9x - http://code.google.com/p/er9x
|
|
* gruvin9x - http://code.google.com/p/gruvin9x
|
|
*
|
|
* License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License version 2 as
|
|
* published by the Free Software Foundation.
|
|
*
|
|
* 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.
|
|
*/
|
|
|
|
#include <stdint.h>
|
|
#include "trainersimu.h"
|
|
#include "ui_trainersimu.h"
|
|
#include "helpers.h"
|
|
#include "virtualjoystickwidget.h"
|
|
|
|
TrainerSimulator::TrainerSimulator(QWidget * parent, SimulatorInterface * simulator):
|
|
QWidget(parent),
|
|
ui(new Ui::TrainerSimulator),
|
|
simulator(simulator)
|
|
{
|
|
ui->setupUi(this);
|
|
|
|
vJoyLeft = new VirtualJoystickWidget(this, 'L', false);
|
|
vJoyLeft->setStickColor(Qt::cyan);
|
|
ui->leftStickLayout->addWidget(vJoyLeft);
|
|
|
|
vJoyRight = new VirtualJoystickWidget(this, 'R', false);
|
|
vJoyRight->setStickColor(Qt::cyan);
|
|
ui->rightStickLayout->addWidget(vJoyRight);
|
|
|
|
timer = new QTimer(this);
|
|
timer->setInterval(10);
|
|
connect(timer, SIGNAL(timeout()), this, SLOT(onTimerEvent()));
|
|
}
|
|
|
|
TrainerSimulator::~TrainerSimulator()
|
|
{
|
|
if (timer) {
|
|
timer->stop();
|
|
delete timer;
|
|
}
|
|
if (vJoyLeft)
|
|
delete vJoyLeft;
|
|
if (vJoyRight)
|
|
delete vJoyRight;
|
|
|
|
delete ui;
|
|
}
|
|
|
|
void TrainerSimulator::showEvent(QShowEvent *event)
|
|
{
|
|
timer->start();
|
|
event->accept();
|
|
}
|
|
|
|
void TrainerSimulator::closeEvent(QCloseEvent *event)
|
|
{
|
|
timer->stop();
|
|
event->accept();
|
|
}
|
|
|
|
void TrainerSimulator::centerSticks()
|
|
{
|
|
if (vJoyLeft)
|
|
vJoyLeft->centerStick();
|
|
|
|
if (vJoyRight)
|
|
vJoyRight->centerStick();
|
|
}
|
|
|
|
void TrainerSimulator::onTimerEvent()
|
|
{
|
|
centerSticks();
|
|
setTrainerInputs();
|
|
}
|
|
|
|
void TrainerSimulator::setTrainerInputs()
|
|
{
|
|
if (!simulator)
|
|
return;
|
|
|
|
if (vJoyLeft) {
|
|
simulator->setTrainerInput(0, int( 512 * vJoyLeft->getStickX())); // LEFT HORZ
|
|
simulator->setTrainerInput(1, int(-512 * vJoyLeft->getStickY())); // LEFT VERT
|
|
}
|
|
if (vJoyRight) {
|
|
simulator->setTrainerInput(2, int(-512 * vJoyRight->getStickY())); // RGHT VERT
|
|
simulator->setTrainerInput(3, int( 512 * vJoyRight->getStickX())); // RGHT HORZ
|
|
}
|
|
}
|