mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-03-30 04:00:02 +02:00
[apps/hardware_test] Redesign hardware test
Change-Id: Id2c55fe66ca68ce617ea131f5cfb77d78557860b
This commit is contained in:
113
apps/hardware_test/pop_up_controller.cpp
Normal file
113
apps/hardware_test/pop_up_controller.cpp
Normal file
@@ -0,0 +1,113 @@
|
||||
#include "pop_up_controller.h"
|
||||
#include "../i18n.h"
|
||||
#include "../apps_container.h"
|
||||
#include <assert.h>
|
||||
|
||||
namespace HardwareTest {
|
||||
|
||||
PopUpController::PopUpController() :
|
||||
ViewController(nullptr),
|
||||
m_contentView(this)
|
||||
{
|
||||
}
|
||||
|
||||
View * PopUpController::view() {
|
||||
return &m_contentView;
|
||||
}
|
||||
|
||||
void PopUpController::didBecomeFirstResponder() {
|
||||
m_contentView.setSelectedButton(0);
|
||||
}
|
||||
|
||||
bool PopUpController::handleEvent(Ion::Events::Event event) {
|
||||
if (event == Ion::Events::Left && m_contentView.selectedButton() == 1) {
|
||||
m_contentView.setSelectedButton(0);
|
||||
return true;
|
||||
}
|
||||
if (event == Ion::Events::Right && m_contentView.selectedButton() == 0) {
|
||||
m_contentView.setSelectedButton(1);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
PopUpController::ContentView::ContentView(Responder * parentResponder) :
|
||||
Responder(parentResponder),
|
||||
m_cancelButton(this, I18n::Message::Cancel, Invocation([](void * context, void * sender) {
|
||||
PopUpController::ContentView * view = (PopUpController::ContentView *)context;
|
||||
view->app()->dismissModalViewController();
|
||||
}, this), KDText::FontSize::Small),
|
||||
m_okButton(this, I18n::Message::Ok, Invocation([](void * context, void * sender) {
|
||||
PopUpController::ContentView * view = (PopUpController::ContentView *)context;
|
||||
AppsContainer * appsContainer = (AppsContainer *)view->app()->container();
|
||||
appsContainer->switchTo(appsContainer->hardwareTestAppSnapshot());
|
||||
}, this), KDText::FontSize::Small),
|
||||
m_warningTextView(KDText::FontSize::Small, I18n::Message::Warning, 0.5, 0.5, KDColorWhite, KDColorBlack),
|
||||
m_messageTextView1(KDText::FontSize::Small, I18n::Message::HardwareTestLaunch1, 0.5, 0.5, KDColorWhite, KDColorBlack),
|
||||
m_messageTextView2(KDText::FontSize::Small, I18n::Message::HardwareTestLaunch2, 0.5, 0.5, KDColorWhite, KDColorBlack),
|
||||
m_messageTextView3(KDText::FontSize::Small, I18n::Message::HardwareTestLaunch3, 0.5, 0.5, KDColorWhite, KDColorBlack),
|
||||
m_messageTextView4(KDText::FontSize::Small, I18n::Message::HardwareTestLaunch4, 0.5, 0.5, KDColorWhite, KDColorBlack)
|
||||
{
|
||||
}
|
||||
|
||||
void PopUpController::ContentView::drawRect(KDContext * ctx, KDRect rect) const {
|
||||
ctx->fillRect(bounds(), KDColorBlack);
|
||||
}
|
||||
|
||||
void PopUpController::ContentView::setSelectedButton(int selectedButton) {
|
||||
m_cancelButton.setHighlighted(selectedButton == 0);
|
||||
m_okButton.setHighlighted(selectedButton == 1);
|
||||
if (selectedButton == 0) {
|
||||
app()->setFirstResponder(&m_cancelButton);
|
||||
} else {
|
||||
app()->setFirstResponder(&m_okButton);
|
||||
}
|
||||
}
|
||||
|
||||
int PopUpController::ContentView::selectedButton() {
|
||||
if (m_cancelButton.isHighlighted()) {
|
||||
return 0;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
int PopUpController::ContentView::numberOfSubviews() const {
|
||||
return 7;
|
||||
}
|
||||
|
||||
View * PopUpController::ContentView::subviewAtIndex(int index) {
|
||||
switch (index) {
|
||||
case 0:
|
||||
return &m_warningTextView;
|
||||
case 1:
|
||||
return &m_messageTextView1;
|
||||
case 2:
|
||||
return &m_messageTextView2;
|
||||
case 3:
|
||||
return &m_messageTextView3;
|
||||
case 4:
|
||||
return &m_messageTextView4;
|
||||
case 5:
|
||||
return &m_cancelButton;
|
||||
case 6:
|
||||
return &m_okButton;
|
||||
default:
|
||||
assert(false);
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
void PopUpController::ContentView::layoutSubviews() {
|
||||
KDCoordinate height = bounds().height();
|
||||
KDCoordinate width = bounds().width();
|
||||
KDCoordinate textHeight = KDText::stringSize(" ", KDText::FontSize::Small).height();
|
||||
m_warningTextView.setFrame(KDRect(0, k_topMargin, width, textHeight));
|
||||
m_messageTextView1.setFrame(KDRect(0, k_topMargin+k_paragraphHeight+textHeight, width, textHeight));
|
||||
m_messageTextView2.setFrame(KDRect(0, k_topMargin+k_paragraphHeight+2*textHeight, width, textHeight));
|
||||
m_messageTextView3.setFrame(KDRect(0, k_topMargin+k_paragraphHeight+3*textHeight, width, textHeight));
|
||||
m_messageTextView4.setFrame(KDRect(0, k_topMargin+k_paragraphHeight+4*textHeight, width, textHeight));
|
||||
m_cancelButton.setFrame(KDRect(k_buttonMargin, height-k_buttonMargin-k_buttonHeight, (width-3*k_buttonMargin)/2, k_buttonHeight));
|
||||
m_okButton.setFrame(KDRect(2*k_buttonMargin+(width-3*k_buttonMargin)/2, height-k_buttonMargin-k_buttonHeight, (width-3*k_buttonMargin)/2, k_buttonHeight));
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user