// Copyright (c) 2017-2023, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md #pragma once #include #include #include namespace gui { template class OptionParam { public: OptionParam(T value, std::function callback) : value(value), onChangeCallback(callback) {} [[nodiscard]] T get() const noexcept { return value; } void set(T newValue) { value = newValue; if (onChangeCallback != nullptr) { onChangeCallback(newValue); } } private: T value; std::function onChangeCallback{nullptr}; }; class OptionsData : public gui::SwitchData { public: struct OptionParams { OptionParam preparationTime; OptionParam showCounter; }; OptionsData(OptionParams params); [[nodiscard]] std::chrono::seconds getPreparationTime() const noexcept; bool setPreparationTime(std::chrono::seconds value); [[nodiscard]] bool isCounterVisible() const noexcept; void setCounterVisible(bool value); private: OptionParams params; }; } // namespace gui