Handle buttons & encoders in View, not Model
This commit is contained in:
@ -28,8 +28,6 @@ public:
|
||||
|
||||
virtual ~MissionSelectPresenter(){};
|
||||
|
||||
virtual void notifyMissionChanged(Mission mission) override;
|
||||
|
||||
private:
|
||||
MissionSelectPresenter();
|
||||
|
||||
|
||||
@ -14,9 +14,13 @@ public:
|
||||
|
||||
void setSelectedMission(Mission mission);
|
||||
|
||||
virtual void incMission();
|
||||
virtual void decMission();
|
||||
|
||||
protected:
|
||||
private:
|
||||
MissionSelectElement *selected;
|
||||
Mission selectedMission;
|
||||
};
|
||||
|
||||
#endif // MISSIONSELECTVIEW_HPP
|
||||
|
||||
@ -12,13 +12,8 @@ public:
|
||||
|
||||
void tick();
|
||||
|
||||
Mission getCurrentMission() const { return mission; }
|
||||
|
||||
protected:
|
||||
ModelListener *modelListener;
|
||||
|
||||
private:
|
||||
Mission mission;
|
||||
};
|
||||
|
||||
#endif // MODEL_HPP
|
||||
|
||||
@ -13,8 +13,6 @@ public:
|
||||
|
||||
void bind(Model *m) { model = m; }
|
||||
|
||||
virtual void notifyMissionChanged(Mission newMission){};
|
||||
|
||||
protected:
|
||||
Model *model;
|
||||
};
|
||||
|
||||
@ -11,9 +11,9 @@ void MissionSelectElement::initialize() {
|
||||
void MissionSelectElement::setUp(uint32_t i, TEXTS label) {
|
||||
uint8_t val;
|
||||
if (i % 2 == 0) {
|
||||
val = 0b10000;
|
||||
val = 0x22;
|
||||
} else {
|
||||
val = 0b11000;
|
||||
val = 0x11;
|
||||
}
|
||||
bgColor = touchgfx::Color::getColorFromRGB(val, val, val);
|
||||
bg.setColor(bgColor);
|
||||
|
||||
@ -7,7 +7,3 @@ MissionSelectPresenter::MissionSelectPresenter(MissionSelectView &v)
|
||||
void MissionSelectPresenter::activate() {}
|
||||
|
||||
void MissionSelectPresenter::deactivate() {}
|
||||
|
||||
void MissionSelectPresenter::notifyMissionChanged(Mission mission) {
|
||||
view.setSelectedMission(mission);
|
||||
}
|
||||
|
||||
@ -1,7 +1,9 @@
|
||||
#include "stw_defines.h"
|
||||
#include "texts/TextKeysAndLanguages.hpp"
|
||||
#include <gui/missionselect_screen/MissionSelectView.hpp>
|
||||
|
||||
MissionSelectView::MissionSelectView() : selected{nullptr} {}
|
||||
MissionSelectView::MissionSelectView()
|
||||
: selected{nullptr}, selectedMission{MISSION_NONE} {}
|
||||
|
||||
void MissionSelectView::setupScreen() {
|
||||
MissionSelectViewBase::setupScreen();
|
||||
@ -10,14 +12,38 @@ void MissionSelectView::setupScreen() {
|
||||
autox.setUp(2, T_AUTOX);
|
||||
trackdrive.setUp(3, T_TRACKDRIVE);
|
||||
ebs.setUp(4, T_EBS);
|
||||
inspection.setUp(6, T_INSPECTION);
|
||||
manual.setUp(7, T_MANUAL);
|
||||
inspection.setUp(5, T_INSPECTION);
|
||||
manual.setUp(6, T_MANUAL);
|
||||
}
|
||||
|
||||
void MissionSelectView::tearDownScreen() {
|
||||
MissionSelectViewBase::tearDownScreen();
|
||||
}
|
||||
|
||||
void MissionSelectView::incMission() {
|
||||
int mission_int = static_cast<int>(selectedMission);
|
||||
mission_int++;
|
||||
// mission_int = 0 is MISSION_NONE, which we don't want to select.
|
||||
// NUM_MISSIONS is equal to the last mission, so check for strictly
|
||||
// greater.
|
||||
if (mission_int > NUM_MISSIONS) {
|
||||
mission_int = 1;
|
||||
}
|
||||
setSelectedMission(static_cast<Mission>(mission_int));
|
||||
}
|
||||
|
||||
void MissionSelectView::decMission() {
|
||||
int mission_int = static_cast<int>(selectedMission);
|
||||
mission_int--;
|
||||
// mission_int = 0 is MISSION_NONE, which we don't want to select.
|
||||
// NUM_MISSIONS is equal to the last mission, so check for strictly
|
||||
// greater.
|
||||
if (mission_int <= 0) {
|
||||
mission_int = NUM_MISSIONS;
|
||||
}
|
||||
setSelectedMission(static_cast<Mission>(mission_int));
|
||||
}
|
||||
|
||||
void MissionSelectView::setSelectedMission(Mission mission) {
|
||||
if (selected != nullptr) {
|
||||
selected->setSelected(false);
|
||||
@ -49,4 +75,5 @@ void MissionSelectView::setSelectedMission(Mission mission) {
|
||||
break;
|
||||
}
|
||||
selected->setSelected(true);
|
||||
selectedMission = mission;
|
||||
}
|
||||
|
||||
@ -6,38 +6,6 @@
|
||||
#include <gui/model/Model.hpp>
|
||||
#include <gui/model/ModelListener.hpp>
|
||||
|
||||
Model::Model() : modelListener(0), mission{MISSION_NONE} {}
|
||||
Model::Model() : modelListener(0) {}
|
||||
|
||||
void Model::tick() {
|
||||
UIMessage msg;
|
||||
while (tx_queue_receive(&ui_queue, &msg, TX_NO_WAIT) == TX_SUCCESS) {
|
||||
switch (msg.kind) {
|
||||
case UMK_BTN_RELEASED:
|
||||
// TODO: What do we do with this?
|
||||
break;
|
||||
case UMK_ENC_CW: {
|
||||
int mission_int = static_cast<int>(mission);
|
||||
mission_int++;
|
||||
// mission_int = 0 is MISSION_NONE, which we don't want to select.
|
||||
// NUM_MISSIONS is equal to the last mission, so check for strictly
|
||||
// greater.
|
||||
if (mission_int > NUM_MISSIONS) {
|
||||
mission_int = 1;
|
||||
}
|
||||
mission = static_cast<Mission>(mission_int);
|
||||
modelListener->notifyMissionChanged(mission);
|
||||
break;
|
||||
}
|
||||
case UMK_ENC_CCW:
|
||||
int mission_int = static_cast<int>(mission);
|
||||
mission_int--;
|
||||
if (mission_int <= 0) {
|
||||
mission_int = NUM_MISSIONS;
|
||||
}
|
||||
mission = static_cast<Mission>(mission_int);
|
||||
modelListener->notifyMissionChanged(mission);
|
||||
break;
|
||||
}
|
||||
HAL_GPIO_TogglePin(STATUS2_GPIO_Port, STATUS2_Pin);
|
||||
}
|
||||
}
|
||||
void Model::tick() {}
|
||||
|
||||
Reference in New Issue
Block a user