Big UI and navigation Rewrite

new navigation
add some color to the apps
redesign menus
new settings menu
new quick settings
code clean up
size reduction by converting navigation images to font
and more...
This commit is contained in:
Joaquim
2021-04-04 03:08:51 +01:00
parent 58a2d000c4
commit 1d3742e14f
484 changed files with 58615 additions and 10523 deletions

View File

@@ -125,7 +125,7 @@ void SystemTask::Work() {
nrfx_gpiote_in_init(pinTouchIrq, &pinConfig, nrfx_gpiote_evt_handler);
idleTimer = xTimerCreate ("idleTimer", idleTime, pdFALSE, this, IdleTimerCallback);
idleTimer = xTimerCreate ("idleTimer", pdMS_TO_TICKS(settingsController.GetScreenTimeOut()), pdFALSE, this, IdleTimerCallback);
xTimerStart(idleTimer, 0);
// Suppress endless loop diagnostic
@@ -137,14 +137,23 @@ void SystemTask::Work() {
batteryController.Update();
Messages message = static_cast<Messages >(msg);
switch(message) {
case Messages::EnableSleeping:
doNotGoToSleep = false;
break;
case Messages::DisableSleeping:
doNotGoToSleep = true;
break;
case Messages::UpdateTimeOut:
xTimerChangePeriod(idleTimer, pdMS_TO_TICKS(settingsController.GetScreenTimeOut()), 0);
break;
case Messages::GoToRunning:
spi.Wakeup();
twiMaster.Wakeup();
//twiMaster.Wakeup();
//touchPanel.Wakeup();
nimbleController.StartAdvertising();
xTimerStart(idleTimer, 0);
spiNorFlash.Wakeup();
touchPanel.Wakeup();
spiNorFlash.Wakeup();
lcd.Wakeup();
displayApp->PushMessage(Pinetime::Applications::Display::Messages::GoToRunning);
@@ -167,7 +176,7 @@ void SystemTask::Work() {
break;
case Messages::OnNewNotification:
if(isSleeping && !isWakingUp) GoToRunning();
if(notificationManager.IsVibrationEnabled()) motorController.SetDuration(35);
motorController.SetDuration(35);
displayApp->PushMessage(Pinetime::Applications::Display::Messages::NewNotification);
break;
case Messages::BleConnected:
@@ -199,10 +208,18 @@ void SystemTask::Work() {
spiNorFlash.Sleep();
}
lcd.Sleep();
touchPanel.Sleep();
spi.Sleep();
twiMaster.Sleep();
// Double Tap needs the touch screen to be in normal mode
if ( settingsController.getWakeUpMode() != Pinetime::Controllers::Settings::WakeUpMode::DoubleTap ) {
//touchPanel.Sleep();
}
// No Wake uo mode, we can put the twi to sleep
if ( settingsController.getWakeUpMode() == Pinetime::Controllers::Settings::WakeUpMode::None ) {
//twiMaster.Sleep();
}
isSleeping = true;
isGoingToSleep = false;
break;
@@ -253,10 +270,22 @@ void SystemTask::GoToRunning() {
void SystemTask::OnTouchEvent() {
if(isGoingToSleep) return ;
NRF_LOG_INFO("[systemtask] Touch event");
if(!isSleeping) {
PushMessage(Messages::OnTouchEvent);
displayApp->PushMessage(Pinetime::Applications::Display::Messages::TouchEvent);
} else if(!isWakingUp) {
if( settingsController.getWakeUpMode() == Pinetime::Controllers::Settings::WakeUpMode::None or
settingsController.getWakeUpMode() == Pinetime::Controllers::Settings::WakeUpMode::RaiseWrist ) return;
if( settingsController.getWakeUpMode() == Pinetime::Controllers::Settings::WakeUpMode::SingleTap ) {
GoToRunning();
} else if( settingsController.getWakeUpMode() == Pinetime::Controllers::Settings::WakeUpMode::DoubleTap ) {
// error
/*auto info = touchPanel.GetTouchInfo();
if( info.isTouch and info.gesture == Pinetime::Drivers::Cst816S::Gestures::DoubleTap ) {
GoToRunning();
}*/
}
}
}

View File

@@ -37,8 +37,8 @@ namespace Pinetime {
namespace System {
class SystemTask {
public:
enum class Messages {GoToSleep, GoToRunning, OnNewTime, OnNewNotification, OnNewCall, BleConnected,
BleFirmwareUpdateStarted, BleFirmwareUpdateFinished, OnTouchEvent, OnButtonEvent, OnDisplayTaskSleeping
enum class Messages {GoToSleep, GoToRunning, OnNewTime, OnNewNotification, OnNewCall, BleConnected, UpdateTimeOut,
BleFirmwareUpdateStarted, BleFirmwareUpdateFinished, OnTouchEvent, OnButtonEvent, OnDisplayTaskSleeping, EnableSleeping, DisableSleeping
};
SystemTask(Drivers::SpiMaster &spi, Drivers::St7789 &lcd,
@@ -104,7 +104,6 @@ namespace Pinetime {
void ReloadIdleTimer() const;
bool isBleDiscoveryTimerRunning = false;
uint8_t bleDiscoveryTimer = 0;
static constexpr uint32_t idleTime = 15000;
TimerHandle_t idleTimer;
bool doNotGoToSleep = false;