OpenShot Audio Library | OpenShotAudio
1.0.0
Toggle main menu visibility
Loading...
Searching...
No Matches
juce_ActionBroadcaster.cpp
1
/*
2
==============================================================================
3
4
This file is part of the JUCE library.
5
Copyright (c) 2022 - Raw Material Software Limited
6
7
JUCE is an open source library subject to commercial or open-source
8
licensing.
9
10
The code included in this file is provided under the terms of the ISC license
11
http://www.isc.org/downloads/software-support-policy/isc-license. Permission
12
To use, copy, modify, and/or distribute this software for any purpose with or
13
without fee is hereby granted provided that the above copyright notice and
14
this permission notice appear in all copies.
15
16
JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
17
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
18
DISCLAIMED.
19
20
==============================================================================
21
*/
22
23
namespace
juce
24
{
25
26
class
ActionBroadcaster::ActionMessage final :
public
MessageManager::MessageBase
27
{
28
public
:
29
ActionMessage (
const
ActionBroadcaster
* ab,
30
const
String& messageText, ActionListener* l) noexcept
31
: broadcaster (
const_cast<
ActionBroadcaster
*
>
(ab)),
32
message (messageText),
33
listener (l)
34
{}
35
36
void
messageCallback()
override
37
{
38
if
(
auto
b = broadcaster.get())
39
if
(b->actionListeners.contains (listener))
40
listener->actionListenerCallback (message);
41
}
42
43
private
:
44
WeakReference<ActionBroadcaster> broadcaster;
45
const
String message;
46
ActionListener*
const
listener;
47
48
JUCE_DECLARE_NON_COPYABLE (ActionMessage)
49
};
50
51
//==============================================================================
52
ActionBroadcaster::ActionBroadcaster
()
53
{
54
// are you trying to create this object before or after juce has been initialised??
55
JUCE_ASSERT_MESSAGE_MANAGER_EXISTS
56
}
57
58
ActionBroadcaster::~ActionBroadcaster
()
59
{
60
// all event-based objects must be deleted BEFORE juce is shut down!
61
JUCE_ASSERT_MESSAGE_MANAGER_EXISTS
62
}
63
64
void
ActionBroadcaster::addActionListener
(
ActionListener
*
const
listener)
65
{
66
const
ScopedLock sl (actionListenerLock);
67
68
if
(listener !=
nullptr
)
69
actionListeners.add (listener);
70
}
71
72
void
ActionBroadcaster::removeActionListener
(
ActionListener
*
const
listener)
73
{
74
const
ScopedLock sl (actionListenerLock);
75
actionListeners.removeValue (listener);
76
}
77
78
void
ActionBroadcaster::removeAllActionListeners
()
79
{
80
const
ScopedLock sl (actionListenerLock);
81
actionListeners.clear();
82
}
83
84
void
ActionBroadcaster::sendActionMessage
(
const
String
& message)
const
85
{
86
const
ScopedLock sl (actionListenerLock);
87
88
for
(
int
i = actionListeners.size(); --i >= 0;)
89
(
new
ActionMessage (
this
, message, actionListeners.getUnchecked (i)))->post();
90
}
91
92
}
// namespace juce
juce::ActionBroadcaster::removeActionListener
void removeActionListener(ActionListener *listener)
Definition
juce_ActionBroadcaster.cpp:72
juce::ActionBroadcaster::ActionBroadcaster
ActionBroadcaster()
Definition
juce_ActionBroadcaster.cpp:52
juce::ActionBroadcaster::addActionListener
void addActionListener(ActionListener *listener)
Definition
juce_ActionBroadcaster.cpp:64
juce::ActionBroadcaster::~ActionBroadcaster
virtual ~ActionBroadcaster()
Definition
juce_ActionBroadcaster.cpp:58
juce::ActionBroadcaster::removeAllActionListeners
void removeAllActionListeners()
Definition
juce_ActionBroadcaster.cpp:78
juce::ActionBroadcaster::sendActionMessage
void sendActionMessage(const String &message) const
Definition
juce_ActionBroadcaster.cpp:84
juce::ActionListener
Definition
juce_ActionListener.h:35
juce::MessageManager::MessageBase
Definition
juce_MessageManager.h:182
juce::String
Definition
juce_String.h:53
libopenshot-audio
JuceLibraryCode
modules
juce_events
broadcasters
juce_ActionBroadcaster.cpp
Generated by
1.18.0