mirror of
https://github.com/arcan1s/awesome-widgets.git
synced 2025-06-29 07:05:46 +00:00
* move update interval to another tab
* some changes inside concurrent run * update COPYING to vanila format
This commit is contained in:
8
COPYING
8
COPYING
@ -1,4 +1,4 @@
|
|||||||
GNU GENERAL PUBLIC LICENSE
|
GNU GENERAL PUBLIC LICENSE
|
||||||
Version 3, 29 June 2007
|
Version 3, 29 June 2007
|
||||||
|
|
||||||
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
||||||
@ -631,8 +631,8 @@ to attach them to the start of each source file to most effectively
|
|||||||
state the exclusion of warranty; and each file should have at least
|
state the exclusion of warranty; and each file should have at least
|
||||||
the "copyright" line and a pointer to where the full notice is found.
|
the "copyright" line and a pointer to where the full notice is found.
|
||||||
|
|
||||||
awesome-widgets
|
{one line to give the program's name and a brief idea of what it does.}
|
||||||
Copyright (C) 2013-2014 Evgeniy Alekseev
|
Copyright (C) {year} {name of author}
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
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
|
it under the terms of the GNU General Public License as published by
|
||||||
@ -652,7 +652,7 @@ Also add information on how to contact you by electronic and paper mail.
|
|||||||
If the program does terminal interaction, make it output a short
|
If the program does terminal interaction, make it output a short
|
||||||
notice like this when it starts in an interactive mode:
|
notice like this when it starts in an interactive mode:
|
||||||
|
|
||||||
awesome-widgets Copyright (C) 2013 Evgeniy Alekseev
|
{project} Copyright (C) {year} {fullname}
|
||||||
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||||
This is free software, and you are welcome to redistribute it
|
This is free software, and you are welcome to redistribute it
|
||||||
under certain conditions; type `show c' for details.
|
under certain conditions; type `show c' for details.
|
||||||
|
@ -25,7 +25,7 @@ message(STATUS "Project: ${PROJECT_NAME}")
|
|||||||
message(STATUS "Version: ${PROJECT_VERSION}")
|
message(STATUS "Version: ${PROJECT_VERSION}")
|
||||||
message(STATUS "Build date: ${CURRENT_DATE}")
|
message(STATUS "Build date: ${CURRENT_DATE}")
|
||||||
|
|
||||||
option(BUILD_FUTURE "Build with the features which will be marked as stable later" ON)
|
option(BUILD_FUTURE "Build with the features which will be marked as stable later" OFF)
|
||||||
option(BUILD_PLASMOIDS "Build plasmoids" ON)
|
option(BUILD_PLASMOIDS "Build plasmoids" ON)
|
||||||
option(BUILD_DEB_PACKAGE "Build deb package" OFF)
|
option(BUILD_DEB_PACKAGE "Build deb package" OFF)
|
||||||
option(BUILD_RPM_PACKAGE "Build rpm package" OFF)
|
option(BUILD_RPM_PACKAGE "Build rpm package" OFF)
|
||||||
|
@ -35,6 +35,7 @@ Item {
|
|||||||
|
|
||||||
property bool debug: awActions.isDebugEnabled()
|
property bool debug: awActions.isDebugEnabled()
|
||||||
|
|
||||||
|
property alias cfg_interval: update.value
|
||||||
property alias cfg_height: widgetHeight.value
|
property alias cfg_height: widgetHeight.value
|
||||||
property alias cfg_width: widgetWidth.value
|
property alias cfg_width: widgetWidth.value
|
||||||
property alias cfg_notify: notify.checked
|
property alias cfg_notify: notify.checked
|
||||||
@ -53,6 +54,26 @@ Item {
|
|||||||
Column {
|
Column {
|
||||||
id: pageColumn
|
id: pageColumn
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
|
Row {
|
||||||
|
height: implicitHeight
|
||||||
|
width: parent.width
|
||||||
|
QtControls.Label {
|
||||||
|
height: parent.height
|
||||||
|
width: parent.width * 2 / 5
|
||||||
|
horizontalAlignment: Text.AlignRight
|
||||||
|
verticalAlignment: Text.AlignVCenter
|
||||||
|
text: i18n("Time interval")
|
||||||
|
}
|
||||||
|
QtControls.SpinBox {
|
||||||
|
id: update
|
||||||
|
width: parent.width * 3 / 5
|
||||||
|
minimumValue: 1000
|
||||||
|
maximumValue: 10000
|
||||||
|
stepSize: 500
|
||||||
|
value: plasmoid.configuration.interval
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Row {
|
Row {
|
||||||
height: implicitHeight
|
height: implicitHeight
|
||||||
width: parent.width
|
width: parent.width
|
||||||
|
@ -44,7 +44,6 @@ Item {
|
|||||||
87: 5
|
87: 5
|
||||||
}
|
}
|
||||||
|
|
||||||
property alias cfg_interval: update.value
|
|
||||||
property alias cfg_fontFamily: selectFont.text
|
property alias cfg_fontFamily: selectFont.text
|
||||||
property alias cfg_fontSize: fontSize.value
|
property alias cfg_fontSize: fontSize.value
|
||||||
property string cfg_fontWeight: fontWeight.currentText
|
property string cfg_fontWeight: fontWeight.currentText
|
||||||
@ -55,26 +54,6 @@ Item {
|
|||||||
Column {
|
Column {
|
||||||
id: pageColumn
|
id: pageColumn
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
Row {
|
|
||||||
height: implicitHeight
|
|
||||||
width: parent.width
|
|
||||||
QtControls.Label {
|
|
||||||
height: parent.height
|
|
||||||
width: parent.width / 3
|
|
||||||
horizontalAlignment: Text.AlignRight
|
|
||||||
verticalAlignment: Text.AlignVCenter
|
|
||||||
text: i18n("Time interval")
|
|
||||||
}
|
|
||||||
QtControls.SpinBox {
|
|
||||||
id: update
|
|
||||||
width: parent.width * 2 / 3
|
|
||||||
minimumValue: 1000
|
|
||||||
maximumValue: 10000
|
|
||||||
stepSize: 500
|
|
||||||
value: plasmoid.configuration.interval
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Row {
|
Row {
|
||||||
height: implicitHeight
|
height: implicitHeight
|
||||||
width: parent.width
|
width: parent.width
|
||||||
|
@ -25,6 +25,8 @@
|
|||||||
#include <QRegExp>
|
#include <QRegExp>
|
||||||
#include <QSettings>
|
#include <QSettings>
|
||||||
#include <QStandardPaths>
|
#include <QStandardPaths>
|
||||||
|
#include <QThread>
|
||||||
|
#include <QThreadPool>
|
||||||
|
|
||||||
#include "awdebug.h"
|
#include "awdebug.h"
|
||||||
#include "awkeysaggregator.h"
|
#include "awkeysaggregator.h"
|
||||||
@ -34,6 +36,7 @@
|
|||||||
#include "extupgrade.h"
|
#include "extupgrade.h"
|
||||||
#include "extweather.h"
|
#include "extweather.h"
|
||||||
#include "graphicalitem.h"
|
#include "graphicalitem.h"
|
||||||
|
#include "version.h"
|
||||||
|
|
||||||
|
|
||||||
AWKeys::AWKeys(QObject *parent)
|
AWKeys::AWKeys(QObject *parent)
|
||||||
@ -50,6 +53,15 @@ AWKeys::AWKeys(QObject *parent)
|
|||||||
// transfer signal from AWDataAggregator object to QML ui
|
// transfer signal from AWDataAggregator object to QML ui
|
||||||
connect(dataAggregator, SIGNAL(toolTipPainted(const QString)),
|
connect(dataAggregator, SIGNAL(toolTipPainted(const QString)),
|
||||||
this, SIGNAL(needToolTipToBeUpdated(const QString)));
|
this, SIGNAL(needToolTipToBeUpdated(const QString)));
|
||||||
|
#ifdef BUILD_FUTURE
|
||||||
|
// queue limit. It may be configured by using QUEUE_LIMIT cmake limit flag.
|
||||||
|
// In other hand since I'm using global thread pool, it makes sense to limit
|
||||||
|
// queue by QThread::idealThreadCount() value
|
||||||
|
queueLimit = QUEUE_LIMIT == 0 ? QThread::idealThreadCount() : QUEUE_LIMIT;
|
||||||
|
// thread pool
|
||||||
|
threadPool = new QThreadPool(this);
|
||||||
|
threadPool->setMaxThreadCount(queueLimit);
|
||||||
|
#endif /* BUILD_FUTURE */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -63,6 +75,7 @@ AWKeys::~AWKeys()
|
|||||||
if (extUpgrade != nullptr) delete extUpgrade;
|
if (extUpgrade != nullptr) delete extUpgrade;
|
||||||
if (extWeather != nullptr) delete extWeather;
|
if (extWeather != nullptr) delete extWeather;
|
||||||
|
|
||||||
|
delete threadPool;
|
||||||
delete aggregator;
|
delete aggregator;
|
||||||
delete dataAggregator;
|
delete dataAggregator;
|
||||||
}
|
}
|
||||||
@ -308,7 +321,7 @@ void AWKeys::dataUpdateReceived(const QString sourceName, const QVariantMap data
|
|||||||
|
|
||||||
// run concurrent data update
|
// run concurrent data update
|
||||||
#ifdef BUILD_FUTURE
|
#ifdef BUILD_FUTURE
|
||||||
QtConcurrent::run([this, sourceName, data]() {
|
QtConcurrent::run(threadPool, [this, sourceName, data]() {
|
||||||
return setDataBySource(sourceName, data);
|
return setDataBySource(sourceName, data);
|
||||||
});
|
});
|
||||||
#else /* BUILD_FUTURE */
|
#else /* BUILD_FUTURE */
|
||||||
@ -643,26 +656,20 @@ QString AWKeys::parsePattern(QString pattern) const
|
|||||||
|
|
||||||
void AWKeys::setDataBySource(const QString sourceName, const QVariantMap data)
|
void AWKeys::setDataBySource(const QString sourceName, const QVariantMap data)
|
||||||
{
|
{
|
||||||
#ifdef BUILD_FUTURE
|
|
||||||
// check if data stream is locked
|
|
||||||
// if ((lock = ((lock) && (queue > 0)))) return;
|
|
||||||
#endif /* BUILD_FUTURE */
|
|
||||||
|
|
||||||
qCDebug(LOG_AW);
|
qCDebug(LOG_AW);
|
||||||
qCDebug(LOG_AW) << "Source" << sourceName;
|
qCDebug(LOG_AW) << "Source" << sourceName;
|
||||||
qCDebug(LOG_AW) << "Data" << data;
|
qCDebug(LOG_AW) << "Data" << data;
|
||||||
|
|
||||||
// update
|
#ifdef BUILD_FUTURE
|
||||||
if (sourceName == QString("update")) return emit(needToBeUpdated());
|
// check if data stream is locked
|
||||||
|
if ((lock = ((lock) && (queue > 0)))) return;
|
||||||
// drop if limits are reached
|
// drop if limits are reached
|
||||||
// qDebug() << ++queue;
|
|
||||||
// if (queue > queueLimit) {
|
|
||||||
if (++queue > queueLimit) {
|
if (++queue > queueLimit) {
|
||||||
qCWarning(LOG_AW) << "Messages queue" << queue-- << "more than limits" << queueLimit;
|
qCWarning(LOG_AW) << "Messages queue" << queue-- << "more than limits" << queueLimit;
|
||||||
// lock = true;
|
lock = true;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
#endif /* BUILD_FUTURE */
|
||||||
|
|
||||||
// first list init
|
// first list init
|
||||||
QStringList tags = aggregator->keysFromSource(sourceName);
|
QStringList tags = aggregator->keysFromSource(sourceName);
|
||||||
@ -670,7 +677,9 @@ void AWKeys::setDataBySource(const QString sourceName, const QVariantMap data)
|
|||||||
tags = aggregator->registerSource(sourceName, data[QString("units")].toString());
|
tags = aggregator->registerSource(sourceName, data[QString("units")].toString());
|
||||||
|
|
||||||
// update data or drop source if there are no matches
|
// update data or drop source if there are no matches
|
||||||
if (tags.isEmpty()) {
|
if (sourceName == QString("update")) {
|
||||||
|
emit(needToBeUpdated());
|
||||||
|
} else if (tags.isEmpty()) {
|
||||||
qCDebug(LOG_AW) << "Source" << sourceName << "not found";
|
qCDebug(LOG_AW) << "Source" << sourceName << "not found";
|
||||||
emit(dropSourceFromDataengine(sourceName));
|
emit(dropSourceFromDataengine(sourceName));
|
||||||
} else {
|
} else {
|
||||||
@ -681,9 +690,7 @@ void AWKeys::setDataBySource(const QString sourceName, const QVariantMap data)
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// volatile float n = 1.0;
|
#ifdef BUILD_FUTURE
|
||||||
// for (volatile float i=1.0; i<100000.0; i++)
|
|
||||||
// n *= i;
|
|
||||||
// qDebug() << queue-- << queueLimit;
|
|
||||||
queue--;
|
queue--;
|
||||||
|
#endif /* BUILD_FUTURE */
|
||||||
}
|
}
|
||||||
|
@ -20,10 +20,8 @@
|
|||||||
#define AWKEYS_H
|
#define AWKEYS_H
|
||||||
|
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
#include <QThread>
|
|
||||||
|
|
||||||
#include "extitemaggregator.h"
|
#include "extitemaggregator.h"
|
||||||
#include "version.h"
|
|
||||||
|
|
||||||
|
|
||||||
class AWDataAggregator;
|
class AWDataAggregator;
|
||||||
@ -33,6 +31,7 @@ class ExtScript;
|
|||||||
class ExtUpgrade;
|
class ExtUpgrade;
|
||||||
class ExtWeather;
|
class ExtWeather;
|
||||||
class GraphicalItem;
|
class GraphicalItem;
|
||||||
|
class QThreadPool;
|
||||||
|
|
||||||
class AWKeys : public QObject
|
class AWKeys : public QObject
|
||||||
{
|
{
|
||||||
@ -91,11 +90,8 @@ private:
|
|||||||
bool m_wrapNewLines = false;
|
bool m_wrapNewLines = false;
|
||||||
// queue and stream lock properties
|
// queue and stream lock properties
|
||||||
bool lock = false;
|
bool lock = false;
|
||||||
int queue = 0;
|
QThreadPool *threadPool = nullptr;
|
||||||
// queue limit. It may be configured by using QUEUE_LIMIT cmake limit flag.
|
int queueLimit, queue = 0;
|
||||||
// In other hand since I'm using global thread pool, it makes sense to limit
|
|
||||||
// queue by QThread::idealThreadCount() value
|
|
||||||
const int queueLimit = QUEUE_LIMIT == 0 ? QThread::idealThreadCount() : QUEUE_LIMIT;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -19,7 +19,6 @@
|
|||||||
#define ABSTRACTEXTITEM_H
|
#define ABSTRACTEXTITEM_H
|
||||||
|
|
||||||
#include <QDialog>
|
#include <QDialog>
|
||||||
#include <QInputDialog>
|
|
||||||
#include <QVariant>
|
#include <QVariant>
|
||||||
|
|
||||||
|
|
||||||
|
@ -21,7 +21,6 @@
|
|||||||
#include <QDialog>
|
#include <QDialog>
|
||||||
#include <QDialogButtonBox>
|
#include <QDialogButtonBox>
|
||||||
#include <QListWidget>
|
#include <QListWidget>
|
||||||
#include <QObject>
|
|
||||||
#include <QPushButton>
|
#include <QPushButton>
|
||||||
#include <QWidget>
|
#include <QWidget>
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user