[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [kdeplasma-addons] /: Port potd (picture of the day) dataengine to KF5.
From: Weng Xuetian <wengxt () gmail ! com>
Date: 2016-11-15 19:19:48
Message-ID: E1c6jGm-0008P8-3u () code ! kde ! org
[Download RAW message or body]
Git commit 30c8cd5bb57dab0e4d49dc76354f912aef02fc7e by Weng Xuetian.
Committed on 15/11/2016 at 19:19.
Pushed by xuetianweng into branch 'master'.
Port potd (picture of the day) dataengine to KF5.
Summary:
Osei site was discontinued, replace it with its successor which is also \
from NOAA. Also fix flickr, wikipedia, national geography provider, which \
are broken becauses of changes from providers. Use KPluginLoader to load \
plugin instead of KServiceTypeTrader.
Test Plan: Manually with plasmaengineexplorer
Reviewers: #plasma, mart
Reviewed By: mart
Subscribers: plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D3183
M +1 -1 CMakeLists.txt
M +1 -1 dataengines/CMakeLists.txt
M +46 -33 dataengines/potd/CMakeLists.txt
M +2 -2 dataengines/potd/PoTD-list.txt
M +7 -5 dataengines/potd/apodprovider.cpp
M +6 -4 dataengines/potd/cachedprovider.cpp
M +7 -5 dataengines/potd/epodprovider.cpp
M +18 -9 dataengines/potd/flickrprovider.cpp
M +1 -0 dataengines/potd/flickrprovider.h
M +15 -9 dataengines/potd/natgeoprovider.cpp
C +33 -28 dataengines/potd/noaaprovider.cpp [from: \
dataengines/potd/natgeoprovider.cpp - 057% similarity] A +10 -0 \
dataengines/potd/noaaprovider.desktop R +12 -12 \
dataengines/potd/noaaprovider.h [from: dataengines/potd/oseiprovider.h - \
072% similarity] D +0 -89 dataengines/potd/oseiprovider.cpp
D +0 -100 dataengines/potd/oseiprovider.desktop
D +0 -41 dataengines/potd/plasma_potd_export.h
M +29 -16 dataengines/potd/potd.cpp
M +3 -5 dataengines/potd/potd.h
M +1 -5 dataengines/potd/potdprovider.h
M +8 -5 dataengines/potd/wcpotdprovider.cpp
M +1 -0 wallpapers/CMakeLists.txt
http://commits.kde.org/kdeplasma-addons/30c8cd5bb57dab0e4d49dc76354f912aef02fc7e
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 60c743f..8d8a555 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -23,7 +23,7 @@ set(KF5_MIN_VERSION 5.8.0)
find_package(Qt5 ${REQUIRED_QT_VERSION} CONFIG REQUIRED Core Gui DBus \
Quick Qml Widgets X11Extras)
find_package(KF5 ${KF5_MIN_VERSION} REQUIRED COMPONENTS
- Activities Config ConfigWidgets CoreAddons I18n KIO KCMUtils Plasma \
Runner Service UnitConversion KDELibs4Support NewStuff Kross) + \
Activities Config ConfigWidgets CoreAddons I18n KIO KCMUtils Plasma Runner \
Service UnitConversion KDELibs4Support NewStuff Kross WebKit)
find_package(LibTaskManager CONFIG REQUIRED)
diff --git a/dataengines/CMakeLists.txt b/dataengines/CMakeLists.txt
index b568ee2..52f4782 100644
--- a/dataengines/CMakeLists.txt
+++ b/dataengines/CMakeLists.txt
@@ -4,6 +4,6 @@
# add_subdirectory(microblog)
# endif(QCA2_FOUND AND QJSON_FOUND AND QTOAUTH_FOUND)
#
-# add_subdirectory(potd)
+add_subdirectory(potd)
add_subdirectory(konsoleprofiles)
# add_subdirectory(konqprofiles)
diff --git a/dataengines/potd/CMakeLists.txt \
b/dataengines/potd/CMakeLists.txt index c5ade79..b13db87 100644
--- a/dataengines/potd/CMakeLists.txt
+++ b/dataengines/potd/CMakeLists.txt
@@ -3,10 +3,15 @@ set(potd_engine_SRCS
potd.cpp
)
-kde4_add_plugin(plasma_engine_potd ${potd_engine_SRCS} )
-target_link_libraries(plasma_engine_potd plasmapotdprovidercore \
${KDE4_KDEUI_LIBS} ${KDE4_PLASMA_LIBS} ) +add_library(plasma_engine_potd \
MODULE ${potd_engine_SRCS} ) +target_link_libraries(plasma_engine_potd \
plasmapotdprovidercore + KF5::Plasma
+ KF5::KIOCore
+)
+
+kcoreaddons_desktop_to_json(plasma_engine_potd \
plasma-dataengine-potd.desktop SERVICE_TYPES plasma-dataengine.desktop)
-install(TARGETS plasma_engine_potd DESTINATION ${PLUGIN_INSTALL_DIR} )
+install(TARGETS plasma_engine_potd DESTINATION \
${PLUGIN_INSTALL_DIR}/plasma/dataengine ) install(FILES \
plasma-dataengine-potd.desktop DESTINATION ${SERVICES_INSTALL_DIR} )
@@ -14,15 +19,15 @@ install(FILES plasma-dataengine-potd.desktop \
DESTINATION ${SERVICES_INSTALL_DIR}
set(potd_provider_core_SRCS
potdprovider.cpp
+ ${CMAKE_CURRENT_BINARY_DIR}/plasma_potd_export.h
)
-kde4_add_library( plasmapotdprovidercore SHARED ${potd_provider_core_SRCS} \
)
-target_link_libraries( plasmapotdprovidercore ${KDE4_KDEUI_LIBS} )
+add_library( plasmapotdprovidercore SHARED ${potd_provider_core_SRCS} )
+target_link_libraries( plasmapotdprovidercore Qt5::Gui KF5::CoreAddons )
set_target_properties( plasmapotdprovidercore PROPERTIES VERSION 1.0.0 \
SOVERSION 1 ) +generate_export_header(plasmapotdprovidercore BASE_NAME \
PLASMA_POTD EXPORT_FILE_NAME plasma_potd_export.h)
install( TARGETS plasmapotdprovidercore ${INSTALL_TARGETS_DEFAULT_ARGS} )
-install( FILES plasma_potdprovider.desktop DESTINATION \
${SERVICETYPES_INSTALL_DIR} )
-
########### plugins ###############
@@ -30,56 +35,64 @@ set( potd_flickr_provider_SRCS
flickrprovider.cpp
)
-kde4_add_plugin( plasma_potd_flickrprovider ${potd_flickr_provider_SRCS} )
-target_link_libraries( plasma_potd_flickrprovider plasmapotdprovidercore \
${KDE4_KIO_LIBS} ${KDE4_KDECORE_LIBS} ${QT_QTGUI_LIBRARY})
-install( TARGETS plasma_potd_flickrprovider DESTINATION \
${PLUGIN_INSTALL_DIR} )
-install( FILES flickrprovider.desktop DESTINATION ${SERVICES_INSTALL_DIR} \
) +add_library( plasma_potd_flickrprovider MODULE \
${potd_flickr_provider_SRCS} ) +target_link_libraries( \
plasma_potd_flickrprovider plasmapotdprovidercore KF5::KIOCore \
KF5::CoreAddons)
+kcoreaddons_desktop_to_json(plasma_potd_flickrprovider \
flickrprovider.desktop SERVICE_TYPES \
${CMAKE_CURRENT_SOURCE_DIR}/plasma_potdprovider.desktop) +
+install( TARGETS plasma_potd_flickrprovider DESTINATION \
${PLUGIN_INSTALL_DIR}/potd )
set( potd_apod_provider_SRCS
apodprovider.cpp
)
-kde4_add_plugin( plasma_potd_apodprovider ${potd_apod_provider_SRCS} )
-target_link_libraries( plasma_potd_apodprovider plasmapotdprovidercore \
${KDE4_KIO_LIBS} ${QT_QTGUI_LIBRARY} ${KDE4_KDECORE_LIBS})
-install( TARGETS plasma_potd_apodprovider DESTINATION \
${PLUGIN_INSTALL_DIR} )
-install( FILES apodprovider.desktop DESTINATION ${SERVICES_INSTALL_DIR} )
+add_library( plasma_potd_apodprovider MODULE ${potd_apod_provider_SRCS} )
+target_link_libraries( plasma_potd_apodprovider plasmapotdprovidercore \
KF5::KIOCore) +
+kcoreaddons_desktop_to_json(plasma_potd_apodprovider apodprovider.desktop \
SERVICE_TYPES ${CMAKE_CURRENT_SOURCE_DIR}/plasma_potdprovider.desktop) +
+install( TARGETS plasma_potd_apodprovider DESTINATION \
${PLUGIN_INSTALL_DIR}/potd )
set( potd_natgeo_provider_SRCS
natgeoprovider.cpp
)
-kde4_add_plugin( plasma_potd_natgeoprovider ${potd_natgeo_provider_SRCS} )
-target_link_libraries( plasma_potd_natgeoprovider plasmapotdprovidercore \
${KDE4_KIO_LIBS} ${QT_QTGUI_LIBRARY} ${KDE4_KDECORE_LIBS} \
${KDE4_KDEWEBKIT_LIBRARY})
-install( TARGETS plasma_potd_natgeoprovider DESTINATION \
${PLUGIN_INSTALL_DIR} )
-install( FILES natgeoprovider.desktop DESTINATION ${SERVICES_INSTALL_DIR} \
) +add_library( plasma_potd_natgeoprovider MODULE \
${potd_natgeo_provider_SRCS} ) +target_link_libraries( \
plasma_potd_natgeoprovider plasmapotdprovidercore KF5::KIOCore KF5::WebKit) \
+kcoreaddons_desktop_to_json(plasma_potd_natgeoprovider \
natgeoprovider.desktop SERVICE_TYPES \
${CMAKE_CURRENT_SOURCE_DIR}/plasma_potdprovider.desktop) +
+install( TARGETS plasma_potd_natgeoprovider DESTINATION \
${PLUGIN_INSTALL_DIR}/potd )
set( potd_epod_provider_SRCS
epodprovider.cpp
)
-kde4_add_plugin( plasma_potd_epodprovider ${potd_epod_provider_SRCS} )
-target_link_libraries( plasma_potd_epodprovider plasmapotdprovidercore \
${KDE4_KIO_LIBS} ${KDE4_KDECORE_LIBS} ${QT_QTGUI_LIBRARY})
-install( TARGETS plasma_potd_epodprovider DESTINATION \
${PLUGIN_INSTALL_DIR} )
-install( FILES epodprovider.desktop DESTINATION ${SERVICES_INSTALL_DIR} )
+add_library( plasma_potd_epodprovider MODULE ${potd_epod_provider_SRCS} )
+target_link_libraries( plasma_potd_epodprovider plasmapotdprovidercore \
KF5::KIOCore) +
+kcoreaddons_desktop_to_json(plasma_potd_epodprovider epodprovider.desktop \
SERVICE_TYPES ${CMAKE_CURRENT_SOURCE_DIR}/plasma_potdprovider.desktop)
+install( TARGETS plasma_potd_epodprovider DESTINATION \
${PLUGIN_INSTALL_DIR}/potd )
-set( potd_osei_provider_SRCS
- oseiprovider.cpp
+set( potd_noaa_provider_SRCS
+ noaaprovider.cpp
)
-kde4_add_plugin( plasma_potd_oseiprovider ${potd_osei_provider_SRCS} )
-target_link_libraries( plasma_potd_oseiprovider plasmapotdprovidercore \
${KDE4_KIO_LIBS} ${KDE4_KDECORE_LIBS} ${QT_QTGUI_LIBRARY} )
-install( TARGETS plasma_potd_oseiprovider DESTINATION \
${PLUGIN_INSTALL_DIR} )
-install( FILES oseiprovider.desktop DESTINATION ${SERVICES_INSTALL_DIR} )
+add_library( plasma_potd_noaaprovider MODULE ${potd_noaa_provider_SRCS} )
+target_link_libraries( plasma_potd_noaaprovider plasmapotdprovidercore \
KF5::KIOCore KF5::WebKit) +
+kcoreaddons_desktop_to_json(plasma_potd_noaaprovider noaaprovider.desktop \
SERVICE_TYPES ${CMAKE_CURRENT_SOURCE_DIR}/plasma_potdprovider.desktop)
+install( TARGETS plasma_potd_noaaprovider DESTINATION \
${PLUGIN_INSTALL_DIR}/potd )
set( potd_wcpotd_provider_SRCS
wcpotdprovider.cpp
)
-kde4_add_plugin( plasma_potd_wcpotdprovider ${potd_wcpotd_provider_SRCS} )
-target_link_libraries( plasma_potd_wcpotdprovider plasmapotdprovidercore \
${KDE4_KIO_LIBS} ${KDE4_KDECORE_LIBS} ${QT_QTGUI_LIBRARY} )
-install( TARGETS plasma_potd_wcpotdprovider DESTINATION \
${PLUGIN_INSTALL_DIR} )
-install( FILES wcpotdprovider.desktop DESTINATION ${SERVICES_INSTALL_DIR} \
) +add_library( plasma_potd_wcpotdprovider MODULE \
${potd_wcpotd_provider_SRCS} ) +target_link_libraries( \
plasma_potd_wcpotdprovider plasmapotdprovidercore KF5::KIOCore ) +
+kcoreaddons_desktop_to_json(plasma_potd_wcpotdprovider \
wcpotdprovider.desktop SERVICE_TYPES \
${CMAKE_CURRENT_SOURCE_DIR}/plasma_potdprovider.desktop) +
+install( TARGETS plasma_potd_wcpotdprovider DESTINATION \
${PLUGIN_INSTALL_DIR}/potd )
diff --git a/dataengines/potd/PoTD-list.txt \
b/dataengines/potd/PoTD-list.txt index 0b2f7b1..53b0fe0 100644
--- a/dataengines/potd/PoTD-list.txt
+++ b/dataengines/potd/PoTD-list.txt
@@ -17,9 +17,9 @@ http://www.ubcbotanicalgarden.org/potd/
http://epod.usra.edu/
RSS feed http://interglacial.com/rss/epod.rss
-* OSEI (Operational Significant Event Imagery)
+* NOAA
Image Of the Day ------------------------------------- DONE
-http://www.osei.noaa.gov/OSEIiod.html
+http://www.nnvl.noaa.gov/imageoftheday.php
* WCPoTD Wikimedia Commons Picture of The Day ---------- almost DONE (need \
to add the Credits URL below the pic) \
http://tools.wikimedia.de/~daniel/potd/potd.php
diff --git a/dataengines/potd/apodprovider.cpp \
b/dataengines/potd/apodprovider.cpp index 8271613..fdca54a 100644
--- a/dataengines/potd/apodprovider.cpp
+++ b/dataengines/potd/apodprovider.cpp
@@ -23,11 +23,9 @@
#include <QtCore/QRegExp>
#include <QtGui/QImage>
-#include <KDebug>
+#include <QDebug>
#include <kio/job.h>
-POTDPROVIDER_EXPORT_PLUGIN( ApodProvider, "ApodProvider", "" )
-
class ApodProvider::Private
{
public:
@@ -59,7 +57,7 @@ void ApodProvider::Private::pageRequestFinished( KJob \
*_job ) exp.setMinimal( true );
if ( exp.indexIn( data ) != -1 ) {
const QString sub = exp.cap(1);
- KUrl url( QString( QLatin1String( \
"http://antwrp.gsfc.nasa.gov/apod/%1" ) ).arg( sub ) ); + QUrl url( \
QString( QLatin1String( "http://antwrp.gsfc.nasa.gov/apod/%1" ) ).arg( sub \
) );
KIO::StoredTransferJob *imageJob = KIO::storedGet( url, \
KIO::NoReload, KIO::HideProgressInfo );
mParent->connect( imageJob, SIGNAL(finished(KJob*)), \
SLOT(imageRequestFinished(KJob*)) ); } else {
@@ -82,7 +80,7 @@ void ApodProvider::Private::imageRequestFinished( KJob \
*_job ) ApodProvider::ApodProvider( QObject *parent, const QVariantList \
&args ) : PotdProvider( parent, args ), d( new Private( this ) )
{
- KUrl url( QLatin1String( "http://antwrp.gsfc.nasa.gov/apod/" ) );
+ QUrl url( QLatin1String( "http://antwrp.gsfc.nasa.gov/apod/" ) );
KIO::StoredTransferJob *job = KIO::storedGet( url, KIO::NoReload, \
KIO::HideProgressInfo );
connect( job, SIGNAL(finished(KJob*)), \
SLOT(pageRequestFinished(KJob*)) ); }
@@ -97,3 +95,7 @@ QImage ApodProvider::image() const
return d->mImage;
}
+K_PLUGIN_FACTORY_WITH_JSON(ApodProviderFactory, "apodprovider.json", \
registerPlugin<ApodProvider>();) +
+#include "moc_apodprovider.cpp"
+#include "apodprovider.moc"
diff --git a/dataengines/potd/cachedprovider.cpp \
b/dataengines/potd/cachedprovider.cpp index 869c4c9..520c53e 100644
--- a/dataengines/potd/cachedprovider.cpp
+++ b/dataengines/potd/cachedprovider.cpp
@@ -23,11 +23,11 @@
#include <QtCore/QFileInfo>
#include <QtCore/QTimer>
#include <QtCore/QThreadPool>
+#include <QStandardPaths>
+#include <QDir>
#include <QtGui/QImage>
-#include <KDebug>
-
-#include <kstandarddirs.h>
+#include <QDebug>
LoadImageThread::LoadImageThread(const QString &filePath)
: m_filePath(filePath)
@@ -56,7 +56,9 @@ void SaveImageThread::run()
QString CachedProvider::identifierToPath( const QString &identifier )
{
- const QString dataDir = KStandardDirs::locateLocal( "cache", \
QLatin1String("plasma_engine_podt/") ); + const QString dataDir = \
QStandardPaths::writableLocation(QStandardPaths::CacheLocation) + \
QLatin1String("/plasma_engine_potd/"); + QDir d;
+ d.mkpath(dataDir);
return QString( dataDir + identifier );
}
diff --git a/dataengines/potd/epodprovider.cpp \
b/dataengines/potd/epodprovider.cpp index b3f44fd..6343ec9 100644
--- a/dataengines/potd/epodprovider.cpp
+++ b/dataengines/potd/epodprovider.cpp
@@ -23,11 +23,9 @@
#include <QtCore/QRegExp>
#include <QtGui/QImage>
-#include <KDebug>
+#include <QDebug>
#include <kio/job.h>
-POTDPROVIDER_EXPORT_PLUGIN( EpodProvider, "EpodProvider", "" )
-
class EpodProvider::Private
{
public:
@@ -60,7 +58,7 @@ void EpodProvider::Private::pageRequestFinished(KJob \
*_job)
int pos = exp.indexIn( data ) + pattern.length();
const QString sub = data.mid( pos-4, pattern.length()+6);
- KUrl url( QString(QLatin1String( "http://epod.usra.edu/.a/%1-pi" )) \
.arg(sub) ); + QUrl url( QString(QLatin1String( \
"http://epod.usra.edu/.a/%1-pi" )) .arg(sub) );
KIO::StoredTransferJob *imageJob = KIO::storedGet( url, KIO::NoReload, \
KIO::HideProgressInfo );
QObject::connect(imageJob, SIGNAL(finished(KJob*)), mParent, \
SLOT(imageRequestFinished(KJob*)) ); }
@@ -81,7 +79,7 @@ void EpodProvider::Private::imageRequestFinished( KJob \
*_job) EpodProvider::EpodProvider( QObject *parent, const QVariantList \
&args ) : PotdProvider( parent, args ), d( new Private( this ) )
{
- KUrl url( QLatin1String( "http://epod.usra.edu/blog/" ) );
+ QUrl url( QLatin1String( "http://epod.usra.edu/blog/" ) );
KIO::StoredTransferJob *job = KIO::storedGet( url, KIO::NoReload, \
KIO::HideProgressInfo );
connect( job, SIGNAL(finished(KJob*)), \
SLOT(pageRequestFinished(KJob*)) ); @@ -97,3 +95,7 @@ QImage \
EpodProvider::image() const return d->mImage;
}
+K_PLUGIN_FACTORY_WITH_JSON(EpodProviderFactory, "epodprovider.json", \
registerPlugin<EpodProvider>();) +
+#include "moc_epodprovider.cpp"
+#include "epodprovider.moc"
diff --git a/dataengines/potd/flickrprovider.cpp \
b/dataengines/potd/flickrprovider.cpp index c7eb249..6a05fa1 100644
--- a/dataengines/potd/flickrprovider.cpp
+++ b/dataengines/potd/flickrprovider.cpp
@@ -25,10 +25,10 @@
#include <QtGui/QImage>
#include <QXmlStreamReader>
-#include <KDebug>
+#include <QDebug>
#include <kio/job.h>
-POTDPROVIDER_EXPORT_PLUGIN( FlickrProvider, "FlickrProvider", "" )
+#define FLICKR_API_KEY "11829a470557ad8e10b02e80afacb3af"
class FlickrProvider::Private
{
@@ -58,7 +58,7 @@ void FlickrProvider::Private::pageRequestFinished( KJob \
*_job )
KIO::StoredTransferJob *job = static_cast<KIO::StoredTransferJob *>( \
_job ); if (job->error()) {
emit mParent->error( mParent );
- kDebug() << "pageRequestFinished error";
+ qDebug() << "pageRequestFinished error";
return;
}
@@ -80,7 +80,10 @@ void FlickrProvider::Private::pageRequestFinished( KJob \
*_job )
/* To be sure, decrement the date to two days \
earlier... @TODO */ mActualDate = mActualDate.addDays(-2);
- KUrl url( QLatin1String( \
"http://api.flickr.com/services/rest/?api_key=a902f4e74cf1e7bce231742d8ffb46b4&method=flickr.interestingness.getList&date=" \
) + mActualDate.toString( Qt::ISODate) ); + QUrl \
url(QLatin1String( "https://api.flickr.com/services/rest/")); + \
url.addQueryItem("api_key", FLICKR_API_KEY); + \
url.addQueryItem("method", "flickr.interestingness.getList"); + \
url.addQueryItem("date", \
mActualDate.toString(Qt::ISODate));
KIO::StoredTransferJob *pageJob = \
KIO::storedGet(url, KIO::NoReload, KIO::HideProgressInfo);
mParent->connect( pageJob, \
SIGNAL(finished(KJob*)), SLOT(pageRequestFinished(KJob*)) ); return;
@@ -103,11 +106,11 @@ void FlickrProvider::Private::pageRequestFinished( \
KJob *_job ) }
if (m_photoList.begin() != m_photoList.end()) {
- KUrl url( m_photoList.at(qrand() % m_photoList.size()) );
+ QUrl url( m_photoList.at(qrand() % m_photoList.size()) );
KIO::StoredTransferJob *imageJob = KIO::storedGet(url, \
KIO::NoReload, KIO::HideProgressInfo);
mParent->connect( imageJob, SIGNAL(finished(KJob*)), \
SLOT(imageRequestFinished(KJob*)) ); } else {
- kDebug() << "empty list";
+ qDebug() << "empty list";
}
}
@@ -127,9 +130,11 @@ FlickrProvider::FlickrProvider( QObject *parent, const \
QVariantList &args ) : PotdProvider( parent, args ), d( new Private( this \
) ) {
d->mActualDate = date();
- KUrl url(QLatin1String(
- "http://api.flickr.com/services/rest/?api_key=a902f4e74cf1e7bce231742d8ffb46b4&method=flickr.interestingness.getList&date="
- ) + date().toString( Qt::ISODate ) );
+
+ QUrl url(QLatin1String( "https://api.flickr.com/services/rest/"));
+ url.addQueryItem("api_key", FLICKR_API_KEY);
+ url.addQueryItem("method", "flickr.interestingness.getList");
+ url.addQueryItem("date", date().toString( Qt::ISODate ) );
KIO::StoredTransferJob *job = KIO::storedGet( url, KIO::NoReload, \
KIO::HideProgressInfo );
connect( job, SIGNAL(finished(KJob*)), \
SLOT(pageRequestFinished(KJob*)) ); }
@@ -144,3 +149,7 @@ QImage FlickrProvider::image() const
return d->mImage;
}
+K_PLUGIN_FACTORY_WITH_JSON(FlickrProviderFactory, "flickrprovider.json", \
registerPlugin<FlickrProvider>();) +
+#include "moc_flickrprovider.cpp"
+#include "flickrprovider.moc"
diff --git a/dataengines/potd/flickrprovider.h \
b/dataengines/potd/flickrprovider.h index 25c8561..cdd8521 100644
--- a/dataengines/potd/flickrprovider.h
+++ b/dataengines/potd/flickrprovider.h
@@ -23,6 +23,7 @@
#define FLICKRPROVIDER_H
#include "potdprovider.h"
+#include <kio/job.h>
/**
* This class grabs a random image from the flickr
diff --git a/dataengines/potd/natgeoprovider.cpp \
b/dataengines/potd/natgeoprovider.cpp index 364d533..090cad2 100644
--- a/dataengines/potd/natgeoprovider.cpp
+++ b/dataengines/potd/natgeoprovider.cpp
@@ -24,7 +24,7 @@
#include <QtCore/QRegExp>
#include <QtGui/QImage>
-#include <KDebug>
+#include <QDebug>
#include <KIO/Job>
#include <KWebPage>
@@ -32,8 +32,6 @@
#include <QWebElement>
#include <QWebElementCollection>
-POTDPROVIDER_EXPORT_PLUGIN( NatGeoProvider, "NatGeoProvider", "" )
-
class NatGeoProvider::Private
{
public:
@@ -45,7 +43,6 @@ class NatGeoProvider::Private
void pageRequestFinished( bool ok );
void imageRequestFinished( KJob* );
- void parsePage();
NatGeoProvider *mParent;
QImage mImage;
@@ -59,20 +56,25 @@ void NatGeoProvider::Private::pageRequestFinished( bool \
ok ) return;
}
- QWebElementCollection links = \
mPage->mainFrame()->documentElement().findAll( QLatin1String( \
"div.download_link a" ) ); + QWebElementCollection links = \
mPage->mainFrame()->findAllElements( QLatin1String( "meta" ) ); if ( \
links.count() < 1 ) { emit mParent->error( mParent );
return;
}
- const QString url = links.at(0).attribute( QLatin1String( "href" ) );
+ QString url;
+ for (int i = 0, e = links.count(); i < e; i++) {
+ if (links.at(i).attribute(QLatin1String("property")) == \
"og:image") { + url = \
links.at(i).attribute(QLatin1String("content")); + break;
+ }
+ }
if (url.isEmpty()) {
emit mParent->error( mParent );
return;
}
-
- KIO::StoredTransferJob *imageJob = KIO::storedGet( url, KIO::NoReload, \
KIO::HideProgressInfo ); + KIO::StoredTransferJob *imageJob = \
KIO::storedGet( QUrl(url), KIO::NoReload, \
KIO::HideProgressInfo );
mParent->connect( imageJob, SIGNAL(finished(KJob*)), \
SLOT(imageRequestFinished(KJob*)) ); }
@@ -91,7 +93,7 @@ void NatGeoProvider::Private::imageRequestFinished( KJob \
*_job ) NatGeoProvider::NatGeoProvider( QObject *parent, const \
QVariantList &args ) : PotdProvider( parent, args ), d( new Private( this \
) ) {
- const QUrl url( QLatin1String( \
"http://photography.nationalgeographic.com/photography/photo-of-the-day" ) \
); + const QUrl url( QLatin1String( \
"https://www.nationalgeographic.com/photography/photo-of-the-day" \
) );
connect( d->mPage, SIGNAL(loadFinished(bool)), this, \
SLOT(pageRequestFinished(bool)) ); d->mPage->mainFrame()->setUrl( url );
}
@@ -106,3 +108,7 @@ QImage NatGeoProvider::image() const
return d->mImage;
}
+K_PLUGIN_FACTORY_WITH_JSON(NatGeoProviderFactory, "natgeoprovider.json", \
registerPlugin<NatGeoProvider>();) +
+#include "natgeoprovider.moc"
+#include "moc_natgeoprovider.moc"
diff --git a/dataengines/potd/natgeoprovider.cpp \
b/dataengines/potd/noaaprovider.cpp similarity index 57%
copy from dataengines/potd/natgeoprovider.cpp
copy to dataengines/potd/noaaprovider.cpp
index 364d533..3886695 100644
--- a/dataengines/potd/natgeoprovider.cpp
+++ b/dataengines/potd/noaaprovider.cpp
@@ -1,7 +1,6 @@
/*
- * Copyright 2007 Tobias Koenig <tokoe@kde.org>
- * Copyright 2008 Anne-Marie Mahfouf <annma@kde.org>
- * Copyright 2013 Aaron Seigo <aseigo@kde.org>
+ * Copyright (C) 2007 Tobias Koenig <tokoe@kde.org>
+ * Copyright 2008 by Anne-Marie Mahfouf <annma@kde.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -19,90 +18,96 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
-#include "natgeoprovider.h"
+#include "noaaprovider.h"
#include <QtCore/QRegExp>
#include <QtGui/QImage>
-#include <KDebug>
-#include <KIO/Job>
-
+#include <QDebug>
+#include <kio/job.h>
#include <KWebPage>
#include <QWebFrame>
-#include <QWebElement>
#include <QWebElementCollection>
-POTDPROVIDER_EXPORT_PLUGIN( NatGeoProvider, "NatGeoProvider", "" )
-
-class NatGeoProvider::Private
+class NOAAProvider::Private
{
public:
- Private( NatGeoProvider *parent )
+ Private( NOAAProvider *parent )
: mParent( parent ),
mPage( new KWebPage( parent, KWebPage::KIOIntegration ) )
{
}
- void pageRequestFinished( bool ok );
+ void pageRequestFinished( bool );
void imageRequestFinished( KJob* );
void parsePage();
- NatGeoProvider *mParent;
+ NOAAProvider *mParent;
QImage mImage;
KWebPage *mPage;
};
-void NatGeoProvider::Private::pageRequestFinished( bool ok )
+void NOAAProvider::Private::pageRequestFinished( bool ok )
{
if ( !ok ) {
- emit mParent->error( mParent );
- return;
+ emit mParent->error( mParent );
+ return;
}
- QWebElementCollection links = \
mPage->mainFrame()->documentElement().findAll( QLatin1String( \
"div.download_link a" ) ); + QWebElementCollection links = \
mPage->mainFrame()->findAllElements( QLatin1String( "script" ) ); if ( \
links.count() < 1 ) { emit mParent->error( mParent );
return;
}
- const QString url = links.at(0).attribute( QLatin1String( "href" ) );
+ QString url;
+ for (int i = 0, e = links.count(); i < e; i++) {
+ const auto text = links.at(i).toPlainText();
+ if (text.startsWith("_curPic = ")) {
+ url = "http://www.nnvl.noaa.gov/" + text.mid(10);
+ break;
+ }
+ }
if (url.isEmpty()) {
emit mParent->error( mParent );
return;
}
-
- KIO::StoredTransferJob *imageJob = KIO::storedGet( url, KIO::NoReload, \
KIO::HideProgressInfo ); + KIO::StoredTransferJob *imageJob = \
KIO::storedGet( QUrl(url), KIO::NoReload, \
KIO::HideProgressInfo );
mParent->connect( imageJob, SIGNAL(finished(KJob*)), \
SLOT(imageRequestFinished(KJob*)) ); }
-void NatGeoProvider::Private::imageRequestFinished( KJob *_job )
+void NOAAProvider::Private::imageRequestFinished( KJob *_job )
{
KIO::StoredTransferJob *job = static_cast<KIO::StoredTransferJob *>( \
_job ); if ( job->error() ) {
- emit mParent->error( mParent );
- return;
+ emit mParent->error( mParent );
+ return;
}
mImage = QImage::fromData( job->data() );
emit mParent->finished( mParent );
}
-NatGeoProvider::NatGeoProvider( QObject *parent, const QVariantList &args \
) +NOAAProvider::NOAAProvider( QObject *parent, const QVariantList &args )
: PotdProvider( parent, args ), d( new Private( this ) )
{
- const QUrl url( QLatin1String( \
"http://photography.nationalgeographic.com/photography/photo-of-the-day" ) \
); + QUrl url( QLatin1String( \
"http://www.nnvl.noaa.gov/imageoftheday.php" ) );
connect( d->mPage, SIGNAL(loadFinished(bool)), this, \
SLOT(pageRequestFinished(bool)) ); d->mPage->mainFrame()->setUrl( url );
}
-NatGeoProvider::~NatGeoProvider()
+NOAAProvider::~NOAAProvider()
{
delete d;
}
-QImage NatGeoProvider::image() const
+QImage NOAAProvider::image() const
{
return d->mImage;
}
+K_PLUGIN_FACTORY_WITH_JSON(NOAAProviderFactory, "noaaprovider.json", \
registerPlugin<NOAAProvider>();) +
+#include "moc_noaaprovider.cpp"
+#include "noaaprovider.moc"
diff --git a/dataengines/potd/noaaprovider.desktop \
b/dataengines/potd/noaaprovider.desktop new file mode 100644
index 0000000..aa40142
--- /dev/null
+++ b/dataengines/potd/noaaprovider.desktop
@@ -0,0 +1,10 @@
+[Desktop Entry]
+Type=Service
+X-KDE-ServiceTypes=PlasmaPoTD/Plugin
+X-KDE-Library=plasma_potd_noaaprovider
+X-KDE-PlasmaPoTDProvider-SuffixType=Date
+X-KDE-PlasmaPoTDProvider-Identifier=noaa
+Icon=
+
+Name=NOAA Environmental Visualization Laboratory Picture of the Day
+Comment=NOAA Provider
diff --git a/dataengines/potd/oseiprovider.h \
b/dataengines/potd/noaaprovider.h similarity index 72%
rename from dataengines/potd/oseiprovider.h
rename to dataengines/potd/noaaprovider.h
index 384a76c..23e19b9 100644
--- a/dataengines/potd/oseiprovider.h
+++ b/dataengines/potd/noaaprovider.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) 2007 Tobias Koenig <tokoe@kde.org>
- * Copyright 2008 by Anne-Marie Mahfouf <annma@kde.org> \
+ * Copyright 2008 by Anne-Marie Mahfouf <annma@kde.org>
+ * Copyright 2016 Weng Xuetian <wengxt@gmail.com>
*
* This program is free software; you can redistribute it and/or modify \
* it under the terms of the GNU General Public License as published by \
@@ -18,34 +19,33 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
-#ifndef OSEIPROVIDER_H
-#define OSEIPROVIDER_H
+#ifndef NOAAPROVIDER_H
+#define NOAAPROVIDER_H
#include "potdprovider.h"
/**
- * This class provides the image for OSEI
- * "Operational Significant Event Imagery"
+ * This class provides the image for NOAA Environmental Visualization \
Laboratory
* Picture Of the Day
- * located at http://www.osei.noaa.gov/OSEIiod.html.
+ * located at http://www.nnvl.noaa.gov/imageoftheday.php.
*/
-class OseiProvider : public PotdProvider
+class NOAAProvider : public PotdProvider
{
Q_OBJECT
public:
/**
- * Creates a new OSEI provider.
+ * Creates a new NOAA provider.
*
* @param date The date for which the image shall be fetched.
* @param parent The parent object.
*/
- OseiProvider( QObject *parent, const QVariantList &args );
+ NOAAProvider( QObject *parent, const QVariantList &args );
/**
- * Destroys the OSEI provider.
+ * Destroys the NOAA provider.
*/
- ~OseiProvider();
+ ~NOAAProvider();
/**
* Returns the requested image.
@@ -59,7 +59,7 @@ class OseiProvider : public PotdProvider
class Private;
Private* const d;
- Q_PRIVATE_SLOT( d, void pageRequestFinished( KJob* ) )
+ Q_PRIVATE_SLOT( d, void pageRequestFinished( bool ) )
Q_PRIVATE_SLOT( d, void imageRequestFinished( KJob* ) )
};
diff --git a/dataengines/potd/oseiprovider.cpp \
b/dataengines/potd/oseiprovider.cpp deleted file mode 100644
index 6205597..0000000
--- a/dataengines/potd/oseiprovider.cpp
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Copyright (C) 2007 Tobias Koenig <tokoe@kde.org>
- * Copyright 2008 by Anne-Marie Mahfouf <annma@kde.org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-
-#include "oseiprovider.h"
-
-#include <QtCore/QRegExp>
-#include <QtGui/QImage>
-
-#include <KDebug>
-#include <kio/job.h>
-
-POTDPROVIDER_EXPORT_PLUGIN( OseiProvider, "OseiProvider", "" )
-
-class OseiProvider::Private
-{
- public:
- Private( OseiProvider *parent )
- : mParent( parent )
- {
- }
-
- void pageRequestFinished( KJob* );
- void imageRequestFinished( KJob* );
- void parsePage();
-
- OseiProvider *mParent;
- QImage mImage;
-};
-
-void OseiProvider::Private::pageRequestFinished( KJob *_job )
-{
- KIO::StoredTransferJob *job = static_cast<KIO::StoredTransferJob *>( \
_job );
- if ( job->error() ) {
- emit mParent->error( mParent );
- return;
- }
- // TODO check if this location is always the one for the picture with \
the same name
- KUrl url( QLatin1String( "http://www.osei.noaa.gov/IOD/OSEIiod.jpg" ) \
);
- KIO::StoredTransferJob *imageJob = KIO::storedGet( url, KIO::NoReload, \
KIO::HideProgressInfo );
- mParent->connect( imageJob, SIGNAL(finished(KJob*)), \
SLOT(imageRequestFinished(KJob*)) );
-}
-
-void OseiProvider::Private::imageRequestFinished( KJob *_job )
-{
- KIO::StoredTransferJob *job = static_cast<KIO::StoredTransferJob *>( \
_job );
- if ( job->error() ) {
- emit mParent->error( mParent );
- return;
- }
-
- mImage = QImage::fromData( job->data() );
- emit mParent->finished( mParent );
-}
-
-OseiProvider::OseiProvider( QObject *parent, const QVariantList &args )
- : PotdProvider( parent, args ), d( new Private( this ) )
-{
- KUrl url( QLatin1String( "http://www.osei.noaa.gov/OSEIiod.html" ) );
- KIO::StoredTransferJob *job = KIO::storedGet( url, KIO::NoReload, \
KIO::HideProgressInfo );
- connect( job, SIGNAL(finished(KJob*)), \
SLOT(pageRequestFinished(KJob*)) );
-}
-
-OseiProvider::~OseiProvider()
-{
- delete d;
-}
-
-QImage OseiProvider::image() const
-{
- return d->mImage;
-}
-
diff --git a/dataengines/potd/oseiprovider.desktop \
b/dataengines/potd/oseiprovider.desktop deleted file mode 100644
index 4a10c8f..0000000
--- a/dataengines/potd/oseiprovider.desktop
+++ /dev/null
@@ -1,100 +0,0 @@
-[Desktop Entry]
-Type=Service
-X-KDE-ServiceTypes=PlasmaPoTD/Plugin
-X-KDE-Library=plasma_potd_oseiprovider
-X-KDE-PlasmaPoTDProvider-SuffixType=Date
-X-KDE-PlasmaPoTDProvider-Identifier=osei
-Icon=
-
-Name=Operational Significant Event Imagery Picture of the Day
-Name[bs]=Slika dana operacijskog značajnog Događaja
-Name[ca]=Imatge operacional d'esdeveniment rellevant del dia
-Name[ca@valencia]=Imatge operacional d'esdeveniment rellevant del dia
-Name[cs]=Obrázek dne z Operational Significant Event Imagery
-Name[da]=Dagens billede fra Operational Significant Event Imagery
-Name[de]=Bild des Tages der Operational Significant Event Imagery
-Name[el]=Operational Significant Event Imagery φωτογραφία της \
ημέρας
-Name[en_GB]=Operational Significant Event Imagery Picture of the Day
-Name[es]=Imagen de OSEI (acontecimientos significativos) del día
-Name[et]=Tähtsündmuse päevapilt
-Name[fi]=Operational Significant Event Imagery – päivän kuva
-Name[fr]=Image opérationnelle d'un évènement significatif du jour
-Name[ga]=Grianghraf an Lae ó OSEI
-Name[gl]=Imaxe do día de Operational Significant Event Imagery
-Name[hr]=Slika dana na Operational Significant Event Imagery
-Name[hu]=A nap képe az Operational Significant Event Imagery-n
-Name[it]=Operational Significant Event Imagery Picture of the Day
-Name[kk]=Operational Significant Event Imagery (Osei) "Тәулік \
суреті"
-Name[km]=រូបភាពសមើលស្រមៃព្រឹ \
ត្តិការណ៍ដ៏មានសារៈសំខាន់នៃប្រតិបត្តិការណ៍នៃថ្ងៃ
-Name[ko]=오늘의 중요한 사건 그림
-Name[lt]=Dienos paveikslėlis apie reikšmingą įvykį
-Name[lv]=Operational Significant Event Imagery dienas attēls
-Name[mr]=ऑपरेशनल सिग्निफिकंट \
इव्हेन्ट इमेजरी दिवसाचे \
चित्र
-Name[nb]=Dagens bilde om betydelige miljøhendelser
-Name[nds]=Operational Significant Event Imagery (OSEI)-Bild för Vundaag
-Name[nl]=Afbeelding van de dag uit de operationele belangrijke \
gebeurtenissen-bedenksels
-Name[nn]=Dagens viktige miljøhending-bilete
-Name[pl]=Obraz dnia Operational Significant Event Imagery
-Name[pt]=Imagem do Dia para Eventos Operacionais Significativos
-Name[pt_BR]=Imagem do dia para eventos operacionais significativos
-Name[ru]=Значимые события: Изображение Дня
-Name[sk]=Obrázok dňa z Operational Significant Event Imagery
-Name[sl]=Slika dneva z Operational Significant Event Imagery
-Name[sr]=ОСЕИ‑јева слика дана
-Name[sr@ijekavian]=ОСЕИ‑јева слика дана
-Name[sr@ijekavianlatin]=OSEI‑jeva slika dana
-Name[sr@latin]=OSEI‑jeva slika dana
-Name[sv]=Dagens bild av operationellt signifikant händelse
-Name[tr]=Anlamlı İşlemsel Olayla İlgili Günün Resmi
-Name[uk]=Зображення дня Operational Significant Event Imagery
-Name[x-test]=xxOperational Significant Event Imagery Picture of the Dayxx
-Name[zh_CN]=每日一图(人类环境重大事件图集)
-Name[zh_TW]=本日 Operational Significant Event Imagery 圖片
-Comment=Osei Provider
-Comment[ar]=المزود Osei
-Comment[bs]=Osei dobavljač
-Comment[ca]=Proveïdor Osei
-Comment[ca@valencia]=Proveïdor Osei
-Comment[cs]=Poskytovatel Osei
-Comment[da]=Osei-udbyder.
-Comment[de]=Osei-Anbieter
-Comment[el]= άροχος Osei
-Comment[en_GB]=Osei Provider
-Comment[es]=Proveedor de Osei
-Comment[et]=Osei pakkuja
-Comment[fi]=Osei-tarjoaja
-Comment[fr]=Fournisseur OSEI
-Comment[ga]=Soláthraí OSEI
-Comment[gl]=Fornecedor de Osei
-Comment[hr]=Pružatelj Oseia
-Comment[hu]=Apod-szolgáltató
-Comment[is]=Osei þjónusta
-Comment[it]=Fornitore Osei
-Comment[ja]=Osei のプロバイダ
-Comment[kk]=Osei таратушысы
-Comment[km]=ក្រុម ៊ុនផ្ដល់ Osei
-Comment[ko]=OSEI 공급자
-Comment[lt]=Osei tiekėjas
-Comment[lv]=Osei piegādātājs
-Comment[mr]=ओसेइ पुरवि ाकर्ता
-Comment[nb]=Osei-leverandør
-Comment[nds]=Osei-Anbeder
-Comment[nl]=Osei-provider
-Comment[nn]=Osei-tilbydar
-Comment[pl]=Usługodawca Osei
-Comment[pt]=Fornecedor do Osei
-Comment[pt_BR]=Fornecedor Osei
-Comment[ro]=Furnizor Osei
-Comment[ru]=Источник данных Osei
-Comment[sk]=Poskytovateľ Osei
-Comment[sl]=Ponudnik Osei
-Comment[sr]=Добављач ОСЕИ‑ја
-Comment[sr@ijekavian]=Добављач ОСЕИ‑ја
-Comment[sr@ijekavianlatin]=Dobavljač OSEI‑ja
-Comment[sr@latin]=Dobavljač OSEI‑ja
-Comment[sv]=Tillhandahåll från Osei
-Comment[tr]=Osei Sağlayıcı
-Comment[uk]=Постачальник даних Osei
-Comment[x-test]=xxOsei Providerxx
-Comment[zh_CN]=Osei 提供方
-Comment[zh_TW]=Osei 提供者
diff --git a/dataengines/potd/plasma_potd_export.h \
b/dataengines/potd/plasma_potd_export.h deleted file mode 100644
index d850463..0000000
--- a/dataengines/potd/plasma_potd_export.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (C) 2007 Tobias Koenig <tokoe@kde.org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-
-#ifndef PLASMA_POTD_EXPORT_H
-#define PLASMA_POTD_EXPORT_H
-
-/* needed for KDE_EXPORT macros */
-#include <kdemacros.h>
-
-#if defined Q_OS_WIN
-#ifndef PLASMA_POTD_EXPORT
-# ifdef MAKE_PLASMAPOTDPROVIDERCORE_LIB
-# define PLASMA_POTD_EXPORT KDE_EXPORT
-# else
-# define PLASMA_POTD_EXPORT KDE_IMPORT
-# endif
-#endif
-
-#else /* UNIX*/
-
-/* export statements for unix */
-#define PLASMA_POTD_EXPORT KDE_EXPORT
-#endif
-
-#endif
diff --git a/dataengines/potd/potd.cpp b/dataengines/potd/potd.cpp
index 4e6dd14..77cb323 100644
--- a/dataengines/potd/potd.cpp
+++ b/dataengines/potd/potd.cpp
@@ -25,13 +25,13 @@
#include <QtCore/QTimer>
#include <QtCore/QThreadPool>
-#include <KDebug>
-#include <KServiceTypeTrader>
+#include <QDebug>
+#include <KPluginLoader>
+#include <KPluginMetaData>
#include <Plasma/DataContainer>
#include "cachedprovider.h"
-#include "kstandarddirs.h"
PotdEngine::PotdEngine( QObject* parent, const QVariantList& args )
: Plasma::DataEngine( parent, args )
@@ -45,20 +45,23 @@ PotdEngine::PotdEngine( QObject* parent, const \
QVariantList& args ) // every 2 seconds (!)
m_checkDatesTimer->setInterval( 10 * 60 * 1000 ); // check every 10 \
minutes m_checkDatesTimer->start();
-}
-PotdEngine::~PotdEngine()
-{
+ const QVector<KPluginMetaData> plugins = \
KPluginLoader::findPlugins(QStringLiteral("potd"), [](const KPluginMetaData \
& md) { + return \
md.serviceTypes().contains(QStringLiteral("PlasmaPoTD/Plugin")); + });
+
+ for (const auto &metadata : plugins) {
+ QString provider = metadata.value(QLatin1String( \
"X-KDE-PlasmaPoTDProvider-Identifier" )); + if (provider.isEmpty()) \
{ + continue;
+ }
+ mFactories.insert(provider, metadata);
+ setData( QLatin1String( "Providers" ), provider, metadata.name() \
); + }
}
-void PotdEngine::init()
+PotdEngine::~PotdEngine()
{
- KService::List services = \
KServiceTypeTrader::self()->query(QLatin1String( \
"PlasmaPoTD/Plugin" ));
- Q_FOREACH ( const KService::Ptr &service, services ) {
- QString provider = service->property(QLatin1String( \
"X-KDE-PlasmaPoTDProvider-Identifier" ), \
QVariant::String).toString();
- mFactories.insert(provider, service);
- setData( QLatin1String( "Providers" ), provider, service->name() \
);
- }
}
bool PotdEngine::updateSourceEvent( const QString &identifier )
@@ -84,9 +87,13 @@ bool PotdEngine::updateSource( const QString \
&identifier, bool loadCachedAlways }
const QStringList parts = identifier.split( QLatin1Char( ':' ), \
QString::SkipEmptyParts ); + if (parts.empty()) {
+ qDebug() << "invalid identifier";
+ return false;
+ }
const QString providerName = parts[ 0 ];
if ( !mFactories.contains( providerName ) ) {
- kDebug() << "invalid provider: " << parts[ 0 ];
+ qDebug() << "invalid provider: " << parts[ 0 ];
return false;
}
@@ -95,14 +102,18 @@ bool PotdEngine::updateSource( const QString \
&identifier, bool loadCachedAlways if ( parts.count() > 1 ) {
const QDate date = QDate::fromString( parts[ 1 ], Qt::ISODate );
if ( !date.isValid() ) {
- kDebug() << "invalid date:" << parts[1];
+ qDebug() << "invalid date:" << parts[1];
return false;
}
args << date;
}
- PotdProvider *provider = qobject_cast<PotdProvider*>( mFactories[ \
providerName ]->createInstance<QObject>( this, args ) ); + auto factory \
= KPluginLoader(mFactories[ providerName ].fileName()).factory(); + \
PotdProvider *provider = nullptr; + if (factory) {
+ provider = factory->create<PotdProvider>(this, args);
+ }
if (provider) {
connect( provider, SIGNAL(finished(PotdProvider*)), this, \
SLOT(finished(PotdProvider*)) );
connect( provider, SIGNAL(error(PotdProvider*)), this, \
SLOT(error(PotdProvider*)) ); @@ -183,4 +194,6 @@ void \
PotdEngine::checkDayChanged() }
}
+K_EXPORT_PLASMA_DATAENGINE_WITH_JSON(potdengine, PotdEngine, \
"plasma-dataengine-potd.json")
+#include "potd.moc"
diff --git a/dataengines/potd/potd.h b/dataengines/potd/potd.h
index 3ff774c..46325bc 100644
--- a/dataengines/potd/potd.h
+++ b/dataengines/potd/potd.h
@@ -20,7 +20,8 @@
#ifndef POTD_DATAENGINE_H
#define POTD_DATAENGINE_H
-#include "plasma/dataengine.h"
+#include <Plasma/DataEngine>
+#include <KPluginMetaData>
class PotdProvider;
@@ -44,7 +45,6 @@ class PotdEngine : public Plasma::DataEngine
~PotdEngine();
protected:
- void init();
bool sourceRequestEvent( const QString &identifier );
protected Q_SLOTS:
@@ -59,11 +59,9 @@ class PotdEngine : public Plasma::DataEngine
private:
bool updateSource( const QString &identifier, bool \
loadCachedAlways );
- QMap<QString, KService::Ptr> mFactories;
+ QMap<QString, KPluginMetaData> mFactories;
QTimer *m_checkDatesTimer;
bool m_canDiscardCache;
};
-K_EXPORT_PLASMA_DATAENGINE(potd, PotdEngine)
-
#endif
diff --git a/dataengines/potd/potdprovider.h \
b/dataengines/potd/potdprovider.h index 3f4d308..6578c45 100644
--- a/dataengines/potd/potdprovider.h
+++ b/dataengines/potd/potdprovider.h
@@ -23,16 +23,12 @@
#include <QtCore/QObject>
#include <QtCore/QDate>
-#include <kpluginfactory.h>
+#include <KPluginFactory>
#include "plasma_potd_export.h"
class QImage;
-#define POTDPROVIDER_EXPORT_PLUGIN( classname, componentName, catalogName \
) \
- K_PLUGIN_FACTORY( classname ## Factory, registerPlugin< classname >(); \
) \
- K_EXPORT_PLUGIN( classname ## Factory( componentName, catalogName ) )
-
/**
* This class is an interface for PoTD providers.
*/
diff --git a/dataengines/potd/wcpotdprovider.cpp \
b/dataengines/potd/wcpotdprovider.cpp index c38afcc..63258f8 100644
--- a/dataengines/potd/wcpotdprovider.cpp
+++ b/dataengines/potd/wcpotdprovider.cpp
@@ -1,6 +1,7 @@
/*
* Copyright (C) 2007 Tobias Koenig <tokoe@kde.org>
* Copyright 2008 by Anne-Marie Mahfouf <annma@kde.org>
+ * Copyright 2016 Weng Xuetian <wengxt@gmail.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -23,11 +24,9 @@
#include <QtCore/QRegExp>
#include <QtGui/QImage>
-#include <KDebug>
+#include <QDebug>
#include <kio/job.h>
-POTDPROVIDER_EXPORT_PLUGIN( WcpotdProvider, "WcpotdProvider", "" )
-
class WcpotdProvider::Private
{
public:
@@ -52,7 +51,7 @@ void WcpotdProvider::Private::pageRequestFinished( KJob \
*_job ) return;
}
- KUrl picUrl( QLatin1String( \
"http://tools.wikimedia.de/~daniel/potd/potd.php/commons/800x600" ) ); \
KIO::StoredTransferJob *imageJob = KIO::storedGet( picUrl, KIO::NoReload, \
KIO::HideProgressInfo ); + QUrl picUrl( QLatin1String( \
"https://tools.wmflabs.org/potd-feed/potd.php/commons/full" ) ); \
KIO::StoredTransferJob *imageJob = KIO::storedGet( picUrl, KIO::NoReload, \
KIO::HideProgressInfo );
mParent->connect( imageJob, SIGNAL(finished(KJob*)), \
SLOT(imageRequestFinished(KJob*)) ); }
@@ -71,7 +70,7 @@ void WcpotdProvider::Private::imageRequestFinished( KJob \
*_job ) WcpotdProvider::WcpotdProvider( QObject *parent, const \
QVariantList &args ) : PotdProvider( parent, args ), d( new Private( this \
) ) {
- KUrl url( QLatin1String( \
"http://tools.wikimedia.de/~daniel/potd/potd.php/commons/800x600" )); + \
QUrl url( QLatin1String( \
"https://tools.wmflabs.org/potd-feed/potd.php/commons/full" ));
KIO::StoredTransferJob *job = KIO::storedGet( url, KIO::NoReload, \
KIO::HideProgressInfo );
connect( job, SIGNAL(finished(KJob*)), \
SLOT(pageRequestFinished(KJob*)) ); @@ -87,3 +86,7 @@ QImage \
WcpotdProvider::image() const return d->mImage;
}
+K_PLUGIN_FACTORY_WITH_JSON(WcpotdProviderFactory, "wcpotdprovider.json", \
registerPlugin<WcpotdProvider>();) +
+#include "wcpotdprovider.moc"
+#include "moc_wcpotdprovider.cpp"
diff --git a/wallpapers/CMakeLists.txt b/wallpapers/CMakeLists.txt
index efcb68a..98ebfdd 100644
--- a/wallpapers/CMakeLists.txt
+++ b/wallpapers/CMakeLists.txt
@@ -4,3 +4,4 @@
# plasma_install_package(animals org.kde.animals wallpapers wallpaper)
plasma_install_package(haenau org.kde.haenau wallpapers wallpaper)
plasma_install_package(hunyango org.kde.hunyango wallpapers wallpaper)
+plasma_install_package(potd org.kde.potd wallpapers wallpaper)
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic