diff --git a/companion/src/companion.qrc b/companion/src/companion.qrc
index fa38969d8..10656ba1d 100644
--- a/companion/src/companion.qrc
+++ b/companion/src/companion.qrc
@@ -74,6 +74,7 @@
images/wizard/tail.png
images/wizard/tails.png
images/wizard/throttle.png
+ images/wizard/vtail.png
images/wizard/wingtype.png
images/library/00001.png
images/library/00002.png
diff --git a/companion/src/images/wizard/tail.png b/companion/src/images/wizard/tail.png
index 09121ed17..50d7000d3 100644
Binary files a/companion/src/images/wizard/tail.png and b/companion/src/images/wizard/tail.png differ
diff --git a/companion/src/images/wizard/vtail.png b/companion/src/images/wizard/vtail.png
new file mode 100644
index 000000000..760d016e5
Binary files /dev/null and b/companion/src/images/wizard/vtail.png differ
diff --git a/companion/src/wizarddialog.cpp b/companion/src/wizarddialog.cpp
index 996e455c6..2ee125709 100644
--- a/companion/src/wizarddialog.cpp
+++ b/companion/src/wizarddialog.cpp
@@ -1,6 +1,47 @@
#include
#include "wizarddialog.h"
+Channel::Channel()
+{
+ clear();
+}
+
+void Channel::clear()
+{
+ sourceDlg = -1;
+ input1 = UNDEFINED;
+ input2 = UNDEFINED;
+ weight1 = 0;
+ weight2 = 0;
+}
+
+bool Channel::isEmpty()
+{
+ return sourceDlg < 0;
+}
+
+QString Channel::nameOf(Input input)
+{
+ switch (input){
+ case THROTTLE: return "THR";
+ case RUDDER: return "RUD";
+ case ELEVATOR: return "ELE";
+ case AILERON: return "AIL";
+ case FLAP: return "FLP";
+ case AIRBREAK: return "AIR";
+ default: return "---";
+ }
+}
+
+QString Channel::print()
+{
+ QString str;
+ str = QString("[%1, %2]").arg(nameOf(input1)).arg(weight1);
+ if ( input2 != UNDEFINED )
+ str += QString("[%1, %2]").arg(nameOf(input2)).arg(weight2);
+ return str;
+}
+
WizardDialog::WizardDialog(QWidget *parent)
: QWizard(parent)
{
@@ -16,6 +57,7 @@ WizardDialog::WizardDialog(QWidget *parent)
setPage(Page_Rudder, new RudderPage(this, "rudder",tr("Rudder"),tr("Does your model have a rudder?"), Page_Conclusion));
setPage(Page_Tails, new TailSelectionPage(this, "tails",tr("Tail Type"),tr("Select which type of tail your model is equiped with.")));
setPage(Page_Tail, new TailPage(this, "tail",tr("Tail"),tr("Select channels for tail control."), Page_Conclusion));
+ setPage(Page_Vtail, new VTailPage(this, "vtail",tr("V-Tail"),tr("Select channels for tail control."), Page_Conclusion));
setPage(Page_Simpletail, new SimpleTailPage(this, "simpletail",tr("Tail"),tr("Select elevator channel."), Page_Conclusion));
setPage(Page_Cyclic, new CyclicPage(this, "cyclic",tr("Cyclic"),tr("Which type of swash control is installed in your helicopter?"), Page_Gyro));
setPage(Page_Gyro, new GyroPage(this, "gyro",tr("Tail Gyro"),tr("Has your helicopter got an adjustable gyro for the tail?"), Page_Flybar));
@@ -24,10 +66,9 @@ WizardDialog::WizardDialog(QWidget *parent)
setPage(Page_Helictrl, new HeliPage(this, "helictrl",tr("Helicopter"),tr("Select the controls for your helicopter"), Page_Conclusion));
setPage(Page_Multirotor, new MultirotorPage(this, "multirotor",tr("Multirotor"),tr("Select the control channels for your multirotor"), Page_Conclusion));
setPage(Page_Conclusion, new ConclusionPage(this, "conclusion",tr("Save Changes"),tr(
- "Your model should now be set up. You now have to manually check the direction of each control surface and reverse the channels that "
- "make controls move in the wrong direction.
Remove the propeller/propellers before you try to control your model for the first time.
"
+ "Manually check the direction of each control surface and reverse any channels that make controls move in the wrong direction. "
+ "Remove the propeller/propellers before you try to control your model for the first time.
"
"Please note that continuing removes all old model settings!"), -1));
-
setStartId(Page_Models);
#ifndef Q_WS_MAC
@@ -58,6 +99,7 @@ void WizardDialog::showHelp()
case Page_Rudder: message = tr("TBD."); break;
case Page_Tails: message = tr("Select the tail type of your plane."); break;
case Page_Tail: message = tr("TBD."); break;
+ case Page_Vtail: message = tr("TBD."); break;
case Page_Simpletail: message = tr("TBD."); break;
case Page_Flybar: message = tr("TBD."); break;
case Page_Cyclic: message = tr("TBD."); break;
@@ -65,17 +107,18 @@ void WizardDialog::showHelp()
case Page_Fblheli: message = tr("TBD."); break;
case Page_Helictrl: message = tr("TBD."); break;
case Page_Multirotor: message = tr("TBD."); break;
- case Page_Conclusion: message = tr("TBD."); break;
+ case Page_Conclusion: message = tr("TBD."); break;
default: message = tr("Move on. Nothin to see here.");
}
QMessageBox::information(this, tr("Model Wizard Help"), message);
}
-StandardPage::StandardPage(WizardDialog *dlg, QString image, QString title, QString text, int nextPage)
+StandardPage::StandardPage(int currentPage, WizardDialog *dlg, QString image, QString title, QString text, int nextPage )
: QWizardPage()
{
+ pageCurrent = currentPage;
pageFollower = nextPage;
- wizardDialog = dlg;
+ wizDlg = dlg;
setTitle(title);
setPixmap(QWizard::WatermarkPixmap, QPixmap(QString(":/images/wizard/") + image + QString(".png")));
@@ -87,13 +130,59 @@ StandardPage::StandardPage(WizardDialog *dlg, QString image, QString title, QStr
setLayout(layout);
}
+void StandardPage::populateCB( QComboBox *CB )
+{
+ for (int j=0; jremoveItem(0);
+
+ for (int i=0; ichannel[i].isEmpty()){
+ CB->addItem(tr("Channel ") + QString("%1").arg(i+1), i);
+ }
+ }
+}
+
+bool StandardPage::bookChannel(QString label, Input input1, int weight1, Input input2, int weight2 )
+{
+ int index = label.right(1).toInt() - 1;
+
+ if (index<0 || index >= MAX_CHANNELS)
+ return false;
+ if (!wizDlg->channel[index].isEmpty())
+ return false;
+
+ wizDlg->channel[index].sourceDlg = pageCurrent;
+ wizDlg->channel[index].input1 = input1;
+ wizDlg->channel[index].input2 = input2;
+ wizDlg->channel[index].weight1 = weight1;
+ wizDlg->channel[index].weight2 = weight2;
+
+ return true;
+}
+
+void StandardPage::releaseChannels()
+{
+ for (int i=0; ichannel[i].sourceDlg == pageCurrent){
+ wizDlg->channel[i].clear();
+ }
+ }
+}
+
+void StandardPage::cleanupPage()
+{
+ releaseChannels();
+}
+
int StandardPage::nextId() const
{
return pageFollower;
}
ModelSelectionPage::ModelSelectionPage(WizardDialog *dlg, QString image, QString title, QString text)
- : StandardPage(dlg, image, title, text)
+ : StandardPage(WizardDialog::Page_Models, dlg, image, title, text)
{
nameLineEdit = new QLineEdit;
planeRB = new QRadioButton(tr("Plane"));
@@ -124,7 +213,7 @@ int ModelSelectionPage::nextId() const
}
WingtypeSelectionPage::WingtypeSelectionPage(WizardDialog *dlg, QString image, QString title, QString text)
- : StandardPage(dlg, image, title, text)
+ : StandardPage(WizardDialog::Page_Wingtypes, dlg, image, title, text)
{
standardWingRB = new QRadioButton(tr("Standard Wing"));
standardWingRB->setChecked(true);
@@ -144,7 +233,7 @@ int WingtypeSelectionPage::nextId() const
}
TailSelectionPage::TailSelectionPage(WizardDialog *dlg, QString image, QString title, QString text)
- : StandardPage(dlg, image, title, text)
+ : StandardPage(WizardDialog::Page_Tails, dlg, image, title, text)
{
standardTailRB = new QRadioButton(tr("Elevator and Rudder"));
standardTailRB->setChecked(true);
@@ -162,12 +251,14 @@ int TailSelectionPage::nextId() const
{
if (simpleTailRB->isChecked())
return WizardDialog::Page_Simpletail;
+ else if (vTailRB->isChecked())
+ return WizardDialog::Page_Vtail;
else
return WizardDialog::Page_Tail;
}
FlybarSelectionPage::FlybarSelectionPage(WizardDialog *dlg, QString image, QString title, QString text)
- : StandardPage(dlg, image, title, text)
+ : StandardPage(WizardDialog::Page_Flybar, dlg, image, title, text)
{
flybarRB = new QRadioButton(tr("Has Flybar"));
flybarRB->setChecked(true);
@@ -188,7 +279,7 @@ int FlybarSelectionPage::nextId() const
}
ThrottlePage::ThrottlePage(WizardDialog *dlg, QString image, QString title, QString text, int nextPage)
- : StandardPage(dlg, image, title, text, nextPage)
+ : StandardPage(WizardDialog::Page_Throttle, dlg, image, title, text, nextPage)
{
motorRB = new QRadioButton(tr("Yes"));
noMotorRB = new QRadioButton(tr("No"));
@@ -202,8 +293,17 @@ ThrottlePage::ThrottlePage(WizardDialog *dlg, QString image, QString title, QStr
l->addWidget(throttleCB);
}
+void ThrottlePage::initializePage(){
+ populateCB(throttleCB);
+}
+
+bool ThrottlePage::validatePage() {
+ releaseChannels();
+ return bookChannel(throttleCB->currentText(), THROTTLE, 100 );
+}
+
AileronsPage::AileronsPage(WizardDialog *dlg, QString image, QString title, QString text, int nextPage)
- : StandardPage(dlg, image, title, text, nextPage)
+ : StandardPage(WizardDialog::Page_Ailerons, dlg, image, title, text, nextPage)
{
noAileronsRB = new QRadioButton(tr("No"));
oneAileronRB = new QRadioButton(tr("Yes, controlled by a single channel"));
@@ -222,8 +322,25 @@ AileronsPage::AileronsPage(WizardDialog *dlg, QString image, QString title, QStr
l->addWidget(aileron2CB);
}
+void AileronsPage::initializePage(){
+ populateCB(aileron1CB);
+ populateCB(aileron2CB);
+}
+
+bool AileronsPage::validatePage() {
+ releaseChannels();
+ if (noAileronsRB->isChecked()) {
+ return true;
+ }
+ if (oneAileronRB->isChecked()) {
+ return (bookChannel(aileron1CB->currentText(), AILERON, 100 ));
+ }
+ return( bookChannel(aileron1CB->currentText(), AILERON, 100 ) &&
+ bookChannel(aileron2CB->currentText(), AILERON, 100 ));
+}
+
FlapsPage::FlapsPage(WizardDialog *dlg, QString image, QString title, QString text, int nextPage)
- : StandardPage(dlg, image, title, text, nextPage)
+ : StandardPage(WizardDialog::Page_Flaps, dlg, image, title, text, nextPage)
{
noFlapsRB = new QRadioButton(tr("No"));
oneFlapRB = new QRadioButton(tr("Yes, controlled by a single channel"));
@@ -242,8 +359,25 @@ FlapsPage::FlapsPage(WizardDialog *dlg, QString image, QString title, QString te
l->addWidget(flap2CB);
}
+void FlapsPage::initializePage(){
+ populateCB(flap1CB);
+ populateCB(flap2CB);
+}
+
+bool FlapsPage::validatePage() {
+ releaseChannels();
+ if (noFlapsRB->isChecked()) {
+ return true;
+ }
+ if (oneFlapRB->isChecked()) {
+ return (bookChannel(flap1CB->currentText(), FLAP, 100 ));
+ }
+ return( bookChannel(flap1CB->currentText(), FLAP, 100 ) &&
+ bookChannel(flap2CB->currentText(), FLAP, 100 ));
+}
+
AirbreaksPage::AirbreaksPage(WizardDialog *dlg, QString image, QString title, QString text, int nextPage)
- : StandardPage(dlg, image, title, text, nextPage)
+ : StandardPage(WizardDialog::Page_Airbrakes, dlg, image, title, text, nextPage)
{
noAirbreaksRB = new QRadioButton(tr("No"));
oneAirbreakRB = new QRadioButton(tr("Yes, controlled by a single channel"));
@@ -262,8 +396,25 @@ AirbreaksPage::AirbreaksPage(WizardDialog *dlg, QString image, QString title, QS
l->addWidget(airbreak2CB);
}
+void AirbreaksPage::initializePage(){
+ populateCB(airbreak1CB);
+ populateCB(airbreak2CB);
+}
+
+bool AirbreaksPage::validatePage() {
+ releaseChannels();
+ if (noAirbreaksRB->isChecked()) {
+ return true;
+ }
+ if (oneAirbreakRB->isChecked()) {
+ return (bookChannel(airbreak1CB->currentText(), AIRBREAK, 100 ));
+ }
+ return( bookChannel(airbreak1CB->currentText(), AIRBREAK, 100 ) &&
+ bookChannel(airbreak2CB->currentText(), AIRBREAK, 100 ));
+}
+
BankPage::BankPage(WizardDialog *dlg, QString image, QString title, QString text, int nextPage)
- : StandardPage(dlg, image, title, text, nextPage)
+ : StandardPage(WizardDialog::Page_Bank, dlg, image, title, text, nextPage)
{
oneElevonChRB = new QRadioButton(tr("One"));
oneElevonChRB->setChecked(true);
@@ -279,8 +430,23 @@ BankPage::BankPage(WizardDialog *dlg, QString image, QString title, QString text
l->addWidget(new QLabel(tr("Second Elevon Channel:")));
l->addWidget(elevon2CB);
}
+
+void BankPage::initializePage(){
+ populateCB(elevon1CB);
+ populateCB(elevon2CB);
+}
+
+bool BankPage::validatePage() {
+ releaseChannels();
+ if (oneElevonChRB->isChecked()) {
+ return (bookChannel(elevon1CB->currentText(), AILERON, 100, ELEVATOR, 100 ));
+ }
+ return( bookChannel(elevon1CB->currentText(), AILERON, 100, ELEVATOR, 100 ) &&
+ bookChannel(elevon2CB->currentText(), AILERON, 100, ELEVATOR, 100 ));
+}
+
RudderPage::RudderPage(WizardDialog *dlg, QString image, QString title, QString text, int nextPage)
- : StandardPage(dlg, image, title, text, nextPage)
+ : StandardPage(WizardDialog::Page_Rudder, dlg, image, title, text, nextPage)
{
noRudderRB = new QRadioButton(tr("No"));
noRudderRB->setChecked(true);
@@ -294,8 +460,44 @@ RudderPage::RudderPage(WizardDialog *dlg, QString image, QString title, QString
l->addWidget(rudderCB);
}
+void RudderPage::initializePage(){
+ populateCB(rudderCB);
+}
+
+bool RudderPage::validatePage() {
+ releaseChannels();
+ if (noRudderRB->isChecked())
+ return true;
+
+ return (bookChannel(rudderCB->currentText(), RUDDER, 100));
+}
+
+VTailPage::VTailPage(WizardDialog *dlg, QString image, QString title, QString text, int nextPage)
+ : StandardPage(WizardDialog::Page_Tail, dlg, image, title, text, nextPage)
+{
+ tail1CB = new QComboBox();
+ tail2CB = new QComboBox();
+
+ QLayout *l = layout();
+ l->addWidget(new QLabel(tr("First Tail Channel:")));
+ l->addWidget(tail1CB);
+ l->addWidget(new QLabel(tr("Second Tail Channel:")));
+ l->addWidget(tail2CB);
+}
+
+void VTailPage::initializePage(){
+ populateCB(tail1CB);
+ populateCB(tail2CB);
+}
+
+bool VTailPage::validatePage() {
+ releaseChannels();
+ return( bookChannel(tail1CB->currentText(), ELEVATOR, 100, RUDDER, 100 ) &&
+ bookChannel(tail2CB->currentText(), ELEVATOR, 100, RUDDER, 100 ));
+}
+
TailPage::TailPage(WizardDialog *dlg, QString image, QString title, QString text, int nextPage)
- : StandardPage(dlg, image, title, text, nextPage)
+ : StandardPage(WizardDialog::Page_Tail, dlg, image, title, text, nextPage)
{
elevatorCB = new QComboBox();
rudderCB = new QComboBox();
@@ -307,8 +509,19 @@ TailPage::TailPage(WizardDialog *dlg, QString image, QString title, QString text
l->addWidget(elevatorCB);
}
+void TailPage::initializePage(){
+ populateCB(elevatorCB);
+ populateCB(rudderCB);
+}
+
+bool TailPage::validatePage() {
+ releaseChannels();
+ return( bookChannel(elevatorCB->currentText(), ELEVATOR, 100 ) &&
+ bookChannel(rudderCB->currentText(), RUDDER, 100 ));
+}
+
SimpleTailPage::SimpleTailPage(WizardDialog *dlg, QString image, QString title, QString text, int nextPage)
- : StandardPage(dlg, image, title, text, nextPage)
+ : StandardPage(WizardDialog::Page_Simpletail, dlg, image, title, text, nextPage)
{
elevatorCB = new QComboBox();
@@ -317,8 +530,17 @@ SimpleTailPage::SimpleTailPage(WizardDialog *dlg, QString image, QString title,
l->addWidget(elevatorCB);
}
+void SimpleTailPage::initializePage(){
+ populateCB(elevatorCB);
+}
+
+bool SimpleTailPage::validatePage() {
+ releaseChannels();
+ return( bookChannel(elevatorCB->currentText(), ELEVATOR, 100 ));
+}
+
CyclicPage::CyclicPage(WizardDialog *dlg, QString image, QString title, QString text, int nextPage)
- : StandardPage(dlg, image, title, text, nextPage)
+ : StandardPage(WizardDialog::Page_Cyclic, dlg, image, title, text, nextPage)
{
cyclic90RB = new QRadioButton(tr("90"));
cyclic90RB->setChecked(true);
@@ -333,8 +555,16 @@ CyclicPage::CyclicPage(WizardDialog *dlg, QString image, QString title, QString
l->addWidget(cyclic140RB);
}
+void CyclicPage::initializePage(){
+}
+
+bool CyclicPage::validatePage() {
+ releaseChannels();
+ return true;
+}
+
GyroPage::GyroPage(WizardDialog *dlg, QString image, QString title, QString text, int nextPage)
- : StandardPage(dlg, image, title, text, nextPage)
+ : StandardPage(WizardDialog::Page_Gyro, dlg, image, title, text, nextPage)
{
noGyroRB = new QRadioButton(tr("No"));
noGyroRB->setChecked(true);
@@ -347,8 +577,16 @@ GyroPage::GyroPage(WizardDialog *dlg, QString image, QString title, QString text
l->addWidget(potGyroRB);
}
+void GyroPage::initializePage(){
+}
+
+bool GyroPage::validatePage() {
+ releaseChannels();
+ return true;
+}
+
FblPage::FblPage(WizardDialog *dlg, QString image, QString title, QString text, int nextPage)
- : StandardPage(dlg, image, title, text, nextPage)
+ : StandardPage(WizardDialog::Page_Fblheli, dlg, image, title, text, nextPage)
{
throttleCB = new QComboBox();
yawCB = new QComboBox();
@@ -366,8 +604,23 @@ FblPage::FblPage(WizardDialog *dlg, QString image, QString title, QString text,
l->addWidget(rollCB);
}
+void FblPage::initializePage(){
+ populateCB(throttleCB);
+ populateCB(yawCB);
+ populateCB(pitchCB);
+ populateCB(rollCB);
+}
+
+bool FblPage::validatePage() {
+ releaseChannels();
+ return( bookChannel(throttleCB->currentText(), THROTTLE, 100 ) &&
+ bookChannel(yawCB->currentText(), RUDDER, 100 ) &&
+ bookChannel(pitchCB->currentText(), ELEVATOR, 100 ) &&
+ bookChannel(rollCB->currentText(), AILERON, 100 ));
+}
+
HeliPage::HeliPage(WizardDialog *dlg, QString image, QString title, QString text, int nextPage)
- : StandardPage(dlg, image, title, text, nextPage)
+ : StandardPage(WizardDialog::Page_Helictrl, dlg, image, title, text, nextPage)
{
throttleCB = new QComboBox();
yawCB = new QComboBox();
@@ -385,8 +638,23 @@ HeliPage::HeliPage(WizardDialog *dlg, QString image, QString title, QString text
l->addWidget(rollCB);
}
+void HeliPage::initializePage(){
+ populateCB(throttleCB);
+ populateCB(yawCB);
+ populateCB(pitchCB);
+ populateCB(rollCB);
+}
+
+bool HeliPage::validatePage() {
+ releaseChannels();
+ return( bookChannel(throttleCB->currentText(), THROTTLE, 100 ) &&
+ bookChannel(yawCB->currentText(), RUDDER, 100 ) &&
+ bookChannel(pitchCB->currentText(), ELEVATOR, 100 ) &&
+ bookChannel(rollCB->currentText(), AILERON, 100 ));
+}
+
MultirotorPage::MultirotorPage(WizardDialog *dlg, QString image, QString title, QString text, int nextPage)
- : StandardPage(dlg, image, title, text, nextPage)
+ : StandardPage(WizardDialog::Page_Multirotor, dlg, image, title, text, nextPage)
{
throttleCB = new QComboBox();
yawCB = new QComboBox();
@@ -404,13 +672,43 @@ MultirotorPage::MultirotorPage(WizardDialog *dlg, QString image, QString title,
l->addWidget(rollCB);
}
+void MultirotorPage::initializePage(){
+ populateCB(throttleCB);
+ populateCB(yawCB);
+ populateCB(pitchCB);
+ populateCB(rollCB);
+}
+
+bool MultirotorPage::validatePage() {
+ releaseChannels();
+ return( bookChannel(throttleCB->currentText(), THROTTLE, 100 ) &&
+ bookChannel(yawCB->currentText(), RUDDER, 100 ) &&
+ bookChannel(pitchCB->currentText(), ELEVATOR, 100 ) &&
+ bookChannel(rollCB->currentText(), AILERON, 100 ));
+}
+
ConclusionPage::ConclusionPage(WizardDialog *dlg, QString image, QString title, QString text, int nextPage)
- : StandardPage(dlg, image, title, text, nextPage)
+ : StandardPage(WizardDialog::Page_Conclusion, dlg, image, title, text, nextPage)
{
+ textLabel = new QLabel();
proceedCB = new QCheckBox(tr("OK, I understand."));
registerField("evaluate.proceed*", proceedCB);
QLayout *l = layout();
+ l->addWidget(textLabel);
l->addWidget(proceedCB);
}
+void ConclusionPage::initializePage(){
+ QString str;
+ for (int i=0; ichannel[i].isEmpty()){
+ str += QString(tr("Channel %1: ").arg(i+1));
+ str += wizDlg->channel[i].print();
+ str += QString("
");
+ }
+ }
+ textLabel->setText(str);
+}
+
+
diff --git a/companion/src/wizarddialog.h b/companion/src/wizarddialog.h
index 09a80c72f..36e52275e 100644
--- a/companion/src/wizarddialog.h
+++ b/companion/src/wizarddialog.h
@@ -12,17 +12,38 @@ class QComboBox;
QT_END_NAMESPACE
+#define MAX_CHANNELS 8
+
+enum Input {UNDEFINED, THROTTLE, RUDDER, ELEVATOR, AILERON, FLAP, AIRBREAK};
+
+class Channel
+{
+public:
+ int sourceDlg;
+ Input input1;
+ Input input2;
+ int weight1;
+ int weight2;
+
+ Channel();
+ QString nameOf(Input);
+ bool isEmpty();
+ void clear();
+ QString print();
+};
+
+
class WizardDialog : public QWizard
{
Q_OBJECT
-
public:
enum { Page_Models, Page_Throttle, Page_Wingtypes, Page_Ailerons, Page_Flaps,
Page_Airbrakes, Page_Bank, Page_Rudder, Page_Tails, Page_Tail,
- Page_Simpletail, Page_Cyclic, Page_Gyro, Page_Flybar,
+ Page_Vtail, Page_Simpletail, Page_Cyclic, Page_Gyro, Page_Flybar,
Page_Fblheli, Page_Helictrl, Page_Multirotor,
Page_Conclusion };
+ Channel channel[MAX_CHANNELS];
WizardDialog(QWidget *parent = 0);
private slots:
@@ -33,10 +54,15 @@ class StandardPage: public QWizardPage
{
Q_OBJECT
public:
- StandardPage(WizardDialog *dlg, QString image, QString title, QString text, int nextPage=-1);
- WizardDialog *wizardDialog;
+ StandardPage(int curPage, WizardDialog *dlg, QString image, QString title, QString text, int nextPage=-1);
+ WizardDialog *wizDlg;
+ void populateCB( QComboBox *);
+ bool bookChannel(QString label, Input input1, int weight1, Input input2=UNDEFINED, int weight2=0 );
+ void releaseChannels();
+ void cleanupPage();
private:
QLabel *topLabel;
+ int pageCurrent;
int pageFollower;
int nextId() const;
};
@@ -93,6 +119,8 @@ class ThrottlePage: public StandardPage
Q_OBJECT
public:
ThrottlePage(WizardDialog *dlg, QString image, QString title, QString text, int nextPage=-1);
+ void initializePage();
+ bool validatePage();
private:
QRadioButton *motorRB;
QRadioButton *noMotorRB;
@@ -104,6 +132,8 @@ class AileronsPage: public StandardPage
Q_OBJECT
public:
AileronsPage(WizardDialog *dlg, QString image, QString title, QString text, int nextPage=-1);
+ void initializePage();
+ bool validatePage();
private:
QRadioButton *oneAileronRB;
QRadioButton *twoAileronsRB;
@@ -117,6 +147,8 @@ class FlapsPage: public StandardPage
Q_OBJECT
public:
FlapsPage(WizardDialog *dlg, QString image, QString title, QString text, int nextPage=-1);
+ void initializePage();
+ bool validatePage();
private:
QRadioButton *oneFlapRB;
QRadioButton *twoFlapsRB;
@@ -130,6 +162,8 @@ class AirbreaksPage: public StandardPage
Q_OBJECT
public:
AirbreaksPage(WizardDialog *dlg, QString image, QString title, QString text, int nextPage=-1);
+ void initializePage();
+ bool validatePage();
private:
QRadioButton *oneAirbreakRB;
QRadioButton *twoAirbreaksRB;
@@ -143,6 +177,8 @@ class BankPage: public StandardPage
Q_OBJECT
public:
BankPage(WizardDialog *dlg, QString image, QString title, QString text, int nextPage=-1);
+ void initializePage();
+ bool validatePage();
private:
QRadioButton *oneElevonChRB;
QRadioButton *twoElevonsChRB;
@@ -155,6 +191,8 @@ class RudderPage: public StandardPage
Q_OBJECT
public:
RudderPage(WizardDialog *dlg, QString image, QString title, QString text, int nextPage=-1);
+ void initializePage();
+ bool validatePage();
private:
QRadioButton *noRudderRB;
QRadioButton *hasRudderRB;
@@ -165,16 +203,34 @@ class TailPage: public StandardPage
{
Q_OBJECT
public:
- TailPage(WizardDialog *dlg, QString image, QString title, QString text, int nextPage=-1);
+ TailPage(WizardDialog *dlg, QString image, QString title, QString text, int nextPage=-1);
+ void initializePage();
+ bool validatePage();
+private:
QComboBox *elevatorCB;
QComboBox *rudderCB;
};
+class VTailPage: public StandardPage
+{
+ Q_OBJECT
+public:
+ VTailPage(WizardDialog *dlg, QString image, QString title, QString text, int nextPage=-1);
+ void initializePage();
+ bool validatePage();
+private:
+ QComboBox *tail1CB;
+ QComboBox *tail2CB;
+};
+
class SimpleTailPage: public StandardPage
{
Q_OBJECT
public:
- SimpleTailPage(WizardDialog *dlg, QString image, QString title, QString text, int nextPage=-1);
+ SimpleTailPage(WizardDialog *dlg, QString image, QString title, QString text, int nextPage=-1);
+ void initializePage();
+ bool validatePage();
+private:
QComboBox *elevatorCB;
};
@@ -183,6 +239,8 @@ class CyclicPage: public StandardPage
Q_OBJECT
public:
CyclicPage(WizardDialog *dlg, QString image, QString title, QString text, int nextPage=-1);
+ void initializePage();
+ bool validatePage();
private:
QRadioButton *cyclic90RB;
QRadioButton *cyclic120RB;
@@ -195,6 +253,8 @@ class GyroPage: public StandardPage
Q_OBJECT
public:
GyroPage(WizardDialog *dlg, QString image, QString title, QString text, int nextPage=-1);
+ void initializePage();
+ bool validatePage();
private:
QRadioButton *noGyroRB;
QRadioButton *switchGyroRB;
@@ -205,7 +265,9 @@ class FblPage: public StandardPage
{
Q_OBJECT
public:
- FblPage(WizardDialog *dlg, QString image, QString title, QString text, int nextPage=-1);
+ FblPage(WizardDialog *dlg, QString image, QString title, QString text, int nextPage=-1);
+ void initializePage();
+ bool validatePage();
private:
QComboBox *throttleCB;
QComboBox *yawCB;
@@ -217,7 +279,9 @@ class HeliPage: public StandardPage
{
Q_OBJECT
public:
- HeliPage(WizardDialog *dlg, QString image, QString title, QString text, int nextPage=-1);
+ HeliPage(WizardDialog *dlg, QString image, QString title, QString text, int nextPage=-1);
+ void initializePage();
+ bool validatePage();
private:
QComboBox *throttleCB;
QComboBox *yawCB;
@@ -229,7 +293,9 @@ class MultirotorPage: public StandardPage
{
Q_OBJECT
public:
- MultirotorPage(WizardDialog *dlg, QString image, QString title, QString text, int nextPage=-1);
+ MultirotorPage(WizardDialog *dlg, QString image, QString title, QString text, int nextPage=-1);
+ void initializePage();
+ bool validatePage();
private:
QComboBox *throttleCB;
QComboBox *yawCB;
@@ -241,9 +307,11 @@ class ConclusionPage: public StandardPage
{
Q_OBJECT
public:
- ConclusionPage(WizardDialog *dlg, QString image, QString title, QString text, int nextPage=-1);
+ ConclusionPage(WizardDialog *dlg, QString image, QString title, QString text, int nextPage=-1);
+ void initializePage();
private:
QCheckBox *proceedCB;
+ QLabel *textLabel;
};
#endif // WIZARDDIALOG_H