|
pianod2
multisource multiuser scriptable networked music player
|
Base class for songs, these are also MusicThingies, artists and albums. More...
#include <musictypes.h>


Public Member Functions | |
| virtual const std::string & | songId (void) const =0 |
| virtual const std::string | id (void) const override |
| Primary ID is album ID. More... | |
| virtual const std::string | id (MusicThingie::Type type) const override final |
| Return the complete ID when used in a specific context. More... | |
| virtual const std::string & | internalId (MusicThingie::Type type) const override final |
| Return the inner ID when used in a specific context. More... | |
| virtual const std::string & | name (void) const override final |
| Return the most specific name of this, whatever type it is. More... | |
| virtual Type | type (void) const override |
| Return the type letter for a thingie. More... | |
| virtual Football::Thingie & | transmitCommon (Football::Thingie &recipient) const override final |
| Typecode for album type. More... | |
| virtual PianodConnection & | transmitPrivate (PianodConnection &recipient) const override |
| Transmit the thingie's user-specific data on a connection. More... | |
| virtual Parsnip::Data | serialize () const override final |
| Assemble the thingie's data for JSON tranmission. More... | |
| virtual void | serializePrivate (Parsnip::Data &, const User *user) const override |
| Add the thingie's user-specific data for JSON transmission. More... | |
| ResponseGroup | assembleRatings (const User *user, const PianodPlaylist *playlist, bool include_json) const |
| ResponseGroup | assembleCapabilities (const User *user, const PianodPlaylist *playlist) const |
| Parsnip::Data | serializeRatings (const User *user, const PianodPlaylist *playlist) const |
| Parsnip::Data | serializeCapabilities (const User *user, const PianodPlaylist *playlist) const |
| Provide a list of actions a user can take on this song. More... | |
| virtual bool | matches (const Filter &filter) const override final |
| Check if a filter matches this item. More... | |
| virtual PianodSong * | asSong () override final |
| virtual const PianodSong * | asSong () const override final |
| bool | expires (void) |
| bool | expired (void) |
| time_t | lastPlayed (void) const |
| Get time a song last played. More... | |
| void | lastPlayed (time_t t) |
| virtual const std::string & | title (void) const =0 |
| Get the song's title. More... | |
| virtual PianodPlaylist * | playlist (void) const =0 |
| Get a playlist instance. More... | |
| virtual const std::string & | playlistName (void) const |
| Get name of a playlist to which this belongs. More... | |
| virtual const std::string & | genre (void) const =0 |
| Get genre of this song. More... | |
| virtual const std::string & | infoUrl (void) const |
| Provide a URL with additional info. More... | |
| virtual int | trackNumber (void) const =0 |
| Get track number (sequence number within an album/original media). More... | |
| virtual int | duration (void) const =0 |
| Duration of song in seconds. More... | |
| virtual int | year (void) const =0 |
| Year of release of song. More... | |
| virtual RatingScheme | ratingScheme (void) const |
| virtual RESPONSE_CODE | rate (Rating value, User *user)=0 |
| Rate a song. More... | |
| virtual Rating | rating (const User *user) const =0 |
| Get a song's rating. More... | |
| virtual RESPONSE_CODE | rateOverplayed (User *) |
| float | averageRating () const |
| Return the average rating of a song, considering all ratings. More... | |
| virtual bool | operator== (const std::string &compare) const override |
| Is album a compilation? More... | |
| virtual bool | operator== (const MusicThingie &compare) const override |
| Compare artist's name to that of an artist/album/song. More... | |
| virtual SongList | songs () override |
| Retrieve a list of requestable songs applicable to this thingie. More... | |
| virtual bool | canSkip (time_t *whenAllowed) |
| Check for permission to skip a song. More... | |
| virtual bool | mustPlay () const |
| Mark songs (err, adverts) as must-play; they can't be skipped over even when playlist selections are changed or whatnot. More... | |
| Media::Player * | play (const AudioSettings &audio) |
| Play the song. More... | |
Public Member Functions inherited from PianodAlbum | |
| virtual const std::string & | albumId (void) const =0 |
| Item's album ID. More... | |
| virtual PianodArtist * | asArtist () override |
| virtual const PianodArtist * | asArtist () const override |
| virtual PianodAlbum * | asAlbum () override final |
| virtual const PianodAlbum * | asAlbum () const override final |
| virtual const std::string & | albumTitle (void) const =0 |
| virtual const std::string & | coverArtUrl (void) const =0 |
| virtual bool | compilation () const |
Public Member Functions inherited from PianodArtist | |
| virtual const std::string & | artistId (void) const =0 |
| Item's artist ID. More... | |
| virtual const std::string & | artist (void) const =0 |
| Get artist name. More... | |
Public Member Functions inherited from MusicThingie | |
| MusicThingie (void) | |
| When allocated, use count starts at 1 and the object is put in the release pool, justifying its existence. More... | |
| bool | isPrimary (void) const |
| bool | isSuggestion (void) const |
| bool | isSeed (void) const |
| bool | isPlaylist (void) const |
| bool | isSong (void) const |
| bool | isAlbum (void) const |
| bool | isArtist (void) const |
| bool | isValidType (void) const |
| Type | primaryType (void) const |
| virtual bool | canQueue () const |
| Indicate if specific item can be queued/requested. More... | |
| virtual PianodPlaylist * | asPlaylist () |
| virtual const PianodPlaylist * | asPlaylist () const |
| std::string | operator() (void) const |
| void | retain (void) const |
| Claim an instance. More... | |
| void | release (void) |
| Abandon an instance. More... | |
| int | getUseCount (void) const |
| virtual Ownership * | parentOwner (void) const |
| Defer the ownership to the source. More... | |
| virtual Media::Source *const | source (void) const =0 |
| MediaSource from which this thingie originates. More... | |
| void | serializeCommon (Parsnip::Data &) const |
| Insert common items into the serialization dictionary. More... | |
| bool | operator!= (const std::string &compare) |
| bool | operator!= (const MusicThingie &compare) |
Public Member Functions inherited from SubordinateOwnership | |
| virtual bool | isOwnedBy (const User *user) const override |
| virtual bool | hasPermission (const User *user, Action action) const override |
Public Member Functions inherited from Ownership | |
| bool | isVisibleBy (const User *user) const |
| bool | isUsableBy (const User *user) const |
| bool | isDecendableBy (const User *user) const |
| bool | isReadableBy (const User *user) const |
| bool | isEditableBy (const User *user) const |
Static Public Member Functions | |
| static Type | typetype (void) |
Static Public Member Functions inherited from PianodAlbum | |
| static Type | typetype (void) |
| Typecode for album objects. More... | |
Static Public Member Functions inherited from PianodArtist | |
| static Type | typetype (void) |
| Typecode for artist objects. More... | |
Static Public Member Functions inherited from MusicThingie | |
| static std::string | TypeName (Type type) |
| Get the type name of a music thingie. More... | |
| static Type | TypeFromName (const std::string &name) |
| static constexpr bool | isPrimary (Type t) |
| static constexpr bool | isSuggestion (const Type t) |
| static constexpr bool | isSeed (const Type t) |
| static constexpr bool | isPlaylist (const Type t) |
| static constexpr bool | isSong (const Type t) |
| static constexpr bool | isAlbum (const Type t) |
| static constexpr bool | isArtist (const Type t) |
| static constexpr bool | isValidType (const Type t) |
| static Type | primaryType (const Type t) |
Protected Attributes | |
| time_t | expiration = 0 |
| Time at which a queued item becomes invalid, or 0 if good forever. More... | |
| time_t | last_played = 0 |
| Time song was last played, 0 if never or unknown. More... | |
Additional Inherited Members | |
Public Types inherited from MusicThingie | |
| enum class | Type : char { Playlist = 'p' , Artist = 'a' , Album = 'l' , Song = 's' , PlaylistSuggestion = 'e' , ArtistSuggestion = 't' , AlbumSuggestion = 'b' , SongSuggestion = 'n' , PlaylistSeed = 'y' , ArtistSeed = 'd' , AlbumSeed = 'u' , SongSeed = 'g' , SongRating = 'i' } |
Public Types inherited from Ownership | |
| enum class | Type { DISOWNED , PRIVATE , SHARED , PUBLISHED , PUBLIC } |
| Access levels for an object. More... | |
| enum class | Action { SEE , USE , READ , ALTER } |
| Access actions for an object. More... | |
Protected Member Functions inherited from MusicThingie | |
| virtual | ~MusicThingie (void) |
Base class for songs, these are also MusicThingies, artists and albums.
| ResponseGroup PianodSong::assembleCapabilities | ( | const User * | user, |
| const PianodPlaylist * | playlist | ||
| ) | const |


| ResponseGroup PianodSong::assembleRatings | ( | const User * | user, |
| const PianodPlaylist * | playlist, | ||
| bool | include_json | ||
| ) | const |


|
inlinefinaloverridevirtual |
Reimplemented from MusicThingie.
|
inlinefinaloverridevirtual |
| float PianodSong::averageRating | ( | ) | const |
Return the average rating of a song, considering all ratings.


|
virtual |
Check for permission to skip a song.
Some sources, such as Pandora, limit skipping for non-paying bastards. If skipping is permitted, it should be counted.
| whenAllowed | On return, contains time at which skip will be allowed. |
Reimplemented in Pandora::Advert, and Pandora::PlayableSong.
|
pure virtual |
Duration of song in seconds.
Implemented in MusicLibrary::Song, and EncapsulatedSong.

|
inline |

|
inline |

|
pure virtual |
Get genre of this song.
Implemented in MusicLibrary::Song, and EncapsulatedSong.

|
finaloverridevirtual |
Return the complete ID when used in a specific context.
Reimplemented from PianodAlbum.

|
overridevirtual |
Primary ID is album ID.
Reimplemented from PianodAlbum.


|
virtual |
Provide a URL with additional info.
Reimplemented in EncapsulatedSong.

|
finaloverridevirtual |
Return the inner ID when used in a specific context.
Reimplemented from PianodAlbum.

|
inline |
|
inline |
Get time a song last played.

|
finaloverridevirtual |
Check if a filter matches this item.
Reimplemented from PianodAlbum.

|
virtual |
Mark songs (err, adverts) as must-play; they can't be skipped over even when playlist selections are changed or whatnot.
Reimplemented in Pandora::Advert.
|
inlinefinaloverridevirtual |
Return the most specific name of this, whatever type it is.
Reimplemented from PianodAlbum.


|
overridevirtual |
Compare artist's name to that of an artist/album/song.
Reimplemented from PianodAlbum.

|
overridevirtual |
| Media::Player * PianodSong::play | ( | const AudioSettings & | audio | ) |
Play the song.


|
pure virtual |
Get a playlist instance.
Implemented in MusicLibrary::Song, and EncapsulatedSong.

|
virtual |
Get name of a playlist to which this belongs.

|
pure virtual |
Rate a song.
| value | The rating to assign. |
| user | The user making the rating; use depends on source. |
Implemented in EncapsulatedSong, MusicLibrary::Song, Pandora::Advert, Pandora::SongRating, and Pandora::Song.
|
inlinevirtual |
Reimplemented in MusicLibrary::Song, Pandora::Advert, and Pandora::PlayableSong.
Get a song's rating.
Implemented in MusicLibrary::Song, Pandora::Advert, Pandora::SongRating, Pandora::Song, and EncapsulatedSong.

|
inlinevirtual |
Reimplemented in MusicLibrary::Song, Pandora::Advert, Pandora::SongRating, and Pandora::Song.

|
finaloverridevirtual |
Assemble the thingie's data for JSON tranmission.
Reimplemented from PianodAlbum.

| Parsnip::Data PianodSong::serializeCapabilities | ( | const User * | user, |
| const PianodPlaylist * | playlist | ||
| ) | const |
Provide a list of actions a user can take on this song.


|
overridevirtual |
Add the thingie's user-specific data for JSON transmission.
Reimplemented from PianodAlbum.
Reimplemented in Filesystem::Song.


| Parsnip::Data PianodSong::serializeRatings | ( | const User * | user, |
| const PianodPlaylist * | playlist | ||
| ) | const |


|
pure virtual |
Implemented in MusicLibrary::Song, and EncapsulatedSong.

|
overridevirtual |
Retrieve a list of requestable songs applicable to this thingie.
Reimplemented from MusicThingie.

|
pure virtual |
Get the song's title.
Implemented in MusicLibrary::Song, and EncapsulatedSong.

|
pure virtual |
Get track number (sequence number within an album/original media).
Implemented in MusicLibrary::Song, and EncapsulatedSong.

|
finaloverridevirtual |
|
overridevirtual |
Transmit the thingie's user-specific data on a connection.
Reimplemented from PianodAlbum.
Reimplemented in Filesystem::Song.


|
inlineoverridevirtual |
Return the type letter for a thingie.
This is used as the first letter of the ID, so IDs can be routed to the appropriate dataset/handler.
Reimplemented from PianodAlbum.
Reimplemented in EncapsulatedSong.

|
inlinestatic |
|
pure virtual |
Year of release of song.
Implemented in MusicLibrary::Song, and EncapsulatedSong.

|
protected |
Time at which a queued item becomes invalid, or 0 if good forever.
|
protected |
Time song was last played, 0 if never or unknown.