1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-14 05:44:58 +00:00
serenity/Userland/Applications/Piano/ProcessorParameterWidget/Toggle.h
Andreas Kling ddbe6bd7b4 Userland: Rename Core::Object to Core::EventReceiver
This is a more precise description of what this class actually does.
2023-08-06 20:39:51 +02:00

38 lines
1 KiB
C++

/*
* Copyright (c) 2022, kleines Filmröllchen <filmroellchen@serenityos.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#pragma once
#include <LibCore/EventReceiver.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 };
};