forked from fxsound2/fxsound-app
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathFxMessage.cpp
More file actions
94 lines (77 loc) · 2.74 KB
/
Copy pathFxMessage.cpp
File metadata and controls
94 lines (77 loc) · 2.74 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
/*
FxSound
Copyright (C) 2023 FxSound LLC
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "FxMessage.h"
#include "FxModel.h"
FxMessage::FxMessage(String message, const std::pair<String, String>& link) : message_content_(message, link)
{
setContent(&message_content_);
centreWithSize(getWidth(), getHeight());
addToDesktop(ComponentPeer::windowAppearsOnTaskbar);
toFront(true);
setAlwaysOnTop(true);
}
bool FxMessage::keyPressed(const KeyPress& key)
{
if (key == KeyPress::escapeKey)
{
exitModalState(0);
removeFromDesktop();
return true;
}
return Component::keyPressed(key);
}
void FxMessage::closeButtonPressed()
{
exitModalState(0);
removeFromDesktop();
}
void FxMessage::showMessage(String message, const std::pair<String, String>& link)
{
FxMessage message_window(TRANS("FxSound is now open-source"), { TRANS("GitHub"), "https://github.com/fxsound2/fxsound-app" });
message_window.runModalLoop();
}
FxMessage::MessageComponent::MessageComponent(String message, const std::pair<String, String>& link)
{
auto& theme = dynamic_cast<FxTheme&>(LookAndFeel::getDefaultLookAndFeel());
message_.setText(message, NotificationType::dontSendNotification);
message_.setFont(theme.getSmallFont().withHeight(17.0f));
message_.setJustificationType(Justification::centredTop);
addAndMakeVisible(message_);
if (link.first.isNotEmpty() && link.second.isNotEmpty())
{
link_.setButtonText(TRANS(link.first));
link_.setURL(URL(link.second));
link_.setJustificationType(Justification::centredTop);
addAndMakeVisible(link_);
}
setSize(WIDTH, HEIGHT);
}
void FxMessage::MessageComponent::resized()
{
auto bounds = getLocalBounds();
bounds.setTop(10);
bounds.reduce(20, 0);
RectanglePlacement placement(RectanglePlacement::xMid
| RectanglePlacement::yTop
| RectanglePlacement::doNotResize);
auto component_area = juce::Rectangle<int>(0, 0, bounds.getWidth(), MESSAGE_HEIGHT);
message_.setBounds(placement.appliedTo(component_area, bounds));
if (link_.getButtonText().isNotEmpty())
{
bounds.setTop(message_.getBottom() + 10);
component_area = juce::Rectangle<int>(0, 0, bounds.getWidth(), HYPERLINK_HEIGHT);
link_.setBounds(placement.appliedTo(component_area, bounds));
}
}