1 /* ${CLASS_NAME}.h */ 2 /* 3 * Copyright (C) 2011-2021 Michael Lugmair 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 #ifndef SAYONARA_PLAYER_PLAYLISTINTERFACE_H 21 #define SAYONARA_PLAYER_PLAYLISTINTERFACE_H 22 23 #include <QString> 24 25 #include <memory> 26 27 namespace Playlist 28 { 29 class Playlist; 30 } 31 32 class CustomPlaylist; 33 class MetaDataList; 34 class QStringList; 35 36 using PlaylistPtr = std::shared_ptr<::Playlist::Playlist>; 37 38 class PlaylistAccessor 39 { 40 public: 41 virtual ~PlaylistAccessor() = default; 42 43 virtual int activeIndex() const = 0; 44 virtual PlaylistPtr activePlaylist() = 0; 45 46 virtual int currentIndex() const = 0; 47 virtual void setCurrentIndex(int playlistIndex) = 0; 48 49 virtual PlaylistPtr playlist(int playlistIndex) = 0; 50 virtual PlaylistPtr playlistById(int playlistId) = 0; 51 52 virtual int count() const = 0; 53 }; 54 55 class PlaylistCreator 56 { 57 public: 58 virtual ~PlaylistCreator() = default; 59 60 virtual PlaylistPtr playlist(int playlistIndex) = 0; 61 virtual PlaylistPtr playlistById(int playlistId) = 0; 62 63 virtual QString requestNewPlaylistName(const QString& prefix = QString()) const = 0; 64 65 virtual int 66 createPlaylist(const MetaDataList& tracks, const QString& name = QString(), bool temporary = true) = 0; 67 virtual int 68 createPlaylist(const QStringList& pathList, const QString& name = QString(), bool temporary = true) = 0; 69 virtual int createPlaylist(const CustomPlaylist& customPlaylist) = 0; 70 virtual int createEmptyPlaylist(bool override = false) = 0; 71 virtual int createCommandLinePlaylist(const QStringList& pathList) = 0; 72 }; 73 74 #endif //SAYONARA_PLAYER_PLAYLISTINTERFACE_H 75