~aleteoryx/muditaos

ref: 4685dc07a7817441c3802e45d54495d2e1e97db8 muditaos/module-gui/gui/widgets/status-bar/Time.cpp -rw-r--r-- 1.6 KiB
4685dc07 — Przemyslaw Brudny [EGD-6960] Header addition related style cleanups 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
44
45
46
47
48
49
50
51
52
53
// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md

#include "Time.hpp"
#include "Style.hpp"

#include <ctime>
namespace gui::status_bar
{
    Time::Time(Item *parent, uint32_t x, uint32_t y, uint32_t w, uint32_t h)
        : StatusBarWidgetBase(parent, x, y, w, h), _time{}
    {
        setFilled(false);
        setBorderColor(gui::ColorNoColor);
        setFont(style::status_bar::time::font);
        setAlignment(gui::Alignment(gui::Alignment::Horizontal::Center, gui::Alignment::Vertical::Bottom));
        using namespace utils::time;
        setFormat(Locale::format(Locale::TimeFormat::FormatTime12H));
        update();
    }

    void Time::update()
    {
        _time.set_time(std::time(nullptr));
        setText(_time.str());
    }

    void Time::setFormat(const std::string &format)
    {
        _time.set_format(format);
    }

    void Time::acceptStatusBarVisitor(StatusBarVisitor &visitor)
    {
        visitor.visit(*this);
    }

    TimeConfiguration::TimeConfiguration(TimeMode mode) : mode{mode}
    {}

    TimeConfiguration::TimeMode TimeConfiguration::getMode() const noexcept
    {
        return mode;
    }

    void TimeConfiguration::visit(gui::status_bar::Time &widget) const
    {
        using namespace utils::time;
        getMode() == TimeConfiguration::TimeMode::Time12h
            ? widget.setFormat(Locale::format(Locale::TimeFormat::FormatTime12H))
            : widget.setFormat(Locale::format(Locale::TimeFormat::FormatTime24H));
    }
} // namespace gui::status_bar