M image/assets/lang/English.json => image/assets/lang/English.json +7 -0
@@ 581,6 581,13 @@
"app_bell_settings_advanced": "Advanced",
"app_bell_settings_advanced_time_units": "Time & units",
"app_bell_settings_advanced_temp_scale": "Temperature scale",
+ "app_bell_settings_advanced_about": "About",
+ "app_bell_settings_advanced_about_product": "Mudita Harmony",
+ "app_bell_settings_advanced_about_version": "<text>OS version: <token>$VERSION</token></text>",
+ "app_bell_settings_advanced_about_storage_title": "Storage",
+ "app_bell_settings_advanced_about_storage_text": "<text><token>$USED_MEMORY</token>MB of <token>$TOTAL_MEMORY</token>MB used</text>",
+ "app_bell_settings_advanced_about_info_title": "Manual & certification info",
+ "app_bell_settings_advanced_about_info_text": "www.mudita.com",
"app_bell_settings_alarm_settings": "Alarm settings",
"app_bell_settings_alarm_settings_tone": "Alarm tone",
"app_bell_settings_alarm_settings_volume": "Alarm volume",
M products/BellHybrid/apps/application-bell-settings/ApplicationBellSettings.cpp => products/BellHybrid/apps/application-bell-settings/ApplicationBellSettings.cpp +11 -0
@@ 6,13 6,16 @@
#include "presenter/TimeUnitsPresenter.hpp"
#include "models/FrontlightModel.hpp"
#include "models/TemperatureUnitModel.hpp"
+#include "models/advanced/AboutYourBellModel.hpp"
#include "models/alarm_settings/AlarmSettingsListItemProvider.hpp"
#include "models/alarm_settings/AlarmSettingsModel.hpp"
#include "models/alarm_settings/PrewakeUpListItemProvider.hpp"
#include "models/alarm_settings/PrewakeUpSettingsModel.hpp"
#include "models/alarm_settings/SnoozeListItemProvider.hpp"
#include "models/alarm_settings/SnoozeSettingsModel.hpp"
+#include "presenter/advanced/AboutYourBellWindowPresenter.hpp"
#include "presenter/alarm_settings/SnoozePresenter.hpp"
+#include "windows/advanced/AboutYourBellWindow.hpp"
#include "windows/advanced/BellSettingsAdvancedWindow.hpp"
#include "windows/advanced/BellSettingsTimeUnitsWindow.hpp"
#include "windows/alarm_settings/BellSettingsAlarmSettingsMenuWindow.hpp"
@@ 153,6 156,14 @@ namespace app
return std::make_unique<gui::BellSettingsAlarmSettingsWindow>(app, std::move(presenter));
});
+ windowsFactory.attach(
+ gui::AboutYourBellWindow::name, [](ApplicationCommon *app, [[maybe_unused]] const std::string &name) {
+ auto aboutYourBellModel = std::make_shared<bell_settings::AboutYourBellModel>(app);
+ auto aboutYourBellPresenter =
+ std::make_unique<bell_settings::AboutYourBellWindowPresenter>(std::move(aboutYourBellModel));
+ return std::make_unique<gui::AboutYourBellWindow>(app, std::move(aboutYourBellPresenter));
+ });
+
attachPopups({gui::popup::ID::AlarmActivated, gui::popup::ID::AlarmDeactivated});
}
M products/BellHybrid/apps/application-bell-settings/CMakeLists.txt => products/BellHybrid/apps/application-bell-settings/CMakeLists.txt +8 -0
@@ 27,6 27,7 @@ target_sources(application-bell-settings
models/SoundFilesModel.cpp
models/TemperatureUnitModel.cpp
models/TimeUnitsModel.cpp
+ models/advanced/AboutYourBellModel.cpp
models/alarm_settings/AlarmSettingsListItemProvider.cpp
models/alarm_settings/AlarmSettingsModel.cpp
models/alarm_settings/PrewakeUpListItemProvider.cpp
@@ 36,6 37,7 @@ target_sources(application-bell-settings
presenter/FrontlightPresenter.cpp
presenter/TimeUnitsPresenter.cpp
+ presenter/advanced/AboutYourBellWindowPresenter.cpp
presenter/alarm_settings/AlarmSettingsPresenter.cpp
presenter/alarm_settings/PrewakeUpPresenter.cpp
presenter/alarm_settings/SnoozePresenter.cpp
@@ 44,12 46,14 @@ target_sources(application-bell-settings
widgets/TemperatureUnitListItem.cpp
widgets/TimeFormatSetListItem.cpp
widgets/TimeSetListItem.cpp
+ widgets/advanced/AboutYourBellListItem.cpp
windows/BellSettingsBedtimeToneWindow.cpp
windows/BellSettingsFrontlight.cpp
windows/BellSettingsHomeViewWindow.cpp
windows/BellSettingsTurnOffWindow.cpp
windows/BellSettingsWindow.cpp
+ windows/advanced/AboutYourBellWindow.cpp
windows/advanced/BellSettingsAdvancedWindow.cpp
windows/advanced/BellSettingsTimeUnitsWindow.cpp
windows/alarm_settings/BellSettingsAlarmSettingsSnoozeWindow.cpp
@@ 59,6 63,7 @@ target_sources(application-bell-settings
models/SettingsModel.hpp
models/SoundFilesModel.hpp
+ models/advanced/AboutYourBellModel.hpp
models/alarm_settings/AbstractAlarmSettingsModel.hpp
models/alarm_settings/AbstractPrewakeUpSettingsModel.hpp
models/alarm_settings/AbstractSnoozeSettingsModel.hpp
@@ 70,6 75,7 @@ target_sources(application-bell-settings
models/alarm_settings/SnoozeSettingsModel.hpp
presenter/FrontlightPresenter.hpp
+ presenter/advanced/AboutYourBellWindowPresenter.hpp
presenter/alarm_settings/AlarmSettingsPresenter.hpp
presenter/alarm_settings/PrewakeUpPresenter.hpp
presenter/alarm_settings/SnoozePresenter.hpp
@@ 78,6 84,7 @@ target_sources(application-bell-settings
widgets/TemperatureUnitListItem.hpp
widgets/TimeFormatSetListItem.hpp
widgets/TimeSetListItem.hpp
+ widgets/advanced/AboutYourBellListItem.hpp
windows/alarm_settings/BellSettingsAlarmSettingsSnoozeWindow.hpp
windows/alarm_settings/BellSettingsAlarmSettingsWindow.hpp
@@ 87,6 94,7 @@ target_sources(application-bell-settings
windows/BellSettingsHomeViewWindow.hpp
windows/BellSettingsTurnOffWindow.hpp
windows/BellSettingsWindow.hpp
+ windows/advanced/AboutYourBellWindow.hpp
windows/advanced/BellSettingsAdvancedWindow.hpp
windows/alarm_settings/BellSettingsAlarmSettingsSnoozeWindow.hpp
windows/alarm_settings/BellSettingsAlarmSettingsMenuWindow.hpp
M products/BellHybrid/apps/application-bell-settings/data/BellSettingsStyle.hpp => products/BellHybrid/apps/application-bell-settings/data/BellSettingsStyle.hpp +13 -0
@@ 36,5 36,18 @@ namespace gui
{
inline constexpr auto font_center = "gt_pressura_light_46";
}
+
+ namespace about_your_bell_window
+ {
+ inline constexpr auto height = 100U;
+ inline constexpr auto width = 400U;
+ namespace list_item
+ {
+ inline constexpr auto width = style::window::default_body_width;
+ inline constexpr auto height = 66;
+ inline constexpr auto title_height = 33;
+ inline constexpr auto value_height = 33;
+ } // namespace list_item
+ } // namespace about_your_bell_window
} // namespace bell_settings_style
} // namespace gui
A products/BellHybrid/apps/application-bell-settings/models/advanced/AboutYourBellModel.cpp => products/BellHybrid/apps/application-bell-settings/models/advanced/AboutYourBellModel.cpp +78 -0
@@ 0,0 1,78 @@
+// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
+// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
+
+#include "AboutYourBellModel.hpp"
+
+#include <BellSettingsStyle.hpp>
+#include <widgets/advanced/AboutYourBellListItem.hpp>
+
+#include <ListView.hpp>
+#include <product/version.hpp>
+#include <purefs/filesystem_paths.hpp>
+#include <sys/statvfs.h>
+
+namespace app::bell_settings
+{
+ AboutYourBellModel::AboutYourBellModel(app::ApplicationCommon *app) : application(app)
+ {
+ createData();
+ }
+
+ auto AboutYourBellModel::requestRecordsCount() -> unsigned int
+ {
+ return internalData.size();
+ }
+
+ auto AboutYourBellModel::getMinimalItemSpaceRequired() const -> unsigned int
+ {
+ return gui::bell_settings_style::about_your_bell_window::height;
+ }
+
+ void AboutYourBellModel::requestRecords(const uint32_t offset, const uint32_t limit)
+ {
+ setupModel(offset, limit);
+ list->onProviderDataUpdate();
+ }
+
+ auto AboutYourBellModel::getItem(gui::Order order) -> gui::ListItem *
+ {
+ return getRecord(order);
+ }
+
+ void AboutYourBellModel::createData()
+ {
+ internalData.push_back(
+ new gui::AboutYourBellListItem(utils::translate("app_bell_settings_advanced_about_product"),
+ utils::translate("app_bell_settings_advanced_about_version"),
+ gui::AboutYourBellListItem::TokenMap({{"$VERSION", std::string(VERSION)}})));
+
+ struct statvfs stat;
+ const auto result = statvfs(purefs::dir::getRootDiskPath().c_str(), &stat);
+ if (result < 0) {
+ LOG_ERROR("Getting memory info failed! result = %d", result);
+ return;
+ }
+
+ const auto totalMB = (stat.f_frsize * stat.f_blocks) / 1024LLU / 1024LLU;
+ const auto usedMB = totalMB - (stat.f_bfree * stat.f_bsize) / 1024LLU / 1024LLU;
+ internalData.push_back(new gui::AboutYourBellListItem(
+ utils::translate("app_bell_settings_advanced_about_storage_title"),
+ utils::translate("app_bell_settings_advanced_about_storage_text"),
+ gui::AboutYourBellListItem::TokenMap(
+ {{"$USED_MEMORY", std::to_string(usedMB)}, {"$TOTAL_MEMORY", std::to_string(totalMB)}})));
+
+ internalData.push_back(
+ new gui::AboutYourBellListItem(utils::translate("app_bell_settings_advanced_about_info_title"),
+ utils::translate("app_bell_settings_advanced_about_info_text")));
+
+ for (auto item : internalData) {
+ item->deleteByList = false;
+ }
+ }
+
+ void AboutYourBellModel::clearData()
+ {
+ list->reset();
+ eraseInternalData();
+ }
+} // namespace app::bell_settings
A products/BellHybrid/apps/application-bell-settings/models/advanced/AboutYourBellModel.hpp => products/BellHybrid/apps/application-bell-settings/models/advanced/AboutYourBellModel.hpp +28 -0
@@ 0,0 1,28 @@
+// 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 <Application.hpp>
+#include <InternalModel.hpp>
+#include <ListItemProvider.hpp>
+
+namespace app::bell_settings
+{
+ class AboutYourBellModel : public app::InternalModel<gui::ListItem *>, public gui::ListItemProvider
+ {
+ public:
+ explicit AboutYourBellModel(app::ApplicationCommon *app);
+
+ void createData();
+ void clearData();
+
+ [[nodiscard]] auto requestRecordsCount() -> unsigned int override;
+ [[nodiscard]] auto getMinimalItemSpaceRequired() const -> unsigned int override;
+ auto getItem(gui::Order order) -> gui::ListItem * override;
+ void requestRecords(const uint32_t offset, const uint32_t limit) override;
+
+ private:
+ app::ApplicationCommon *application{};
+ };
+} // namespace app::bell_settings
A products/BellHybrid/apps/application-bell-settings/presenter/advanced/AboutYourBellWindowPresenter.cpp => products/BellHybrid/apps/application-bell-settings/presenter/advanced/AboutYourBellWindowPresenter.cpp +22 -0
@@ 0,0 1,22 @@
+// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
+// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
+
+#include "AboutYourBellWindowPresenter.hpp"
+#include <models/advanced/AboutYourBellModel.hpp>
+
+namespace app::bell_settings
+{
+ AboutYourBellWindowPresenter::AboutYourBellWindowPresenter(std::shared_ptr<AboutYourBellModel> pagesProvider)
+ : pagesProvider(std::move(pagesProvider))
+ {}
+
+ auto AboutYourBellWindowPresenter::createData() -> void
+ {
+ pagesProvider->createData();
+ }
+
+ auto AboutYourBellWindowPresenter::getPagesProvider() const -> std::shared_ptr<AboutYourBellModel>
+ {
+ return pagesProvider;
+ }
+} // namespace app::bell_settings
A products/BellHybrid/apps/application-bell-settings/presenter/advanced/AboutYourBellWindowPresenter.hpp => products/BellHybrid/apps/application-bell-settings/presenter/advanced/AboutYourBellWindowPresenter.hpp +42 -0
@@ 0,0 1,42 @@
+// 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 <apps-common/BasePresenter.hpp>
+#include <memory>
+
+namespace app::bell_settings
+{
+ class AboutYourBellModel;
+
+ class AboutYourBellWindowContract
+ {
+ public:
+ class View
+ {
+ public:
+ virtual ~View() noexcept = default;
+ };
+
+ class Presenter : public BasePresenter<AboutYourBellWindowContract::View>
+ {
+ public:
+ virtual ~Presenter() noexcept = default;
+ virtual auto getPagesProvider() const -> std::shared_ptr<AboutYourBellModel> = 0;
+ virtual auto createData() -> void = 0;
+ };
+ };
+
+ class AboutYourBellWindowPresenter : public AboutYourBellWindowContract::Presenter
+ {
+ public:
+ explicit AboutYourBellWindowPresenter(std::shared_ptr<AboutYourBellModel> pagesProvider);
+
+ auto createData() -> void override;
+ auto getPagesProvider() const -> std::shared_ptr<AboutYourBellModel> override;
+
+ private:
+ std::shared_ptr<AboutYourBellModel> pagesProvider;
+ };
+} // namespace app::bell_settings
A products/BellHybrid/apps/application-bell-settings/widgets/advanced/AboutYourBellListItem.cpp => products/BellHybrid/apps/application-bell-settings/widgets/advanced/AboutYourBellListItem.cpp +47 -0
@@ 0,0 1,47 @@
+// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
+// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
+
+#include "AboutYourBellListItem.hpp"
+
+#include <BellSettingsStyle.hpp>
+#include <Text.hpp>
+
+namespace gui
+{
+ AboutYourBellListItem::AboutYourBellListItem(const std::string &titleText,
+ const std::string &valueText,
+ TokenMap valueTokenMap)
+ {
+ 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));
+ activeItem = false;
+
+ body = new VBox(this, 0, 0, 0, 0);
+ body->setEdges(RectangleEdge::None);
+
+ title = new Text(body, 0, 0, 0, 0);
+ title->setMinimumSize(bell_settings_style::about_your_bell_window::list_item::width,
+ bell_settings_style::about_your_bell_window::list_item::title_height);
+ title->setFont(style::window::font::bigbold);
+ title->setAlignment(Alignment(Alignment::Horizontal::Center, Alignment::Vertical::Top));
+ title->setText(titleText);
+
+ value = new Text(body, 0, 0, 0, 0);
+ value->setMinimumSize(bell_settings_style::about_your_bell_window::list_item::width,
+ bell_settings_style::about_your_bell_window::list_item::value_height);
+ value->setAlignment(Alignment(Alignment::Horizontal::Center, Alignment::Vertical::Bottom));
+ value->setFont(style::window::font::big);
+ if (valueTokenMap.has_value()) {
+ value->setRichText(valueText, std::move(*valueTokenMap));
+ }
+ else {
+ value->setText(valueText);
+ }
+
+ dimensionChangedCallback = [&]([[maybe_unused]] Item &item, const BoundingBox &newDim) -> bool {
+ body->setArea({0, 0, newDim.w, newDim.h});
+ return true;
+ };
+ }
+} /* namespace gui */
A products/BellHybrid/apps/application-bell-settings/widgets/advanced/AboutYourBellListItem.hpp => products/BellHybrid/apps/application-bell-settings/widgets/advanced/AboutYourBellListItem.hpp +25 -0
@@ 0,0 1,25 @@
+// 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 <ListItem.hpp>
+#include <module-gui/gui/widgets/RichTextParser.hpp>
+
+namespace gui
+{
+ class Text;
+ class VBox;
+
+ class AboutYourBellListItem : public ListItem
+ {
+ public:
+ using TokenMap = std::optional<text::RichTextParser::TokenMap>;
+ AboutYourBellListItem(const std::string &title, const std::string &value, TokenMap valueTokenMap = {});
+
+ private:
+ VBox *body{};
+ Text *title{};
+ Text *value{};
+ };
+} /* namespace gui */
A products/BellHybrid/apps/application-bell-settings/windows/advanced/AboutYourBellWindow.cpp => products/BellHybrid/apps/application-bell-settings/windows/advanced/AboutYourBellWindow.cpp +40 -0
@@ 0,0 1,40 @@
+// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
+// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
+
+#include "AboutYourBellWindow.hpp"
+
+#include <application-settings/windows/WindowNames.hpp>
+#include <i18n/i18n.hpp>
+#include <models/advanced/AboutYourBellModel.hpp>
+
+namespace gui
+{
+ AboutYourBellWindow::AboutYourBellWindow(
+ app::ApplicationCommon *app,
+ std::shared_ptr<app::bell_settings::AboutYourBellWindowContract::Presenter> technicalPresenter)
+ : AppWindow(app, gui::window::name::technical_information), presenter(std::move(technicalPresenter))
+ {
+ presenter->attach(this);
+ buildInterface();
+ }
+
+ void AboutYourBellWindow::buildInterface()
+ {
+ AppWindow::buildInterface();
+
+ statusBar->setVisible(false);
+ bottomBar->setActive(gui::BottomBar::Side::RIGHT, true);
+ bottomBar->setText(gui::BottomBar::Side::RIGHT, utils::translate(::style::strings::common::back));
+
+ 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,
+ presenter->getPagesProvider(),
+ listview::ScrollBarType::Fixed);
+
+ setFocusItem(list);
+ list->rebuildList();
+ }
+} // namespace gui
A products/BellHybrid/apps/application-bell-settings/windows/advanced/AboutYourBellWindow.hpp => products/BellHybrid/apps/application-bell-settings/windows/advanced/AboutYourBellWindow.hpp +26 -0
@@ 0,0 1,26 @@
+// 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 <presenter/advanced/AboutYourBellWindowPresenter.hpp>
+
+#include <apps-common/windows/AppWindow.hpp>
+#include <ListView.hpp>
+
+namespace gui
+{
+ class AboutYourBellWindow : public AppWindow, public app::bell_settings::AboutYourBellWindowContract::View
+ {
+ public:
+ static constexpr auto name = "AboutYourBellWindow";
+ AboutYourBellWindow(app::ApplicationCommon *app,
+ std::shared_ptr<app::bell_settings::AboutYourBellWindowContract::Presenter> presenter);
+
+ private:
+ void buildInterface() override;
+
+ ListView *list{};
+ std::shared_ptr<app::bell_settings::AboutYourBellWindowContract::Presenter> presenter;
+ };
+} // namespace gui
M products/BellHybrid/apps/application-bell-settings/windows/advanced/BellSettingsAdvancedWindow.cpp => products/BellHybrid/apps/application-bell-settings/windows/advanced/BellSettingsAdvancedWindow.cpp +2 -0
@@ 8,6 8,7 @@
#include <common/options/OptionBellMenu.hpp>
#include <apps-common/messages/DialogMetadataMessage.hpp>
#include <apps-common/windows/Dialog.hpp>
+#include <windows/advanced/AboutYourBellWindow.hpp>
namespace gui
{
@@ 46,6 47,7 @@ namespace gui
gui::window::name::bellSettingsTimeUnits);
addWinSettings(utils::translate("app_bell_settings_advanced_frontlight"),
gui::window::name::bellSettingsFrontlight);
+ addWinSettings(utils::translate("app_bell_settings_advanced_about"), gui::AboutYourBellWindow::name);
return settingsOptionList;
}