~aleteoryx/muditaos

49b82ca0bc11ca0c30df7605de1f301f6da4af78 — Przemyslaw Brudny 4 years ago aea9e64
[EGD-7139] System setting cleanup and fixes

Security setting cleanup. Refactored Technical
Information window.
47 files changed, 356 insertions(+), 451 deletions(-)

M module-apps/application-onboarding/ApplicationOnBoarding.cpp
M module-apps/application-onboarding/windows/OnBoardingChangeDateAndTimeWindow.hpp
M module-apps/application-onboarding/windows/OnBoardingDateAndTimeWindow.hpp
M module-apps/application-onboarding/windows/OnBoardingLanguagesWindow.hpp
M module-apps/application-settings/ApplicationSettings.cpp
M module-apps/application-settings/CMakeLists.txt
R module-apps/application-settings/models/{ => system}/DateAndTimeModel.cpp
R module-apps/application-settings/models/{ => system}/DateAndTimeModel.hpp
R module-apps/application-settings/models/{ => system}/FactoryData.cpp
R module-apps/application-settings/models/{ => system}/FactoryData.hpp
R module-apps/application-settings/models/{ => system}/SARInfoRepository.cpp
R module-apps/application-settings/models/{ => system}/SARInfoRepository.hpp
A module-apps/application-settings/models/system/TechnicalInformationModel.cpp
A module-apps/application-settings/models/system/TechnicalInformationModel.hpp
D module-apps/application-settings/presenter/TechnicalWindowPresenter.cpp
R module-apps/application-settings/presenter/{ => system}/SARInfoWindowPresenter.cpp
R module-apps/application-settings/presenter/{ => system}/SARInfoWindowPresenter.hpp
A module-apps/application-settings/presenter/system/TechnicalWindowPresenter.cpp
R module-apps/application-settings/presenter/{ => system}/TechnicalWindowPresenter.hpp
M module-apps/application-settings/widgets/SettingsStyle.hpp
R module-apps/application-settings/widgets/{ => system}/SettingsDateItem.cpp
R module-apps/application-settings/widgets/{ => system}/SettingsDateItem.hpp
R module-apps/application-settings/widgets/{ => system}/SettingsTimeItem.cpp
R module-apps/application-settings/widgets/{ => system}/SettingsTimeItem.hpp
A module-apps/application-settings/widgets/system/TechnicalInformationItem.cpp
A module-apps/application-settings/widgets/system/TechnicalInformationItem.hpp
D module-apps/application-settings/windows/AboutYourPureWindow.cpp
D module-apps/application-settings/windows/TechnicalInformationWindow.cpp
D module-apps/application-settings/windows/TechnicalInformationWindow.hpp
M module-apps/application-settings/windows/WindowNames.hpp
R module-apps/application-settings/windows/{ => system}/CertificationWindow.cpp
R module-apps/application-settings/windows/{ => system}/CertificationWindow.hpp
R module-apps/application-settings/windows/{ => system}/ChangeDateAndTimeWindow.cpp
R module-apps/application-settings/windows/{ => system}/ChangeDateAndTimeWindow.hpp
R module-apps/application-settings/windows/{ => system}/ChangeTimeZone.cpp
R module-apps/application-settings/windows/{ => system}/ChangeTimeZone.hpp
R module-apps/application-settings/windows/{ => system}/DateAndTimeMainWindow.cpp
R module-apps/application-settings/windows/{ => system}/DateAndTimeMainWindow.hpp
R module-apps/application-settings/windows/{ => system}/LanguagesWindow.cpp
R module-apps/application-settings/windows/{ => system}/LanguagesWindow.hpp
R module-apps/application-settings/windows/{ => system}/SARInfoWindow.cpp
R module-apps/application-settings/windows/{ => system}/SARInfoWindow.hpp
R module-apps/application-settings/windows/{ => system}/SystemMainWindow.cpp
R module-apps/application-settings/windows/{ => system}/SystemMainWindow.hpp
A module-apps/application-settings/windows/system/TechnicalInformationWindow.cpp
R module-apps/application-settings/windows/{AboutYourPureWindow => system/TechnicalInformationWindow}.hpp
M module-apps/apps-common/options/OptionStyle.hpp
M module-apps/application-onboarding/ApplicationOnBoarding.cpp => module-apps/application-onboarding/ApplicationOnBoarding.cpp +2 -2
@@ 19,9 19,9 @@
#include "windows/OnBoardingChangeDateAndTimeWindow.hpp"

#include <module-services/service-appmgr/service-appmgr/messages/GetCurrentDisplayLanguageResponse.hpp>
#include <module-apps/application-settings/data/LanguagesData.hpp>
#include <application-settings/data/LanguagesData.hpp>
#include <application-settings/windows/system/ChangeTimeZone.hpp>
#include <module-services/service-db/agents/settings/SystemSettings.hpp>
#include <module-apps/application-settings/windows/ChangeTimeZone.hpp>
#include <apps-common/locks/data/PhoneLockMessages.hpp>
#include <apps-common/locks/data/SimLockMessages.hpp>
#include <service-appmgr/service-appmgr/model/ApplicationManager.hpp>

M module-apps/application-onboarding/windows/OnBoardingChangeDateAndTimeWindow.hpp => module-apps/application-onboarding/windows/OnBoardingChangeDateAndTimeWindow.hpp +2 -2
@@ 3,8 3,8 @@

#pragma once

#include <application-settings/windows/ChangeDateAndTimeWindow.hpp>
#include <application-settings/models/DateAndTimeModel.hpp>
#include <application-settings/windows/system/ChangeDateAndTimeWindow.hpp>
#include <application-settings/models/system/DateAndTimeModel.hpp>

namespace app::onBoarding
{

M module-apps/application-onboarding/windows/OnBoardingDateAndTimeWindow.hpp => module-apps/application-onboarding/windows/OnBoardingDateAndTimeWindow.hpp +1 -1
@@ 3,7 3,7 @@

#pragma once

#include <module-apps/application-settings/windows/DateAndTimeMainWindow.hpp>
#include <application-settings/windows/system/DateAndTimeMainWindow.hpp>

namespace app::onBoarding
{

M module-apps/application-onboarding/windows/OnBoardingLanguagesWindow.hpp => module-apps/application-onboarding/windows/OnBoardingLanguagesWindow.hpp +1 -1
@@ 3,7 3,7 @@

#pragma once

#include <module-apps/application-settings/windows/LanguagesWindow.hpp>
#include <application-settings/windows/system/LanguagesWindow.hpp>

namespace app::onBoarding
{

M module-apps/application-settings/ApplicationSettings.cpp => module-apps/application-settings/ApplicationSettings.cpp +26 -27
@@ 42,15 42,14 @@
#include <application-settings/windows/apps/SoundSelectWindow.hpp>
#include <application-settings/windows/security/SecurityMainWindow.hpp>
#include <application-settings/windows/security/AutolockWindow.hpp>
#include <application-settings/windows/SARInfoWindow.hpp>
#include <application-settings/windows/SystemMainWindow.hpp>
#include <application-settings/windows/LanguagesWindow.hpp>
#include <application-settings/windows/DateAndTimeMainWindow.hpp>
#include <application-settings/windows/ChangeTimeZone.hpp>
#include <application-settings/windows/ChangeDateAndTimeWindow.hpp>
#include <application-settings/windows/AboutYourPureWindow.hpp>
#include <application-settings/windows/CertificationWindow.hpp>
#include <application-settings/windows/TechnicalInformationWindow.hpp>
#include <application-settings/windows/system/SystemMainWindow.hpp>
#include <application-settings/windows/system/LanguagesWindow.hpp>
#include <application-settings/windows/system/DateAndTimeMainWindow.hpp>
#include <application-settings/windows/system/ChangeTimeZone.hpp>
#include <application-settings/windows/system/ChangeDateAndTimeWindow.hpp>
#include <application-settings/windows/system/TechnicalInformationWindow.hpp>
#include <application-settings/windows/system/CertificationWindow.hpp>
#include <application-settings/windows/system/SARInfoWindow.hpp>
#include <application-settings/data/ApnListData.hpp>
#include <application-settings/data/BondedDevicesData.hpp>
#include <application-settings/data/BluetoothStatusData.hpp>


@@ 473,12 472,7 @@ namespace app
            return std::make_unique<gui::AutolockWindow>(app, static_cast<ApplicationSettings *>(app));
        });

        windowsFactory.attach(gui::window::name::dialog_settings, [](Application *app, const std::string &name) {
            return std::make_unique<gui::Dialog>(app, name);
        });
        windowsFactory.attach(gui::window::name::dialog_confirm, [](Application *app, const std::string &name) {
            return std::make_unique<gui::DialogConfirm>(app, gui::window::name::dialog_confirm);
        });
        // System
        windowsFactory.attach(gui::window::name::system, [](Application *app, const std::string &name) {
            return std::make_unique<gui::SystemMainWindow>(app);
        });


@@ 488,30 482,35 @@ namespace app
        windowsFactory.attach(gui::window::name::date_and_time, [](Application *app, const std::string &name) {
            return std::make_unique<gui::DateAndTimeMainWindow>(app, gui::window::name::date_and_time);
        });
        windowsFactory.attach(gui::window::name::about_your_pure, [](Application *app, const std::string &name) {
            return std::make_unique<gui::AboutYourPureWindow>(app);
        });
        windowsFactory.attach(gui::window::name::factory_reset, [](Application *app, const std::string &name) {
            return std::make_unique<gui::DialogYesNo>(app, name);
        windowsFactory.attach(gui::window::name::change_time_zone, [](Application *app, const std::string &name) {
            return std::make_unique<gui::ChangeTimeZone>(app);
        });
        windowsFactory.attach(gui::window::name::certification, [](Application *app, const std::string &name) {
            return std::make_unique<gui::CertificationWindow>(app);
        windowsFactory.attach(gui::window::name::change_date_and_time, [](Application *app, const std::string &name) {
            return std::make_unique<gui::ChangeDateAndTimeWindow>(app);
        });
        windowsFactory.attach(gui::window::name::technical_information, [&](Application *app, const std::string &name) {
            auto factoryData = std::make_unique<FactoryData>(*settings);
            auto presenter   = std::make_unique<TechnicalWindowPresenter>(std::move(factoryData));
            auto model       = std::make_unique<TechnicalInformationModel>(std::move(factoryData));
            auto presenter   = std::make_unique<TechnicalWindowPresenter>(std::move(model));
            return std::make_unique<gui::TechnicalInformationWindow>(app, std::move(presenter));
        });
        windowsFactory.attach(gui::window::name::certification, [](Application *app, const std::string &name) {
            return std::make_unique<gui::CertificationWindow>(app);
        });
        windowsFactory.attach(gui::window::name::sar, [&](Application *app, const std::string &name) {
            auto sarInfoRepository = std::make_unique<SARInfoRepository>("assets/certification_info", "sar.txt");
            auto presenter         = std::make_unique<SARInfoWindowPresenter>(std::move(sarInfoRepository));
            return std::make_unique<gui::SARInfoWindow>(app, std::move(presenter));
        });
        windowsFactory.attach(gui::window::name::change_time_zone, [](Application *app, const std::string &name) {
            return std::make_unique<gui::ChangeTimeZone>(app);
        windowsFactory.attach(gui::window::name::factory_reset, [](Application *app, const std::string &name) {
            return std::make_unique<gui::DialogYesNo>(app, name);
        });
        windowsFactory.attach(gui::window::name::change_date_and_time, [](Application *app, const std::string &name) {
            return std::make_unique<gui::ChangeDateAndTimeWindow>(app);

        windowsFactory.attach(gui::window::name::dialog_settings, [](Application *app, const std::string &name) {
            return std::make_unique<gui::Dialog>(app, name);
        });
        windowsFactory.attach(gui::window::name::dialog_confirm, [](Application *app, const std::string &name) {
            return std::make_unique<gui::DialogConfirm>(app, gui::window::name::dialog_confirm);
        });
        windowsFactory.attach(gui::window::name::dialog_retry, [](Application *app, const std::string &name) {
            return std::make_unique<gui::DialogRetry>(app, name);

M module-apps/application-settings/CMakeLists.txt => module-apps/application-settings/CMakeLists.txt +28 -28
@@ 23,21 23,25 @@ target_sources( ${PROJECT_NAME}
        models/display-keypad/CategoriesModel.cpp
        models/apps/AudioSettingsModel.cpp
        models/apps/SoundsModel.cpp
        models/DateAndTimeModel.cpp
        models/SARInfoRepository.cpp
        models/FactoryData.cpp
        presenter/SARInfoWindowPresenter.cpp
        presenter/TechnicalWindowPresenter.cpp
        models/system/DateAndTimeModel.cpp
        models/system/SARInfoRepository.cpp
        models/system/FactoryData.cpp
        models/system/TechnicalInformationModel.cpp
        presenter/system/SARInfoWindowPresenter.cpp
        presenter/system/TechnicalWindowPresenter.cpp
        widgets/SpinBoxOptionSettings.cpp
        widgets/advanced/ColorTestListItem.cpp
        widgets/advanced/ColorTestListView.cpp
        widgets/network/ApnInputWidget.cpp
        widgets/display-keypad/QuoteWidget.cpp
        widgets/display-keypad/CategoryWidget.cpp
        widgets/apps/SettingsSoundItem.cpp
        widgets/SettingsDateItem.cpp
        widgets/SettingsTimeItem.cpp
        widgets/SpinBoxOptionSettings.cpp
        widgets/system/SettingsDateItem.cpp
        widgets/system/SettingsTimeItem.cpp
        widgets/system/TechnicalInformationItem.cpp
        windows/SettingsMainWindow.cpp
        windows/BaseSettingsWindow.cpp
        windows/OptionsWidgetMaker.cpp
        windows/advanced/AdvancedOptionsWindow.cpp
        windows/advanced/InformationWindow.cpp
        windows/advanced/UITestWindow.cpp


@@ 76,28 80,26 @@ target_sources( ${PROJECT_NAME}
        windows/apps/SoundSelectWindow.cpp
        windows/security/SecurityMainWindow.cpp
        windows/security/AutolockWindow.cpp
        windows/BaseSettingsWindow.cpp
        windows/OptionsWidgetMaker.cpp
        windows/SARInfoWindow.cpp
        windows/SystemMainWindow.cpp
        windows/LanguagesWindow.cpp
        windows/DateAndTimeMainWindow.cpp
        windows/ChangeTimeZone.cpp
        windows/ChangeDateAndTimeWindow.cpp
        windows/AboutYourPureWindow.cpp
        windows/CertificationWindow.cpp
        windows/TechnicalInformationWindow.cpp
        windows/system/SystemMainWindow.cpp
        windows/system/LanguagesWindow.cpp
        windows/system/DateAndTimeMainWindow.cpp
        windows/system/ChangeTimeZone.cpp
        windows/system/ChangeDateAndTimeWindow.cpp
        windows/system/SARInfoWindow.cpp
        windows/system/CertificationWindow.cpp
        windows/system/TechnicalInformationWindow.cpp

    PUBLIC
        ApplicationSettings.hpp
        models/advanced/ColorTestModel.hpp
        widgets/SettingsStyle.hpp
        widgets/advanced/ColorTestListItem.hpp
        widgets/advanced/ColorTestListItem.hpp
        widgets/advanced/ColorTestListStyle.hpp
        widgets/network/ApnInputWidget.hpp
        widgets/display-keypad/CategoryWidget.hpp
        widgets/SettingsStyle.hpp
        windows/SettingsMainWindow.hpp
        windows/BaseSettingsWindow.hpp
        windows/WindowNames.hpp
        windows/advanced/AdvancedOptionsWindow.hpp
        windows/advanced/InformationWindow.hpp


@@ 117,14 119,12 @@ target_sources( ${PROJECT_NAME}
        windows/apps/AppsWindow.hpp
        windows/apps/MessagesWindow.hpp
        windows/security/AutolockWindow.hpp
        windows/BaseSettingsWindow.hpp
        windows/SystemMainWindow.hpp
        windows/LanguagesWindow.hpp
        windows/DateAndTimeMainWindow.hpp
        windows/ChangeDateAndTimeWindow.hpp
        windows/AboutYourPureWindow.hpp
        windows/CertificationWindow.hpp
        windows/TechnicalInformationWindow.hpp
        windows/system/SystemMainWindow.hpp
        windows/system/LanguagesWindow.hpp
        windows/system/DateAndTimeMainWindow.hpp
        windows/system/ChangeDateAndTimeWindow.hpp
        windows/system/CertificationWindow.hpp
        windows/system/TechnicalInformationWindow.hpp
)

add_dependencies(${PROJECT_NAME} version)

R module-apps/application-settings/models/DateAndTimeModel.cpp => module-apps/application-settings/models/system/DateAndTimeModel.cpp +4 -3
@@ 1,11 1,12 @@
// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md

#include <application-settings/widgets/SettingsDateItem.hpp>
#include <application-settings/widgets/SettingsTimeItem.hpp>
#include "DateAndTimeModel.hpp"

#include <application-settings/widgets/system/SettingsDateItem.hpp>
#include <application-settings/widgets/system/SettingsTimeItem.hpp>
#include <widgets/DateAndTimeStyle.hpp>
#include <ListView.hpp>
#include <apps-common/widgets/DateAndTimeStyle.hpp>

DateAndTimeModel::DateAndTimeModel(app::Application *application) : app(application)
{}

R module-apps/application-settings/models/DateAndTimeModel.hpp => module-apps/application-settings/models/system/DateAndTimeModel.hpp +3 -3
@@ 3,10 3,10 @@

#pragma once

#include "Application.hpp"
#include "InternalModel.hpp"
#include <ListItemProvider.hpp>
#include <widgets/DateOrTimeListItem.hpp>
#include <Application.hpp>
#include <InternalModel.hpp>
#include <ListItemProvider.hpp>

namespace gui
{

R module-apps/application-settings/models/FactoryData.cpp => module-apps/application-settings/models/system/FactoryData.cpp +0 -0
R module-apps/application-settings/models/FactoryData.hpp => module-apps/application-settings/models/system/FactoryData.hpp +0 -0
R module-apps/application-settings/models/SARInfoRepository.cpp => module-apps/application-settings/models/system/SARInfoRepository.cpp +0 -2
@@ 3,9 3,7 @@

#include "SARInfoRepository.hpp"

#include <gsl/util>
#include <i18n/i18n.hpp>

#include <fstream>

SARInfoRepository::SARInfoRepository(std::filesystem::path certificationInfoPath, std::filesystem::path fileName)

R module-apps/application-settings/models/SARInfoRepository.hpp => module-apps/application-settings/models/system/SARInfoRepository.hpp +0 -0
A module-apps/application-settings/models/system/TechnicalInformationModel.cpp => module-apps/application-settings/models/system/TechnicalInformationModel.cpp +72 -0
@@ 0,0 1,72 @@
// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md

#include "TechnicalInformationModel.hpp"

#include <application-settings/widgets/system/TechnicalInformationItem.hpp>
#include <application-settings/widgets/SettingsStyle.hpp>
#include <ListView.hpp>
#include <source/version.hpp>
#include <i18n/i18n.hpp>

TechnicalInformationModel::TechnicalInformationModel(std::unique_ptr<AbstractFactoryData> &&factoryData)
    : factoryData{std::move(factoryData)}
{
    createData();
}

auto TechnicalInformationModel::requestRecordsCount() -> unsigned int
{
    return internalData.size();
}

auto TechnicalInformationModel::getMinimalItemHeight() const -> unsigned int
{
    return style::technical_info::height + 2 * style::margins::big;
}

void TechnicalInformationModel::requestRecords(const uint32_t offset, const uint32_t limit)
{
    setupModel(offset, limit);
    list->onProviderDataUpdate();
}

auto TechnicalInformationModel::getItem(gui::Order order) -> gui::ListItem *
{
    return getRecord(order);
}

void TechnicalInformationModel::createData()
{
    internalData.push_back(
        new gui::TechnicalInformationItem(utils::translate("app_settings_tech_info_model"), factoryData->getModel()));

    internalData.push_back(new gui::TechnicalInformationItem(utils::translate("app_settings_tech_info_serial_number"),
                                                             factoryData->getSerial()));

    internalData.push_back(
        new gui::TechnicalInformationItem(utils::translate("app_settings_tech_info_os_version"), std::string(VERSION)));

    internalData.push_back(new gui::TechnicalInformationItem(utils::translate("app_settings_tech_info_imei"), imei));

#if DEVELOPER_SETTINGS_OPTIONS == 1
    internalData.push_back(new gui::TechnicalInformationItem(utils::translate("app_settings_tech_info_battery"),
                                                             factoryData->getBatteryRev()));

    internalData.push_back(new gui::TechnicalInformationItem(utils::translate("app_settings_tech_info_pcb_mb"),
                                                             factoryData->getPcb("mb")));

    internalData.push_back(new gui::TechnicalInformationItem(utils::translate("app_settings_tech_info_pcb_lm"),
                                                             factoryData->getPcb("lm")));

    internalData.push_back(new gui::TechnicalInformationItem(utils::translate("app_settings_tech_info_pcb_am"),
                                                             factoryData->getPcb("am")));

    internalData.push_back(new gui::TechnicalInformationItem(utils::translate("app_settings_tech_info_pcb_um"),
                                                             factoryData->getPcb("um")));
#endif // DEVELOPER_SETTINGS_OPTIONS

    for (auto item : internalData) {
        item->deleteByList = false;
    }
}

A module-apps/application-settings/models/system/TechnicalInformationModel.hpp => module-apps/application-settings/models/system/TechnicalInformationModel.hpp +27 -0
@@ 0,0 1,27 @@
// 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 "FactoryData.hpp"

#include <InternalModel.hpp>
#include <ListItemProvider.hpp>

class TechnicalInformationModel : public app::InternalModel<gui::ListItem *>, public gui::ListItemProvider
{
  private:
    static constexpr auto imei = "AA-BBBBBB-CCCCC-D";

    std::unique_ptr<AbstractFactoryData> factoryData;

  public:
    explicit TechnicalInformationModel(std::unique_ptr<AbstractFactoryData> &&factoryData);

    void createData();

    [[nodiscard]] auto requestRecordsCount() -> unsigned int override;
    [[nodiscard]] auto getMinimalItemHeight() const -> unsigned int override;
    auto getItem(gui::Order order) -> gui::ListItem * override;
    void requestRecords(const uint32_t offset, const uint32_t limit) override;
};

D module-apps/application-settings/presenter/TechnicalWindowPresenter.cpp => module-apps/application-settings/presenter/TechnicalWindowPresenter.cpp +0 -29
@@ 1,29 0,0 @@
// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md

#include "TechnicalWindowPresenter.hpp"

TechnicalWindowPresenter::TechnicalWindowPresenter(std::unique_ptr<AbstractFactoryData> &&factoryData)
    : factoryData{std::move(factoryData)}
{}

auto TechnicalWindowPresenter::getModel() -> std::string
{
    return factoryData->getModel();
}
auto TechnicalWindowPresenter::getCase() -> std::string
{
    return factoryData->getCase();
}
auto TechnicalWindowPresenter::getSerial() -> std::string
{
    return factoryData->getSerial();
}
auto TechnicalWindowPresenter::getBatteryRev() -> std::string
{
    return factoryData->getBatteryRev();
}
auto TechnicalWindowPresenter::getPcb(std::string type) -> std::string
{
    return factoryData->getPcb(type);
}
\ No newline at end of file

R module-apps/application-settings/presenter/SARInfoWindowPresenter.cpp => module-apps/application-settings/presenter/system/SARInfoWindowPresenter.cpp +0 -0
R module-apps/application-settings/presenter/SARInfoWindowPresenter.hpp => module-apps/application-settings/presenter/system/SARInfoWindowPresenter.hpp +2 -2
@@ 3,8 3,8 @@

#pragma once

#include "application-settings/models/SARInfoRepository.hpp"
#include "BasePresenter.hpp"
#include <application-settings/models/system/SARInfoRepository.hpp>
#include <BasePresenter.hpp>

class SARInfoWindowContract
{

A module-apps/application-settings/presenter/system/TechnicalWindowPresenter.cpp => module-apps/application-settings/presenter/system/TechnicalWindowPresenter.cpp +13 -0
@@ 0,0 1,13 @@
// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md

#include "TechnicalWindowPresenter.hpp"

TechnicalWindowPresenter::TechnicalWindowPresenter(std::shared_ptr<gui::ListItemProvider> technicalInformationProvider)
    : technicalInformationProvider{std::move(technicalInformationProvider)}
{}

std::shared_ptr<gui::ListItemProvider> TechnicalWindowPresenter::getTechnicalInformationProvider() const
{
    return technicalInformationProvider;
}

R module-apps/application-settings/presenter/TechnicalWindowPresenter.hpp => module-apps/application-settings/presenter/system/TechnicalWindowPresenter.hpp +7 -20
@@ 3,8 3,8 @@

#pragma once

#include "application-settings/models/FactoryData.hpp"
#include "BasePresenter.hpp"
#include <BasePresenter.hpp>
#include <ListItemProvider.hpp>

class TechnicalWindowContract
{


@@ 17,32 17,19 @@ class TechnicalWindowContract
    class Presenter : public app::BasePresenter<TechnicalWindowContract::View>
    {
      public:
        virtual ~Presenter() noexcept override = default;
        virtual ~Presenter() noexcept = default;

        virtual auto getModel() -> std::string               = 0;
        virtual auto getCase() -> std::string                = 0;
        virtual auto getSerial() -> std::string              = 0;
        virtual auto getBatteryRev() -> std::string          = 0;
        virtual auto getPcb(std::string type) -> std::string = 0;
        virtual std::shared_ptr<gui::ListItemProvider> getTechnicalInformationProvider() const = 0;
    };
};

class TechnicalWindowPresenter : public TechnicalWindowContract::Presenter
{
  public:
    static constexpr auto PCB_LM = "lm";
    static constexpr auto PCB_AM = "am";
    static constexpr auto PCB_MB = "mb";
    static constexpr auto PCB_UM = "um";
    explicit TechnicalWindowPresenter(std::shared_ptr<gui::ListItemProvider> technicalInformationProvider);

    explicit TechnicalWindowPresenter(std::unique_ptr<AbstractFactoryData> &&factoryData);

    auto getModel() -> std::string override;
    auto getCase() -> std::string override;
    auto getSerial() -> std::string override;
    auto getBatteryRev() -> std::string override;
    auto getPcb(std::string type) -> std::string override;
    std::shared_ptr<gui::ListItemProvider> getTechnicalInformationProvider() const override;

  private:
    std::unique_ptr<AbstractFactoryData> factoryData;
    std::shared_ptr<gui::ListItemProvider> technicalInformationProvider;
};

M module-apps/application-settings/widgets/SettingsStyle.hpp => module-apps/application-settings/widgets/SettingsStyle.hpp +6 -29
@@ 42,31 42,6 @@ namespace style

        namespace window
        {
            namespace languageChange
            {
                inline constexpr auto options_posX             = 17;
                inline constexpr auto options_posY             = 100;
                inline constexpr auto options_distance_between = 60;
            } // namespace languageChange

            namespace torch
            {
                inline constexpr auto body_offset = 155;

                inline constexpr auto bar_y = 396;
                inline constexpr auto bar_h = 1;

                inline constexpr auto description_y = 425;
                inline constexpr auto description_h = 100;
            } // namespace torch

            namespace nightshift
            {
                inline constexpr auto body_offset = style::window::default_vertical_pos + 16;

                inline constexpr auto separator_h = 55;
            } // namespace nightshift

            namespace newApn
            {
                inline constexpr uint32_t x = style::window::default_left_margin;


@@ 215,9 190,11 @@ namespace style

    } // namespace certification

    namespace techinfo
    namespace technical_info
    {
        inline constexpr auto width  = 400;
        inline constexpr auto height = 30;
    } // namespace techinfo
        inline constexpr auto width        = style::window::default_body_width;
        inline constexpr auto height       = 60;
        inline constexpr auto title_height = 27;
        inline constexpr auto value_height = 33;
    } // namespace technical_info
} // namespace style

R module-apps/application-settings/widgets/SettingsDateItem.cpp => module-apps/application-settings/widgets/system/SettingsDateItem.cpp +4 -3
@@ 2,9 2,10 @@
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md

#include "SettingsDateItem.hpp"
#include <apps-common/widgets/DateAndTimeStyle.hpp>
#include <apps-common/widgets/WidgetsUtils.hpp>
#include <module-gui/gui/input/InputEvent.hpp>

#include <widgets/DateAndTimeStyle.hpp>
#include <widgets/WidgetsUtils.hpp>
#include <InputEvent.hpp>

namespace date_and_time = style::window::date_and_time;


R module-apps/application-settings/widgets/SettingsDateItem.hpp => module-apps/application-settings/widgets/system/SettingsDateItem.hpp +1 -1
@@ 3,7 3,7 @@

#pragma once

#include <apps-common/widgets/DateWidget.hpp>
#include <widgets/DateWidget.hpp>
#include <widgets/DateOrTimeListItem.hpp>

namespace gui

R module-apps/application-settings/widgets/SettingsTimeItem.cpp => module-apps/application-settings/widgets/system/SettingsTimeItem.cpp +3 -2
@@ 3,8 3,9 @@

#include "SettingsDateItem.hpp"
#include "SettingsTimeItem.hpp"
#include <apps-common/widgets/DateAndTimeStyle.hpp>
#include <apps-common/widgets/WidgetsUtils.hpp>

#include <widgets/DateAndTimeStyle.hpp>
#include <widgets/WidgetsUtils.hpp>

namespace date_and_time = style::window::date_and_time;


R module-apps/application-settings/widgets/SettingsTimeItem.hpp => module-apps/application-settings/widgets/system/SettingsTimeItem.hpp +0 -0
A module-apps/application-settings/widgets/system/TechnicalInformationItem.cpp => module-apps/application-settings/widgets/system/TechnicalInformationItem.cpp +36 -0
@@ 0,0 1,36 @@
// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md

#include "TechnicalInformationItem.hpp"

#include <application-settings/widgets/SettingsStyle.hpp>

namespace gui
{
    TechnicalInformationItem::TechnicalInformationItem(const std::string &titleText, const std::string &valueText)
    {
        setMinimumSize(style::technical_info::width, style::technical_info::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 gui::Text(body, 0, 0, 0, 0);
        title->setMinimumSize(style::technical_info::width, style::technical_info::title_height);
        title->setFont(style::window::font::small);
        title->setAlignment(Alignment(gui::Alignment::Horizontal::Left, gui::Alignment::Vertical::Top));
        title->setText(titleText);

        value = new gui::Text(body, 0, 0, 0, 0);
        value->setMinimumSize(style::technical_info::width, style::technical_info::value_height);
        value->setAlignment(Alignment(gui::Alignment::Horizontal::Left, gui::Alignment::Vertical::Bottom));
        value->setFont(style::window::font::medium);
        value->setText(valueText);

        dimensionChangedCallback = [&]([[maybe_unused]] gui::Item &item, const BoundingBox &newDim) -> bool {
            body->setArea({0, 0, newDim.w, newDim.h});
            return true;
        };
    }
} /* namespace gui */

A module-apps/application-settings/widgets/system/TechnicalInformationItem.hpp => module-apps/application-settings/widgets/system/TechnicalInformationItem.hpp +23 -0
@@ 0,0 1,23 @@
// 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 <Text.hpp>
#include <BoxLayout.hpp>

namespace gui
{
    class TechnicalInformationItem : public ListItem
    {
      public:
        TechnicalInformationItem(const std::string &title, const std::string &value);

      private:
        VBox *body  = nullptr;
        Text *title = nullptr;
        Text *value = nullptr;
    };

} /* namespace gui */

D module-apps/application-settings/windows/AboutYourPureWindow.cpp => module-apps/application-settings/windows/AboutYourPureWindow.cpp +0 -38
@@ 1,38 0,0 @@
// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md

#include "application-settings/ApplicationSettings.hpp"
#include "OptionSetting.hpp"
#include "AboutYourPureWindow.hpp"

namespace gui
{
    AboutYourPureWindow::AboutYourPureWindow(app::Application *app)
        : BaseSettingsWindow(app, window::name::about_your_pure)
    {
        setTitle(utils::translate("app_settings_about_your_pure"));
    }

    auto AboutYourPureWindow::buildOptionsList() -> std::list<Option>
    {
        std::list<Option> optionList;
        auto addOption = [&](UTF8 name, const std::string &window) {
            optionList.emplace_back(std::make_unique<option::OptionSettings>(
                utils::translate(name),
                [=](Item &item) {
                    LOG_INFO("switching to %s page", window.c_str());
                    application->switchWindow(window, nullptr);
                    return true;
                },
                nullptr,
                nullptr,
                option::SettingRightItem::ArrowWhite));
        };

        addOption("app_settings_technical_information", gui::window::name::technical_information);
        addOption("app_settings_certification", gui::window::name::certification);
        addOption("app_settings_sar", gui::window::name::sar);

        return optionList;
    }
} // namespace gui

D module-apps/application-settings/windows/TechnicalInformationWindow.cpp => module-apps/application-settings/windows/TechnicalInformationWindow.cpp +0 -108
@@ 1,108 0,0 @@
// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md

#include "TechnicalInformationWindow.hpp"
#include <application-settings/ApplicationSettings.hpp>
#include <widgets/Text.hpp>
#include <application-settings/widgets/SettingsStyle.hpp>
#include <source/version.hpp>

namespace gui
{

    TechnicalInformationWindow::TechnicalInformationWindow(
        app::Application *app, std::unique_ptr<TechnicalWindowContract::Presenter> technicalPresenter)
        : AppWindow(app, gui::window::name::certification), presenter(std::move(technicalPresenter))
    {
        presenter->attach(this);
        buildInterface();
    }

    void TechnicalInformationWindow::buildInterface()
    {
        AppWindow::buildInterface();

        setTitle(utils::translate("app_settings_technical_information"));

        auto vBox = new VBox(this,
                             style::window::default_left_margin,
                             style::window::default_vertical_pos + style::margins::very_big,
                             style::window::default_body_width,
                             style::window::default_body_height);
        vBox->setEdges(RectangleEdge::None);

        modelText = new gui::Text(vBox, 0, 0, style::techinfo::width, style::techinfo::height);
        modelText->setText(utils::translate("app_settings_tech_info_model"));
        modelText->setFont(style::window::font::smallbold);
        modelValue = new gui::Text(vBox, 0, 0, style::techinfo::width, style::techinfo::height);
        modelValue->setText(presenter->getModel());

        serialNumberText = new gui::Text(vBox, 0, 0, style::techinfo::width, style::techinfo::height);
        serialNumberText->setFont(style::window::font::smallbold);
        serialNumberText->setText(utils::translate("app_settings_tech_info_serial_number"));
        serialNumberValue = new gui::Text(vBox, 0, 0, style::techinfo::width, style::techinfo::height);
        serialNumberValue->setText(presenter->getSerial());

        osVersionText = new gui::Text(vBox, 0, 0, style::techinfo::width, style::techinfo::height);
        osVersionText->setFont(style::window::font::smallbold);
        osVersionText->setText(utils::translate("app_settings_tech_info_os_version"));
        osVersionValue = new gui::Text(vBox, 0, 0, style::techinfo::width, style::techinfo::height);
        osVersionValue->setText(std::string(VERSION));

        imeiText = new gui::Text(vBox, 0, 0, style::techinfo::width, style::techinfo::height);
        imeiText->setFont(style::window::font::smallbold);
        imeiText->setText(utils::translate("app_settings_tech_info_imei"));
        imeiValue = new gui::Text(vBox, 0, 0, style::techinfo::width, style::techinfo::height);
        imeiValue->setText(imei);

        batteryText = new gui::Text(vBox, 0, 0, style::techinfo::width, style::techinfo::height);
        batteryText->setFont(style::window::font::smallbold);
        batteryText->setText(utils::translate("app_settings_tech_info_battery"));
        batteryValue = new gui::Text(vBox, 0, 0, style::techinfo::width, style::techinfo::height);
        batteryValue->setText(presenter->getBatteryRev());

        pcbMbText = new gui::Text(vBox, 0, 0, style::techinfo::width, style::techinfo::height);
        pcbMbText->setText(utils::translate("app_settings_tech_info_pcb_mb"));
        pcbMbText->setFont(style::window::font::smallbold);
        pcbMbValue = new gui::Text(vBox, 0, 0, style::techinfo::width, style::techinfo::height);
        pcbMbValue->setText(presenter->getPcb(TechnicalWindowPresenter::PCB_MB));

        pcbLmText = new gui::Text(vBox, 0, 0, style::techinfo::width, style::techinfo::height);
        pcbLmText->setFont(style::window::font::smallbold);
        pcbLmText->setText(utils::translate("app_settings_tech_info_pcb_lm"));
        pcbLmValue = new gui::Text(vBox, 0, 0, style::techinfo::width, style::techinfo::height);
        pcbLmValue->setText(presenter->getPcb(TechnicalWindowPresenter::PCB_LM));

        pcbAmText = new gui::Text(vBox, 0, 0, style::techinfo::width, style::techinfo::height);
        pcbAmText->setFont(style::window::font::smallbold);
        pcbAmText->setText(utils::translate("app_settings_tech_info_pcb_am"));
        pcbAmValue = new gui::Text(vBox, 0, 0, style::techinfo::width, style::techinfo::height);
        pcbAmValue->setText(presenter->getPcb(TechnicalWindowPresenter::PCB_AM));

        pcbUmText = new gui::Text(vBox, 0, 0, style::techinfo::width, style::techinfo::height);
        pcbUmText->setFont(style::window::font::smallbold);
        pcbUmText->setText(utils::translate("app_settings_tech_info_pcb_um"));
        pcbUmValue = new gui::Text(vBox, 0, 0, style::techinfo::width, style::techinfo::height);
        pcbUmValue->setText(presenter->getPcb(TechnicalWindowPresenter::PCB_UM));

        bottomBar->setText(BottomBar::Side::RIGHT, utils::translate(style::strings::common::back));
    }

    void TechnicalInformationWindow::destroyInterface()
    {
        erase();
        modelText         = nullptr;
        modelValue        = nullptr;
        serialNumberText  = nullptr;
        serialNumberValue = nullptr;
        osVersionText     = nullptr;
        osVersionValue    = nullptr;
        imeiText          = nullptr;
        imeiValue         = nullptr;
    };

    TechnicalInformationWindow::~TechnicalInformationWindow()
    {
        destroyInterface();
    }
} // namespace gui

D module-apps/application-settings/windows/TechnicalInformationWindow.hpp => module-apps/application-settings/windows/TechnicalInformationWindow.hpp +0 -56
@@ 1,56 0,0 @@
// 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 "BaseSettingsWindow.hpp"
#include <module-apps/application-settings/ApplicationSettings.hpp>
#include <module-apps/application-settings/presenter/TechnicalWindowPresenter.hpp>

namespace gui
{
    class TechnicalInformationWindow : public AppWindow, public TechnicalWindowContract::View
    {
        static constexpr auto imei = "AA-BBBBBB-CCCCC-D";

      public:
        TechnicalInformationWindow(app::Application *app,
                                   std::unique_ptr<TechnicalWindowContract::Presenter> presenter);
        ~TechnicalInformationWindow() override;

        void destroyInterface() override;

      private:
        void buildInterface() override;

        gui::Text *modelText  = nullptr;
        gui::Text *modelValue = nullptr;

        gui::Text *serialNumberText  = nullptr;
        gui::Text *serialNumberValue = nullptr;

        gui::Text *osVersionText  = nullptr;
        gui::Text *osVersionValue = nullptr;

        gui::Text *imeiText  = nullptr;
        gui::Text *imeiValue = nullptr;

        gui::Text *batteryText  = nullptr;
        gui::Text *batteryValue = nullptr;

        gui::Text *pcbMbText  = nullptr;
        gui::Text *pcbMbValue = nullptr;

        gui::Text *pcbAmText  = nullptr;
        gui::Text *pcbAmValue = nullptr;

        gui::Text *pcbUmText  = nullptr;
        gui::Text *pcbUmValue = nullptr;

        gui::Text *pcbLmText  = nullptr;
        gui::Text *pcbLmValue = nullptr;

        std::unique_ptr<TechnicalWindowContract::Presenter> presenter;
    };

} // namespace gui

M module-apps/application-settings/windows/WindowNames.hpp => module-apps/application-settings/windows/WindowNames.hpp +5 -9
@@ 55,20 55,16 @@ namespace gui::window::name
    inline constexpr auto security = "Security";
    inline constexpr auto autolock = "Autolock";

    inline constexpr auto system          = "System";
    inline constexpr auto change_settings = "ChangeSettings";
    inline constexpr auto dialog_settings = "DialogSettings";
    inline constexpr auto change_passcode = "ChangePasscode";

    inline constexpr auto system                = "System";
    inline constexpr auto languages             = "Languages";
    inline constexpr auto date_and_time         = "DateAndTime";
    inline constexpr auto factory_reset         = "FactoryReset";
    inline constexpr auto change_date_and_time  = "ChangeDateAndTime";
    inline constexpr auto change_time_zone      = "ChangeTimeZone";
    inline constexpr auto about_your_pure       = "AboutYourPure";
    inline constexpr auto technical_information = "TechnicalInformation";
    inline constexpr auto certification         = "Certification";
    inline constexpr auto sar                   = "Sar";
    inline constexpr auto factory_reset         = "FactoryReset";

    inline constexpr auto change_date_and_time = "ChangeDateAndTime";
    inline constexpr auto change_time_zone     = "ChangeTimeZone";

    inline constexpr auto dialog_settings = "DialogSettings";
} // namespace gui::window::name

R module-apps/application-settings/windows/CertificationWindow.cpp => module-apps/application-settings/windows/system/CertificationWindow.cpp +4 -22
@@ 2,10 2,11 @@
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md

#include "CertificationWindow.hpp"
#include <application-settings/ApplicationSettings.hpp>
#include <widgets/Text.hpp>
#include <widgets/Image.hpp>

#include <application-settings/windows/WindowNames.hpp>
#include <application-settings/widgets/SettingsStyle.hpp>
#include <Text.hpp>
#include <Image.hpp>

inline constexpr auto certno = "XXXXXXXXXXXXXXXXXXX";



@@ 89,23 90,4 @@ namespace gui
        europeCeText->setText(utils::translate("app_settings_europe"));
        europeCeValue->setText(certno);
    }

    void CertificationWindow::destroyInterface()
    {
        erase();
        usFccIdText   = nullptr;
        usFccIdValue  = nullptr;
        usFccIdImage  = nullptr;
        canadaIcText  = nullptr;
        canadaIcValue = nullptr;
        canadaIcImage = nullptr;
        europeCeText  = nullptr;
        europeCeValue = nullptr;
        europeCeImage = nullptr;
    };

    CertificationWindow::~CertificationWindow()
    {
        destroyInterface();
    }
} // namespace gui

R module-apps/application-settings/windows/CertificationWindow.hpp => module-apps/application-settings/windows/system/CertificationWindow.hpp +1 -3
@@ 3,7 3,7 @@

#pragma once

#include "BaseSettingsWindow.hpp"
#include <application-settings/windows/BaseSettingsWindow.hpp>

namespace gui
{


@@ 11,8 11,6 @@ namespace gui
    {
      public:
        explicit CertificationWindow(app::Application *app);
        ~CertificationWindow() override;
        void destroyInterface() override;

      private:
        void buildInterface() override;

R module-apps/application-settings/windows/ChangeDateAndTimeWindow.cpp => module-apps/application-settings/windows/system/ChangeDateAndTimeWindow.cpp +4 -4
@@ 2,12 2,12 @@
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md

#include "ChangeDateAndTimeWindow.hpp"
#include <application-settings/ApplicationSettings.hpp>
#include <gui/input/InputEvent.hpp>
#include <ListView.hpp>

#include <widgets/DateAndTimeStyle.hpp>
#include <service-time/Constants.hpp>
#include <service-time/service-time/TimeMessage.hpp>
#include <widgets/DateAndTimeStyle.hpp>
#include <InputEvent.hpp>
#include <ListView.hpp>

namespace gui
{

R module-apps/application-settings/windows/ChangeDateAndTimeWindow.hpp => module-apps/application-settings/windows/system/ChangeDateAndTimeWindow.hpp +2 -2
@@ 3,9 3,9 @@

#pragma once

#include <application-settings/windows/WindowNames.hpp>
#include <application-settings/models/system/DateAndTimeModel.hpp>
#include <AppWindow.hpp>
#include <application-settings/ApplicationSettings.hpp>
#include "application-settings/models/DateAndTimeModel.hpp"

namespace gui
{

R module-apps/application-settings/windows/ChangeTimeZone.cpp => module-apps/application-settings/windows/system/ChangeTimeZone.cpp +2 -1
@@ 2,8 2,9 @@
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md

#include "ChangeTimeZone.hpp"
#include "OptionSetting.hpp"

#include <application-settings/windows/WindowNames.hpp>
#include <OptionSetting.hpp>
#include <time/TimeZone.hpp>
#include <service-time/service-time/TimeMessage.hpp>
#include <service-time/Constants.hpp>

R module-apps/application-settings/windows/ChangeTimeZone.hpp => module-apps/application-settings/windows/system/ChangeTimeZone.hpp +1 -3
@@ 3,9 3,7 @@

#pragma once

#include "BaseSettingsWindow.hpp"
#include <application-settings/ApplicationSettings.hpp>
#include <Option.hpp>
#include <application-settings/windows/BaseSettingsWindow.hpp>

namespace gui
{

R module-apps/application-settings/windows/DateAndTimeMainWindow.cpp => module-apps/application-settings/windows/system/DateAndTimeMainWindow.cpp +3 -2
@@ 1,9 1,10 @@
// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md

#include "application-settings/ApplicationSettings.hpp"
#include "DateAndTimeMainWindow.hpp"
#include "OptionSetting.hpp"

#include <application-settings/windows/WindowNames.hpp>
#include <OptionSetting.hpp>
#include <service-time/service-time/TimeMessage.hpp>
#include <service-time/Constants.hpp>
#include <service-time/api/TimeSettingsApi.hpp>

R module-apps/application-settings/windows/DateAndTimeMainWindow.hpp => module-apps/application-settings/windows/system/DateAndTimeMainWindow.hpp +2 -2
@@ 3,8 3,8 @@

#pragma once

#include "BaseSettingsWindow.hpp"
#include "time/time_locale.hpp"
#include <application-settings/windows/BaseSettingsWindow.hpp>
#include <time/time_locale.hpp>

namespace gui
{

R module-apps/application-settings/windows/LanguagesWindow.cpp => module-apps/application-settings/windows/system/LanguagesWindow.cpp +4 -5
@@ 1,13 1,12 @@
// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md

#include "application-settings/ApplicationSettings.hpp"
#include "application-settings/data/LanguagesData.hpp"
#include "LanguagesWindow.hpp"

#include <utility>
#include "OptionSetting.hpp"
#include "service-appmgr/Controller.hpp"
#include <application-settings/data/LanguagesData.hpp>

#include <OptionSetting.hpp>
#include <service-appmgr/Controller.hpp>

namespace gui
{

R module-apps/application-settings/windows/LanguagesWindow.hpp => module-apps/application-settings/windows/system/LanguagesWindow.hpp +2 -3
@@ 3,9 3,8 @@

#pragma once

#include "application-settings/ApplicationSettings.hpp"
#include "BaseSettingsWindow.hpp"
#include <i18n/i18n.hpp>
#include <application-settings/windows/WindowNames.hpp>
#include <application-settings/windows/BaseSettingsWindow.hpp>

namespace gui
{

R module-apps/application-settings/windows/SARInfoWindow.cpp => module-apps/application-settings/windows/system/SARInfoWindow.cpp +4 -18
@@ 2,8 2,10 @@
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md

#include "SARInfoWindow.hpp"
#include "application-settings/ApplicationSettings.hpp"
#include "application-settings/widgets/SettingsStyle.hpp"

#include <application-settings/windows/WindowNames.hpp>
#include <application-settings/widgets/SettingsStyle.hpp>
#include <i18n/i18n.hpp>

namespace gui
{


@@ 15,22 17,6 @@ namespace gui
        buildInterface();
    }

    SARInfoWindow::~SARInfoWindow() noexcept
    {
        destroyInterface();
    }

    void SARInfoWindow::rebuild()
    {
        destroyInterface();
        buildInterface();
    }

    void SARInfoWindow::destroyInterface()
    {
        erase();
    }

    void SARInfoWindow::buildInterface()
    {
        AppWindow::buildInterface();

R module-apps/application-settings/windows/SARInfoWindow.hpp => module-apps/application-settings/windows/system/SARInfoWindow.hpp +3 -10
@@ 3,13 3,9 @@

#pragma once

#include "AppWindow.hpp"

#include "application-settings/presenter/SARInfoWindowPresenter.hpp"

#include <module-gui/gui/widgets/Label.hpp>
#include <module-gui/gui/widgets/Text.hpp>
#include <module-gui/gui/input/InputEvent.hpp>
#include <application-settings/presenter/system/SARInfoWindowPresenter.hpp>
#include <AppWindow.hpp>
#include <Text.hpp>

namespace gui
{


@@ 18,13 14,10 @@ namespace gui
      public:
        explicit SARInfoWindow(app::Application *app,
                               std::unique_ptr<SARInfoWindowContract::Presenter> &&windowPresenter);
        ~SARInfoWindow() noexcept override;

      private:
        void onBeforeShow(gui::ShowMode mode, gui::SwitchData *data) override;
        void rebuild() override;
        void buildInterface() override;
        void destroyInterface() override;

        std::unique_ptr<SARInfoWindowContract::Presenter> presenter;
        gui::Text *sarInfoText = nullptr;

R module-apps/application-settings/windows/SystemMainWindow.cpp => module-apps/application-settings/windows/system/SystemMainWindow.cpp +8 -4
@@ 1,12 1,14 @@
// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md

#include "application-settings/ApplicationSettings.hpp"
#include "OptionSetting.hpp"
#include "SystemMainWindow.hpp"
#include "DialogMetadataMessage.hpp"

#include <application-settings/windows/WindowNames.hpp>

#include <service-desktop/DesktopMessages.hpp>
#include <service-desktop/ServiceDesktop.hpp>
#include <OptionSetting.hpp>
#include <DialogMetadataMessage.hpp>

namespace gui
{


@@ 53,9 55,11 @@ namespace gui
                option::SettingRightItem::Disabled));
        };

        addOption("app_settings_about_your_pure", gui::window::name::technical_information);
        addOption("app_settings_language", gui::window::name::languages);
        addOption("app_settings_date_and_time", gui::window::name::date_and_time);
        addOption("app_settings_about_your_pure", gui::window::name::about_your_pure);
        addOption("app_settings_certification", gui::window::name::certification);
        addOption("app_settings_sar", gui::window::name::sar);
        addFactoryResetOption("app_settings_factory_reset", gui::window::name::factory_reset);

        return optionList;

R module-apps/application-settings/windows/SystemMainWindow.hpp => module-apps/application-settings/windows/system/SystemMainWindow.hpp +1 -1
@@ 3,7 3,7 @@

#pragma once

#include "BaseSettingsWindow.hpp"
#include <application-settings/windows/BaseSettingsWindow.hpp>

namespace gui
{

A module-apps/application-settings/windows/system/TechnicalInformationWindow.cpp => module-apps/application-settings/windows/system/TechnicalInformationWindow.cpp +37 -0
@@ 0,0 1,37 @@
// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md

#include "TechnicalInformationWindow.hpp"

#include <application-settings/windows/WindowNames.hpp>

namespace gui
{
    TechnicalInformationWindow::TechnicalInformationWindow(
        app::Application *app, std::shared_ptr<TechnicalWindowContract::Presenter> technicalPresenter)
        : AppWindow(app, gui::window::name::technical_information), presenter(std::move(technicalPresenter))
    {
        presenter->attach(this);
        buildInterface();
    }

    void TechnicalInformationWindow::buildInterface()
    {
        AppWindow::buildInterface();

        setTitle(utils::translate("app_settings_about_your_pure"));
        bottomBar->setActive(gui::BottomBar::Side::RIGHT, true);
        bottomBar->setText(gui::BottomBar::Side::RIGHT, utils::translate(::style::strings::common::back));

        auto 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->getTechnicalInformationProvider(),
                                 listview::ScrollBarType::Fixed);

        setFocusItem(list);
        list->rebuildList();
    }
} // namespace gui

R module-apps/application-settings/windows/AboutYourPureWindow.hpp => module-apps/application-settings/windows/system/TechnicalInformationWindow.hpp +11 -4
@@ 3,16 3,23 @@

#pragma once

#include "BaseSettingsWindow.hpp"
#include <application-settings/windows/BaseSettingsWindow.hpp>
#include <application-settings/presenter/system/TechnicalWindowPresenter.hpp>
#include <application-settings/models/system/TechnicalInformationModel.hpp>

namespace gui
{
    class AboutYourPureWindow : public BaseSettingsWindow
    class TechnicalInformationWindow : public AppWindow, public TechnicalWindowContract::View
    {

      public:
        explicit AboutYourPureWindow(app::Application *app);
        TechnicalInformationWindow(app::Application *app,
                                   std::shared_ptr<TechnicalWindowContract::Presenter> presenter);

      private:
        auto buildOptionsList() -> std::list<Option> override;
        void buildInterface() override;

        std::shared_ptr<TechnicalWindowContract::Presenter> presenter;
    };

} // namespace gui

M module-apps/apps-common/options/OptionStyle.hpp => module-apps/apps-common/options/OptionStyle.hpp +1 -1
@@ 43,7 43,7 @@ namespace gui::option
        inline constexpr uint32_t optionsListTopMargin        = 10U;
        inline constexpr uint32_t optionsListX                = style::window::default_left_margin;
        inline constexpr uint32_t optionsListY = style::window::default_vertical_pos + optionsListTopMargin;
        inline constexpr uint32_t optionsListW                = style::window::default_body_width;
        inline constexpr uint32_t optionsListW                = style::listview::body_width_with_scroll;
        inline constexpr uint32_t optionsListH                = style::window::default_body_height;
    } // namespace window