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,
202178MixerDialog::~MixerDialog ()
203179{
204180 delete ui;
205- delete weightEditor;
206- delete offsetEditor;
207- delete dialogFilteredItemModels;
208- delete curveRefFilteredItemModels;
209181}
210182
211183void 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 ;
0 commit comments