~aleteoryx/muditaos

ref: 2e8815bb383fd70f080ae004867de066987a0da0 muditaos/module-apps/application-settings/windows/system/CertificationWindow.cpp -rw-r--r-- 5.9 KiB
2e8815bb — Lefucjusz [MOS-657] Fix contacts list order 3 years ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md

#include "CertificationWindow.hpp"

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

namespace gui
{
    CertificationWindow::CertificationWindow(app::ApplicationCommon *app)
        : AppWindow(app, gui::window::name::certification)
    {
        buildInterface();
    }

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

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

        navBar->setText(nav_bar::Side::Right, utils::translate(style::strings::common::back));

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

        createEntryWithTextsAndImage(body,
                                     "United States",
                                     "<text>Contains FCC IDs:<br></br>XMR201903EG25G, RFR-BL871</text>",
                                     "settings_certification_US");

        createEntryWithTextsAndImage(body,
                                     "Canada",
                                     "<text>Contains ISED IDs:<br></br>10224A-201903EG25G, 23249-BL871</text>",
                                     "settings_certification_Canada");

        createEntryWithTextsAndImage(body, "Australia/New Zealand", "", "settings_certification_Australia");

        createEntryWithTitlesAndImages(
            body, "Europe", "settings_certification_Eurlope", "United Kingdom", "settings_certification_UKCA");

        body->resizeItems();
    }

    void CertificationWindow::createEntryWithTextsAndImage(Item *parent,
                                                           const std::string &title,
                                                           const std::string &description,
                                                           const std::string &imageName)
    {
        auto elemHeight = !description.empty() ? style::certification::entry_with_texts_and_image_max_h
                                               : style::certification::entry_with_texts_and_image_min_h;

        auto entryBody = new HBox(parent);
        entryBody->setMinimumSize(style::window::default_body_width, elemHeight);
        entryBody->setEdges(RectangleEdge::None);
        entryBody->setMargins(Margins(0, style::margins::very_big, 0, style::margins::very_big));

        auto textBody = new VBox(entryBody);
        textBody->setMinimumHeight(elemHeight);
        textBody->setMaximumWidth(style::window::default_body_width);
        textBody->setEdges(RectangleEdge::None);

        auto imageBody = new ImageBox(entryBody, 0, 0, 0, 0, new Image(imageName));
        imageBody->setMinimumSizeToFitImage();
        imageBody->setAlignment(Alignment(Alignment::Vertical::Top));

        createTitle(textBody, title);

        if (!description.empty()) {
            auto descriptionText = new TextFixedSize(textBody, 0, 0, 0, 0);
            descriptionText->drawUnderline(false);
            descriptionText->setFont(style::window::font::small);
            descriptionText->setMinimumHeightToFitText(2);
            descriptionText->setMaximumWidth(style::window::default_body_width);
            descriptionText->setMargins(Margins(0, style::margins::very_big, 0, 0));
            descriptionText->setRichText(description);
        }
    }

    void CertificationWindow::createTitle(Item *parent, const std::string &title)
    {
        auto titleText = new TextFixedSize(parent, 0, 0, 0, 0);
        titleText->drawUnderline(false);
        titleText->setFont(style::window::font::smallbold);
        titleText->setMinimumHeightToFitText();
        titleText->setMaximumWidth(style::window::default_body_width);
        titleText->setMaximumHeight(style::certification::entry_with_texts_and_image_max_h);
        titleText->setAlignment(Alignment(Alignment::Vertical::Center));
        titleText->setText(title);
    }

    void CertificationWindow::createTitleAndImage(Item *parent, const std::string &title, const std::string &imageName)
    {
        auto entryBody = new VBox(parent);
        entryBody->setMinimumHeight(style::certification::entry_with_texts_and_image_max_h);
        entryBody->setMaximumWidth(style::window::default_body_width / 2);
        entryBody->setEdges(RectangleEdge::None);

        createTitle(entryBody, title);

        auto imageBody = new ImageBox(entryBody, 0, 0, 0, 0, new Image(imageName));
        imageBody->setMinimumSizeToFitImage();
        imageBody->setMinimumHeight(style::certification::entry_with_texts_and_image_min_h);
        imageBody->setAlignment(Alignment(Alignment::Vertical::Bottom));
    }

    void CertificationWindow::createEntryWithTitlesAndImages(Item *parent,
                                                             const std::string &title1,
                                                             const std::string &imageName1,
                                                             const std::string &title2,
                                                             const std::string &imageName2)
    {
        auto entryBody = new HBox(parent);
        entryBody->setMinimumSize(style::window::default_body_width,
                                  style::certification::entry_with_texts_and_image_max_h);
        entryBody->setEdges(RectangleEdge::None);
        entryBody->setMargins(Margins(0, style::margins::very_big, 0, style::margins::very_big));

        createTitleAndImage(entryBody, title1, imageName1);
        createTitleAndImage(entryBody, title2, imageName2);
    }
} // namespace gui