1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 15:48:12 +00:00
serenity/Userland/Applications/Piano/ProcessorParameterWidget/Toggle.h

38 lines
1 KiB
C++

/*
* Copyright (c) 2022, kleines Filmröllchen <filmroellchen@serenityos.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#pragma once
#include <LibCore/Object.h>
#include <LibDSP/ProcessorParameter.h>
#include <LibGUI/CheckBox.h>
#include <LibGUI/Widget.h>
class ProcessorParameterToggle : public GUI::CheckBox {
C_OBJECT(ProcessorParameterToggle)
public:
ProcessorParameterToggle(DSP::ProcessorBooleanParameter& parameter)
: 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 };
};