
Navigation app now needs 2 images to be loaded from the resources on the external filesystem. This PR adds an 'enabled' field to the Applications struct. This field is true for all applications expect for Navigation which calls Navigation::IsAvailable(). This methods returns true if the 2 files are available in the resources. The application list disables the application (draws it in grey, disables the touch callback) if the enable flag is not set.
57 lines
1.5 KiB
C++
57 lines
1.5 KiB
C++
#pragma once
|
|
|
|
#include <lvgl/lvgl.h>
|
|
#include <cstdint>
|
|
#include <memory>
|
|
#include "displayapp/screens/Screen.h"
|
|
#include "displayapp/Apps.h"
|
|
#include "components/datetime/DateTimeController.h"
|
|
#include "components/settings/Settings.h"
|
|
#include "components/battery/BatteryController.h"
|
|
#include "displayapp/widgets/PageIndicator.h"
|
|
#include "displayapp/widgets/StatusIcons.h"
|
|
|
|
namespace Pinetime {
|
|
namespace Applications {
|
|
namespace Screens {
|
|
class Tile : public Screen {
|
|
public:
|
|
struct Applications {
|
|
const char* icon;
|
|
Pinetime::Applications::Apps application;
|
|
bool enabled;
|
|
};
|
|
|
|
explicit Tile(uint8_t screenID,
|
|
uint8_t numScreens,
|
|
DisplayApp* app,
|
|
Controllers::Settings& settingsController,
|
|
const Controllers::Battery& batteryController,
|
|
const Controllers::Ble& bleController,
|
|
Controllers::DateTime& dateTimeController,
|
|
std::array<Applications, 6>& applications);
|
|
|
|
~Tile() override;
|
|
|
|
void UpdateScreen();
|
|
void OnValueChangedEvent(lv_obj_t* obj, uint32_t buttonId);
|
|
|
|
private:
|
|
DisplayApp* app;
|
|
Controllers::DateTime& dateTimeController;
|
|
|
|
lv_task_t* taskUpdate;
|
|
|
|
lv_obj_t* label_time;
|
|
lv_obj_t* btnm1;
|
|
|
|
Widgets::PageIndicator pageIndicator;
|
|
Widgets::StatusIcons statusIcons;
|
|
|
|
const char* btnmMap[8];
|
|
Pinetime::Applications::Apps apps[6];
|
|
};
|
|
}
|
|
}
|
|
}
|