diff --git a/companion/src/wizarddialog.cpp b/companion/src/wizarddialog.cpp
index aa460e102..66fdd084e 100644
--- a/companion/src/wizarddialog.cpp
+++ b/companion/src/wizarddialog.cpp
@@ -18,7 +18,8 @@
WizardDialog::WizardDialog(const GeneralSettings & settings, unsigned int modelId, QWidget *parent)
: QWizard(parent),
- mix(settings, modelId)
+ mix(settings, modelId),
+ settings(settings)
{
setWindowTitle(tr("Model Wizard"));
@@ -123,14 +124,13 @@ void WizardDialog::showHelp()
}
StandardPage::StandardPage(WizardPage currentPage, WizardDialog *dlg, QString image, QString title, QString text, int nextPage )
- : QWizardPage()
+ : QWizardPage(),
+ wizDlg(dlg),
+ pageCurrent(currentPage),
+ pageFollower(nextPage)
{
- pageCurrent = currentPage;
- pageFollower = nextPage;
- wizDlg = dlg;
-
setTitle(title);
- setPixmap(QWizard::WatermarkPixmap, QPixmap(QString(":/images/wizard/") + image + QString(".png")));
+ setPixmap(QWizard::WatermarkPixmap, QPixmap(QString(":/images/wizard/%1.png").arg(image)));
topLabel = new QLabel(text+"
");
topLabel->setWordWrap(true);
@@ -139,14 +139,27 @@ StandardPage::StandardPage(WizardPage currentPage, WizardDialog *dlg, QString im
setLayout(layout);
}
-void StandardPage::populateCB( QComboBox *CB )
+int StandardPage::getDefaultChannel(const Input input)
{
- for (int j=0; jremoveItem(0);
+ for (int channel=0; channel<4; channel++) {
+ unsigned int stick_index = chout_ar[4*wizDlg->settings.templateSetup + channel];
+ if (input == stick_index)
+ return channel;
+ }
+ return -1;
+}
+
+void StandardPage::populateCB(QComboBox *cb, int preferred)
+{
+ cb->clear();
for (int i=0; imix.channel[i].page == Page_None) {
- CB->addItem(tr("Channel %1").arg(i+1), i);
+ // this channel is not already used
+ cb->addItem(tr("Channel %1").arg(i+1), i);
+ if (preferred == i) {
+ cb->setCurrentIndex(cb->count()-1);
+ }
}
}
}
@@ -323,7 +336,7 @@ ThrottlePage::ThrottlePage(WizardDialog *dlg, QString image, QString title, QStr
void ThrottlePage::initializePage()
{
- populateCB(throttleCB);
+ populateCB(throttleCB, getDefaultChannel(THROTTLE));
}
bool ThrottlePage::validatePage()
diff --git a/companion/src/wizarddialog.h b/companion/src/wizarddialog.h
index df3c91a26..75419b5b3 100644
--- a/companion/src/wizarddialog.h
+++ b/companion/src/wizarddialog.h
@@ -28,10 +28,11 @@ QT_END_NAMESPACE
class WizardDialog : public QWizard
{
Q_OBJECT
-public:
- WizMix mix;
- WizardDialog(const GeneralSettings & settings, const unsigned int modelId, QWidget *parent = 0);
+ public:
+ WizMix mix;
+ WizardDialog(const GeneralSettings & settings, const unsigned int modelId, QWidget *parent = 0);
+ const GeneralSettings & settings;
private slots:
void showHelp();
@@ -40,18 +41,25 @@ public:
class StandardPage: public QWizardPage
{
Q_OBJECT
-public:
- StandardPage(WizardPage 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=NOINPUT, int weight2=0 );
- void releaseChannels();
- void cleanupPage();
-private:
- QLabel *topLabel;
- WizardPage pageCurrent;
- int pageFollower;
- int nextId() const;
+
+ public:
+ StandardPage(WizardPage curPage, WizardDialog *dlg, QString image, QString title, QString text, int nextPage=-1);
+ WizardDialog *wizDlg;
+
+ // TODO public for these 3 ones?
+ bool bookChannel(QString label, Input input1, int weight1, Input input2=NOINPUT, int weight2=0 );
+ void releaseChannels();
+ void cleanupPage();
+
+ protected:
+ int getDefaultChannel(const Input input);
+ void populateCB(QComboBox * cb, int preferred=-1);
+
+ private:
+ QLabel *topLabel;
+ WizardPage pageCurrent;
+ int pageFollower;
+ int nextId() const;
};
class ModelSelectionPage: public StandardPage