mirror of
https://github.com/torlando-tech/pyxis.git
synced 2026-09-09 14:35:34 +00:00
40 lines
1.5 KiB
C++
40 lines
1.5 KiB
C++
#pragma once
|
|
#ifdef ARDUINO
|
|
#include <functional>
|
|
#include <string>
|
|
#include <vector>
|
|
#include <lvgl.h>
|
|
#include "NomadNetDocument.h"
|
|
|
|
namespace UI::LXMF {
|
|
class NomadNetScreen {
|
|
public:
|
|
using Callback = std::function<void()>;
|
|
using OpenCallback = std::function<void(const std::string&)>;
|
|
using LinkCallback = std::function<void(const std::string&)>;
|
|
NomadNetScreen(); ~NomadNetScreen();
|
|
void set_back_callback(Callback cb) { _back = std::move(cb); }
|
|
void set_home_callback(Callback cb) { _home = std::move(cb); }
|
|
void set_reload_callback(Callback cb) { _reload = std::move(cb); }
|
|
void set_open_callback(OpenCallback cb) { _open = std::move(cb); }
|
|
void set_link_callback(LinkCallback cb) { _link = std::move(cb); }
|
|
void set_address(const std::string& address);
|
|
std::string address() const;
|
|
void set_status(const char* status);
|
|
void set_page(const NomadNet::Document& document);
|
|
void show(); void hide();
|
|
private:
|
|
static constexpr std::size_t MAX_UI_OBJECTS = 96;
|
|
static constexpr std::size_t MAX_UI_SPANS = 256;
|
|
lv_obj_t* _screen=nullptr; lv_obj_t* _back_button=nullptr; lv_obj_t* _home_button=nullptr;
|
|
lv_obj_t* _reload_button=nullptr; lv_obj_t* _address=nullptr; lv_obj_t* _go_button=nullptr;
|
|
lv_obj_t* _status=nullptr; lv_obj_t* _content=nullptr;
|
|
std::vector<lv_obj_t*> _focusables;
|
|
std::vector<std::string> _link_targets;
|
|
bool _visible = false;
|
|
Callback _back,_home,_reload; OpenCallback _open; LinkCallback _link;
|
|
static void clicked(lv_event_t* event);
|
|
};
|
|
}
|
|
#endif
|