/**************************************************************************************** * Copyright (c) 2010 Leo Franchi * * * * This program is free software; you can redistribute it and/or modify it under * * the terms of the GNU General Public License as published by the Free Software * * Foundation; either version 2 of the License, or (at your option) any later * * version. * * * * This program is distributed in the hope that it will be useful, but WITHOUT ANY * * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A * * PARTICULAR PURPOSE. See the GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License along with * * this program. If not, see . * ****************************************************************************************/ #ifndef ECHONEST_CATALOG_ENTRY_H #define ECHONEST_CATALOG_ENTRY_H #include "echonest_export.h" #include "Util.h" #include #include #include #include class CatalogUpdateEntryData; namespace Echonest { /** * This rather simple struct collects information about a status update */ typedef QVector< QPair< QByteArray, QString > > CatalogStatusItem; typedef struct CatalogStatusStruct { CatalogTypes::TicketStatus status; QString details; int items_updated; CatalogStatusItem items; // List of [ item_id, info ] // int percent_complete; CatalogStatusStruct() : status( CatalogTypes::Unknown ), items_updated( -1 ) {} } CatalogStatus; /** * This class described a catalog entry for use in the Catalog update() call. * All data fields are optional except Action, and only the ones specified will be sent. */ class ECHONEST_EXPORT CatalogUpdateEntry { public: CatalogUpdateEntry(); CatalogUpdateEntry( CatalogTypes::Action action ); virtual ~CatalogUpdateEntry(); CatalogUpdateEntry( const CatalogUpdateEntry& other ); CatalogUpdateEntry& operator=( const CatalogUpdateEntry& ); /** * Optional, the item id for the catalog entry. hash( catalog_id + item_id ) * MUST be unique. If this is not set, a unique id will be generated internally. */ QByteArray itemId() const; void setItemId( const QByteArray& id ); /** * The type of action that this item represents, required. */ CatalogTypes::Action action() const; void setAction( CatalogTypes::Action action ); /** * The Echo Nest fingerprint. */ QByteArray fingerprint() const; void setFingerprint( const QByteArray& id ); // deprecated void setFingerpring( const QByteArray& id ); /** * The song id. Rosetta id or Echo Nest ID. */ QByteArray songId() const; void setSongId( const QByteArray& id ); /** * The song name. Mutually exclusive with song id. */ QString songName() const; void setSongName( const QString& name ); /** * The artist id, either a rosetta stone ID or an Echo Nest ID. */ QByteArray artistId() const; void setArtistId( const QByteArray& id ); /** * The artist name, mutually exclusive with artist id. */ QString artistName() const; void setArtistName( const QString& name ); /** * The release, or album, name. */ QString release() const; void setRelease( const QString& release ); /** * The genre of the item. */ QString genre() const; void setGenre( const QString& genre ); /** * The track number. */ int trackNumber() const; void setTrackNumber( int trackNum ); /** * The disc number of this item. */ int discNumber() const; void setDiscNumber( int disc ); /** * The url or the local filename or remote url. */ QString url() const; void setUrl( const QString& url ); /** * If this song was marked as a favorite or not */ bool favorite() const; void setFavorite( bool fav ); /** * If this song was banned. */ bool banned() const; void setBanned( bool banned ); /** * The play count of this item. */ int playCount() const; void setPlayCount( int playCount ); /** * The skip count of this item. */ int skipCount() const; void setSkipCount( int skipCount ); /** * The rating of this item, from 1 to 10. */ int rating() const; void setRating( int rating ); bool favoriteSet() const; bool bannedSet() const; private: QSharedDataPointer d; }; typedef QVector CatalogUpdateEntries; } #endif