[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    7d14d3d implemented method stubs in ProxyCollection::Track
From:       Maximilian Kossick <maximilian.kossick () googlemail ! com>
Date:       2009-07-23 18:41:31
Message-ID: 200907232239.n6NMd53g017149 () Wurst ! kollide ! net
[Download RAW message or body]

commit 7d14d3da532e05ff313da36ca8c0eb007abe2da0
Author:     Maximilian Kossick <maximilian.kossick@googlemail.com>
AuthorDate: Thu Jul 23 20:39:48 2009 +0200
Commit:     Maximilian Kossick <maximilian.kossick@googlemail.com>
CommitDate: Thu Jul 23 20:39:48 2009 +0200

    implemented method stubs in ProxyCollection::Track

diff --git a/src/collection/proxycollection/ProxyCollectionMeta.cpp \
b/src/collection/proxycollection/ProxyCollectionMeta.cpp index 1aa031b..8e3fa13 \
                100644
--- a/src/collection/proxycollection/ProxyCollectionMeta.cpp
+++ b/src/collection/proxycollection/ProxyCollectionMeta.cpp
@@ -27,9 +27,25 @@ ProxyCollection::Track::Track( ProxyCollection::Collection *coll, \
const Meta::Tr  , Meta::Observer()
         , m_collection( coll )
         , m_name( track->name() )
+        , m_album( 0 )
+        , m_artist( 0 )
+        , m_genre( 0 )
+        , m_composer( 0 )
+        , m_year( 0 )
 {
     subscribeTo( track );
     m_tracks.append( track );
+
+    if( track->album() )
+        m_album = Meta::AlbumPtr( m_collection->getAlbum( track->album() ) );
+    if( track->artist() )
+        m_artist = Meta::ArtistPtr( m_collection->getArtist( track->artist() ) );
+    if( track->genre() )
+        m_genre = Meta::GenrePtr( m_collection->getGenre( track->genre() ) );
+    if( track->composer() )
+        m_composer = Meta::ComposerPtr( m_collection->getComposer( track->composer() \
) ); +    if( track->year() )
+        m_year = Meta::YearPtr( m_collection->getYear( track->year() ) );
 }
 
 ProxyCollection::Track::~Track()
@@ -106,26 +122,31 @@ ProxyCollection::Track::isPlayable() const
 Meta::AlbumPtr
 ProxyCollection::Track::album() const
 {
+    return m_album;
 }
 
 Meta::ArtistPtr
 ProxyCollection::Track::artist() const
 {
+    return m_artist;
 }
 
 Meta::ComposerPtr
 ProxyCollection::Track::composer() const
 {
+    return m_composer;
 }
 
 Meta::GenrePtr
 ProxyCollection::Track::genre() const
 {
+    return m_genre;
 }
 
 Meta::YearPtr
 ProxyCollection::Track::year() const
 {
+    return m_year;
 }
 
 QString
@@ -174,6 +195,10 @@ ProxyCollection::Track::score() const
 void
 ProxyCollection::Track::setScore( double newScore )
 {
+    foreach( const Meta::TrackPtr &track, m_tracks )
+    {
+        track->setScore( newScore );
+    }
 }
 
 int
@@ -193,6 +218,10 @@ ProxyCollection::Track::rating() const
 void
 ProxyCollection::Track::setRating( int newRating )
 {
+    foreach( const Meta::TrackPtr &track, m_tracks )
+    {
+        track->setRating( newRating );
+    }
 }
 
 uint
@@ -246,34 +275,97 @@ ProxyCollection::Track::playCount() const
     return result;
 }
 
+void
+ProxyCollection::Track::finishedPlaying( double playedFraction )
+{
+    foreach( const Meta::TrackPtr &track, m_tracks )
+    {
+        track->finishedPlaying( playedFraction );
+    }
+}
+
 int
 ProxyCollection::Track::length() const
 {
+    foreach( const Meta::TrackPtr &track, m_tracks )
+    {
+        if( track->length() )
+            return track->length();
+    }
+    return 0;
 }
 
 int
 ProxyCollection::Track::filesize() const
 {
+    foreach( const Meta::TrackPtr &track, m_tracks )
+    {
+        if( track->filesize() )
+        {
+            return track->filesize();
+        }
+    }
+    return 0;
 }
 
 int
 ProxyCollection::Track::sampleRate() const
 {
+    foreach( const Meta::TrackPtr &track, m_tracks )
+    {
+        if( track->sampleRate() )
+            return track->sampleRate();
+    }
+    return 0;
 }
 
 int
 ProxyCollection::Track::bitrate() const
 {
+    foreach( const Meta::TrackPtr &track, m_tracks )
+    {
+        if( track->bitrate() )
+            return track->bitrate();
+    }
+    return 0;
 }
 
 int
 ProxyCollection::Track::trackNumber() const
 {
+    int result = 0;
+    foreach( const Meta::TrackPtr &track, m_tracks )
+    {
+        if( ( !result && track->trackNumber() ) || ( result && result == \
track->trackNumber() ) ) +        {
+            result = track->trackNumber();
+        }
+        else if( result && result != track->trackNumber() )
+        {
+            //tracks disagree about the tracknumber
+            return 0;
+        }
+    }
+    return result;
 }
 
 int
 ProxyCollection::Track::discNumber() const
 {
+    int result = 0;
+    foreach( const Meta::TrackPtr &track, m_tracks )
+    {
+        if( ( !result && track->discNumber() ) || ( result && result == \
track->discNumber() ) ) +        {
+            result = track->discNumber();
+        }
+        else if( result && result != track->discNumber() )
+        {
+            //tracks disagree about the disc number
+            return 0;
+        }
+    }
+    return result;
 }
 
 QString
diff --git a/src/collection/proxycollection/ProxyCollectionMeta.h \
b/src/collection/proxycollection/ProxyCollectionMeta.h index dc36fa4..3731adb 100644
--- a/src/collection/proxycollection/ProxyCollectionMeta.h
+++ b/src/collection/proxycollection/ProxyCollectionMeta.h
@@ -56,6 +56,7 @@ namespace ProxyCollection
             uint firstPlayed() const;
             uint lastPlayed() const;
             int playCount() const;
+            void finishedPlaying( double playedFraction );
 
             int length() const;
             int filesize() const;
@@ -76,6 +77,11 @@ namespace ProxyCollection
             Collection *m_collection;
             Meta::TrackList m_tracks;
             QString m_name;
+            Meta::AlbumPtr m_album;
+            Meta::ArtistPtr m_artist;
+            Meta::GenrePtr m_genre;
+            Meta::ComposerPtr m_composer;
+            Meta::YearPtr m_year;
     };
 
     class Album : public Meta::Album, private Meta::Observer


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic