#pragma once #include "../JuceLibraryCode/JuceHeader.h" #include "DemoAnalyticsEventTypes.h" class MainContentComponent : public Component, private Button::Listener { public: //============================================================================== MainContentComponent() { crashButton.addListener (this); addAndMakeVisible (eventButton); addAndMakeVisible (crashButton); setSize (300, 200); StringPairArray logButtonPressParameters; logButtonPressParameters.set ("id", "a"); logEventButtonPress = new ButtonTracker (eventButton, "button_press", logButtonPressParameters); } ~MainContentComponent() { crashButton.removeListener (this); } void paint (Graphics& g) override { g.fillAll (getLookAndFeel().findColour (ResizableWindow::backgroundColourId)); } void resized() override { eventButton.centreWithSize (100, 40); eventButton.setBounds (eventButton.getBounds().translated (0, 25)); crashButton.setBounds (eventButton.getBounds().translated (0, -50)); } private: //============================================================================== void buttonClicked (Button*) override { // In a more advanced application you would probably use a different event // type here. Analytics::getInstance()->logEvent ("crash", {}, DemoAnalyticsEventTypes::event); Analytics::getInstance()->getDestinations().clear(); JUCEApplication::getInstance()->shutdown(); } TextButton eventButton { "Press me!" }, crashButton { "Simulate crash!" }; ScopedPointer logEventButtonPress; JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MainContentComponent) };