drop qxml, port quotes from xml to json (xml has been used for qt4

branch)
This commit is contained in:
arcan1s 2015-05-28 09:16:27 +03:00
parent 8dc3510a30
commit b51c97abbb
6 changed files with 38 additions and 53 deletions

View File

@ -8,7 +8,7 @@ configure_file (metadata.desktop ${CMAKE_CURRENT_SOURCE_DIR}/package/metadata.de
find_package (ECM 0.0.12 REQUIRED NO_MODULE) find_package (ECM 0.0.12 REQUIRED NO_MODULE)
set (CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${ECM_MODULE_PATH} ${ECM_KDE_MODULE_DIR}) set (CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${ECM_MODULE_PATH} ${ECM_KDE_MODULE_DIR})
find_package (Qt5 REQUIRED COMPONENTS Core Network Qml Xml) find_package (Qt5 REQUIRED COMPONENTS Core Network Qml)
find_package (KF5 REQUIRED COMPONENTS I18n Notifications Plasma) find_package (KF5 REQUIRED COMPONENTS I18n Notifications Plasma)
include (KDEInstallDirs) include (KDEInstallDirs)

View File

@ -1,15 +1,9 @@
set (PLUGIN_NAME awplugin) set (PLUGIN_NAME awplugin)
add_definitions(-DTRANSLATION_DOMAIN=\"plasma_applet_org.kde.plasma.awesomewidget\") add_definitions(-DTRANSLATION_DOMAIN=\"plasma_applet_org.kde.plasma.awesomewidget\")
add_definitions (${Qt5Core_DEFINITIONS} ${Qt5Network_DEFINITIONS} ${Qt5Xml_DEFINITIONS}) add_definitions (${Qt5Core_DEFINITIONS} ${Qt5Network_DEFINITIONS})
set (Qt_INCLUDE ${Qt5Core_INCLUDE_DIRS} set (Qt_INCLUDE ${Qt5Core_INCLUDE_DIRS} ${Qt5Network_INCLUDE_DIRS} ${Qt5Qml_INCLUDE_DIRS})
${Qt5Network_INCLUDE_DIRS} set (Qt_LIBRARIES ${Qt5Core_LIBRARIES} ${Qt5Network_LIBRARIES} ${Qt5Qml_LIBRARIES})
${Qt5Qml_INCLUDE_DIRS}
${Qt5Xml_INCLUDE_DIRS})
set (Qt_LIBRARIES ${Qt5Core_LIBRARIES}
${Qt5Network_LIBRARIES}
${Qt5Qml_LIBRARIES}
${Qt5Xml_LIBRARIES})
set (Kf5_INCLUDE ${I18n_INCLUDE_DIR} set (Kf5_INCLUDE ${I18n_INCLUDE_DIR}
${Notifications_INCLUDE_DIR}) ${Notifications_INCLUDE_DIR})
set (Kf5_LIBRARIES KF5::I18n set (Kf5_LIBRARIES KF5::I18n

View File

@ -4,7 +4,7 @@ set (PLUGIN_NAME ${SUBPROJECT})
message (STATUS "Subproject ${SUBPROJECT}") message (STATUS "Subproject ${SUBPROJECT}")
# find required libaries # find required libaries
find_package (Qt5 REQUIRED COMPONENTS DBus Network Widgets Xml) find_package (Qt5 REQUIRED COMPONENTS DBus Network Widgets)
find_package (ECM 0.0.11 REQUIRED NO_MODULE) find_package (ECM 0.0.11 REQUIRED NO_MODULE)
set (CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${ECM_MODULE_PATH} ${ECM_KDE_MODULE_DIR}) set (CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${ECM_MODULE_PATH} ${ECM_KDE_MODULE_DIR})
find_package (KF5 REQUIRED COMPONENTS Plasma Service WindowSystem) find_package (KF5 REQUIRED COMPONENTS Plasma Service WindowSystem)
@ -14,9 +14,9 @@ include (KDECMakeSettings)
include (KDECompilerSettings) include (KDECompilerSettings)
add_definitions (${Qt5Core_DEFINITIONS} ${Qt5DBus_DEFINITIONS} add_definitions (${Qt5Core_DEFINITIONS} ${Qt5DBus_DEFINITIONS}
${Qt5Network_DEFINITIONS} ${Qt5Widgets_DEFINITIONS} ${Qt5Xml_DEFINITIONS}) ${Qt5Network_DEFINITIONS} ${Qt5Widgets_DEFINITIONS})
set (Qt_INCLUDE ${Qt5Core_INCLUDE_DIRS} ${Qt5DBus_INCLUDE_DIRS} set (Qt_INCLUDE ${Qt5Core_INCLUDE_DIRS} ${Qt5DBus_INCLUDE_DIRS}
${Qt5Network_INCLUDE_DIRS} ${Qt5Widgets_INCLUDE_DIRS} ${Qt5Xml_INCLUDE_DIRS}) ${Qt5Network_INCLUDE_DIRS} ${Qt5Widgets_INCLUDE_DIRS})
set (KDE_INCLUDE ${Plasma_INCLUDE_DIR}) set (KDE_INCLUDE ${Plasma_INCLUDE_DIR})
include_directories (${CMAKE_SOURCE_DIR} include_directories (${CMAKE_SOURCE_DIR}

View File

@ -20,8 +20,8 @@
#include <QDebug> #include <QDebug>
#include <QDir> #include <QDir>
#include <QDomDocument> #include <QJsonDocument>
#include <QDomElement> #include <QJsonParseError>
#include <QNetworkAccessManager> #include <QNetworkAccessManager>
#include <QNetworkRequest> #include <QNetworkRequest>
#include <QNetworkReply> #include <QNetworkReply>
@ -320,53 +320,39 @@ void ExtQuotes::quotesReplyReceived(QNetworkReply *reply)
{ {
if (debug) qDebug() << PDEBUG; if (debug) qDebug() << PDEBUG;
if (debug) qDebug() << PDEBUG << ":" << "Return code" << reply->error(); if (debug) qDebug() << PDEBUG << ":" << "Return code" << reply->error();
if (debug) qDebug() << PDEBUG << ":" << "Error message" << reply->errorString(); if (debug) qDebug() << PDEBUG << ":" << "Reply error message" << reply->errorString();
if (reply->error() != QNetworkReply::NoError) { QJsonParseError error;
QJsonDocument jsonDoc = QJsonDocument::fromJson(reply->readAll(), &error);
reply->deleteLater(); reply->deleteLater();
if (debug) qDebug() << PDEBUG << ":" << "Json parse error" << error.errorString();
if ((reply->error() != QNetworkReply::NoError) ||
(error.error != QJsonParseError::NoError)) {
return; return;
} }
QVariantMap jsonQuotes = jsonDoc.toVariant().toMap()[QString("query")].toMap();
QDomDocument doc; jsonQuotes = jsonQuotes[QString("results")].toMap()[QString("quote")].toMap();
if (!doc.setContent(reply)) { float value;
if (debug) qDebug() << PDEBUG << ":" << "Could not parse answer to XML";
return;
}
QDomNodeList fields;
// ask // ask
fields = doc.elementsByTagName(QString("Ask")); value = jsonQuotes[QString("Ask")].toString().toFloat();
for (int i=0; i<fields.size(); i++) {
float value = fields.item(i).toElement().text().toFloat();
if (debug) qDebug() << PDEBUG << "Found ask" << value;
values[QString("askchg")] = values[QString("ask")] == 0 ? 0.0 : value - values[QString("ask")]; values[QString("askchg")] = values[QString("ask")] == 0 ? 0.0 : value - values[QString("ask")];
values[QString("percaskchg")] = 100 * values[QString("askchg")] / values[QString("ask")]; values[QString("percaskchg")] = 100 * values[QString("askchg")] / values[QString("ask")];
values[QString("ask")] = value; values[QString("ask")] = value;
}
// bid // bid
fields = doc.elementsByTagName(QString("Bid")); value = jsonQuotes[QString("Bid")].toString().toFloat();
for (int i=0; i<fields.size(); i++) {
float value = fields.item(i).toElement().text().toFloat();
if (debug) qDebug() << PDEBUG << "Found bid" << value;
values[QString("bidchg")] = values[QString("bid")] == 0 ? 0.0 : value - values[QString("bid")]; values[QString("bidchg")] = values[QString("bid")] == 0 ? 0.0 : value - values[QString("bid")];
values[QString("percbidchg")] = 100 * values[QString("bidchg")] / values[QString("bid")]; values[QString("percbidchg")] = 100 * values[QString("bidchg")] / values[QString("bid")];
values[QString("bid")] = value; values[QString("bid")] = value;
}
// last trade // last trade
fields = doc.elementsByTagName(QString("LastTradePriceOnly")); value = jsonQuotes[QString("LastTradePriceOnly")].toString().toFloat();
for (int i=0; i<fields.size(); i++) {
float value = fields.item(i).toElement().text().toFloat();
if (debug) qDebug() << PDEBUG << "Found last trade" << value;
values[QString("pricechg")] = values[QString("price")] == 0 ? 0.0 : value - values[QString("price")]; values[QString("pricechg")] = values[QString("price")] == 0 ? 0.0 : value - values[QString("price")];
values[QString("percpricechg")] = 100 * values[QString("pricechg")] / values[QString("price")]; values[QString("percpricechg")] = 100 * values[QString("pricechg")] / values[QString("price")];
values[QString("price")] = value; values[QString("price")] = value;
} }
reply->deleteLater();
}
QString ExtQuotes::url() QString ExtQuotes::url()
{ {

View File

@ -21,7 +21,7 @@
#include <QDialog> #include <QDialog>
#include <QMap> #include <QMap>
#define YAHOO_URL "https://query.yahooapis.com/v1/public/yql?q=select * from yahoo.finance.quotes where symbol in (\"$TICKER\")&env=store://datatables.org/alltableswithkeys" #define YAHOO_URL "https://query.yahooapis.com/v1/public/yql?q=select * from yahoo.finance.quotes where symbol=\"$TICKER\"&env=store://datatables.org/alltableswithkeys&format=json"
class QNetworkReply; class QNetworkReply;

View File

@ -21,6 +21,7 @@
#include <QDebug> #include <QDebug>
#include <QDir> #include <QDir>
#include <QJsonDocument> #include <QJsonDocument>
#include <QJsonParseError>
#include <QSettings> #include <QSettings>
#include <QStandardPaths> #include <QStandardPaths>
#include <QTextCodec> #include <QTextCodec>
@ -392,7 +393,11 @@ void ExtScript::readJsonFilters()
QString jsonText = jsonFile.readAll(); QString jsonText = jsonFile.readAll();
jsonFile.close(); jsonFile.close();
QJsonDocument jsonDoc = QJsonDocument::fromJson(jsonText.toUtf8()); QJsonParseError error;
QJsonDocument jsonDoc = QJsonDocument::fromJson(jsonText.toUtf8(), &error);
if (debug) qDebug() << PDEBUG << ":" << "Json parse error" << error.errorString();
if (error.error != QJsonParseError::NoError)
return;
jsonFilters = jsonDoc.toVariant().toMap(); jsonFilters = jsonDoc.toVariant().toMap();
if (debug) qDebug() << PDEBUG << ":" << "Filters" << jsonFilters; if (debug) qDebug() << PDEBUG << ":" << "Filters" << jsonFilters;