Skip to content

Commit 6678ca2

Browse files
committed
Fix source list
1 parent 0dd1020 commit 6678ca2

File tree

4 files changed

+75
-9
lines changed

4 files changed

+75
-9
lines changed

companion/src/datamodels/compounditemmodels.cpp

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -667,6 +667,54 @@ void FlexSwitchesItemModel::update(const int event)
667667
}
668668
}
669669

670+
//
671+
// BacklightSourceItemModel
672+
//
673+
674+
BacklightSourceItemModel::BacklightSourceItemModel(const GeneralSettings * const generalSettings, const ModelData * const modelData,
675+
Firmware * firmware, const Boards * const board, const Board::Type boardType) :
676+
AbstractDynamicItemModel(generalSettings, modelData, firmware, board, boardType)
677+
{
678+
setId(IMID_BacklightSource);
679+
setUpdateMask(IMUE_SystemRefresh);
680+
681+
addItems(SOURCE_TYPE_NONE, 1);
682+
addItems(SOURCE_TYPE_INPUT, board->getCapability(Board::Inputs), board->getCapability(Board::Sticks));
683+
addItems(SOURCE_TYPE_SWITCH, board->getCapability(Board::Switches));
684+
}
685+
686+
void BacklightSourceItemModel::setDynamicItemData(QStandardItem * item, const RawSource & src) const
687+
{
688+
item->setText(src.toString(modelData, generalSettings, boardType));
689+
item->setData(src.isAvailable(modelData, generalSettings, boardType), IMDR_Available);
690+
}
691+
692+
void BacklightSourceItemModel::addItems(const RawSourceType & type, int count, const int start)
693+
{
694+
const int idxAdj = (type == SOURCE_TYPE_NONE ? -1 : 0);
695+
696+
for (int i = 1 + start; i <= count; ++i) {
697+
const RawSource src = RawSource(type, i + idxAdj);
698+
QStandardItem * modelItem = new QStandardItem();
699+
modelItem->setData(src.toValue(), IMDR_Id);
700+
modelItem->setData(type, IMDR_Type);
701+
setDynamicItemData(modelItem, src);
702+
appendRow(modelItem);
703+
}
704+
}
705+
706+
void BacklightSourceItemModel::update(const int event)
707+
{
708+
if (doUpdate(event)) {
709+
emit aboutToBeUpdated();
710+
711+
for (int i = 0; i < rowCount(); ++i)
712+
setDynamicItemData(item(i), RawSource(item(i)->data(IMDR_Id).toInt()));
713+
714+
emit updateComplete();
715+
}
716+
}
717+
670718
//
671719
// CompoundItemModelFactory
672720
//
@@ -722,6 +770,9 @@ void CompoundItemModelFactory::addItemModel(const int id)
722770
case AbstractItemModel::IMID_FlexSwitches:
723771
registerItemModel(new FlexSwitchesItemModel(generalSettings, modelData, firmware, board, boardType));
724772
break;
773+
case AbstractItemModel::IMID_BacklightSource:
774+
registerItemModel(new BacklightSourceItemModel(generalSettings, modelData, firmware, board, boardType));
775+
break;
725776
default:
726777
qDebug() << "Error: unknown item model: id";
727778
break;

companion/src/datamodels/compounditemmodels.h

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ class AbstractItemModel: public QStandardItemModel
4747
IMID_CurveRefType,
4848
IMID_CurveRefFunc,
4949
IMID_FlexSwitches,
50+
IMID_BacklightSource,
5051
IMID_ReservedCount,
5152
IMID_Custom
5253
};
@@ -349,6 +350,22 @@ class FlexSwitchesItemModel: public AbstractDynamicItemModel
349350
virtual void setDynamicItemData(QStandardItem * item, const int value) const;
350351
};
351352

353+
class BacklightSourceItemModel: public AbstractDynamicItemModel
354+
{
355+
Q_OBJECT
356+
public:
357+
explicit BacklightSourceItemModel(const GeneralSettings * const generalSettings, const ModelData * const modelData,
358+
Firmware * firmware, const Boards * const board, const Board::Type boardType);
359+
virtual ~BacklightSourceItemModel() {};
360+
361+
public slots:
362+
virtual void update(const int event = IMUE_SystemRefresh) override;
363+
364+
protected:
365+
virtual void setDynamicItemData(QStandardItem * item, const RawSource & src) const;
366+
void addItems(const RawSourceType & type, int count, const int start = 0);
367+
};
368+
352369

353370
//
354371
// CompoundItemModelFactory

companion/src/generaledit/generaledit.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ GeneralEdit::GeneralEdit(QWidget * parent, RadioData & radioData, Firmware * fir
6464
editorItemModels->addItemModel(AbstractItemModel::IMID_RawSwitch);
6565
editorItemModels->addItemModel(AbstractItemModel::IMID_CustomFuncAction);
6666
editorItemModels->addItemModel(AbstractItemModel::IMID_CustomFuncResetParam);
67+
editorItemModels->addItemModel(AbstractItemModel::IMID_BacklightSource);
6768

6869
addTab(new GeneralSetupPanel(this, generalSettings, firmware, editorItemModels), tr("Setup"));
6970
addTab(new CustomFunctionsPanel(this, nullptr, generalSettings, firmware, editorItemModels), tr("Global Functions"));

companion/src/generaledit/generalsetup.cpp

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -30,27 +30,24 @@
3030
constexpr char FIM_HATSMODE[] {"Hats Mode"};
3131
constexpr char FIM_STICKMODE[] {"Stick Mode"};
3232
constexpr char FIM_TEMPLATESETUP[] {"Template Setup"};
33+
constexpr char FIM_BACKLIGHTSRC[] {"Backlight Source"};
3334

34-
GeneralSetupPanel::GeneralSetupPanel(QWidget * parent, GeneralSettings & generalSettings, Firmware * firmware, CompoundItemModelFactory * sharedItemModels):
35+
GeneralSetupPanel::GeneralSetupPanel(QWidget * parent, GeneralSettings & generalSettings,
36+
Firmware * firmware, CompoundItemModelFactory * sharedItemModels):
3537
GeneralPanel(parent, generalSettings, firmware),
3638
ui(new Ui::GeneralSetup)
3739
{
3840
ui->setupUi(this);
39-
4041
Board::Type board = firmware->getBoard();
41-
4242
panelFilteredModels = new FilteredItemModelFactory();
43-
4443
panelFilteredModels->registerItemModel(new FilteredItemModel(GeneralSettings::hatsModeItemModel()), FIM_HATSMODE);
4544
panelFilteredModels->registerItemModel(new FilteredItemModel(GeneralSettings::stickModeItemModel()), FIM_STICKMODE);
4645
panelFilteredModels->registerItemModel(new FilteredItemModel(GeneralSettings::templateSetupItemModel(),
4746
Boards::isAir(board) ? GeneralSettings::RadioTypeContextAir :
4847
GeneralSettings::RadioTypeContextSurface),
4948
FIM_TEMPLATESETUP);
50-
51-
int imId = panelFilteredModels->registerItemModel(new FilteredItemModel(sharedItemModels->getItemModel(AbstractItemModel::IMID_RawSource),
52-
(RawSource::NoneGroup | RawSource::SourcesGroup | RawSource::SwitchesGroup)),
53-
"RawSource");
49+
panelFilteredModels->registerItemModel(new FilteredItemModel(sharedItemModels->getItemModel(AbstractItemModel::IMID_BacklightSource)),
50+
FIM_BACKLIGHTSRC);
5451

5552
QLabel *pmsl[] = {ui->ro_label, ui->ro1_label, ui->ro2_label, ui->ro3_label, ui->ro4_label, ui->ro5_label, ui->ro6_label, ui->ro7_label, ui->ro8_label, NULL};
5653
QSlider *tpmsld[] = {ui->chkSA, ui->chkSB, ui->chkSC, ui->chkSD, ui->chkSE, ui->chkSF, ui->chkSG, ui->chkSH, NULL};
@@ -97,7 +94,7 @@ ui(new Ui::GeneralSetup)
9794
lock = true;
9895

9996
ui->brightCtrl_CB->setSizeAdjustPolicy(QComboBox::AdjustToContents);
100-
ui->brightCtrl_CB->setModel(panelFilteredModels->getItemModel(imId));
97+
ui->brightCtrl_CB->setModel(panelFilteredModels->getItemModel(FIM_BACKLIGHTSRC));
10198
ui->brightCtrl_CB->setCurrentIndex(ui->brightCtrl_CB->findData(generalSettings.backlightSrc.toValue()));
10299
if (ui->brightCtrl_CB->currentIndex() < 0 && generalSettings.backlightSrc.toValue() == 0)
103100
ui->brightCtrl_CB->setCurrentIndex(Helpers::getFirstPosValueIndex(ui->brightCtrl_CB));

0 commit comments

Comments
 (0)