File indexing completed on 2025-02-23 04:27:37

0001 /****************************************************************************************
0002  * Copyright (c) 2007 Maximilian Kossick <maximilian.kossick@googlemail.com>            *
0003  *                                                                                      *
0004  * This program is free software; you can redistribute it and/or modify it under        *
0005  * the terms of the GNU General Public License as published by the Free Software        *
0006  * Foundation; either version 2 of the License, or (at your option) any later           *
0007  * version.                                                                             *
0008  *                                                                                      *
0009  * This program is distributed in the hope that it will be useful, but WITHOUT ANY      *
0010  * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A      *
0011  * PARTICULAR PURPOSE. See the GNU General Public License for more details.             *
0012  *                                                                                      *
0013  * You should have received a copy of the GNU General Public License along with         *
0014  * this program.  If not, see <http://www.gnu.org/licenses/>.                           *
0015  ****************************************************************************************/
0016 
0017 #include "DaapMeta.h"
0018 
0019 #include "DaapCollection.h"
0020 
0021 using namespace Meta;
0022 
0023 DaapTrack::DaapTrack( Collections::DaapCollection *collection, const QString &host, quint16 port, const QString &dbId, const QString &itemId, const QString &format)
0024     : Meta::Track()
0025     , m_collection( collection )
0026     , m_artist( nullptr )
0027     , m_album( nullptr )
0028     , m_genre( nullptr )
0029     , m_composer( nullptr )
0030     , m_year( nullptr )
0031     , m_name()
0032     , m_type( format )
0033     , m_length( 0 )
0034     , m_trackNumber( 0 )
0035     , m_displayUrl()
0036     , m_playableUrl()
0037 {
0038     QString url = QStringLiteral( "daap://%1:%2/databases/%3/items/%4.%5" )
0039                     .arg( host, QString::number( port ), dbId, itemId, format );
0040     m_displayUrl = url;
0041     m_playableUrl = url;
0042 }
0043 
0044 DaapTrack::~DaapTrack()
0045 {
0046     //nothing to do
0047 }
0048 
0049 QString
0050 DaapTrack::name() const
0051 {
0052     return m_name;
0053 }
0054 
0055 QUrl
0056 DaapTrack::playableUrl() const
0057 {
0058     QUrl url( m_playableUrl );
0059     url.setScheme( "http" );
0060     return url;
0061 }
0062 
0063 QString
0064 DaapTrack::uidUrl() const
0065 {
0066     return m_playableUrl;
0067 }
0068 
0069 QString
0070 DaapTrack::prettyUrl() const
0071 {
0072     return m_displayUrl;
0073 }
0074 
0075 QString
0076 DaapTrack::notPlayableReason() const
0077 {
0078     return networkNotPlayableReason();
0079 }
0080 
0081 AlbumPtr
0082 DaapTrack::album() const
0083 {
0084     return AlbumPtr::staticCast( m_album );
0085 }
0086 
0087 ArtistPtr
0088 DaapTrack::artist() const
0089 {
0090     return ArtistPtr::staticCast( m_artist );
0091 }
0092 
0093 GenrePtr
0094 DaapTrack::genre() const
0095 {
0096     return GenrePtr::staticCast( m_genre );
0097 }
0098 
0099 ComposerPtr
0100 DaapTrack::composer() const
0101 {
0102     return ComposerPtr::staticCast( m_composer );
0103 }
0104 
0105 YearPtr
0106 DaapTrack::year() const
0107 {
0108     return YearPtr::staticCast( m_year );
0109 }
0110 
0111 void
0112 DaapTrack::setAlbum( const QString &newAlbum )
0113 {
0114     Q_UNUSED( newAlbum )
0115 }
0116 
0117 void
0118 DaapTrack::setArtist( const QString &newArtist )
0119 {
0120     Q_UNUSED( newArtist )
0121 }
0122 
0123 void
0124 DaapTrack::setComposer( const QString &newComposer )
0125 {
0126     Q_UNUSED( newComposer )
0127 }
0128 
0129 void
0130 DaapTrack::setGenre( const QString &newGenre )
0131 {
0132     Q_UNUSED( newGenre )
0133 }
0134 
0135 void
0136 DaapTrack::setYear( int newYear )
0137 {
0138     Q_UNUSED( newYear )
0139 }
0140 
0141 /* 
0142 TODO: This isn't good enough, but for now as daapreader/Reader.cpp indicates
0143  we can query for the BPM from daap server, but desire is to get BPM of files working
0144  first! 
0145 */
0146 qreal
0147 DaapTrack::bpm() const
0148 {
0149     return -1.0;
0150 }
0151 
0152 QString
0153 DaapTrack::comment() const
0154 {
0155     return QString();
0156 }
0157 
0158 void
0159 DaapTrack::setComment( const QString &newComment )
0160 {
0161     Q_UNUSED( newComment )
0162 }
0163 
0164 qint64
0165 DaapTrack::length() const
0166 {
0167     return m_length;
0168 }
0169 
0170 int
0171 DaapTrack::filesize() const
0172 {
0173     return 0;
0174 }
0175 
0176 int
0177 DaapTrack::sampleRate() const
0178 {
0179     return 0;
0180 }
0181 
0182 int
0183 DaapTrack::bitrate() const
0184 {
0185     return 0;
0186 }
0187 
0188 int
0189 DaapTrack::trackNumber() const
0190 {
0191     return m_trackNumber;
0192 }
0193 
0194 void
0195 DaapTrack::setTrackNumber( int newTrackNumber )
0196 {
0197     m_trackNumber = newTrackNumber;
0198 }
0199 
0200 int
0201 DaapTrack::discNumber() const
0202 {
0203     return 0;
0204 }
0205 
0206 void
0207 DaapTrack::setDiscNumber( int newDiscNumber )
0208 {
0209     Q_UNUSED( newDiscNumber )
0210 }
0211 
0212 QString
0213 DaapTrack::type() const
0214 {
0215     return m_type;
0216 }
0217 
0218 bool
0219 DaapTrack::inCollection() const
0220 {
0221     return true;
0222 }
0223 
0224 Collections::Collection*
0225 DaapTrack::collection() const
0226 {
0227     return m_collection;
0228 }
0229 
0230 void
0231 DaapTrack::setAlbum( const DaapAlbumPtr &album )
0232 {
0233     m_album = album;
0234 }
0235 
0236 void
0237 DaapTrack::setArtist( const DaapArtistPtr &artist )
0238 {
0239     m_artist = artist;
0240 }
0241 
0242 void
0243 DaapTrack::setGenre( const DaapGenrePtr &genre )
0244 {
0245     m_genre = genre;
0246 }
0247 
0248 void
0249 DaapTrack::setComposer( const DaapComposerPtr &composer )
0250 {
0251     m_composer = composer;
0252 }
0253 
0254 void
0255 DaapTrack::setYear( const DaapYearPtr &year )
0256 {
0257     m_year = year;
0258 }
0259 
0260 void
0261 DaapTrack::setTitle( const QString &title )
0262 {
0263     m_name = title;
0264 }
0265 
0266 void
0267 DaapTrack::setLength( qint64 length )
0268 {
0269     m_length = length;
0270 }
0271 
0272 //DaapArtist
0273 
0274 DaapArtist::DaapArtist( const QString &name )
0275     : Meta::Artist()
0276     , m_name( name )
0277     , m_tracks()
0278 {
0279     //nothing to do
0280 }
0281 
0282 DaapArtist::~DaapArtist()
0283 {
0284     //nothing to do
0285 }
0286 
0287 QString
0288 DaapArtist::name() const
0289 {
0290     return m_name;
0291 }
0292 
0293 TrackList
0294 DaapArtist::tracks()
0295 {
0296     return m_tracks;
0297 }
0298 
0299 AlbumList
0300 DaapArtist::albums()
0301 {
0302     //TODO
0303     return AlbumList();
0304 }
0305 
0306 void
0307 DaapArtist::addTrack( const DaapTrackPtr &track )
0308 {
0309     m_tracks.append( TrackPtr::staticCast( track ) );
0310 }
0311 
0312 DaapAlbum::DaapAlbum( const QString &name )
0313     : Meta::Album()
0314     , m_name( name )
0315     , m_tracks()
0316     , m_isCompilation( false )
0317     , m_albumArtist( nullptr )
0318 {
0319     //nothing to do
0320 }
0321 
0322 DaapAlbum::~DaapAlbum()
0323 {
0324     //nothing to do
0325 }
0326 
0327 QString
0328 DaapAlbum::name() const
0329 {
0330     return m_name;
0331 }
0332 
0333 bool
0334 DaapAlbum::isCompilation() const
0335 {
0336     return m_isCompilation;
0337 }
0338 
0339 bool
0340 DaapAlbum::hasAlbumArtist() const
0341 {
0342     return !m_albumArtist.isNull();
0343 }
0344 
0345 ArtistPtr
0346 DaapAlbum::albumArtist() const
0347 {
0348     return ArtistPtr::staticCast( m_albumArtist );
0349 }
0350 
0351 TrackList
0352 DaapAlbum::tracks()
0353 {
0354     return m_tracks;
0355 }
0356 
0357 void
0358 DaapAlbum::addTrack( const DaapTrackPtr &track )
0359 {
0360     m_tracks.append( TrackPtr::staticCast( track ) );
0361 }
0362 
0363 void
0364 DaapAlbum::setAlbumArtist( const DaapArtistPtr &artist )
0365 {
0366     m_albumArtist = artist;
0367 }
0368 
0369 //DaapGenre
0370 
0371 DaapGenre::DaapGenre( const QString &name )
0372     : Meta::Genre()
0373     , m_name( name )
0374     , m_tracks()
0375 {
0376     //nothing to do
0377 }
0378 
0379 DaapGenre::~DaapGenre()
0380 {
0381     //nothing to do
0382 }
0383 
0384 QString
0385 DaapGenre::name() const
0386 {
0387     return m_name;
0388 }
0389 
0390 TrackList
0391 DaapGenre::tracks()
0392 {
0393     return m_tracks;
0394 }
0395 
0396 void
0397 DaapGenre::addTrack( const DaapTrackPtr &track )
0398 {
0399     m_tracks.append( TrackPtr::staticCast( track ) );
0400 }
0401 
0402 //DaapComposer
0403 
0404 DaapComposer::DaapComposer( const QString &name )
0405     : Meta::Composer()
0406     , m_name( name )
0407     , m_tracks()
0408 {
0409     //nothing to do
0410 }
0411 
0412 DaapComposer::~DaapComposer()
0413 {
0414     //nothing to do
0415 }
0416 
0417 QString
0418 DaapComposer::name() const
0419 {
0420     return m_name;
0421 }
0422 
0423 TrackList
0424 DaapComposer::tracks()
0425 {
0426     return m_tracks;
0427 }
0428 
0429 void
0430 DaapComposer::addTrack( const DaapTrackPtr &track )
0431 {
0432     m_tracks.append( TrackPtr::staticCast( track ) );
0433 }
0434 
0435 //DaapYear
0436 
0437 DaapYear::DaapYear( const QString &name )
0438     : Meta::Year()
0439     , m_name( name )
0440     , m_tracks()
0441 {
0442     //nothing to do
0443 }
0444 
0445 DaapYear::~DaapYear()
0446 {
0447     //nothing to do
0448 }
0449 
0450 QString
0451 DaapYear::name() const
0452 {
0453     return m_name;
0454 }
0455 
0456 TrackList
0457 DaapYear::tracks()
0458 {
0459     return m_tracks;
0460 }
0461 
0462 void
0463 DaapYear::addTrack( const DaapTrackPtr &track )
0464 {
0465     m_tracks.append( TrackPtr::staticCast( track ) );
0466 }