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

List:       kde-commits
Subject:    [amarok] src/core-impl: Refactoring: Clean up FileTrackProvider functionality
From:       Ralf Engels <ralf-engels () gmx ! de>
Date:       2015-01-17 18:12:21
Message-ID: E1YCXrB-000431-Ep () scm ! kde ! org
[Download RAW message or body]

Git commit 3edc6861dc0f626db849dcbe3121622ef7b14ab7 by Ralf Engels.
Committed on 02/01/2015 at 12:14.
Pushed by rengels into branch 'master'.

Refactoring: Clean up FileTrackProvider functionality

Consisten handling of track providers in CollectionManager
Podcast stuff does not need the CollectionManagers track provider.
Instead use it's own.

M  +10   -21   src/core-impl/collections/support/CollectionManager.cpp
M  +0    -7    src/core-impl/collections/support/CollectionManager.h
M  +4    -1    src/core-impl/podcasts/sql/SqlPodcastMeta.cpp

http://commits.kde.org/amarok/3edc6861dc0f626db849dcbe3121622ef7b14ab7

diff --git a/src/core-impl/collections/support/CollectionManager.cpp \
b/src/core-impl/collections/support/CollectionManager.cpp index 8f01146..16e9cbc \
                100644
--- a/src/core-impl/collections/support/CollectionManager.cpp
+++ b/src/core-impl/collections/support/CollectionManager.cpp
@@ -87,8 +87,8 @@ CollectionManager::CollectionManager()
 
     setObjectName( "CollectionManager" );
     d->primaryCollection = 0;
-    // special-cased in trackForUrl(), don't add to d->trackProviders yet
-    d->fileTrackProvider = new FileTrackProvider();
+    d->timecodeTrackProvider = 0;
+    d->fileTrackProvider = 0;
 }
 
 CollectionManager::~CollectionManager()
@@ -98,10 +98,10 @@ CollectionManager::~CollectionManager()
     {
         QWriteLocker locker( &d->lock );
 
-        delete d->timecodeTrackProvider;
-        delete d->fileTrackProvider;
         d->collections.clear();
         d->trackProviders.clear();
+        delete d->timecodeTrackProvider;
+        delete d->fileTrackProvider;
 
         // Hmm, qDeleteAll from Qt 4.8 crashes with our SmartPointerList, do it \
manually. Bug 285951  while (!d->factories.isEmpty() )
@@ -114,10 +114,14 @@ CollectionManager::~CollectionManager()
 void
 CollectionManager::init()
 {
-    //register the timecode track provider now, as it needs to get added before \
                loading
-    //the stored playlist... Since it can have playable urls that might also match \
other providers, it needs to get added first. +    // register the timecode track \
provider now, as it needs to get added before loading +    // the stored playlist... \
Since it can have playable urls that might also match other providers, it needs to \
get added first.  d->timecodeTrackProvider = new TimecodeTrackProvider();
     addTrackProvider( d->timecodeTrackProvider );
+
+    // addint fileTrackProvider second since local tracks should be preferred even \
if the url matchs two tracks +    d->fileTrackProvider = new FileTrackProvider();
+    addTrackProvider( d->fileTrackProvider );
 }
 
 void
@@ -363,15 +367,6 @@ CollectionManager::trackForUrl( const KUrl &url )
     if( remoteProtocols.contains( url.protocol() ) )
         return Meta::TrackPtr( new MetaStream::Track( url ) );
 
-    /* TODO: add fileTrackProvider to normal providers once tested that the reorder
-     * doesn't change behaviour */
-    if( d->fileTrackProvider->possiblyContainsTrack( url ) )
-    {
-        Meta::TrackPtr track = d->fileTrackProvider->trackForUrl( url );
-        if( track )
-            return track;
-    }
-
     return Meta::TrackPtr( 0 );
 }
 
@@ -421,9 +416,3 @@ CollectionManager::removeTrackProvider( \
Collections::TrackProvider *provider )  d->trackProviders.removeAll( provider );
 }
 
-Collections::TrackProvider *
-CollectionManager::fileTrackProvider()
-{
-    QReadLocker locker( &d->lock );
-    return d->fileTrackProvider;
-}
diff --git a/src/core-impl/collections/support/CollectionManager.h \
b/src/core-impl/collections/support/CollectionManager.h index 4291c56..5f56394 100644
--- a/src/core-impl/collections/support/CollectionManager.h
+++ b/src/core-impl/collections/support/CollectionManager.h
@@ -133,13 +133,6 @@ class AMAROK_EXPORT CollectionManager : public QObject
          */
         void setFactories( const QList<Plugins::PluginFactory*> &factories );
 
-        /**
-         * Return a pointer to CollectionManger's internal FileTrackProvider \
                instance.
-         * valid as long as this CollectionManger is alive, CollectionManager \
                remains
-         * owner of the pointer.
-         */
-        Collections::TrackProvider *fileTrackProvider();
-
     public slots:
         /** Starts the full scan for each collection with CollectionScanCapability \
*/  void startFullScan();
diff --git a/src/core-impl/podcasts/sql/SqlPodcastMeta.cpp \
b/src/core-impl/podcasts/sql/SqlPodcastMeta.cpp index 3a3b4e7..14813d3 100644
--- a/src/core-impl/podcasts/sql/SqlPodcastMeta.cpp
+++ b/src/core-impl/podcasts/sql/SqlPodcastMeta.cpp
@@ -27,6 +27,7 @@
 #include "core-impl/collections/support/CollectionManager.h"
 #include "core-impl/storage/StorageManager.h"
 #include "core-impl/meta/proxy/MetaProxy.h"
+#include "core-impl/meta/file/FileTrackProvider.h"
 #include "core-impl/podcasts/sql/SqlPodcastProvider.h"
 
 #include <QDate>
@@ -34,6 +35,8 @@
 
 using namespace Podcasts;
 
+static FileTrackProvider myFileTrackProvider; // we need it to be available for \
lookups +
 class TimecodeWriteCapabilityPodcastImpl : public \
Capabilities::TimecodeWriteCapability  {
     public:
@@ -240,7 +243,7 @@ SqlPodcastEpisode::setupLocalFile()
     /* following won't write to actual file, because MetaProxy::Track hasn't yet \
                looked
      * up the underlying track. It will just set some cached values. */
     writeTagsToFile();
-    proxyTrack->lookupTrack( CollectionManager::instance()->fileTrackProvider() );
+    proxyTrack->lookupTrack( &myFileTrackProvider );
 }
 
 SqlPodcastEpisode::~SqlPodcastEpisode()


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

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