Compare commits

...

11 Commits
4.0.0 ... 4.0.5

Author SHA1 Message Date
7e13e1eef7 Release 4.0.5 2026-01-28 19:53:21 +02:00
da53052a6f fix: always unsubscribe on sources 2026-01-28 19:51:51 +02:00
1a0a1fb884 Release 4.0.4 2026-01-28 14:18:16 +02:00
7a4367734b fix: check if subscription optimisation is enabled explicitly
Previous implementation has used implicit logic with empty keys arrays,
which might lead to some errors in processing
2026-01-28 14:16:55 +02:00
cdcd929cec Release 4.0.3 2026-01-01 19:54:34 +02:00
8605f66535 fix: compilation error with the latest releases (#173)
As it has been found in the releated issue, compile error occurs because
of missing evaluation and appears to be caused by Qt6QmlTargets.cmake.
Instead of trying to hack generated files, lets just drop qml
definitions because we don't really use them explicitly
2026-01-01 19:49:26 +02:00
3abcd8d6ae Release 4.0.2 2025-07-25 09:34:56 +03:00
daveedmee
0725288595 feat: added German translation (#172)
* Added German translation

About 96% of the plasmaoid into German. Missing strings for:

- AC online tag (as well as AC online)
- AC offline tag (as well as AC offline) (I think they are used for when you have a charging cable plugged into your laptop? I am on a desktop so I can't check)
- Quotes Monitor (as well as quotes – are they used for stocks?)
- User keys
- Has return

Also worth noting is that your redirection to stooq.com doesn't make sense for a German as it is a Polish stocks site

* Fixed some spelling issues

* fixed spelling of openSUSE

* Update de.po

Confused minimal with minimalistic. Changed translation accordingly

* added missing translation strings

Missing translations added for
- AC
- AC online (+tag)
- AC offline (+tag)
- Quotes (+Monitor)
- User keys
- has return
- Player data symbols
2025-07-23 20:22:00 +03:00
Winter
8342d65ffa docs: update README.md (#169) 2025-03-14 14:41:06 +02:00
571417f786 Release 4.0.1 2024-12-11 17:12:24 +02:00
e3d24d1890 fix: disable tooltip painting for now, because it causes error during
png rendering in qt
2024-12-11 17:09:10 +02:00
20 changed files with 1287 additions and 28 deletions

3
.gitignore vendored
View File

@@ -48,3 +48,6 @@ pkg
# clion settings # clion settings
.idea .idea
cmake-build* cmake-build*
# clang
.cache

View File

@@ -13,3 +13,4 @@ Steve Lemuel (Chinese)
Mariusz Kocoń (Polish) Mariusz Kocoń (Polish)
Ibnu Daru Aji (Indonesian) Ibnu Daru Aji (Indonesian)
Antonio Vivace (Italian) Antonio Vivace (Italian)
@daveedmee (German)

View File

@@ -1,3 +1,12 @@
Ver.4.0.3:
- drop qml definition to avoid compile errors
Ver.4.0.2:
+ German translation (#172, thanks to daveedmee)
Ver.4.0.1:
- temporary disable tooltip painting in main widget
Ver.4.0.0: Ver.4.0.0:
* migration to plasma 6 * migration to plasma 6
* dialog windows have been replaced by notifications * dialog windows have been replaced by notifications

View File

@@ -75,5 +75,5 @@ Links
* [Scripts and bars](https://arcanis.me/en/2014/12/19/aw-v21-bells-and-whistles/) * [Scripts and bars](https://arcanis.me/en/2014/12/19/aw-v21-bells-and-whistles/)
* Plasmoid on [kde-look](http://kde-look.org/content/show.php/Awesome+Widgets?content=157124) * Plasmoid on [kde-look](http://kde-look.org/content/show.php/Awesome+Widgets?content=157124)
* DataEngine on [kde-look](http://kde-look.org/content/show.php/Extended+Systemmonitor+DataEngine?content=158773) * DataEngine on [kde-look](http://kde-look.org/content/show.php/Extended+Systemmonitor+DataEngine?content=158773)
* Archlinux [AUR](https://aur.archlinux.org/packages/plasma5-applet-awesome-widgets/) package * Archlinux [AUR](https://aur.archlinux.org/packages/plasma6-applets-awesome-widgets) package
* [OpenSuse](http://software.opensuse.org/search?q=awesome-widgets) packages, [KF5 OpenSuse](http://software.opensuse.org/package/plasma5-awesome-widgets) package * [OpenSuse](http://software.opensuse.org/search?q=awesome-widgets) packages, [KF5 OpenSuse](http://software.opensuse.org/package/plasma5-awesome-widgets) package

View File

@@ -2,7 +2,7 @@
pkgname=plasma6-applet-awesome-widgets pkgname=plasma6-applet-awesome-widgets
_pkgname=awesome-widgets _pkgname=awesome-widgets
pkgver=4.0.0alpha2 pkgver=4.0.5
pkgrel=1 pkgrel=1
pkgdesc="Collection of minimalistic Plasmoids which look like Awesome WM widgets (ex-PyTextMonitor)" pkgdesc="Collection of minimalistic Plasmoids which look like Awesome WM widgets (ex-PyTextMonitor)"
arch=('x86_64') arch=('x86_64')
@@ -27,5 +27,3 @@ build () {
package() { package() {
DESTDIR="$pkgdir" cmake --install build DESTDIR="$pkgdir" cmake --install build
} }
sha256sums=('b2a7b07a1df6f710f4e0d6e5898933f4ddb131818b922dc4b8e48afe3e98a664')

View File

@@ -19,7 +19,7 @@ set(PROJECT_CONTACT "esalexeev@gmail.com")
set(PROJECT_LICENSE "GPL3") set(PROJECT_LICENSE "GPL3")
set(PROJECT_VERSION_MAJOR "4") set(PROJECT_VERSION_MAJOR "4")
set(PROJECT_VERSION_MINOR "0") set(PROJECT_VERSION_MINOR "0")
set(PROJECT_VERSION_PATCH "0") set(PROJECT_VERSION_PATCH "5")
set(PROJECT_VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}") set(PROJECT_VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}")
# append git version if any # append git version if any
set(PROJECT_COMMIT_SHA "Commit hash" CACHE INTERNAL "") set(PROJECT_COMMIT_SHA "Commit hash" CACHE INTERNAL "")

View File

@@ -130,7 +130,7 @@ PlasmoidItem {
Plasmoid.userConfiguringChanged(false) Plasmoid.userConfiguringChanged(false)
// connect data // connect data
awKeys.needTextToBeUpdated.connect(needTextUpdate) awKeys.needTextToBeUpdated.connect(needTextUpdate)
awKeys.needToolTipToBeUpdated.connect(needToolTipUpdate) //awKeys.needToolTipToBeUpdated.connect(needToolTipUpdate)
// check updates if required // check updates if required
if (plasmoid.configuration.checkUpdates) return awActions.checkUpdates(false) if (plasmoid.configuration.checkUpdates) return awActions.checkUpdates(false)
} }

View File

@@ -19,7 +19,7 @@
"Id": "org.kde.plasma.awesomewidget", "Id": "org.kde.plasma.awesomewidget",
"License": "GPLv3", "License": "GPLv3",
"Name": "Awesome Widget", "Name": "Awesome Widget",
"Version": "4.0.0", "Version": "4.0.5",
"Website": "https://arcanis.me/projects/awesome-widgets/" "Website": "https://arcanis.me/projects/awesome-widgets/"
}, },
"X-Plasma-API-Minimum-Version": "6.0" "X-Plasma-API-Minimum-Version": "6.0"

View File

@@ -17,7 +17,6 @@
#pragma once #pragma once
#include <QObject>
#include <QVariant> #include <QVariant>

View File

@@ -99,10 +99,9 @@ void AWDataEngineAggregator::dropSource(const QString &_source)
{ {
qCDebug(LOG_AW) << "Disconnect sensor" << _source; qCDebug(LOG_AW) << "Disconnect sensor" << _source;
if (m_subscribed.contains(_source)) { m_interface->unsubscribe({_source}).waitForFinished();
m_interface->unsubscribe({_source}).waitForFinished(); m_interface->unsubscribe({_source}).waitForFinished();
m_subscribed.remove(_source); m_subscribed.remove(_source);
}
} }

View File

@@ -65,7 +65,7 @@ QStringList AWDataEngineMapper::keysFromSource(const QString &_source) const
// HACK units required to define should the value be calculated as temperature // HACK units required to define should the value be calculated as temperature
// or fan data // or fan data
QStringList AWDataEngineMapper::registerSource(const QString &_source, const KSysGuard::Unit _units, QStringList AWDataEngineMapper::registerSource(const QString &_source, const KSysGuard::Unit _units,
const QStringList &_keys) const QStringList &_keys, const bool _disconnectUnused)
{ {
qCDebug(LOG_AW) << "Source" << _source << "with units" << _units; qCDebug(LOG_AW) << "Source" << _source << "with units" << _units;
@@ -91,7 +91,7 @@ QStringList AWDataEngineMapper::registerSource(const QString &_source, const KSy
// check if keys were actually requested // check if keys were actually requested
qCInfo(LOG_AW) << "Looking for keys" << keys << "in" << _keys; qCInfo(LOG_AW) << "Looking for keys" << keys << "in" << _keys;
auto required = _keys.isEmpty() auto required = !_disconnectUnused
|| std::any_of(keys.cbegin(), keys.cend(), [&_keys](auto &key) { return _keys.contains(key); }); || std::any_of(keys.cbegin(), keys.cend(), [&_keys](auto &key) { return _keys.contains(key); });
if (!required) if (!required)
return {}; return {};

View File

@@ -39,7 +39,8 @@ public:
[[nodiscard]] AWPluginFormaterInterface *formatter(const QString &_key) const; [[nodiscard]] AWPluginFormaterInterface *formatter(const QString &_key) const;
[[nodiscard]] QStringList keysFromSource(const QString &_source) const; [[nodiscard]] QStringList keysFromSource(const QString &_source) const;
// set methods // set methods
QStringList registerSource(const QString &_source, KSysGuard::Unit _units, const QStringList &_keys); QStringList registerSource(const QString &_source, KSysGuard::Unit _units, const QStringList &_keys,
const bool _disconnectUnused);
void setDevices(const AWPluginMatcherSettings &_settings); void setDevices(const AWPluginMatcherSettings &_settings);
private: private:

View File

@@ -206,9 +206,8 @@ void AWKeys::reinitKeys(const QStringList &_currentKeys)
barKeys.append(item->usedKeys()); barKeys.append(item->usedKeys());
} }
// get required keys // get required keys
m_requiredKeys = m_optimize ? AWKeyCache::getRequiredKeys(m_foundKeys, barKeys, m_tooltipParams, m_requiredKeys = AWKeyCache::getRequiredKeys(m_foundKeys, barKeys, m_tooltipParams,
m_keyOperator->requiredUserKeys(), _currentKeys) m_keyOperator->requiredUserKeys(), _currentKeys);
: QStringList();
// set key data to m_aggregator // set key data to m_aggregator
m_aggregator->setDevices(m_keyOperator->devices()); m_aggregator->setDevices(m_keyOperator->devices());
@@ -317,7 +316,7 @@ void AWKeys::setDataBySource(const QString &_source, const KSysGuard::SensorInfo
// first list init // first list init
auto tags = m_aggregator->keysFromSource(_source); auto tags = m_aggregator->keysFromSource(_source);
if (tags.isEmpty()) if (tags.isEmpty())
tags = m_aggregator->registerSource(_source, _sensor.unit, m_requiredKeys); tags = m_aggregator->registerSource(_source, _sensor.unit, m_requiredKeys, m_optimize);
// update data or drop source if there are no matches and exit // update data or drop source if there are no matches and exit
if (tags.isEmpty()) { if (tags.isEmpty()) {

View File

@@ -151,9 +151,9 @@ void AWKeysAggregator::setTranslate(const bool _translate)
QStringList AWKeysAggregator::registerSource(const QString &_source, const KSysGuard::Unit _units, QStringList AWKeysAggregator::registerSource(const QString &_source, const KSysGuard::Unit _units,
const QStringList &_keys) const QStringList &_keys, const bool _disconnectUnused)
{ {
qCDebug(LOG_AW) << "Source" << _source << "with units" << _units; qCDebug(LOG_AW) << "Source" << _source << "with units" << _units;
return m_mapper->registerSource(_source, _units, _keys); return m_mapper->registerSource(_source, _units, _keys, _disconnectUnused);
} }

View File

@@ -61,7 +61,8 @@ public:
void setTranslate(bool _translate); void setTranslate(bool _translate);
public slots: public slots:
QStringList registerSource(const QString &_source, KSysGuard::Unit _units, const QStringList &_keys); QStringList registerSource(const QString &_source, KSysGuard::Unit _units, const QStringList &_keys,
const bool _disconnectUnused);
private: private:
AWPluginFormatSettings m_settings; AWPluginFormatSettings m_settings;

View File

@@ -436,7 +436,7 @@ int GraphicalItem::showConfiguration(QWidget *_parent, const QVariant &_args)
auto ui = new Ui::GraphicalItem(); auto ui = new Ui::GraphicalItem();
ui->setupUi(dialog); ui->setupUi(dialog);
connect(ui->checkBox_custom, &QCheckBox::stateChanged, [ui](const int state) { changeValue(ui, state); }); connect(ui->checkBox_custom, &QCheckBox::checkStateChanged, [ui](const int state) { changeValue(ui, state); });
connect(ui->comboBox_type, &QComboBox::currentIndexChanged, [ui](const int state) { changeCountState(ui, state); }); connect(ui->comboBox_type, &QComboBox::currentIndexChanged, [ui](const int state) { changeCountState(ui, state); });
connect(ui->toolButton_activeColor, &QToolButton::clicked, [this, ui]() { changeColor(ui); }); connect(ui->toolButton_activeColor, &QToolButton::clicked, [this, ui]() { changeColor(ui); });
connect(ui->toolButton_inactiveColor, &QToolButton::clicked, [this, ui]() { changeColor(ui); }); connect(ui->toolButton_inactiveColor, &QToolButton::clicked, [this, ui]() { changeColor(ui); });
@@ -472,7 +472,7 @@ int GraphicalItem::showConfiguration(QWidget *_parent, const QVariant &_args)
// update UI // update UI
emit(ui->comboBox_type->currentIndexChanged(ui->comboBox_type->currentIndex())); emit(ui->comboBox_type->currentIndexChanged(ui->comboBox_type->currentIndex()));
emit(ui->checkBox_custom->stateChanged(ui->checkBox_custom->checkState())); emit(ui->checkBox_custom->checkStateChanged(ui->checkBox_custom->checkState()));
int ret = dialog->exec(); int ret = dialog->exec();
if (ret == 1) { if (ret == 1) {

View File

@@ -19,7 +19,7 @@
"Id": "org.kde.plasma.desktoppanel", "Id": "org.kde.plasma.desktoppanel",
"License": "GPLv3", "License": "GPLv3",
"Name": "Desktop Panel", "Name": "Desktop Panel",
"Version": "4.0.0", "Version": "4.0.5",
"Website": "https://arcanis.me/projects/awesome-widgets/" "Website": "https://arcanis.me/projects/awesome-widgets/"
}, },
"X-Plasma-API-Minimum-Version": "6.0" "X-Plasma-API-Minimum-Version": "6.0"

View File

@@ -128,8 +128,8 @@ QVariant SystemInfoSource::sendDBusRequest(const QString &_destination, const QS
auto response = bus.call(request, QDBus::BlockWithGui, REQUEST_TIMEOUT); auto response = bus.call(request, QDBus::BlockWithGui, REQUEST_TIMEOUT);
if ((response.type() != QDBusMessage::ReplyMessage) || (response.arguments().isEmpty())) { if (response.type() != QDBusMessage::ReplyMessage || response.arguments().isEmpty()) {
qCWarning(LOG_ESS) << "Error message" << response.errorMessage(); qCWarning(LOG_ESS) << "Error" << response.errorName() << "with message" << response.errorMessage();
return {}; return {};
} else { } else {
return response.arguments().first(); return response.arguments().first();

View File

@@ -5,7 +5,7 @@ find_package(Gettext REQUIRED)
find_package(Qt6 6.6.0 REQUIRED COMPONENTS Core Concurrent DBus Network Qml Test Widgets) find_package(Qt6 6.6.0 REQUIRED COMPONENTS Core Concurrent DBus Network Qml Test Widgets)
add_definitions( add_definitions(
${Qt6Core_DEFINITIONS} ${Qt6DBus_DEFINITIONS} ${Qt6Network_DEFINITIONS} ${Qt6Core_DEFINITIONS} ${Qt6DBus_DEFINITIONS} ${Qt6Network_DEFINITIONS}
${Qt6Qml_DEFINITIONS} ${Qt6Widgets_DEFINITIONS} ${Qt6Widgets_DEFINITIONS}
) )
set(Qt_INCLUDE set(Qt_INCLUDE
${Qt6Core_INCLUDE_DIRS} ${Qt6Concurrent_INCLUDE_DIRS} ${Qt6DBus_INCLUDE_DIRS} ${Qt6Network_INCLUDE_DIRS} ${Qt6Core_INCLUDE_DIRS} ${Qt6Concurrent_INCLUDE_DIRS} ${Qt6DBus_INCLUDE_DIRS} ${Qt6Network_INCLUDE_DIRS}

1249
sources/translations/de.po Normal file

File diff suppressed because it is too large Load Diff