~aleteoryx/muditaos

ref: 2a53becd2524fc0dba7260632d3ec409eb3a61fd muditaos/module-apps/apps-common/widgets/spinners/SpinnerContents.hpp -rw-r--r-- 1.3 KiB
2a53becd — Maciej Janicki [BH-1136] Fix bootloop after low power 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
54
55
56
57
58
// 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 <optional>

namespace gui
{
    template <typename ValueT, typename StringT> class NumWithString
    {
      public:
        NumWithString() = default;

        NumWithString(ValueT value, StringT string) : value{value}, string{string}
        {}

        explicit NumWithString(StringT string) : string{string}
        {}
        explicit NumWithString(ValueT value) : value{value}
        {}

        bool operator==(const NumWithString &oth) const
        {
            return oth.toStr() == toStr();
        }

        operator StringT() const
        {
            return toStr();
        }

        std::optional<ValueT> getValue() const
        {
            return value;
        }

        std::optional<StringT> getSuffix() const
        {
            return string;
        }

      private:
        StringT toStr() const
        {
            StringT retStr;
            if (value) {
                retStr += std::to_string(*value) + " ";
            }
            if (string) {
                retStr += *string;
            }
            return retStr;
        }
        std::optional<ValueT> value;
        std::optional<StringT> string;
    };
} // namespace gui