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

List:       kde-commits
Subject:    [plasma-mediacenter] /: Displaying time duration for All Music
From:       Sinny Kumari <ksinny () gmail ! com>
Date:       2014-03-15 15:01:30
Message-ID: E1WOq5a-00029Z-Ld () scm ! kde ! org
[Download RAW message or body]

Git commit 05d01a3905ada1d8841e2582b74bec7834330d77 by Sinny Kumari.
Committed on 15/03/2014 at 14:58.
Pushed by sinnykumari into branch 'master'.

Displaying time duration for All Music

M  +11   -0    libs/mediacenter/media.cpp
M  +6    -2    libs/mediacenter/media.h
M  +13   -0    libs/mediacenter/medialibrary.cpp
M  +1    -0    libs/mediacenter/medialibrary.h
M  +5    -0    libs/mediacenter/pmcmedia.cpp
M  +1    -0    libs/mediacenter/pmcmedia.h
M  +2    -0    libs/mediacenter/pmcmetadatamodel.cpp
M  +9    -2    plugins/kdedesktopsearch/kdemetadatamediasource.cpp
M  +0    -1    plugins/kdedesktopsearch/kdemetadatamediasource.h

http://commits.kde.org/plasma-mediacenter/05d01a3905ada1d8841e2582b74bec7834330d77

diff --git a/libs/mediacenter/media.cpp b/libs/mediacenter/media.cpp
index 97a4e6c..f676720 100644
--- a/libs/mediacenter/media.cpp
+++ b/libs/mediacenter/media.cpp
@@ -37,6 +37,7 @@ template <> void register_class(QxClass<Media> & m)
     m.data(& Media::m_url, "url");
     m.data(& Media::m_thumbnail, "thumbnail");
     m.data(& Media::m_type, "type");
+    m.data(& Media::m_duration, "duration");
 
     m.relationManyToOne(& Media::m_album, "album_id");
     m.relationManyToOne(& Media::m_artist, "artist_id");
@@ -178,3 +179,13 @@ void Media::setArtist(const QSharedPointer< Artist >& artist)
 {
     updateIfChanged(m_artist, artist);
 }
+
+const int Media::duration() const
+{
+    return m_duration;
+}
+
+bool Media::setDuration(int duration)
+{
+    return updateIfChanged(m_duration, duration);
+}
diff --git a/libs/mediacenter/media.h b/libs/mediacenter/media.h
index 66fc53e..ae86e24 100644
--- a/libs/mediacenter/media.h
+++ b/libs/mediacenter/media.h
@@ -38,17 +38,20 @@ public:
 
     const QString& sha() const;
 
-    const QString& title () const;
+    const QString& title() const;
     bool setTitle(const QString &title);
 
     const QString& url() const;
 
-    const QString& thumbnail () const;
+    const QString& thumbnail() const;
     bool setThumbnail(const QString &thumbnail);
 
     const QString& type() const;
     bool setType(const QString &type);
 
+    const int duration() const;
+    bool setDuration(int duration);
+
     bool setValueForRole(int role, const QVariant &value);
     static QString calculateSha(const QString& url);
 
@@ -63,6 +66,7 @@ public:
     QString m_url;
     QString m_thumbnail;
     QString m_type;
+    int m_duration;
     Album::Ptr m_album;
     Artist::Ptr m_artist;
 
diff --git a/libs/mediacenter/medialibrary.cpp b/libs/mediacenter/medialibrary.cpp
index 479e1c0..b728d8d 100644
--- a/libs/mediacenter/medialibrary.cpp
+++ b/libs/mediacenter/medialibrary.cpp
@@ -148,6 +148,8 @@ void MediaLibrary::processNextRequest()
                 wasUpdated = wasUpdated || extractAndSaveAlbumInfo(request, media);
             } else if (role == MediaCenter::ArtistRole) {
                 wasUpdated = wasUpdated || extractAndSaveArtistInfo(request, media);
+            } else if (role == MediaCenter::DurationRole){
+                wasUpdated = wasUpdated || extractAndSaveDurationInfo(request, \
media);  } else {
                 wasUpdated = wasUpdated || media->setValueForRole(role, \
request.second.value(role));  }
@@ -165,6 +167,8 @@ void MediaLibrary::processNextRequest()
                     extractAndSaveAlbumInfo(request, media);
                 } else if(role == MediaCenter::ArtistRole) {
                     extractAndSaveArtistInfo(request, media);
+                } else if(role == MediaCenter::DurationRole) {
+                    extractAndSaveDurationInfo(request, media);
                 } else {
                     media->setValueForRole(role, request.second.value(role));
                 }
@@ -244,6 +248,15 @@ bool MediaLibrary::extractAndSaveAlbumInfo(
     return true;
 }
 
+bool MediaLibrary::extractAndSaveDurationInfo(
+    const QPair< QString, QHash< int, QVariant > > request,
+    QSharedPointer< Media >& media)
+{
+    const int duration = request.second.value(MediaCenter::DurationRole).toInt();
+
+    return duration < 0 ? false : media->setDuration(duration);
+}
+
 template <class T>
 QSharedPointer< T > MediaLibrary::loadOrCreate(const QString& id)
 {
diff --git a/libs/mediacenter/medialibrary.h b/libs/mediacenter/medialibrary.h
index 770b4c4..822c6e3 100644
--- a/libs/mediacenter/medialibrary.h
+++ b/libs/mediacenter/medialibrary.h
@@ -78,6 +78,7 @@ private:
     void emitNewMedia();
     bool extractAndSaveAlbumInfo(const QPair< QString, QHash< int, QVariant > >& \
                request, QSharedPointer< Media >& media);
     bool extractAndSaveArtistInfo(const QPair< QString, QHash< int, QVariant > >& \
request, QSharedPointer< Media >& media); +    bool extractAndSaveDurationInfo(const \
QPair< QString, QHash< int, QVariant > > request, QSharedPointer< Media >& media);  
     template <class T> QSharedPointer<T> loadOrCreate (const QString &id);
 
diff --git a/libs/mediacenter/pmcmedia.cpp b/libs/mediacenter/pmcmedia.cpp
index 863cec6..0fa7737 100644
--- a/libs/mediacenter/pmcmedia.cpp
+++ b/libs/mediacenter/pmcmedia.cpp
@@ -73,3 +73,8 @@ QString PmcMedia::artist() const
 {
     return d->media->artist() ? d->media->artist()->name() : QString();
 }
+
+int PmcMedia::duration() const
+{
+    return d->media->duration();
+}
diff --git a/libs/mediacenter/pmcmedia.h b/libs/mediacenter/pmcmedia.h
index 78a6426..2ae68ed 100644
--- a/libs/mediacenter/pmcmedia.h
+++ b/libs/mediacenter/pmcmedia.h
@@ -40,6 +40,7 @@ public:
     const QString& type() const;
     QString album() const;
     QString artist() const;
+    int duration() const;
 
 signals:
     void updated();
diff --git a/libs/mediacenter/pmcmetadatamodel.cpp \
b/libs/mediacenter/pmcmetadatamodel.cpp index c3c07e6..e1414af 100644
--- a/libs/mediacenter/pmcmetadatamodel.cpp
+++ b/libs/mediacenter/pmcmetadatamodel.cpp
@@ -242,6 +242,8 @@ QVariant PmcMetadataModel::dataForMedia(const QModelIndex &index, \
int role) cons  return media->album();
     case MediaCenter::ArtistRole:
         return media->artist();
+    case MediaCenter::DurationRole:
+        return media->duration();
     case Qt::DecorationRole:
         if (media->type() == "video") {
             const KUrl url(media->url());
diff --git a/plugins/kdedesktopsearch/kdemetadatamediasource.cpp \
b/plugins/kdedesktopsearch/kdemetadatamediasource.cpp index a456a66..aa1f3bb 100644
--- a/plugins/kdedesktopsearch/kdemetadatamediasource.cpp
+++ b/plugins/kdedesktopsearch/kdemetadatamediasource.cpp
@@ -50,7 +50,8 @@ KdeMetadataMediaSource::KdeMetadataMediaSource(QObject* parent, \
const QVariantLi  << MediaCenter::MediaTypeRole
         << Qt::DecorationRole
         << MediaCenter::AlbumRole
-        << MediaCenter::ArtistRole;
+        << MediaCenter::ArtistRole
+        << MediaCenter::DurationRole;
 
     moveToThread(this);
 }
@@ -165,11 +166,17 @@ void KdeMetadataMediaSource::fetchValuesForResult(int i, const \
Nepomuk2::Query::  values.insert(role, artist.genericLabel());
             }
             break;
+        case MediaCenter::DurationRole:
+            if (values.value(MediaCenter::MediaTypeRole).toString() == "audio") {
+                const int duration = result.resource().property(
+                    Nepomuk2::Vocabulary::NFO::duration()).toInt();
+                values.insert(role, duration);
+            break;
+            }
         }
     }
 
     SingletonFactory::instanceFor<MediaLibrary>()->updateMedia(values);
-    emit gotMetadata(i, values);
 }
 
 QString KdeMetadataMediaSource::mimetypeForResource(const Nepomuk2::Resource& \
                resource) const
diff --git a/plugins/kdedesktopsearch/kdemetadatamediasource.h \
b/plugins/kdedesktopsearch/kdemetadatamediasource.h index 57fb732..6bf21b2 100644
--- a/plugins/kdedesktopsearch/kdemetadatamediasource.h
+++ b/plugins/kdedesktopsearch/kdemetadatamediasource.h
@@ -48,7 +48,6 @@ public:
     void setTerm(const Nepomuk2::Query::Term &term);
 
 signals:
-    void gotMetadata(int row, const QHash<int, QVariant> &values);
     void newResults(int count);
     void reset();
     void queryStarted();


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

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