From kde-commits Sat May 31 23:10:32 2008 From: Casey Link Date: Sat, 31 May 2008 23:10:32 +0000 To: kde-commits Subject: extragear/multimedia/amarok/src Message-Id: <1212275432.225645.21686.nullmailer () svn ! kde ! org> X-MARC-Message: https://marc.info/?l=kde-commits&m=121227544014226 SVN commit 815021 by link: Expose the local collection path via dbus in a more elegant fashion. The CollectionLocation changes should prove useful in the future for other implementations. M +6 -0 collection/CollectionLocation.cpp M +12 -0 collection/CollectionLocation.h M +5 -0 collection/sqlcollection/SqlCollectionLocation.cpp M +1 -0 collection/sqlcollection/SqlCollectionLocation.h M +3 -11 dbus/amarokdbushandler.cpp M +1 -1 dbus/amarokdbushandler.h M +2 -2 dbus/org.kde.amarok.collection.xml --- trunk/extragear/multimedia/amarok/src/collection/CollectionLocation.cpp #815020:815021 @@ -59,6 +59,12 @@ return QString(); } +QStringList +CollectionLocation::actualLocation() const +{ + return QStringList(); +} + bool CollectionLocation::isWriteable() const { --- trunk/extragear/multimedia/amarok/src/collection/CollectionLocation.h #815020:815021 @@ -54,6 +54,9 @@ Implementations which are only readable can reimplement getKIOCopyableUrls( Meta::TrackList ) if it is necessary, but can use the default implementations if possible. + + Implementations that have a string expressable location(s), such as a URL or path on disk + should reimplement actualLocation(). Implementations that need additional information provided by the user have to implement showSourceDialog() and showDestinationDialog(), depending on whether the information is required @@ -96,6 +99,15 @@ virtual QString prettyLocation() const; /** + Returns a list of machine usable strings representingthe collection location. For example, + a local collection would return a list of paths where tracks are stored, while an Ampache + collection would return a list with one string containing the URL of an ampache server. + An iPod collection and a MTP device collection are examples of collections that do + not need to reimplement this method. + */ + virtual QStringList actualLocation() const; + + /** Returns whether the collection location is writeable or not. For example, a local collection or an ipod collection would return true, a daap collection or a service collection false. The value returned by this method indicates if it is possible to copy tracks to the collection, and if it is generally possible to --- trunk/extragear/multimedia/amarok/src/collection/sqlcollection/SqlCollectionLocation.cpp #815020:815021 @@ -62,6 +62,11 @@ return i18n( "Local Collection" ); } +QStringList +SqlCollectionLocation::actualLocation() const +{ + return MountPointManager::instance()->collectionFolders(); +} bool SqlCollectionLocation::isWriteable() const { --- trunk/extragear/multimedia/amarok/src/collection/sqlcollection/SqlCollectionLocation.h #815020:815021 @@ -36,6 +36,7 @@ virtual ~SqlCollectionLocation(); virtual QString prettyLocation() const; + virtual QStringList actualLocation() const; virtual bool isWriteable() const; virtual bool isOrganizable() const; virtual bool remove( const Meta::TrackPtr &track ); --- trunk/extragear/multimedia/amarok/src/dbus/amarokdbushandler.cpp #815020:815021 @@ -29,6 +29,7 @@ #include "collection/CollectionManager.h" #include "collection/SqlStorage.h" #include "collection/sqlcollection/SqlCollection.h" +#include "collection/sqlcollection/SqlCollectionLocation.h" #include "context/LyricsManager.h" #include "EngineController.h" #include "equalizersetup.h" @@ -848,18 +849,9 @@ Q_UNUSED( path ); return false; } - QString DbusCollectionHandler::mainCollectionPath() + QStringList DbusCollectionHandler::collectionLocation() { - /*The main collection path is defined as the first path encountered*/ - QStringList folders = MountPointManager::instance()->collectionFolders(); - - QString firstPath = "NONE"; - - if(!folders.isEmpty()) { - firstPath = folders[0]; - } - - return firstPath; + return CollectionManager::instance()->primaryCollection()->location()->actualLocation(); } bool DbusCollectionHandler::moveFile( const QString &oldURL, const QString &newURL, bool overwrite ) { --- trunk/extragear/multimedia/amarok/src/dbus/amarokdbushandler.h #815020:815021 @@ -183,7 +183,7 @@ virtual int totalGenres(); virtual int totalTracks(); virtual bool isDirInCollection( const QString &path ); - virtual QString mainCollectionPath(); + virtual QStringList collectionLocation(); virtual bool moveFile( const QString &oldURL, const QString &newURL, bool overwrite ); virtual QStringList query(const QString& sql); virtual QStringList similarArtists( int artists ); --- trunk/extragear/multimedia/amarok/src/dbus/org.kde.amarok.collection.xml #815020:815021 @@ -56,8 +56,8 @@ - - + +