[SCM] bangarang packaging branch, master, updated. debian/1.0.1-1-10-g2bd7358
Ryan Kavanagh
ryanakca-guest at alioth.debian.org
Fri Feb 4 02:41:07 UTC 2011
The following commit has been merged in the master branch:
commit 970bd7710c18572861f936f90c4ad7c9caead90c
Merge: fdf550e06027ead5bbd958a3b988e1a9f05c38b6 1d9bce4c2b6ce5b5d10876807b94b79da0dddc78
Author: Ryan Kavanagh <ryanakca at kubuntu.org>
Date: Thu Feb 3 12:50:58 2011 -0500
Merge branch 'upstream'
Conflicts:
src/platform/dvdlistengine.cpp
src/platform/filelistengine.cpp
src/platform/listengine.cpp
src/platform/listenginefactory.cpp
src/platform/medialistsengine.cpp
src/platform/musiclistengine.cpp
src/platform/semanticslistengine.cpp
src/platform/utilities.cpp
translations/CMakeLists.txt
translations/bangarang.pot
translations/de/bangarang.po
translations/fr/bangarang.po
translations/merge.sh
translations/nl/bangarang.po
translations/zh_CN/bangarang.po
CMakeLists.txt | 44 +-
convenience/dialog-close.png | Bin 0 -> 813 bytes
convenience/help-about.png | Bin 0 -> 734 bytes
data/bangarang.desktop | 4 +-
data/bangarang.svg | 1311 ++++-
data/bangarang_play_cd.desktop | 2 +
data/bangarang_play_dvd.desktop | 2 +
doxyfile | 1514 +++++
icons/hi128-app-bangarang-tmdb.png | Bin 0 -> 65909 bytes
icons/hi128-app-bangarang.png | Bin 24790 -> 5507 bytes
icons/hi16-app-bangarang-lastfm.png | Bin 0 -> 1179 bytes
icons/hi16-app-bangarang-tvdb.png | Bin 0 -> 578 bytes
icons/hi16-app-bangarang.png | Bin 788 -> 722 bytes
icons/hi22-actions-bangarang-clearplaylist.png | Bin 1297 -> 919 bytes
icons/hi22-actions-bangarang-preview.png | Bin 1326 -> 959 bytes
icons/hi22-actions-bangarang-repeat.png | Bin 1171 -> 771 bytes
icons/hi22-actions-bangarang-shuffle.png | Bin 1393 -> 1046 bytes
icons/hi22-app-bangarang-notifier-active-pause.png | Bin 0 -> 734 bytes
icons/hi22-app-bangarang-notifier-active.png | Bin 0 -> 758 bytes
icons/hi22-app-bangarang-notifier.png | Bin 0 -> 695 bytes
icons/hi22-app-bangarang.png | Bin 1316 -> 1025 bytes
icons/hi32-app-bangarang-notifier-active-pause.png | Bin 0 -> 1036 bytes
icons/hi32-app-bangarang-notifier-active.png | Bin 0 -> 1062 bytes
icons/hi32-app-bangarang-notifier.png | Bin 0 -> 996 bytes
icons/hi32-app-bangarang.png | Bin 2093 -> 1497 bytes
icons/hi48-app-bangarang.png | Bin 4366 -> 2057 bytes
icons/hi64-app-bangarang-dbpedia.png | Bin 0 -> 3904 bytes
icons/hi64-app-bangarang.png | Bin 7594 -> 2853 bytes
icons/hi8-app-bangarang.png | Bin 385 -> 362 bytes
po/CMakeLists.txt | 13 +
po/bangarang.pot | 2050 ++++++
{translations/cz => po/cs}/CMakeLists.txt | 0
po/cs/bangarang.po | 2461 +++++++
po/da/CMakeLists.txt | 2 +
po/da/bangarang.po | 2442 +++++++
{translations => po}/de/CMakeLists.txt | 0
po/de/bangarang.po | 2442 +++++++
po/es/CMakeLists.txt | 2 +
po/es/bangarang.po | 2411 +++++++
po/fi/CMakeLists.txt | 2 +
po/fi/bangarang.po | 2383 +++++++
{translations => po}/fr/CMakeLists.txt | 0
po/fr/bangarang.po | 2432 +++++++
{translations => po}/it/CMakeLists.txt | 0
po/it/bangarang.po | 2361 +++++++
po/lt/CMakeLists.txt | 2 +
po/lt/bangarang.po | 2144 ++++++
po/merge.sh | 16 +
{translations => po}/nl/CMakeLists.txt | 0
po/nl/bangarang.po | 2409 +++++++
{translations => po}/pl/CMakeLists.txt | 0
po/pl/bangarang.po | 2502 +++++++
{translations => po}/pt_BR/CMakeLists.txt | 0
po/pt_BR/bangarang.po | 2299 +++++++
po/uk/CMakeLists.txt | 2 +
po/uk/bangarang.po | 2146 ++++++
{translations => po}/zh_CN/CMakeLists.txt | 0
po/zh_CN/bangarang.po | 2032 ++++++
reference/README | 1 +
reference/imdbqueryengine.cpp | 564 ++
reference/imdbqueryengine.h | 256 +
reference/scriptconsole.cpp | 153 +
reference/scriptconsole.h | 65 +
src/CMakeLists.txt | 138 +-
src/Messages.sh | 2 +-
src/actionsmanager.cpp | 1169 +++-
src/actionsmanager.h | 112 +-
src/audiosettings.cpp | 320 +
src/audiosettings.h | 86 +
src/bangarangapplication.cpp | 424 ++
src/bangarangapplication.h | 97 +
src/bangarangnotifieritem.cpp | 62 +
src/bangarangnotifieritem.h | 74 +
src/bookmarksmanager.cpp | 232 +
src/bookmarksmanager.h | 65 +
src/config-bangarang.h.cmake | 1 +
src/dbusobjects.cpp | 341 +
src/dbusobjects.h | 133 +
src/infobox.cpp | 159 +
src/{mediaview.h => infobox.h} | 45 +-
src/infoitemdelegate.cpp | 1041 +++
src/infoitemdelegate.h | 82 +
src/infoitemview.cpp | 67 +
src/{platform/cachelistengine.h => infoitemview.h} | 45 +-
src/infomanager.cpp | 1235 ++--
src/infomanager.h | 107 +-
src/main.cpp | 34 +-
src/mainwindow.cpp | 1477 +++--
src/mainwindow.h | 170 +-
src/mainwindow.ui | 7097 ++++++++++++++------
src/mediaitemdelegate.cpp | 678 ++-
src/mediaitemdelegate.h | 57 +-
src/medialistsettings.cpp | 384 ++
src/medialistsettings.h | 63 +
src/mediaview.cpp | 120 +-
src/mediaview.h | 23 +-
src/nowplayingdelegate.cpp | 535 ++-
src/nowplayingdelegate.h | 28 +-
src/nowplayingview.cpp | 82 +
src/{mediaview.h => nowplayingview.h} | 38 +-
src/platform/bangarangvideowidget.cpp | 107 +
src/platform/bangarangvideowidget.h | 93 +
src/platform/dbpediaquery.cpp | 269 +
src/platform/dbpediaquery.h | 58 +
src/platform/downloader.cpp | 77 +
src/platform/downloader.h | 52 +
src/platform/dvdlistengine.cpp | 109 -
src/platform/filelistengine.cpp | 406 --
src/platform/infofetchers/dbpediainfofetcher.cpp | 475 ++
src/platform/infofetchers/dbpediainfofetcher.h | 69 +
src/platform/infofetchers/feedinfofetcher.cpp | 207 +
src/platform/infofetchers/feedinfofetcher.h | 52 +
src/platform/infofetchers/filenameinfofetcher.cpp | 112 +
.../filenameinfofetcher.h} | 33 +-
src/platform/infofetchers/infofetcher.cpp | 173 +
src/platform/infofetchers/infofetcher.h | 99 +
src/platform/infofetchers/lastfminfofetcher.cpp | 524 ++
src/platform/infofetchers/lastfminfofetcher.h | 67 +
src/platform/infofetchers/tmdbinfofetcher.cpp | 540 ++
src/platform/infofetchers/tmdbinfofetcher.h | 65 +
src/platform/infofetchers/tvdbinfofetcher.cpp | 490 ++
src/platform/infofetchers/tvdbinfofetcher.h | 67 +
src/platform/infoitemmodel.cpp | 1112 +++
src/platform/infoitemmodel.h | 224 +
src/platform/listengine.cpp | 75 -
src/platform/listenginefactory.cpp | 316 -
src/platform/listenginefactory.h | 99 -
.../{ => listengines}/audioclipslistengine.cpp | 27 +-
.../{ => listengines}/audioclipslistengine.h | 0
.../{ => listengines}/audiostreamlistengine.cpp | 55 +-
.../{ => listengines}/audiostreamlistengine.h | 0
src/platform/{ => listengines}/cachelistengine.cpp | 9 +-
src/platform/{ => listengines}/cachelistengine.h | 0
src/platform/{ => listengines}/cdlistengine.cpp | 71 +-
src/platform/{ => listengines}/cdlistengine.h | 2 -
src/platform/listengines/dvdlistengine.cpp | 97 +
src/platform/{ => listengines}/dvdlistengine.h | 4 +-
src/platform/listengines/feedlistengine.cpp | 354 +
.../feedlistengine.h} | 35 +-
src/platform/listengines/filelistengine.cpp | 361 +
src/platform/{ => listengines}/filelistengine.h | 32 +-
src/platform/listengines/listengine.cpp | 129 +
src/platform/{ => listengines}/listengine.h | 47 +-
src/platform/listengines/listenginefactory.cpp | 210 +
src/platform/listengines/listenginefactory.h | 141 +
src/platform/listengines/medialistsengine.cpp | 513 ++
src/platform/{ => listengines}/medialistsengine.h | 3 +
src/platform/listengines/musiclistengine.cpp | 545 ++
src/platform/{ => listengines}/musiclistengine.h | 1 +
.../{ => listengines}/nepomuklistengine.cpp | 34 +-
src/platform/{ => listengines}/nepomuklistengine.h | 9 +-
.../{ => listengines}/savedlistsengine.cpp | 110 +-
src/platform/{ => listengines}/savedlistsengine.h | 0
src/platform/listengines/semanticslistengine.cpp | 368 +
.../{ => listengines}/semanticslistengine.h | 0
src/platform/listengines/taglistengine.cpp | 159 +
.../taglistengine.h} | 25 +-
src/platform/{ => listengines}/videolistengine.cpp | 737 ++-
src/platform/{ => listengines}/videolistengine.h | 2 +-
src/platform/mediaindexer.cpp | 204 +-
src/platform/mediaindexer.h | 25 +-
src/platform/mediaitemmodel.cpp | 593 ++-
src/platform/mediaitemmodel.h | 348 +-
src/platform/medialistsengine.cpp | 242 -
src/platform/mediaquery.cpp | 246 +-
src/platform/mediaquery.h | 105 +-
src/platform/mediavocabulary.cpp | 928 +++-
src/platform/mediavocabulary.h | 99 +-
src/platform/musiclistengine.cpp | 410 --
src/platform/nepomukwriter/CMakeLists.txt | 35 +-
src/platform/nepomukwriter/main.cpp | 632 +--
src/platform/nepomukwriter/nepomukwriter.cpp | 877 +++
src/platform/nepomukwriter/nepomukwriter.h | 44 +
src/platform/ontologyupdater.cpp | 440 ++
src/platform/ontologyupdater.h | 61 +
src/platform/playlist.cpp | 696 ++-
src/platform/playlist.h | 114 +-
src/platform/semanticslistengine.cpp | 196 -
src/platform/utilities.cpp | 882 ---
src/platform/utilities/artwork.cpp | 691 ++
src/platform/utilities/artwork.h | 64 +
src/platform/utilities/filetags.cpp | 844 +++
src/platform/{utilities.h => utilities/filetags.h} | 52 +-
src/platform/utilities/general.cpp | 446 ++
src/platform/utilities/general.h | 75 +
src/platform/utilities/mediaitems.cpp | 1485 ++++
src/platform/utilities/mediaitems.h | 55 +
src/platform/utilities/thread.cpp | 77 +
src/platform/utilities/thread.h | 48 +
src/platform/utilities/typechecks.cpp | 241 +
src/platform/utilities/typechecks.h | 55 +
.../{cachelistengine.h => utilities/utilities.h} | 32 +-
src/playlistview.cpp | 135 +
src/playlistview.h | 58 +
src/ratingdelegate.cpp | 66 +
.../cachelistengine.h => ratingdelegate.h} | 34 +-
src/savedlistsmanager.cpp | 137 +-
src/savedlistsmanager.h | 10 +-
src/sensiblewidgets.cpp | 79 +-
src/sensiblewidgets.h | 36 +-
src/starrating.cpp | 94 +
src/starrating.h | 86 +
src/videosettings.cpp | 582 ++-
src/videosettings.h | 112 +-
translations/CMakeLists.txt | 8 -
translations/bangarang.pot | 1106 ---
translations/de/bangarang.po | 1152 ----
translations/fr/bangarang.po | 1139 ----
translations/merge.sh | 11 -
translations/nl/bangarang.po | 1127 ----
translations/zh_CN/bangarang.po | 1113 ---
211 files changed, 66581 insertions(+), 15188 deletions(-)
diff --cc data/bangarang_play_cd.desktop
index 0b8e2f3,051d708..2fd139e
--- a/data/bangarang_play_cd.desktop
+++ b/data/bangarang_play_cd.desktop
@@@ -11,4 -11,6 +11,6 @@@ Icon=bangaran
Name=Play CD with Bangarang
Name[nl]=CD afspelen met Bangarang
Name[de]=CD mit Bangarang wiedergeben
+ Name[fr]=Lire le CD avec Bangarang
Name[zh_CN]=使用 Bangarang 播放 CD
-Name[lt]=Groti CD su Bangarang
++Name[lt]=Groti CD su Bangarang
diff --cc src/mainwindow.h
index 10c663a,922e15a..43ac125
--- a/src/mainwindow.h
+++ b/src/mainwindow.h
@@@ -37,8 -40,9 +40,9 @@@
#include <QAction>
#include <QDateTime>
#include <QMainWindow>
+ #include <kross/core/action.h>
-class MediaItem;
+struct MediaItem;
class MediaListProperties;
class MediaItemModel;
class MediaListCache;
diff --cc src/platform/listengines/listengine.h
index f3f3016,b904b6b..776b2a2
--- a/src/platform/listengines/listengine.h
+++ b/src/platform/listengines/listengine.h
@@@ -130,16 -131,48 +131,52 @@@ class ListEngine : public QThrea
* @param mediaList list of MediaItems whose information should be
* upated in the source.
*/
- virtual void updateSourceInfo(QList<MediaItem> mediaList)
+ virtual void updateSourceInfo(QList<MediaItem> mediaList, bool nepomukOnly = false)
{
Q_UNUSED(mediaList);
+ Q_UNUSED(nepomukOnly);
}
+
+ /**
+ * Stop execution at as soon as possible. Terminate after waitToTerminate millseconds.
+ */
+ void stop(unsigned long waitToTerminate = 0, bool quitEventLoop = false);
+
+ /**
+ * Resume execution if possible. This only works for ListEngines designed to resume execution
+ * after stop(0, false) was called.
+ */
+ void resume();
+
+ public Q_SLOTS:
+ virtual void downloadComplete(const KUrl &from, const KUrl &to)
+ {
+ Q_UNUSED(from);
+ Q_UNUSED(to);
+ }
+
+ virtual void listingComplete(const KUrl & url)
+ {
+ Q_UNUSED(url);
+ }
+
+ Q_SIGNALS:
+ void results(QString m_requestSignature, QList<MediaItem> mediaList, MediaListProperties m_mediaListProperties, bool done, QString m_subRequestSignature);
+ void updateMediaItems(QList<MediaItem> mediaList);
+ void updateMediaItem(MediaItem mediaItem);
+ void updateArtwork(QImage artworkImage, MediaItem mediaItem);
+ void updateMediaListPropertiesCategoryArtwork(QImage artworkImage, MediaItem mediaItem);
+ void download(const KUrl &from, const KUrl &to);
+ void listDir(const KUrl &url);
+ void updateStatus(QHash<QString, QVariant> updatedStatus);
+ void loadOtherEngine(const MediaListProperties &mediaListProperties, const QString &requestSignature, const QString &subRequestSignature);
+ Q_SIGNALS:
+ void results(QString m_requestSignature, QList<MediaItem> mediaList, MediaListProperties m_mediaListProperties, bool done, QString m_subRequestSignature);
+ void updateMediaItems(QList<MediaItem> mediaList);
+
protected:
+ ListEngineFactory * m_parent;
MediaListProperties m_mediaListProperties;
QString m_requestSignature;
QString m_subRequestSignature;
diff --cc src/platform/listengines/videolistengine.cpp
index 4709757,25a1bcc..acf716e
--- a/src/platform/listengines/videolistengine.cpp
+++ b/src/platform/listengines/videolistengine.cpp
@@@ -364,75 -465,132 +465,132 @@@ void VideoListEngine::run(
m_mediaListProperties.summary = i18np("1 episode", "%1 episodes", mediaList.count());
m_mediaListProperties.type = QString("Sources");
- } else if (engineArg.toLower() == "movies") {
+ }
+
+ //Retrieve Genres
+ if (engineArg.toLower() == "genres") {
MediaQuery query;
QStringList bindings;
- bindings.append(mediaVocabulary.mediaResourceBinding());
- bindings.append(mediaVocabulary.mediaResourceUrlBinding());
- bindings.append(mediaVocabulary.titleBinding());
- bindings.append(mediaVocabulary.durationBinding());
- bindings.append(mediaVocabulary.descriptionBinding());
- bindings.append(mediaVocabulary.videoSynopsisBinding());
- bindings.append(mediaVocabulary.ratingBinding());
- bindings.append(mediaVocabulary.releaseDateBinding());
- bindings.append(mediaVocabulary.videoAudienceRatingBinding());
bindings.append(mediaVocabulary.genreBinding());
- bindings.append(mediaVocabulary.artworkBinding());
- bindings.append(mediaVocabulary.videoWriterBinding());
- bindings.append(mediaVocabulary.videoDirectorBinding());
- bindings.append(mediaVocabulary.videoAssistantDirectorBinding());
- bindings.append(mediaVocabulary.videoProducerBinding());
- bindings.append(mediaVocabulary.videoActorBinding());
- bindings.append(mediaVocabulary.videoCinematographerBinding());
query.select(bindings, MediaQuery::Distinct);
query.startWhere();
- query.addCondition(mediaVocabulary.hasTypeVideoMovie(MediaQuery::Required));
- query.addCondition(mediaVocabulary.hasTitle(MediaQuery::Optional));
- query.addCondition(mediaVocabulary.hasDuration(MediaQuery::Optional));
- query.addCondition(mediaVocabulary.hasDescription(MediaQuery::Optional));
- query.addCondition(mediaVocabulary.hasVideoSynopsis(MediaQuery::Optional));
- query.addCondition(mediaVocabulary.hasRating(MediaQuery::Optional));
- query.addCondition(mediaVocabulary.hasReleaseDate(MediaQuery::Optional));
- query.addCondition(mediaVocabulary.hasVideoAudienceRating(MediaQuery::Optional));
- query.addCondition(mediaVocabulary.hasArtwork(MediaQuery::Optional));
- query.addCondition(mediaVocabulary.hasVideoWriter(MediaQuery::Optional));
- query.addCondition(mediaVocabulary.hasVideoDirector(MediaQuery::Optional));
- query.addCondition(mediaVocabulary.hasVideoAssistantDirector(MediaQuery::Optional));
- query.addCondition(mediaVocabulary.hasVideoProducer(MediaQuery::Optional));
- query.addCondition(mediaVocabulary.hasVideoActor(MediaQuery::Optional));
- query.addCondition(mediaVocabulary.hasVideoCinematographer(MediaQuery::Optional));
- if (!genre.isEmpty()) {
- query.addCondition(mediaVocabulary.hasGenre(MediaQuery::Required,
- genre,
- MediaQuery::Equal));;
- } else {
- query.addCondition(mediaVocabulary.hasGenre(MediaQuery::Optional));
- }
+ query.addCondition(mediaVocabulary.hasTypeAnyVideo(MediaQuery::Required));
+ query.addCondition(mediaVocabulary.hasGenre(MediaQuery::Required));
+ query.addLRIFilterConditions(engineFilterList, mediaVocabulary);
query.endWhere();
- QStringList orderByBindings;
- orderByBindings.append(mediaVocabulary.titleBinding());
- orderByBindings.append(mediaVocabulary.releaseDateBinding());
+ QStringList orderByBindings = bindings;
query.orderBy(orderByBindings);
-
+
Soprano::QueryResultIterator it = query.executeSelect(m_mainModel);
-
+
//Build media list from results
while( it.next() ) {
- MediaItem mediaItem = Utilities::mediaItemFromIterator(it, QString("Movie"));
- mediaList.append(mediaItem);
+ if (m_stop) {
+ return;
+ }
+ QString genre = it.binding("genre").literal().toString().trimmed();
+ if (!genre.isEmpty()) {
+ MediaItem mediaItem;
+ mediaItem.url = QString("video://sources?||genre=%1").arg(genre);
+ mediaItem.title = genre;
+ mediaItem.type = QString("Category");
+ mediaItem.fields["categoryType"] = QString("VideoGenre");
+ mediaItem.fields["title"] = genre;
+ mediaItem.fields["sourceLri"] = m_mediaListProperties.lri;
+ mediaItem.nowPlaying = false;
+ mediaItem.artwork = KIcon("flag-green");
+
+ mediaItem.addContext(i18n("Recently Played"), QString("semantics://recent?video||limit=4||genre=%1").arg(genre));
+ mediaItem.addContext(i18n("Highest Rated"), QString("semantics://highest?video||limit=4||genre=%1").arg(genre));
+ mediaItem.addContext(i18n("Frequently Played"), QString("semantics://frequent?video||limit=4||genre=%1").arg(genre));
+
+ mediaList.append(mediaItem);
+ }
}
- m_mediaListProperties.name = i18n("Movies");
- if (!genre.isEmpty()) {
- m_mediaListProperties.name = i18nc("%1=Genre of the movie", "Movies - %1", genre);
+ m_mediaListProperties.name = i18n("Genres");
+ m_mediaListProperties.summary = i18np("1 genre", "%1 genres", mediaList.count());
+ m_mediaListProperties.type = QString("Categories");
+ }
+
+ //Retrieve Actors
+ if (engineArg.toLower() == "actors") {
+ MediaQuery query;
+ QStringList bindings;
+ bindings.append(MediaVocabulary::resourceBindingForCategory("Actor"));
+ bindings.append(mediaVocabulary.videoActorBinding());
+ bindings.append(mediaVocabulary.videoActorDescriptionBinding());
+ bindings.append(mediaVocabulary.videoActorArtworkBinding());
+ bindings.append(mediaVocabulary.relatedToBinding());
+ query.select(bindings, MediaQuery::Distinct);
+ query.startWhere();
+ query.addCondition(mediaVocabulary.hasTypeAnyVideo(MediaQuery::Required));
+ query.addCondition(mediaVocabulary.hasVideoActor(MediaQuery::Required));
+ query.addCondition(mediaVocabulary.hasVideoActorDescription(MediaQuery::Optional));
+ query.addCondition(mediaVocabulary.hasVideoActorArtwork(MediaQuery::Optional));
+ query.addCondition(mediaVocabulary.hasRelatedTo(MediaVocabulary::resourceBindingForCategory("Actor"), MediaQuery::Optional));
+ query.addLRIFilterConditions(engineFilterList, mediaVocabulary);
+ query.endWhere();
+ QStringList orderByBindings(mediaVocabulary.videoActorBinding());
+ query.orderBy(orderByBindings);
+
+ Soprano::QueryResultIterator it = query.executeSelect(m_mainModel);
+
+ //Build media list from results
+ QStringList urls;
+ QHash<QString, QStringList> relatedTos;
+ while( it.next() ) {
+ if (m_stop) {
+ return;
+ }
+ QString actor = it.binding(mediaVocabulary.videoActorBinding()).literal().toString().trimmed();
+ if (!actor.isEmpty()) {
+ QString lri = QString("video://sources?||actor=%1").arg(actor);;
+ if (urls.indexOf(lri) == -1) {
+ MediaItem mediaItem;
+ mediaItem.url = lri;
+ mediaItem.title = actor;
+ mediaItem.type = QString("Category");
+ mediaItem.fields["categoryType"] = QString("Actor");
+ mediaItem.fields["title"] = actor;
+ mediaItem.fields["sourceLri"] = m_mediaListProperties.lri;
+ mediaItem.fields["description"] = it.binding(mediaVocabulary.videoActorDescriptionBinding()).literal().toString().trimmed();
+ mediaItem.fields["artworkUrl"] = it.binding(mediaVocabulary.videoActorArtworkBinding()).uri().toString();
+ relatedTos = Utilities::multiValueAppend(relatedTos, mediaItem.url, it.binding(mediaVocabulary.relatedToBinding()).uri().toString());
+ mediaItem.fields["relatedTo"] = relatedTos.value(mediaItem.url);
+ mediaItem.nowPlaying = false;
+ mediaItem.artwork = KIcon("view-media-artist");
+
+ mediaItem.addContext(i18n("Recently Played"), QString("semantics://recent?video||limit=4||actor=%1").arg(actor));
+ mediaItem.addContext(i18n("Highest Rated"), QString("semantics://highest?video||limit=4||actor=%1").arg(actor));
+ mediaItem.addContext(i18n("Frequently Played"), QString("semantics://frequent?video||limit=4||actor=%1").arg(actor));
+
+ mediaList.append(mediaItem);
+ urls.append(lri);
+ } else {
+ //Update multivalue fields for existing media item
+ MediaItem mediaItem = mediaList.at(urls.indexOf(lri));
+ relatedTos = Utilities::multiValueAppend(relatedTos, mediaItem.url, it.binding(mediaVocabulary.relatedToBinding()).uri().toString());
+ mediaItem.fields["relatedTo"] = relatedTos.value(mediaItem.url);
+ mediaList.replace(urls.indexOf(lri), mediaItem);
+ }
+ }
}
- m_mediaListProperties.summary = i18np("1 movie", "%1 movies", mediaList.count());
- m_mediaListProperties.type = QString("Sources");
- } else if (engineArg.toLower() == "genres") {
+ m_mediaListProperties.name = i18n("Actors");
+ m_mediaListProperties.summary = i18np("1 actor", "%1 actors", mediaList.count());
+ m_mediaListProperties.type = QString("Categories");
+ }
+
+ //Retrieve Directors
+ if (engineArg.toLower() == "directors") {
MediaQuery query;
QStringList bindings;
- bindings.append(mediaVocabulary.genreBinding());
+ bindings.append(MediaVocabulary::resourceBindingForCategory("Director"));
+ bindings.append(mediaVocabulary.videoDirectorBinding());
+ bindings.append(mediaVocabulary.videoDirectorDescriptionBinding());
+ bindings.append(mediaVocabulary.videoDirectorArtworkBinding());
+ bindings.append(mediaVocabulary.relatedToBinding());
query.select(bindings, MediaQuery::Distinct);
query.startWhere();
query.addCondition(mediaVocabulary.hasTypeAnyVideo(MediaQuery::Required));
diff --cc src/platform/playlist.cpp
index 0e94654,e5c24ee..24f0aaf
--- a/src/platform/playlist.cpp
+++ b/src/platform/playlist.cpp
@@@ -530,9 -624,38 +624,39 @@@ void Playlist::stateChanged(Phonon::Sta
}
if (newstate == Phonon::PlayingState || newstate == Phonon::PausedState) {
m_hadVideo = m_mediaObject->hasVideo();
+
+ /* The commented code below will be used to test phonon external subtitle support
+ * when phonon is updated to provide this function.
+ QString directoryPath = KUrl(m_nowPlaying->mediaItemAt(0).url).directory();
+ kDebug() << directoryPath;
+ QDir dir(directoryPath);
+ dir.setNameFilters(QStringList("*.srt"));
+ QStringList dirList = dir.entryList(QDir::Files, QDir::Name);;
+ if (dirList.count() > 0) {
+ kDebug() << dirList.at(0);
+ QHash<QByteArray, QVariant> properties;
+ properties.insert("type", "file");
+ properties.insert("name", directoryPath + QString("/") +dirList.at(0));
+ int newSubtitleId = m_mediaController->availableSubtitles().count();
+ Phonon::SubtitleDescription newSubtitle(newSubtitleId, properties);
+ m_mediaController->setCurrentSubtitle(newSubtitle);
+ }
+
+ QList<Phonon::SubtitleDescription> subtitles = m_mediaController->availableSubtitles();
+ foreach (Phonon::SubtitleDescription cur, subtitles) {
+ kDebug() << cur.name();
+ }*/
+
+ }
+
+ //NOTE: In KDE 4.6, below is not the correct way to disable power saving.
+ //TODO: Update to use new Solid power status api in KDE 4.6 and later.
+ bool isKDE46OrGreater = false;
+ if ((KDE::versionMinor() >= 5) && (KDE::versionRelease() >= 90)) {
+ isKDE46OrGreater = true;
}
+
QDBusInterface iface(
"org.kde.kded",
"/modules/powerdevil",
--
bangarang packaging
More information about the pkg-kde-commits
mailing list