Sayonara Player
Loading...
Searching...
No Matches
PlayManager.h
1/* PlayManager.h */
2
3/* Copyright (C) 2011-2024 Michael Lugmair (Lucio Carreras)
4 *
5 * This file is part of sayonara player
6 *
7 * This program is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation, either version 3 of the License, or
10 * (at your option) any later version.
11
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16
17 * You should have received a copy of the GNU General Public License
18 * along with this program. If not, see <http://www.gnu.org/licenses/>.
19 */
20
21#ifndef PLAY_MANAGER_H
22#define PLAY_MANAGER_H
23
24#include "Utils/typedefs.h"
25
26#include <QObject>
27#include <memory>
28
29class MetaData;
31
33 public QObject
34{
35 Q_OBJECT
36
37 signals:
38 void sigStreamFinished(const MetaData& oldTrack);
39 void sigPlaystateChanged(PlayState playState);
40 void sigNext();
41 void sigContinueFromStop();
42 void sigPrevious();
43 void sigStopped();
44 void sigSeekedRelative(double percent);
45 void sigSeekedRelativeMs(MilliSeconds ms);
46 void sigSeekedAbsoluteMs(MilliSeconds ms);
47 void sigPositionChangedMs(MilliSeconds ms);
48 void sigCurrentTrackChanged(const MetaData& track);
49 void sigCurrentMetadataChanged();
50 void sigTrackIndexChanged(int idx);
51 void sigDurationChangedMs();
52 void sigBitrateChanged();
53 void sigPlaylistFinished();
54 void sigRecording(bool b);
55 void sigBuffering(int b);
56 void sigVolumeChanged(int vol);
57 void sigMuteChanged(bool b);
58 void sigError(const QString& message);
59
60 public:
61 static PlayManager* create(NotificationHandler* notificationHandler, QObject* parent);
62 ~PlayManager() override = default;
63
64 [[nodiscard]] virtual PlayState playstate() const = 0;
65 [[nodiscard]] virtual MilliSeconds currentPositionMs() const = 0;
66 [[nodiscard]] virtual MilliSeconds currentTrackPlaytimeMs() const = 0;
67 [[nodiscard]] virtual MilliSeconds initialPositionMs() const = 0;
68 [[nodiscard]] virtual MilliSeconds durationMs() const = 0;
69 [[nodiscard]] virtual Bitrate bitrate() const = 0;
70 [[nodiscard]] virtual const MetaData& currentTrack() const = 0;
71 [[nodiscard]] virtual int volume() const = 0;
72 [[nodiscard]] virtual bool isMuted() const = 0;
73
74 public slots: // NOLINT(readability-redundant-access-specifiers)
75 virtual void play() = 0;
76 virtual void continueFromStop() = 0;
77 virtual void playPause() = 0;
78 virtual void pause() = 0;
79 virtual void previous() = 0;
80 virtual void next() = 0;
81 virtual void stop() = 0;
82 virtual void record(bool b) = 0;
83 virtual void seekRelative(double percent) = 0;
84 virtual void seekAbsoluteMs(MilliSeconds ms) = 0;
85 virtual void seekRelativeMs(MilliSeconds ms) = 0;
86 virtual void setCurrentPositionMs(MilliSeconds ms) = 0;
87 virtual void changeCurrentTrack(const MetaData& track, int trackIdx) = 0;
88 virtual void changeCurrentMetadata(const MetaData& track) = 0;
89 virtual void setTrackReady() = 0;
90 virtual void setTrackFinished() = 0;
91 virtual void buffering(int progress) = 0;
92 virtual void volumeUp() = 0;
93 virtual void volumeDown() = 0;
94 virtual void setVolume(int vol) = 0;
95 virtual void setMute(bool b) = 0;
96 virtual void toggleMute() = 0;
97 virtual void changeDuration(MilliSeconds ms) = 0;
98 virtual void changeBitrate(Bitrate br) = 0;
99 virtual void error(const QString& message) = 0;
100 virtual void shutdown() = 0;
101
102 protected:
103 explicit PlayManager(QObject* parent = 0) :
104 QObject(parent) {}
105};
106
107#endif
Definition MetaData.h:43
Definition NotificationHandler.h:29
Definition PlayManager.h:34