Files
bobbycar-boardcomputer-firm…/main/displays/menus/taskmanagermenu.cpp

52 lines
1.3 KiB
C++
Raw Normal View History

2021-12-19 19:54:31 +01:00
#include "taskmanagermenu.h"
// 3rdparty lib includes
#include <icons/back.h>
2022-03-05 22:26:57 +01:00
#include <actions/popscreenaction.h>
2021-12-19 19:54:31 +01:00
#include <actions/dummyaction.h>
#include <schedulertask.h>
2021-12-19 20:32:37 +01:00
#include <fmt/core.h>
2021-12-19 19:54:31 +01:00
// local includes
#include "taskmanager.h"
using namespace espgui;
2022-02-12 19:07:34 +01:00
using namespace std::chrono_literals;
2021-12-19 19:54:31 +01:00
2021-12-19 20:32:37 +01:00
namespace {
2021-12-30 03:17:30 +01:00
constexpr char TEXT_TASKMANAGER[] = "Taskmanager";
constexpr char TEXT_BACK[] = "Back";
2021-12-19 20:32:37 +01:00
class TaskText : public virtual espgui::TextInterface
{
public:
TaskText(const espcpputils::SchedulerTask &task) : m_task{task} {}
std::string text() const override
{
const std::string_view name{m_task.name()};
2022-02-12 19:07:34 +01:00
return fmt::format("{}{}&f &2{} &1{}ms", name.size() > 6 ? "&s" : "", name, m_task.callCount(), m_task.maxElapsed() / 1ms);
2021-12-19 20:32:37 +01:00
}
private:
const espcpputils::SchedulerTask &m_task;
};
} // namespace
2021-12-19 19:54:31 +01:00
TaskmanagerMenu::TaskmanagerMenu()
{
for (const auto &task : schedulerTasks)
2021-12-19 20:32:37 +01:00
constructMenuItem<makeComponentArgs<MenuItem, TaskText, DummyAction>>(task);
2022-03-05 22:26:57 +01:00
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, PopScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>();
2021-12-19 19:54:31 +01:00
}
2023-08-14 15:34:31 +02:00
std::string TaskmanagerMenu::title() const
2021-12-30 03:17:30 +01:00
{
return TEXT_TASKMANAGER;
}
2021-12-19 19:54:31 +01:00
void TaskmanagerMenu::back()
{
2022-03-05 22:26:57 +01:00
popScreen();
2021-12-19 19:54:31 +01:00
}