[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