Files
MuditaOS/module-apps/application-settings/windows/phone-modes/ConnectionFrequencyWindow.cpp
Pawel Olejniczak 4013416c8d [EGD-7359] Remove 0 connection frequency for message only mode
When Offline/Message only mode is set, Pure should log into
the network to send and download messages based on
connection frequency. The default option was set to 0, which
meant that message only mode was not working at all.
2022-02-02 18:31:13 +01:00

67 lines
2.5 KiB
C++

// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#include "ConnectionFrequencyWindow.hpp"
#include <application-settings/ApplicationSettings.hpp>
#include <application-settings/windows/WindowNames.hpp>
#include <OptionSetting.hpp>
namespace gui
{
ConnectionFrequencyWindow::ConnectionFrequencyWindow(app::ApplicationCommon *app,
app::settingsInterface::ConnectionSettings *connectionSettings)
: BaseSettingsWindow(app, gui::window::name::connection_frequency), connectionSettings(connectionSettings)
{
setTitle(utils::translate("app_settings_title_connection_frequency"));
}
void ConnectionFrequencyWindow::onBeforeShow(ShowMode m, SwitchData *d)
{
refreshOptionsList(
std::distance(frequency.begin(),
std::find(frequency.begin(), frequency.end(), connectionSettings->getConnectionFrequency())));
}
auto ConnectionFrequencyWindow::buildOptionsList() -> std::list<gui::Option>
{
std::list<gui::Option> optList;
auto intervalText = [](uint8_t value) {
const std::string toReplace = "%0";
std::string temp = utils::translate("app_meditation_interval_every_x_minutes");
temp.replace(temp.find(toReplace), toReplace.size(), std::to_string(value));
return temp;
};
for (auto freq : frequency) {
optList.emplace_back(std::make_unique<gui::option::OptionSettings>(
intervalText(freq),
[=](gui::Item &item) {
updateInterval(freq);
return true;
},
nullptr,
nullptr,
(freq == connectionSettings->getConnectionFrequency()) ? option::SettingRightItem::Checked
: option::SettingRightItem::Disabled));
}
navBar->setText(nav_bar::Side::Center, utils::translate(style::strings::common::select));
navBar->setText(nav_bar::Side::Right, utils::translate(style::strings::common::back));
return optList;
}
void ConnectionFrequencyWindow::rebuild()
{
clearOptions();
addOptions(buildOptionsList());
}
void ConnectionFrequencyWindow::updateInterval(uint8_t value)
{
connectionSettings->setConnectionFrequency(value);
refreshOptionsList();
}
} // namespace gui