~aleteoryx/muditaos

ref: 48d31b876cf6fed438676e4fa73b6e16b1f6b3a7 muditaos/module-apps/application-meditation/widgets/MeditationListItems.hpp -rw-r--r-- 1.5 KiB
48d31b87 — tomaszkrosnowski [EGD-6311] Audio settings windows 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
59
// Copyright (c) 2017-2020, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md

#pragma once

#include "ListItem.hpp"
#include "Label.hpp"
#include "Image.hpp"

#include <chrono>

namespace gui
{
    class MeditationListItem : public ListItem
    {
      protected:
        gui::Label *text = nullptr;

      public:
        MeditationListItem() = delete;
        MeditationListItem(std::string text);
        virtual void select(bool isSelected)
        {}
    };

    class PreparationTimeItem : public MeditationListItem
    {
        gui::Image *imageSelectionTick = nullptr;
        std::chrono::seconds duration;
        [[nodiscard]] static std::string convertToPrintable(std::chrono::seconds _duration);

      public:
        explicit PreparationTimeItem(std::chrono::seconds _duration);
        void select(bool isSelected) final;
        [[nodiscard]] std::chrono::seconds getDuration() const noexcept
        {
            return duration;
        }
    };

    class OptionItemMeditationCounter : public MeditationListItem
    {
        gui::Image *imageOptionOn  = nullptr;
        gui::Image *imageOptionOff = nullptr;

      public:
        explicit OptionItemMeditationCounter(bool isCounterOn);
        void select(bool value) final;
    };

    class OptionItemPreparation : public MeditationListItem
    {
        gui::Image *image = nullptr;

      public:
        OptionItemPreparation();
    };

} // namespace gui