/
SilovAndrey
/
LotShell
Обзор
Документация
Войти
/
SilovAndrey
/
LotShell
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/modules/network/network.hpp
82 строки
2 KB
Andrey HomePC
output.cpp update
4 часа назад
4 часа назад
ed502b1
Код
Авторство
О чём код?
// modules/network/network.hpp — модуль сети (ThorVG Shape) #pragma once #include "core/module.hpp" #include <thorvg-1/thorvg.h> #include <string> namespace Lot { namespace Network { struct MsgNet { bool connected = false; std::string ssid; }; struct Model { bool connected = false; std::string ssid = ""; }; class NetworkModule : public TypedModule<Model, MsgNet> { public: NetworkModule() : TypedModule<Model, MsgNet>( "network", // Init [](void** nodes) -> Model { auto m = emulate_network(); // Иконка Wi-Fi — полукруги auto* shape = tvg::Shape::gen(); shape->appendRect(0, 0, 18, 18); int r = m.connected ? 60 : 120; int g = m.connected ? 140 : 120; shape->fill(r, g, 255); shape->strokeWidth(2); shape->strokeFill(r, g, 255); shape->strokeCap(tvg::StrokeCap::Round); nodes[0] = static_cast<void*>(shape); // Точка auto* dot = tvg::Shape::gen(); dot->appendCircle(9, 14, 3, 3); dot->fill(r, g, 255); nodes[1] = static_cast<void*>(dot); return m; }, // Update [](Model& m, const void* event, std::vector<void*>& nodes) { if (event) { auto* e = static_cast<const MsgNet*>(event); m.connected = e->connected; m.ssid = e->ssid; } int r = m.connected ? 60 : 120; int g = m.connected ? 140 : 120; if (auto* shape = static_cast<tvg::Shape*>(nodes[0])) { shape->fill(r, g, 255); shape->strokeFill(r, g, 255); } if (auto* dot = static_cast<tvg::Shape*>(nodes[1])) { dot->fill(r, g, 255); } } ) {} private: static Model emulate_network() { return {true, "HomeWiFi"}; } }; inline std::unique_ptr<Module> create() { return std::make_unique<NetworkModule>(); } } // namespace Network } // namespace Lot