[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [nepomuktvnamer] service: Use KDirNotify to update tvshow:/latest automatically.
From: Sebastian Trueg <trueg () kde ! org>
Date: 2012-02-29 22:57:27
Message-ID: 20120229225727.CE2D3A60A9 () git ! kde ! org
[Download RAW message or body]
Git commit 35a6aa978300deab820415d4f35015281e7ba7ec by Sebastian Trueg.
Committed on 29/02/2012 at 23:55.
Pushed by trueg into branch 'master'.
Use KDirNotify to update tvshow:/latest automatically.
M +33 -0 service/tvnamerservice.cpp
M +1 -0 service/tvnamerservice.h
http://commits.kde.org/nepomuktvnamer/35a6aa978300deab820415d4f35015281e7ba7ec
diff --git a/service/tvnamerservice.cpp b/service/tvnamerservice.cpp
index e7884c9..e7f3ae0 100644
--- a/service/tvnamerservice.cpp
+++ b/service/tvnamerservice.cpp
@@ -24,6 +24,7 @@
#include <nepomuk/resourcewatcher.h>
#include <Nepomuk/Vocabulary/NFO>
#include <Nepomuk/Vocabulary/NMM>
+#include <Nepomuk/Vocabulary/NUAO>
#include <Nepomuk/File>
#include <Soprano/Model>
@@ -57,6 +58,14 @@ TVNamerService::TVNamerService(QObject *parent, const QVariantList &)
connect(watcher, SIGNAL(resourceTypeAdded(Nepomuk::Resource,Nepomuk::Types::Class)),
this, SLOT(slotTVShowResourceCreated(Nepomuk::Resource)));
watcher->start();
+
+ // set up the watcher for watched TV Shows
+ watcher = new Nepomuk::ResourceWatcher(this);
+ watcher->addType(NMM::TVShow());
+ watcher->addProperty(NUAO::usageCount());
+ connect(watcher, SIGNAL(propertyAdded(Nepomuk::Resource,Nepomuk::Types::Property,QVariant)),
+ this, SLOT(slotTVShowUsageCountChanged(Nepomuk::Resource)));
+ watcher->start();
}
TVNamerService::~TVNamerService()
@@ -95,6 +104,30 @@ void TVNamerService::slotTVShowResourceCreated(const Nepomuk::Resource &res)
}
}
+void TVNamerService::slotTVShowUsageCountChanged(const Nepomuk::Resource &res)
+{
+ // fetch the changed show's details and tell KIO to remove it in any case
+ Soprano::QueryResultIterator it
+ = mainModel()->executeQuery(QString::fromLatin1("select ?s ?e ?st ?t where { "
+ "%1 nmm:episodeNumber ?e ; "
+ "nmm:season ?s ; "
+ "nmm:series [ a nmm:TVSeries ; nie:title ?st ] ; "
+ "nie:title ?t . } LIMIT 1")
+ .arg(Soprano::Node::resourceToN3(res.resourceUri())),
+ Soprano::Query::QueryLanguageSparql);
+ if(it.next()) {
+ const QString title = i18n("Next episode of %1: %2x%3 - %4",
+ it["st"].toString(),
+ QString::number(it["s"].literal().toInt()).rightJustified(2, QLatin1Char('0')),
+ QString::number(it["e"].literal().toInt()).rightJustified(2, QLatin1Char('0')),
+ it["t"].toString());
+ org::kde::KDirNotify::emitFilesRemoved(QStringList() << (QLatin1String("tvshow:/latest/") + title));
+ }
+
+ // now simply tell KIO to check for added files
+ org::kde::KDirNotify::emitFilesAdded(QLatin1String("tvshow:/latest"));
+}
+
#include <kpluginfactory.h>
#include <kpluginloader.h>
diff --git a/service/tvnamerservice.h b/service/tvnamerservice.h
index 37afabf..f90ff12 100644
--- a/service/tvnamerservice.h
+++ b/service/tvnamerservice.h
@@ -40,6 +40,7 @@ public:
private Q_SLOTS:
void slotVideoResourceCreated(const Nepomuk::Resource& res, const QList<QUrl>& types);
void slotTVShowResourceCreated(const Nepomuk::Resource& res);
+ void slotTVShowUsageCountChanged(const Nepomuk::Resource& res);
};
#endif // TVNAMERSERVICE_H
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic