mirror of
https://github.com/meshtastic/firmware.git
synced 2025-08-05 21:24:34 +00:00
Move modules beyond the clock in navigation
This commit is contained in:
parent
7a285cf221
commit
653f6c2a85
@ -776,32 +776,6 @@ void Screen::setFrames(FrameFocus focus)
|
|||||||
indicatorIcons.clear();
|
indicatorIcons.clear();
|
||||||
|
|
||||||
size_t numframes = 0;
|
size_t numframes = 0;
|
||||||
moduleFrames = MeshModule::GetMeshModulesWithUIFrames();
|
|
||||||
LOG_DEBUG("Show %d module frames", moduleFrames.size());
|
|
||||||
|
|
||||||
// put all of the module frames first.
|
|
||||||
// this is a little bit of a dirty hack; since we're going to call
|
|
||||||
// the same drawModuleFrame handler here for all of these module frames
|
|
||||||
// and then we'll just assume that the state->currentFrame value
|
|
||||||
// is the same offset into the moduleFrames vector
|
|
||||||
// so that we can invoke the module's callback
|
|
||||||
for (auto i = moduleFrames.begin(); i != moduleFrames.end(); ++i) {
|
|
||||||
// Draw the module frame, using the hack described above
|
|
||||||
normalFrames[numframes] = drawModuleFrame;
|
|
||||||
|
|
||||||
// Check if the module being drawn has requested focus
|
|
||||||
// We will honor this request later, if setFrames was triggered by a UIFrameEvent
|
|
||||||
MeshModule *m = *i;
|
|
||||||
if (m->isRequestingFocus())
|
|
||||||
fsi.positions.focusedModule = numframes;
|
|
||||||
if (m == waypointModule)
|
|
||||||
fsi.positions.waypoint = numframes;
|
|
||||||
|
|
||||||
indicatorIcons.push_back(icon_module);
|
|
||||||
numframes++;
|
|
||||||
}
|
|
||||||
|
|
||||||
LOG_DEBUG("Added modules. numframes: %d", numframes);
|
|
||||||
|
|
||||||
// If we have a critical fault, show it first
|
// If we have a critical fault, show it first
|
||||||
fsi.positions.fault = numframes;
|
fsi.positions.fault = numframes;
|
||||||
@ -875,6 +849,35 @@ void Screen::setFrames(FrameFocus focus)
|
|||||||
indicatorIcons.push_back(digital_icon_clock);
|
indicatorIcons.push_back(digital_icon_clock);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
moduleFrames = MeshModule::GetMeshModulesWithUIFrames(numframes);
|
||||||
|
LOG_DEBUG("Show %d module frames", moduleFrames.size());
|
||||||
|
|
||||||
|
// put all of the module frames first.
|
||||||
|
// this is a little bit of a dirty hack; since we're going to call
|
||||||
|
// the same drawModuleFrame handler here for all of these module frames
|
||||||
|
// and then we'll just assume that the state->currentFrame value
|
||||||
|
// is the same offset into the moduleFrames vector
|
||||||
|
// so that we can invoke the module's callback
|
||||||
|
for (auto i = moduleFrames.begin(); i != moduleFrames.end(); ++i) {
|
||||||
|
// Draw the module frame, using the hack described above
|
||||||
|
if (*i != nullptr) {
|
||||||
|
normalFrames[numframes] = drawModuleFrame;
|
||||||
|
|
||||||
|
// Check if the module being drawn has requested focus
|
||||||
|
// We will honor this request later, if setFrames was triggered by a UIFrameEvent
|
||||||
|
MeshModule *m = *i;
|
||||||
|
if (m && m->isRequestingFocus())
|
||||||
|
fsi.positions.focusedModule = numframes;
|
||||||
|
if (m && m == waypointModule)
|
||||||
|
fsi.positions.waypoint = numframes;
|
||||||
|
|
||||||
|
indicatorIcons.push_back(icon_module);
|
||||||
|
numframes++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
LOG_DEBUG("Added modules. numframes: %d", numframes);
|
||||||
|
|
||||||
// We don't show the node info of our node (if we have it yet - we should)
|
// We don't show the node info of our node (if we have it yet - we should)
|
||||||
size_t numMeshNodes = nodeDB->getNumMeshNodes();
|
size_t numMeshNodes = nodeDB->getNumMeshNodes();
|
||||||
if (numMeshNodes > 0)
|
if (numMeshNodes > 0)
|
||||||
@ -1250,7 +1253,7 @@ int Screen::handleInputEvent(const InputEvent *event)
|
|||||||
// Ask any MeshModules if they're handling keyboard input right now
|
// Ask any MeshModules if they're handling keyboard input right now
|
||||||
bool inputIntercepted = false;
|
bool inputIntercepted = false;
|
||||||
for (MeshModule *module : moduleFrames) {
|
for (MeshModule *module : moduleFrames) {
|
||||||
if (module->interceptingKeyboardInput())
|
if (module && module->interceptingKeyboardInput())
|
||||||
inputIntercepted = true;
|
inputIntercepted = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -244,10 +244,13 @@ void setReplyTo(meshtastic_MeshPacket *p, const meshtastic_MeshPacket &to)
|
|||||||
p->decoded.request_id = to.id;
|
p->decoded.request_id = to.id;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::vector<MeshModule *> MeshModule::GetMeshModulesWithUIFrames()
|
std::vector<MeshModule *> MeshModule::GetMeshModulesWithUIFrames(int startIndex)
|
||||||
{
|
{
|
||||||
|
|
||||||
std::vector<MeshModule *> modulesWithUIFrames;
|
std::vector<MeshModule *> modulesWithUIFrames;
|
||||||
|
|
||||||
|
// Fill with nullptr up to startIndex
|
||||||
|
modulesWithUIFrames.resize(startIndex, nullptr);
|
||||||
|
|
||||||
if (modules) {
|
if (modules) {
|
||||||
for (auto i = modules->begin(); i != modules->end(); ++i) {
|
for (auto i = modules->begin(); i != modules->end(); ++i) {
|
||||||
auto &pi = **i;
|
auto &pi = **i;
|
||||||
@ -257,6 +260,7 @@ std::vector<MeshModule *> MeshModule::GetMeshModulesWithUIFrames()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return modulesWithUIFrames;
|
return modulesWithUIFrames;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -75,7 +75,7 @@ class MeshModule
|
|||||||
*/
|
*/
|
||||||
static void callModules(meshtastic_MeshPacket &mp, RxSource src = RX_SRC_RADIO);
|
static void callModules(meshtastic_MeshPacket &mp, RxSource src = RX_SRC_RADIO);
|
||||||
|
|
||||||
static std::vector<MeshModule *> GetMeshModulesWithUIFrames();
|
static std::vector<MeshModule *> GetMeshModulesWithUIFrames(int startIndex);
|
||||||
static void observeUIEvents(Observer<const UIFrameEvent *> *observer);
|
static void observeUIEvents(Observer<const UIFrameEvent *> *observer);
|
||||||
static AdminMessageHandleResult handleAdminMessageForAllModules(const meshtastic_MeshPacket &mp,
|
static AdminMessageHandleResult handleAdminMessageForAllModules(const meshtastic_MeshPacket &mp,
|
||||||
meshtastic_AdminMessage *request,
|
meshtastic_AdminMessage *request,
|
||||||
|
Loading…
Reference in New Issue
Block a user