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

List:       kde-commits
Subject:    extragear/multimedia/amarok/src/meta
From:       Maximilian Kossick <maximilian.kossick () googlemail ! com>
Date:       2007-08-31 19:49:50
Message-ID: 1188589790.406802.20472.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 707022 by mkossick:

added field names to MetaUtility, and started implementing utility functions for \
mapping Track objects to QVariantMaps


 M  +59 -0     MetaUtility.cpp  
 M  +40 -2     MetaUtility.h  


--- trunk/extragear/multimedia/amarok/src/meta/MetaUtility.cpp #707021:707022
@@ -18,8 +18,67 @@
 
 #include "MetaUtility.h"
 
+#include "meta.h"
+
 #include <QChar>
 
+QVariantMap
+Meta::Field::mapFromTrack( const Meta::Track *track )
+{
+    //note: track does not support bpm, first_played yet
+    QVariantMap map;
+    if( !track )
+        return map;
+
+    if( track->name().isEmpty() )
+        map.insert( Meta::Field::TITLE, QVariant( track->prettyName() ) );
+    else
+        map.insert( Meta::Field::TITLE, QVariant( track->name() ) );
+    if( !track->artist()->name().isEmpty() )
+    map.insert( Meta::Field::ARTIST, QVariant( track->artist()->name() ) );
+    if( !track->album()->name().isEmpty() )
+    map.insert( Meta::Field::ALBUM, QVariant( track->album()->name() ) );
+    if( track->filesize() )
+        map.insert( Meta::Field::FILESIZE, QVariant( track->filesize() ) );
+    if( !track->genre()->name().isEmpty() )
+    map.insert( Meta::Field::GENRE, QVariant( track->genre()->name() ) );
+    if( !track->composer()->name().isEmpty() )
+    map.insert( Meta::Field::COMPOSER, QVariant( track->composer()->name() ) );
+    if( !track->year()->name().isEmpty() )
+    map.insert( Meta::Field::YEAR, QVariant( track->year()->name() ) );
+    if( !track->comment().isEmpty() )
+        map.insert( Meta::Field::COMMENT, QVariant( track->comment() ) );
+    if( track->trackNumber() )
+        map.insert( Meta::Field::TRACKNUMBER, QVariant( track->trackNumber() ) );
+    if( track->discNumber() )
+        map.insert( Meta::Field::DISCNUMBER, QVariant( track->discNumber() ) );
+    if( track->bitrate() )
+        map.insert( Meta::Field::BITRATE, QVariant( track->bitrate() ) );
+    if( track->length() )
+        map.insert( Meta::Field::LENGTH, QVariant( track->length() ) );
+    if( track->sampleRate() )
+        map.insert( Meta::Field::SAMPLERATE, QVariant( track->sampleRate() ) );
+    map.insert( Meta::Field::URL, QVariant( track->prettyUrl() ) );
+    map.insert( Meta::Field::RATING, QVariant( track->rating() ) );
+    map.insert( Meta::Field::SCORE, QVariant( track->score() ) );
+    map.insert( Meta::Field::PLAYCOUNT, QVariant( track->playCount() ) );
+    map.insert( Meta::Field::LAST_PLAYED, QVariant( track->lastPlayed() ) );
+    return map;
+}
+
+
+void
+Meta::Field::updateTrack( Meta::Track *track, const QVariantMap &metadata )
+{
+    if( !track )
+        return;
+
+    QString title = metadata.contains( Meta::Field::TITLE ) ? 
+                            metadata.value( Meta::Field::TITLE ).toString() : \
QString(); +    track->setTitle( title );
+}
+
+
 QString
 Meta::msToPrettyTime( int ms )
 {
--- trunk/extragear/multimedia/amarok/src/meta/MetaUtility.h #707021:707022
@@ -19,13 +19,51 @@
 #ifndef AMAROK_METAUTILITY_H
 #define AMAROK_METAUTILITY_H
 
+#include "amarok_export.h"
+
+#include <QMap>
 #include <QString>
+#include <QVariant>
 
+#include <KSharedPtr>
+
 namespace Meta
 {
+    class Track;
 
-    QString msToPrettyTime( int ms );
-    QString secToPrettyTime( int seconds );
+    namespace Field
+    {
+        //actual string values are not final yet
+        static const QString ALBUM          = "xesam:album";
+        static const QString ARTIST         = "xesam:author";
+        static const QString BITRATE        = "xesam:audioBitrate";
+        static const QString BPM            = "xesam:audioBPM";
+        static const QString COMMENT        = "xesam:comment";
+        static const QString COMPOSER       = "xesam:composer";
+        static const QString DISCNUMBER     = "xesam:cdNumber";
+        static const QString FILESIZE       = "xesam:size";
+        static const QString GENRE          = "xesam:genre";
+        static const QString LENGTH         = "xesam:duration";
+        static const QString RATING         = "xesam:rating";
+        static const QString SAMPLERATE     = "xesam:audioSampleRate";
+        static const QString TITLE          = "xesam:title";
+        static const QString TRACKNUMBER    = "xesam:trackNumber";
+        static const QString URL            = "xesam:url";
+        static const QString YEAR           = "xesam:contentCreated";
+
+        static const QString SCORE          = "amarok:score";
+        static const QString PLAYCOUNT      = "amarok:playcount";
+        static const QString FIRST_PLAYED   = "amarok:firstPlayed";
+        static const QString LAST_PLAYED    = "amarok:lastPlayed";
+
+
+        AMAROK_EXPORT QVariantMap mapFromTrack( const Meta::Track *track );
+        AMAROK_EXPORT void updateTrack( Meta::Track *track, const QVariantMap \
&metadata ); +    }
+
+
+    AMAROK_EXPORT QString msToPrettyTime( int ms );
+    AMAROK_EXPORT QString secToPrettyTime( int seconds );
 }
 
 #endif


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

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