Skip to content

Commit 9e1924a

Browse files
committed
Work on mixerdialog
1 parent d67b778 commit 9e1924a

File tree

10 files changed

+385
-586
lines changed

10 files changed

+385
-586
lines changed

companion/src/modeledit/expodialog.ui

Lines changed: 136 additions & 223 deletions
Large diffs are not rendered by default.

companion/src/modeledit/inputs.cpp

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,6 @@ InputsPanel::InputsPanel(QWidget *parent, ModelData & model, GeneralSettings & g
3333
{
3434
connectItemModelEvents(AbstractItemModel::IMID_RawSource);
3535
connectItemModelEvents(AbstractItemModel::IMID_RawSwitch);
36-
connectItemModelEvents(AbstractItemModel::IMID_Curve);
37-
connectItemModelEvents(AbstractItemModel::IMID_GVarRef);
3836

3937
inputsCount = firmware->getCapability(VirtualInputs);
4038
if (inputsCount == 0)
@@ -167,7 +165,7 @@ bool InputsPanel::gm_insertExpo(int idx)
167165

168166
ExpoData *newExpo = model->insertInput(idx);
169167
newExpo->chn = chn;
170-
newExpo->weight = 100;
168+
newExpo->weight = RawSource(SOURCE_TYPE_NUMBER, 100);
171169
newExpo->mode = INPUT_MODE_BOTH;
172170

173171
return true;

companion/src/modeledit/mixerdialog.cpp

Lines changed: 54 additions & 89 deletions
Original file line numberDiff line numberDiff line change
@@ -25,100 +25,74 @@
2525
#include "filtereditemmodels.h"
2626
#include "helpers.h"
2727
#include "namevalidator.h"
28+
#include "curvereferencewidget.h"
29+
#include "rawsourcewidget.h"
2830

29-
MixerDialog::MixerDialog(QWidget *parent, ModelData & model, MixData * mixdata, int index, GeneralSettings & generalSettings, Firmware * firmware,
30-
CompoundItemModelFactory * sharedItemModels) :
31+
MixerDialog::MixerDialog(QWidget *parent, ModelData & model, MixData * mixdata,
32+
int index, GeneralSettings & generalSettings, Firmware * firmware,
33+
CompoundItemModelFactory * sharedItemModels) :
3134
QDialog(parent),
3235
ui(new Ui::MixerDialog),
3336
model(model),
3437
generalSettings(generalSettings),
3538
firmware(firmware),
3639
md(mixdata),
37-
lock(false)
40+
lock(false),
41+
dlgFIM(new FilteredItemModelFactory())
3842
{
3943
ui->setupUi(this);
4044

4145
Board::Type board = firmware->getBoard();
4246

43-
dialogFilteredItemModels = new FilteredItemModelFactory();
47+
QLabel *lb_fp[CPN_MAX_FLIGHT_MODES] = { ui->lb_FP0, ui->lb_FP1, ui->lb_FP2,
48+
ui->lb_FP3, ui->lb_FP4, ui->lb_FP5, ui->lb_FP6, ui->lb_FP7, ui->lb_FP8 };
49+
50+
QCheckBox *tmp[CPN_MAX_FLIGHT_MODES] = {ui->cb_FP0, ui->cb_FP1, ui->cb_FP2,
51+
ui->cb_FP3, ui->cb_FP4, ui->cb_FP5, ui->cb_FP6, ui->cb_FP7, ui->cb_FP8 };
4452

45-
QLabel * lb_fp[CPN_MAX_FLIGHT_MODES] = {ui->lb_FP0, ui->lb_FP1, ui->lb_FP2, ui->lb_FP3, ui->lb_FP4, ui->lb_FP5, ui->lb_FP6, ui->lb_FP7, ui->lb_FP8 };
46-
QCheckBox * tmp[CPN_MAX_FLIGHT_MODES] = {ui->cb_FP0, ui->cb_FP1, ui->cb_FP2, ui->cb_FP3, ui->cb_FP4, ui->cb_FP5, ui->cb_FP6, ui->cb_FP7, ui->cb_FP8 };
4753
for (int i = 0; i < CPN_MAX_FLIGHT_MODES; i++) {
4854
cb_fp[i] = tmp[i];
4955
}
5056

51-
this->setWindowTitle(tr("DEST -> %1").arg(RawSource(SOURCE_TYPE_CH, md->destCh).toString(&model, &generalSettings)));
52-
53-
int imId = dialogFilteredItemModels->registerItemModel(new FilteredItemModel(sharedItemModels->getItemModel(AbstractItemModel::IMID_RawSource),
54-
(RawSource::AllSourceGroups & ~RawSource::NoneGroup)),
55-
"RawSource");
56-
57-
ui->sourceCB->setSizeAdjustPolicy(QComboBox::AdjustToContents);
58-
ui->sourceCB->setModel(dialogFilteredItemModels->getItemModel(imId));
59-
ui->sourceCB->setCurrentIndex(ui->sourceCB->findData(md->srcRaw.toValue()));
60-
if (ui->sourceCB->currentIndex() < 0 && md->srcRaw.toValue() == 0)
61-
ui->sourceCB->setCurrentIndex(Helpers::getFirstPosValueIndex(ui->sourceCB));
62-
63-
int limit = firmware->getCapability(OffsetWeight);
64-
65-
imId = dialogFilteredItemModels->registerItemModel(new FilteredItemModel(sharedItemModels->getItemModel(AbstractItemModel::IMID_RawSource),
66-
(RawSource::AllSourceGroups & ~RawSource::NoneGroup & ~RawSource::ScriptsGroup)),
67-
"EditorSource");
68-
69-
FilteredItemModel *esMdl = dialogFilteredItemModels->getItemModel(imId);
57+
this->setWindowTitle(tr("DEST -> %1").arg(RawSource(SOURCE_TYPE_CH,
58+
md->destCh).toString(&model, &generalSettings)));
7059

71-
weightEditor = new SourceNumRefEditor(md->weight, ui->chkWeightUseSource, ui->sbWeightValue, ui->cboWeightSource, 100, -limit, limit, 1,
72-
model, esMdl, this);
60+
ui->wgtSource->init(&model, sharedItemModels, &mixdata->srcRaw,
61+
(RawSource::AllSourceGroups & ~RawSource::NoneGroup));
62+
connect(ui->wgtSource, &RawSourceWidget::resize, this, [&] () { shrink(); });
7363

74-
connect(weightEditor, &SourceNumRefEditor::resized, this, [=] () { shrink(); });
64+
ui->wgtWeight->init(&model, sharedItemModels, &mixdata->weight,
65+
(RawSource::AllSourceGroups & ~RawSource::NoneGroup &
66+
~RawSource::ScriptsGroup),
67+
UI_FLAG_LIST_VALUE, RawSource(SOURCE_TYPE_NUMBER));
68+
connect(ui->wgtWeight, &RawSourceWidget::resize, this, [=] () { shrink(); });
7569

76-
offsetEditor = new SourceNumRefEditor(md->sOffset, ui->chkOffsetUseSource, ui->sbOffsetValue, ui->cboOffsetSource, 0, -limit, limit, 1,
77-
model, esMdl, this);
70+
ui->wgtOffset->init(&model, sharedItemModels, &mixdata->offset,
71+
(RawSource::AllSourceGroups & ~RawSource::NoneGroup &
72+
~RawSource::ScriptsGroup),
73+
UI_FLAG_LIST_VALUE, RawSource(SOURCE_TYPE_NUMBER));
74+
connect(ui->wgtOffset, &RawSourceWidget::resize, this, [=] () { shrink(); });
7875

79-
connect(offsetEditor, &SourceNumRefEditor::resized, this, [=] () { shrink(); });
80-
81-
curveRefFilteredItemModels = new CurveRefFilteredFactory(sharedItemModels,
82-
firmware->getCapability(HasMixerExpo) ? 0 : FilteredItemModel::PositiveFilter);
83-
84-
curveGroup = new CurveReferenceUIManager(ui->cboCurveType, ui->chkCurveUseSource, ui->sbCurveValue, ui->cboCurveSource, ui->cboCurveFunc,
85-
ui->imgCurve, md->curve, model, sharedItemModels, curveRefFilteredItemModels, esMdl, this);
86-
87-
connect(curveGroup, &CurveReferenceUIManager::resized, this, [=] () { shrink(); });
88-
89-
ui->MixDR_CB->setChecked(md->noExpo == 0);
90-
91-
if (!firmware->getCapability(HasNoExpo)) {
92-
ui->MixDR_CB->hide();
93-
ui->label_MixDR->hide();
94-
}
76+
ui->wgtCurve->init(&model, sharedItemModels, &mixdata->curve,
77+
(RawSource::AllSourceGroups & ~RawSource::NoneGroup &
78+
~RawSource::ScriptsGroup),
79+
UI_FLAG_ALL);
80+
connect(ui->wgtCurve, &CurveReferenceWidget::resize, this, [=] () { shrink(); });
9581

9682
if (index == 0 || model.mixData[index - 1].destCh != mixdata->destCh) {
9783
ui->mltpxCB->hide();
9884
ui->mltpxLbl->hide();
9985
}
10086

101-
if (!firmware->getCapability(VirtualInputs)) {
102-
for(int i = 0; i < CPN_MAX_STICKS; i++) {
103-
ui->trimCB->addItem(Boards::getInputName(i, board));
104-
}
105-
}
106-
10787
ui->trimCB->setCurrentIndex(1 - md->carryTrim);
10888

109-
int namelength = firmware->getCapability(HasMixerNames);
110-
if (!namelength) {
111-
ui->label_name->hide();
112-
ui->mixerName->hide();
113-
}
114-
else {
115-
ui->mixerName->setMaxLength(namelength);
116-
}
89+
ui->mixerName->setMaxLength(MIXDATA_NAME_LEN);
11790
ui->mixerName->setValidator(new NameValidator(board, this));
11891
ui->mixerName->setText(md->name);
11992

12093
if (!firmware->getCapability(FlightModes)) {
12194
ui->label_phases->hide();
95+
12296
for (int i = 0; i < CPN_MAX_FLIGHT_MODES; i++) {
12397
lb_fp[i]->hide();
12498
cb_fp[i]->hide();
@@ -127,25 +101,29 @@ MixerDialog::MixerDialog(QWidget *parent, ModelData & model, MixData * mixdata,
127101
else {
128102
ui->label_phases->setToolTip(tr("Click to access popup menu"));
129103
ui->label_phases->setContextMenuPolicy(Qt::CustomContextMenu);
130-
connect(ui->label_phases, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(label_phases_customContextMenuRequested(const QPoint &)));
104+
connect(ui->label_phases, SIGNAL(customContextMenuRequested(const QPoint &)),
105+
this, SLOT(label_phases_customContextMenuRequested(const QPoint &)));
131106
int mask = 1;
107+
132108
for (int i = 0; i < CPN_MAX_FLIGHT_MODES ; i++) {
133109
if ((md->flightModes & mask) == 0) {
134110
cb_fp[i]->setChecked(true);
135111
}
112+
136113
mask <<= 1;
137114
}
115+
138116
for (int i = firmware->getCapability(FlightModes); i < CPN_MAX_FLIGHT_MODES; i++) {
139117
lb_fp[i]->hide();
140118
cb_fp[i]->hide();
141119
}
142120
}
143121

144-
imId = dialogFilteredItemModels->registerItemModel(new FilteredItemModel(sharedItemModels->getItemModel(AbstractItemModel::IMID_RawSwitch),
122+
int imId = dlgFIM->registerItemModel(new FilteredItemModel(sharedItemModels->getItemModel(AbstractItemModel::IMID_RawSwitch),
145123
RawSwitch::MixesContext),
146124
"RawSwitch");
147125
ui->switchesCB->setSizeAdjustPolicy(QComboBox::AdjustToContents);
148-
ui->switchesCB->setModel(dialogFilteredItemModels->getItemModel(imId));
126+
ui->switchesCB->setModel(dlgFIM->getItemModel(imId));
149127
ui->switchesCB->setCurrentIndex(ui->switchesCB->findData(md->swtch.toValue()));
150128
ui->warningCB->setCurrentIndex(md->mixWarn);
151129
ui->mltpxCB->setCurrentIndex(md->mltpx);
@@ -178,22 +156,20 @@ MixerDialog::MixerDialog(QWidget *parent, ModelData & model, MixData * mixdata,
178156

179157
valuesChanged();
180158

181-
connect(ui->mixerName, SIGNAL(editingFinished()), this, SLOT(valuesChanged()));
182-
connect(ui->sourceCB, SIGNAL(currentIndexChanged(int)), this, SLOT(valuesChanged()));
183-
connect(ui->trimCB, SIGNAL(currentIndexChanged(int)), this, SLOT(valuesChanged()));
184-
connect(ui->MixDR_CB, SIGNAL(toggled(bool)), this, SLOT(valuesChanged()));
185-
connect(ui->switchesCB, SIGNAL(currentIndexChanged(int)), this, SLOT(valuesChanged()));
186-
connect(ui->warningCB, SIGNAL(currentIndexChanged(int)), this, SLOT(valuesChanged()));
187-
connect(ui->mltpxCB, SIGNAL(currentIndexChanged(int)), this, SLOT(valuesChanged()));
188-
connect(ui->delayPrecCB, SIGNAL(currentIndexChanged(int)), this, SLOT(valuesChanged()));
189-
connect(ui->delayDownSB, SIGNAL(editingFinished()), this, SLOT(valuesChanged()));
190-
connect(ui->delayUpSB, SIGNAL(editingFinished()), this, SLOT(valuesChanged()));
191-
connect(ui->speedPrecCB, SIGNAL(currentIndexChanged(int)), this, SLOT(valuesChanged()));
192-
connect(ui->slowDownSB, SIGNAL(editingFinished()), this, SLOT(valuesChanged()));
193-
connect(ui->slowUpSB, SIGNAL(editingFinished()), this, SLOT(valuesChanged()));
159+
connect(ui->mixerName, &QLineEdit::editingFinished, this, &MixerDialog::valuesChanged);
160+
connect(ui->trimCB, &QComboBox::currentIndexChanged, this, &MixerDialog::valuesChanged);
161+
connect(ui->switchesCB, &QComboBox::currentIndexChanged, this, &MixerDialog::valuesChanged);
162+
connect(ui->warningCB, &QComboBox::currentIndexChanged, this, &MixerDialog::valuesChanged);
163+
connect(ui->mltpxCB, &QComboBox::currentIndexChanged, this, &MixerDialog::valuesChanged);
164+
connect(ui->delayPrecCB, &QComboBox::currentIndexChanged, this, &MixerDialog::valuesChanged);
165+
connect(ui->delayDownSB, &QDoubleSpinBox::editingFinished, this, &MixerDialog::valuesChanged);
166+
connect(ui->delayUpSB, &QDoubleSpinBox::editingFinished, this, &MixerDialog::valuesChanged);
167+
connect(ui->speedPrecCB, &QComboBox::currentIndexChanged, this, &MixerDialog::valuesChanged);
168+
connect(ui->slowDownSB, &QDoubleSpinBox::editingFinished, this, &MixerDialog::valuesChanged);
169+
connect(ui->slowUpSB, &QDoubleSpinBox::editingFinished, this, &MixerDialog::valuesChanged);
194170

195171
for (int i = 0; i < CPN_MAX_FLIGHT_MODES; i++) {
196-
connect(cb_fp[i], SIGNAL(toggled(bool)), this, SLOT(valuesChanged()));
172+
connect(cb_fp[i], &QCheckBox::toggled, this, &MixerDialog::valuesChanged);
197173
}
198174

199175
shrink();
@@ -202,10 +178,6 @@ MixerDialog::MixerDialog(QWidget *parent, ModelData & model, MixData * mixdata,
202178
MixerDialog::~MixerDialog()
203179
{
204180
delete ui;
205-
delete weightEditor;
206-
delete offsetEditor;
207-
delete dialogFilteredItemModels;
208-
delete curveRefFilteredItemModels;
209181
}
210182

211183
void MixerDialog::changeEvent(QEvent *e)
@@ -225,14 +197,7 @@ void MixerDialog::valuesChanged()
225197
{
226198
if (!lock) {
227199
lock = true;
228-
md->srcRaw = RawSource(ui->sourceCB->itemData(ui->sourceCB->currentIndex()).toInt());
229-
if (firmware->getCapability(HasNoExpo)) {
230-
bool drVisible = (md->srcRaw.type == SOURCE_TYPE_INPUT && md->srcRaw.index < CPN_MAX_STICKS);
231-
ui->MixDR_CB->setEnabled(drVisible);
232-
ui->label_MixDR->setEnabled(drVisible);
233-
}
234200
md->carryTrim = -(ui->trimCB->currentIndex() - 1);
235-
md->noExpo = ui->MixDR_CB->checkState() ? 0 : 1;
236201
md->swtch = RawSwitch(ui->switchesCB->itemData(ui->switchesCB->currentIndex()).toInt());
237202
md->mixWarn = ui->warningCB->currentIndex();
238203
md->mltpx = (MltpxValue)ui->mltpxCB->currentIndex();
@@ -245,7 +210,7 @@ void MixerDialog::valuesChanged()
245210
md->delayDown = round(ui->delayDownSB->value() * scale);
246211
md->delayUp = round(ui->delayUpSB->value() * scale);
247212

248-
// Get new precion and update controls
213+
// Get new precision and update controls
249214
md->delayPrec = ui->delayPrecCB->currentIndex();
250215
scale = firmware->getCapability(SlowScale);
251216
if (md->delayPrec) scale = scale * 10;

companion/src/modeledit/mixerdialog.h

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,8 @@ class CompoundItemModelFactory;
2828
class FilteredItemModelFactory;
2929
class CurveRefFilteredFactory;
3030
class CurveReferenceUIManager;
31-
class SourceNumRefEditor;
31+
class RawSourceWidget;
32+
class CurveReferenceWidget;
3233

3334
namespace Ui {
3435
class MixerDialog;
@@ -58,12 +59,8 @@ class MixerDialog : public QDialog {
5859
Firmware * firmware;
5960
MixData *md;
6061
bool lock;
61-
SourceNumRefEditor * weightEditor;
62-
SourceNumRefEditor * offsetEditor;
63-
CurveReferenceUIManager * curveGroup;
6462
QCheckBox * cb_fp[CPN_MAX_FLIGHT_MODES];
65-
FilteredItemModelFactory *dialogFilteredItemModels;
66-
CurveRefFilteredFactory *curveRefFilteredItemModels;
63+
FilteredItemModelFactory *dlgFIM;
6764

6865
void shrink();
6966
};

0 commit comments

Comments
 (0)