mirror of
https://github.com/InfiniTimeOrg/InfiniTime.git
synced 2026-01-22 00:42:13 +01:00
The DisplayApp class isn't used in the Screen base class and most screens, so requiring it is pointless. In this commit, DisplayApp pointers were added to screens which use it and the explicit Screen constructor was removed in those screens.
43 lines
1.4 KiB
C++
43 lines
1.4 KiB
C++
#include "displayapp/screens/settings/Settings.h"
|
|
#include <lvgl/lvgl.h>
|
|
#include <functional>
|
|
#include "displayapp/Apps.h"
|
|
#include "displayapp/DisplayApp.h"
|
|
|
|
using namespace Pinetime::Applications::Screens;
|
|
|
|
constexpr std::array<List::Applications, Settings::entries.size()> Settings::entries;
|
|
|
|
auto Settings::CreateScreenList() const {
|
|
std::array<std::function<std::unique_ptr<Screen>()>, nScreens> screens;
|
|
for (size_t i = 0; i < screens.size(); i++) {
|
|
screens[i] = [this, i]() -> std::unique_ptr<Screen> {
|
|
return CreateScreen(i);
|
|
};
|
|
}
|
|
return screens;
|
|
}
|
|
|
|
Settings::Settings(Pinetime::Applications::DisplayApp* app, Pinetime::Controllers::Settings& settingsController)
|
|
: app {app},
|
|
settingsController {settingsController},
|
|
screens {app, settingsController.GetSettingsMenu(), CreateScreenList(), Screens::ScreenListModes::UpDown} {
|
|
}
|
|
|
|
Settings::~Settings() {
|
|
lv_obj_clean(lv_scr_act());
|
|
}
|
|
|
|
bool Settings::OnTouchEvent(Pinetime::Applications::TouchEvents event) {
|
|
return screens.OnTouchEvent(event);
|
|
}
|
|
|
|
std::unique_ptr<Screen> Settings::CreateScreen(unsigned int screenNum) const {
|
|
std::array<List::Applications, entriesPerScreen> screens;
|
|
for (int i = 0; i < entriesPerScreen; i++) {
|
|
screens[i] = entries[screenNum * entriesPerScreen + i];
|
|
}
|
|
|
|
return std::make_unique<Screens::List>(screenNum, nScreens, app, settingsController, screens);
|
|
}
|