GeekTrack/2.Firmware/components/GeekOS/Pages/Launcher/Launcher.cpp

126 lines
2.3 KiB
C++

#include "Launcher.h"
#ifndef _WIN32
#include "System/HAL/HAL.h"
#endif // ! _WIN32
#include "stdio.h"
using namespace Page;
Launcher::Launcher()
: timer(nullptr)
{
}
Launcher::~Launcher()
{
}
void Launcher::onCustomAttrConfig()
{
SetCustomCacheEnable(false);
SetCustomLoadAnimType(PageManager::LOAD_ANIM_NONE);
}
void Launcher::onViewLoad()
{
Model.Init();
View.Create(_root);
AttachEvent(_root);
}
void Launcher::onViewDidLoad()
{
}
void Launcher::onViewWillAppear()
{
Param_t param;
param.color = lv_color_black();
param.time = 1000;
//PAGE_STASH_POP(param);
timer = lv_timer_create(onTimerUpdate, param.time, this);
stausBarTimer = lv_timer_create(onStatusBarUpdate, 200, this);
}
void Launcher::onViewDidAppear()
{
}
void Launcher::onViewWillDisappear()
{
}
void Launcher::onViewDidDisappear()
{
lv_timer_del(timer);
lv_timer_del(stausBarTimer);
}
void Launcher::onViewDidUnload()
{
View.Delete();
Model.Deinit();
}
void Launcher::AttachEvent(lv_obj_t* obj)
{
//lv_obj_set_user_data(obj, this);
lv_obj_add_event_cb(obj, onEvent, LV_EVENT_ALL, this);
}
void Launcher::Update()
{
}
void Launcher::onTimerUpdate(lv_timer_t* timer)
{
Launcher* instance = (Launcher*)timer->user_data;
instance->Update();
}
void Launcher::onStatusBarUpdate(lv_timer_t* timer) {
#ifdef _WIN32
static int bat = 0;
bat = bat + 10;
if (bat > 100) {
bat = 0;
}
#else
Power_Info_t info;
Power_GetInfo(&info);
int bat = info.capacity;
#endif
Launcher* instance = (Launcher*)timer->user_data;
instance->View.UpdateBatteryInfo(instance->_root, bat);
int16_t steps = instance->Model.GetUserStep();
instance->View.UpdateStepInfo(instance->_root, steps);
}
void Launcher::onEvent(lv_event_t* event)
{
Launcher* instance = (Launcher*)lv_event_get_user_data(event);
LV_ASSERT_NULL(instance);
lv_obj_t* obj = lv_event_get_target(event);
lv_event_code_t code = lv_event_get_code(event);
if (obj == instance->_root)
{
if (code == LV_EVENT_SHORT_CLICKED || code == LV_EVENT_LEAVE)
{
instance->_Manager->Pop();
}
}
if(code == LV_EVENT_PRESSED){
instance->_Manager->Push("Pages/SystemInfos");
}
}