[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