mirror of
https://github.com/arcan1s/awesome-widgets.git
synced 2025-07-01 07:55:53 +00:00
* create cppcheck and clangformat targets
* apply code style (#67) * send values by reference * fix warnings on plugin destruction by disconnecting dataengines first * fix invalid hddtemp group definition
This commit is contained in:
@ -3,13 +3,13 @@ message(STATUS "Subproject ${SUBPROJECT}")
|
||||
add_definitions(-DTRANSLATION_DOMAIN=\"plasma_applet_org.kde.plasma.awesomewidget\")
|
||||
|
||||
include_directories(
|
||||
${CMAKE_SOURCE_DIR}
|
||||
${CMAKE_BINARY_DIR}
|
||||
${CMAKE_CURRENT_BINARY_DIR}
|
||||
${CMAKE_CURRENT_BINARY_DIR}/../
|
||||
${PROJECT_TRDPARTY_DIR}
|
||||
${Qt_INCLUDE}
|
||||
${Kf5_INCLUDE}
|
||||
${CMAKE_SOURCE_DIR}
|
||||
${CMAKE_BINARY_DIR}
|
||||
${CMAKE_CURRENT_BINARY_DIR}
|
||||
${CMAKE_CURRENT_BINARY_DIR}/../
|
||||
${PROJECT_TRDPARTY_DIR}
|
||||
${Qt_INCLUDE}
|
||||
${Kf5_INCLUDE}
|
||||
)
|
||||
|
||||
file(GLOB SUBPROJECT_SOURCE *.cpp ${PROJECT_TRDPARTY_DIR}/qreplytimeout/*.cpp ${CMAKE_SOURCE_DIR}/*.cpp)
|
||||
|
@ -28,9 +28,9 @@
|
||||
|
||||
AbstractExtItem::AbstractExtItem(QWidget *parent, const QString desktopName,
|
||||
const QStringList directories)
|
||||
: QDialog(parent),
|
||||
m_fileName(desktopName),
|
||||
m_dirs(directories)
|
||||
: QDialog(parent)
|
||||
, m_fileName(desktopName)
|
||||
, m_dirs(directories)
|
||||
{
|
||||
qCDebug(LOG_LIB);
|
||||
qCDebug(LOG_LIB) << "Desktop name" << desktopName;
|
||||
@ -46,8 +46,7 @@ AbstractExtItem::~AbstractExtItem()
|
||||
}
|
||||
|
||||
|
||||
template <class T>
|
||||
T *AbstractExtItem::copy(const QString, const int)
|
||||
template <class T> T *AbstractExtItem::copy(const QString, const int)
|
||||
{
|
||||
qCDebug(LOG_LIB);
|
||||
|
||||
@ -56,7 +55,6 @@ T *AbstractExtItem::copy(const QString, const int)
|
||||
}
|
||||
|
||||
|
||||
|
||||
int AbstractExtItem::apiVersion() const
|
||||
{
|
||||
qCDebug(LOG_LIB);
|
||||
@ -198,7 +196,7 @@ void AbstractExtItem::readConfiguration()
|
||||
{
|
||||
qCDebug(LOG_LIB);
|
||||
|
||||
for (int i=m_dirs.count()-1; i>=0; i--) {
|
||||
for (int i = m_dirs.count() - 1; i >= 0; i--) {
|
||||
if (!QDir(m_dirs.at(i)).entryList(QDir::Files).contains(m_fileName))
|
||||
continue;
|
||||
QSettings settings(QString("%1/%2").arg(m_dirs.at(i)).arg(m_fileName),
|
||||
@ -207,9 +205,13 @@ void AbstractExtItem::readConfiguration()
|
||||
settings.beginGroup(QString("Desktop Entry"));
|
||||
setName(settings.value(QString("Name"), m_name).toString());
|
||||
setComment(settings.value(QString("Comment"), m_comment).toString());
|
||||
setApiVersion(settings.value(QString("X-AW-ApiVersion"), m_apiVersion).toInt());
|
||||
setActive(settings.value(QString("X-AW-Active"), QVariant(m_active)).toString() == QString("true"));
|
||||
setInterval(settings.value(QString("X-AW-Interval"), m_interval).toInt());
|
||||
setApiVersion(
|
||||
settings.value(QString("X-AW-ApiVersion"), m_apiVersion).toInt());
|
||||
setActive(settings.value(QString("X-AW-Active"), QVariant(m_active))
|
||||
.toString()
|
||||
== QString("true"));
|
||||
setInterval(
|
||||
settings.value(QString("X-AW-Interval"), m_interval).toInt());
|
||||
setNumber(settings.value(QString("X-AW-Number"), m_number).toInt());
|
||||
settings.endGroup();
|
||||
}
|
||||
@ -220,13 +222,14 @@ bool AbstractExtItem::tryDelete() const
|
||||
{
|
||||
qCDebug(LOG_LIB);
|
||||
|
||||
foreach(QString dir, m_dirs) {
|
||||
foreach (QString dir, m_dirs) {
|
||||
bool status = QFile::remove(QString("%1/%2").arg(dir).arg(m_fileName));
|
||||
qCInfo(LOG_LIB) << "Remove file" << QString("%1/%2").arg(dir).arg(m_fileName) << status;
|
||||
qCInfo(LOG_LIB) << "Remove file"
|
||||
<< QString("%1/%2").arg(dir).arg(m_fileName) << status;
|
||||
}
|
||||
|
||||
// check if exists
|
||||
foreach(QString dir, m_dirs)
|
||||
foreach (QString dir, m_dirs)
|
||||
if (QFile::exists(QString("%1/%2").arg(dir).arg(m_fileName)))
|
||||
return false;
|
||||
return true;
|
||||
@ -237,7 +240,8 @@ void AbstractExtItem::writeConfiguration() const
|
||||
{
|
||||
qCDebug(LOG_LIB);
|
||||
|
||||
QSettings settings(QString("%1/%2").arg(m_dirs.first()).arg(m_fileName), QSettings::IniFormat);
|
||||
QSettings settings(QString("%1/%2").arg(m_dirs.first()).arg(m_fileName),
|
||||
QSettings::IniFormat);
|
||||
qCInfo(LOG_LIB) << "Configuration file" << settings.fileName();
|
||||
|
||||
settings.beginGroup(QString("Desktop Entry"));
|
||||
|
@ -36,7 +36,8 @@ class AbstractExtItem : public QDialog
|
||||
Q_PROPERTY(QString uniq READ uniq)
|
||||
|
||||
public:
|
||||
explicit AbstractExtItem(QWidget *parent = nullptr, const QString desktopName = QString(),
|
||||
explicit AbstractExtItem(QWidget *parent = nullptr,
|
||||
const QString desktopName = QString(),
|
||||
const QStringList directories = QStringList());
|
||||
virtual ~AbstractExtItem();
|
||||
template <class T> T *copy(const QString, const int);
|
||||
|
@ -33,21 +33,24 @@ AbstractExtItemAggregator::AbstractExtItemAggregator(QWidget *parent)
|
||||
|
||||
dialog = new QDialog(this);
|
||||
widgetDialog = new QListWidget(dialog);
|
||||
dialogButtons = new QDialogButtonBox(QDialogButtonBox::Open | QDialogButtonBox::Close,
|
||||
Qt::Vertical, dialog);
|
||||
copyButton = dialogButtons->addButton(i18n("Copy"), QDialogButtonBox::ActionRole);
|
||||
createButton = dialogButtons->addButton(i18n("Create"), QDialogButtonBox::ActionRole);
|
||||
deleteButton = dialogButtons->addButton(i18n("Remove"), QDialogButtonBox::ActionRole);
|
||||
dialogButtons = new QDialogButtonBox(
|
||||
QDialogButtonBox::Open | QDialogButtonBox::Close, Qt::Vertical, dialog);
|
||||
copyButton
|
||||
= dialogButtons->addButton(i18n("Copy"), QDialogButtonBox::ActionRole);
|
||||
createButton = dialogButtons->addButton(i18n("Create"),
|
||||
QDialogButtonBox::ActionRole);
|
||||
deleteButton = dialogButtons->addButton(i18n("Remove"),
|
||||
QDialogButtonBox::ActionRole);
|
||||
QHBoxLayout *layout = new QHBoxLayout(dialog);
|
||||
layout->addWidget(widgetDialog);
|
||||
layout->addWidget(dialogButtons);
|
||||
dialog->setLayout(layout);
|
||||
|
||||
connect(dialogButtons, SIGNAL(clicked(QAbstractButton *)),
|
||||
this, SLOT(editItemButtonPressed(QAbstractButton *)));
|
||||
connect(dialogButtons, SIGNAL(clicked(QAbstractButton *)), this,
|
||||
SLOT(editItemButtonPressed(QAbstractButton *)));
|
||||
connect(dialogButtons, SIGNAL(rejected()), dialog, SLOT(reject()));
|
||||
connect(widgetDialog, SIGNAL(itemActivated(QListWidgetItem *)),
|
||||
this, SLOT(editItemActivated(QListWidgetItem *)));
|
||||
connect(widgetDialog, SIGNAL(itemActivated(QListWidgetItem *)), this,
|
||||
SLOT(editItemActivated(QListWidgetItem *)));
|
||||
}
|
||||
|
||||
|
||||
|
@ -29,13 +29,12 @@
|
||||
#include "abstractextitemaggregator.h"
|
||||
|
||||
|
||||
template <class T>
|
||||
class ExtItemAggregator : public AbstractExtItemAggregator
|
||||
template <class T> class ExtItemAggregator : public AbstractExtItemAggregator
|
||||
{
|
||||
public:
|
||||
explicit ExtItemAggregator(QWidget *parent, const QString type)
|
||||
: AbstractExtItemAggregator(parent),
|
||||
m_type(type)
|
||||
: AbstractExtItemAggregator(parent)
|
||||
, m_type(type)
|
||||
{
|
||||
qCDebug(LOG_LIB);
|
||||
qCDebug(LOG_LIB) << "Type" << type;
|
||||
@ -75,7 +74,7 @@ public:
|
||||
qCDebug(LOG_LIB) << "Tag" << _tag;
|
||||
|
||||
T *found = nullptr;
|
||||
foreach(T *item, m_items) {
|
||||
foreach (T *item, m_items) {
|
||||
if (item->tag() != _tag)
|
||||
continue;
|
||||
found = item;
|
||||
@ -93,7 +92,7 @@ public:
|
||||
qCDebug(LOG_LIB) << "Number" << _number;
|
||||
|
||||
T *found = nullptr;
|
||||
foreach(T *item, m_items) {
|
||||
foreach (T *item, m_items) {
|
||||
if (item->number() != _number)
|
||||
continue;
|
||||
found = item;
|
||||
@ -114,14 +113,15 @@ public:
|
||||
return nullptr;
|
||||
|
||||
T *found = nullptr;
|
||||
foreach(T *item, m_items) {
|
||||
foreach (T *item, m_items) {
|
||||
if (item->fileName() != widgetItem->text())
|
||||
continue;
|
||||
found = item;
|
||||
break;
|
||||
}
|
||||
if (found == nullptr)
|
||||
qCWarning(LOG_LIB) << "Could not find item by name" << widgetItem->text();
|
||||
qCWarning(LOG_LIB) << "Could not find item by name"
|
||||
<< widgetItem->text();
|
||||
|
||||
return found;
|
||||
};
|
||||
@ -138,7 +138,8 @@ public:
|
||||
qCDebug(LOG_LIB);
|
||||
|
||||
QList<int> tagList;
|
||||
foreach(T *item, m_items) tagList.append(item->number());
|
||||
foreach (T *item, m_items)
|
||||
tagList.append(item->number());
|
||||
int number = 0;
|
||||
while (tagList.contains(number))
|
||||
number++;
|
||||
@ -157,21 +158,23 @@ private:
|
||||
qCDebug(LOG_LIB);
|
||||
|
||||
// create directory at $HOME
|
||||
QString localDir = QString("%1/awesomewidgets/%2").
|
||||
arg(QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation)).
|
||||
arg(m_type);
|
||||
QString localDir = QString("%1/awesomewidgets/%2")
|
||||
.arg(QStandardPaths::writableLocation(
|
||||
QStandardPaths::GenericDataLocation))
|
||||
.arg(m_type);
|
||||
QDir localDirectory;
|
||||
if (localDirectory.mkpath(localDir))
|
||||
qCInfo(LOG_LIB) << "Created directory" << localDir;
|
||||
|
||||
QStringList dirs = QStandardPaths::locateAll(QStandardPaths::GenericDataLocation,
|
||||
QString("awesomewidgets/%1").arg(m_type),
|
||||
QStandardPaths::LocateDirectory);
|
||||
QStringList dirs = QStandardPaths::locateAll(
|
||||
QStandardPaths::GenericDataLocation,
|
||||
QString("awesomewidgets/%1").arg(m_type),
|
||||
QStandardPaths::LocateDirectory);
|
||||
QStringList names;
|
||||
QList<T *> items;
|
||||
foreach(QString dir, dirs) {
|
||||
foreach (QString dir, dirs) {
|
||||
QStringList files = QDir(dir).entryList(QDir::Files, QDir::Name);
|
||||
foreach(QString file, files) {
|
||||
foreach (QString file, files) {
|
||||
if ((!file.endsWith(QString(".desktop")))
|
||||
|| (names.contains(file)))
|
||||
continue;
|
||||
@ -196,7 +199,7 @@ private:
|
||||
m_activeItems.clear();
|
||||
|
||||
m_items = getItems();
|
||||
foreach(T *item, m_items) {
|
||||
foreach (T *item, m_items) {
|
||||
if (!item->isActive())
|
||||
continue;
|
||||
m_activeItems.append(item);
|
||||
@ -208,8 +211,9 @@ private:
|
||||
qCDebug(LOG_LIB);
|
||||
|
||||
widgetDialog->clear();
|
||||
foreach(T *_item, m_items) {
|
||||
QListWidgetItem *item = new QListWidgetItem(_item->fileName(), widgetDialog);
|
||||
foreach (T *_item, m_items) {
|
||||
QListWidgetItem *item
|
||||
= new QListWidgetItem(_item->fileName(), widgetDialog);
|
||||
QStringList tooltip;
|
||||
tooltip.append(i18n("Name: %1", _item->name()));
|
||||
tooltip.append(i18n("Comment: %1", _item->comment()));
|
||||
@ -227,8 +231,7 @@ private:
|
||||
T *source = itemFromWidget();
|
||||
QString fileName = getName();
|
||||
int number = uniqNumber();
|
||||
if ((source == nullptr)
|
||||
|| (fileName.isEmpty())) {
|
||||
if ((source == nullptr) || (fileName.isEmpty())) {
|
||||
qCWarning(LOG_LIB) << "Nothing to copy";
|
||||
return;
|
||||
}
|
||||
@ -246,9 +249,10 @@ private:
|
||||
|
||||
QString fileName = getName();
|
||||
int number = uniqNumber();
|
||||
QStringList dirs = QStandardPaths::locateAll(QStandardPaths::GenericDataLocation,
|
||||
QString("awesomewidgets/%1").arg(m_type),
|
||||
QStandardPaths::LocateDirectory);
|
||||
QStringList dirs = QStandardPaths::locateAll(
|
||||
QStandardPaths::GenericDataLocation,
|
||||
QString("awesomewidgets/%1").arg(m_type),
|
||||
QStandardPaths::LocateDirectory);
|
||||
if (fileName.isEmpty()) {
|
||||
qCWarning(LOG_LIB) << "Nothing to create";
|
||||
return;
|
||||
|
@ -35,8 +35,8 @@
|
||||
|
||||
ExtQuotes::ExtQuotes(QWidget *parent, const QString quotesName,
|
||||
const QStringList directories)
|
||||
: AbstractExtItem(parent, quotesName, directories),
|
||||
ui(new Ui::ExtQuotes)
|
||||
: AbstractExtItem(parent, quotesName, directories)
|
||||
, ui(new Ui::ExtQuotes)
|
||||
{
|
||||
qCDebug(LOG_LIB);
|
||||
|
||||
@ -54,9 +54,11 @@ ExtQuotes::ExtQuotes(QWidget *parent, const QString quotesName,
|
||||
values[tag(QString("pricechg"))] = 0.0;
|
||||
values[tag(QString("percpricechg"))] = 0.0;
|
||||
|
||||
manager = new QNetworkAccessManager(this);
|
||||
connect(manager, SIGNAL(finished(QNetworkReply *)),
|
||||
this, SLOT(quotesReplyReceived(QNetworkReply *)));
|
||||
// HACK declare as child of nullptr to avoid crash with plasmawindowed
|
||||
// in the destructor
|
||||
manager = new QNetworkAccessManager(nullptr);
|
||||
connect(manager, SIGNAL(finished(QNetworkReply *)), this,
|
||||
SLOT(quotesReplyReceived(QNetworkReply *)));
|
||||
}
|
||||
|
||||
|
||||
@ -64,10 +66,10 @@ ExtQuotes::~ExtQuotes()
|
||||
{
|
||||
qCDebug(LOG_LIB);
|
||||
|
||||
disconnect(manager, SIGNAL(finished(QNetworkReply *)),
|
||||
this, SLOT(quotesReplyReceived(QNetworkReply *)));
|
||||
disconnect(manager, SIGNAL(finished(QNetworkReply *)), this,
|
||||
SLOT(quotesReplyReceived(QNetworkReply *)));
|
||||
|
||||
delete manager;
|
||||
manager->deleteLater();
|
||||
delete ui;
|
||||
}
|
||||
|
||||
@ -78,8 +80,8 @@ ExtQuotes *ExtQuotes::copy(const QString _fileName, const int _number)
|
||||
qCDebug(LOG_LIB) << "File" << _fileName;
|
||||
qCDebug(LOG_LIB) << "Number" << _number;
|
||||
|
||||
ExtQuotes *item = new ExtQuotes(static_cast<QWidget *>(parent()),
|
||||
_fileName, directories());
|
||||
ExtQuotes *item = new ExtQuotes(static_cast<QWidget *>(parent()), _fileName,
|
||||
directories());
|
||||
item->setActive(isActive());
|
||||
item->setApiVersion(apiVersion());
|
||||
item->setComment(comment());
|
||||
@ -122,11 +124,14 @@ void ExtQuotes::readConfiguration()
|
||||
qCDebug(LOG_LIB);
|
||||
AbstractExtItem::readConfiguration();
|
||||
|
||||
for (int i=directories().count()-1; i>=0; i--) {
|
||||
if (!QDir(directories().at(i)).entryList(QDir::Files).contains(fileName()))
|
||||
for (int i = directories().count() - 1; i >= 0; i--) {
|
||||
if (!QDir(directories().at(i))
|
||||
.entryList(QDir::Files)
|
||||
.contains(fileName()))
|
||||
continue;
|
||||
QSettings settings(QString("%1/%2").arg(directories().at(i)).arg(fileName()),
|
||||
QSettings::IniFormat);
|
||||
QSettings settings(
|
||||
QString("%1/%2").arg(directories().at(i)).arg(fileName()),
|
||||
QSettings::IniFormat);
|
||||
|
||||
settings.beginGroup(QString("Desktop Entry"));
|
||||
setTicker(settings.value(QString("X-AW-Ticker"), m_ticker).toString());
|
||||
@ -135,7 +140,8 @@ void ExtQuotes::readConfiguration()
|
||||
|
||||
// update for current API
|
||||
if ((apiVersion() > 0) && (apiVersion() < AWEQAPI)) {
|
||||
qCWarning(LOG_LIB) << "Bump API version from" << apiVersion() << "to" << AWEQAPI;
|
||||
qCWarning(LOG_LIB) << "Bump API version from" << apiVersion() << "to"
|
||||
<< AWEQAPI;
|
||||
setApiVersion(AWEQAPI);
|
||||
writeConfiguration();
|
||||
}
|
||||
@ -173,7 +179,8 @@ int ExtQuotes::showConfiguration(const QVariant args)
|
||||
ui->lineEdit_comment->setText(comment());
|
||||
ui->label_numberValue->setText(QString("%1").arg(number()));
|
||||
ui->lineEdit_ticker->setText(m_ticker);
|
||||
ui->checkBox_active->setCheckState(isActive() ? Qt::Checked : Qt::Unchecked);
|
||||
ui->checkBox_active->setCheckState(isActive() ? Qt::Checked
|
||||
: Qt::Unchecked);
|
||||
ui->spinBox_interval->setValue(interval());
|
||||
|
||||
int ret = exec();
|
||||
@ -197,8 +204,9 @@ void ExtQuotes::writeConfiguration() const
|
||||
qCDebug(LOG_LIB);
|
||||
AbstractExtItem::writeConfiguration();
|
||||
|
||||
QSettings settings(QString("%1/%2").arg(directories().first()).arg(fileName()),
|
||||
QSettings::IniFormat);
|
||||
QSettings settings(
|
||||
QString("%1/%2").arg(directories().first()).arg(fileName()),
|
||||
QSettings::IniFormat);
|
||||
qCInfo(LOG_LIB) << "Configuration file" << settings.fileName();
|
||||
|
||||
settings.beginGroup(QString("Desktop Entry"));
|
||||
@ -223,35 +231,43 @@ void ExtQuotes::quotesReplyReceived(QNetworkReply *reply)
|
||||
qCWarning(LOG_LIB) << "Parse error" << error.errorString();
|
||||
return;
|
||||
}
|
||||
QVariantMap jsonQuotes = jsonDoc.toVariant().toMap()[QString("query")].toMap();
|
||||
jsonQuotes = jsonQuotes[QString("results")].toMap()[QString("quote")].toMap();
|
||||
QVariantMap jsonQuotes
|
||||
= jsonDoc.toVariant().toMap()[QString("query")].toMap();
|
||||
jsonQuotes
|
||||
= jsonQuotes[QString("results")].toMap()[QString("quote")].toMap();
|
||||
double value;
|
||||
|
||||
// ask
|
||||
value = jsonQuotes[QString("Ask")].toString().toDouble();
|
||||
values[tag(QString("askchg"))] = values[QString("ask")].toDouble() == 0.0
|
||||
? 0.0
|
||||
: value - values[QString("ask")].toDouble();
|
||||
values[tag(QString("percaskchg"))] = 100.0 * values[QString("askchg")].toDouble()
|
||||
/ values[QString("ask")].toDouble();
|
||||
values[tag(QString("askchg"))]
|
||||
= values[QString("ask")].toDouble() == 0.0
|
||||
? 0.0
|
||||
: value - values[QString("ask")].toDouble();
|
||||
values[tag(QString("percaskchg"))] = 100.0
|
||||
* values[QString("askchg")].toDouble()
|
||||
/ values[QString("ask")].toDouble();
|
||||
values[tag(QString("ask"))] = value;
|
||||
|
||||
// bid
|
||||
value = jsonQuotes[QString("Bid")].toString().toDouble();
|
||||
values[tag(QString("bidchg"))] = values[QString("bid")].toDouble() == 0.0
|
||||
? 0.0
|
||||
: value - values[QString("bid")].toDouble();
|
||||
values[tag(QString("percbidchg"))] = 100.0 * values[QString("bidchg")].toDouble()
|
||||
/ values[QString("bid")].toDouble();
|
||||
values[tag(QString("bidchg"))]
|
||||
= values[QString("bid")].toDouble() == 0.0
|
||||
? 0.0
|
||||
: value - values[QString("bid")].toDouble();
|
||||
values[tag(QString("percbidchg"))] = 100.0
|
||||
* values[QString("bidchg")].toDouble()
|
||||
/ values[QString("bid")].toDouble();
|
||||
values[tag(QString("bid"))] = value;
|
||||
|
||||
// last trade
|
||||
value = jsonQuotes[QString("LastTradePriceOnly")].toString().toDouble();
|
||||
values[tag(QString("pricechg"))] = values[QString("price")].toDouble() == 0.0
|
||||
? 0.0
|
||||
: value - values[QString("price")].toDouble();
|
||||
values[tag(QString("percpricechg"))] = 100.0 * values[QString("pricechg")].toDouble()
|
||||
/ values[QString("price")].toDouble();
|
||||
values[tag(QString("pricechg"))]
|
||||
= values[QString("price")].toDouble() == 0.0
|
||||
? 0.0
|
||||
: value - values[QString("price")].toDouble();
|
||||
values[tag(QString("percpricechg"))]
|
||||
= 100.0 * values[QString("pricechg")].toDouble()
|
||||
/ values[QString("price")].toDouble();
|
||||
values[tag(QString("price"))] = value;
|
||||
}
|
||||
|
||||
@ -263,7 +279,8 @@ void ExtQuotes::translate()
|
||||
ui->label_name->setText(i18n("Name"));
|
||||
ui->label_comment->setText(i18n("Comment"));
|
||||
ui->label_number->setText(i18n("Tag"));
|
||||
ui->label->setText(i18n("<html><head/><body><p>Use YAHOO! finance ticker to \
|
||||
ui->label->setText(
|
||||
i18n("<html><head/><body><p>Use YAHOO! finance ticker to \
|
||||
get quotes for the instrument. Refer to <a href=\"http://finance.yahoo.com/\">\
|
||||
<span style=\" text-decoration: underline; color:#0057ae;\">http://finance.yahoo.com/\
|
||||
</span></a></p></body></html>"));
|
||||
|
@ -22,11 +22,16 @@
|
||||
|
||||
#include "abstractextitem.h"
|
||||
|
||||
#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"
|
||||
#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"
|
||||
|
||||
|
||||
namespace Ui {
|
||||
class ExtQuotes;
|
||||
namespace Ui
|
||||
{
|
||||
class ExtQuotes;
|
||||
}
|
||||
|
||||
class ExtQuotes : public AbstractExtItem
|
||||
@ -35,7 +40,8 @@ class ExtQuotes : public AbstractExtItem
|
||||
Q_PROPERTY(QString ticker READ ticker WRITE setTicker)
|
||||
|
||||
public:
|
||||
explicit ExtQuotes(QWidget *parent = nullptr, const QString quotesName = QString(),
|
||||
explicit ExtQuotes(QWidget *parent = nullptr,
|
||||
const QString quotesName = QString(),
|
||||
const QStringList directories = QStringList());
|
||||
virtual ~ExtQuotes();
|
||||
ExtQuotes *copy(const QString _fileName, const int _number);
|
||||
|
@ -33,8 +33,8 @@
|
||||
|
||||
ExtScript::ExtScript(QWidget *parent, const QString scriptName,
|
||||
const QStringList directories)
|
||||
: AbstractExtItem(parent, scriptName, directories),
|
||||
ui(new Ui::ExtScript)
|
||||
: AbstractExtItem(parent, scriptName, directories)
|
||||
, ui(new Ui::ExtScript)
|
||||
{
|
||||
qCDebug(LOG_LIB);
|
||||
|
||||
@ -46,7 +46,8 @@ ExtScript::ExtScript(QWidget *parent, const QString scriptName,
|
||||
value[tag(QString("custom"))] = QString("");
|
||||
|
||||
process = new QProcess(this);
|
||||
connect(process, SIGNAL(finished(int, QProcess::ExitStatus)), this, SLOT(updateValue()));
|
||||
connect(process, SIGNAL(finished(int, QProcess::ExitStatus)), this,
|
||||
SLOT(updateValue()));
|
||||
process->waitForFinished(0);
|
||||
}
|
||||
|
||||
@ -67,8 +68,8 @@ ExtScript *ExtScript::copy(const QString _fileName, const int _number)
|
||||
qCDebug(LOG_LIB) << "File" << _fileName;
|
||||
qCDebug(LOG_LIB) << "Number" << _number;
|
||||
|
||||
ExtScript *item = new ExtScript(static_cast<QWidget *>(parent()),
|
||||
_fileName, directories());
|
||||
ExtScript *item = new ExtScript(static_cast<QWidget *>(parent()), _fileName,
|
||||
directories());
|
||||
item->setActive(isActive());
|
||||
item->setApiVersion(apiVersion());
|
||||
item->setComment(comment());
|
||||
@ -162,9 +163,8 @@ void ExtScript::setFilters(const QStringList _filters)
|
||||
qCDebug(LOG_LIB);
|
||||
qCDebug(LOG_LIB) << "Filters" << _filters;
|
||||
|
||||
std::for_each(_filters.cbegin(), _filters.cend(), [this](QString filter) {
|
||||
return updateFilter(filter);
|
||||
});
|
||||
std::for_each(_filters.cbegin(), _filters.cend(),
|
||||
[this](QString filter) { return updateFilter(filter); });
|
||||
}
|
||||
|
||||
|
||||
@ -207,14 +207,15 @@ QString ExtScript::applyFilters(QString _value) const
|
||||
qCDebug(LOG_LIB);
|
||||
qCDebug(LOG_LIB) << "Value" << _value;
|
||||
|
||||
foreach(QString filt, m_filters) {
|
||||
foreach (QString filt, m_filters) {
|
||||
qCInfo(LOG_LIB) << "Found filter" << filt;
|
||||
QVariantMap filter = jsonFilters[filt].toMap();
|
||||
if (filter.isEmpty()) {
|
||||
qCWarning(LOG_LIB) << "Could not find filter" << _value << "in the json";
|
||||
qCWarning(LOG_LIB) << "Could not find filter" << _value
|
||||
<< "in the json";
|
||||
continue;
|
||||
}
|
||||
foreach(QString f, filter.keys())
|
||||
foreach (QString f, filter.keys())
|
||||
_value.replace(f, filter[f].toString());
|
||||
}
|
||||
|
||||
@ -243,24 +244,31 @@ void ExtScript::readConfiguration()
|
||||
qCDebug(LOG_LIB);
|
||||
AbstractExtItem::readConfiguration();
|
||||
|
||||
for (int i=directories().count()-1; i>=0; i--) {
|
||||
if (!QDir(directories().at(i)).entryList(QDir::Files).contains(fileName()))
|
||||
for (int i = directories().count() - 1; i >= 0; i--) {
|
||||
if (!QDir(directories().at(i))
|
||||
.entryList(QDir::Files)
|
||||
.contains(fileName()))
|
||||
continue;
|
||||
QSettings settings(QString("%1/%2").arg(directories().at(i)).arg(fileName()), QSettings::IniFormat);
|
||||
QSettings settings(
|
||||
QString("%1/%2").arg(directories().at(i)).arg(fileName()),
|
||||
QSettings::IniFormat);
|
||||
|
||||
settings.beginGroup(QString("Desktop Entry"));
|
||||
setExecutable(settings.value(QString("Exec"), m_executable).toString());
|
||||
setPrefix(settings.value(QString("X-AW-Prefix"), m_prefix).toString());
|
||||
setStrRedirect(settings.value(QString("X-AW-Redirect"), strRedirect()).toString());
|
||||
setStrRedirect(
|
||||
settings.value(QString("X-AW-Redirect"), strRedirect()).toString());
|
||||
// api == 3
|
||||
setFilters(settings.value(QString("X-AW-Filters"), m_filters).toString().
|
||||
split(QChar(','), QString::SkipEmptyParts));
|
||||
setFilters(settings.value(QString("X-AW-Filters"), m_filters)
|
||||
.toString()
|
||||
.split(QChar(','), QString::SkipEmptyParts));
|
||||
settings.endGroup();
|
||||
}
|
||||
|
||||
// update for current API
|
||||
if ((apiVersion() > 0) && (apiVersion() < AWESAPI)) {
|
||||
qCWarning(LOG_LIB) << "Bump API version from" << apiVersion() << "to" << AWESAPI;
|
||||
qCWarning(LOG_LIB) << "Bump API version from" << apiVersion() << "to"
|
||||
<< AWESAPI;
|
||||
setApiVersion(AWESAPI);
|
||||
writeConfiguration();
|
||||
}
|
||||
@ -271,8 +279,10 @@ void ExtScript::readJsonFilters()
|
||||
{
|
||||
qCDebug(LOG_LIB);
|
||||
|
||||
QString fileName = QStandardPaths::locate(QStandardPaths::GenericDataLocation,
|
||||
QString("awesomewidgets/scripts/awesomewidgets-extscripts-filters.json"));
|
||||
QString fileName = QStandardPaths::locate(
|
||||
QStandardPaths::GenericDataLocation,
|
||||
QString(
|
||||
"awesomewidgets/scripts/awesomewidgets-extscripts-filters.json"));
|
||||
qCInfo(LOG_LIB) << "Filters file" << fileName;
|
||||
QFile jsonFile(fileName);
|
||||
if (!jsonFile.open(QIODevice::ReadOnly | QIODevice::Text)) {
|
||||
@ -326,19 +336,17 @@ int ExtScript::showConfiguration(const QVariant args)
|
||||
ui->label_numberValue->setText(QString("%1").arg(number()));
|
||||
ui->lineEdit_command->setText(m_executable);
|
||||
ui->lineEdit_prefix->setText(m_prefix);
|
||||
ui->checkBox_active->setCheckState(isActive() ? Qt::Checked : Qt::Unchecked);
|
||||
ui->checkBox_active->setCheckState(isActive() ? Qt::Checked
|
||||
: Qt::Unchecked);
|
||||
ui->comboBox_redirect->setCurrentIndex(static_cast<int>(m_redirect));
|
||||
ui->spinBox_interval->setValue(interval());
|
||||
// filters
|
||||
ui->checkBox_colorFilter->setCheckState(m_filters.contains(QString("color"))
|
||||
? Qt::Checked
|
||||
: Qt::Unchecked);
|
||||
ui->checkBox_linesFilter->setCheckState(m_filters.contains(QString("newline"))
|
||||
? Qt::Checked
|
||||
: Qt::Unchecked);
|
||||
ui->checkBox_spaceFilter->setCheckState(m_filters.contains(QString("space"))
|
||||
? Qt::Checked
|
||||
: Qt::Unchecked);
|
||||
ui->checkBox_colorFilter->setCheckState(
|
||||
m_filters.contains(QString("color")) ? Qt::Checked : Qt::Unchecked);
|
||||
ui->checkBox_linesFilter->setCheckState(
|
||||
m_filters.contains(QString("newline")) ? Qt::Checked : Qt::Unchecked);
|
||||
ui->checkBox_spaceFilter->setCheckState(
|
||||
m_filters.contains(QString("space")) ? Qt::Checked : Qt::Unchecked);
|
||||
|
||||
int ret = exec();
|
||||
if (ret != 1)
|
||||
@ -353,9 +361,12 @@ int ExtScript::showConfiguration(const QVariant args)
|
||||
setStrRedirect(ui->comboBox_redirect->currentText());
|
||||
setInterval(ui->spinBox_interval->value());
|
||||
// filters
|
||||
updateFilter(QString("color"), ui->checkBox_colorFilter->checkState() == Qt::Checked);
|
||||
updateFilter(QString("newline"), ui->checkBox_linesFilter->checkState() == Qt::Checked);
|
||||
updateFilter(QString("space"), ui->checkBox_spaceFilter->checkState() == Qt::Checked);
|
||||
updateFilter(QString("color"),
|
||||
ui->checkBox_colorFilter->checkState() == Qt::Checked);
|
||||
updateFilter(QString("newline"),
|
||||
ui->checkBox_linesFilter->checkState() == Qt::Checked);
|
||||
updateFilter(QString("space"),
|
||||
ui->checkBox_spaceFilter->checkState() == Qt::Checked);
|
||||
|
||||
writeConfiguration();
|
||||
return ret;
|
||||
@ -367,8 +378,9 @@ void ExtScript::writeConfiguration() const
|
||||
qCDebug(LOG_LIB);
|
||||
AbstractExtItem::writeConfiguration();
|
||||
|
||||
QSettings settings(QString("%1/%2").arg(directories().first()).arg(fileName()),
|
||||
QSettings::IniFormat);
|
||||
QSettings settings(
|
||||
QString("%1/%2").arg(directories().first()).arg(fileName()),
|
||||
QSettings::IniFormat);
|
||||
qCInfo(LOG_LIB) << "Configuration file" << settings.fileName();
|
||||
|
||||
settings.beginGroup(QString("Desktop Entry"));
|
||||
@ -387,9 +399,13 @@ void ExtScript::updateValue()
|
||||
qCDebug(LOG_LIB);
|
||||
|
||||
qCInfo(LOG_LIB) << "Cmd returns" << process->exitCode();
|
||||
QString qdebug = QTextCodec::codecForMib(106)->toUnicode(process->readAllStandardError()).trimmed();
|
||||
QString qdebug = QTextCodec::codecForMib(106)
|
||||
->toUnicode(process->readAllStandardError())
|
||||
.trimmed();
|
||||
qCInfo(LOG_LIB) << "Error" << qdebug;
|
||||
QString qoutput = QTextCodec::codecForMib(106)->toUnicode(process->readAllStandardOutput()).trimmed();
|
||||
QString qoutput = QTextCodec::codecForMib(106)
|
||||
->toUnicode(process->readAllStandardOutput())
|
||||
.trimmed();
|
||||
qCInfo(LOG_LIB) << "Output" << qoutput;
|
||||
QString strValue;
|
||||
|
||||
|
@ -23,8 +23,9 @@
|
||||
#include "abstractextitem.h"
|
||||
|
||||
|
||||
namespace Ui {
|
||||
class ExtScript;
|
||||
namespace Ui
|
||||
{
|
||||
class ExtScript;
|
||||
}
|
||||
|
||||
class ExtScript : public AbstractExtItem
|
||||
@ -36,14 +37,10 @@ class ExtScript : public AbstractExtItem
|
||||
Q_PROPERTY(Redirect redirect READ redirect WRITE setRedirect)
|
||||
|
||||
public:
|
||||
enum Redirect {
|
||||
stdout2stderr = 0,
|
||||
nothing,
|
||||
stderr2stdout,
|
||||
swap
|
||||
};
|
||||
enum Redirect { stdout2stderr = 0, nothing, stderr2stdout, swap };
|
||||
|
||||
explicit ExtScript(QWidget *parent = nullptr, const QString scriptName = QString(),
|
||||
explicit ExtScript(QWidget *parent = nullptr,
|
||||
const QString scriptName = QString(),
|
||||
const QStringList directories = QStringList());
|
||||
virtual ~ExtScript();
|
||||
ExtScript *copy(const QString _fileName, const int _number);
|
||||
|
@ -31,8 +31,8 @@
|
||||
|
||||
ExtUpgrade::ExtUpgrade(QWidget *parent, const QString upgradeName,
|
||||
const QStringList directories)
|
||||
: AbstractExtItem(parent, upgradeName, directories),
|
||||
ui(new Ui::ExtUpgrade)
|
||||
: AbstractExtItem(parent, upgradeName, directories)
|
||||
, ui(new Ui::ExtUpgrade)
|
||||
{
|
||||
qCDebug(LOG_LIB);
|
||||
|
||||
@ -134,7 +134,8 @@ void ExtUpgrade::setNull(const int _null)
|
||||
{
|
||||
qCDebug(LOG_LIB);
|
||||
qCDebug(LOG_LIB) << "Null lines" << _null;
|
||||
if (_null < 0) return;
|
||||
if (_null < 0)
|
||||
return;
|
||||
|
||||
m_null = _null;
|
||||
}
|
||||
@ -145,11 +146,14 @@ void ExtUpgrade::readConfiguration()
|
||||
qCDebug(LOG_LIB);
|
||||
AbstractExtItem::readConfiguration();
|
||||
|
||||
for (int i=directories().count()-1; i>=0; i--) {
|
||||
if (!QDir(directories().at(i)).entryList(QDir::Files).contains(fileName()))
|
||||
for (int i = directories().count() - 1; i >= 0; i--) {
|
||||
if (!QDir(directories().at(i))
|
||||
.entryList(QDir::Files)
|
||||
.contains(fileName()))
|
||||
continue;
|
||||
QSettings settings(QString("%1/%2").arg(directories().at(i)).arg(fileName()),
|
||||
QSettings::IniFormat);
|
||||
QSettings settings(
|
||||
QString("%1/%2").arg(directories().at(i)).arg(fileName()),
|
||||
QSettings::IniFormat);
|
||||
|
||||
settings.beginGroup(QString("Desktop Entry"));
|
||||
setExecutable(settings.value(QString("Exec"), m_executable).toString());
|
||||
@ -161,7 +165,8 @@ void ExtUpgrade::readConfiguration()
|
||||
|
||||
// update for current API
|
||||
if ((apiVersion() > 0) && (apiVersion() < AWEUAPI)) {
|
||||
qCWarning(LOG_LIB) << "Bump API version from" << apiVersion() << "to" << AWEUAPI;
|
||||
qCWarning(LOG_LIB) << "Bump API version from" << apiVersion() << "to"
|
||||
<< AWEUAPI;
|
||||
setApiVersion(AWEUAPI);
|
||||
writeConfiguration();
|
||||
}
|
||||
@ -197,7 +202,8 @@ int ExtUpgrade::showConfiguration(const QVariant args)
|
||||
ui->label_numberValue->setText(QString("%1").arg(number()));
|
||||
ui->lineEdit_command->setText(m_executable);
|
||||
ui->lineEdit_filter->setText(m_filter);
|
||||
ui->checkBox_active->setCheckState(isActive() ? Qt::Checked : Qt::Unchecked);
|
||||
ui->checkBox_active->setCheckState(isActive() ? Qt::Checked
|
||||
: Qt::Unchecked);
|
||||
ui->spinBox_null->setValue(m_null);
|
||||
ui->spinBox_interval->setValue(interval());
|
||||
|
||||
@ -224,8 +230,9 @@ void ExtUpgrade::writeConfiguration() const
|
||||
qCDebug(LOG_LIB);
|
||||
AbstractExtItem::writeConfiguration();
|
||||
|
||||
QSettings settings(QString("%1/%2").arg(directories().first()).arg(fileName()),
|
||||
QSettings::IniFormat);
|
||||
QSettings settings(
|
||||
QString("%1/%2").arg(directories().first()).arg(fileName()),
|
||||
QSettings::IniFormat);
|
||||
qCInfo(LOG_LIB) << "Configuration file" << settings.fileName();
|
||||
|
||||
settings.beginGroup(QString("Desktop Entry"));
|
||||
@ -245,11 +252,16 @@ void ExtUpgrade::updateValue()
|
||||
qCInfo(LOG_LIB) << "Cmd returns" << process->exitCode();
|
||||
qCInfo(LOG_LIB) << "Error" << process->readAllStandardError();
|
||||
|
||||
QString qoutput = QTextCodec::codecForMib(106)->toUnicode(process->readAllStandardOutput()).trimmed();
|
||||
QString qoutput = QTextCodec::codecForMib(106)
|
||||
->toUnicode(process->readAllStandardOutput())
|
||||
.trimmed();
|
||||
value[tag(QString("pkgcount"))] = [this](QString output) {
|
||||
return m_filter.isEmpty()
|
||||
? output.split(QChar('\n'), QString::SkipEmptyParts).count() - m_null
|
||||
: output.split(QChar('\n'), QString::SkipEmptyParts).filter(QRegExp(m_filter)).count();
|
||||
? output.split(QChar('\n'), QString::SkipEmptyParts).count()
|
||||
- m_null
|
||||
: output.split(QChar('\n'), QString::SkipEmptyParts)
|
||||
.filter(QRegExp(m_filter))
|
||||
.count();
|
||||
}(qoutput);
|
||||
}
|
||||
|
||||
|
@ -23,8 +23,9 @@
|
||||
#include "abstractextitem.h"
|
||||
|
||||
|
||||
namespace Ui {
|
||||
class ExtUpgrade;
|
||||
namespace Ui
|
||||
{
|
||||
class ExtUpgrade;
|
||||
}
|
||||
|
||||
class ExtUpgrade : public AbstractExtItem
|
||||
@ -35,7 +36,8 @@ class ExtUpgrade : public AbstractExtItem
|
||||
Q_PROPERTY(int null READ null WRITE setNull)
|
||||
|
||||
public:
|
||||
explicit ExtUpgrade(QWidget *parent = nullptr, const QString upgradeName = QString(),
|
||||
explicit ExtUpgrade(QWidget *parent = nullptr,
|
||||
const QString upgradeName = QString(),
|
||||
const QStringList directories = QStringList());
|
||||
virtual ~ExtUpgrade();
|
||||
ExtUpgrade *copy(const QString _fileName, const int _number);
|
||||
|
@ -36,8 +36,8 @@
|
||||
|
||||
ExtWeather::ExtWeather(QWidget *parent, const QString weatherName,
|
||||
const QStringList directories)
|
||||
: AbstractExtItem(parent, weatherName, directories),
|
||||
ui(new Ui::ExtWeather)
|
||||
: AbstractExtItem(parent, weatherName, directories)
|
||||
, ui(new Ui::ExtWeather)
|
||||
{
|
||||
qCDebug(LOG_LIB);
|
||||
|
||||
@ -52,9 +52,11 @@ ExtWeather::ExtWeather(QWidget *parent, const QString weatherName,
|
||||
values[tag(QString("pressure"))] = 0.0;
|
||||
values[tag(QString("temperature"))] = 0.0;
|
||||
|
||||
manager = new QNetworkAccessManager(this);
|
||||
connect(manager, SIGNAL(finished(QNetworkReply *)),
|
||||
this, SLOT(weatherReplyReceived(QNetworkReply *)));
|
||||
// HACK declare as child of nullptr to avoid crash with plasmawindowed
|
||||
// in the destructor
|
||||
manager = new QNetworkAccessManager(nullptr);
|
||||
connect(manager, SIGNAL(finished(QNetworkReply *)), this,
|
||||
SLOT(weatherReplyReceived(QNetworkReply *)));
|
||||
}
|
||||
|
||||
|
||||
@ -62,10 +64,10 @@ ExtWeather::~ExtWeather()
|
||||
{
|
||||
qCDebug(LOG_LIB);
|
||||
|
||||
disconnect(manager, SIGNAL(finished(QNetworkReply *)),
|
||||
this, SLOT(weatherReplyReceived(QNetworkReply *)));
|
||||
disconnect(manager, SIGNAL(finished(QNetworkReply *)), this,
|
||||
SLOT(weatherReplyReceived(QNetworkReply *)));
|
||||
|
||||
delete manager;
|
||||
manager->deleteLater();
|
||||
delete ui;
|
||||
}
|
||||
|
||||
@ -98,7 +100,8 @@ QString ExtWeather::weatherFromInt(const int _id) const
|
||||
qCDebug(LOG_LIB);
|
||||
qCDebug(LOG_LIB) << "Weather ID" << _id;
|
||||
|
||||
QVariantMap map = jsonMap[m_image ? QString("image") : QString("text")].toMap();
|
||||
QVariantMap map
|
||||
= jsonMap[m_image ? QString("image") : QString("text")].toMap();
|
||||
return map.value(QString::number(_id), map[QString("default")]).toString();
|
||||
}
|
||||
|
||||
@ -184,24 +187,31 @@ void ExtWeather::readConfiguration()
|
||||
qCDebug(LOG_LIB);
|
||||
AbstractExtItem::readConfiguration();
|
||||
|
||||
for (int i=directories().count()-1; i>=0; i--) {
|
||||
if (!QDir(directories().at(i)).entryList(QDir::Files).contains(fileName()))
|
||||
for (int i = directories().count() - 1; i >= 0; i--) {
|
||||
if (!QDir(directories().at(i))
|
||||
.entryList(QDir::Files)
|
||||
.contains(fileName()))
|
||||
continue;
|
||||
QSettings settings(QString("%1/%2").arg(directories().at(i)).arg(fileName()),
|
||||
QSettings::IniFormat);
|
||||
QSettings settings(
|
||||
QString("%1/%2").arg(directories().at(i)).arg(fileName()),
|
||||
QSettings::IniFormat);
|
||||
|
||||
settings.beginGroup(QString("Desktop Entry"));
|
||||
setCity(settings.value(QString("X-AW-City"), m_city).toString());
|
||||
setCountry(settings.value(QString("X-AW-Country"), m_country).toString());
|
||||
setCountry(
|
||||
settings.value(QString("X-AW-Country"), m_country).toString());
|
||||
setTs(settings.value(QString("X-AW-TS"), m_ts).toInt());
|
||||
// api == 2
|
||||
setImage(settings.value(QString("X-AW-Image"), QVariant(m_image)).toString() == QString("true"));
|
||||
setImage(
|
||||
settings.value(QString("X-AW-Image"), QVariant(m_image)).toString()
|
||||
== QString("true"));
|
||||
settings.endGroup();
|
||||
}
|
||||
|
||||
// update for current API
|
||||
if ((apiVersion() > 0) && (apiVersion() < AWEWAPI)) {
|
||||
qCWarning(LOG_LIB) << "Bump API version from" << apiVersion() << "to" << AWEWAPI;
|
||||
qCWarning(LOG_LIB) << "Bump API version from" << apiVersion() << "to"
|
||||
<< AWEWAPI;
|
||||
setApiVersion(AWEWAPI);
|
||||
writeConfiguration();
|
||||
}
|
||||
@ -212,8 +222,9 @@ void ExtWeather::readJsonMap()
|
||||
{
|
||||
qCDebug(LOG_LIB);
|
||||
|
||||
QString fileName = QStandardPaths::locate(QStandardPaths::GenericDataLocation,
|
||||
QString("awesomewidgets/weather/awesomewidgets-extweather-ids.json"));
|
||||
QString fileName = QStandardPaths::locate(
|
||||
QStandardPaths::GenericDataLocation,
|
||||
QString("awesomewidgets/weather/awesomewidgets-extweather-ids.json"));
|
||||
qCInfo(LOG_LIB) << "Map file" << fileName;
|
||||
QFile jsonFile(fileName);
|
||||
if (!jsonFile.open(QIODevice::ReadOnly | QIODevice::Text)) {
|
||||
@ -244,7 +255,8 @@ QVariantHash ExtWeather::run()
|
||||
if (times == 1) {
|
||||
qCInfo(LOG_LIB) << "Send request";
|
||||
isRunning = true;
|
||||
QNetworkReply *reply = manager->get(QNetworkRequest(QUrl(url(m_ts != 0))));
|
||||
QNetworkReply *reply
|
||||
= manager->get(QNetworkRequest(QUrl(url(m_ts != 0))));
|
||||
new QReplyTimeout(reply, 1000);
|
||||
}
|
||||
|
||||
@ -269,7 +281,8 @@ int ExtWeather::showConfiguration(const QVariant args)
|
||||
ui->lineEdit_country->setText(m_country);
|
||||
ui->spinBox_timestamp->setValue(m_ts);
|
||||
ui->checkBox_image->setCheckState(m_image ? Qt::Checked : Qt::Unchecked);
|
||||
ui->checkBox_active->setCheckState(isActive() ? Qt::Checked : Qt::Unchecked);
|
||||
ui->checkBox_active->setCheckState(isActive() ? Qt::Checked
|
||||
: Qt::Unchecked);
|
||||
ui->spinBox_interval->setValue(interval());
|
||||
|
||||
int ret = exec();
|
||||
@ -296,8 +309,9 @@ void ExtWeather::writeConfiguration() const
|
||||
qCDebug(LOG_LIB);
|
||||
AbstractExtItem::writeConfiguration();
|
||||
|
||||
QSettings settings(QString("%1/%2").arg(directories().first()).arg(fileName()),
|
||||
QSettings::IniFormat);
|
||||
QSettings settings(
|
||||
QString("%1/%2").arg(directories().first()).arg(fileName()),
|
||||
QSettings::IniFormat);
|
||||
qCInfo(LOG_LIB) << "Configuration file" << settings.fileName();
|
||||
|
||||
settings.beginGroup(QString("Desktop Entry"));
|
||||
@ -330,7 +344,8 @@ void ExtWeather::weatherReplyReceived(QNetworkReply *reply)
|
||||
// convert to map
|
||||
QVariantMap json = jsonDoc.toVariant().toMap();
|
||||
if (json[QString("cod")].toInt() != 200) {
|
||||
qCWarning(LOG_LIB) << "Invalid OpenWeatherMap return code" << json[QString("cod")].toInt();
|
||||
qCWarning(LOG_LIB) << "Invalid OpenWeatherMap return code"
|
||||
<< json[QString("cod")].toInt();
|
||||
return;
|
||||
}
|
||||
|
||||
@ -339,11 +354,10 @@ void ExtWeather::weatherReplyReceived(QNetworkReply *reply)
|
||||
data = parseSingleJson(json);
|
||||
} else {
|
||||
QVariantList list = json[QString("list")].toList();
|
||||
data = parseSingleJson(list.count() <= m_ts
|
||||
? list.at(m_ts-1).toMap()
|
||||
: list.last().toMap());
|
||||
data = parseSingleJson(list.count() <= m_ts ? list.at(m_ts - 1).toMap()
|
||||
: list.last().toMap());
|
||||
}
|
||||
foreach(QString key, data.keys())
|
||||
foreach (QString key, data.keys())
|
||||
values[tag(key)] = data[key];
|
||||
}
|
||||
|
||||
@ -366,8 +380,10 @@ QVariantHash ExtWeather::parseSingleJson(const QVariantMap json) const
|
||||
// main data
|
||||
QVariantMap mainWeather = json[QString("main")].toMap();
|
||||
if (!weather.isEmpty()) {
|
||||
output[QString("humidity")] = mainWeather[QString("humidity")].toFloat();
|
||||
output[QString("pressure")] = mainWeather[QString("pressure")].toFloat();
|
||||
output[QString("humidity")]
|
||||
= mainWeather[QString("humidity")].toFloat();
|
||||
output[QString("pressure")]
|
||||
= mainWeather[QString("pressure")].toFloat();
|
||||
output[QString("temperature")] = mainWeather[QString("temp")].toFloat();
|
||||
}
|
||||
|
||||
|
@ -22,12 +22,17 @@
|
||||
|
||||
#include "abstractextitem.h"
|
||||
|
||||
#define OWM_URL "http://api.openweathermap.org/data/2.5/weather?q=$CITY,$COUNTRY&units=metric"
|
||||
#define OWM_FORECAST_URL "http://api.openweathermap.org/data/2.5/forecast?q=$CITY,$COUNTRY&units=metric"
|
||||
#define OWM_URL \
|
||||
"http://api.openweathermap.org/data/2.5/" \
|
||||
"weather?q=$CITY,$COUNTRY&units=metric"
|
||||
#define OWM_FORECAST_URL \
|
||||
"http://api.openweathermap.org/data/2.5/" \
|
||||
"forecast?q=$CITY,$COUNTRY&units=metric"
|
||||
|
||||
|
||||
namespace Ui {
|
||||
class ExtWeather;
|
||||
namespace Ui
|
||||
{
|
||||
class ExtWeather;
|
||||
}
|
||||
|
||||
class ExtWeather : public AbstractExtItem
|
||||
@ -39,7 +44,8 @@ class ExtWeather : public AbstractExtItem
|
||||
Q_PROPERTY(int ts READ ts WRITE setTs)
|
||||
|
||||
public:
|
||||
explicit ExtWeather(QWidget *parent = nullptr, const QString weatherName = QString(),
|
||||
explicit ExtWeather(QWidget *parent = nullptr,
|
||||
const QString weatherName = QString(),
|
||||
const QStringList directories = QStringList());
|
||||
virtual ~ExtWeather();
|
||||
ExtWeather *copy(const QString _fileName, const int _number);
|
||||
|
@ -36,8 +36,8 @@
|
||||
|
||||
GraphicalItem::GraphicalItem(QWidget *parent, const QString desktopName,
|
||||
const QStringList directories)
|
||||
: AbstractExtItem(parent, desktopName, directories),
|
||||
ui(new Ui::GraphicalItem)
|
||||
: AbstractExtItem(parent, desktopName, directories)
|
||||
, ui(new Ui::GraphicalItem)
|
||||
{
|
||||
qCDebug(LOG_LIB);
|
||||
|
||||
@ -47,8 +47,10 @@ GraphicalItem::GraphicalItem(QWidget *parent, const QString desktopName,
|
||||
|
||||
initScene();
|
||||
|
||||
connect(ui->pushButton_activeColor, SIGNAL(clicked()), this, SLOT(changeColor()));
|
||||
connect(ui->pushButton_inactiveColor, SIGNAL(clicked()), this, SLOT(changeColor()));
|
||||
connect(ui->pushButton_activeColor, SIGNAL(clicked()), this,
|
||||
SLOT(changeColor()));
|
||||
connect(ui->pushButton_inactiveColor, SIGNAL(clicked()), this,
|
||||
SLOT(changeColor()));
|
||||
}
|
||||
|
||||
|
||||
@ -91,10 +93,11 @@ QString GraphicalItem::image(const QVariant value)
|
||||
{
|
||||
qCDebug(LOG_LIB);
|
||||
qCDebug(LOG_LIB) << "Value" << value;
|
||||
if (m_bar == QString("none")) return QString("");
|
||||
if (m_bar == QString("none"))
|
||||
return QString("");
|
||||
|
||||
m_scene->clear();
|
||||
int scale[2] = { 1, 1 };
|
||||
int scale[2] = {1, 1};
|
||||
|
||||
// paint
|
||||
switch (m_type) {
|
||||
@ -121,12 +124,13 @@ QString GraphicalItem::image(const QVariant value)
|
||||
}
|
||||
|
||||
// convert
|
||||
QPixmap pixmap = m_view->grab().transformed(QTransform().scale(scale[0], scale[1]));
|
||||
QPixmap pixmap
|
||||
= m_view->grab().transformed(QTransform().scale(scale[0], scale[1]));
|
||||
QByteArray byteArray;
|
||||
QBuffer buffer(&byteArray);
|
||||
pixmap.save(&buffer, "PNG");
|
||||
QString url = QString("<img src=\"data:image/png;base64,%1\"/>").
|
||||
arg(QString(byteArray.toBase64()));
|
||||
QString url = QString("<img src=\"data:image/png;base64,%1\"/>")
|
||||
.arg(QString(byteArray.toBase64()));
|
||||
|
||||
return url;
|
||||
}
|
||||
@ -253,7 +257,8 @@ void GraphicalItem::setBar(const QString _bar)
|
||||
qCDebug(LOG_LIB);
|
||||
qCDebug(LOG_LIB) << "Bar" << _bar;
|
||||
|
||||
if (!_bar.contains(QRegExp(QString("^(cpu(?!cl).*|gpu$|mem$|swap$|hdd[0-9].*|bat.*)")))) {
|
||||
if (!_bar.contains(QRegExp(
|
||||
QString("^(cpu(?!cl).*|gpu$|mem$|swap$|hdd[0-9].*|bat.*)")))) {
|
||||
qCWarning(LOG_LIB) << "Unsupported bar type" << _bar;
|
||||
m_bar = QString("none");
|
||||
} else {
|
||||
@ -353,18 +358,27 @@ void GraphicalItem::readConfiguration()
|
||||
qCDebug(LOG_LIB);
|
||||
AbstractExtItem::readConfiguration();
|
||||
|
||||
for (int i=directories().count()-1; i>=0; i--) {
|
||||
if (!QDir(directories().at(i)).entryList(QDir::Files).contains(fileName()))
|
||||
for (int i = directories().count() - 1; i >= 0; i--) {
|
||||
if (!QDir(directories().at(i))
|
||||
.entryList(QDir::Files)
|
||||
.contains(fileName()))
|
||||
continue;
|
||||
QSettings settings(QString("%1/%2").arg(directories().at(i)).arg(fileName()),
|
||||
QSettings::IniFormat);
|
||||
QSettings settings(
|
||||
QString("%1/%2").arg(directories().at(i)).arg(fileName()),
|
||||
QSettings::IniFormat);
|
||||
|
||||
settings.beginGroup(QString("Desktop Entry"));
|
||||
setBar(settings.value(QString("X-AW-Value"), m_bar).toString());
|
||||
setActiveColor(settings.value(QString("X-AW-ActiveColor"), m_activeColor).toString());
|
||||
setInactiveColor(settings.value(QString("X-AW-InactiveColor"), m_inactiveColor).toString());
|
||||
setActiveColor(
|
||||
settings.value(QString("X-AW-ActiveColor"), m_activeColor)
|
||||
.toString());
|
||||
setInactiveColor(
|
||||
settings.value(QString("X-AW-InactiveColor"), m_inactiveColor)
|
||||
.toString());
|
||||
setStrType(settings.value(QString("X-AW-Type"), strType()).toString());
|
||||
setStrDirection(settings.value(QString("X-AW-Direction"), strDirection()).toString());
|
||||
setStrDirection(
|
||||
settings.value(QString("X-AW-Direction"), strDirection())
|
||||
.toString());
|
||||
setHeight(settings.value(QString("X-AW-Height"), m_height).toInt());
|
||||
setWidth(settings.value(QString("X-AW-Width"), m_width).toInt());
|
||||
// api == 2
|
||||
@ -375,7 +389,8 @@ void GraphicalItem::readConfiguration()
|
||||
|
||||
// update for current API
|
||||
if ((apiVersion() > 0) && (apiVersion() < AWGIAPI)) {
|
||||
qCWarning(LOG_LIB) << "Bump API version from" << apiVersion() << "to" << AWGIAPI;
|
||||
qCWarning(LOG_LIB) << "Bump API version from" << apiVersion() << "to"
|
||||
<< AWGIAPI;
|
||||
setApiVersion(AWGIAPI);
|
||||
writeConfiguration();
|
||||
}
|
||||
@ -433,8 +448,9 @@ void GraphicalItem::writeConfiguration() const
|
||||
qCDebug(LOG_LIB);
|
||||
AbstractExtItem::writeConfiguration();
|
||||
|
||||
QSettings settings(QString("%1/%2").arg(directories().first()).arg(fileName()),
|
||||
QSettings::IniFormat);
|
||||
QSettings settings(
|
||||
QString("%1/%2").arg(directories().first()).arg(fileName()),
|
||||
QSettings::IniFormat);
|
||||
qCInfo(LOG_LIB) << "Configuration file" << settings.fileName();
|
||||
|
||||
settings.beginGroup(QString("Desktop Entry"));
|
||||
@ -455,7 +471,8 @@ void GraphicalItem::changeColor()
|
||||
{
|
||||
qCDebug(LOG_LIB);
|
||||
|
||||
QColor color = stringToColor((static_cast<QPushButton *>(sender()))->text());
|
||||
QColor color
|
||||
= stringToColor((static_cast<QPushButton *>(sender()))->text());
|
||||
QColor newColor = QColorDialog::getColor(color, this, tr("Select color"),
|
||||
QColorDialog::ShowAlphaChannel);
|
||||
if (!newColor.isValid())
|
||||
@ -468,7 +485,8 @@ void GraphicalItem::changeColor()
|
||||
colorText.append(QString("%1").arg(newColor.blue()));
|
||||
colorText.append(QString("%1").arg(newColor.alpha()));
|
||||
|
||||
return static_cast<QPushButton *>(sender())->setText(colorText.join(QChar(',')));
|
||||
return static_cast<QPushButton *>(sender())
|
||||
->setText(colorText.join(QChar(',')));
|
||||
}
|
||||
|
||||
|
||||
@ -509,13 +527,13 @@ void GraphicalItem::paintCircle(const float value)
|
||||
pen.setColor(inactive);
|
||||
circle = m_scene->addEllipse(0.0, 0.0, m_width, m_height, pen,
|
||||
QBrush(inactive, Qt::SolidPattern));
|
||||
circle->setSpanAngle(- (1.0 - percent) * 360.0 * 16.0);
|
||||
circle->setSpanAngle(-(1.0 - percent) * 360.0 * 16.0);
|
||||
circle->setStartAngle(90.0 * 16.0 - percent * 360.0 * 16.0);
|
||||
// active
|
||||
pen.setColor(active);
|
||||
circle = m_scene->addEllipse(0.0, 0.0, m_width, m_height, pen,
|
||||
QBrush(active, Qt::SolidPattern));
|
||||
circle->setSpanAngle(- percent * 360.0 * 16.0);
|
||||
circle->setSpanAngle(-percent * 360.0 * 16.0);
|
||||
circle->setStartAngle(90.0 * 16.0);
|
||||
}
|
||||
|
||||
@ -528,15 +546,16 @@ void GraphicalItem::paintGraph(const QList<float> value)
|
||||
pen.setColor(stringToColor(m_activeColor));
|
||||
|
||||
// default norms
|
||||
float normX = static_cast<float>(m_width) / static_cast<float>(value.count());
|
||||
float normX
|
||||
= static_cast<float>(m_width) / static_cast<float>(value.count());
|
||||
float normY = static_cast<float>(m_height) / (1.5 * 100.0);
|
||||
// paint graph
|
||||
for (int i=0; i<value.count()-1; i++) {
|
||||
for (int i = 0; i < value.count() - 1; i++) {
|
||||
// some magic here
|
||||
float x1 = i * normX;
|
||||
float y1 = - fabs(value.at(i)) * normY + 5.0;
|
||||
float y1 = -fabs(value.at(i)) * normY + 5.0;
|
||||
float x2 = (i + 1) * normX;
|
||||
float y2 = - fabs(value.at(i+1)) * normY + 5.0;
|
||||
float y2 = -fabs(value.at(i + 1)) * normY + 5.0;
|
||||
m_scene->addLine(x1, y1, x2, y2, pen);
|
||||
}
|
||||
}
|
||||
|
@ -26,8 +26,9 @@
|
||||
class QGraphicsScene;
|
||||
class QGraphicsView;
|
||||
|
||||
namespace Ui {
|
||||
class GraphicalItem;
|
||||
namespace Ui
|
||||
{
|
||||
class GraphicalItem;
|
||||
}
|
||||
|
||||
class GraphicalItem : public AbstractExtItem
|
||||
@ -42,18 +43,11 @@ class GraphicalItem : public AbstractExtItem
|
||||
Q_PROPERTY(int width READ width WRITE setWidth)
|
||||
|
||||
public:
|
||||
enum Direction {
|
||||
LeftToRight = 0,
|
||||
RightToLeft
|
||||
};
|
||||
enum Type {
|
||||
Horizontal = 0,
|
||||
Vertical,
|
||||
Circle,
|
||||
Graph
|
||||
};
|
||||
enum Direction { LeftToRight = 0, RightToLeft };
|
||||
enum Type { Horizontal = 0, Vertical, Circle, Graph };
|
||||
|
||||
explicit GraphicalItem(QWidget *parent = nullptr, const QString desktopName = QString(),
|
||||
explicit GraphicalItem(QWidget *parent = nullptr,
|
||||
const QString desktopName = QString(),
|
||||
const QStringList directories = QStringList());
|
||||
virtual ~GraphicalItem();
|
||||
GraphicalItem *copy(const QString _fileName, const int _number);
|
||||
|
Reference in New Issue
Block a user