mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-01-19 00:37:25 +01:00
Build with ON_BOARDING_APP=1 and power off the calculator. When plugging the calculator, the device did not enter the DFU mode nor quits exam mode.
80 lines
2.5 KiB
C++
80 lines
2.5 KiB
C++
#include "update_controller.h"
|
|
#include "../apps_container.h"
|
|
#include <assert.h>
|
|
|
|
namespace OnBoarding {
|
|
|
|
UpdateController::MessageViewWithSkip::MessageViewWithSkip(I18n::Message * messages, KDColor * colors, uint8_t numberOfMessages) :
|
|
MessageView(messages, colors, numberOfMessages),
|
|
m_skipView(KDText::FontSize::Small, I18n::Message::Skip, 1.0f, 0.5f),
|
|
m_okView()
|
|
{
|
|
}
|
|
|
|
int UpdateController::MessageViewWithSkip::numberOfSubviews() const {
|
|
return MessageView::numberOfSubviews() + 2;
|
|
}
|
|
|
|
View * UpdateController::MessageViewWithSkip::subviewAtIndex(int index) {
|
|
uint8_t numberOfMainMessages = MessageView::numberOfSubviews();
|
|
if (index < numberOfMainMessages) {
|
|
return MessageView::subviewAtIndex(index);
|
|
}
|
|
if (index == numberOfMainMessages) {
|
|
return &m_skipView;
|
|
}
|
|
if (index == numberOfMainMessages + 1) {
|
|
return &m_okView;
|
|
}
|
|
assert(false);
|
|
return nullptr;
|
|
}
|
|
|
|
void UpdateController::MessageViewWithSkip::layoutSubviews() {
|
|
// Layout the main message
|
|
MessageView::layoutSubviews();
|
|
// Layout the "skip (OK)"
|
|
KDCoordinate height = bounds().height();
|
|
KDCoordinate width = bounds().width();
|
|
KDCoordinate textHeight = KDText::charSize(KDText::FontSize::Small).height();
|
|
KDSize okSize = m_okView.minimalSizeForOptimalDisplay();
|
|
m_skipView.setFrame(KDRect(0, height-k_bottomMargin-textHeight, width-okSize.width()-k_okMargin-k_skipMargin, textHeight));
|
|
m_okView.setFrame(KDRect(width - okSize.width()-k_okMargin, height-okSize.height()-k_okMargin, okSize));
|
|
}
|
|
|
|
static I18n::Message sOnBoardingMessages[] = {
|
|
I18n::Message::UpdateAvailable,
|
|
I18n::Message::UpdateMessage1,
|
|
I18n::Message::UpdateMessage2,
|
|
I18n::Message::BlankMessage,
|
|
I18n::Message::UpdateMessage3,
|
|
I18n::Message::UpdateMessage4};
|
|
|
|
static KDColor sOnBoardingColors[] = {
|
|
KDColorBlack,
|
|
KDColorBlack,
|
|
KDColorBlack,
|
|
KDColorWhite,
|
|
KDColorBlack,
|
|
Palette::YellowDark};
|
|
|
|
UpdateController::UpdateController() :
|
|
ViewController(nullptr),
|
|
m_messageViewWithSkip(sOnBoardingMessages, sOnBoardingColors, 6)
|
|
{
|
|
}
|
|
|
|
bool UpdateController::handleEvent(Ion::Events::Event event) {
|
|
if (event != Ion::Events::Back && event != Ion::Events::OnOff && event != Ion::Events::USBPlug && event != Ion::Events::USBEnumeration) {
|
|
app()->dismissModalViewController();
|
|
AppsContainer * appsContainer = (AppsContainer *)app()->container();
|
|
if (appsContainer->activeApp()->snapshot() == appsContainer->onBoardingAppSnapshot()) {
|
|
appsContainer->switchTo(appsContainer->appSnapshotAtIndex(0));
|
|
}
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
}
|