TouchGFX/gui/include/gui/screen1_screen/Screen1View.hpp ... public: ... virtual void buttonHourUpClicked(); virtual void buttonHourDownClicked(); virtual void buttonMinuteUpClicked(); virtual void buttonMinuteDownClicked(); protected: int16_t hour; int16_t minute; ... TouchGFX/gui/src/screen1_screen/Screen1View.cpp Screen1View::Screen1View() : hour(0), minute(0) //clear the new counters { } ... void Screen1View::buttonHourUpClicked() { hour = (hour + 1) % 24; // Keep new value in range 0..23 Unicode::snprintf(textAreaHourBuffer, TEXTAREAHOUR_SIZE, "%02d", hour); textAreaHour.invalidate(); } void Screen1View::buttonHourDownClicked() { hour = (hour + 24 - 1) % 24; // Keep new value in range 0..23 Unicode::snprintf(textAreaHourBuffer, TEXTAREAHOUR_SIZE, "%02d", hour); textAreaHour.invalidate(); } void Screen1View::buttonMinuteUpClicked() { minute = (minute + 1) % 60; // Keep new value in range 0..59 Unicode::snprintf(textAreaMinuteBuffer, TEXTAREAMINUTE_SIZE, "%02d", minute); textAreaMinute.invalidate(); } void Screen1View::buttonMinuteDownClicked() { minute = (minute + 60 - 1) % 60; // Keep new value in range 0..59 Unicode::snprintf(textAreaMinuteBuffer, TEXTAREAMINUTE_SIZE, "%02d", minute); textAreaMinute.invalidate(); } TouchGFX/gui/include/gui/screen2_screen/Screen2View.hpp public: ... virtual void handleTickEvent(); protected: int16_t hour; int16_t minute; int16_t tickCount; int16_t addStart; int16_t addEnd; ... TouchGFX/gui/src/screen2_screen/Screen2View.cpp Screen2View::Screen2View() : hour(0), minute(0), tickCount(0), addStart(1), addEnd(2) { } ... void Screen2View::handleTickEvent() { if (tickCount == 60) { minute++; hour = (hour + (minute / 60)) % 24; minute %= 60; Unicode::snprintf(textClockBuffer1, TEXTCLOCKBUFFER1_SIZE, "%02d", hour); Unicode::snprintf(textClockBuffer2, TEXTCLOCKBUFFER2_SIZE, "%02d", minute); textClock.invalidate(); tickCount = 0; } if (!textClock.isMoveAnimationRunning()) { tickCount++; if (circle.getArcStart() + 340 == circle.getArcEnd()) { addStart = 2; addEnd = 1; } else if (circle.getArcStart() + 20 == circle.getArcEnd()) { addStart = 1; addEnd = 2; } circle.updateArc(circle.getArcStart() + addStart, circle.getArcEnd() + addEnd); } } ... TouchGFX/gui/include/gui/model/Model.hpp #include ... public: void saveHour(int16_t saveHour) { hour = saveHour; } void saveMinute(int16_t saveMinute) { minute = saveMinute; } int16_t getHour() { return hour; } int16_t getMinute() { return minute; } protected: int16_t hour; int16_t minute; ... TouchGFX/gui/src/model/Model.cpp ... Model::Model() : modelListener(0), hour(0), minute(0) { } ... TouchGFX/gui/include/gui/screen1_screen/Screen1Presenter.hpp ... public: void saveHour(int16_t hour) { model->saveHour(hour); } void saveMinute(int16_t minute) { model->saveMinute(minute); } int16_t getHour() { return model->getHour(); } int16_t getMinute() { return model->getMinute(); } ... TouchGFX/gui/include/gui/screen2_screen/Screen2Presenter.hpp ... public: void saveHour(int16_t hour) { model->saveHour(hour); } void saveMinute(int16_t minute) { model->saveMinute(minute); } int16_t getHour() { return model->getHour(); } int16_t getMinute() { return model->getMinute(); } ... Screen1View.cpp ... void Screen1View::setupScreen() { Screen1ViewBase::setupScreen(); hour = presenter->getHour(); minute = presenter->getMinute(); Unicode::snprintf(textAreaHourBuffer, TEXTAREAHOUR_SIZE, "%02d", hour); Unicode::snprintf(textAreaMinuteBuffer, TEXTAREAMINUTE_SIZE, "%02d", minute); } ... Screen1View.hpp ... public: virtual void buttonSaveHourClicked() { presenter->saveHour(hour); } virtual void buttonSaveMinuteClicked() { presenter->saveMinute(minute); } ... Screen2View.cpp ... void Screen2View::setupScreen() { Screen2ViewBase::setupScreen(); hour = presenter->getHour(); minute = presenter->getMinute(); Unicode::snprintf(textClockBuffer1, TEXTCLOCKBUFFER1_SIZE, "%02d", hour); Unicode::snprintf(textClockBuffer2, TEXTCLOCKBUFFER2_SIZE, "%02d", minute); } ... Screen2View.cpp ... void Screen2View::tearDownScreen() { presenter->saveHour(hour); presenter->saveMinute(minute); Screen2ViewBase::tearDownScreen(); } ...