pianod2
multisource multiuser scriptable networked music player
Public Member Functions | Protected Attributes | Private Attributes | Friends | List of all members
MusicLibrary::Album Class Reference

A PianodAlbum that contains a vector of songs. More...

#include <musiclibrary.h>

Inheritance diagram for MusicLibrary::Album:
Inheritance graph
[legend]
Collaboration diagram for MusicLibrary::Album:
Collaboration graph
[legend]

Public Member Functions

 Album (Artist *const parent, const std::string &id, const std::string &name)
 Create a new album, and register itself with its parent. More...
 
virtual ~Album (void) override
 Destroy an album by unregistering from its parent artist. More...
 
Artist *const parent (void) const
 
Foundation *const library (void) const
 
virtual Media::Source *const source (void) const override final
 MediaSource from which this thingie originates. More...
 
virtual const std::string & artistId (void) const override final
 Item's artist ID. More...
 
virtual const std::string & artist (void) const override final
 Get the current artist, or list of artists if a compilation. More...
 
virtual const std::string & albumId (void) const override final
 Item's album ID. More...
 
virtual const std::string & albumTitle (void) const override final
 
virtual const std::string & coverArtUrl (void) const override final
 
virtual bool compilation () const override
 
void coverArtUrl (const std::string &a)
 
void calculateArtists (void) const
 (Re)calculate the current artists list for a compilation. More...
 
virtual void makeCompilation (Artist *compilation_artist)
 Mark an album as a compilation. More...
 
virtual SongList songs () override
 Get all songs belonging to the album. More...
 
virtual bool canQueue () const override
 Indicate if specific item can be queued/requested. More...
 
virtual Parsnip::Data persist () const
 
virtual void restore (const Parsnip::Data &data)
 
bool empty () const
 
const std::vector< Song * > & getSongs ()
 
- Public Member Functions inherited from PianodAlbum
virtual const std::string id (void) const override
 Primary ID is album ID. More...
 
virtual const std::string id (MusicThingie::Type type) const override
 Return the complete ID when used in a specific context. More...
 
virtual const std::string & internalId (MusicThingie::Type type) const override
 Return the inner ID when used in a specific context. More...
 
virtual const std::string & name (void) const override
 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::ThingietransmitCommon (Football::Thingie &recipient) const override
 Typecode for album type. More...
 
virtual PianodConnectiontransmitPrivate (PianodConnection &recipient) const override
 Transmit the thingie's user-specific data on a connection. More...
 
virtual Parsnip::Data serialize () const override
 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...
 
virtual bool matches (const Filter &filter) const override
 Check if a filter matches this item. More...
 
virtual PianodArtistasArtist () override
 
virtual const PianodArtistasArtist () const override
 
virtual PianodAlbumasAlbum () override final
 
virtual const PianodAlbumasAlbum () const override final
 
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...
 
- 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 PianodSongasSong ()
 
virtual PianodPlaylistasPlaylist ()
 
virtual const PianodSongasSong () const
 
virtual const PianodPlaylistasPlaylist () 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 OwnershipparentOwner (void) const
 Defer the ownership to the source. 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
 

Protected Attributes

Artist_artist
 

Private Attributes

const std::string _id
 
const std::string _name
 
std::vector< Song * > _songs
 
std::string _coverArt
 
std::string _artists
 
bool artists_dirty = false
 

Friends

class Artist
 
class Song
 
class Playlist
 
RetainedList< Song * > Foundation::getRandomSongs (PianodPlaylist *playlist, const UserList &users, Media::SelectionMethod selectionMethod, const class LibraryParameters &settings)
 

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...
 
- 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 Member Functions inherited from MusicThingie
virtual ~MusicThingie (void)
 

Detailed Description

A PianodAlbum that contains a vector of songs.

Constructor & Destructor Documentation

◆ Album()

MusicLibrary::Album::Album ( Artist *const  parent,
const std::string &  id,
const std::string &  name 
)

Create a new album, and register itself with its parent.

Parameters
parentThe album's artist.
idA unique ID for the album.
nameThe name of the album.
Here is the call graph for this function:

◆ ~Album()

MusicLibrary::Album::~Album ( void  )
overridevirtual

Destroy an album by unregistering from its parent artist.

Here is the call graph for this function:

Member Function Documentation

◆ albumId()

virtual const std::string& MusicLibrary::Album::albumId ( void  ) const
inlinefinaloverridevirtual

Item's album ID.

Implements PianodAlbum.

Here is the caller graph for this function:

◆ albumTitle()

virtual const std::string& MusicLibrary::Album::albumTitle ( void  ) const
inlinefinaloverridevirtual

Implements PianodAlbum.

Here is the caller graph for this function:

◆ artist()

const std::string & MusicLibrary::Album::artist ( void  ) const
finaloverridevirtual

Get the current artist, or list of artists if a compilation.

Implements PianodArtist.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ artistId()

virtual const std::string& MusicLibrary::Album::artistId ( void  ) const
inlinefinaloverridevirtual

Item's artist ID.

Implements PianodArtist.

◆ calculateArtists()

void MusicLibrary::Album::calculateArtists ( void  ) const

(Re)calculate the current artists list for a compilation.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ canQueue()

virtual bool MusicLibrary::Album::canQueue ( ) const
inlineoverridevirtual

Indicate if specific item can be queued/requested.

Reimplemented from MusicThingie.

◆ compilation()

bool MusicLibrary::Album::compilation ( ) const
overridevirtual

Reimplemented from PianodAlbum.

Here is the caller graph for this function:

◆ coverArtUrl() [1/2]

void MusicLibrary::Album::coverArtUrl ( const std::string &  a)
inline

◆ coverArtUrl() [2/2]

virtual const std::string& MusicLibrary::Album::coverArtUrl ( void  ) const
inlinefinaloverridevirtual

Implements PianodAlbum.

◆ empty()

bool MusicLibrary::Album::empty ( ) const
inline
Here is the caller graph for this function:

◆ getSongs()

const std::vector<Song *>& MusicLibrary::Album::getSongs ( )
inline

◆ library()

Foundation* const MusicLibrary::Album::library ( void  ) const
inline
Here is the caller graph for this function:

◆ makeCompilation()

void MusicLibrary::Album::makeCompilation ( Artist compilation_artist)
virtual

Mark an album as a compilation.

Set all song artists the current artist. Detach the item from its artist and stick it into a special compilation artist.

Parameters
compilation_artistThe compilation artist to move the album to.

Reimplemented in Filesystem::Album.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ parent()

Artist* const MusicLibrary::Album::parent ( void  ) const
inline

◆ persist()

Parsnip::Data MusicLibrary::Album::persist ( void  ) const
virtual

Reimplemented in Filesystem::Album.

Here is the caller graph for this function:

◆ restore()

void MusicLibrary::Album::restore ( const Parsnip::Data data)
virtual

Reimplemented in Filesystem::Album.

Here is the caller graph for this function:

◆ songs()

SongList MusicLibrary::Album::songs ( )
overridevirtual

Get all songs belonging to the album.

Returns
The songs belonging to the album.

Reimplemented from MusicThingie.

Here is the caller graph for this function:

◆ source()

virtual Media::Source* const MusicLibrary::Album::source ( void  ) const
inlinefinaloverridevirtual

MediaSource from which this thingie originates.

Implements MusicThingie.

Friends And Related Function Documentation

◆ Artist

friend class Artist
friend

◆ Foundation::getRandomSongs

RetainedList<Song *> Foundation::getRandomSongs ( PianodPlaylist playlist,
const UserList users,
Media::SelectionMethod  selectionMethod,
const class LibraryParameters settings 
)
friend

◆ Playlist

friend class Playlist
friend

◆ Song

friend class Song
friend

Member Data Documentation

◆ _artist

Artist* MusicLibrary::Album::_artist
protected

◆ _artists

std::string MusicLibrary::Album::_artists
mutableprivate

◆ _coverArt

std::string MusicLibrary::Album::_coverArt
private

◆ _id

const std::string MusicLibrary::Album::_id
private

◆ _name

const std::string MusicLibrary::Album::_name
private

◆ _songs

std::vector<Song *> MusicLibrary::Album::_songs
private

◆ artists_dirty

bool MusicLibrary::Album::artists_dirty = false
mutableprivate

The documentation for this class was generated from the following files: