mirror of
https://github.com/juce-framework/JUCE.git
synced 2026-01-11 23:54:18 +00:00
173 lines
6.8 KiB
C++
173 lines
6.8 KiB
C++
/*
|
|
==============================================================================
|
|
|
|
This file is part of the JUCE library.
|
|
Copyright (c) 2017 - ROLI Ltd.
|
|
|
|
JUCE is an open source library subject to commercial or open-source
|
|
licensing.
|
|
|
|
By using JUCE, you agree to the terms of both the JUCE 5 End-User License
|
|
Agreement and JUCE 5 Privacy Policy (both updated and effective as of the
|
|
27th April 2017).
|
|
|
|
End User License Agreement: www.juce.com/juce-5-licence
|
|
Privacy Policy: www.juce.com/juce-5-privacy-policy
|
|
|
|
Or: You may also use this code under the terms of the GPL v3 (see
|
|
www.gnu.org/licenses).
|
|
|
|
JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
|
|
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
|
|
DISCLAIMED.
|
|
|
|
==============================================================================
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
class ApplicationUsageDataWindowComponent : public Component,
|
|
private Button::Listener
|
|
{
|
|
public:
|
|
ApplicationUsageDataWindowComponent (bool showCheckbox)
|
|
{
|
|
addAndMakeVisible (headerLabel);
|
|
headerLabel.setText ("Application Usage Analytics", dontSendNotification);
|
|
headerLabel.setFont (Font (20.0f, Font::FontStyleFlags::bold));
|
|
headerLabel.setJustificationType (Justification::centred);
|
|
|
|
auto textToShow = String ("We use analytics services to understand how developers use our software in order for JUCE to improve its software and services. ");
|
|
|
|
if (! showCheckbox)
|
|
textToShow += String (" Analytics can be disabled with an Indie or Pro license. ");
|
|
|
|
textToShow += String ("For more information, please read the JUCE EULA and Privacy policy:");
|
|
|
|
addAndMakeVisible (bodyLabel);
|
|
bodyLabel.setText (textToShow, dontSendNotification);
|
|
bodyLabel.setFont (Font (14.0f));
|
|
bodyLabel.setJustificationType (Justification::centredLeft);
|
|
|
|
addAndMakeVisible (juceEULALink);
|
|
juceEULALink.setButtonText ("JUCE EULA");
|
|
juceEULALink.setFont (Font (14.0f), false);
|
|
juceEULALink.setURL (URL ("https://juce.com/juce-5-license"));
|
|
|
|
addAndMakeVisible (privacyPolicyLink);
|
|
privacyPolicyLink.setButtonText ("Privacy Policy");
|
|
privacyPolicyLink.setFont (Font (14.0f), false);
|
|
privacyPolicyLink.setURL (URL ("https://juce.com/privacy-policy"));
|
|
|
|
addAndMakeVisible (okButton);
|
|
okButton.setButtonText ("OK");
|
|
okButton.addListener (this);
|
|
|
|
if (showCheckbox)
|
|
{
|
|
addAndMakeVisible (shareApplicationUsageDataToggle = new ToggleButton());
|
|
|
|
LicenseController* controller = ProjucerApplication::getApp().licenseController;
|
|
|
|
if (controller != nullptr && controller->getState().applicationUsageDataState == LicenseState::ApplicationUsageData::disabled)
|
|
shareApplicationUsageDataToggle->setToggleState (false, dontSendNotification);
|
|
else
|
|
shareApplicationUsageDataToggle->setToggleState (true, dontSendNotification);
|
|
|
|
addAndMakeVisible(shareApplicationUsageDataLabel = new Label ({}, "Help JUCE to improve its software and services by sharing my application usage data"));
|
|
shareApplicationUsageDataLabel->setFont (Font (14.0f));
|
|
shareApplicationUsageDataLabel->setMinimumHorizontalScale (1.0f);
|
|
}
|
|
else
|
|
{
|
|
addAndMakeVisible (upgradeLicenseButton = new TextButton ("Upgrade License"));
|
|
upgradeLicenseButton->addListener (this);
|
|
upgradeLicenseButton->setColour (TextButton::buttonColourId, findColour (secondaryButtonBackgroundColourId));
|
|
}
|
|
}
|
|
|
|
~ApplicationUsageDataWindowComponent()
|
|
{
|
|
if (LicenseController* controller = ProjucerApplication::getApp().licenseController)
|
|
{
|
|
auto newApplicationUsageDataState = LicenseState::ApplicationUsageData::enabled;
|
|
|
|
if (shareApplicationUsageDataToggle != nullptr && ! shareApplicationUsageDataToggle->getToggleState())
|
|
newApplicationUsageDataState = LicenseState::ApplicationUsageData::disabled;
|
|
|
|
controller->setApplicationUsageDataState (newApplicationUsageDataState);
|
|
}
|
|
}
|
|
|
|
void resized() override
|
|
{
|
|
auto bounds = getLocalBounds().reduced (20);
|
|
headerLabel.setBounds (bounds.removeFromTop (40));
|
|
bodyLabel.setBounds (bounds.removeFromTop (75));
|
|
|
|
bounds.removeFromTop (10);
|
|
|
|
auto linkBounds = bounds.removeFromTop (20);
|
|
juceEULALink.setBounds (linkBounds.removeFromLeft (linkBounds.getWidth() / 2).reduced (2));
|
|
privacyPolicyLink.setBounds (linkBounds.reduced (2));
|
|
|
|
if (shareApplicationUsageDataToggle != nullptr)
|
|
{
|
|
bounds.removeFromTop (10);
|
|
|
|
auto toggleBounds = bounds.removeFromTop (40);
|
|
shareApplicationUsageDataToggle->setBounds (toggleBounds.removeFromLeft (40).reduced (5));
|
|
shareApplicationUsageDataLabel->setBounds (toggleBounds);
|
|
}
|
|
|
|
bounds.removeFromTop (10);
|
|
|
|
auto buttonW = 125;
|
|
auto buttonH = 40;
|
|
|
|
if (upgradeLicenseButton != nullptr)
|
|
{
|
|
auto left = bounds.removeFromLeft (bounds.getWidth() / 2);
|
|
|
|
upgradeLicenseButton->setSize (buttonW, buttonH);
|
|
upgradeLicenseButton->setCentrePosition (left.getCentreX(), left.getCentreY());
|
|
}
|
|
|
|
okButton.setSize (buttonW, buttonH);
|
|
okButton.setCentrePosition (bounds.getCentreX(), bounds.getCentreY());
|
|
}
|
|
|
|
void paint (Graphics& g) override
|
|
{
|
|
g.fillAll (findColour (backgroundColourId));
|
|
}
|
|
|
|
private:
|
|
Label headerLabel, bodyLabel;
|
|
HyperlinkButton juceEULALink, privacyPolicyLink;
|
|
ScopedPointer<Label> shareApplicationUsageDataLabel;
|
|
ScopedPointer<ToggleButton> shareApplicationUsageDataToggle;
|
|
TextButton okButton;
|
|
ScopedPointer<TextButton> upgradeLicenseButton;
|
|
|
|
void buttonClicked (Button* b) override
|
|
{
|
|
if (b == &okButton)
|
|
{
|
|
ProjucerApplication::getApp().dismissApplicationUsageDataAgreementPopup();
|
|
}
|
|
else if (b == upgradeLicenseButton)
|
|
{
|
|
if (LicenseController* controller = ProjucerApplication::getApp().licenseController)
|
|
controller->chooseNewLicense();
|
|
}
|
|
}
|
|
|
|
void lookAndFeelChanged() override
|
|
{
|
|
if (upgradeLicenseButton != nullptr)
|
|
upgradeLicenseButton->setColour (TextButton::buttonColourId, findColour (secondaryButtonBackgroundColourId));
|
|
}
|
|
|
|
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ApplicationUsageDataWindowComponent)
|
|
};
|