~aleteoryx/muditaos

ref: b95894a8abc10cddf0b58dda4b2569b01eec0d7e muditaos/module-apps/application-settings/windows/OptionsWidgetMaker.hpp -rw-r--r-- 1.6 KiB
b95894a8 — Lefucjusz [MOS-1064] Fix no input language selected for French/Spanish 1 year, 9 months 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
// 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 <OptionWindow.hpp>

namespace gui
{
    ///  @brief Helping class for easy options creation/manipulation
    class OptionsWidgetMaker
    {
      public:
        ///  Constructor
        ///  @param window pointer to parent option window
        explicit OptionsWidgetMaker(OptionWindow *window);

        ///  Adds switch option to the given options list
        ///  @param list list to be updated
        ///  @param text option description text
        ///  @param option state of option
        ///  @param callback called whenever option is changed
        ///  @param indent should the option be indent
        void addSwitchOption(std::list<gui::Option> &list,
                             const UTF8 &text,
                             bool &option,
                             const std::function<void()> &callback,
                             bool indent = false);

        ///  Adds select option to the given options list
        ///  @param list list to be updated
        ///  @param text option description text
        ///  @param callback called whenever option is clicked
        ///  @param indent should the option be indent
        void addSelectOption(std::list<gui::Option> &list,
                             const UTF8 &text,
                             const std::function<void(void)> &callback,
                             bool indent = false);

      private:
        ///  Pointer to the window containing the options
        OptionWindow *mWindow = nullptr;
    };
} // namespace gui