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

List:       kde-commits
Subject:    Re: [Amarok] Use MetaFile::Track for getting information (which
From:       Seb Ruiz <ruiz () kde ! org>
Date:       2009-08-03 23:23:36
Message-ID: 60ebdd0b0908031623r1ac57e3dw328fe58c6a6c304c () mail ! gmail ! com
[Download RAW message or body]

This change has some big side effects:

If you load a track with no metadata from the file system into the
playlist, we don't show anything in the playlist. We used to at least
show the url.


2009/8/4 Alejandro Wainzinger <aikawarazuni@gmail.com>:
> commit 20f4b4a6422790938b59e8b09240b18f722b5904
> Author:     Alejandro Wainzinger <aikawarazuni@gmail.com>
> AuthorDate: Mon Aug 3 16:01:34 2009 +0200
> Commit:     Alejandro Wainzinger <aikawarazuni@gmail.com>
> CommitDate: Mon Aug 3 16:04:13 2009 +0200
> 
> Use MetaFile::Track for getting information (which also uses TagLib) to reduce code \
> duplication.  Modify MetaFile::Track to not return modified strings if it has blank \
> strings for certain metadata, since this should be the responsibility of the user \
> of MetaFile::Track. 
> diff --git a/src/collection/ipodcollection/handler/IpodHandler.cpp \
> b/src/collection/ipodcollection/handler/IpodHandler.cpp index f9ecb60..1be1c26 \
>                 100644
> --- a/src/collection/ipodcollection/handler/IpodHandler.cpp
> +++ b/src/collection/ipodcollection/handler/IpodHandler.cpp
> @@ -429,7 +429,7 @@ IpodHandler::slotStaleOrphaned()
> 
> if( init )
> {
> -        ThreadWeaver::Weaver::instance()->enqueue( new StaleWorkerThread( this ) \
> ); +        ThreadWeaver::Weaver::instance()->enqueue( new OrphanedWorkerThread( \
> this ) ); }
> 
> 
> @@ -454,15 +454,15 @@ IpodHandler::findOrphaned()
> bool
> IpodHandler::addNextOrphaned()
> {
> +    DEBUG_BLOCK
> QString realPath;
> QString path = m_orphanedPaths.takeFirst();
> -    pathExists( path, &realPath );
> -    const AttributeHash attributes = readTags( realPath );
> -
> -    if( attributes.empty() )
> +    if( !pathExists( path, &realPath ) )
> return false;
> 
> -    debug() << "Found: " << attributes["artist"] << " - " << attributes["title"];
> +    // Create track based on URL
> +
> +    Meta::TrackPtr filetrack( new MetaFile::Track( realPath ) );
> 
> // Create new track
> 
> @@ -472,34 +472,9 @@ IpodHandler::addNextOrphaned()
> 
> libCreateTrack( destTrack );
> 
> -    // Fill the track struct of the destTrack with info from the track parameter \
>                 as source
> -
> -    libSetTitle( destTrack, attributes["title"] );
> -    libSetArtist( destTrack, attributes["artist"] );
> -    libSetAlbum( destTrack, attributes["album"] );
> -    libSetComment( destTrack, attributes["comment"] );
> -    libSetGenre( destTrack, attributes["genre"] );
> -    libSetYear( destTrack, attributes["year"] );
> -    libSetTrackNumber( destTrack, attributes["track"].toInt() );
> +    // Fill the track struct of the destTrack with info from the filetrack as \
> source 
> -    if( attributes.contains("composer" ) )
> -        libSetComposer( destTrack, attributes["composer"] );
> -    if( attributes.contains("discnumber" ) )
> -        libSetDiscNumber( destTrack, attributes["discnumber"].toInt() );
> -
> -    //libSetBpm( destTrack, attributes["bpm"] );
> -    if( attributes.contains("filesize" ) )
> -        libSetFileSize( destTrack, attributes["filesize"].toInt() );
> -
> -    libSetType( destTrack, attributes["filetype"] );
> -    //libSetPlayableUrl( destTrack, srcTrack );
> -
> -    if( attributes["audioproperties"] == "true" )
> -    {
> -        libSetBitrate( destTrack, attributes["bitrate"].toInt() );
> -        libSetLength( destTrack, attributes["length"].toInt() );
> -        libSetSamplerate( destTrack, attributes["samplerate"].toInt() );
> -    }
> +    setBasicMediaDeviceTrackInfo( filetrack, destTrack );
> 
> // set up the play url
> 
> @@ -509,7 +484,7 @@ IpodHandler::addNextOrphaned()
> 
> addTrackInDB( destTrack );
> 
> -    // Inform subclass that a track has been added to the db
> +    // A track has been added to the db
> 
> databaseChanged();
> 
> diff --git a/src/collection/mediadevicecollection/handler/MediaDeviceHandler.cpp \
> b/src/collection/mediadevicecollection/handler/MediaDeviceHandler.cpp index \
>                 35fedbe..28c9c48 100644
> --- a/src/collection/mediadevicecollection/handler/MediaDeviceHandler.cpp
> +++ b/src/collection/mediadevicecollection/handler/MediaDeviceHandler.cpp
> @@ -107,7 +107,11 @@ MediaDeviceHandler::getBasicMediaDeviceTrackInfo( const \
> Meta::MediaDeviceTrackPt void
> MediaDeviceHandler::setBasicMediaDeviceTrackInfo( const Meta::TrackPtr& srcTrack, \
> MediaDeviceTrackPtr destTrack ) {
> -    DEBUG_BLOCK
> +    setupWriteCapability();
> +
> +    if( !m_wc )
> +        return;
> +
> m_wc->libSetTitle( destTrack, srcTrack->name() );
> m_wc->libSetAlbum( destTrack, srcTrack->album()->name() );
> m_wc->libSetArtist( destTrack, srcTrack->artist()->name() );
> @@ -127,6 +131,7 @@ MediaDeviceHandler::setBasicMediaDeviceTrackInfo( const \
> Meta::TrackPtr& srcTrack m_wc->libSetRating( destTrack, srcTrack->rating() );
> m_wc->libSetType( destTrack, srcTrack->type() );
> //libSetPlayableUrl( destTrack, srcTrack );
> +
> //if( srcTrack->album()->hasImage() )
> //    libSetCoverArt( destTrack, srcTrack->album()->image() );
> }
> @@ -264,18 +269,10 @@ MediaDeviceHandler::copyTrackListToDevice(const \
> Meta::TrackList tracklist) 
> DEBUG_BLOCK
> 
> +    setupWriteCapability();
> +
> if( !m_wc )
> -    {
> -        if( this->hasCapabilityInterface( Handler::Capability::Writable ) )
> -        {
> -            m_wc = this->create<Handler::WriteCapability>();
> -            if( !m_wc )
> -            {
> -                debug() << "Handler does not have \
>                 MediaDeviceHandler::WriteCapability. Aborting copy.";
> -                return;
> -            }
> -        }
> -    }
> +        return;
> 
> m_isCopying = true;
> 
> @@ -1073,15 +1070,9 @@ MediaDeviceHandler::setupReadCapability()
> }
> }
> 
> -/** Observer Methods **/
> void
> -MediaDeviceHandler::metadataChanged( TrackPtr track )
> +MediaDeviceHandler::setupWriteCapability()
> {
> -    DEBUG_BLOCK
> -
> -    Meta::MediaDeviceTrackPtr trackPtr = Meta::MediaDeviceTrackPtr::staticCast( \
>                 track );
> -    KUrl trackUrl = KUrl::fromPath( trackPtr->uidUrl() );
> -
> if( !m_wc )
> {
> if( this->hasCapabilityInterface( Handler::Capability::Writable ) )
> @@ -1089,11 +1080,26 @@ MediaDeviceHandler::metadataChanged( TrackPtr track )
> m_wc = this->create<Handler::WriteCapability>();
> if( !m_wc )
> {
> -                debug() << "Handler does not have \
> MediaDeviceHandler::WriteCapability. Aborting metadata change."; +                \
> debug() << "Handler does not have MediaDeviceHandler::WriteCapability. Aborting."; \
> return; }
> }
> }
> +}
> +
> +/** Observer Methods **/
> +void
> +MediaDeviceHandler::metadataChanged( TrackPtr track )
> +{
> +    DEBUG_BLOCK
> +
> +    Meta::MediaDeviceTrackPtr trackPtr = Meta::MediaDeviceTrackPtr::staticCast( \
> track ); +    KUrl trackUrl = KUrl::fromPath( trackPtr->uidUrl() );
> +
> +    setupWriteCapability();
> +
> +    if( !m_wc )
> +        return;
> 
> setBasicMediaDeviceTrackInfo( track, trackPtr );
> 
> diff --git a/src/collection/mediadevicecollection/handler/MediaDeviceHandler.h \
> b/src/collection/mediadevicecollection/handler/MediaDeviceHandler.h index \
>                 2dcf116..9fa8ebd 100644
> --- a/src/collection/mediadevicecollection/handler/MediaDeviceHandler.h
> +++ b/src/collection/mediadevicecollection/handler/MediaDeviceHandler.h
> @@ -245,6 +245,14 @@ protected:
> 
> void addMediaDeviceTrackToCollection( Meta::MediaDeviceTrackPtr &track );
> 
> +    /** Uses wrapped libSet methods to fill a track struct of the particular \
> library +    *  with information from a Meta::Track
> +    *  @param srcTrack The track that has the source information
> +    *  @param destTrack The track whose associated struct we want to fill with \
> information +    */
> +
> +    void setBasicMediaDeviceTrackInfo( const Meta::TrackPtr &srcTrack, \
> Meta::MediaDeviceTrackPtr destTrack ); +
> MediaDeviceCollection   *m_memColl; /// Associated collection
> ProgressBar      *m_statusbar; /// A progressbar to show progress of an operation
> 
> @@ -283,14 +291,6 @@ private:
> */
> void getBasicMediaDeviceTrackInfo( const Meta::MediaDeviceTrackPtr& track, \
> Meta::MediaDeviceTrackPtr destTrack ); 
> -    /** Uses wrapped libSet methods to fill a track struct of the particular \
>                 library
> -    *  with information from a Meta::Track
> -    *  @param srcTrack The track that has the source information
> -    *  @param destTrack The track whose associated struct we want to fill with \
>                 information
> -    */
> -
> -    void setBasicMediaDeviceTrackInfo( const Meta::TrackPtr &srcTrack, \
>                 Meta::MediaDeviceTrackPtr destTrack );
> -
> /**
> * Pulls out meta information (e.g. artist string)
> * from track struct, inserts into appropriate map
> @@ -312,6 +312,7 @@ private:
> // Misc. Helper Methods
> 
> void setupReadCapability();
> +    void setupWriteCapability();
> 
> /**
> *  @return free space on the device
> diff --git a/src/meta/file/File.cpp b/src/meta/file/File.cpp
> index aee21ce..ef826bf 100644
> --- a/src/meta/file/File.cpp
> +++ b/src/meta/file/File.cpp
> @@ -160,10 +160,7 @@ Track::name() const
> if( d )
> {
> const QString trackName = d->m_data.title;
> -        if( !trackName.isEmpty() )
> -            return trackName;
> -        //lets use the filename, or it will look really dull in the playlist
> -        return d->url.fileName();
> +        return trackName;
> }
> return "This is a bug!";
> }
> @@ -222,7 +219,7 @@ Track::isEditable() const
> const bool editable = ( p & QFile::WriteUser ) || ( p & QFile::WriteGroup ) || ( p \
> & QFile::WriteOther ); 
> debug() << d->url.path() << " editable: " << editable;
> -    return editable;
> +    return editable;
> }
> 
> Meta::AlbumPtr
> @@ -566,10 +563,10 @@ Track::collection() const
> bool
> Track::hasCapabilityInterface( Meta::Capability::Type type ) const
> {
> -    return type == Meta::Capability::Editable ||
> -           type == Meta::Capability::Importable ||
> -           type == Meta::Capability::CurrentTrackActions ||
> -           type == Meta::Capability::WriteTimecode ||
> +    return type == Meta::Capability::Editable ||
> +           type == Meta::Capability::Importable ||
> +           type == Meta::Capability::CurrentTrackActions ||
> +           type == Meta::Capability::WriteTimecode ||
> type == Meta::Capability::LoadTimecode;
> }
> 
> diff --git a/src/meta/file/File_p.h b/src/meta/file/File_p.h
> index 237499a..27df463 100644
> --- a/src/meta/file/File_p.h
> +++ b/src/meta/file/File_p.h
> @@ -312,9 +312,7 @@ public:
> QString name() const
> {
> const QString artist = d->m_data.artist;
> -        if( !artist.isEmpty() )
> -            return artist;
> -        return i18nc( "The value is not known", "Unknown" );
> +        return artist;
> }
> 
> QString prettyName() const
> @@ -358,13 +356,10 @@ public:
> if( d )
> {
> const QString albumName = d->m_data.album;
> -            if( !albumName.isEmpty() )
> -                return albumName;
> -            else
> -                return i18nc( "The value is not known", "Unknown" );
> +            return albumName;
> }
> else
> -            return i18nc( "The value is not known", "Unknown" );
> +            return QString();
> }
> 
> QString prettyName() const
> @@ -400,9 +395,7 @@ public:
> QString name() const
> {
> const QString genreName = d->m_data.genre;
> -        if( !genreName.isEmpty() )
> -            return genreName;
> -        return i18nc( "The value is not known", "Unknown" );
> +        return genreName;
> }
> 
> QString prettyName() const
> @@ -429,10 +422,8 @@ public:
> QString name() const
> {
> const QString composer = d->m_data.composer;
> -        if( !composer.isEmpty() )
> -            return composer;
> -        return i18nc( "The value is not known", "Unknown" );
> -    }
> +        return composer;
> +     }
> 
> QString prettyName() const
> {
> @@ -458,9 +449,7 @@ public:
> QString name() const
> {
> const QString year = QString::number( d->m_data.year );
> -        if( !year.isEmpty()  )
> -            return year;
> -        return i18nc( "The value is not known", "Unknown" );
> +        return year;
> }
> 
> QString prettyName() const
> 
> 
> 



-- 
Seb Ruiz

http://www.sebruiz.net/
http://amarok.kde.org/


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

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