M products/BellHybrid/CMakeLists.txt => products/BellHybrid/CMakeLists.txt +1 -0
@@ 104,4 104,5 @@ add_subdirectory(services)
add_subdirectory(sys)
option(CONFIG_ENABLE_TEMP "Enable displaying temperature" OFF)
+option(CONFIG_SHOW_MEMORY_INFO "Enable displaying memory info" OFF)
configure_file(config/ProductConfig.in.hpp ${CMAKE_BINARY_DIR}/ProductConfig.hpp @ONLY)
M products/BellHybrid/apps/application-bell-onboarding/presenter/OnBoardingLanguageWindowPresenter.cpp => products/BellHybrid/apps/application-bell-onboarding/presenter/OnBoardingLanguageWindowPresenter.cpp +1 -3
@@ 11,9 11,7 @@ namespace app::OnBoarding
std::vector<std::string> OnBoardingLanguageWindowPresenter::getLanguages()
{
- auto languages = loader.getAvailableDisplayLanguages();
- std::sort(languages.begin(), languages.end());
- return languages;
+ return languages.getSupportedLanguages();
}
unsigned OnBoardingLanguageWindowPresenter::getSelectedLanguageIndex()
M products/BellHybrid/apps/application-bell-onboarding/presenter/OnBoardingLanguageWindowPresenter.hpp => products/BellHybrid/apps/application-bell-onboarding/presenter/OnBoardingLanguageWindowPresenter.hpp +2 -2
@@ 5,7 5,7 @@
#include <apps-common/BasePresenter.hpp>
#include <apps-common/ApplicationCommon.hpp>
-#include <i18n/i18n.hpp>
+#include <common/Languages.hpp>
#include <vector>
#include <string>
@@ 33,7 33,7 @@ namespace app::OnBoarding
class OnBoardingLanguageWindowPresenter : public OnBoardingLanguageWindowContract::Presenter
{
private:
- utils::LangLoader loader;
+ common::Languages languages;
app::ApplicationCommon *app;
public:
M products/BellHybrid/apps/application-bell-settings/models/advanced/AboutYourBellModel.cpp => products/BellHybrid/apps/application-bell-settings/models/advanced/AboutYourBellModel.cpp +3 -0
@@ 5,6 5,7 @@
#include <BellSettingsStyle.hpp>
#include <widgets/advanced/AboutYourBellListItem.hpp>
+#include <ProductConfig.hpp>
#include <ListView.hpp>
#include <product/version.hpp>
@@ 46,6 47,7 @@ namespace app::bell_settings
utils::translate("app_bell_settings_advanced_about_version"),
gui::AboutYourBellListItem::TokenMap({{"$VERSION", std::string(VERSION)}})));
+#if CONFIG_SHOW_MEMORY_INFO == 1
struct statvfs stat;
const auto result = statvfs(purefs::dir::getRootDiskPath().c_str(), &stat);
if (result < 0) {
@@ 60,6 62,7 @@ namespace app::bell_settings
utils::translate("app_bell_settings_advanced_about_storage_text"),
gui::AboutYourBellListItem::TokenMap(
{{"$USED_MEMORY", std::to_string(usedMB)}, {"$TOTAL_MEMORY", std::to_string(totalMB)}})));
+#endif
internalData.push_back(
new gui::AboutYourBellListItem(utils::translate("app_bell_settings_advanced_about_info_title"),
M products/BellHybrid/apps/application-bell-settings/models/alarm_settings/SnoozeListItemProvider.cpp => products/BellHybrid/apps/application-bell-settings/models/alarm_settings/SnoozeListItemProvider.cpp +54 -25
@@ 11,15 11,46 @@ namespace app::bell_settings
{
using namespace gui;
- enum Intervals
+ NumWithStringListItem::NumWithStringSpinner::Range getDefaultChimeIntervalRange()
{
- Interval_1 = 1,
- Interval_2 = 2,
- Interval_5 = 5,
- Interval_10 = 10,
- Interval_15 = 15,
- Interval_30 = 30
- };
+ const UTF8 minStr = utils::translate("common_minute_short");
+ return {
+ NumWithStringListItem::Value{utils::translate("app_settings_toggle_off")},
+ NumWithStringListItem::Value{1, minStr},
+ NumWithStringListItem::Value{2, minStr},
+ NumWithStringListItem::Value{3, minStr},
+ NumWithStringListItem::Value{5, minStr},
+ };
+ }
+
+ NumWithStringListItem::NumWithStringSpinner::Range transformChimeIntervalsRange(const std::uint32_t chimeLength)
+ {
+ auto chimeIntervals = getDefaultChimeIntervalRange();
+
+ chimeIntervals.erase(
+ std::remove_if(chimeIntervals.begin() + 1,
+ chimeIntervals.end(),
+ [chimeLength](const auto &e) { return e.getValue().value() >= chimeLength; }),
+ chimeIntervals.end());
+
+ return chimeIntervals;
+ }
+
+ std::optional<NumWithStringListItem::Value> calculateCurrentChimeIntervalValue(
+ const NumWithStringListItem::NumWithStringSpinner::Range &range,
+ const NumWithStringListItem::Value &chimeInterval)
+ {
+ if (range.size() == 1) {
+ return {};
+ }
+
+ if (chimeInterval.getValue() && (chimeInterval.getValue().value() >= range.back().getValue().value())) {
+ return range.back();
+ }
+ else {
+ return chimeInterval;
+ }
+ }
SnoozeListItemProvider::SnoozeListItemProvider(AbstractSnoozeSettingsModel &model,
std::vector<UTF8> chimeTonesRange)
@@ 66,33 97,31 @@ namespace app::bell_settings
internalData.emplace_back(chimeLength);
- const UTF8 minStr = utils::translate("common_minute_short");
- const auto range = NumWithStringListItem::NumWithStringSpinner::Range{NumWithStringListItem::Value{0, minStr}};
-
auto chimeInterval = new NumWithStringListItem(
model.getSnoozeChimeInterval(),
- range,
+ getDefaultChimeIntervalRange(),
utils::translate("app_bell_settings_alarm_settings_snooze_chime_interval"),
utils::translate("app_bell_settings_alarm_settings_snooze_chime_interval_bot_desc"));
+ chimeLength->setValue();
internalData.emplace_back(chimeInterval);
chimeLength->onProceed = [chimeInterval, chimeLength, this]() {
if (chimeInterval != nullptr) {
- auto val = chimeLength->getCurrentValue();
- NumWithStringListItem::NumWithStringSpinner::Range chimeRange;
- const UTF8 minStr = utils::translate("common_minute_short");
- chimeRange.push_back(NumWithStringListItem::Value{utils::translate("app_alarm_clock_no_snooze")});
- for (unsigned int i = 1; i <= val; i++) {
- if ((i != Intervals::Interval_1) && (i != Intervals::Interval_2) && (i != Intervals::Interval_5) &&
- (i != Intervals::Interval_10) && (i != Intervals::Interval_15) &&
- (i != Intervals::Interval_30)) {
- continue;
- }
- chimeRange.push_back(NumWithStringListItem::Value{i, minStr});
+ const auto currentChimeLength = chimeLength->getCurrentValue();
+ const auto currentChimeInterval = chimeInterval->getCurrentValue();
+ const auto calculatedRange = transformChimeIntervalsRange(currentChimeLength);
+ const auto calculatedChimeInterval =
+ calculateCurrentChimeIntervalValue(calculatedRange, currentChimeInterval);
+
+ if (calculatedChimeInterval) {
+ chimeInterval->getSpinner()->setRange(calculatedRange);
+ chimeInterval->getSpinner()->setCurrentValue(calculatedChimeInterval.value());
+ chimeInterval->setArrowsVisibility();
+ }
+ else {
+ this->onExit();
}
- chimeInterval->getSpinner()->setRange(chimeRange);
- chimeInterval->setArrowsVisibility(chimeRange);
}
return false;
};
M products/BellHybrid/apps/application-bell-settings/presenter/advanced/LanguageWindowPresenter.cpp => products/BellHybrid/apps/application-bell-settings/presenter/advanced/LanguageWindowPresenter.cpp +1 -3
@@ 11,9 11,7 @@ namespace app::bell_settings
std::vector<std::string> LanguageWindowPresenter::getLanguages() const
{
- auto languages = loader.getAvailableDisplayLanguages();
- std::sort(languages.begin(), languages.end());
- return languages;
+ return languages.getSupportedLanguages();
}
std::string LanguageWindowPresenter::getSelectedLanguage() const
M products/BellHybrid/apps/application-bell-settings/presenter/advanced/LanguageWindowPresenter.hpp => products/BellHybrid/apps/application-bell-settings/presenter/advanced/LanguageWindowPresenter.hpp +2 -2
@@ 5,7 5,7 @@
#include <apps-common/BasePresenter.hpp>
#include <apps-common/ApplicationCommon.hpp>
-#include <i18n/i18n.hpp>
+#include <common/Languages.hpp>
#include <vector>
#include <string>
@@ 33,7 33,7 @@ namespace app::bell_settings
class LanguageWindowPresenter : public LanguageWindowContract::Presenter
{
private:
- utils::LangLoader loader;
+ common::Languages languages;
app::ApplicationCommon *app{};
public:
M products/BellHybrid/apps/application-bell-settings/widgets/advanced/AboutYourBellListItem.cpp => products/BellHybrid/apps/application-bell-settings/widgets/advanced/AboutYourBellListItem.cpp +1 -1
@@ 14,7 14,7 @@ namespace gui
{
setMinimumSize(bell_settings_style::about_your_bell_window::list_item::width,
bell_settings_style::about_your_bell_window::list_item::height);
- setMargins(Margins(0, style::margins::big, 0, style::margins::big));
+ setMargins(Margins(0, style::margins::big, 0, style::margins::huge));
activeItem = false;
body = new VBox(this, 0, 0, 0, 0);
M products/BellHybrid/apps/application-bell-settings/windows/advanced/AboutYourBellWindow.cpp => products/BellHybrid/apps/application-bell-settings/windows/advanced/AboutYourBellWindow.cpp +4 -3
@@ 28,11 28,12 @@ namespace gui
list = new ListView(this,
style::window::default_left_margin,
- style::window::default_vertical_pos,
- style::listview::body_width_with_scroll,
- style::window::default_body_height,
+ top_margin,
+ width,
+ height,
presenter->getPagesProvider(),
listview::ScrollBarType::Fixed);
+ list->setAlignment(Alignment(Alignment::Horizontal::Center, Alignment::Vertical::Center));
setFocusItem(list);
list->rebuildList();
M products/BellHybrid/apps/application-bell-settings/windows/advanced/AboutYourBellWindow.hpp => products/BellHybrid/apps/application-bell-settings/windows/advanced/AboutYourBellWindow.hpp +4 -0
@@ 18,6 18,10 @@ namespace gui
std::shared_ptr<app::bell_settings::AboutYourBellWindowContract::Presenter> presenter);
private:
+ static constexpr auto height = 400;
+ static constexpr auto width = 380;
+ static constexpr auto top_margin = 41;
+
void buildInterface() override;
ListView *list{};
M products/BellHybrid/apps/common/CMakeLists.txt => products/BellHybrid/apps/common/CMakeLists.txt +1 -0
@@ 40,6 40,7 @@ target_sources(application-bell-common
src/options/OptionBellMenu.cpp
src/options/BellOptionsNavigation.cpp
PUBLIC
+ include/common/Languages.hpp
include/common/BellListItemProvider.hpp
include/common/SoundsRepository.hpp
include/common/BellPowerOffPresenter.hpp
A products/BellHybrid/apps/common/include/common/Languages.hpp => products/BellHybrid/apps/common/include/common/Languages.hpp +39 -0
@@ 0,0 1,39 @@
+// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
+// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
+
+#pragma once
+
+#include <i18n/i18n.hpp>
+
+#include <algorithm>
+#include <vector>
+#include <array>
+#include <string_view>
+
+namespace common
+{
+ class Languages
+ {
+ public:
+ std::vector<Language> getSupportedLanguages() const
+ {
+ auto languages = loader.getAvailableDisplayLanguages();
+ languages.erase(
+ std::remove_if(languages.begin(), languages.end(), [this](const auto &lang) { return matcher(lang); }),
+ languages.end());
+ std::sort(languages.begin(), languages.end());
+ return languages;
+ }
+
+ private:
+ bool matcher(const std::string_view language) const
+ {
+ const auto result = std::find(excludedLanguages.begin(), excludedLanguages.end(), language);
+ return result != excludedLanguages.end();
+ }
+
+ static constexpr std::array<std::string_view, 1> excludedLanguages = {{"Svenska"}};
+ utils::LangLoader loader;
+ };
+
+} // namespace common
M products/BellHybrid/apps/common/include/common/widgets/ListItems.hpp => products/BellHybrid/apps/common/include/common/widgets/ListItems.hpp +2 -1
@@ 63,7 63,8 @@ namespace gui
{
return spinner;
}
- void setArrowsVisibility(const NumWithStringSpinner::Range &range);
+ NumWithStringSpinner::Type getCurrentValue();
+ void setArrowsVisibility();
private:
NumWithStringSpinner *spinner{};
M products/BellHybrid/apps/common/src/widgets/ListItems.cpp => products/BellHybrid/apps/common/src/widgets/ListItems.cpp +9 -6
@@ 103,7 103,7 @@ namespace gui
inputCallback = [&, range](Item &item, const InputEvent &event) {
const auto result = OnInputCallback(event);
bottomText->setVisible(spinner->getCurrentValue().getValue().has_value());
- setArrowsVisibility(range);
+ setArrowsVisibility();
return result;
};
@@ 117,7 117,7 @@ namespace gui
const auto val = spinner->getCurrentValue().getValue();
model.setValue(not val ? 0 : *val);
};
- setValue = [&model, this, range]() {
+ setValue = [&model, this]() {
const auto modelValue = model.getValue();
if (modelValue > 0) {
spinner->setCurrentValue(Value{modelValue, minStr});
@@ 125,7 125,7 @@ namespace gui
else {
spinner->setCurrentValue(Value{minStr});
}
- setArrowsVisibility(range);
+ setArrowsVisibility();
};
}
@@ 134,10 134,13 @@ namespace gui
return not spinner->getCurrentValue().getValue().has_value();
}
- void NumWithStringListItem::setArrowsVisibility(const NumWithStringSpinner::Range &range)
+ void NumWithStringListItem::setArrowsVisibility()
{
- const auto selectedVal = spinner->getCurrentValue();
- body->setMinMaxArrowsVisibility(selectedVal == range.front(), selectedVal == range.back());
+ body->setMinMaxArrowsVisibility(spinner->isAtMin(), spinner->isAtMax());
+ }
+ NumWithString<uint32_t, UTF8> NumWithStringListItem::getCurrentValue()
+ {
+ return spinner->getCurrentValue();
}
UTF8ListItem::UTF8ListItem(AbstractSettingsModel<UTF8> &model,
M products/BellHybrid/apps/common/src/windows/BellWelcomeWindow.cpp => products/BellHybrid/apps/common/src/windows/BellWelcomeWindow.cpp +1 -1
@@ 57,7 57,7 @@ namespace gui
bool BellWelcomeWindow::onInput(const InputEvent &inputEvent)
{
- if (inputEvent.isKeyRelease(KeyCode::KEY_LF)) {
+ if (inputEvent.isKeyRelease(KeyCode::KEY_ENTER)) {
if (onAction) {
onAction();
}
M products/BellHybrid/config/ProductConfig.in.hpp => products/BellHybrid/config/ProductConfig.in.hpp +1 -0
@@ 4,3 4,4 @@
#pragma once
#cmakedefine01 CONFIG_ENABLE_TEMP
+#cmakedefine01 CONFIG_SHOW_MEMORY_INFO