mirror of
https://github.com/mudita/MuditaOS.git
synced 2026-01-02 02:48:51 -05:00
Fix of the issue that pressing 'Save' when setting time would set the time indeed, but the UI would not return to previous window, what might look as if saving failed.
72 lines
2.6 KiB
C++
72 lines
2.6 KiB
C++
// Copyright (c) 2017-2023, Mudita Sp. z.o.o. All rights reserved.
|
|
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
|
|
|
|
#include "ChangeDateAndTimeWindow.hpp"
|
|
|
|
#include <InputEvent.hpp>
|
|
#include <ListView.hpp>
|
|
#include <service-time/ServiceTimeName.hpp>
|
|
#include <service-time/service-time/TimeMessage.hpp>
|
|
#include <widgets/DateAndTimeStyle.hpp>
|
|
|
|
namespace gui
|
|
{
|
|
ChangeDateAndTimeWindow::ChangeDateAndTimeWindow(app::ApplicationCommon *app, std::string name)
|
|
: AppWindow(app, std::move(name)), dateAndTimeModel{std::make_shared<DateAndTimeModel>(this->application)}
|
|
{
|
|
buildInterface();
|
|
}
|
|
|
|
void ChangeDateAndTimeWindow::buildInterface()
|
|
{
|
|
AppWindow::buildInterface();
|
|
setTitle(utils::translate("app_settings_date_and_time"));
|
|
|
|
navBar->setActive(gui::nav_bar::Side::Right, true);
|
|
navBar->setActive(gui::nav_bar::Side::Center, true);
|
|
navBar->setText(gui::nav_bar::Side::Right, utils::translate(style::strings::common::back));
|
|
navBar->setText(gui::nav_bar::Side::Center, utils::translate(style::strings::common::save));
|
|
|
|
list = new gui::ListView(this,
|
|
style::window::date_and_time::listView_x,
|
|
style::window::date_and_time::listView_y,
|
|
style::window::date_and_time::listView_w,
|
|
style::window::date_and_time::listView_h,
|
|
dateAndTimeModel,
|
|
gui::listview::ScrollBarType::PreRendered);
|
|
setFocusItem(list);
|
|
|
|
fromTillDate = std::make_shared<utils::time::FromTillDate>();
|
|
fromTillDate->from = TimePointNow();
|
|
dateAndTimeModel->loadData(fromTillDate);
|
|
}
|
|
|
|
bool ChangeDateAndTimeWindow::onInput(const gui::InputEvent &inputEvent)
|
|
{
|
|
if (AppWindow::onInput(inputEvent)) {
|
|
return true;
|
|
}
|
|
|
|
if (inputEvent.isShortRelease(gui::KeyCode::KEY_ENTER)) {
|
|
dateAndTimeModel->saveData(fromTillDate);
|
|
sendRtcUpdateTimeMessage();
|
|
application->returnToPreviousWindow();
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
void ChangeDateAndTimeWindow::rebuild()
|
|
{
|
|
erase();
|
|
buildInterface();
|
|
}
|
|
|
|
void ChangeDateAndTimeWindow::sendRtcUpdateTimeMessage()
|
|
{
|
|
auto msg = std::make_shared<stm::message::TimeChangeRequestMessage>(TimePointToTimeT(fromTillDate->from));
|
|
application->bus.sendUnicast(std::move(msg), service::name::service_time);
|
|
}
|
|
} /* namespace gui */
|