Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -405,6 +405,7 @@ list(APPEND SOURCE_FILES
displayapp/screens/Error.cpp
displayapp/screens/Alarm.cpp
displayapp/screens/Styles.cpp
displayapp/screens/ScreenLockConfirmation.cpp
displayapp/Colors.cpp
displayapp/widgets/Counter.cpp
displayapp/widgets/PageIndicator.cpp
Expand Down
1 change: 1 addition & 0 deletions src/displayapp/Apps.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ namespace Pinetime {
Metronome,
Motion,
Steps,
ScreenLockConfirmation,
PassKey,
QuickSettings,
Settings,
Expand Down
23 changes: 19 additions & 4 deletions src/displayapp/DisplayApp.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
#include "displayapp/screens/FlashLight.h"
#include "displayapp/screens/BatteryInfo.h"
#include "displayapp/screens/Steps.h"
#include "displayapp/screens/ScreenLockConfirmation.h"
#include "displayapp/screens/PassKey.h"
#include "displayapp/screens/Error.h"
#include "displayapp/screens/Weather.h"
Expand Down Expand Up @@ -337,6 +338,11 @@ void DisplayApp::Refresh() {
}
break;
case Messages::ButtonLongerPressed:
if (touchHandler.GetScreenLockStatus()) {
touchHandler.SetScreenLockStatus(false);
motorController.RunForDuration(50);
break;
}
// Create reboot app and open it instead
LoadNewScreen(Apps::SysInfo, DisplayApp::FullRefreshDirections::Up);
break;
Expand Down Expand Up @@ -403,8 +409,12 @@ void DisplayApp::LoadScreen(Apps app, DisplayApp::FullRefreshDirections directio

switch (app) {
case Apps::Launcher:
currentScreen =
std::make_unique<Screens::ApplicationList>(this, settingsController, batteryController, bleController, dateTimeController);
currentScreen = std::make_unique<Screens::ApplicationList>(this,
settingsController,
batteryController,
bleController,
dateTimeController,
touchHandler);
break;
case Apps::Motion:
// currentScreen = std::make_unique<Screens::Motion>(motionController);
Expand All @@ -419,7 +429,8 @@ void DisplayApp::LoadScreen(Apps app, DisplayApp::FullRefreshDirections directio
heartRateController,
motionController,
systemTask->nimble().weather(),
filesystem);
filesystem,
touchHandler);
break;

case Apps::Error:
Expand Down Expand Up @@ -468,7 +479,8 @@ void DisplayApp::LoadScreen(Apps app, DisplayApp::FullRefreshDirections directio
brightnessController,
motorController,
settingsController,
bleController);
bleController,
touchHandler);
break;
case Apps::Settings:
currentScreen = std::make_unique<Screens::Settings>(this, settingsController);
Expand Down Expand Up @@ -548,6 +560,9 @@ void DisplayApp::LoadScreen(Apps app, DisplayApp::FullRefreshDirections directio
case Apps::Steps:
currentScreen = std::make_unique<Screens::Steps>(motionController, settingsController);
break;
case Apps::ScreenLockConfirmation:
currentScreen = std::make_unique<Screens::ScreenLockConfirmation>(this, touchHandler);
break;
}
currentApp = app;
}
Expand Down
6 changes: 5 additions & 1 deletion src/displayapp/fonts/fonts.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,10 @@
{
"file": "FontAwesome5-Solid+Brands+Regular.woff",
"range": "0xf294, 0xf242, 0xf54b, 0xf21e, 0xf1e6, 0xf017, 0xf129, 0xf03a, 0xf185, 0xf560, 0xf001, 0xf3fd, 0xf1fc, 0xf45d, 0xf59f, 0xf5a0, 0xf027, 0xf028, 0xf6a9, 0xf04b, 0xf04c, 0xf048, 0xf051, 0xf095, 0xf3dd, 0xf04d, 0xf2f2, 0xf024, 0xf252, 0xf569, 0xf06e, 0xf015, 0xf00c"
},
{
"file": "material-design-icons/MaterialIcons-Regular.ttf",
"range": "0xf00b, 0xe897"
}
],
"bpp": 1,
Expand Down Expand Up @@ -58,7 +62,7 @@
"sources": [
{
"file": "material-design-icons/MaterialIcons-Regular.ttf",
"range": "0xf00b, 0xe3aa-0xe3ac, 0xe7f6-0xe7f7, 0xe8b8, 0xef44, 0xe40a"
"range": "0xf00b, 0xe3aa-0xe3ac, 0xe7f6-0xe7f7, 0xe8b8, 0xef44, 0xe40a, 0xe897"
}
],
"bpp": 1,
Expand Down
5 changes: 4 additions & 1 deletion src/displayapp/screens/ApplicationList.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,14 @@ ApplicationList::ApplicationList(Pinetime::Applications::DisplayApp* app,
Pinetime::Controllers::Settings& settingsController,
const Pinetime::Controllers::Battery& batteryController,
const Pinetime::Controllers::Ble& bleController,
Controllers::DateTime& dateTimeController)
Controllers::DateTime& dateTimeController,
const Controllers::TouchHandler& touchHandler)
: app {app},
settingsController {settingsController},
batteryController {batteryController},
bleController {bleController},
dateTimeController {dateTimeController},
touchHandler {touchHandler},
screens {app, settingsController.GetAppMenu(), CreateScreenList(), Screens::ScreenListModes::UpDown} {
}

Expand All @@ -52,5 +54,6 @@ std::unique_ptr<Screen> ApplicationList::CreateScreen(unsigned int screenNum) co
batteryController,
bleController,
dateTimeController,
touchHandler,
apps);
}
7 changes: 5 additions & 2 deletions src/displayapp/screens/ApplicationList.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
#include "components/battery/BatteryController.h"
#include "displayapp/screens/Symbols.h"
#include "displayapp/screens/Tile.h"
#include "touchhandler/TouchHandler.h"

namespace Pinetime {
namespace Applications {
Expand All @@ -20,7 +21,8 @@ namespace Pinetime {
Pinetime::Controllers::Settings& settingsController,
const Pinetime::Controllers::Battery& batteryController,
const Pinetime::Controllers::Ble& bleController,
Controllers::DateTime& dateTimeController);
Controllers::DateTime& dateTimeController,
const Controllers::TouchHandler& touchHandler);
~ApplicationList() override;
bool OnTouchEvent(TouchEvents event) override;

Expand All @@ -33,6 +35,7 @@ namespace Pinetime {
const Pinetime::Controllers::Battery& batteryController;
const Pinetime::Controllers::Ble& bleController;
Controllers::DateTime& dateTimeController;
const Controllers::TouchHandler& touchHandler;

static constexpr int appsPerScreen = 6;

Expand All @@ -52,7 +55,7 @@ namespace Pinetime {
{"2", Apps::Twos},
{Symbols::drum, Apps::Metronome},
{Symbols::map, Apps::Navigation},
{Symbols::none, Apps::None},
{Symbols::flashlight, Apps::FlashLight},

// {"M", Apps::Motion},
}};
Expand Down
7 changes: 5 additions & 2 deletions src/displayapp/screens/Clock.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,8 @@ Clock::Clock(Controllers::DateTime& dateTimeController,
Controllers::HeartRateController& heartRateController,
Controllers::MotionController& motionController,
Controllers::WeatherService& weatherService,
Controllers::FS& filesystem)
Controllers::FS& filesystem,
const Controllers::TouchHandler& touchHandler)
: dateTimeController {dateTimeController},
batteryController {batteryController},
bleController {bleController},
Expand All @@ -35,6 +36,7 @@ Clock::Clock(Controllers::DateTime& dateTimeController,
motionController {motionController},
weatherService {weatherService},
filesystem {filesystem},
touchHandler {touchHandler},
screen {[this, &settingsController]() {
switch (settingsController.GetWatchFace()) {
case WatchFace::Digital:
Expand Down Expand Up @@ -80,7 +82,8 @@ std::unique_ptr<Screen> Clock::WatchFaceDigitalScreen() {
notificationManager,
settingsController,
heartRateController,
motionController);
motionController,
touchHandler);
}

std::unique_ptr<Screen> Clock::WatchFaceAnalogScreen() {
Expand Down
5 changes: 4 additions & 1 deletion src/displayapp/screens/Clock.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
#include "displayapp/screens/Screen.h"
#include "components/datetime/DateTimeController.h"
#include "components/ble/weather/WeatherService.h"
#include "touchhandler/TouchHandler.h"

namespace Pinetime {
namespace Controllers {
Expand All @@ -30,7 +31,8 @@ namespace Pinetime {
Controllers::HeartRateController& heartRateController,
Controllers::MotionController& motionController,
Controllers::WeatherService& weatherService,
Controllers::FS& filesystem);
Controllers::FS& filesystem,
const Controllers::TouchHandler& touchHandler);
~Clock() override;

bool OnTouchEvent(TouchEvents event) override;
Expand All @@ -46,6 +48,7 @@ namespace Pinetime {
Controllers::MotionController& motionController;
Controllers::WeatherService& weatherService;
Controllers::FS& filesystem;
const Controllers::TouchHandler& touchHandler;

std::unique_ptr<Screen> screen;
std::unique_ptr<Screen> WatchFaceDigitalScreen();
Expand Down
41 changes: 41 additions & 0 deletions src/displayapp/screens/ScreenLockConfirmation.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
#include "displayapp/screens/ScreenLockConfirmation.h"

#include "displayapp/DisplayApp.h"

using namespace Pinetime::Applications::Screens;

namespace {
void ButtonEventHandler(lv_obj_t* obj, lv_event_t event) {
if (event == LV_EVENT_CLICKED) {
static_cast<ScreenLockConfirmation*>(obj->user_data)->OnButtonEvent(obj);
}
}
}

ScreenLockConfirmation::ScreenLockConfirmation(DisplayApp* app, Controllers::TouchHandler& touchHandler)
: app {app}, touchHandler {touchHandler} {
label = lv_label_create(lv_scr_act(), nullptr);
lv_label_set_recolor(label, true);
lv_label_set_text_static(label, "\n#FFFF00 Disable touch?#\n\n\n#808080 Press and hold#\n#808080 button to enable.#");
lv_label_set_align(label, LV_LABEL_ALIGN_CENTER);
lv_obj_align(label, lv_scr_act(), LV_ALIGN_IN_TOP_MID, 0, 0);

btnEnable = lv_btn_create(lv_scr_act(), nullptr);
btnEnable->user_data = this;
lv_obj_set_event_cb(btnEnable, ButtonEventHandler);
lv_obj_set_size(btnEnable, 115, 50);
lv_obj_align(btnEnable, lv_scr_act(), LV_ALIGN_IN_BOTTOM_MID, 0, 0);
txtEnable = lv_label_create(btnEnable, nullptr);
lv_label_set_text_static(txtEnable, "Disable");
}

ScreenLockConfirmation::~ScreenLockConfirmation() {
lv_obj_clean(lv_scr_act());
}

void ScreenLockConfirmation::OnButtonEvent(lv_obj_t* obj) {
if (obj == btnEnable) {
touchHandler.SetScreenLockStatus(true);
app->StartApp(Apps::Clock, DisplayApp::FullRefreshDirections::LeftAnim);
}
}
27 changes: 27 additions & 0 deletions src/displayapp/screens/ScreenLockConfirmation.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
#pragma once

#include "displayapp/screens/Screen.h"
#include <lvgl/lvgl.h>
#include "touchhandler/TouchHandler.h"

namespace Pinetime {
namespace Applications {
namespace Screens {
class ScreenLockConfirmation : public Screen {
public:
ScreenLockConfirmation(DisplayApp* app, Controllers::TouchHandler& touchHandler);
~ScreenLockConfirmation() override;

void OnButtonEvent(lv_obj_t* obj);

private:
DisplayApp* app;
lv_obj_t* label;
lv_obj_t* btnEnable;
lv_obj_t* txtEnable;

Controllers::TouchHandler& touchHandler;
};
}
}
}
2 changes: 2 additions & 0 deletions src/displayapp/screens/Symbols.h
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,8 @@ namespace Pinetime {
static constexpr const char* notificationsOff = "\xEE\x9F\xB6";
static constexpr const char* notificationsOn = "\xEE\x9F\xB7";

static constexpr const char* lock = "\xEE\xA2\x97";

static constexpr const char* flashlight = "\xEF\x80\x8B";
static constexpr const char* paintbrushLg = "\xEE\x90\x8A";
}
Expand Down
8 changes: 6 additions & 2 deletions src/displayapp/screens/Tile.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ namespace {
}

Tile* screen = static_cast<Tile*>(obj->user_data);
auto* eventDataPtr = (uint32_t*) lv_event_get_data();
auto* eventDataPtr = static_cast<const uint32_t*>(lv_event_get_data());
uint32_t eventData = *eventDataPtr;
screen->OnValueChangedEvent(obj, eventData);
}
Expand All @@ -31,8 +31,12 @@ Tile::Tile(uint8_t screenID,
const Controllers::Battery& batteryController,
const Controllers::Ble& bleController,
Controllers::DateTime& dateTimeController,
const Controllers::TouchHandler& touchHandler,
std::array<Applications, 6>& applications)
: app {app}, dateTimeController {dateTimeController}, pageIndicator(screenID, numScreens), statusIcons(batteryController, bleController) {
: app {app},
dateTimeController {dateTimeController},
pageIndicator(screenID, numScreens),
statusIcons(batteryController, bleController, touchHandler) {

settingsController.SetAppMenu(screenID);

Expand Down
2 changes: 2 additions & 0 deletions src/displayapp/screens/Tile.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
#include "components/battery/BatteryController.h"
#include "displayapp/widgets/PageIndicator.h"
#include "displayapp/widgets/StatusIcons.h"
#include "touchhandler/TouchHandler.h"

namespace Pinetime {
namespace Applications {
Expand All @@ -28,6 +29,7 @@ namespace Pinetime {
const Controllers::Battery& batteryController,
const Controllers::Ble& bleController,
Controllers::DateTime& dateTimeController,
const Controllers::TouchHandler& touchHandler,
std::array<Applications, 6>& applications);

~Tile() override;
Expand Down
5 changes: 3 additions & 2 deletions src/displayapp/screens/WatchFaceDigital.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,14 +19,15 @@ WatchFaceDigital::WatchFaceDigital(Controllers::DateTime& dateTimeController,
Controllers::NotificationManager& notificationManager,
Controllers::Settings& settingsController,
Controllers::HeartRateController& heartRateController,
Controllers::MotionController& motionController)
Controllers::MotionController& motionController,
const Controllers::TouchHandler& touchHandler)
: currentDateTime {{}},
dateTimeController {dateTimeController},
notificationManager {notificationManager},
settingsController {settingsController},
heartRateController {heartRateController},
motionController {motionController},
statusIcons(batteryController, bleController) {
statusIcons(batteryController, bleController, touchHandler) {

statusIcons.Create();

Expand Down
4 changes: 3 additions & 1 deletion src/displayapp/screens/WatchFaceDigital.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
#include "components/datetime/DateTimeController.h"
#include "components/ble/BleController.h"
#include "displayapp/widgets/StatusIcons.h"
#include "touchhandler/TouchHandler.h"
#include "utility/DirtyValue.h"

namespace Pinetime {
Expand All @@ -31,7 +32,8 @@ namespace Pinetime {
Controllers::NotificationManager& notificationManager,
Controllers::Settings& settingsController,
Controllers::HeartRateController& heartRateController,
Controllers::MotionController& motionController);
Controllers::MotionController& motionController,
const Controllers::TouchHandler& touchHandler);
~WatchFaceDigital() override;

void Refresh() override;
Expand Down
Loading