Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

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