Curve reference add ui data models and fix invalid memory crashes
This commit is contained in:
@@ -505,3 +505,27 @@ void dumpModelContents(QString desc, AbstractRawItemDataModel * dataModel)
|
||||
else
|
||||
qDebug() << "model:" << desc << "did not cast";
|
||||
}
|
||||
|
||||
CurveRefTypeItemModel::CurveRefTypeItemModel(QObject * parent) :
|
||||
AbstractStandardItemModel(parent)
|
||||
{
|
||||
for (int i = 0; i <= CurveReference::MAX_CURVE_REF_TYPE; i++) {
|
||||
QStandardItem * modelItem = new QStandardItem();
|
||||
modelItem->setText(CurveReference::typeToString((CurveReference::CurveRefType)i));
|
||||
modelItem->setData(i, ItemIdRole);
|
||||
modelItem->setData(CurveReference::isTypeAvailable((CurveReference::CurveRefType)i), IsAvailableRole);
|
||||
appendRow(modelItem);
|
||||
}
|
||||
}
|
||||
|
||||
CurveRefFuncItemModel::CurveRefFuncItemModel(QObject * parent) :
|
||||
AbstractStandardItemModel(parent)
|
||||
{
|
||||
for (int i = 1; i <= CurveReference::functionCount(); i++) {
|
||||
QStandardItem * modelItem = new QStandardItem();
|
||||
modelItem->setText(CurveReference::functionToString(i));
|
||||
modelItem->setData(i, ItemIdRole);
|
||||
modelItem->setData(CurveReference::isFunctionAvailable(i), IsAvailableRole);
|
||||
appendRow(modelItem);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,11 +30,20 @@ class GeneralSettings;
|
||||
class ModelData;
|
||||
class AdjustmentReference;
|
||||
|
||||
class AbstractRawItemDataModel: public QStandardItemModel
|
||||
class AbstractStandardItemModel: public QStandardItemModel
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
enum DataRoles { ItemIdRole = Qt::UserRole, ItemTypeRole, ItemFlagsRole, IsAvailableRole };
|
||||
explicit AbstractStandardItemModel(QObject * parent = nullptr) :
|
||||
QStandardItemModel(parent)
|
||||
{}
|
||||
|
||||
enum DataRoles {
|
||||
ItemIdRole = Qt::UserRole,
|
||||
ItemTypeRole,
|
||||
ItemFlagsRole,
|
||||
IsAvailableRole
|
||||
};
|
||||
Q_ENUM(DataRoles)
|
||||
|
||||
enum DataGroups {
|
||||
@@ -43,9 +52,14 @@ class AbstractRawItemDataModel: public QStandardItemModel
|
||||
PositiveGroup = 0x04
|
||||
};
|
||||
Q_ENUM(DataGroups)
|
||||
};
|
||||
|
||||
class AbstractRawItemDataModel: public AbstractStandardItemModel
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit AbstractRawItemDataModel(const GeneralSettings * const generalSettings, const ModelData * const modelData, QObject * parent = nullptr) :
|
||||
QStandardItemModel(parent),
|
||||
AbstractStandardItemModel(parent),
|
||||
generalSettings(generalSettings),
|
||||
modelData(modelData)
|
||||
{}
|
||||
@@ -221,4 +235,20 @@ class CommonItemModels: public QObject
|
||||
|
||||
void dumpModelContents(QString desc, AbstractRawItemDataModel * dataModel);
|
||||
|
||||
|
||||
class CurveRefTypeItemModel : public AbstractStandardItemModel
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit CurveRefTypeItemModel(QObject * parent = nullptr);
|
||||
};
|
||||
|
||||
class CurveRefFuncItemModel : public AbstractStandardItemModel
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit CurveRefFuncItemModel(QObject * parent = nullptr);
|
||||
};
|
||||
|
||||
|
||||
#endif // RAWITEMDATAMODELS_H
|
||||
|
||||
@@ -91,8 +91,6 @@ QString CurveReference::typeToString(const CurveRefType type)
|
||||
return strl.at(idx);
|
||||
}
|
||||
|
||||
constexpr int MAX_CURVE_REF_FUNC { 6 };
|
||||
|
||||
// static
|
||||
QString CurveReference::functionToString(const int value)
|
||||
{
|
||||
@@ -105,25 +103,50 @@ QString CurveReference::functionToString(const int value)
|
||||
return strl.at(idx);
|
||||
}
|
||||
|
||||
/*
|
||||
// static
|
||||
bool CurveReference::isTypeAvailable(const CurveRefType type)
|
||||
{
|
||||
bool ret = false;
|
||||
Firmware * fw = getCurrentFirmware();
|
||||
|
||||
switch(type) {
|
||||
case CURVE_REF_DIFF:
|
||||
if (fw->getCapability(HasInputDiff))
|
||||
ret = true;
|
||||
break;
|
||||
case CURVE_REF_EXPO:
|
||||
if (fw->getCapability(HasMixerExpo))
|
||||
ret = true;
|
||||
break;
|
||||
case CURVE_REF_FUNC:
|
||||
case CURVE_REF_CUSTOM:
|
||||
ret = true;
|
||||
break;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
// static
|
||||
bool CurveReference::isFunctionAvailable(const int value)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
// static
|
||||
int CurveReference::functionCount()
|
||||
{
|
||||
return 6;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* CurveReferenceUIManager
|
||||
*/
|
||||
|
||||
constexpr int CURVE_REF_UI_HIDE_DIFF { 0x01 };
|
||||
constexpr int CURVE_REF_UI_HIDE_EXPO { 0x02 };
|
||||
constexpr int CURVE_REF_UI_HIDE_NEGATIVE_CURVES { 0x04 };
|
||||
|
||||
// static
|
||||
bool CurveReferenceUIManager::firsttime { true };
|
||||
int CurveReferenceUIManager::flags { 0 };
|
||||
bool CurveReferenceUIManager::hasCapabilityGvars { false };
|
||||
int CurveReferenceUIManager::numCurves { 0 };
|
||||
RawItemFilteredModel * CurveReferenceUIManager::curveItemModel { nullptr };
|
||||
QStandardItemModel * CurveReferenceUIManager::tempModel { nullptr };
|
||||
|
||||
CurveReferenceUIManager::CurveReferenceUIManager(QComboBox * curveValueCB, CurveReference & curve, const ModelData & model,
|
||||
RawItemFilteredModel * curveItemModel, QObject * parent) :
|
||||
RawItemFilteredModel * curveItemModel, RawItemFilteredModel * gvarItemModel,
|
||||
QObject * parent) :
|
||||
QObject(parent),
|
||||
curveTypeCB(nullptr),
|
||||
curveGVarCB(nullptr),
|
||||
@@ -131,14 +154,17 @@ CurveReferenceUIManager::CurveReferenceUIManager(QComboBox * curveValueCB, Curve
|
||||
curveValueCB(curveValueCB),
|
||||
curve(curve),
|
||||
model(model),
|
||||
lock(false)
|
||||
lock(false),
|
||||
curveItemModel(curveItemModel),
|
||||
gvarItemModel(gvarItemModel)
|
||||
{
|
||||
init(curveItemModel);
|
||||
init(parent);
|
||||
}
|
||||
|
||||
CurveReferenceUIManager::CurveReferenceUIManager(QComboBox * curveTypeCB, QCheckBox * curveGVarCB, QSpinBox * curveValueSB,
|
||||
QComboBox * curveValueCB, CurveReference & curve, const ModelData & model,
|
||||
RawItemFilteredModel * curveItemModel, QObject * parent) :
|
||||
RawItemFilteredModel * curveItemModel, RawItemFilteredModel * gvarItemModel,
|
||||
QObject * parent) :
|
||||
QObject(parent),
|
||||
curveTypeCB(curveTypeCB),
|
||||
curveGVarCB(curveGVarCB),
|
||||
@@ -146,36 +172,25 @@ CurveReferenceUIManager::CurveReferenceUIManager(QComboBox * curveTypeCB, QCheck
|
||||
curveValueCB(curveValueCB),
|
||||
curve(curve),
|
||||
model(model),
|
||||
lock(false)
|
||||
lock(false),
|
||||
curveItemModel(curveItemModel),
|
||||
gvarItemModel(gvarItemModel)
|
||||
{
|
||||
init(curveItemModel);
|
||||
init(parent);
|
||||
}
|
||||
|
||||
CurveReferenceUIManager::~CurveReferenceUIManager()
|
||||
{
|
||||
delete tempModel;
|
||||
}
|
||||
|
||||
void CurveReferenceUIManager::init(RawItemFilteredModel * curveModel)
|
||||
void CurveReferenceUIManager::init(QObject * parent)
|
||||
{
|
||||
tempModel = new QStandardItemModel();
|
||||
|
||||
if (firsttime) {
|
||||
firsttime = false;
|
||||
Firmware * fw = getCurrentFirmware();
|
||||
hasCapabilityGvars = fw->getCapability(Gvars);
|
||||
numCurves = fw->getCapability(NumCurves);
|
||||
curveItemModel = curveModel;
|
||||
|
||||
if (!fw->getCapability(HasInputDiff))
|
||||
flags |= (CURVE_REF_UI_HIDE_DIFF | CURVE_REF_UI_HIDE_NEGATIVE_CURVES);
|
||||
|
||||
if (!fw->getCapability(HasMixerExpo))
|
||||
flags |= CURVE_REF_UI_HIDE_EXPO;
|
||||
}
|
||||
hasCapabilityGvars = getCurrentFirmware()->getCapability(Gvars);
|
||||
|
||||
if (curveTypeCB) {
|
||||
populateTypeCB(curveTypeCB, curve);
|
||||
typeItemModel = new RawItemFilteredModel(new CurveRefTypeItemModel(parent), parent);
|
||||
curveTypeCB->setModel(typeItemModel);
|
||||
curveTypeCB->setCurrentIndex(curveTypeCB->findData((int)curve.type));
|
||||
connect(curveTypeCB, SIGNAL(currentIndexChanged(int)), this, SLOT(typeChanged(int)));
|
||||
}
|
||||
|
||||
@@ -188,9 +203,12 @@ void CurveReferenceUIManager::init(RawItemFilteredModel * curveModel)
|
||||
connect(curveValueSB, SIGNAL(editingFinished()), this, SLOT(valueSBChanged()));
|
||||
}
|
||||
|
||||
curveValueCB->setSizeAdjustPolicy(QComboBox::AdjustToContents);
|
||||
curveValueCB->setMaxVisibleItems(10);
|
||||
connect(curveValueCB, SIGNAL(currentIndexChanged(int)), this, SLOT(valueCBChanged()));
|
||||
if (curveValueCB) {
|
||||
funcItemModel = new RawItemFilteredModel(new CurveRefFuncItemModel(parent), parent);
|
||||
curveValueCB->setSizeAdjustPolicy(QComboBox::AdjustToContents);
|
||||
curveValueCB->setMaxVisibleItems(10);
|
||||
connect(curveValueCB, SIGNAL(currentIndexChanged(int)), this, SLOT(valueCBChanged()));
|
||||
}
|
||||
|
||||
update();
|
||||
}
|
||||
@@ -231,7 +249,7 @@ void CurveReferenceUIManager::update()
|
||||
curveValueSB->setVisible(widgetsMask & CURVE_REF_UI_VALUE_SHOW);
|
||||
if(curveValueCB) {
|
||||
if (curve.isValueReference())
|
||||
populateValueCB(curveValueCB, curve, &model);
|
||||
populateValueCB(curveValueCB);
|
||||
curveValueCB->setVisible(widgetsMask & CURVE_REF_UI_REF_SHOW);
|
||||
}
|
||||
|
||||
@@ -271,39 +289,16 @@ void CurveReferenceUIManager::valueCBChanged()
|
||||
}
|
||||
}
|
||||
|
||||
// static
|
||||
void CurveReferenceUIManager::populateTypeCB(QComboBox * cb, const CurveReference & curveRef)
|
||||
void CurveReferenceUIManager::populateValueCB(QComboBox * cb)
|
||||
{
|
||||
if (cb) {
|
||||
cb->clear();
|
||||
for (int i = 0; i <= CurveReference::MAX_CURVE_REF_TYPE; i++) {
|
||||
if ((curveRef.type == CurveReference::CURVE_REF_DIFF && !(flags & CURVE_REF_UI_HIDE_DIFF)) ||
|
||||
(curveRef.type == CurveReference::CURVE_REF_EXPO && !(flags & CURVE_REF_UI_HIDE_EXPO)) ||
|
||||
(curveRef.type != CurveReference::CURVE_REF_DIFF && curveRef.type != CurveReference::CURVE_REF_EXPO))
|
||||
cb->addItem(CurveReference::typeToString((CurveReference::CurveRefType)i), i);
|
||||
}
|
||||
|
||||
cb->setCurrentIndex(cb->findData((int)curveRef.type));
|
||||
}
|
||||
}
|
||||
|
||||
// static
|
||||
void CurveReferenceUIManager::populateValueCB(QComboBox * cb, const CurveReference & curveRef, const ModelData * model)
|
||||
{
|
||||
if (cb) {
|
||||
cb->setModel(tempModel); // do not want to clear/alter the shared curves model and set to nullptr is invalid
|
||||
|
||||
switch (curveRef.type) {
|
||||
switch (curve.type) {
|
||||
case CurveReference::CURVE_REF_DIFF:
|
||||
case CurveReference::CURVE_REF_EXPO:
|
||||
cb->clear();
|
||||
Helpers::populateGVCB(*cb, curveRef.value, *model);
|
||||
cb->setModel(gvarItemModel);
|
||||
break;
|
||||
case CurveReference::CURVE_REF_FUNC:
|
||||
cb->clear();
|
||||
for (int i = 1; i <= MAX_CURVE_REF_FUNC; i++) {
|
||||
cb->addItem(CurveReference::functionToString(i), i);
|
||||
}
|
||||
cb->setModel(funcItemModel);
|
||||
break;
|
||||
case CurveReference::CURVE_REF_CUSTOM:
|
||||
cb->setModel(curveItemModel);
|
||||
@@ -312,6 +307,6 @@ void CurveReferenceUIManager::populateValueCB(QComboBox * cb, const CurveReferen
|
||||
break;
|
||||
}
|
||||
|
||||
cb->setCurrentIndex(cb->findData(curveRef.value));
|
||||
cb->setCurrentIndex(cb->findData(curve.value));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -79,6 +79,9 @@ class CurveReference {
|
||||
static int getDefaultValue(const CurveRefType type, const bool isGVar = false);
|
||||
static QString typeToString(const CurveRefType type);
|
||||
static QString functionToString(const int value);
|
||||
static bool isTypeAvailable(const CurveRefType type);
|
||||
static bool isFunctionAvailable(const int value);
|
||||
static int functionCount();
|
||||
};
|
||||
|
||||
class CurveReferenceUIManager : public QObject {
|
||||
@@ -87,18 +90,18 @@ class CurveReferenceUIManager : public QObject {
|
||||
|
||||
public:
|
||||
CurveReferenceUIManager(QComboBox *curveValueCB, CurveReference & curve, const ModelData & model,
|
||||
RawItemFilteredModel * curveItemModel, QObject * parent = nullptr);
|
||||
RawItemFilteredModel * curveItemModel, RawItemFilteredModel * gvarItemModel, QObject * parent = nullptr);
|
||||
CurveReferenceUIManager(QComboBox *curveTypeCB, QCheckBox *curveGVarCB, QSpinBox *curveValueSB, QComboBox *curveValueCB,
|
||||
CurveReference & curve, const ModelData & model, RawItemFilteredModel * curveItemModel, QObject * parent = nullptr);
|
||||
CurveReference & curve, const ModelData & model, RawItemFilteredModel * curveItemModel,
|
||||
RawItemFilteredModel * gvarItemModel, QObject * parent = nullptr);
|
||||
virtual ~CurveReferenceUIManager();
|
||||
void init(RawItemFilteredModel * curveModel);
|
||||
void update();
|
||||
|
||||
protected slots:
|
||||
void gvarCBChanged(int);
|
||||
void typeChanged(int);
|
||||
void valueSBChanged();
|
||||
void valueCBChanged();
|
||||
void update();
|
||||
|
||||
protected:
|
||||
QComboBox *curveTypeCB;
|
||||
@@ -108,16 +111,16 @@ class CurveReferenceUIManager : public QObject {
|
||||
CurveReference & curve;
|
||||
const ModelData & model;
|
||||
bool lock;
|
||||
bool hasCapabilityGvars;
|
||||
RawItemFilteredModel * curveItemModel;
|
||||
RawItemFilteredModel * gvarItemModel;
|
||||
RawItemFilteredModel * typeItemModel;
|
||||
RawItemFilteredModel * funcItemModel;
|
||||
|
||||
static bool firsttime;
|
||||
static int flags;
|
||||
static bool hasCapabilityGvars;
|
||||
static int numCurves;
|
||||
static RawItemFilteredModel * curveItemModel;
|
||||
static QStandardItemModel * tempModel;
|
||||
void populateValueCB(QComboBox * cb);
|
||||
|
||||
static void populateTypeCB(QComboBox * cb, const CurveReference & curveRef);
|
||||
static void populateValueCB(QComboBox * cb, const CurveReference & curveRef, const ModelData * model = nullptr);
|
||||
private:
|
||||
void init(QObject * parent);
|
||||
};
|
||||
|
||||
#endif // CURVEREFERENCE_H
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
|
||||
ExpoDialog::ExpoDialog(QWidget *parent, ModelData & model, ExpoData *expoData, GeneralSettings & generalSettings,
|
||||
Firmware * firmware, QString & inputName, RawItemFilteredModel * rawSourceModel,
|
||||
RawItemFilteredModel * rawSwitchModel, RawItemFilteredModel * curveItemModel) :
|
||||
RawItemFilteredModel * rawSwitchModel, RawItemFilteredModel * curveItemModel, RawItemFilteredModel * gvarItemModel) :
|
||||
QDialog(parent),
|
||||
ui(new Ui::ExpoDialog),
|
||||
model(model),
|
||||
@@ -50,7 +50,8 @@ ExpoDialog::ExpoDialog(QWidget *parent, ModelData & model, ExpoData *expoData, G
|
||||
|
||||
gvWeightGroup = new GVarGroup(ui->weightGV, ui->weightSB, ui->weightCB, ed->weight, model, 100, -100, 100);
|
||||
gvOffsetGroup = new GVarGroup(ui->offsetGV, ui->offsetSB, ui->offsetCB, ed->offset, model, 0, -100, 100);
|
||||
curveGroup = new CurveReferenceUIManager(ui->curveTypeCB, ui->curveGVarCB, ui->curveValueSB, ui->curveValueCB, ed->curve, model, curveItemModel, this);
|
||||
curveGroup = new CurveReferenceUIManager(ui->curveTypeCB, ui->curveGVarCB, ui->curveValueSB, ui->curveValueCB, ed->curve, model, curveItemModel,
|
||||
gvarItemModel, this);
|
||||
|
||||
ui->switchesCB->setModel(rawSwitchModel);
|
||||
ui->switchesCB->setCurrentIndex(ui->switchesCB->findData(ed->swtch.toValue()));
|
||||
|
||||
@@ -38,7 +38,7 @@ class ExpoDialog : public QDialog {
|
||||
public:
|
||||
ExpoDialog(QWidget *parent, ModelData & model, ExpoData *expodata, GeneralSettings & generalSettings,
|
||||
Firmware * firmware, QString & inputName, RawItemFilteredModel * rawSourceItemModel,
|
||||
RawItemFilteredModel * rawSwitchItemModel, RawItemFilteredModel * curveItemModel);
|
||||
RawItemFilteredModel * rawSwitchItemModel, RawItemFilteredModel * curveItemModel, RawItemFilteredModel * gvarItemModel);
|
||||
~ExpoDialog();
|
||||
|
||||
protected:
|
||||
|
||||
@@ -37,10 +37,15 @@ InputsPanel::InputsPanel(QWidget *parent, ModelData & model, GeneralSettings & g
|
||||
connect(rawSwitchFilteredModel, &RawItemFilteredModel::dataAboutToBeUpdated, this, &InputsPanel::onModelDataAboutToBeUpdated);
|
||||
connect(rawSwitchFilteredModel, &RawItemFilteredModel::dataUpdateComplete, this, &InputsPanel::onModelDataUpdateComplete);
|
||||
|
||||
curveFilteredModel = new RawItemFilteredModel(commonItemModels->curveItemModel(), RawItemFilteredModel::AllFilter, this);
|
||||
const int filter = firmware->getCapability(HasInputDiff) ? RawItemFilteredModel::AllFilter : RawItemFilteredModel::PositiveFilter;
|
||||
curveFilteredModel = new RawItemFilteredModel(commonItemModels->curveItemModel(), filter, this);
|
||||
connect(curveFilteredModel, &RawItemFilteredModel::dataAboutToBeUpdated, this, &InputsPanel::onModelDataAboutToBeUpdated);
|
||||
connect(curveFilteredModel, &RawItemFilteredModel::dataUpdateComplete, this, &InputsPanel::onModelDataUpdateComplete);
|
||||
|
||||
gvarFilteredModel = new RawItemFilteredModel(commonItemModels->gvarItemModel(), RawItemFilteredModel::AllFilter, this);
|
||||
connect(gvarFilteredModel, &RawItemFilteredModel::dataAboutToBeUpdated, this, &InputsPanel::onModelDataAboutToBeUpdated);
|
||||
connect(gvarFilteredModel, &RawItemFilteredModel::dataUpdateComplete, this, &InputsPanel::onModelDataUpdateComplete);
|
||||
|
||||
inputsCount = firmware->getCapability(VirtualInputs);
|
||||
if (inputsCount == 0)
|
||||
inputsCount = CPN_MAX_STICKS;
|
||||
@@ -194,7 +199,8 @@ void InputsPanel::gm_openExpo(int index)
|
||||
if (firmware->getCapability(VirtualInputs))
|
||||
inputName = model->inputNames[ed.chn];
|
||||
|
||||
ExpoDialog *dlg = new ExpoDialog(this, *model, &ed, generalSettings, firmware, inputName, rawSourceFilteredModel, rawSwitchFilteredModel, curveFilteredModel);
|
||||
ExpoDialog *dlg = new ExpoDialog(this, *model, &ed, generalSettings, firmware, inputName, rawSourceFilteredModel, rawSwitchFilteredModel,
|
||||
curveFilteredModel, gvarFilteredModel);
|
||||
if (dlg->exec()) {
|
||||
model->expoData[index] = ed;
|
||||
if (firmware->getCapability(VirtualInputs))
|
||||
|
||||
@@ -76,6 +76,7 @@ class InputsPanel : public ModelPanel
|
||||
RawItemFilteredModel *rawSourceFilteredModel;
|
||||
RawItemFilteredModel *rawSwitchFilteredModel;
|
||||
RawItemFilteredModel *curveFilteredModel;
|
||||
RawItemFilteredModel *gvarFilteredModel;
|
||||
|
||||
int getExpoIndex(unsigned int dch);
|
||||
bool gm_insertExpo(int idx);
|
||||
|
||||
@@ -25,7 +25,8 @@
|
||||
#include "helpers.h"
|
||||
|
||||
MixerDialog::MixerDialog(QWidget *parent, ModelData & model, MixData * mixdata, GeneralSettings & generalSettings, Firmware * firmware,
|
||||
RawItemFilteredModel * rawSourceModel, RawItemFilteredModel * rawSwitchModel, RawItemFilteredModel * curveItemModel) :
|
||||
RawItemFilteredModel * rawSourceModel, RawItemFilteredModel * rawSwitchModel, RawItemFilteredModel * curveItemModel,
|
||||
RawItemFilteredModel * gvarItemModel) :
|
||||
QDialog(parent),
|
||||
ui(new Ui::MixerDialog),
|
||||
model(model),
|
||||
@@ -52,7 +53,8 @@ MixerDialog::MixerDialog(QWidget *parent, ModelData & model, MixData * mixdata,
|
||||
|
||||
gvWeightGroup = new GVarGroup(ui->weightGV, ui->weightSB, ui->weightCB, md->weight, model, 100, -limit, limit);
|
||||
gvOffsetGroup = new GVarGroup(ui->offsetGV, ui->offsetSB, ui->offsetCB, md->sOffset, model, 0, -limit, limit);
|
||||
curveGroup = new CurveReferenceUIManager(ui->curveTypeCB, ui->curveGVarCB, ui->curveValueSB, ui->curveValueCB, md->curve, model, curveItemModel, this);
|
||||
curveGroup = new CurveReferenceUIManager(ui->curveTypeCB, ui->curveGVarCB, ui->curveValueSB, ui->curveValueCB, md->curve, model, curveItemModel,
|
||||
gvarItemModel, this);
|
||||
|
||||
ui->MixDR_CB->setChecked(md->noExpo == 0);
|
||||
|
||||
|
||||
@@ -36,7 +36,8 @@ class MixerDialog : public QDialog {
|
||||
Q_OBJECT
|
||||
public:
|
||||
MixerDialog(QWidget *parent, ModelData & model, MixData *mixdata, GeneralSettings & generalSettings, Firmware * firmware,
|
||||
RawItemFilteredModel * rawSourceModel, RawItemFilteredModel * rawSwitchModel, RawItemFilteredModel * curveItemModel);
|
||||
RawItemFilteredModel * rawSourceModel, RawItemFilteredModel * rawSwitchModel, RawItemFilteredModel * curveItemModel,
|
||||
RawItemFilteredModel * gvarItemModel);
|
||||
~MixerDialog();
|
||||
|
||||
protected:
|
||||
|
||||
@@ -37,10 +37,15 @@ MixesPanel::MixesPanel(QWidget *parent, ModelData & model, GeneralSettings & gen
|
||||
connect(rawSwitchFilteredModel, &RawItemFilteredModel::dataAboutToBeUpdated, this, &MixesPanel::onModelDataAboutToBeUpdated);
|
||||
connect(rawSwitchFilteredModel, &RawItemFilteredModel::dataUpdateComplete, this, &MixesPanel::onModelDataUpdateComplete);
|
||||
|
||||
curveFilteredModel = new RawItemFilteredModel(commonItemModels->curveItemModel(), RawItemFilteredModel::AllFilter, this);
|
||||
const int filter = firmware->getCapability(HasMixerExpo) ? RawItemFilteredModel::AllFilter : RawItemFilteredModel::PositiveFilter;
|
||||
curveFilteredModel = new RawItemFilteredModel(commonItemModels->curveItemModel(), filter, this);
|
||||
connect(curveFilteredModel, &RawItemFilteredModel::dataAboutToBeUpdated, this, &MixesPanel::onModelDataAboutToBeUpdated);
|
||||
connect(curveFilteredModel, &RawItemFilteredModel::dataUpdateComplete, this, &MixesPanel::onModelDataUpdateComplete);
|
||||
|
||||
gvarFilteredModel = new RawItemFilteredModel(commonItemModels->gvarItemModel(), RawItemFilteredModel::AllFilter, this);
|
||||
connect(gvarFilteredModel, &RawItemFilteredModel::dataAboutToBeUpdated, this, &MixesPanel::onModelDataAboutToBeUpdated);
|
||||
connect(gvarFilteredModel, &RawItemFilteredModel::dataUpdateComplete, this, &MixesPanel::onModelDataUpdateComplete);
|
||||
|
||||
QGridLayout * mixesLayout = new QGridLayout(this);
|
||||
|
||||
mixersListWidget = new MixersListWidget(this, false); // TODO enum
|
||||
@@ -189,7 +194,8 @@ void MixesPanel::gm_openMix(int index)
|
||||
|
||||
MixData mixd(model->mixData[index]);
|
||||
|
||||
MixerDialog *dlg = new MixerDialog(this, *model, &mixd, generalSettings, firmware, rawSourceFilteredModel, rawSwitchFilteredModel, curveFilteredModel);
|
||||
MixerDialog *dlg = new MixerDialog(this, *model, &mixd, generalSettings, firmware, rawSourceFilteredModel, rawSwitchFilteredModel,
|
||||
curveFilteredModel, gvarFilteredModel);
|
||||
if(dlg->exec()) {
|
||||
model->mixData[index] = mixd;
|
||||
emit modified();
|
||||
|
||||
@@ -72,6 +72,7 @@ class MixesPanel : public ModelPanel
|
||||
RawItemFilteredModel *rawSourceFilteredModel;
|
||||
RawItemFilteredModel *rawSwitchFilteredModel;
|
||||
RawItemFilteredModel *curveFilteredModel;
|
||||
RawItemFilteredModel *gvarFilteredModel;
|
||||
|
||||
int getMixerIndex(unsigned int dch);
|
||||
bool gm_insertMix(int idx);
|
||||
|
||||
Reference in New Issue
Block a user