add base classes for screens and widgets

along with screen manager to allow place to manage multiple screens
This commit is contained in:
MatthewColvin 2023-09-16 13:07:14 -05:00
parent 5c6008c491
commit 40052d31b7
8 changed files with 72 additions and 0 deletions

View file

@ -0,0 +1,16 @@
#include "ScreenManager.hpp"
using namespace UI::Screen;
Manager Manager::mManager = Manager();
Manager& Manager::getInstance(){
return mManager;
}
Manager::Manager(){}
void Manager::pushScreen(std::unique_ptr<UI::Screen::Base> aPage){
pages.push(std::move(aPage));
}

View file

@ -0,0 +1,20 @@
#include "ScreenBase.hpp"
#include <stack>
#include <memory>
namespace UI::Screen{
class Manager{
public:
static Manager& getInstance();
void pushScreen(std::unique_ptr<UI::Screen::Base> aPage);
private:
Manager();
static Manager mManager;
std::stack<std::unique_ptr<UI::Screen::Base>> pages;
};
}

View file

@ -0,0 +1,3 @@
class IHandleButtons{
virtual void OnKeyTap() = 0;
};

View file

@ -0,0 +1,12 @@
#include "lvgl.h"
namespace UI::Screen{
class Base {
public:
Base();
private:
lv_obj_t *mScreen = lv_obj_create(NULL);
};
}

View file

@ -0,0 +1,18 @@
#include "lvgl.h"
namespace UI::Widget{
class Base{
public:
Base(lv_obj_t* aLvglSelf):
mLvglSelf(aLvglSelf)
{
mLvglSelf.user_data = this;
}
private:
lv_obj_t* mLvglSelf;
uint16_t mId;
};
}

View file

@ -40,6 +40,9 @@ build_flags =
; ------------- Includes ------------------------------------
-I OmoteUI
-I OmoteUI/core
-I OmoteUI/core/interfaces
-I OmoteUI/core/screen
-I OmoteUI/core/widget
-I OmoteUI/UIs
-I OmoteUI/UIs/Basic
-I HAL