Mixes create filtered lists once
This commit is contained in:
@@ -25,7 +25,7 @@
|
|||||||
#include "helpers.h"
|
#include "helpers.h"
|
||||||
|
|
||||||
MixerDialog::MixerDialog(QWidget *parent, ModelData & model, MixData * mixdata, GeneralSettings & generalSettings, Firmware * firmware,
|
MixerDialog::MixerDialog(QWidget *parent, ModelData & model, MixData * mixdata, GeneralSettings & generalSettings, Firmware * firmware,
|
||||||
RawSourceItemModel * rawSourceItemModel, RawSwitchItemModel * rawSwitchItemModel) :
|
RawItemFilteredModel * rawSourceModel, RawItemFilteredModel * rawSwitchModel) :
|
||||||
QDialog(parent),
|
QDialog(parent),
|
||||||
ui(new Ui::MixerDialog),
|
ui(new Ui::MixerDialog),
|
||||||
model(model),
|
model(model),
|
||||||
@@ -35,17 +35,15 @@ MixerDialog::MixerDialog(QWidget *parent, ModelData & model, MixData * mixdata,
|
|||||||
lock(false)
|
lock(false)
|
||||||
{
|
{
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
rawSourceModel = new RawItemFilteredModel(rawSourceItemModel, RawSource::InputSourceGroups | RawSource::ScriptsGroup, this);
|
|
||||||
rawSwitchModel = new RawItemFilteredModel(rawSwitchItemModel, RawSwitch::MixesContext, this);
|
|
||||||
|
|
||||||
QRegExp rx(CHAR_FOR_NAMES_REGEX);
|
QRegExp rx(CHAR_FOR_NAMES_REGEX);
|
||||||
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 };
|
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 };
|
||||||
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 };
|
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 };
|
||||||
for (int i=0; i<CPN_MAX_FLIGHT_MODES; i++) {
|
for (int i = 0; i < CPN_MAX_FLIGHT_MODES; i++) {
|
||||||
cb_fp[i] = tmp[i];
|
cb_fp[i] = tmp[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
this->setWindowTitle(tr("DEST -> %1").arg(RawSource(SOURCE_TYPE_CH, md->destCh-1).toString(&model, &generalSettings)));
|
this->setWindowTitle(tr("DEST -> %1").arg(RawSource(SOURCE_TYPE_CH, md->destCh - 1).toString(&model, &generalSettings)));
|
||||||
|
|
||||||
ui->sourceCB->setModel(rawSourceModel);
|
ui->sourceCB->setModel(rawSourceModel);
|
||||||
ui->sourceCB->setCurrentIndex(ui->sourceCB->findData(md->srcRaw.toValue()));
|
ui->sourceCB->setCurrentIndex(ui->sourceCB->findData(md->srcRaw.toValue()));
|
||||||
@@ -66,7 +64,7 @@ MixerDialog::MixerDialog(QWidget *parent, ModelData & model, MixData * mixdata,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!firmware->getCapability(VirtualInputs)) {
|
if (!firmware->getCapability(VirtualInputs)) {
|
||||||
for(int i=0; i < CPN_MAX_STICKS; i++) {
|
for(int i = 0; i < CPN_MAX_STICKS; i++) {
|
||||||
ui->trimCB->addItem(firmware->getAnalogInputName(i));
|
ui->trimCB->addItem(firmware->getAnalogInputName(i));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -86,7 +84,7 @@ MixerDialog::MixerDialog(QWidget *parent, ModelData & model, MixData * mixdata,
|
|||||||
|
|
||||||
if (!firmware->getCapability(FlightModes)) {
|
if (!firmware->getCapability(FlightModes)) {
|
||||||
ui->label_phases->hide();
|
ui->label_phases->hide();
|
||||||
for (int i=0; i<CPN_MAX_FLIGHT_MODES; i++) {
|
for (int i = 0; i < CPN_MAX_FLIGHT_MODES; i++) {
|
||||||
lb_fp[i]->hide();
|
lb_fp[i]->hide();
|
||||||
cb_fp[i]->hide();
|
cb_fp[i]->hide();
|
||||||
}
|
}
|
||||||
@@ -96,13 +94,13 @@ MixerDialog::MixerDialog(QWidget *parent, ModelData & model, MixData * mixdata,
|
|||||||
ui->label_phases->setContextMenuPolicy(Qt::CustomContextMenu);
|
ui->label_phases->setContextMenuPolicy(Qt::CustomContextMenu);
|
||||||
connect(ui->label_phases, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(label_phases_customContextMenuRequested(const QPoint &)));
|
connect(ui->label_phases, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(label_phases_customContextMenuRequested(const QPoint &)));
|
||||||
int mask = 1;
|
int mask = 1;
|
||||||
for (int i=0; i<CPN_MAX_FLIGHT_MODES ; i++) {
|
for (int i = 0; i < CPN_MAX_FLIGHT_MODES ; i++) {
|
||||||
if ((md->flightModes & mask) == 0) {
|
if ((md->flightModes & mask) == 0) {
|
||||||
cb_fp[i]->setChecked(true);
|
cb_fp[i]->setChecked(true);
|
||||||
}
|
}
|
||||||
mask <<= 1;
|
mask <<= 1;
|
||||||
}
|
}
|
||||||
for (int i=firmware->getCapability(FlightModes); i<CPN_MAX_FLIGHT_MODES; i++) {
|
for (int i = firmware->getCapability(FlightModes); i < CPN_MAX_FLIGHT_MODES; i++) {
|
||||||
lb_fp[i]->hide();
|
lb_fp[i]->hide();
|
||||||
cb_fp[i]->hide();
|
cb_fp[i]->hide();
|
||||||
}
|
}
|
||||||
@@ -114,22 +112,22 @@ MixerDialog::MixerDialog(QWidget *parent, ModelData & model, MixData * mixdata,
|
|||||||
ui->mltpxCB->setCurrentIndex(md->mltpx);
|
ui->mltpxCB->setCurrentIndex(md->mltpx);
|
||||||
int scale=firmware->getCapability(SlowScale);
|
int scale=firmware->getCapability(SlowScale);
|
||||||
float range=firmware->getCapability(SlowRange);
|
float range=firmware->getCapability(SlowRange);
|
||||||
ui->slowDownSB->setMaximum(range/scale);
|
ui->slowDownSB->setMaximum(range / scale);
|
||||||
ui->slowDownSB->setSingleStep(1.0/scale);
|
ui->slowDownSB->setSingleStep(1.0 / scale);
|
||||||
ui->slowDownSB->setDecimals((scale==1 ? 0 :1));
|
ui->slowDownSB->setDecimals((scale == 1 ? 0 : 1));
|
||||||
ui->slowDownSB->setValue((float)md->speedDown/scale);
|
ui->slowDownSB->setValue((float)md->speedDown/scale);
|
||||||
ui->slowUpSB->setMaximum(range/scale);
|
ui->slowUpSB->setMaximum(range / scale);
|
||||||
ui->slowUpSB->setSingleStep(1.0/scale);
|
ui->slowUpSB->setSingleStep(1.0 / scale);
|
||||||
ui->slowUpSB->setDecimals((scale==1 ? 0 :1));
|
ui->slowUpSB->setDecimals((scale == 1 ? 0 : 1));
|
||||||
ui->slowUpSB->setValue((float)md->speedUp/scale);
|
ui->slowUpSB->setValue((float)md->speedUp/scale);
|
||||||
ui->delayDownSB->setMaximum(range/scale);
|
ui->delayDownSB->setMaximum(range / scale);
|
||||||
ui->delayDownSB->setSingleStep(1.0/scale);
|
ui->delayDownSB->setSingleStep(1.0 / scale);
|
||||||
ui->delayDownSB->setDecimals((scale==1 ? 0 :1));
|
ui->delayDownSB->setDecimals((scale == 1 ? 0 : 1));
|
||||||
ui->delayDownSB->setValue((float)md->delayDown/scale);
|
ui->delayDownSB->setValue((float)md->delayDown / scale);
|
||||||
ui->delayUpSB->setMaximum(range/scale);
|
ui->delayUpSB->setMaximum(range / scale);
|
||||||
ui->delayUpSB->setSingleStep(1.0/scale);
|
ui->delayUpSB->setSingleStep(1.0 / scale);
|
||||||
ui->delayUpSB->setDecimals((scale==1 ? 0 :1));
|
ui->delayUpSB->setDecimals((scale == 1 ? 0 : 1));
|
||||||
ui->delayUpSB->setValue((float)md->delayUp/scale);
|
ui->delayUpSB->setValue((float)md->delayUp / scale);
|
||||||
QTimer::singleShot(0, this, SLOT(shrink()));
|
QTimer::singleShot(0, this, SLOT(shrink()));
|
||||||
|
|
||||||
valuesChanged();
|
valuesChanged();
|
||||||
@@ -154,8 +152,6 @@ MixerDialog::~MixerDialog()
|
|||||||
delete gvWeightGroup;
|
delete gvWeightGroup;
|
||||||
delete gvOffsetGroup;
|
delete gvOffsetGroup;
|
||||||
delete curveGroup;
|
delete curveGroup;
|
||||||
delete rawSourceModel;
|
|
||||||
delete rawSwitchModel;
|
|
||||||
delete ui;
|
delete ui;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -182,20 +178,20 @@ void MixerDialog::valuesChanged()
|
|||||||
ui->MixDR_CB->setEnabled(drVisible);
|
ui->MixDR_CB->setEnabled(drVisible);
|
||||||
ui->label_MixDR->setEnabled(drVisible);
|
ui->label_MixDR->setEnabled(drVisible);
|
||||||
}
|
}
|
||||||
md->carryTrim = -(ui->trimCB->currentIndex()-1);
|
md->carryTrim = -(ui->trimCB->currentIndex() - 1);
|
||||||
md->noExpo = ui->MixDR_CB->checkState() ? 0 : 1;
|
md->noExpo = ui->MixDR_CB->checkState() ? 0 : 1;
|
||||||
md->swtch = RawSwitch(ui->switchesCB->itemData(ui->switchesCB->currentIndex()).toInt());
|
md->swtch = RawSwitch(ui->switchesCB->itemData(ui->switchesCB->currentIndex()).toInt());
|
||||||
md->mixWarn = ui->warningCB->currentIndex();
|
md->mixWarn = ui->warningCB->currentIndex();
|
||||||
md->mltpx = (MltpxValue)ui->mltpxCB->currentIndex();
|
md->mltpx = (MltpxValue)ui->mltpxCB->currentIndex();
|
||||||
int scale = firmware->getCapability(SlowScale);
|
int scale = firmware->getCapability(SlowScale);
|
||||||
md->delayDown = round(ui->delayDownSB->value()*scale);
|
md->delayDown = round(ui->delayDownSB->value() * scale);
|
||||||
md->delayUp = round(ui->delayUpSB->value()*scale);
|
md->delayUp = round(ui->delayUpSB->value() * scale);
|
||||||
md->speedDown = round(ui->slowDownSB->value()*scale);
|
md->speedDown = round(ui->slowDownSB->value() * scale);
|
||||||
md->speedUp = round(ui->slowUpSB->value()*scale);
|
md->speedUp = round(ui->slowUpSB->value() * scale);
|
||||||
strcpy(md->name, ui->mixerName->text().toLatin1());
|
strcpy(md->name, ui->mixerName->text().toLatin1());
|
||||||
|
|
||||||
md->flightModes = 0;
|
md->flightModes = 0;
|
||||||
for (int i=CPN_MAX_FLIGHT_MODES-1; i>=0 ; i--) {
|
for (int i = CPN_MAX_FLIGHT_MODES-1; i >= 0 ; i--) {
|
||||||
if (!cb_fp[i]->checkState()) {
|
if (!cb_fp[i]->checkState()) {
|
||||||
md->flightModes++;
|
md->flightModes++;
|
||||||
}
|
}
|
||||||
@@ -226,7 +222,7 @@ void MixerDialog::label_phases_customContextMenuRequested(const QPoint & pos)
|
|||||||
void MixerDialog::fmClearAll()
|
void MixerDialog::fmClearAll()
|
||||||
{
|
{
|
||||||
lock = true;
|
lock = true;
|
||||||
for (int i=0; i<CPN_MAX_FLIGHT_MODES; i++) {
|
for (int i = 0; i < CPN_MAX_FLIGHT_MODES; i++) {
|
||||||
cb_fp[i]->setChecked(false);
|
cb_fp[i]->setChecked(false);
|
||||||
}
|
}
|
||||||
lock = false;
|
lock = false;
|
||||||
@@ -236,7 +232,7 @@ void MixerDialog::fmClearAll()
|
|||||||
void MixerDialog::fmSetAll()
|
void MixerDialog::fmSetAll()
|
||||||
{
|
{
|
||||||
lock = true;
|
lock = true;
|
||||||
for (int i=0; i<CPN_MAX_FLIGHT_MODES; i++) {
|
for (int i = 0; i < CPN_MAX_FLIGHT_MODES; i++) {
|
||||||
cb_fp[i]->setChecked(true);
|
cb_fp[i]->setChecked(true);
|
||||||
}
|
}
|
||||||
lock = false;
|
lock = false;
|
||||||
@@ -246,7 +242,7 @@ void MixerDialog::fmSetAll()
|
|||||||
void MixerDialog::fmInvertAll()
|
void MixerDialog::fmInvertAll()
|
||||||
{
|
{
|
||||||
lock = true;
|
lock = true;
|
||||||
for (int i=0; i<CPN_MAX_FLIGHT_MODES; i++) {
|
for (int i = 0; i < CPN_MAX_FLIGHT_MODES; i++) {
|
||||||
cb_fp[i]->setChecked(!cb_fp[i]->isChecked());
|
cb_fp[i]->setChecked(!cb_fp[i]->isChecked());
|
||||||
}
|
}
|
||||||
lock = false;
|
lock = false;
|
||||||
|
|||||||
@@ -26,8 +26,6 @@
|
|||||||
|
|
||||||
class GVarGroup;
|
class GVarGroup;
|
||||||
class CurveGroup;
|
class CurveGroup;
|
||||||
class RawSourceItemModel;
|
|
||||||
class RawSwitchItemModel;
|
|
||||||
class RawItemFilteredModel;
|
class RawItemFilteredModel;
|
||||||
|
|
||||||
namespace Ui {
|
namespace Ui {
|
||||||
@@ -38,7 +36,7 @@ class MixerDialog : public QDialog {
|
|||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
MixerDialog(QWidget *parent, ModelData & model, MixData *mixdata, GeneralSettings & generalSettings, Firmware * firmware,
|
MixerDialog(QWidget *parent, ModelData & model, MixData *mixdata, GeneralSettings & generalSettings, Firmware * firmware,
|
||||||
RawSourceItemModel * rawSourceItemModel, RawSwitchItemModel * rawSwitchItemModel);
|
RawItemFilteredModel * rawSourceModel, RawItemFilteredModel * rawSwitchModel);
|
||||||
~MixerDialog();
|
~MixerDialog();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
@@ -63,8 +61,6 @@ class MixerDialog : public QDialog {
|
|||||||
GVarGroup * gvOffsetGroup;
|
GVarGroup * gvOffsetGroup;
|
||||||
CurveGroup * curveGroup;
|
CurveGroup * curveGroup;
|
||||||
QCheckBox * cb_fp[CPN_MAX_FLIGHT_MODES];
|
QCheckBox * cb_fp[CPN_MAX_FLIGHT_MODES];
|
||||||
RawItemFilteredModel * rawSourceModel;
|
|
||||||
RawItemFilteredModel * rawSwitchModel;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // _MIXERDIALOG_H_
|
#endif // _MIXERDIALOG_H_
|
||||||
|
|||||||
@@ -20,16 +20,23 @@
|
|||||||
|
|
||||||
#include "mixes.h"
|
#include "mixes.h"
|
||||||
#include "helpers.h"
|
#include "helpers.h"
|
||||||
|
#include "rawitemfilteredmodel.h"
|
||||||
|
|
||||||
MixesPanel::MixesPanel(QWidget *parent, ModelData & model, GeneralSettings & generalSettings, Firmware * firmware,
|
MixesPanel::MixesPanel(QWidget *parent, ModelData & model, GeneralSettings & generalSettings, Firmware * firmware,
|
||||||
RawSourceItemModel * rawSourceItemModel, RawSwitchItemModel * rawSwitchItemModel):
|
RawSourceItemModel * rawSourceItemModel, RawSwitchItemModel * rawSwitchItemModel):
|
||||||
ModelPanel(parent, model, generalSettings, firmware),
|
ModelPanel(parent, model, generalSettings, firmware),
|
||||||
mixInserted(false),
|
mixInserted(false),
|
||||||
highlightedSource(0),
|
highlightedSource(0),
|
||||||
modelPrinter(firmware, generalSettings, model),
|
modelPrinter(firmware, generalSettings, model)
|
||||||
rawSourceItemModel(rawSourceItemModel),
|
|
||||||
rawSwitchItemModel(rawSwitchItemModel)
|
|
||||||
{
|
{
|
||||||
|
rawSourceModel = new RawItemFilteredModel(rawSourceItemModel, RawSource::InputSourceGroups | RawSource::ScriptsGroup, this);
|
||||||
|
connect(rawSourceModel, &RawItemFilteredModel::dataAboutToBeUpdated, this, &MixesPanel::onModelDataAboutToBeUpdated);
|
||||||
|
connect(rawSourceModel, &RawItemFilteredModel::dataUpdateComplete, this, &MixesPanel::onModelDataUpdateComplete);
|
||||||
|
|
||||||
|
rawSwitchModel = new RawItemFilteredModel(rawSwitchItemModel, RawSwitch::MixesContext, this);
|
||||||
|
connect(rawSwitchModel, &RawItemFilteredModel::dataAboutToBeUpdated, this, &MixesPanel::onModelDataAboutToBeUpdated);
|
||||||
|
connect(rawSwitchModel, &RawItemFilteredModel::dataUpdateComplete, this, &MixesPanel::onModelDataUpdateComplete);
|
||||||
|
|
||||||
QGridLayout * mixesLayout = new QGridLayout(this);
|
QGridLayout * mixesLayout = new QGridLayout(this);
|
||||||
|
|
||||||
mixersListWidget = new MixersListWidget(this, false); // TODO enum
|
mixersListWidget = new MixersListWidget(this, false); // TODO enum
|
||||||
@@ -63,6 +70,8 @@ MixesPanel::MixesPanel(QWidget *parent, ModelData & model, GeneralSettings & gen
|
|||||||
|
|
||||||
MixesPanel::~MixesPanel()
|
MixesPanel::~MixesPanel()
|
||||||
{
|
{
|
||||||
|
delete rawSourceModel;
|
||||||
|
delete rawSwitchModel;
|
||||||
}
|
}
|
||||||
|
|
||||||
void MixesPanel::update()
|
void MixesPanel::update()
|
||||||
@@ -178,7 +187,7 @@ void MixesPanel::gm_openMix(int index)
|
|||||||
|
|
||||||
MixData mixd(model->mixData[index]);
|
MixData mixd(model->mixData[index]);
|
||||||
|
|
||||||
MixerDialog *g = new MixerDialog(this, *model, &mixd, generalSettings, firmware, rawSourceItemModel, rawSwitchItemModel);
|
MixerDialog *g = new MixerDialog(this, *model, &mixd, generalSettings, firmware, rawSourceModel, rawSwitchModel);
|
||||||
if(g->exec()) {
|
if(g->exec()) {
|
||||||
model->mixData[index] = mixd;
|
model->mixData[index] = mixd;
|
||||||
emit modified();
|
emit modified();
|
||||||
@@ -532,3 +541,13 @@ void MixesPanel::clearMixes()
|
|||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MixesPanel::onModelDataAboutToBeUpdated()
|
||||||
|
{
|
||||||
|
lock = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void MixesPanel::onModelDataUpdateComplete()
|
||||||
|
{
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
|||||||
@@ -25,7 +25,10 @@
|
|||||||
#include "mixerslistwidget.h"
|
#include "mixerslistwidget.h"
|
||||||
#include "mixerdialog.h"
|
#include "mixerdialog.h"
|
||||||
#include "modelprinter.h"
|
#include "modelprinter.h"
|
||||||
#include "rawitemdatamodels.h"
|
|
||||||
|
class RawSourceItemModel;
|
||||||
|
class RawSwitchItemModel;
|
||||||
|
class RawItemFilteredModel;
|
||||||
|
|
||||||
class MixesPanel : public ModelPanel
|
class MixesPanel : public ModelPanel
|
||||||
{
|
{
|
||||||
@@ -52,7 +55,6 @@ class MixesPanel : public ModelPanel
|
|||||||
void moveMixDown();
|
void moveMixDown();
|
||||||
void mixerHighlight();
|
void mixerHighlight();
|
||||||
|
|
||||||
|
|
||||||
void mixerlistWidget_customContextMenuRequested(QPoint pos);
|
void mixerlistWidget_customContextMenuRequested(QPoint pos);
|
||||||
void mixerlistWidget_doubleClicked(QModelIndex index);
|
void mixerlistWidget_doubleClicked(QModelIndex index);
|
||||||
void mixerlistWidget_KeyPress(QKeyEvent *event);
|
void mixerlistWidget_KeyPress(QKeyEvent *event);
|
||||||
@@ -60,13 +62,16 @@ class MixesPanel : public ModelPanel
|
|||||||
void mimeMixerDropped(int index, const QMimeData *data, Qt::DropAction action);
|
void mimeMixerDropped(int index, const QMimeData *data, Qt::DropAction action);
|
||||||
void pasteMixerMimeData(const QMimeData * mimeData, int destIdx);
|
void pasteMixerMimeData(const QMimeData * mimeData, int destIdx);
|
||||||
|
|
||||||
|
void onModelDataAboutToBeUpdated();
|
||||||
|
void onModelDataUpdateComplete();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
MixersListWidget * mixersListWidget;
|
MixersListWidget * mixersListWidget;
|
||||||
bool mixInserted;
|
bool mixInserted;
|
||||||
unsigned int highlightedSource;
|
unsigned int highlightedSource;
|
||||||
ModelPrinter modelPrinter;
|
ModelPrinter modelPrinter;
|
||||||
RawSourceItemModel *rawSourceItemModel;
|
RawItemFilteredModel *rawSourceModel;
|
||||||
RawSwitchItemModel *rawSwitchItemModel;
|
RawItemFilteredModel *rawSwitchModel;
|
||||||
|
|
||||||
int getMixerIndex(unsigned int dch);
|
int getMixerIndex(unsigned int dch);
|
||||||
bool gm_insertMix(int idx);
|
bool gm_insertMix(int idx);
|
||||||
|
|||||||
Reference in New Issue
Block a user