You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. #include "BaseActivity.h"
  2. #include "globals.h"
  3. #include "Helpers.h"
  4. #include "Logs.h"
  5. BaseActivity::BaseActivity(
  6. IActivity* mParentActivity
  7. , IActivity* mChildActivity
  8. , IActivity* mPreviousActivity
  9. , IActivity* mNextActivity
  10. )
  11. : m_lcdUpdateNeeded(true)
  12. , m_parentActivity(mParentActivity), m_childActivity(mChildActivity), m_previousActivity(mPreviousActivity)
  13. , m_nextActivity(mNextActivity)
  14. {
  15. }
  16. void BaseActivity::begin()
  17. {
  18. m_lcdUpdateNeeded = true;
  19. }
  20. void BaseActivity::loop()
  21. {
  22. if (!g_hibernateService.getValue() && !g_hibernateService.hasChanged())
  23. {
  24. if (g_btnCancel.wasReleased())
  25. {
  26. LOG(1, "BaseActivity: Cancel pressed");
  27. onButtonReleased(Cancel);
  28. }
  29. else if (g_btnOk.wasReleased())
  30. {
  31. LOG(1, "BaseActivity: Ok pressed");
  32. onButtonReleased(Ok);
  33. }
  34. else if (g_btnMinus.wasReleased())
  35. {
  36. LOG(1, "BaseActivity: Minus pressed");
  37. onButtonReleased(Minus);
  38. }
  39. else if (g_btnPlus.wasReleased())
  40. {
  41. LOG(1, "BaseActivity: Plus pressed");
  42. onButtonReleased(Plus);
  43. }
  44. }
  45. if (m_lcdUpdateNeeded)
  46. {
  47. updateLcd();
  48. }
  49. }
  50. void BaseActivity::updateLcd()
  51. {
  52. LOG(1, "BaseActivity: Updating LCD");
  53. char lines[2][17];
  54. lines[0][0] = 0;
  55. lines[1][0] = 0;
  56. char* lines_[2] = {lines[0], lines[1]};
  57. getLcdText(lines_);
  58. for (int i = 0; i < 2; ++i)
  59. {
  60. g_lcd.setCursor(0, i);
  61. Helpers::fillLine(lines[i], 16, ' ');
  62. g_lcd.print(lines[i]);
  63. }
  64. m_lcdUpdateNeeded = false;
  65. }
  66. void BaseActivity::onButtonReleased(BaseActivity::Button button)
  67. {
  68. if (button == Cancel)
  69. {
  70. if (m_parentActivity)
  71. {
  72. g_appCore.setActivity(m_parentActivity);
  73. }
  74. }
  75. else if (button == Ok)
  76. {
  77. if (m_childActivity)
  78. {
  79. g_appCore.setActivity(m_childActivity);
  80. }
  81. }
  82. else if (button == Minus)
  83. {
  84. if (m_previousActivity)
  85. {
  86. g_appCore.setActivity(m_previousActivity);
  87. }
  88. }
  89. else if (button == Plus)
  90. {
  91. if (m_nextActivity)
  92. {
  93. g_appCore.setActivity(m_nextActivity);
  94. }
  95. }
  96. }