~aleteoryx/muditaos

ref: ca9579a252e7ea6186b2dedb4dd6f66309eb0d93 muditaos/module-gui/gui/widgets/status-bar/StatusBarWidgetBase.hpp -rw-r--r-- 1.2 KiB
ca9579a2 — Dawid Wojtas [BH-1590] Light press ends the Power Nap 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
// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md

#pragma once

#include <log/log.hpp>

namespace gui::status_bar
{
    class SIM;
    class Time;
} // namespace gui::status_bar

class StatusBarVisitor
{
    void logError() const
    {
        LOG_ERROR("Invalid widget visited");
    }

  public:
    virtual void visit([[maybe_unused]] gui::status_bar::SIM &widget) const
    {
        logError();
    }
    virtual void visit([[maybe_unused]] gui::status_bar::Time &widget) const
    {
        logError();
    }
    virtual ~StatusBarVisitor() = default;
};

template <typename ItemPolicy>
class StatusBarWidgetBase : public ItemPolicy
{
  public:
    using ItemPolicy::ItemPolicy;
    virtual ~StatusBarWidgetBase() = default;

    virtual void show()
    {
        ItemPolicy::setVisible(true);
    }

    virtual void hide()
    {
        ItemPolicy::setVisible(false);
    }

    virtual bool isVisible()
    {
        return ItemPolicy::visible;
    }

    virtual void acceptStatusBarVisitor([[maybe_unused]] StatusBarVisitor &visitor)
    {
        LOG_ERROR("Invalid visitor");
    }
};