From 6389384882db8e72f1f77fd0430bde233224b642 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?kleines=20Filmr=C3=B6llchen?= Date: Sat, 23 Jul 2022 15:37:22 +0200 Subject: [PATCH] Piano: Add Toggle parameter widget This is for enum widgets; though positioning is not correct as checkboxes need more options for text-less layout. --- .../Piano/ProcessorParameterWidget/Toggle.h | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 Userland/Applications/Piano/ProcessorParameterWidget/Toggle.h diff --git a/Userland/Applications/Piano/ProcessorParameterWidget/Toggle.h b/Userland/Applications/Piano/ProcessorParameterWidget/Toggle.h new file mode 100644 index 0000000000..0ca2eaa5f4 --- /dev/null +++ b/Userland/Applications/Piano/ProcessorParameterWidget/Toggle.h @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2022, kleines Filmröllchen + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#pragma once + +#include +#include +#include +#include + +class ProcessorParameterToggle : public GUI::CheckBox { + C_OBJECT(ProcessorParameterToggle) + +public: + ProcessorParameterToggle(DSP::ProcessorBooleanParameter& parameter) + : CheckBox("") + , m_parameter(parameter) + { + on_checked = [this](auto checked) { + if (m_currently_setting_from_ui) + return; + m_currently_setting_from_ui = true; + m_parameter.set_value(checked); + m_currently_setting_from_ui = false; + }; + m_parameter.register_change_listener([this](auto muted) { + set_checked(muted, GUI::AllowCallback::No); + }); + + set_checked(parameter.value()); + } + +private: + DSP::ProcessorBooleanParameter& m_parameter; + bool m_currently_setting_from_ui { false }; +};