diff --git a/companion/src/companion.qrc b/companion/src/companion.qrc index 6c8d9e4e9..568d6a66d 100644 --- a/companion/src/companion.qrc +++ b/companion/src/companion.qrc @@ -136,6 +136,18 @@ images/simulator/X9E/right.png images/simulator/X9E/right_enter.png images/simulator/X9E/top.png + images/simulator/XLITE/bottom.png + images/simulator/XLITE/left.png + images/simulator/XLITE/left_scrnshot.png + images/simulator/XLITE/right.png + images/simulator/XLITE/right_ent.png + images/simulator/XLITE/top.png + images/simulator/XLITE/right_exit.png + images/simulator/XLITE/right_shift.png + images/simulator/XLITE/right_right.png + images/simulator/XLITE/right_left.png + images/simulator/XLITE/right_up.png + images/simulator/XLITE/right_down.png images/wizard/ailerons.png images/wizard/airbrakes.png images/wizard/elevons.png diff --git a/companion/src/simulation/CMakeLists.txt b/companion/src/simulation/CMakeLists.txt index dcbc819ff..20de5301d 100644 --- a/companion/src/simulation/CMakeLists.txt +++ b/companion/src/simulation/CMakeLists.txt @@ -6,6 +6,7 @@ set(simulation_SRCS simulateduiwidget9X.cpp simulateduiwidgetX7.cpp simulateduiwidgetX9.cpp + simulateduiwidgetXLITE.cpp simulateduiwidgetX9E.cpp simulateduiwidgetX10.cpp simulateduiwidgetX12.cpp @@ -25,6 +26,7 @@ set(simulation_UIS simulateduiwidget9X.ui simulateduiwidgetX7.ui simulateduiwidgetX9.ui + simulateduiwidgetXLITE.ui simulateduiwidgetX9E.ui simulateduiwidgetX10.ui simulateduiwidgetX12.ui diff --git a/companion/src/simulation/simulateduiwidget.h b/companion/src/simulation/simulateduiwidget.h index 11ed5b39b..b02d73535 100644 --- a/companion/src/simulation/simulateduiwidget.h +++ b/companion/src/simulation/simulateduiwidget.h @@ -106,6 +106,7 @@ namespace Ui { class SimulatedUIWidget9X; class SimulatedUIWidgetX7; class SimulatedUIWidgetX9; + class SimulatedUIWidgetXLITE; class SimulatedUIWidgetX9E; class SimulatedUIWidgetX10; class SimulatedUIWidgetX12; @@ -151,6 +152,18 @@ class SimulatedUIWidgetX9: public SimulatedUIWidget Ui::SimulatedUIWidgetX9 * ui; }; +class SimulatedUIWidgetXLITE: public SimulatedUIWidget +{ + Q_OBJECT + + public: + explicit SimulatedUIWidgetXLITE(SimulatorInterface * simulator, QWidget * parent = NULL); + virtual ~SimulatedUIWidgetXLITE(); + + private: + Ui::SimulatedUIWidgetXLITE * ui; +}; + class SimulatedUIWidgetX9E: public SimulatedUIWidget { Q_OBJECT diff --git a/companion/src/simulation/simulateduiwidgetXLITE.cpp b/companion/src/simulation/simulateduiwidgetXLITE.cpp new file mode 100644 index 000000000..35d8abf79 --- /dev/null +++ b/companion/src/simulation/simulateduiwidgetXLITE.cpp @@ -0,0 +1,90 @@ +#include "simulateduiwidget.h" +#include "ui_simulateduiwidgetXLITE.h" + +SimulatedUIWidgetXLITE::SimulatedUIWidgetXLITE(SimulatorInterface *simulator, QWidget * parent): + SimulatedUIWidget(simulator, parent), + ui(new Ui::SimulatedUIWidgetXLITE) +{ + RadioUiAction * act; + QPolygon polygon; + + ui->setupUi(this); + + // add actions in order of appearance on the help menu +/* + act = new RadioUiAction(3, QList() << Qt::Key_PageUp << Qt::Key_Up, SIMU_STR_HLP_KEYS_GO_UP, SIMU_STR_HLP_ACT_PAGE); + addRadioWidget(ui->rightbuttons->addArea(QRect(9, 164, 25, 25), "XLITE/right_page.png", act)); + + act = new RadioUiAction(0, QList() << Qt::Key_PageDown << Qt::Key_Down, SIMU_STR_HLP_KEYS_GO_DN, SIMU_STR_HLP_ACT_MENU_ICN); + addRadioWidget(ui->leftbuttons->addArea(polyArc(ctr.x(), ctr.y(), 20), "XLITE/left_menu.png", act)); + + polygon.clear(); + polygon << polyArc(ctr.x(), ctr.y(), 50, 90, 270) << polyArc(ctr.x(), ctr.y(), 22, 90, 270); + act = new RadioUiAction(1, QList() << Qt::Key_Delete << Qt::Key_Escape << Qt::Key_Backspace, SIMU_STR_HLP_KEYS_EXIT, SIMU_STR_HLP_ACT_EXIT); + addRadioWidget(ui->leftbuttons->addArea(polygon, "XLITE/left_exit.png", act)); + + m_scrollUpAction = new RadioUiAction(-1, QList() << Qt::Key_Minus << Qt::Key_Equal << Qt::Key_Left, SIMU_STR_HLP_KEYS_GO_LFT, SIMU_STR_HLP_ACT_ROT_LFT); + m_scrollDnAction = new RadioUiAction(-1, QList() << Qt::Key_Plus << Qt::Key_Right, SIMU_STR_HLP_KEYS_GO_RGT, SIMU_STR_HLP_ACT_ROT_RGT); + connectScrollActions(); +*/ + int x = 49, y = 91, iR = 21, oR = 48; + polygon.clear(); + + polygon << polyArc(x, y, oR, -45, 45) << polyArc(x, y, iR, -45, 45); + act = new RadioUiAction(4, QList() << Qt::Key_Up << Qt::Key_PageUp, SIMU_STR_HLP_KEYS_GO_UP, SIMU_STR_HLP_ACT_UP); + addRadioWidget(ui->rightbuttons->addArea(polygon, "XLITE/right_up.png", act)); + + polygon.clear(); + polygon << polyArc(x, y, oR, 135, 225) << polyArc(x, y, iR, 135, 225); + act = new RadioUiAction(3, QList() << Qt::Key_Down << Qt::Key_PageDown, SIMU_STR_HLP_KEYS_GO_DN, SIMU_STR_HLP_ACT_DN); + addRadioWidget(ui->rightbuttons->addArea(polygon, "XLITE/right_down.png", act)); + + polygon.clear(); + polygon << polyArc(x, y, oR, 45, 135) << polyArc(x, y, iR, 45, 135); + act = new RadioUiAction(5, QList() << Qt::Key_Right << Qt::Key_Plus, SIMU_STR_HLP_KEY_RGT % "|" % SIMU_STR_HLP_KEY_PLS, SIMU_STR_HLP_ACT_PLS); + addRadioWidget(ui->rightbuttons->addArea(polygon, "XLITE/right_right.png", act)); + + polygon.clear(); + polygon << polyArc(x, y, oR, 225, 315) << polyArc(x, y, iR, 225, 315); + act = new RadioUiAction(6, QList() << Qt::Key_Left << Qt::Key_Minus, SIMU_STR_HLP_KEY_LFT % "|" % SIMU_STR_HLP_KEY_MIN, SIMU_STR_HLP_ACT_MIN); + addRadioWidget(ui->rightbuttons->addArea(polygon, "XLITE/right_left.png", act)); + + m_mouseMidClickAction = new RadioUiAction(2, QList() << Qt::Key_Enter << Qt::Key_Return, SIMU_STR_HLP_KEYS_ACTIVATE, SIMU_STR_HLP_ACT_ENT); + addRadioWidget(ui->rightbuttons->addArea(QRect(37, 80, 25, 25), "XLITE/right_ent.png", m_mouseMidClickAction)); + + act = new RadioUiAction(1, QList() << Qt::Key_Delete << Qt::Key_Escape << Qt::Key_Backspace, SIMU_STR_HLP_KEYS_EXIT, SIMU_STR_HLP_ACT_EXIT); + addRadioWidget(ui->rightbuttons->addArea(QRect(36, 147, 27, 27), "XLITE/right_exit.png", act)); + + act = new RadioUiAction(7, QList() << Qt::Key_Shift, SIMU_STR_HLP_KEY_SHIFT, SIMU_STR_HLP_ACT_SHIFT); + addRadioWidget(ui->rightbuttons->addArea(QRect(73, 129, 27, 27), "XLITE/right_shift.png", act)); + + addRadioWidget(ui->leftbuttons->addArea(QRect(9, 152, 25, 25), "XLITE/left_scrnshot.png", m_screenshotAction)); + + m_backlightColors << QColor(215, 243, 255); // XLITE Blue + m_backlightColors << QColor(166,247,159); + m_backlightColors << QColor(247,159,166); + m_backlightColors << QColor(255,195,151); + m_backlightColors << QColor(247,242,159); + + setLcd(ui->lcd); + + QString css = "#radioUiWidget {" + "background-color: qlineargradient(spread:reflect, x1:0, y1:0, x2:0, y2:1," + "stop:0 rgba(255, 255, 255, 255)," + "stop:0.757062 rgba(241, 238, 238, 255)," + "stop:1 rgba(247, 245, 245, 255));" + "}"; + + QTimer * tim = new QTimer(this); + tim->setSingleShot(true); + connect(tim, &QTimer::timeout, [this, css]() { + emit customStyleRequest(css); + }); + tim->start(100); +} + +SimulatedUIWidgetXLITE::~SimulatedUIWidgetXLITE() +{ + delete ui; +} + diff --git a/companion/src/simulation/simulateduiwidgetXLITE.ui b/companion/src/simulation/simulateduiwidgetXLITE.ui new file mode 100644 index 000000000..191626cc6 --- /dev/null +++ b/companion/src/simulation/simulateduiwidgetXLITE.ui @@ -0,0 +1,249 @@ + + + SimulatedUIWidgetXLITE + + + + 0 + 0 + 570 + 208 + + + + + 0 + 0 + + + + + 570 + 208 + + + + + 570 + 208 + + + + Taranis X-LITE Simulator + + + background-color: qlineargradient(spread:reflect, x1:0, y1:0, x2:0, y2:1, stop:0 rgba(255, 255, 255, 255), stop:0.757062 rgba(241, 238, 238, 255), stop:1 rgba(247, 245, 245, 255)); + + + + 0 + + + 0 + + + + + + 0 + 0 + + + + + 157 + 186 + + + + + 157 + 186 + + + + background:url(:/images/simulator/XLITE/left.png); + + + + + + + + 0 + 0 + + + + + 256 + 128 + + + + + 424 + 128 + + + + background-color: rgb(215, 243, 255); + + + + + + + + 0 + 0 + + + + + 157 + 186 + + + + + 157 + 186 + + + + background:url(:/images/simulator/XLITE/right.png) + + + + + + + + 0 + 0 + + + + + 256 + 48 + + + + + 256 + 48 + + + + background:url(:/images/simulator/XLITE/top.png) + + + + + + + + 0 + 0 + + + + + 256 + 10 + + + + + 256 + 10 + + + + background:url(:/images/simulator/XLITE/bottom.png) + + + + + + + + 0 + 0 + + + + + 0 + 10 + + + + + 16777215 + 12 + + + + + 0 + 12 + + + + background-color: rgb(255, 255, 255); + + + + + + + + + + + 0 + 0 + + + + + 0 + 10 + + + + + 16777215 + 10 + + + + background-color: rgb(247, 245, 245); + + + + + + + + + + + LcdWidget + QWidget +
lcdwidget.h
+ 1 +
+ + ButtonsWidget + QWidget +
buttonswidget.h
+ 1 +
+
+ + +
diff --git a/companion/src/simulation/simulator_strings.h b/companion/src/simulation/simulator_strings.h index 795901048..6e207c6b8 100644 --- a/companion/src/simulation/simulator_strings.h +++ b/companion/src/simulation/simulator_strings.h @@ -4,6 +4,7 @@ #include #define SIMU_STR_HLP_KEY_ENTER QCoreApplication::translate("SimulatedUIWidget", "ENTER") +#define SIMU_STR_HLP_KEY_SHIFT QCoreApplication::translate("SimulatedUIWidget", "SHIFT") #define SIMU_STR_HLP_KEY_PGUP QCoreApplication::translate("SimulatedUIWidget", "PG-UP") #define SIMU_STR_HLP_KEY_PGDN QCoreApplication::translate("SimulatedUIWidget", "PG-DN") #define SIMU_STR_HLP_KEY_DEL QCoreApplication::translate("SimulatedUIWidget", "DEL") @@ -39,6 +40,7 @@ #define SIMU_STR_HLP_ACT_PAGE QCoreApplication::translate("SimulatedUIWidget", "
[ PAGE ]
") #define SIMU_STR_HLP_ACT_EXIT QCoreApplication::translate("SimulatedUIWidget", "
[ EXIT ]
") #define SIMU_STR_HLP_ACT_ENT QCoreApplication::translate("SimulatedUIWidget", "
[ ENT ]
") +#define SIMU_STR_HLP_ACT_SHIFT QCoreApplication::translate("SimulatedUIWidget", "
[ SHIFT ]
") #define SIMU_STR_HLP_ACT_UP QCoreApplication::translate("SimulatedUIWidget", "
[ UP ]
") #define SIMU_STR_HLP_ACT_DN QCoreApplication::translate("SimulatedUIWidget", "
[ DN ]
") #define SIMU_STR_HLP_ACT_PLS QCoreApplication::translate("SimulatedUIWidget", "
[ + ]
") diff --git a/companion/src/simulation/simulatorwidget.cpp b/companion/src/simulation/simulatorwidget.cpp index b329e1305..50b99cb4b 100644 --- a/companion/src/simulation/simulatorwidget.cpp +++ b/companion/src/simulation/simulatorwidget.cpp @@ -70,13 +70,15 @@ SimulatorWidget::SimulatorWidget(QWidget * parent, SimulatorInterface * simulato switch(m_board) { case Board::BOARD_TARANIS_X7: - case Board::BOARD_TARANIS_XLITE: radioUiWidget = new SimulatedUIWidgetX7(simulator, this); break; case Board::BOARD_TARANIS_X9D: case Board::BOARD_TARANIS_X9DP: radioUiWidget = new SimulatedUIWidgetX9(simulator, this); break; + case Board::BOARD_TARANIS_XLITE: + radioUiWidget = new SimulatedUIWidgetXLITE(simulator, this); + break; case Board::BOARD_TARANIS_X9E: radioUiWidget = new SimulatedUIWidgetX9E(simulator, this); break;