-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathPlayerGUI.h
More file actions
69 lines (55 loc) · 2.47 KB
/
PlayerGUI.h
File metadata and controls
69 lines (55 loc) · 2.47 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
#pragma once
#include "PlayerAudio.h"
#include <juce_gui_basics/juce_gui_basics.h>
class PlayerGUI : public juce::Component,
public juce::Button::Listener,
public juce::Slider::Listener,
public juce::Timer {
public:
PlayerGUI(PlayerAudio &audioPlayer);
~PlayerGUI() override;
void paint(juce::Graphics &g) override;
void resized() override;
void buttonClicked(juce::Button *button) override;
void sliderValueChanged(juce::Slider *slider) override;
void timerCallback() override;
void applyTheme();
private:
PlayerAudio &playerAudio;
juce::TextButton loadButton{"Load File"};
juce::TextButton loadMultipleButton{"Load Multiple"};
juce::TextButton playButton{"Play"};
juce::TextButton pauseButton{"Pause"};
juce::TextButton stopButton{"Stop"};
juce::TextButton restartButton{"Restart"};
juce::TextButton goToStartButton{"Backward"};
juce::TextButton goToEndButton{"Forward"};
juce::TextButton previousButton{"Previous"};
juce::TextButton nextButton{"Next"};
juce::TextButton loopButton{"Loop"};
juce::TextButton muteButton{"Mute"};
juce::TextButton setAButton{"Set A"};
juce::TextButton setBButton{"Set B"};
juce::TextButton clearABButton{"Clear AB"};
juce::Slider volumeSlider;
juce::Slider speedSlider;
juce::Slider positionSlider;
juce::Label speedLabel;
juce::Label positionLabel;
juce::Label durationLabel;
juce::Label abLoopLabel;
juce::Label metadataLabel;
std::unique_ptr<juce::FileChooser> fileChooser;
float previousVolume;
bool isDraggingPosition;
juce::String formatTime(double seconds);
struct Theme
{
juce::Colour bg, button, buttonOn, accent, text, progress, abFill;
};
Theme gruvbox { juce::Colour(0xff282828), juce::Colour(0xff3c3836), juce::Colour(0xffb8bb26), juce::Colour(0xfffabd2f), juce::Colour(0xffebdbb2), juce::Colour(0xff83a598), juce::Colour(0x60fabd2f) };
Theme catppuccin{ juce::Colour(0xff1e1e2e), juce::Colour(0xff313244), juce::Colour(0xff89b4fa), juce::Colour(0xfff5c2e7), juce::Colour(0xffcdd6f4), juce::Colour(0xffa6e3a1), juce::Colour(0x60f5c2e7) };
Theme dracula { juce::Colour(0xff282a36), juce::Colour(0xff44475a), juce::Colour(0xffbd93f9), juce::Colour(0xffff79c6), juce::Colour(0xfff8f8f2), juce::Colour(0xff50fa7b), juce::Colour(0x60ff79c6) };
Theme* theme = &dracula;
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(PlayerGUI)
};