~aleteoryx/muditaos

ref: 3f5b66b3be78fac645ecd2a159c6f9ea2c3995f6 muditaos/module-apps/application-bell-settings/widgets/TemperatureUnitListItem.cpp -rw-r--r-- 1.7 KiB
3f5b66b3 — Mateusz Piesta [BH-792] Temp format list item 4 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
// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md

#include "BellSettingsStyle.hpp"
#include "TemperatureUnitListItem.hpp"

#include <apps-common/Temperature.hpp>
#include <gui/widgets/TextSpinner.hpp>

namespace gui
{
    TemperatureUnitListItem::TemperatureUnitListItem(const UTF8 &topDesc, Length x, Length y, Length w, Length h)
        : BellSideListItem(topDesc)
    {
        setMinimumSize(style::sidelistview::list_item::w, style::sidelistview::list_item::h);
        setEdges(RectangleEdge::None);
        setFocusItem(body);

        temperatureUnit = new TextSpinner({temperature::celsiusDegreeSymbol, temperature::fahrenheitDegreeSymbol},
                                          Boundaries::Continuous);
        temperatureUnit->setMaximumSize(style::bell_base_layout::w, style::bell_base_layout::h);
        temperatureUnit->setFont(bell_settings_style::time_fmt_set_list_item::font);
        temperatureUnit->setAlignment(Alignment(Alignment::Horizontal::Center, Alignment::Vertical::Center));
        temperatureUnit->setFocusEdges(RectangleEdge::None);
        body->centerBox->addWidget(temperatureUnit);

        dimensionChangedCallback = [&](Item &, const BoundingBox &newDim) -> bool {
            body->setArea({0, 0, newDim.w, newDim.h});
            return true;
        };
        focusChangedCallback = [&](Item &) {
            setFocusItem(focus ? body : nullptr);
            return true;
        };

        inputCallback = [&](Item &, const InputEvent &inputEvent) -> bool { return body->onInput(inputEvent); };
    }

    auto TemperatureUnitListItem::getUnitAsStr() const noexcept -> UTF8
    {
        return temperatureUnit->getCurrentText();
    }
} // namespace gui