#include "BaseActivity.h" #include "globals.h" #include "Helpers.h" #include "Logs.h" BaseActivity::BaseActivity( IActivity* mParentActivity , IActivity* mChildActivity , IActivity* mPreviousActivity , IActivity* mNextActivity ) : m_lcdUpdateNeeded(true) , m_parentActivity(mParentActivity), m_childActivity(mChildActivity), m_previousActivity(mPreviousActivity) , m_nextActivity(mNextActivity) { } void BaseActivity::begin() { m_lcdUpdateNeeded = true; } void BaseActivity::loop() { if (!g_hibernateService.getValue() && !g_hibernateService.hasChanged()) { if (g_btnCancel.wasReleased()) { LOG(1, "BaseActivity: Cancel pressed"); onButtonReleased(Cancel); } else if (g_btnOk.wasReleased()) { LOG(1, "BaseActivity: Ok pressed"); onButtonReleased(Ok); } else if (g_btnMinus.wasReleased()) { LOG(1, "BaseActivity: Minus pressed"); onButtonReleased(Minus); } else if (g_btnPlus.wasReleased()) { LOG(1, "BaseActivity: Plus pressed"); onButtonReleased(Plus); } } if (m_lcdUpdateNeeded) { updateLcd(); } } void BaseActivity::updateLcd() { LOG(1, "BaseActivity: Updating LCD"); char lines[2][17]; lines[0][0] = 0; lines[1][0] = 0; char* lines_[2] = {lines[0], lines[1]}; getLcdText(lines_); for (int i = 0; i < 2; ++i) { g_lcd.setCursor(0, i); Helpers::fillLine(lines[i], 16, ' '); g_lcd.print(lines[i]); } m_lcdUpdateNeeded = false; } void BaseActivity::onButtonReleased(BaseActivity::Button button) { if (button == Cancel) { if (m_parentActivity) { g_appCore.setActivity(m_parentActivity); } } else if (button == Ok) { if (m_childActivity) { g_appCore.setActivity(m_childActivity); } } else if (button == Minus) { if (m_previousActivity) { g_appCore.setActivity(m_previousActivity); } } else if (button == Plus) { if (m_nextActivity) { g_appCore.setActivity(m_nextActivity); } } }