YCLIMP
Yandex Command Line Interface Music Player
Loading...
Searching...
No Matches
MusicPlayer.hpp
1#pragma once
2
3#include "bass.h"
4
5#include <string>
6#include <vector>
7
8enum class ERepeatMode
9{
10 None = 0,
11 All,
12 One,
13 Size
14};
15
16class SWManager;
17
24class MusicPlayer
25{
26public:
27 MusicPlayer(SWManager* swManager);
28
29 void Update();
30
31 void PlayMusicFromFile(const std::string& path);
32 void PlayMusicFromBytes(std::string bytes, std::string name);
33 void ToggleContinuePause();
34
35 void FastForward5Sec();
36 void Rewind5Sec();
37
38 void VolumeUp5Percent();
39 void VolumeDown5Percent();
40
41 void ToggleRepeatMode();
42 void NextSongRequest();
43
44 // bool IsStreamDone() const;
45 double GetCurSongDuration() const;
46 double GetCurSongProgress() const;
47 double GetCurSongProgressPercent() const;
48 float GetVolume() const;
49 std::string GetRepeatMode() const;
50 const std::string& GetCurMusicName() const;
51
52public:
53 static std::string GetStringName(ERepeatMode rMode);
54 // static bool IsFilePlayable(const std::string& path);
55
56private:
57 void ActivateStreamFromFile(const std::string& path);
58 // Step 1: try
59 void ActivateStreamFromBytes(std::string bytes, std::string name);
60 void EndActiveStream();
61 bool IsStreamActive() const;
62 bool IsMusicPlayedDone() const;
63 bool IsChannelStopped() const;
64
65 void Continue();
66 void Pause();
67 void SetVolume(const float& volume);
68 void FinishPlayedMusic();
69
70private:
71 SWManager* mSWManager;
72 HSTREAM mStream;
73 std::string mCurMusicName;
74 bool mIsStreamActive;
75 bool mIsMusicPlaying;
76 float mVolume;
77
78 ERepeatMode mRepeatMode;
79
80 // Step 1: try
81 std::string mCurrentSongBytes;
82};
SubWindowManager is a SubWindow's and SWHolder's manager.
Definition SWManager.hpp:21