fix: MPM proto scan
This commit is contained in:
committed by
Raphael Coeffic
parent
6e65533d9e
commit
0f07f2b690
@@ -881,7 +881,7 @@ void ModuleSubTypeChoice::update()
|
||||
protos->triggerScan();
|
||||
|
||||
if (protos->isScanning()) {
|
||||
new RfScanDialog(parent, protos, nullptr/* std::move(updateForm) */);
|
||||
new RfScanDialog(parent, protos, [=](){ update(); });
|
||||
} else {
|
||||
TRACE("!protos->isScanning()");
|
||||
}
|
||||
|
||||
@@ -69,52 +69,3 @@ void RfScanDialog::checkEvents()
|
||||
Dialog::checkEvents();
|
||||
}
|
||||
|
||||
MultiProtoChoice::MultiProtoChoice(FormGroup* parent, const rect_t& rect,
|
||||
unsigned int moduleIdx,
|
||||
std::function<void(int)> setValue,
|
||||
std::function<void()> updateForm) :
|
||||
Choice(
|
||||
parent, rect, 0, 0,
|
||||
[=] { return g_model.moduleData[moduleIdx].multi.rfProtocol; },
|
||||
setValue),
|
||||
moduleIdx(moduleIdx)
|
||||
{
|
||||
TRACE("MultiProtoChoice::MultiProtoChoice(%p)", this);
|
||||
protos = MultiRfProtocols::instance(moduleIdx);
|
||||
protos->triggerScan();
|
||||
|
||||
if (protos->isScanning()) {
|
||||
new RfScanDialog(parent, protos, std::move(updateForm));
|
||||
} else {
|
||||
TRACE("!protos->isScanning()");
|
||||
}
|
||||
|
||||
setTextHandler([=](int value) {
|
||||
return protos->getProtoLabel(value);
|
||||
});
|
||||
}
|
||||
|
||||
void MultiProtoChoice::openMenu()
|
||||
{
|
||||
menu = new Menu(this);
|
||||
|
||||
if (!menuTitle.empty()) menu->setTitle(menuTitle);
|
||||
menu->setCloseHandler([=]() { setEditMode(false); });
|
||||
|
||||
setEditMode(true);
|
||||
invalidate();
|
||||
|
||||
protos->fillList([=](const MultiRfProtocols::RfProto& p){
|
||||
addProto(p.proto, p.label.c_str());
|
||||
});
|
||||
|
||||
int idx = protos->getIndex(g_model.moduleData[moduleIdx].multi.rfProtocol);
|
||||
if (idx >= 0) menu->select(idx);
|
||||
}
|
||||
|
||||
void MultiProtoChoice::addProto(unsigned int proto, const char* protocolName)
|
||||
{
|
||||
addValue(protocolName);
|
||||
menu->addLine(protocolName, [=]() { setValue(proto); });
|
||||
}
|
||||
|
||||
|
||||
@@ -44,19 +44,3 @@ class RfScanDialog : public Dialog
|
||||
void checkEvents() override;
|
||||
};
|
||||
|
||||
class MultiProtoChoice : public Choice
|
||||
{
|
||||
unsigned int moduleIdx;
|
||||
|
||||
MultiRfProtocols* protos = nullptr;
|
||||
Menu* menu = nullptr;
|
||||
|
||||
public:
|
||||
MultiProtoChoice(FormGroup *parent, const rect_t &rect, unsigned int moduleIdx,
|
||||
std::function<void(int)> setValue, std::function<void()> updateForm);
|
||||
|
||||
void openMenu() override;
|
||||
void addProto(unsigned int proto, const char* protocolName);
|
||||
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user