mirror of
				https://github.com/arcan1s/awesome-widgets.git
				synced 2025-10-26 11:23:41 +00:00 
			
		
		
		
	Compare commits
	
		
			5 Commits
		
	
	
		
			release-3.
			...
			0bcceefd47
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 0bcceefd47 | |||
| f27050afbc | |||
| d71f85eaad | |||
| b0df3535a5 | |||
| 4d01b87088 | 
							
								
								
									
										4
									
								
								.github/workflows/build.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								.github/workflows/build.yml
									
									
									
									
										vendored
									
									
								
							| @ -27,10 +27,10 @@ jobs: | |||||||
|       run: pacman -Sy --noconfirm base-devel cmake extra-cmake-modules python util-linux-libs xorg-server-xvfb |       run: pacman -Sy --noconfirm base-devel cmake extra-cmake-modules python util-linux-libs xorg-server-xvfb | ||||||
|      |      | ||||||
|     - name: install dependencies |     - name: install dependencies | ||||||
|       run: pacman -S --noconfirm plasma-workspace ksysguard |       run: pacman -S --noconfirm plasma-workspace | ||||||
|      |      | ||||||
|     - name: configure cmake |     - name: configure cmake | ||||||
|       run: cmake -B build -DKDE_INSTALL_USE_QT_SYS_PATHS=ON -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DBUILD_FUTURE=ON -DBUILD_TESTING=ON sources |       run: cmake -B build -S sources -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DBUILD_FUTURE=ON -DBUILD_TESTING=ON | ||||||
|      |      | ||||||
|     - name: build |     - name: build | ||||||
|       working-directory: /repo/build |       working-directory: /repo/build | ||||||
|  | |||||||
							
								
								
									
										24
									
								
								.github/workflows/release.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										24
									
								
								.github/workflows/release.yml
									
									
									
									
										vendored
									
									
								
							| @ -25,17 +25,17 @@ jobs: | |||||||
|         env: |         env: | ||||||
|           VERSION: ${{ steps.version.outputs.VERSION }} |           VERSION: ${{ steps.version.outputs.VERSION }} | ||||||
|  |  | ||||||
|       - name: build debian package | #      - name: build debian package | ||||||
|         run: | | #        run: | | ||||||
|           sudo apt update && \ | #          sudo apt update && \ | ||||||
|           sudo apt install -yq cmake extra-cmake-modules g++ git gettext make && \ | #          sudo apt install -yq cmake extra-cmake-modules g++ git gettext make && \ | ||||||
|           sudo apt install -yq libkf5i18n-dev libkf5notifications-dev libkf5service-dev \ | #          sudo apt install -yq libkf5i18n-dev libkf5notifications-dev libkf5service-dev \ | ||||||
|             libkf5windowsystem-dev libkf5plasma-dev qtbase5-dev qtdeclarative5-dev \ | #            libkf5windowsystem-dev libkf5plasma-dev qtbase5-dev qtdeclarative5-dev \ | ||||||
|             plasma-workspace-dev && \ | #            plasma-workspace-dev && \ | ||||||
|           cmake -B build-deb -DKDE_INSTALL_USE_QT_SYS_PATHS=ON -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Optimization -DBUILD_FUTURE=ON -DBUILD_DEB_PACKAGE=ON sources && \ | #          cmake -B build-deb -DKDE_INSTALL_USE_QT_SYS_PATHS=ON -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Optimization -DBUILD_FUTURE=ON -DBUILD_DEB_PACKAGE=ON sources && \ | ||||||
|           cd build-deb && \ | #          cd build-deb && \ | ||||||
|           make package && \ | #          make package && \ | ||||||
|           cd .. | #          cd .. | ||||||
|  |  | ||||||
|       - name: release |       - name: release | ||||||
|         uses: softprops/action-gh-release@v1 |         uses: softprops/action-gh-release@v1 | ||||||
| @ -45,7 +45,7 @@ jobs: | |||||||
|             ${{ steps.changelog.outputs.changelog }} |             ${{ steps.changelog.outputs.changelog }} | ||||||
|           files: | |           files: | | ||||||
|             awesome-widgets-*-src.tar.xz |             awesome-widgets-*-src.tar.xz | ||||||
|             build-deb/plasma-widget-awesome-widgets-*.deb | #            build-deb/plasma-widget-awesome-widgets-*.deb | ||||||
|           fail_on_unmatched_files: true |           fail_on_unmatched_files: true | ||||||
|         env: |         env: | ||||||
|           GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |           GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||||||
|  | |||||||
| @ -1,3 +1,6 @@ | |||||||
|  | Ver.4.0.0: | ||||||
|  | * migration to plasma 6 | ||||||
|  |  | ||||||
| Ver.3.5.0: | Ver.3.5.0: | ||||||
| + wayland support | + wayland support | ||||||
| * update code to latest standards | * update code to latest standards | ||||||
| @ -12,7 +15,6 @@ Ver.3.4.2: | |||||||
| * update to new qt api | * update to new qt api | ||||||
| - fix non printable spaces (#142, #143) | - fix non printable spaces (#142, #143) | ||||||
|  |  | ||||||
|  |  | ||||||
| Ver.3.3.3: | Ver.3.3.3: | ||||||
| + add custom keys support (#101) | + add custom keys support (#101) | ||||||
| * DBus interface improvements | * DBus interface improvements | ||||||
|  | |||||||
| @ -1,41 +1,30 @@ | |||||||
| # Maintainer: Evgeniy Alekseev <arcanis at archlinux dot org> | # Maintainer: Evgeniy Alekseev <arcanis at archlinux dot org> | ||||||
|  |  | ||||||
| pkgname=plasma5-applet-awesome-widgets | pkgname=plasma6-applet-awesome-widgets | ||||||
| _pkgname=awesome-widgets | _pkgname=awesome-widgets | ||||||
| pkgver=3.4.3 | pkgver=4.0.0alpha2 | ||||||
| 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=('i686' 'x86_64') | arch=('x86_64') | ||||||
| url="https://arcanis.me/projects/awesome-widgets" | url="https://arcanis.me/projects/awesome-widgets" | ||||||
| license=('GPL3') | license=('GPL3') | ||||||
| depends=('ksysguard' 'plasma-framework') | depends=('plasma-workspace') | ||||||
| optdepends=("catalyst: for GPU monitor" | optdepends=("mpd: for music player monitor") | ||||||
|             "hddtemp: for HDD temperature monitor" |  | ||||||
|             "smartmontools: for HDD temperature monitor" |  | ||||||
|             "mpd: for music player monitor" |  | ||||||
|             "nvidia-utils: for GPU monitor") |  | ||||||
| makedepends=('cmake' 'extra-cmake-modules' 'python') | makedepends=('cmake' 'extra-cmake-modules' 'python') | ||||||
| source=(https://github.com/arcan1s/awesome-widgets/releases/download/V.${pkgver}/${_pkgname}-${pkgver}-src.tar.xz) | source=(https://github.com/arcan1s/awesome-widgets/releases/download/${pkgver}/${_pkgname}-${pkgver}-src.tar.xz) | ||||||
| install=${pkgname}.install | install="$pkgname.install" | ||||||
| md5sums=('5953ba518191bb6fff83cdb8633c735c') |  | ||||||
| backup=('etc/xdg/plasma-dataengine-extsysmon.conf') | backup=('etc/xdg/plasma-dataengine-extsysmon.conf') | ||||||
|  |  | ||||||
| prepare() { |  | ||||||
|   rm -rf "${srcdir}/build" |  | ||||||
|   mkdir "${srcdir}/build" |  | ||||||
| } |  | ||||||
|  |  | ||||||
| build () { | build () { | ||||||
|   cd "${srcdir}/build" |     cmake -B build -S "${_pkgname}" \ | ||||||
|   cmake -DKDE_INSTALL_USE_QT_SYS_PATHS=ON \ |           -DCMAKE_BUILD_TYPE=Optimization \ | ||||||
|         -DCMAKE_BUILD_TYPE=Optimization \ |           -DBUILD_FUTURE=ON \ | ||||||
|         -DCMAKE_INSTALL_PREFIX=/usr \ |           -DBUILD_TESTING=OFF | ||||||
|         -DBUILD_FUTURE=ON \ |     cmake --build build | ||||||
|         "../${_pkgname}" |  | ||||||
|   make |  | ||||||
| } | } | ||||||
|  |  | ||||||
| package() { | package() { | ||||||
|   cd "${srcdir}/build" |       DESTDIR="$pkgdir" cmake --install build | ||||||
|   make DESTDIR="${pkgdir}" install |  | ||||||
| } | } | ||||||
|  |  | ||||||
|  | sha256sums=('b2a7b07a1df6f710f4e0d6e5898933f4ddb131818b922dc4b8e48afe3e98a664') | ||||||
|  | |||||||
							
								
								
									
										81
									
								
								sources/3rdparty/fontdialog/fontdialog.cpp
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										81
									
								
								sources/3rdparty/fontdialog/fontdialog.cpp
									
									
									
									
										vendored
									
									
								
							| @ -39,81 +39,6 @@ void CFont::setCurrentColor(const QColor color) | |||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| int CFont::html2QFont(const int htmlWeight) |  | ||||||
| { |  | ||||||
|     int weight = 16; |  | ||||||
|     switch(htmlWeight) { |  | ||||||
|     case 100: |  | ||||||
|         weight = 16; |  | ||||||
|         break; |  | ||||||
|     case 200: |  | ||||||
|     case 300: |  | ||||||
|         weight = 25; |  | ||||||
|         break; |  | ||||||
|     case 400: |  | ||||||
|         weight = 50; |  | ||||||
|         break; |  | ||||||
|     case 500: |  | ||||||
|     case 600: |  | ||||||
|         weight = 63; |  | ||||||
|         break; |  | ||||||
|     case 700: |  | ||||||
|     case 800: |  | ||||||
|         weight = 75; |  | ||||||
|         break; |  | ||||||
|     case 900: |  | ||||||
|         weight = 87; |  | ||||||
|         break; |  | ||||||
|     default: |  | ||||||
|         break; |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     return weight; |  | ||||||
| } |  | ||||||
|  |  | ||||||
|  |  | ||||||
| int CFont::qFont2html(const int weight) |  | ||||||
| { |  | ||||||
|     int htmlWeight = 400; |  | ||||||
|     switch(weight) { |  | ||||||
|     case 16: |  | ||||||
|         htmlWeight = 100; |  | ||||||
|         break; |  | ||||||
|     case 25: |  | ||||||
|         htmlWeight = 300; |  | ||||||
|         break; |  | ||||||
|     case 50: |  | ||||||
|         htmlWeight = 400; |  | ||||||
|         break; |  | ||||||
|     case 63: |  | ||||||
|         htmlWeight = 600; |  | ||||||
|         break; |  | ||||||
|     case 75: |  | ||||||
|         htmlWeight = 800; |  | ||||||
|         break; |  | ||||||
|     case 87: |  | ||||||
|         htmlWeight = 900; |  | ||||||
|         break; |  | ||||||
|     default: |  | ||||||
|         break; |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     return htmlWeight; |  | ||||||
| } |  | ||||||
|  |  | ||||||
|  |  | ||||||
| int CFont::htmlWeight() |  | ||||||
| { |  | ||||||
|     return CFont::qFont2html(weight()); |  | ||||||
| } |  | ||||||
|  |  | ||||||
|  |  | ||||||
| void CFont::setHtmlWeight(const int htmlWeight) |  | ||||||
| { |  | ||||||
|     setWeight(CFont::html2QFont(htmlWeight)); |  | ||||||
| } |  | ||||||
|  |  | ||||||
|  |  | ||||||
| CFont CFont::fromQFont(const QFont font, const QColor color) | CFont CFont::fromQFont(const QFont font, const QColor color) | ||||||
| { | { | ||||||
|     return CFont(font.family(), font.pointSize(), font.weight(), font.italic(), color); |     return CFont(font.family(), font.pointSize(), font.weight(), font.italic(), color); | ||||||
| @ -133,7 +58,7 @@ CFontDialog::CFontDialog(QWidget *parent, bool needWeight, bool needItalic) | |||||||
|     setLayout(mainGrid); |     setLayout(mainGrid); | ||||||
|  |  | ||||||
|     colorBox = new QComboBox(this); |     colorBox = new QComboBox(this); | ||||||
|     connect(colorBox, SIGNAL(currentIndexChanged(QString)), this, SLOT(updateColor(QString))); |     connect(colorBox, &QComboBox::currentTextChanged, this, &CFontDialog::updateColor); | ||||||
|     QStringList colorNames = QColor::colorNames(); |     QStringList colorNames = QColor::colorNames(); | ||||||
|     int index = 0; |     int index = 0; | ||||||
|     for (int i=0; i<colorNames.count(); i++) { |     for (int i=0; i<colorNames.count(); i++) { | ||||||
| @ -156,8 +81,8 @@ CFontDialog::CFontDialog(QWidget *parent, bool needWeight, bool needItalic) | |||||||
|  |  | ||||||
|     buttons = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, |     buttons = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, | ||||||
|                                    Qt::Horizontal, this); |                                    Qt::Horizontal, this); | ||||||
|     QObject::connect(buttons, SIGNAL(accepted()), this, SLOT(accept())); |     QObject::connect(buttons, &QDialogButtonBox::accepted, this, &CFontDialog::accept); | ||||||
|     QObject::connect(buttons, SIGNAL(rejected()), this, SLOT(reject())); |     QObject::connect(buttons, &QDialogButtonBox::rejected, this, &CFontDialog::reject); | ||||||
|     mainGrid->addWidget(buttons, 1, 0, 1, 5); |     mainGrid->addWidget(buttons, 1, 0, 1, 5); | ||||||
|  |  | ||||||
|     italicBox->setHidden(!needItalic); |     italicBox->setHidden(!needItalic); | ||||||
|  | |||||||
							
								
								
									
										11
									
								
								sources/3rdparty/fontdialog/fontdialog.h
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										11
									
								
								sources/3rdparty/fontdialog/fontdialog.h
									
									
									
									
										vendored
									
									
								
							| @ -15,8 +15,7 @@ | |||||||
|  *  License along with this library.                                       * |  *  License along with this library.                                       * | ||||||
|  ***************************************************************************/ |  ***************************************************************************/ | ||||||
|  |  | ||||||
| #ifndef FONTDIALOG_H | #pragma once | ||||||
| #define FONTDIALOG_H |  | ||||||
|  |  | ||||||
| #include <QComboBox> | #include <QComboBox> | ||||||
| #include <QDialog> | #include <QDialog> | ||||||
| @ -34,11 +33,6 @@ public: | |||||||
|     // color properties |     // color properties | ||||||
|     QColor color(); |     QColor color(); | ||||||
|     void setCurrentColor(const QColor color); |     void setCurrentColor(const QColor color); | ||||||
|     // html weight properties |  | ||||||
|     static int html2QFont(const int htmlWeight); |  | ||||||
|     static int qFont2html(const int weight); |  | ||||||
|     int htmlWeight(); |  | ||||||
|     void setHtmlWeight(const int htmlWeight); |  | ||||||
|     // conversion to QFont |     // conversion to QFont | ||||||
|     static CFont fromQFont(const QFont font, |     static CFont fromQFont(const QFont font, | ||||||
|                            const QColor color = QColor(QString("#000000"))); |                            const QColor color = QColor(QString("#000000"))); | ||||||
| @ -77,6 +71,3 @@ private: | |||||||
|     QSpinBox *sizeBox; |     QSpinBox *sizeBox; | ||||||
|     QSpinBox *weightBox; |     QSpinBox *weightBox; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| #endif /* FONTDIALOG_H */ |  | ||||||
|  | |||||||
| @ -14,9 +14,9 @@ project(awesomewidgets) | |||||||
| set(PROJECT_AUTHOR "Evgeniy Alekseev") | set(PROJECT_AUTHOR "Evgeniy Alekseev") | ||||||
| set(PROJECT_CONTACT "esalexeev@gmail.com") | set(PROJECT_CONTACT "esalexeev@gmail.com") | ||||||
| set(PROJECT_LICENSE "GPL3") | set(PROJECT_LICENSE "GPL3") | ||||||
| set(PROJECT_VERSION_MAJOR "3") | set(PROJECT_VERSION_MAJOR "4") | ||||||
| set(PROJECT_VERSION_MINOR "5") | set(PROJECT_VERSION_MINOR "0") | ||||||
| set(PROJECT_VERSION_PATCH "1") | set(PROJECT_VERSION_PATCH "0") | ||||||
| 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 "") | ||||||
|  | |||||||
| @ -15,9 +15,7 @@ | |||||||
|  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * |  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * | ||||||
|  ***************************************************************************/ |  ***************************************************************************/ | ||||||
|  |  | ||||||
|  | #pragma once | ||||||
| #ifndef AWDEBUG_H |  | ||||||
| #define AWDEBUG_H |  | ||||||
|  |  | ||||||
| #include <QLoggingCategory> | #include <QLoggingCategory> | ||||||
|  |  | ||||||
| @ -42,6 +40,3 @@ Q_DECLARE_LOGGING_CATEGORY(LOG_DP) | |||||||
| Q_DECLARE_LOGGING_CATEGORY(LOG_ESM) | Q_DECLARE_LOGGING_CATEGORY(LOG_ESM) | ||||||
| Q_DECLARE_LOGGING_CATEGORY(LOG_ESS) | Q_DECLARE_LOGGING_CATEGORY(LOG_ESS) | ||||||
| Q_DECLARE_LOGGING_CATEGORY(LOG_LIB) | Q_DECLARE_LOGGING_CATEGORY(LOG_LIB) | ||||||
|  |  | ||||||
|  |  | ||||||
| #endif /* AWDEBUG_H */ |  | ||||||
|  | |||||||
| @ -1,7 +1,7 @@ | |||||||
| set(SUBPROJECT plasma_applet_awesome-widget) | set(SUBPROJECT plasma_applet_awesome-widget) | ||||||
| message(STATUS "Subproject ${SUBPROJECT}") | message(STATUS "Subproject ${SUBPROJECT}") | ||||||
|  |  | ||||||
| configure_file(metadata.desktop ${CMAKE_CURRENT_SOURCE_DIR}/package/metadata.desktop) | configure_file(metadata.json ${CMAKE_CURRENT_SOURCE_DIR}/package/metadata.json) | ||||||
|  |  | ||||||
| add_subdirectory(plugin) | add_subdirectory(plugin) | ||||||
| plasma_install_package(package org.kde.plasma.awesomewidget) | plasma_install_package(package org.kde.plasma.awesomewidget) | ||||||
|  | |||||||
| @ -1,26 +0,0 @@ | |||||||
| [Desktop Entry] |  | ||||||
| Encoding=UTF-8 |  | ||||||
| Name=Awesome Widget |  | ||||||
| Comment=A minimalistic Plasmoid |  | ||||||
| Comment[en]=A minimalistic Plasmoid |  | ||||||
| Comment[es]=Un plasmoide minimalista |  | ||||||
| Comment[es]=Un script Plasmoïde minimaliste |  | ||||||
| Comment[pt_BR]=Um script Plasmoid |  | ||||||
| Comment[ru]=Минималистичный плазмоид |  | ||||||
| Comment[uk]=Мінімалістичний плазмоїд |  | ||||||
| X-KDE-ServiceTypes=Plasma/Applet |  | ||||||
| Type=Service |  | ||||||
| Icon=utilities-system-monitor |  | ||||||
|  |  | ||||||
| X-KDE-ServiceTypes=Plasma/Applet |  | ||||||
| X-Plasma-API=declarativeappletscript |  | ||||||
| X-Plasma-MainScript=ui/main.qml |  | ||||||
|  |  | ||||||
| X-KDE-PluginInfo-Author=Evgeniy Alekseev aka arcanis |  | ||||||
| X-KDE-PluginInfo-Email=esalexeev@gmail.com |  | ||||||
| X-KDE-PluginInfo-Name=org.kde.plasma.awesomewidget |  | ||||||
| X-KDE-PluginInfo-Version=@PROJECT_VERSION@ |  | ||||||
| X-KDE-PluginInfo-Website=https://arcanis.me/projects/awesome-widgets/ |  | ||||||
| X-KDE-PluginInfo-Category=System Information |  | ||||||
| X-KDE-PluginInfo-License=GPLv3 |  | ||||||
| X-KDE-PluginInfo-EnabledByDefault=true |  | ||||||
							
								
								
									
										26
									
								
								sources/awesome-widget/metadata.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								sources/awesome-widget/metadata.json
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,26 @@ | |||||||
|  | { | ||||||
|  |     "KPackageStructure": "Plasma/Applet", | ||||||
|  |     "KPlugin": { | ||||||
|  |         "Authors": [ | ||||||
|  |             { | ||||||
|  |                 "Email": "esalexeev@gmail.com", | ||||||
|  |                 "Name": "Evgeniy Alekseev aka arcanis" | ||||||
|  |             } | ||||||
|  |         ], | ||||||
|  |         "Category": "System Information", | ||||||
|  |         "Description": "A minimalistic Plasmoid", | ||||||
|  |         "Description[en]": "A minimalistic Plasmoid", | ||||||
|  |         "Description[es]": "Un script Plasmoïde minimaliste", | ||||||
|  |         "Description[pt_BR]": "Um script Plasmoid", | ||||||
|  |         "Description[ru]": "Минималистичный плазмоид", | ||||||
|  |         "Description[uk]": "Мінімалістичний плазмоїд", | ||||||
|  |         "EnabledByDefault": true, | ||||||
|  |         "Icon": "utilities-system-monitor", | ||||||
|  |         "Id": "org.kde.plasma.awesomewidget", | ||||||
|  |         "License": "GPLv3", | ||||||
|  |         "Name": "Awesome Widget", | ||||||
|  |         "Version": "@PROJECT_VERSION@", | ||||||
|  |         "Website": "https://arcanis.me/projects/awesome-widgets/" | ||||||
|  |     }, | ||||||
|  |     "X-Plasma-API-Minimum-Version": "6.0" | ||||||
|  | } | ||||||
| @ -15,7 +15,7 @@ | |||||||
|  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * |  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * | ||||||
|  ***************************************************************************/ |  ***************************************************************************/ | ||||||
|  |  | ||||||
| import QtQuick 2.0 | import QtQuick 2.15 | ||||||
|  |  | ||||||
| import org.kde.plasma.configuration 2.0 | import org.kde.plasma.configuration 2.0 | ||||||
|  |  | ||||||
|  | |||||||
| @ -7,150 +7,150 @@ | |||||||
|  |  | ||||||
|     <group name="Widget"> |     <group name="Widget"> | ||||||
|         <!--   widget --> |         <!--   widget --> | ||||||
|         <entry name="text" type="string"> |         <entry name="text" type="String"> | ||||||
|             <default>[cpu: $cpu%] [mem: $mem%] [swap: $swap%] [$netdev: $down/$upKB/s]</default> |             <default>[cpu: $cpu%] [mem: $mem%] [swap: $swap%] [$netdev: $down/$upKB/s]</default> | ||||||
|         </entry> |         </entry> | ||||||
|     </group> |     </group> | ||||||
|  |  | ||||||
|     <group name="Advanced"> |     <group name="Advanced"> | ||||||
|         <!--   advanced --> |         <!--   advanced --> | ||||||
|         <entry name="background" type="bool"> |         <entry name="background" type="Bool"> | ||||||
|             <default>true</default> |             <default>true</default> | ||||||
|         </entry> |         </entry> | ||||||
|         <entry name="translateStrings" type="bool"> |         <entry name="translateStrings" type="Bool"> | ||||||
|             <default>true</default> |             <default>true</default> | ||||||
|         </entry> |         </entry> | ||||||
|         <entry name="wrapNewLines" type="bool"> |         <entry name="wrapNewLines" type="Bool"> | ||||||
|             <default>false</default> |             <default>false</default> | ||||||
|         </entry> |         </entry> | ||||||
|         <entry name="wrapText" type="bool"> |         <entry name="wrapText" type="Bool"> | ||||||
|             <default>false</default> |             <default>false</default> | ||||||
|         </entry> |         </entry> | ||||||
|         <entry name="notify" type="bool"> |         <entry name="notify" type="Bool"> | ||||||
|             <default>true</default> |             <default>true</default> | ||||||
|         </entry> |         </entry> | ||||||
|         <entry name="checkUpdates" type="bool"> |         <entry name="checkUpdates" type="Bool"> | ||||||
|             <default>true</default> |             <default>true</default> | ||||||
|         </entry> |         </entry> | ||||||
|         <entry name="optimize" type="bool"> |         <entry name="optimize" type="Bool"> | ||||||
|             <default>true</default> |             <default>true</default> | ||||||
|         </entry> |         </entry> | ||||||
|         <entry name="height" type="int"> |         <entry name="height" type="Int"> | ||||||
|             <default>0</default> |             <default>0</default> | ||||||
|         </entry> |         </entry> | ||||||
|         <entry name="width" type="int"> |         <entry name="width" type="Int"> | ||||||
|             <default>0</default> |             <default>0</default> | ||||||
|         </entry> |         </entry> | ||||||
|         <entry name="interval" type="int"> |         <entry name="interval" type="Int"> | ||||||
|             <default>1000</default> |             <default>1000</default> | ||||||
|         </entry> |         </entry> | ||||||
|         <entry name="queueLimit" type="int"> |         <entry name="queueLimit" type="Int"> | ||||||
|             <default>0</default> |             <default>0</default> | ||||||
|         </entry> |         </entry> | ||||||
|         <entry name="tempUnits" type="string"> |         <entry name="tempUnits" type="String"> | ||||||
|             <default>Celsius</default> |             <default>Celsius</default> | ||||||
|         </entry> |         </entry> | ||||||
|         <entry name="customTime" type="string"> |         <entry name="customTime" type="String"> | ||||||
|             <default>$hh:$mm</default> |             <default>$hh:$mm</default> | ||||||
|         </entry> |         </entry> | ||||||
|         <entry name="customUptime" type="string"> |         <entry name="customUptime" type="String"> | ||||||
|             <default>$dd,$hh,$mm</default> |             <default>$dd,$hh,$mm</default> | ||||||
|         </entry> |         </entry> | ||||||
|         <entry name="acOnline" type="string"> |         <entry name="acOnline" type="String"> | ||||||
|             <default>(*)</default> |             <default>(*)</default> | ||||||
|         </entry> |         </entry> | ||||||
|         <entry name="acOffline" type="string"> |         <entry name="acOffline" type="String"> | ||||||
|             <default>( )</default> |             <default>( )</default> | ||||||
|         </entry> |         </entry> | ||||||
|         <entry name="telemetryCount" type="int"> |         <entry name="telemetryCount" type="Int"> | ||||||
|             <default>100</default> |             <default>100</default> | ||||||
|         </entry> |         </entry> | ||||||
|         <entry name="telemetryRemote" type="bool"> |         <entry name="telemetryRemote" type="Bool"> | ||||||
|             <default>false</default> |             <default>false</default> | ||||||
|         </entry> |         </entry> | ||||||
|         <entry name="telemetryId" type="string"> |         <entry name="telemetryId" type="String"> | ||||||
|             <default></default> |             <default></default> | ||||||
|         </entry> |         </entry> | ||||||
|     </group> |     </group> | ||||||
|  |  | ||||||
|     <group name="Tooltip"> |     <group name="Tooltip"> | ||||||
|         <entry name="tooltipNumber" type="int"> |         <entry name="tooltipNumber" type="Int"> | ||||||
|             <default>100</default> |             <default>100</default> | ||||||
|         </entry> |         </entry> | ||||||
|         <entry name="useTooltipBackground" type="bool"> |         <entry name="useTooltipBackground" type="Bool"> | ||||||
|             <default>true</default> |             <default>true</default> | ||||||
|         </entry> |         </entry> | ||||||
|         <entry name="tooltipBackground" type="string"> |         <entry name="tooltipBackground" type="String"> | ||||||
|             <default>#ffffff</default> |             <default>#ffffff</default> | ||||||
|         </entry> |         </entry> | ||||||
|         <entry name="cpuTooltip" type="bool"> |         <entry name="cpuTooltip" type="Bool"> | ||||||
|             <default>true</default> |             <default>true</default> | ||||||
|         </entry> |         </entry> | ||||||
|         <entry name="cpuTooltipColor" type="string"> |         <entry name="cpuTooltipColor" type="String"> | ||||||
|             <default>#ff0000</default> |             <default>#ff0000</default> | ||||||
|         </entry> |         </entry> | ||||||
|         <entry name="cpuclTooltip" type="bool"> |         <entry name="cpuclTooltip" type="Bool"> | ||||||
|             <default>true</default> |             <default>true</default> | ||||||
|         </entry> |         </entry> | ||||||
|         <entry name="cpuclTooltipColor" type="string"> |         <entry name="cpuclTooltipColor" type="String"> | ||||||
|             <default>#00ff00</default> |             <default>#00ff00</default> | ||||||
|         </entry> |         </entry> | ||||||
|         <entry name="memTooltip" type="bool"> |         <entry name="memTooltip" type="Bool"> | ||||||
|             <default>true</default> |             <default>true</default> | ||||||
|         </entry> |         </entry> | ||||||
|         <entry name="memTooltipColor" type="string"> |         <entry name="memTooltipColor" type="String"> | ||||||
|             <default>#0000ff</default> |             <default>#0000ff</default> | ||||||
|         </entry> |         </entry> | ||||||
|         <entry name="swapTooltip" type="bool"> |         <entry name="swapTooltip" type="Bool"> | ||||||
|             <default>true</default> |             <default>true</default> | ||||||
|         </entry> |         </entry> | ||||||
|         <entry name="swapTooltipColor" type="string"> |         <entry name="swapTooltipColor" type="String"> | ||||||
|             <default>#ffff00</default> |             <default>#ffff00</default> | ||||||
|         </entry> |         </entry> | ||||||
|         <entry name="downkbTooltip" type="bool"> |         <entry name="downkbTooltip" type="Bool"> | ||||||
|             <default>true</default> |             <default>true</default> | ||||||
|         </entry> |         </entry> | ||||||
|         <entry name="downkbTooltipColor" type="string"> |         <entry name="downkbTooltipColor" type="String"> | ||||||
|             <default>#00ffff</default> |             <default>#00ffff</default> | ||||||
|         </entry> |         </entry> | ||||||
|         <entry name="upkbTooltipColor" type="string"> |         <entry name="upkbTooltipColor" type="String"> | ||||||
|             <default>#ff00ff</default> |             <default>#ff00ff</default> | ||||||
|         </entry> |         </entry> | ||||||
|         <entry name="batTooltip" type="bool"> |         <entry name="batTooltip" type="Bool"> | ||||||
|             <default>true</default> |             <default>true</default> | ||||||
|         </entry> |         </entry> | ||||||
|         <entry name="batTooltipColor" type="string"> |         <entry name="batTooltipColor" type="String"> | ||||||
|             <default>#008800</default> |             <default>#008800</default> | ||||||
|         </entry> |         </entry> | ||||||
|         <entry name="batInTooltipColor" type="string"> |         <entry name="batInTooltipColor" type="String"> | ||||||
|             <default>#880000</default> |             <default>#880000</default> | ||||||
|         </entry> |         </entry> | ||||||
|     </group> |     </group> | ||||||
|  |  | ||||||
|     <group name="Appearance"> |     <group name="Appearance"> | ||||||
|         <!--   appearance --> |         <!--   appearance --> | ||||||
|         <entry name="textAlign" type="string"> |         <entry name="textAlign" type="String"> | ||||||
|             <default>center</default> |             <default>center</default> | ||||||
|         </entry> |         </entry> | ||||||
|         <entry name="fontFamily" type="string"> |         <entry name="fontFamily" type="String"> | ||||||
|             <default>Terminus</default> |             <default>Terminus</default> | ||||||
|         </entry> |         </entry> | ||||||
|         <entry name="fontSize" type="int"> |         <entry name="fontSize" type="Int"> | ||||||
|             <default>12</default> |             <default>12</default> | ||||||
|         </entry> |         </entry> | ||||||
|         <entry name="fontColor" type="string"> |         <entry name="fontColor" type="String"> | ||||||
|             <default>#000000</default> |             <default>#000000</default> | ||||||
|         </entry> |         </entry> | ||||||
|         <entry name="fontWeight" type="string"> |         <entry name="fontWeight" type="String"> | ||||||
|             <default>normal</default> |             <default>normal</default> | ||||||
|         </entry> |         </entry> | ||||||
|         <entry name="fontStyle" type="string"> |         <entry name="fontStyle" type="String"> | ||||||
|             <default>normal</default> |             <default>normal</default> | ||||||
|         </entry> |         </entry> | ||||||
|         <entry name="textStyle" type="string"> |         <entry name="textStyle" type="String"> | ||||||
|             <default>normal</default> |             <default>normal</default> | ||||||
|         </entry> |         </entry> | ||||||
|         <entry name="textStyleColor" type="string"> |         <entry name="textStyleColor" type="String"> | ||||||
|             <default>#000000</default> |             <default>#000000</default> | ||||||
|         </entry> |         </entry> | ||||||
|     </group> |     </group> | ||||||
|  | |||||||
| @ -15,28 +15,21 @@ | |||||||
|  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * |  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * | ||||||
|  ***************************************************************************/ |  ***************************************************************************/ | ||||||
|  |  | ||||||
| import QtQuick 2.0 | import QtQuick 2.15 | ||||||
|  | import org.kde.kcmutils as KCM | ||||||
|  |  | ||||||
| import org.kde.plasma.private.awesomewidget 1.0 | import org.kde.plasma.private.awesomewidget 1.0 | ||||||
|  |  | ||||||
|  |  | ||||||
| Item { | KCM.SimpleKCM { | ||||||
|     id: aboutPage |     id: aboutPage | ||||||
|  |  | ||||||
|     // backend |     // backend | ||||||
|     AWActions { |     AWActions { | ||||||
|         id: awActions |         id: awActions | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     width: childrenRect.width |  | ||||||
|     height: childrenRect.height |  | ||||||
|  |  | ||||||
|     property bool debug: awActions.isDebugEnabled() |  | ||||||
|  |  | ||||||
|     AboutTab { |     AboutTab { | ||||||
|         textProvider: awActions |         textProvider: awActions | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     Component.onCompleted: { |  | ||||||
|         if (debug) console.debug() |  | ||||||
|     } |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -15,26 +15,21 @@ | |||||||
|  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * |  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * | ||||||
|  ***************************************************************************/ |  ***************************************************************************/ | ||||||
|  |  | ||||||
| import QtQuick 2.0 | import QtQuick 2.15 | ||||||
| import QtQuick.Controls 1.3 as QtControls | import QtQuick.Controls | ||||||
|  | import org.kde.kcmutils as KCM | ||||||
|  |  | ||||||
| import org.kde.plasma.private.awesomewidget 1.0 | import org.kde.plasma.private.awesomewidget 1.0 | ||||||
|  |  | ||||||
|  |  | ||||||
| Item { | KCM.SimpleKCM { | ||||||
|     id: advancedPage |     id: advancedPage | ||||||
|  |  | ||||||
|     // backend |     // backend | ||||||
|     AWActions { |     AWActions { | ||||||
|         id: awActions |         id: awActions | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     width: childrenRect.width |  | ||||||
|     height: childrenRect.height |  | ||||||
|     implicitWidth: pageColumn.implicitWidth |  | ||||||
|     implicitHeight: pageColumn.implicitHeight |  | ||||||
|  |  | ||||||
|     property bool debug: awActions.isDebugEnabled() |  | ||||||
|  |  | ||||||
|     property alias cfg_background: background.checked |     property alias cfg_background: background.checked | ||||||
|     property alias cfg_translateStrings: translate.checked |     property alias cfg_translateStrings: translate.checked | ||||||
|     property alias cfg_wrapNewLines: wrapNewLines.checked |     property alias cfg_wrapNewLines: wrapNewLines.checked | ||||||
| @ -55,7 +50,6 @@ Item { | |||||||
|     property alias cfg_telemetryRemote: telemetryRemote.checked |     property alias cfg_telemetryRemote: telemetryRemote.checked | ||||||
|     property alias cfg_telemetryId: telemetryId.value |     property alias cfg_telemetryId: telemetryId.value | ||||||
|  |  | ||||||
|  |  | ||||||
|     Column { |     Column { | ||||||
|         id: pageColumn |         id: pageColumn | ||||||
|         anchors.fill: parent |         anchors.fill: parent | ||||||
| @ -135,37 +129,37 @@ Item { | |||||||
|             id: tempUnits |             id: tempUnits | ||||||
|             model: [ |             model: [ | ||||||
|                 { |                 { | ||||||
|                     'label': i18n("Celsius"), |                     "label": i18n("Celsius"), | ||||||
|                     'name': "Celsius" |                     "name": "Celsius" | ||||||
|                 }, |                 }, | ||||||
|                 { |                 { | ||||||
|                     'label': i18n("Fahrenheit"), |                     "label": i18n("Fahrenheit"), | ||||||
|                     'name': "Fahrenheit" |                     "name": "Fahrenheit" | ||||||
|                 }, |                 }, | ||||||
|                 { |                 { | ||||||
|                     'label': i18n("Kelvin"), |                     "label": i18n("Kelvin"), | ||||||
|                     'name': "Kelvin" |                     "name": "Kelvin" | ||||||
|                 }, |                 }, | ||||||
|                 { |                 { | ||||||
|                     'label': i18n("Reaumur"), |                     "label": i18n("Reaumur"), | ||||||
|                     'name': "Reaumur" |                     "name": "Reaumur" | ||||||
|                 }, |                 }, | ||||||
|                 { |                 { | ||||||
|                     'label': i18n("cm^-1"), |                     "label": i18n("cm^-1"), | ||||||
|                     'name': "cm^-1" |                     "name": "cm^-1" | ||||||
|                 }, |                 }, | ||||||
|                 { |                 { | ||||||
|                     'label': i18n("kJ/mol"), |                     "label": i18n("kJ/mol"), | ||||||
|                     'name': "kJ/mol" |                     "name": "kJ/mol" | ||||||
|                 }, |                 }, | ||||||
|                 { |                 { | ||||||
|                     'label': i18n("kcal/mol"), |                     "label": i18n("kcal/mol"), | ||||||
|                     'name': "kcal/mol" |                     "name": "kcal/mol" | ||||||
|                 } |                 } | ||||||
|             ] |             ] | ||||||
|             text: i18n("Temperature units") |             text: i18n("Temperature units") | ||||||
|             value: plasmoid.configuration.tempUnits |             value: plasmoid.configuration.tempUnits | ||||||
|             onValueEdited: cfg_tempUnits = newValue |             onValueEdited: newValue => cfg_tempUnits = newValue | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         LineSelector { |         LineSelector { | ||||||
| @ -192,18 +186,20 @@ Item { | |||||||
|             value: plasmoid.configuration.acOffline |             value: plasmoid.configuration.acOffline | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         QtControls.GroupBox { |         GroupBox { | ||||||
|             height: implicitHeight |  | ||||||
|             width: parent.width |             width: parent.width | ||||||
|  |             height: implicitHeight | ||||||
|             title: i18n("Actions") |             title: i18n("Actions") | ||||||
|  |  | ||||||
|             Column { |             Column { | ||||||
|                 height: implicitHeight |                 height: implicitHeight | ||||||
|                 width: parent.width |                 width: parent.width | ||||||
|  |  | ||||||
|                 ButtonSelector { |                 ButtonSelector { | ||||||
|                     value: i18n("Drop key cache") |                     value: i18n("Drop key cache") | ||||||
|                     onButtonActivated: awActions.dropCache() |                     onButtonActivated: awActions.dropCache() | ||||||
|                 } |                 } | ||||||
|  |  | ||||||
|                 ButtonSelector { |                 ButtonSelector { | ||||||
|                     ExportDialog { |                     ExportDialog { | ||||||
|                         id: saveConfigAs |                         id: saveConfigAs | ||||||
| @ -212,11 +208,12 @@ Item { | |||||||
|                     value: i18n("Export configuration") |                     value: i18n("Export configuration") | ||||||
|                     onButtonActivated: saveConfigAs.open() |                     onButtonActivated: saveConfigAs.open() | ||||||
|                 } |                 } | ||||||
|  |  | ||||||
|                 ButtonSelector { |                 ButtonSelector { | ||||||
|                     ImportDialog { |                     ImportDialog { | ||||||
|                         id: loadConfigFrom |                         id: loadConfigFrom | ||||||
|                         onConfigurationReceived: { |                         onConfigurationReceived: { | ||||||
|                             for (var key in configuration) |                             for (const key in configuration) | ||||||
|                                 plasmoid.configuration[key] = configuration[key] |                                 plasmoid.configuration[key] = configuration[key] | ||||||
|                         } |                         } | ||||||
|                     } |                     } | ||||||
| @ -226,7 +223,7 @@ Item { | |||||||
|             } |             } | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         QtControls.GroupBox { |         GroupBox { | ||||||
|             height: implicitHeight |             height: implicitHeight | ||||||
|             width: parent.width |             width: parent.width | ||||||
|             title: i18n("Telemetry") |             title: i18n("Telemetry") | ||||||
| @ -234,10 +231,12 @@ Item { | |||||||
|             Column { |             Column { | ||||||
|                 height: implicitHeight |                 height: implicitHeight | ||||||
|                 width: parent.width |                 width: parent.width | ||||||
|  |  | ||||||
|                 CheckBoxSelector { |                 CheckBoxSelector { | ||||||
|                     id: telemetryRemote |                     id: telemetryRemote | ||||||
|                     text: i18n("Enable remote telemetry") |                     text: i18n("Enable remote telemetry") | ||||||
|                 } |                 } | ||||||
|  |  | ||||||
|                 IntegerSelector { |                 IntegerSelector { | ||||||
|                     id: telemetryCount |                     id: telemetryCount | ||||||
|                     maximumValue: 10000 |                     maximumValue: 10000 | ||||||
| @ -246,6 +245,7 @@ Item { | |||||||
|                     text: i18n("History count") |                     text: i18n("History count") | ||||||
|                     value: plasmoid.configuration.telemetryCount |                     value: plasmoid.configuration.telemetryCount | ||||||
|                 } |                 } | ||||||
|  |  | ||||||
|                 LineSelector { |                 LineSelector { | ||||||
|                     id: telemetryId |                     id: telemetryId | ||||||
|                     text: i18n("Telemetry ID") |                     text: i18n("Telemetry ID") | ||||||
| @ -254,9 +254,4 @@ Item { | |||||||
|             } |             } | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|     Component.onCompleted: { |  | ||||||
|         if (debug) console.debug() |  | ||||||
|     } |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -15,31 +15,22 @@ | |||||||
|  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * |  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * | ||||||
|  ***************************************************************************/ |  ***************************************************************************/ | ||||||
|  |  | ||||||
| import QtQuick 2.0 | import QtQuick 2.15 | ||||||
|  | import org.kde.kcmutils as KCM | ||||||
|  |  | ||||||
| import org.kde.plasma.private.awesomewidget 1.0 | import org.kde.plasma.private.awesomewidget 1.0 | ||||||
| import "." | import "." | ||||||
|  |  | ||||||
|  |  | ||||||
| Item { | KCM.SimpleKCM { | ||||||
|     id: appearancePage |     id: appearancePage | ||||||
|     // backend |  | ||||||
|     AWActions { |  | ||||||
|         id: awActions |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     width: childrenRect.width |  | ||||||
|     height: childrenRect.height |  | ||||||
|     implicitWidth: pageColumn.implicitWidth |  | ||||||
|     implicitHeight: pageColumn.implicitHeight |  | ||||||
|  |  | ||||||
|     property bool debug: awActions.isDebugEnabled() |  | ||||||
|     property variant weight: { |     property variant weight: { | ||||||
|         25: 0, |         25: 0, | ||||||
|         50: 1, |         50: 1, | ||||||
|         63: 3, |         63: 3, | ||||||
|         75: 4, |         75: 4, | ||||||
|         87: 5 |         87: 5, | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     property alias cfg_fontFamily: font.value |     property alias cfg_fontFamily: font.value | ||||||
| @ -50,7 +41,6 @@ Item { | |||||||
|     property alias cfg_textStyleColor: selectStyleColor.value |     property alias cfg_textStyleColor: selectStyleColor.value | ||||||
|     property string cfg_textStyle: textStyle.value |     property string cfg_textStyle: textStyle.value | ||||||
|  |  | ||||||
|  |  | ||||||
|     Column { |     Column { | ||||||
|         id: pageColumn |         id: pageColumn | ||||||
|         anchors.fill: parent |         anchors.fill: parent | ||||||
| @ -75,7 +65,7 @@ Item { | |||||||
|             model: General.fontWeightModel |             model: General.fontWeightModel | ||||||
|             text: i18n("Font weight") |             text: i18n("Font weight") | ||||||
|             value: plasmoid.configuration.fontWeight |             value: plasmoid.configuration.fontWeight | ||||||
|             onValueEdited: cfg_fontWeight = newValue |             onValueEdited: newValue => cfg_fontWeight = newValue | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         ComboBoxSelector { |         ComboBoxSelector { | ||||||
| @ -83,7 +73,7 @@ Item { | |||||||
|             model: General.fontStyleModel |             model: General.fontStyleModel | ||||||
|             text: i18n("Font style") |             text: i18n("Font style") | ||||||
|             value: plasmoid.configuration.fontStyle |             value: plasmoid.configuration.fontStyle | ||||||
|             onValueEdited: cfg_fontStyle = newValue |             onValueEdited: newValue => cfg_fontStyle = newValue | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         ColorSelector { |         ColorSelector { | ||||||
| @ -97,7 +87,7 @@ Item { | |||||||
|             model: General.textStyleModel |             model: General.textStyleModel | ||||||
|             text: i18n("Style") |             text: i18n("Style") | ||||||
|             value: plasmoid.configuration.textStyle |             value: plasmoid.configuration.textStyle | ||||||
|             onValueEdited: cfg_textStyle = newValue |             onValueEdited: newValue => cfg_textStyle = newValue | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         ColorSelector { |         ColorSelector { | ||||||
| @ -106,9 +96,4 @@ Item { | |||||||
|             value: plasmoid.configuration.textStyleColor |             value: plasmoid.configuration.textStyleColor | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|     Component.onCompleted: { |  | ||||||
|         if (debug) console.debug() |  | ||||||
|     } |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -15,105 +15,46 @@ | |||||||
|  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * |  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * | ||||||
|  ***************************************************************************/ |  ***************************************************************************/ | ||||||
|  |  | ||||||
| import QtQuick 2.0 | import QtQuick 2.15 | ||||||
| import QtQuick.Controls 1.3 as QtControls | import QtQuick.Controls | ||||||
| import QtQuick.Dialogs 1.1 as QtDialogs | import org.kde.kcmutils as KCM | ||||||
|  |  | ||||||
| import org.kde.plasma.private.awesomewidget 1.0 | import org.kde.plasma.private.awesomewidget 1.0 | ||||||
|  |  | ||||||
|  |  | ||||||
| Item { | KCM.SimpleKCM { | ||||||
|     id: dataenginePage |     id: dataenginePage | ||||||
|  |  | ||||||
|     // backend |     // backend | ||||||
|     AWKeys { |     AWKeys { | ||||||
|         id: awKeys |         id: awKeys | ||||||
|     } |     } | ||||||
|     AWActions { |  | ||||||
|         id: awActions |  | ||||||
|     } |  | ||||||
|     AWConfigHelper { |     AWConfigHelper { | ||||||
|         id: awConfig |         id: awConfig | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     width: childrenRect.width |  | ||||||
|     height: childrenRect.height |  | ||||||
|     implicitWidth: pageColumn.implicitWidth |  | ||||||
|     implicitHeight: pageColumn.implicitHeight |  | ||||||
|  |  | ||||||
|     property bool debug: awActions.isDebugEnabled() |  | ||||||
|  |  | ||||||
|     property variant cfg_dataengine: awConfig.readDataEngineConfiguration() |     property variant cfg_dataengine: awConfig.readDataEngineConfiguration() | ||||||
|  |  | ||||||
|  |  | ||||||
|     Column { |     Column { | ||||||
|         id: pageColumn |         id: pageColumn | ||||||
|         anchors.fill: parent |         anchors.fill: parent | ||||||
|         QtControls.GroupBox { |  | ||||||
|  |         GroupBox { | ||||||
|             height: implicitHeight |             height: implicitHeight | ||||||
|             width: parent.width |             width: parent.width | ||||||
|             title: i18n("ACPI") |             title: i18n("ACPI") | ||||||
|             LineSelector { |             LineSelector { | ||||||
|                 text: i18n("ACPI path") |                 text: i18n("ACPI path") | ||||||
|                 value: cfg_dataengine["ACPIPATH"] |                 value: cfg_dataengine["ACPIPATH"] | ||||||
|                 onValueEdited: cfg_dataengine["ACPIPATH"] = newValue |                 onValueEdited: newValue => cfg_dataengine["ACPIPATH"] = newValue | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         QtControls.GroupBox { |         GroupBox { | ||||||
|             height: implicitHeight |  | ||||||
|             width: parent.width |  | ||||||
|             title: i18n("GPU") |  | ||||||
|             ComboBoxSelector { |  | ||||||
|                 model: [ |  | ||||||
|                     { |  | ||||||
|                         'label': "auto", |  | ||||||
|                         'name': "auto" |  | ||||||
|                     }, |  | ||||||
|                     { |  | ||||||
|                         'label': "disable", |  | ||||||
|                         'name': "disable" |  | ||||||
|                     }, |  | ||||||
|                     { |  | ||||||
|                         'label': "ati", |  | ||||||
|                         'name': "ati" |  | ||||||
|                     }, |  | ||||||
|                     { |  | ||||||
|                         'label': "nvidia", |  | ||||||
|                         'name': "nvidia" |  | ||||||
|                     } |  | ||||||
|                 ] |  | ||||||
|                 text: i18n("GPU device") |  | ||||||
|                 value: cfg_dataengine["GPUDEV"] |  | ||||||
|                 onValueEdited: cfg_dataengine["GPUDEV"] = newValue |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         QtControls.GroupBox { |  | ||||||
|             height: implicitHeight |  | ||||||
|             width: parent.width |  | ||||||
|             title: i18n("HDD temperature") |  | ||||||
|             Column { |  | ||||||
|                 height: implicitHeight |  | ||||||
|                 width: parent.width |  | ||||||
|                 ComboBoxSelector { |  | ||||||
|                     id: hdd |  | ||||||
|                     text: i18n("HDD") |  | ||||||
|                     value: cfg_dataengine["HDDDEV"] |  | ||||||
|                     onValueEdited: cfg_dataengine["HDDDEV"] = newValue |  | ||||||
|                 } |  | ||||||
|  |  | ||||||
|                 LineSelector { |  | ||||||
|                     text: i18n("hddtemp cmd") |  | ||||||
|                     value: cfg_dataengine["HDDTEMPCMD"] |  | ||||||
|                     onValueEdited: cfg_dataengine["HDDTEMPCMD"] = newValue |  | ||||||
|                 } |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         QtControls.GroupBox { |  | ||||||
|             height: implicitHeight |             height: implicitHeight | ||||||
|             width: parent.width |             width: parent.width | ||||||
|             title: i18n("Player") |             title: i18n("Player") | ||||||
|  |  | ||||||
|             Column { |             Column { | ||||||
|                 height: implicitHeight |                 height: implicitHeight | ||||||
|                 width: parent.width |                 width: parent.width | ||||||
| @ -123,27 +64,27 @@ Item { | |||||||
|                     stepSize: 1 |                     stepSize: 1 | ||||||
|                     text: i18n("Player data symbols") |                     text: i18n("Player data symbols") | ||||||
|                     value: cfg_dataengine["PLAYERSYMBOLS"] |                     value: cfg_dataengine["PLAYERSYMBOLS"] | ||||||
|                     onValueEdited: cfg_dataengine["PLAYERSYMBOLS"] = newValue |                     onValueEdited: newValue => cfg_dataengine["PLAYERSYMBOLS"] = newValue | ||||||
|                 } |                 } | ||||||
|  |  | ||||||
|                 ComboBoxSelector { |                 ComboBoxSelector { | ||||||
|                     model: [ |                     model: [ | ||||||
|                         { |                         { | ||||||
|                             'label': "disable", |                             "label": "disable", | ||||||
|                             'name': "disable" |                             "name": "disable" | ||||||
|                         }, |                         }, | ||||||
|                         { |                         { | ||||||
|                             'label': "mpris", |                             "label": "mpris", | ||||||
|                             'name': "mpris" |                             "name": "mpris" | ||||||
|                         }, |                         }, | ||||||
|                         { |                         { | ||||||
|                             'label': "mpd", |                             "label": "mpd", | ||||||
|                             'name': "mpd" |                             "name": "mpd" | ||||||
|                         } |                         } | ||||||
|                     ] |                     ] | ||||||
|                     text: i18n("Music player") |                     text: i18n("Music player") | ||||||
|                     value: cfg_dataengine["PLAYER"] |                     value: cfg_dataengine["PLAYER"] | ||||||
|                     onValueEdited: cfg_dataengine["PLAYER"] = newValue |                     onValueEdited: newValue => cfg_dataengine["PLAYER"] = newValue | ||||||
|                 } |                 } | ||||||
|  |  | ||||||
|                 ComboBoxSelector { |                 ComboBoxSelector { | ||||||
| @ -151,40 +92,40 @@ Item { | |||||||
|                     editable: true |                     editable: true | ||||||
|                     model: [ |                     model: [ | ||||||
|                         { |                         { | ||||||
|                             'label': 'auto', |                             "label": "auto", | ||||||
|                             'name': 'auto' |                             "name": "auto" | ||||||
|                         }, |                         }, | ||||||
|                         { |                         { | ||||||
|                             'label': 'amarok', |                             "label": "amarok", | ||||||
|                             'name': 'amarok' |                             "name": "amarok" | ||||||
|                         }, |                         }, | ||||||
|                         { |                         { | ||||||
|                             'label': 'audacious', |                             "label": "audacious", | ||||||
|                             'name': 'audacious' |                             "name": "audacious" | ||||||
|                         }, |                         }, | ||||||
|                         { |                         { | ||||||
|                             'label': 'clementine', |                             "label": "clementine", | ||||||
|                             'name': 'clementine' |                             "name": "clementine" | ||||||
|                         }, |                         }, | ||||||
|                         { |                         { | ||||||
|                             'label': 'DeaDBeeF', |                             "label": "DeaDBeeF", | ||||||
|                             'name': 'DeaDBeeF' |                             "name": "DeaDBeeF" | ||||||
|                         }, |                         }, | ||||||
|                         { |                         { | ||||||
|                             'label': 'vlc', |                             "label": "vlc", | ||||||
|                             'name': 'vlc' |                             "name": "vlc" | ||||||
|                         }, |                         }, | ||||||
|                         { |                         { | ||||||
|                             'label': 'qmmp', |                             "label": "qmmp", | ||||||
|                             'name': 'qmmp' |                             "name": "qmmp" | ||||||
|                         }, |                         }, | ||||||
|                         { |                         { | ||||||
|                             'label': 'xmms2', |                             "label": "xmms2", | ||||||
|                             'name': 'xmms2' |                             "name": "xmms2" | ||||||
|                         }, |                         }, | ||||||
|                         { |                         { | ||||||
|                             'label': cfg_dataengine["MPRIS"], |                             "label": cfg_dataengine["MPRIS"], | ||||||
|                             'name': cfg_dataengine["MPRIS"] |                             "name": cfg_dataengine["MPRIS"] | ||||||
|                         } |                         } | ||||||
|                     ] |                     ] | ||||||
|                     text: i18n("MPRIS player name") |                     text: i18n("MPRIS player name") | ||||||
| @ -194,7 +135,7 @@ Item { | |||||||
|                 LineSelector { |                 LineSelector { | ||||||
|                     text: i18n("MPD address") |                     text: i18n("MPD address") | ||||||
|                     value: cfg_dataengine["MPDADDRESS"] |                     value: cfg_dataengine["MPDADDRESS"] | ||||||
|                     onValueEdited: cfg_dataengine["MPDADDRESS"] = newValue |                     onValueEdited: newValue => cfg_dataengine["MPDADDRESS"] = newValue | ||||||
|                 } |                 } | ||||||
|  |  | ||||||
|                 IntegerSelector { |                 IntegerSelector { | ||||||
| @ -203,18 +144,20 @@ Item { | |||||||
|                     stepSize: 1 |                     stepSize: 1 | ||||||
|                     text: i18n("MPD port") |                     text: i18n("MPD port") | ||||||
|                     value: cfg_dataengine["MPDPORT"] |                     value: cfg_dataengine["MPDPORT"] | ||||||
|                     onValueEdited: cfg_dataengine["MPDPORT"] = newValue |                     onValueEdited: newValue => cfg_dataengine["MPDPORT"] = newValue | ||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         QtControls.GroupBox { |         GroupBox { | ||||||
|             height: implicitHeight |             height: implicitHeight | ||||||
|             width: parent.width |             width: parent.width | ||||||
|             title: i18n("Extensions") |             title: i18n("Extensions") | ||||||
|  |  | ||||||
|             Column { |             Column { | ||||||
|                 height: implicitHeight |                 height: implicitHeight | ||||||
|                 width: parent.width |                 width: parent.width | ||||||
|  |  | ||||||
|                 ButtonSelector { |                 ButtonSelector { | ||||||
|                     value: i18n("Custom scripts") |                     value: i18n("Custom scripts") | ||||||
|                     onButtonActivated: awKeys.editItem("extscript") |                     onButtonActivated: awKeys.editItem("extscript") | ||||||
| @ -245,8 +188,6 @@ Item { | |||||||
|  |  | ||||||
|  |  | ||||||
|     Component.onCompleted: { |     Component.onCompleted: { | ||||||
|         if (debug) console.debug() |  | ||||||
|  |  | ||||||
|         // init submodule |         // init submodule | ||||||
|         awKeys.updateCache() |         awKeys.updateCache() | ||||||
|  |  | ||||||
| @ -256,8 +197,6 @@ Item { | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     Component.onDestruction: { |     Component.onDestruction: { | ||||||
|         if (debug) console.debug() |  | ||||||
|  |  | ||||||
|         cfg_dataengine["MPRIS"] = mpris.editText |         cfg_dataengine["MPRIS"] = mpris.editText | ||||||
|         awConfig.writeDataEngineConfiguration(cfg_dataengine) |         awConfig.writeDataEngineConfiguration(cfg_dataengine) | ||||||
|     } |     } | ||||||
|  | |||||||
| @ -15,20 +15,20 @@ | |||||||
|  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * |  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * | ||||||
|  ***************************************************************************/ |  ***************************************************************************/ | ||||||
|  |  | ||||||
| import QtQuick 2.4 | import QtQuick 2.15 | ||||||
| import QtQuick.Controls 1.3 as QtControls | import QtQuick.Controls | ||||||
| import QtQuick.Dialogs 1.2 as QtDialogs | import QtQuick.Dialogs | ||||||
| import QtQuick.Layouts 1.1 | import QtQuick.Layouts | ||||||
|  | import org.kde.plasma.core as PlasmaCore | ||||||
| import org.kde.plasma.plasmoid 2.0 | import org.kde.plasma.plasmoid 2.0 | ||||||
| import org.kde.plasma.core 2.0 as PlasmaCore |  | ||||||
| import org.kde.plasma.components 2.0 as PlasmaComponents |  | ||||||
|  |  | ||||||
| import org.kde.plasma.private.awesomewidget 1.0 | import org.kde.plasma.private.awesomewidget 1.0 | ||||||
| import "." | import "." | ||||||
|  |  | ||||||
|  |  | ||||||
| Item { | PlasmoidItem { | ||||||
|     id: main |     id: main | ||||||
|  |  | ||||||
|     // backend |     // backend | ||||||
|     AWKeys { |     AWKeys { | ||||||
|         id: awKeys |         id: awKeys | ||||||
| @ -43,7 +43,6 @@ Item { | |||||||
|         id: bugReport |         id: bugReport | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     property bool debug: awActions.isDebugEnabled() |  | ||||||
|     property variant tooltipSettings: { |     property variant tooltipSettings: { | ||||||
|         "tooltipNumber": plasmoid.configuration.tooltipNumber, |         "tooltipNumber": plasmoid.configuration.tooltipNumber, | ||||||
|         "useTooltipBackground": plasmoid.configuration.useTooltipBackground, |         "useTooltipBackground": plasmoid.configuration.useTooltipBackground, | ||||||
| @ -73,19 +72,12 @@ Item { | |||||||
|     signal needToolTipUpdate(string newText) |     signal needToolTipUpdate(string newText) | ||||||
|     signal sizeUpdate |     signal sizeUpdate | ||||||
|  |  | ||||||
|  |     Layout.fillWidth: PlasmoidItem.formFactor !== PlasmaCore.Planar | ||||||
|     // init |     Layout.fillHeight: PlasmoidItem.formFactor !== PlasmaCore.Planar | ||||||
|     Plasmoid.preferredRepresentation: Plasmoid.fullRepresentation |  | ||||||
|     Plasmoid.compactRepresentation: Plasmoid.fullRepresentation |  | ||||||
|  |  | ||||||
|     Layout.fillWidth: plasmoid.formFactor != PlasmaCore.Planar |  | ||||||
|     Layout.fillHeight: plasmoid.formFactor != PlasmaCore.Planar |  | ||||||
|     Layout.alignment: Qt.AlignVCenter | Qt.AlignHCenter |     Layout.alignment: Qt.AlignVCenter | Qt.AlignHCenter | ||||||
|  |  | ||||||
|     Plasmoid.icon: "utilities-system-monitor" |     Plasmoid.icon: "utilities-system-monitor" | ||||||
|     Plasmoid.backgroundHints: plasmoid.configuration.background ? "DefaultBackground" : "NoBackground" |     Plasmoid.backgroundHints: plasmoid.configuration.background ? "DefaultBackground" : "NoBackground" | ||||||
|     Plasmoid.associatedApplication: "ksysguard" |  | ||||||
|  |  | ||||||
|  |  | ||||||
|     // ui |     // ui | ||||||
|     Text { |     Text { | ||||||
| @ -100,7 +92,7 @@ Item { | |||||||
|  |  | ||||||
|         color: plasmoid.configuration.fontColor |         color: plasmoid.configuration.fontColor | ||||||
|         font.family: plasmoid.configuration.fontFamily |         font.family: plasmoid.configuration.fontFamily | ||||||
|         font.italic: plasmoid.configuration.fontStyle == "italic" ? true : false |         font.italic: plasmoid.configuration.fontStyle === "italic" ? true : false | ||||||
|         font.pointSize: plasmoid.configuration.fontSize |         font.pointSize: plasmoid.configuration.fontSize | ||||||
|         font.weight: General.fontWeight[plasmoid.configuration.fontWeight] |         font.weight: General.fontWeight[plasmoid.configuration.fontWeight] | ||||||
|  |  | ||||||
| @ -119,19 +111,19 @@ Item { | |||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     QtDialogs.Dialog { |     Dialog { | ||||||
|         id: tagSelector |         id: tagSelector | ||||||
|         title: i18n("Select tag") |         title: i18n("Select tag") | ||||||
|  |  | ||||||
|         QtControls.ComboBox { |         ComboBox { | ||||||
|             id: tagSelectorBox |             id: tagSelectorBox | ||||||
|             width: parent.width |             width: parent.width | ||||||
|             editable: true |             editable: true | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         onAccepted: { |         onAccepted: { | ||||||
|             var tag = tagSelectorBox.editText |             const tag = tagSelectorBox.editText | ||||||
|             var message = i18n("Tag: %1", tag) |             let message = i18n("Tag: %1", tag) | ||||||
|             message += "<br>" |             message += "<br>" | ||||||
|             message += i18n("Value: %1", awKeys.valueByKey(tag)) |             message += i18n("Value: %1", awKeys.valueByKey(tag)) | ||||||
|             message += "<br>" |             message += "<br>" | ||||||
| @ -140,17 +132,37 @@ Item { | |||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     Plasmoid.contextualActions: [ | ||||||
|  |         PlasmaCore.Action { | ||||||
|  |             text: i18n("Request key") | ||||||
|  |             icon.name: "utilities-system-monitor" | ||||||
|  |             onTriggered: { | ||||||
|  |                 tagSelectorBox.model = awKeys.dictKeys(true) | ||||||
|  |                 tagSelector.open() | ||||||
|  |             } | ||||||
|  |         }, | ||||||
|  |         PlasmaCore.Action { | ||||||
|  |             text: i18n("Show README") | ||||||
|  |             icon.name: "text-x-readme" | ||||||
|  |             onTriggered: awActions.showReadme() | ||||||
|  |         }, | ||||||
|  |         PlasmaCore.Action { | ||||||
|  |             text: i18n("Check updates") | ||||||
|  |             icon.name: "system-software-update" | ||||||
|  |             onTriggered: awActions.checkUpdates(true) | ||||||
|  |         }, | ||||||
|  |         PlasmaCore.Action { | ||||||
|  |             text: i18n("Report bug") | ||||||
|  |             icon.name: "tools-report-bug" | ||||||
|  |             onTriggered: { | ||||||
|  |                 bugReport.reset() | ||||||
|  |                 bugReport.open() | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |     ] | ||||||
|  |  | ||||||
|  |  | ||||||
|     Component.onCompleted: { |     Component.onCompleted: { | ||||||
|         if (debug) console.debug() |  | ||||||
|  |  | ||||||
|         // actions |  | ||||||
|         // it makes no sense to use this field with optimization enable |  | ||||||
|         if (!plasmoid.configuration.optimize) |  | ||||||
|             plasmoid.setAction("requestKey", i18n("Request key"), "utilities-system-monitor") |  | ||||||
|         plasmoid.setAction("showReadme", i18n("Show README"), "text-x-readme") |  | ||||||
|         plasmoid.setAction("checkUpdates", i18n("Check updates"), "system-software-update") |  | ||||||
|         plasmoid.setAction("reportBug", i18n("Report bug"), "tools-report-bug") |  | ||||||
|         // init submodule |         // init submodule | ||||||
|         Plasmoid.userConfiguringChanged(false) |         Plasmoid.userConfiguringChanged(false) | ||||||
|         // connect data |         // connect data | ||||||
| @ -160,32 +172,26 @@ Item { | |||||||
|         if (plasmoid.configuration.checkUpdates) return awActions.checkUpdates(false) |         if (plasmoid.configuration.checkUpdates) return awActions.checkUpdates(false) | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     onNeedTextUpdate: { |     onNeedTextUpdate: newText => { | ||||||
|         if (debug) console.debug() |  | ||||||
|  |  | ||||||
|         text.text = newText |         text.text = newText | ||||||
|         sizeUpdate() |         sizeUpdate() | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     onNeedToolTipUpdate: { |     onNeedToolTipUpdate: newText => { | ||||||
|         if (debug) console.debug() |  | ||||||
|  |  | ||||||
|         tooltip.text = newText |         tooltip.text = newText | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     onSizeUpdate: { |     onSizeUpdate: { | ||||||
|         if (debug) console.debug() |  | ||||||
|         // 16 is a magic number |         // 16 is a magic number | ||||||
|         // in other case plasmoid will increase own size on each update |         // in other case plasmoid will increase own size on each update | ||||||
|  |         if (plasmoid.configuration.height === 0) { | ||||||
|         if (plasmoid.configuration.height == 0) { |  | ||||||
|             Layout.minimumHeight = text.contentHeight - 16 |             Layout.minimumHeight = text.contentHeight - 16 | ||||||
|             Layout.maximumHeight = -1 |             Layout.maximumHeight = -1 | ||||||
|         } else { |         } else { | ||||||
|             Layout.minimumHeight = plasmoid.configuration.height |             Layout.minimumHeight = plasmoid.configuration.height | ||||||
|             Layout.maximumHeight = plasmoid.configuration.height |             Layout.maximumHeight = plasmoid.configuration.height | ||||||
|         } |         } | ||||||
|         if (plasmoid.configuration.width == 0) { |         if (plasmoid.configuration.width === 0) { | ||||||
|             Layout.minimumWidth = text.contentWidth - 16 |             Layout.minimumWidth = text.contentWidth - 16 | ||||||
|             Layout.maximumWidth = -1 |             Layout.maximumWidth = -1 | ||||||
|         } else { |         } else { | ||||||
| @ -196,7 +202,6 @@ Item { | |||||||
|  |  | ||||||
|     Plasmoid.onUserConfiguringChanged: { |     Plasmoid.onUserConfiguringChanged: { | ||||||
|         if (plasmoid.userConfiguring) return |         if (plasmoid.userConfiguring) return | ||||||
|         if (debug) console.debug() |  | ||||||
|  |  | ||||||
|         // init submodule |         // init submodule | ||||||
|         awKeys.initDataAggregator(tooltipSettings) |         awKeys.initDataAggregator(tooltipSettings) | ||||||
| @ -211,7 +216,7 @@ Item { | |||||||
|         awKeys.setAggregatorProperty("tempUnits", plasmoid.configuration.tempUnits) |         awKeys.setAggregatorProperty("tempUnits", plasmoid.configuration.tempUnits) | ||||||
|         awKeys.setAggregatorProperty("translate", plasmoid.configuration.translateStrings) |         awKeys.setAggregatorProperty("translate", plasmoid.configuration.translateStrings) | ||||||
|         // update telemetry ID |         // update telemetry ID | ||||||
|         if (plasmoid.configuration.telemetryId.length == 0) |         if (plasmoid.configuration.telemetryId.length === 0) | ||||||
|             plasmoid.configuration.telemetryId = generateUuid() |             plasmoid.configuration.telemetryId = generateUuid() | ||||||
|         // save telemetry |         // save telemetry | ||||||
|         awTelemetryHandler.init(plasmoid.configuration.telemetryCount, |         awTelemetryHandler.init(plasmoid.configuration.telemetryCount, | ||||||
| @ -221,37 +226,10 @@ Item { | |||||||
|             awTelemetryHandler.uploadTelemetry("awwidgetconfig", plasmoid.configuration.text) |             awTelemetryHandler.uploadTelemetry("awwidgetconfig", plasmoid.configuration.text) | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|     function action_checkUpdates() { |  | ||||||
|         if (debug) console.debug() |  | ||||||
|  |  | ||||||
|         return awActions.checkUpdates(true) |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     function action_showReadme() { |  | ||||||
|         if (debug) console.debug() |  | ||||||
|  |  | ||||||
|         return awActions.showReadme() |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     function action_reportBug() { |  | ||||||
|         if (debug) console.debug() |  | ||||||
|  |  | ||||||
|         bugReport.reset() |  | ||||||
|         bugReport.open() |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     function action_requestKey() { |  | ||||||
|         if (debug) console.debug() |  | ||||||
|  |  | ||||||
|         tagSelectorBox.model = awKeys.dictKeys(true) |  | ||||||
|         return tagSelector.open() |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     // code from http://stackoverflow.com/questions/105034/create-guid-uuid-in-javascript |     // code from http://stackoverflow.com/questions/105034/create-guid-uuid-in-javascript | ||||||
|     function generateUuid() { |     function generateUuid() { | ||||||
|         return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) { |         return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function(c) { | ||||||
|             var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8); |             let r = Math.random() * 16 | 0, v = c === "x" ? r : (r & 0x3 | 0x8); | ||||||
|             return v.toString(16); |             return v.toString(16); | ||||||
|         }); |         }); | ||||||
|     } |     } | ||||||
|  | |||||||
| @ -15,25 +15,15 @@ | |||||||
|  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * |  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * | ||||||
|  ***************************************************************************/ |  ***************************************************************************/ | ||||||
|  |  | ||||||
| import QtQuick 2.0 | import QtQuick 2.15 | ||||||
| import QtQuick.Controls 1.3 as QtControls | import QtQuick.Controls | ||||||
|  | import org.kde.kcmutils as KCM | ||||||
|  |  | ||||||
| import org.kde.plasma.private.awesomewidget 1.0 | import org.kde.plasma.private.awesomewidget 1.0 | ||||||
|  |  | ||||||
|  |  | ||||||
| Item { | KCM.SimpleKCM { | ||||||
|     id: tooltipPage |     id: tooltipPage | ||||||
|     // backend |  | ||||||
|     AWActions { |  | ||||||
|         id: awActions |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     width: childrenRect.width |  | ||||||
|     height: childrenRect.height |  | ||||||
|     implicitWidth: pageColumn.implicitWidth |  | ||||||
|     implicitHeight: pageColumn.implicitHeight |  | ||||||
|  |  | ||||||
|     property bool debug: awActions.isDebugEnabled() |  | ||||||
|  |  | ||||||
|     property alias cfg_tooltipNumber: tooltipNumber.value |     property alias cfg_tooltipNumber: tooltipNumber.value | ||||||
|     property alias cfg_useTooltipBackground: useTooltipBackground.checked |     property alias cfg_useTooltipBackground: useTooltipBackground.checked | ||||||
| @ -46,18 +36,18 @@ Item { | |||||||
|     property alias cfg_memTooltipColor: memTooltipColor.value |     property alias cfg_memTooltipColor: memTooltipColor.value | ||||||
|     property alias cfg_swapTooltip: swapTooltip.checked |     property alias cfg_swapTooltip: swapTooltip.checked | ||||||
|     property alias cfg_swapTooltipColor: swapTooltipColor.value |     property alias cfg_swapTooltipColor: swapTooltipColor.value | ||||||
|     property alias cfg_downkbTooltip: downkbTooltip.checked |     property alias cfg_downkbTooltip: networkTooltip.checked | ||||||
|     property alias cfg_downkbTooltipColor: downkbTooltipColor.value |     property alias cfg_downkbTooltipColor: downkbTooltipColor.value | ||||||
|     property alias cfg_upkbTooltipColor: upkbTooltipColor.value |     property alias cfg_upkbTooltipColor: upkbTooltipColor.value | ||||||
|     property alias cfg_batTooltip: batTooltip.checked |     property alias cfg_batTooltip: batTooltip.checked | ||||||
|     property alias cfg_batTooltipColor: batTooltipColor.value |     property alias cfg_batTooltipColor: batTooltipColor.value | ||||||
|     property alias cfg_batInTooltipColor: batInTooltipColor.value |     property alias cfg_batInTooltipColor: batInTooltipColor.value | ||||||
|  |  | ||||||
|  |  | ||||||
|     Column { |     Column { | ||||||
|         id: pageColumn |         id: pageColumn | ||||||
|         anchors.fill: parent |         anchors.fill: parent | ||||||
|         QtControls.Label { |  | ||||||
|  |         Label { | ||||||
|           width: parent.width |           width: parent.width | ||||||
|           horizontalAlignment: Text.AlignHCenter |           horizontalAlignment: Text.AlignHCenter | ||||||
|           verticalAlignment: Text.AlignVCenter |           verticalAlignment: Text.AlignVCenter | ||||||
| @ -74,85 +64,116 @@ Item { | |||||||
|             value: plasmoid.configuration.tooltipNumber |             value: plasmoid.configuration.tooltipNumber | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         QtControls.GroupBox { |         GroupBox { | ||||||
|             id: useTooltipBackground |             id: useTooltipBackground | ||||||
|             height: implicitHeight |  | ||||||
|             width: parent.width |             width: parent.width | ||||||
|             checkable: true |  | ||||||
|             title: i18n("Background") |             property alias checked: useTooltipBackgroundLabel.checked | ||||||
|  |             label: CheckBox { | ||||||
|  |                 id: useTooltipBackgroundLabel | ||||||
|  |                 text: i18n("Background") | ||||||
|  |             } | ||||||
|  |  | ||||||
|             ColorSelector { |             ColorSelector { | ||||||
|                 id: tooltipBackground |                 id: tooltipBackground | ||||||
|  |                 enabled: useTooltipBackgroundLabel.checked | ||||||
|                 text: i18n("Background color") |                 text: i18n("Background color") | ||||||
|                 value: plasmoid.configuration.tooltipBackground |                 value: plasmoid.configuration.tooltipBackground | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         QtControls.GroupBox { |         GroupBox { | ||||||
|             id: cpuTooltip |             id: cpuTooltip | ||||||
|             height: implicitHeight |  | ||||||
|             width: parent.width |             width: parent.width | ||||||
|             checkable: true |  | ||||||
|             title: i18n("CPU") |             property alias checked: cpuTooltipLabel.checked | ||||||
|  |             label: CheckBox { | ||||||
|  |                 id: cpuTooltipLabel | ||||||
|  |                 text: i18n("CPU") | ||||||
|  |             } | ||||||
|  |  | ||||||
|             ColorSelector { |             ColorSelector { | ||||||
|                 id: cpuTooltipColor |                 id: cpuTooltipColor | ||||||
|  |                 enabled: cpuTooltipLabel.checked | ||||||
|                 text: i18n("CPU color") |                 text: i18n("CPU color") | ||||||
|                 value: plasmoid.configuration.cpuTooltipColor |                 value: plasmoid.configuration.cpuTooltipColor | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         QtControls.GroupBox { |         GroupBox { | ||||||
|             id: cpuclTooltip |             id: cpuclTooltip | ||||||
|             height: implicitHeight |  | ||||||
|             width: parent.width |             width: parent.width | ||||||
|             checkable: true |  | ||||||
|             title: i18n("CPU clock") |             property alias checked: cpuclTooltipLabel.checked | ||||||
|  |             label: CheckBox { | ||||||
|  |                 id: cpuclTooltipLabel | ||||||
|  |                 text: i18n("CPU clock") | ||||||
|  |             } | ||||||
|  |  | ||||||
|             ColorSelector { |             ColorSelector { | ||||||
|                 id: cpuclTooltipColor |                 id: cpuclTooltipColor | ||||||
|  |                 enabled: cpuclTooltipLabel.checked | ||||||
|                 text: i18n("CPU clock color") |                 text: i18n("CPU clock color") | ||||||
|                 value: plasmoid.configuration.cpuclTooltipColor |                 value: plasmoid.configuration.cpuclTooltipColor | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         QtControls.GroupBox { |         GroupBox { | ||||||
|             id: memTooltip |             id: memTooltip | ||||||
|             height: implicitHeight |  | ||||||
|             width: parent.width |             width: parent.width | ||||||
|             checkable: true |  | ||||||
|             title: i18n("Memory") |             property alias checked: memTooltipLabel.checked | ||||||
|  |             label: CheckBox { | ||||||
|  |                 id: memTooltipLabel | ||||||
|  |                 text: i18n("Memory") | ||||||
|  |             } | ||||||
|  |  | ||||||
|             ColorSelector { |             ColorSelector { | ||||||
|                 id: memTooltipColor |                 id: memTooltipColor | ||||||
|  |                 enabled: memTooltipLabel.checked | ||||||
|                 text: i18n("Memory color") |                 text: i18n("Memory color") | ||||||
|                 value: plasmoid.configuration.memTooltipColor |                 value: plasmoid.configuration.memTooltipColor | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         QtControls.GroupBox { |         GroupBox { | ||||||
|             id: swapTooltip |             id: swapTooltip | ||||||
|             height: implicitHeight |  | ||||||
|             width: parent.width |             width: parent.width | ||||||
|             checkable: true |  | ||||||
|             title: i18n("Swap") |             property alias checked: swapTooltipLabel.checked | ||||||
|  |             label: CheckBox { | ||||||
|  |                 id: swapTooltipLabel | ||||||
|  |                 text: i18n("Swap") | ||||||
|  |             } | ||||||
|  |  | ||||||
|             ColorSelector { |             ColorSelector { | ||||||
|                 id: swapTooltipColor |                 id: swapTooltipColor | ||||||
|  |                 enabled: swapTooltipLabel.checked | ||||||
|                 text: i18n("Swap color") |                 text: i18n("Swap color") | ||||||
|                 value: plasmoid.configuration.swapTooltipColor |                 value: plasmoid.configuration.swapTooltipColor | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         QtControls.GroupBox { |         GroupBox { | ||||||
|             id: downkbTooltip |             id: networkTooltip | ||||||
|             height: implicitHeight |  | ||||||
|             width: parent.width |             width: parent.width | ||||||
|             checkable: true |  | ||||||
|             title: i18n("Network") |             property alias checked: networkTooltipLabel.checked | ||||||
|  |             label: CheckBox { | ||||||
|  |                 id: networkTooltipLabel | ||||||
|  |                 text: i18n("Network") | ||||||
|  |             } | ||||||
|  |  | ||||||
|             Column { |             Column { | ||||||
|                 height: implicitHeight |  | ||||||
|                 width: parent.width |                 width: parent.width | ||||||
|  |                 enabled: networkTooltipLabel.checked | ||||||
|  |  | ||||||
|                 ColorSelector { |                 ColorSelector { | ||||||
|                     id: downkbTooltipColor |                     id: downkbTooltipColor | ||||||
|                     text: i18n("Download speed color") |                     text: i18n("Download speed color") | ||||||
|                     value: plasmoid.configuration.downkbTooltipColor |                     value: plasmoid.configuration.downkbTooltipColor | ||||||
|                 } |                 } | ||||||
|  |  | ||||||
|                 ColorSelector { |                 ColorSelector { | ||||||
|                     id: upkbTooltipColor |                     id: upkbTooltipColor | ||||||
|                     text: i18n("Upload speed color") |                     text: i18n("Upload speed color") | ||||||
| @ -161,20 +182,26 @@ Item { | |||||||
|             } |             } | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         QtControls.GroupBox { |         GroupBox { | ||||||
|             id: batTooltip |             id: batTooltip | ||||||
|             height: implicitHeight |  | ||||||
|             width: parent.width |             width: parent.width | ||||||
|             checkable: true |  | ||||||
|             title: i18n("Battery") |             property alias checked: batteryTooltipLabel.checked | ||||||
|  |             label: CheckBox { | ||||||
|  |                 id: batteryTooltipLabel | ||||||
|  |                 text: i18n("Battery") | ||||||
|  |             } | ||||||
|  |  | ||||||
|             Column { |             Column { | ||||||
|                 height: implicitHeight |  | ||||||
|                 width: parent.width |                 width: parent.width | ||||||
|  |                 enabled: batteryTooltipLabel.checked | ||||||
|  |  | ||||||
|                 ColorSelector { |                 ColorSelector { | ||||||
|                     id: batTooltipColor |                     id: batTooltipColor | ||||||
|                     text: i18n("Battery active color") |                     text: i18n("Battery active color") | ||||||
|                     value: plasmoid.configuration.batTooltipColor |                     value: plasmoid.configuration.batTooltipColor | ||||||
|                 } |                 } | ||||||
|  |  | ||||||
|                 ColorSelector { |                 ColorSelector { | ||||||
|                     id: batInTooltipColor |                     id: batInTooltipColor | ||||||
|                     text: i18n("Battery inactive color") |                     text: i18n("Battery inactive color") | ||||||
| @ -183,9 +210,4 @@ Item { | |||||||
|             } |             } | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|     Component.onCompleted: { |  | ||||||
|         if (debug) console.debug() |  | ||||||
|     } |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -15,14 +15,17 @@ | |||||||
|  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * |  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * | ||||||
|  ***************************************************************************/ |  ***************************************************************************/ | ||||||
|  |  | ||||||
| import QtQuick 2.2 | import QtQuick 2.15 | ||||||
|  | import QtQuick.Controls | ||||||
|  | import org.kde.kcmutils as KCM | ||||||
|  |  | ||||||
| import org.kde.plasma.private.awesomewidget 1.0 | import org.kde.plasma.private.awesomewidget 1.0 | ||||||
| import "." | import "." | ||||||
|  |  | ||||||
|  |  | ||||||
| Item { | KCM.SimpleKCM { | ||||||
|     id: widgetPage |     id: widgetPage | ||||||
|  |  | ||||||
|     // backend |     // backend | ||||||
|     AWKeys { |     AWKeys { | ||||||
|         id: awKeys |         id: awKeys | ||||||
| @ -31,19 +34,11 @@ Item { | |||||||
|         id: awActions |         id: awActions | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     width: childrenRect.width |  | ||||||
|     height: childrenRect.height |  | ||||||
|     implicitWidth: pageColumn.implicitWidth |  | ||||||
|     implicitHeight: pageColumn.implicitHeight |  | ||||||
|  |  | ||||||
|     property bool debug: awActions.isDebugEnabled() |  | ||||||
|  |  | ||||||
|     property alias cfg_text: textPattern.text |     property alias cfg_text: textPattern.text | ||||||
|     property bool lock: true |     property bool lock: true | ||||||
|  |  | ||||||
|     signal needTextUpdate(string newText) |     signal needTextUpdate(string newText) | ||||||
|  |  | ||||||
|  |  | ||||||
|     Column { |     Column { | ||||||
|         id: pageColumn |         id: pageColumn | ||||||
|         anchors.fill: parent |         anchors.fill: parent | ||||||
| @ -74,10 +69,7 @@ Item { | |||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|     Component.onCompleted: { |     Component.onCompleted: { | ||||||
|         if (debug) console.debug() |  | ||||||
|  |  | ||||||
|         awKeys.needTextToBeUpdated.connect(needTextUpdate) |         awKeys.needTextToBeUpdated.connect(needTextUpdate) | ||||||
|         // init submodule |         // init submodule | ||||||
|         awKeys.initKeys(plasmoid.configuration.text, plasmoid.configuration.interval, |         awKeys.initKeys(plasmoid.configuration.text, plasmoid.configuration.interval, | ||||||
| @ -90,9 +82,8 @@ Item { | |||||||
|         awKeys.setAggregatorProperty("translate", plasmoid.configuration.translateStrings) |         awKeys.setAggregatorProperty("translate", plasmoid.configuration.translateStrings) | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     onNeedTextUpdate: { |     onNeedTextUpdate: newText => { | ||||||
|         if (lock) return |         if (lock) return | ||||||
|         if (debug) console.debug() |  | ||||||
|  |  | ||||||
|         extensions.showMessage(newText) |         extensions.showMessage(newText) | ||||||
|         lock = true |         lock = true | ||||||
|  | |||||||
| @ -1,26 +0,0 @@ | |||||||
| [Desktop Entry] |  | ||||||
| Encoding=UTF-8 |  | ||||||
| Name=Awesome Widget |  | ||||||
| Comment=A minimalistic Plasmoid |  | ||||||
| Comment[en]=A minimalistic Plasmoid |  | ||||||
| Comment[es]=Un plasmoide minimalista |  | ||||||
| Comment[es]=Un script Plasmoïde minimaliste |  | ||||||
| Comment[pt_BR]=Um script Plasmoid |  | ||||||
| Comment[ru]=Минималистичный плазмоид |  | ||||||
| Comment[uk]=Мінімалістичний плазмоїд |  | ||||||
| X-KDE-ServiceTypes=Plasma/Applet |  | ||||||
| Type=Service |  | ||||||
| Icon=utilities-system-monitor |  | ||||||
|  |  | ||||||
| X-KDE-ServiceTypes=Plasma/Applet |  | ||||||
| X-Plasma-API=declarativeappletscript |  | ||||||
| X-Plasma-MainScript=ui/main.qml |  | ||||||
|  |  | ||||||
| X-KDE-PluginInfo-Author=Evgeniy Alekseev aka arcanis |  | ||||||
| X-KDE-PluginInfo-Email=esalexeev@gmail.com |  | ||||||
| X-KDE-PluginInfo-Name=org.kde.plasma.awesomewidget |  | ||||||
| X-KDE-PluginInfo-Version=3.5.1 |  | ||||||
| X-KDE-PluginInfo-Website=https://arcanis.me/projects/awesome-widgets/ |  | ||||||
| X-KDE-PluginInfo-Category=System Information |  | ||||||
| X-KDE-PluginInfo-License=GPLv3 |  | ||||||
| X-KDE-PluginInfo-EnabledByDefault=true |  | ||||||
							
								
								
									
										26
									
								
								sources/awesome-widget/package/metadata.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								sources/awesome-widget/package/metadata.json
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,26 @@ | |||||||
|  | { | ||||||
|  |     "KPackageStructure": "Plasma/Applet", | ||||||
|  |     "KPlugin": { | ||||||
|  |         "Authors": [ | ||||||
|  |             { | ||||||
|  |                 "Email": "esalexeev@gmail.com", | ||||||
|  |                 "Name": "Evgeniy Alekseev aka arcanis" | ||||||
|  |             } | ||||||
|  |         ], | ||||||
|  |         "Category": "System Information", | ||||||
|  |         "Description": "A minimalistic Plasmoid", | ||||||
|  |         "Description[en]": "A minimalistic Plasmoid", | ||||||
|  |         "Description[es]": "Un script Plasmoïde minimaliste", | ||||||
|  |         "Description[pt_BR]": "Um script Plasmoid", | ||||||
|  |         "Description[ru]": "Минималистичный плазмоид", | ||||||
|  |         "Description[uk]": "Мінімалістичний плазмоїд", | ||||||
|  |         "EnabledByDefault": true, | ||||||
|  |         "Icon": "utilities-system-monitor", | ||||||
|  |         "Id": "org.kde.plasma.awesomewidget", | ||||||
|  |         "License": "GPLv3", | ||||||
|  |         "Name": "Awesome Widget", | ||||||
|  |         "Version": "4.0.0", | ||||||
|  |         "Website": "https://arcanis.me/projects/awesome-widgets/" | ||||||
|  |     }, | ||||||
|  |     "X-Plasma-API-Minimum-Version": "6.0" | ||||||
|  | } | ||||||
| @ -7,17 +7,17 @@ include_directories( | |||||||
|         ${CMAKE_CURRENT_SOURCE_DIR}/../../${PROJECT_LIBRARY}/ |         ${CMAKE_CURRENT_SOURCE_DIR}/../../${PROJECT_LIBRARY}/ | ||||||
|         ${PROJECT_TRDPARTY_DIR} |         ${PROJECT_TRDPARTY_DIR} | ||||||
|         ${Qt_INCLUDE} |         ${Qt_INCLUDE} | ||||||
|         ${Kf5_INCLUDE} |         ${Kf6_INCLUDE} | ||||||
| ) | ) | ||||||
|  |  | ||||||
| file(GLOB SUBPROJECT_SOURCE *.cpp ${PROJECT_TRDPARTY_DIR}/fontdialog/*.cpp ${CMAKE_SOURCE_DIR}/*.cpp) | file(GLOB SUBPROJECT_SOURCE *.cpp ${PROJECT_TRDPARTY_DIR}/fontdialog/*.cpp ${CMAKE_SOURCE_DIR}/*.cpp) | ||||||
| file(GLOB SUBPROJECT_UI *.ui) | file(GLOB SUBPROJECT_UI *.ui) | ||||||
| file(GLOB SUBPROJECT_NOTIFY *.notifyrc) | file(GLOB SUBPROJECT_NOTIFY *.notifyrc) | ||||||
|  |  | ||||||
| qt5_wrap_ui(SUBPROJECT_UI_HEADER ${SUBPROJECT_UI}) | qt6_wrap_ui(SUBPROJECT_UI_HEADER ${SUBPROJECT_UI}) | ||||||
| add_library(${PLUGIN_NAME} SHARED ${SUBPROJECT_SOURCE} ${SUBPROJECT_UI_HEADER}) | add_library(${PLUGIN_NAME} SHARED ${SUBPROJECT_SOURCE} ${SUBPROJECT_UI_HEADER}) | ||||||
| target_link_libraries(${PLUGIN_NAME} ${PROJECT_LIBRARY} ${Qt_LIBRARIES} ${Kf5_LIBRARIES}) | target_link_libraries(${PLUGIN_NAME} ${PROJECT_LIBRARY} ${Qt_LIBRARIES} ${Kf6_LIBRARIES}) | ||||||
|  |  | ||||||
| install(TARGETS ${PLUGIN_NAME} DESTINATION ${QML_INSTALL_DIR}/org/kde/plasma/private/awesomewidget) | install(TARGETS ${PLUGIN_NAME} DESTINATION ${KDE_INSTALL_QMLDIR}/org/kde/plasma/private/awesomewidget) | ||||||
| install(FILES qmldir DESTINATION ${QML_INSTALL_DIR}/org/kde/plasma/private/awesomewidget) | install(FILES qmldir DESTINATION ${KDE_INSTALL_QMLDIR}/org/kde/plasma/private/awesomewidget) | ||||||
| install(FILES ${SUBPROJECT_NOTIFY} DESTINATION ${KNOTIFYRC_INSTALL_DIR}) | install(FILES ${SUBPROJECT_NOTIFY} DESTINATION ${KDE_INSTALL_KNOTIFYRCDIR}) | ||||||
|  | |||||||
| @ -37,13 +37,13 @@ AWAbstractPairConfig::AWAbstractPairConfig(QWidget *_parent, const bool _hasEdit | |||||||
|  |  | ||||||
|     ui->setupUi(this); |     ui->setupUi(this); | ||||||
|  |  | ||||||
|     connect(ui->buttonBox, SIGNAL(accepted()), this, SLOT(accept())); |     connect(ui->buttonBox, &QDialogButtonBox::accepted, this, &AWAbstractPairConfig::accept); | ||||||
|     connect(ui->buttonBox, SIGNAL(rejected()), this, SLOT(reject())); |     connect(ui->buttonBox, &QDialogButtonBox::rejected, this, &AWAbstractPairConfig::reject); | ||||||
|  |  | ||||||
|     // edit feature |     // edit feature | ||||||
|     if (m_hasEdit) { |     if (m_hasEdit) { | ||||||
|         m_editButton = ui->buttonBox->addButton(i18n("Edit"), QDialogButtonBox::ActionRole); |         m_editButton = ui->buttonBox->addButton(i18n("Edit"), QDialogButtonBox::ActionRole); | ||||||
|         connect(m_editButton, SIGNAL(clicked(bool)), this, SLOT(edit())); |         connect(m_editButton, &QPushButton::clicked, [this]() { return edit(); }); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| @ -84,14 +84,14 @@ void AWAbstractPairConfig::edit() | |||||||
|  |  | ||||||
| void AWAbstractPairConfig::updateUi() | void AWAbstractPairConfig::updateUi() | ||||||
| { | { | ||||||
|     QPair<QString, QString> current = dynamic_cast<AWAbstractSelector *>(sender())->current(); |     auto current = dynamic_cast<AWAbstractSelector *>(sender())->current(); | ||||||
|     int index = m_selectors.indexOf(dynamic_cast<AWAbstractSelector *>(sender())); |     auto index = m_selectors.indexOf(dynamic_cast<AWAbstractSelector *>(sender())); | ||||||
|  |  | ||||||
|     if ((current.first.isEmpty()) && (current.second.isEmpty())) { |     if ((current.first.isEmpty()) && (current.second.isEmpty())) { | ||||||
|         // remove current selector if it is empty and does not last |         // remove current selector if it is empty and does not last | ||||||
|         if (sender() == m_selectors.last()) |         if (sender() == m_selectors.last()) | ||||||
|             return; |             return; | ||||||
|         AWAbstractSelector *selector = m_selectors.takeAt(index); |         auto *selector = m_selectors.takeAt(index); | ||||||
|         ui->verticalLayout->removeWidget(selector); |         ui->verticalLayout->removeWidget(selector); | ||||||
|         selector->deleteLater(); |         selector->deleteLater(); | ||||||
|     } else { |     } else { | ||||||
| @ -112,7 +112,7 @@ void AWAbstractPairConfig::addSelector(const QStringList &_keys, const QStringLi | |||||||
|     auto *selector = new AWAbstractSelector(ui->scrollAreaWidgetContents, m_editable); |     auto *selector = new AWAbstractSelector(ui->scrollAreaWidgetContents, m_editable); | ||||||
|     selector->init(_keys, _values, _current); |     selector->init(_keys, _values, _current); | ||||||
|     ui->verticalLayout->insertWidget(ui->verticalLayout->count() - 1, selector); |     ui->verticalLayout->insertWidget(ui->verticalLayout->count() - 1, selector); | ||||||
|     connect(selector, SIGNAL(selectionChanged()), this, SLOT(updateUi())); |     connect(selector, &AWAbstractSelector::selectionChanged, this, &AWAbstractPairConfig::updateUi); | ||||||
|     m_selectors.append(selector); |     m_selectors.append(selector); | ||||||
| } | } | ||||||
|  |  | ||||||
| @ -120,7 +120,7 @@ void AWAbstractPairConfig::addSelector(const QStringList &_keys, const QStringLi | |||||||
| void AWAbstractPairConfig::clearSelectors() | void AWAbstractPairConfig::clearSelectors() | ||||||
| { | { | ||||||
|     for (auto &selector : m_selectors) { |     for (auto &selector : m_selectors) { | ||||||
|         disconnect(selector, SIGNAL(selectionChanged()), this, SLOT(updateUi())); |         disconnect(selector, &AWAbstractSelector::selectionChanged, this, &AWAbstractPairConfig::updateUi); | ||||||
|         ui->verticalLayout->removeWidget(selector); |         ui->verticalLayout->removeWidget(selector); | ||||||
|         selector->deleteLater(); |         selector->deleteLater(); | ||||||
|     } |     } | ||||||
| @ -164,7 +164,7 @@ QPair<QStringList, QStringList> AWAbstractPairConfig::initKeys() const | |||||||
|     right.append(m_helper->rightKeys().isEmpty() ? m_keys : m_helper->rightKeys()); |     right.append(m_helper->rightKeys().isEmpty() ? m_keys : m_helper->rightKeys()); | ||||||
|     right.sort(); |     right.sort(); | ||||||
|  |  | ||||||
|     return QPair<QStringList, QStringList>(left, right); |     return {left, right}; | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| @ -175,7 +175,7 @@ void AWAbstractPairConfig::updateDialog() | |||||||
|     auto keys = initKeys(); |     auto keys = initKeys(); | ||||||
|  |  | ||||||
|     for (auto &key : m_helper->keys()) |     for (auto &key : m_helper->keys()) | ||||||
|         addSelector(keys.first, keys.second, QPair<QString, QString>(key, m_helper->pairs()[key])); |         addSelector(keys.first, keys.second, QPair<QString, QString>(key, pairs[key])); | ||||||
|     // empty one |     // empty one | ||||||
|     addSelector(keys.first, keys.second, QPair<QString, QString>()); |     addSelector(keys.first, keys.second, QPair<QString, QString>()); | ||||||
| } | } | ||||||
|  | |||||||
| @ -15,9 +15,7 @@ | |||||||
|  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * |  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * | ||||||
|  ***************************************************************************/ |  ***************************************************************************/ | ||||||
|  |  | ||||||
|  | #pragma once | ||||||
| #ifndef AWABSTRACTPAIRCONFIG_H |  | ||||||
| #define AWABSTRACTPAIRCONFIG_H |  | ||||||
|  |  | ||||||
| #include <QDialog> | #include <QDialog> | ||||||
|  |  | ||||||
| @ -67,6 +65,3 @@ private: | |||||||
|     [[nodiscard]] QPair<QStringList, QStringList> initKeys() const; |     [[nodiscard]] QPair<QStringList, QStringList> initKeys() const; | ||||||
|     void updateDialog(); |     void updateDialog(); | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| #endif /* AWABSTRACTPAIRCONFIG_H */ |  | ||||||
|  | |||||||
| @ -15,9 +15,7 @@ | |||||||
|  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * |  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * | ||||||
|  ***************************************************************************/ |  ***************************************************************************/ | ||||||
|  |  | ||||||
|  | #pragma once | ||||||
| #ifndef AWABSTRACTPAIRHELPER_H |  | ||||||
| #define AWABSTRACTPAIRHELPER_H |  | ||||||
|  |  | ||||||
| #include <QHash> | #include <QHash> | ||||||
|  |  | ||||||
| @ -46,6 +44,3 @@ private: | |||||||
|     QString m_filePath; |     QString m_filePath; | ||||||
|     QString m_section; |     QString m_section; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| #endif /* AWABSTRACTPAIRHELPER_H */ |  | ||||||
|  | |||||||
| @ -15,9 +15,7 @@ | |||||||
|  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * |  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * | ||||||
|  ***************************************************************************/ |  ***************************************************************************/ | ||||||
|  |  | ||||||
|  | #pragma once | ||||||
| #ifndef AWABSTRACTSELECTOR_H |  | ||||||
| #define AWABSTRACTSELECTOR_H |  | ||||||
|  |  | ||||||
| #include <QWidget> | #include <QWidget> | ||||||
|  |  | ||||||
| @ -43,6 +41,3 @@ signals: | |||||||
| private: | private: | ||||||
|     Ui::AWAbstractSelector *ui = nullptr; |     Ui::AWAbstractSelector *ui = nullptr; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| #endif /* AWABSTRACTSELECTOR_H */ |  | ||||||
|  | |||||||
| @ -71,13 +71,6 @@ QString AWActions::getFileContent(const QString &_path) | |||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| // HACK: since QML could not use QLoggingCategory I need this hack |  | ||||||
| bool AWActions::isDebugEnabled() |  | ||||||
| { |  | ||||||
|     return LOG_AW().isDebugEnabled(); |  | ||||||
| } |  | ||||||
|  |  | ||||||
|  |  | ||||||
| bool AWActions::runCmd(const QString &_cmd, const QStringList &_args) | bool AWActions::runCmd(const QString &_cmd, const QStringList &_args) | ||||||
| { | { | ||||||
|     qCDebug(LOG_AW) << "Cmd" << _cmd << "args" << _args; |     qCDebug(LOG_AW) << "Cmd" << _cmd << "args" << _args; | ||||||
|  | |||||||
| @ -15,9 +15,7 @@ | |||||||
|  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * |  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * | ||||||
|  ***************************************************************************/ |  ***************************************************************************/ | ||||||
|  |  | ||||||
|  | #pragma once | ||||||
| #ifndef AWACTIONS_H |  | ||||||
| #define AWACTIONS_H |  | ||||||
|  |  | ||||||
| #include <QMap> | #include <QMap> | ||||||
| #include <QObject> | #include <QObject> | ||||||
| @ -34,7 +32,6 @@ public: | |||||||
|     ~AWActions() override; |     ~AWActions() override; | ||||||
|     Q_INVOKABLE void checkUpdates(bool _showAnyway = false); |     Q_INVOKABLE void checkUpdates(bool _showAnyway = false); | ||||||
|     Q_INVOKABLE static QString getFileContent(const QString &_path); |     Q_INVOKABLE static QString getFileContent(const QString &_path); | ||||||
|     Q_INVOKABLE static bool isDebugEnabled(); |  | ||||||
|     Q_INVOKABLE static bool runCmd(const QString &_cmd, const QStringList &_args); |     Q_INVOKABLE static bool runCmd(const QString &_cmd, const QStringList &_args); | ||||||
|     Q_INVOKABLE static void showLegacyInfo(); |     Q_INVOKABLE static void showLegacyInfo(); | ||||||
|     Q_INVOKABLE static void showReadme(); |     Q_INVOKABLE static void showReadme(); | ||||||
| @ -48,6 +45,3 @@ public slots: | |||||||
| private: | private: | ||||||
|     AWUpdateHelper *m_updateHelper = nullptr; |     AWUpdateHelper *m_updateHelper = nullptr; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| #endif /* AWACTIONS_H */ |  | ||||||
|  | |||||||
| @ -44,7 +44,7 @@ AWBugReporter::~AWBugReporter() | |||||||
| void AWBugReporter::doConnect() | void AWBugReporter::doConnect() | ||||||
| { | { | ||||||
|     // additional method for testing needs |     // additional method for testing needs | ||||||
|     connect(this, SIGNAL(replyReceived(const int, const QString &)), this, SLOT(showInformation(int, const QString &))); |     connect(this, &AWBugReporter::replyReceived, this, &AWBugReporter::showInformation); | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| @ -72,25 +72,25 @@ void AWBugReporter::sendBugReport(const QString &_title, const QString &_body) | |||||||
|     qCDebug(LOG_AW) << "Send bug report with title" << _title << "and body" << _body; |     qCDebug(LOG_AW) << "Send bug report with title" << _title << "and body" << _body; | ||||||
|  |  | ||||||
|     auto *manager = new QNetworkAccessManager(nullptr); |     auto *manager = new QNetworkAccessManager(nullptr); | ||||||
|     connect(manager, SIGNAL(finished(QNetworkReply *)), this, SLOT(issueReplyRecieved(QNetworkReply *))); |     connect(manager, &QNetworkAccessManager::finished, this, &AWBugReporter::issueReplyReceived); | ||||||
|  |  | ||||||
|     QNetworkRequest request = QNetworkRequest(QUrl(BUGTRACKER_API)); |     auto request = QNetworkRequest(QUrl(BUGTRACKER_API)); | ||||||
|     request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json"); |     request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json"); | ||||||
|  |  | ||||||
|     // generate payload |     // generate payload | ||||||
|     QVariantMap payload; |     QVariantMap payload; | ||||||
|     payload["title"] = _title; |     payload["title"] = _title; | ||||||
|     payload["body"] = _body; |     payload["body"] = _body; | ||||||
|     payload["labels"] = QStringList() << "from application"; |     payload["labels"] = QStringList({"from application"}); | ||||||
|     // convert to QByteArray to send request |     // convert to QByteArray to send request | ||||||
|     QByteArray data = QJsonDocument::fromVariant(payload).toJson(QJsonDocument::Compact); |     auto data = QJsonDocument::fromVariant(payload).toJson(QJsonDocument::Compact); | ||||||
|     qCInfo(LOG_AW) << "Send request with _body" << data.data() << "and size" << data.size(); |     qCInfo(LOG_AW) << "Send request with _body" << data.data() << "and size" << data.size(); | ||||||
|  |  | ||||||
|     manager->post(request, data); |     manager->post(request, data); | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| void AWBugReporter::issueReplyRecieved(QNetworkReply *_reply) | void AWBugReporter::issueReplyReceived(QNetworkReply *_reply) | ||||||
| { | { | ||||||
|     if (_reply->error() != QNetworkReply::NoError) { |     if (_reply->error() != QNetworkReply::NoError) { | ||||||
|         qCWarning(LOG_AW) << "An error occurs" << _reply->error() << "with message" << _reply->errorString(); |         qCWarning(LOG_AW) << "An error occurs" << _reply->error() << "with message" << _reply->errorString(); | ||||||
| @ -98,7 +98,7 @@ void AWBugReporter::issueReplyRecieved(QNetworkReply *_reply) | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     QJsonParseError error{}; |     QJsonParseError error{}; | ||||||
|     QJsonDocument jsonDoc = QJsonDocument::fromJson(_reply->readAll(), &error); |     auto jsonDoc = QJsonDocument::fromJson(_reply->readAll(), &error); | ||||||
|     if (error.error != QJsonParseError::NoError) { |     if (error.error != QJsonParseError::NoError) { | ||||||
|         qCWarning(LOG_AW) << "Parse error" << error.errorString(); |         qCWarning(LOG_AW) << "Parse error" << error.errorString(); | ||||||
|         return emit(replyReceived(0, "")); |         return emit(replyReceived(0, "")); | ||||||
| @ -106,9 +106,9 @@ void AWBugReporter::issueReplyRecieved(QNetworkReply *_reply) | |||||||
|     _reply->deleteLater(); |     _reply->deleteLater(); | ||||||
|  |  | ||||||
|     // convert to map |     // convert to map | ||||||
|     QVariantMap response = jsonDoc.toVariant().toMap(); |     auto response = jsonDoc.toVariant().toMap(); | ||||||
|     QString url = response["html_url"].toString(); |     auto url = response["html_url"].toString(); | ||||||
|     int number = response["number"].toInt(); |     auto number = response["number"].toInt(); | ||||||
|  |  | ||||||
|     return emit(replyReceived(number, url)); |     return emit(replyReceived(number, url)); | ||||||
| } | } | ||||||
| @ -135,7 +135,7 @@ void AWBugReporter::showInformation(const int _number, const QString &_url) | |||||||
|  |  | ||||||
| void AWBugReporter::userReplyOnBugReport(QAbstractButton *_button) | void AWBugReporter::userReplyOnBugReport(QAbstractButton *_button) | ||||||
| { | { | ||||||
|     QMessageBox::ButtonRole ret = dynamic_cast<QMessageBox *>(sender())->buttonRole(_button); |     auto ret = dynamic_cast<QMessageBox *>(sender())->buttonRole(_button); | ||||||
|     qCInfo(LOG_AW) << "User select" << ret; |     qCInfo(LOG_AW) << "User select" << ret; | ||||||
|  |  | ||||||
|     switch (ret) { |     switch (ret) { | ||||||
|  | |||||||
| @ -15,9 +15,7 @@ | |||||||
|  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * |  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * | ||||||
|  ***************************************************************************/ |  ***************************************************************************/ | ||||||
|  |  | ||||||
|  | #pragma once | ||||||
| #ifndef AWBUGREPORTER_H |  | ||||||
| #define AWBUGREPORTER_H |  | ||||||
|  |  | ||||||
| #include <QObject> | #include <QObject> | ||||||
|  |  | ||||||
| @ -41,13 +39,10 @@ signals: | |||||||
|     void replyReceived(int _number, const QString &_url); |     void replyReceived(int _number, const QString &_url); | ||||||
|  |  | ||||||
| private slots: | private slots: | ||||||
|     void issueReplyRecieved(QNetworkReply *_reply); |     void issueReplyReceived(QNetworkReply *_reply); | ||||||
|     void showInformation(int _number, const QString &_url); |     void showInformation(int _number, const QString &_url); | ||||||
|     void userReplyOnBugReport(QAbstractButton *_button); |     void userReplyOnBugReport(QAbstractButton *_button); | ||||||
|  |  | ||||||
| private: | private: | ||||||
|     QString m_lastBugUrl; |     QString m_lastBugUrl; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| #endif /* AWBUGREPORTER_H */ |  | ||||||
|  | |||||||
| @ -21,7 +21,6 @@ | |||||||
| #include <QQmlPropertyMap> | #include <QQmlPropertyMap> | ||||||
| #include <QSettings> | #include <QSettings> | ||||||
| #include <QStandardPaths> | #include <QStandardPaths> | ||||||
| #include <QTextCodec> |  | ||||||
|  |  | ||||||
| #include "awdebug.h" | #include "awdebug.h" | ||||||
|  |  | ||||||
| @ -171,9 +170,6 @@ QVariantMap AWConfigHelper::readDataEngineConfiguration() | |||||||
|  |  | ||||||
|     settings.beginGroup("Configuration"); |     settings.beginGroup("Configuration"); | ||||||
|     configuration["ACPIPATH"] = settings.value("ACPIPATH", "/sys/class/power_supply/"); |     configuration["ACPIPATH"] = settings.value("ACPIPATH", "/sys/class/power_supply/"); | ||||||
|     configuration["GPUDEV"] = settings.value("GPUDEV", "auto"); |  | ||||||
|     configuration["HDDDEV"] = settings.value("HDDDEV", "all"); |  | ||||||
|     configuration["HDDTEMPCMD"] = settings.value("HDDTEMPCMD", "sudo smartctl -a"); |  | ||||||
|     configuration["MPDADDRESS"] = settings.value("MPDADDRESS", "localhost"); |     configuration["MPDADDRESS"] = settings.value("MPDADDRESS", "localhost"); | ||||||
|     configuration["MPDPORT"] = settings.value("MPDPORT", "6600"); |     configuration["MPDPORT"] = settings.value("MPDPORT", "6600"); | ||||||
|     configuration["MPRIS"] = settings.value("MPRIS", "auto"); |     configuration["MPRIS"] = settings.value("MPRIS", "auto"); | ||||||
| @ -198,9 +194,6 @@ bool AWConfigHelper::writeDataEngineConfiguration(const QVariantMap &_configurat | |||||||
|  |  | ||||||
|     settings.beginGroup("Configuration"); |     settings.beginGroup("Configuration"); | ||||||
|     settings.setValue("ACPIPATH", _configuration["ACPIPATH"]); |     settings.setValue("ACPIPATH", _configuration["ACPIPATH"]); | ||||||
|     settings.setValue("GPUDEV", _configuration["GPUDEV"]); |  | ||||||
|     settings.setValue("HDDDEV", _configuration["HDDDEV"]); |  | ||||||
|     settings.setValue("HDDTEMPCMD", _configuration["HDDTEMPCMD"]); |  | ||||||
|     settings.setValue("MPDADDRESS", _configuration["MPDADDRESS"]); |     settings.setValue("MPDADDRESS", _configuration["MPDADDRESS"]); | ||||||
|     settings.setValue("MPDPORT", _configuration["MPDPORT"]); |     settings.setValue("MPDPORT", _configuration["MPDPORT"]); | ||||||
|     settings.setValue("MPRIS", _configuration["MPRIS"]); |     settings.setValue("MPRIS", _configuration["MPRIS"]); | ||||||
| @ -285,7 +278,6 @@ void AWConfigHelper::writeFile(QSettings &_settings, const QString &_key, const | |||||||
|     QFile file(_fileName); |     QFile file(_fileName); | ||||||
|     if (file.open(QIODevice::WriteOnly | QIODevice::Text)) { |     if (file.open(QIODevice::WriteOnly | QIODevice::Text)) { | ||||||
|         QTextStream out(&file); |         QTextStream out(&file); | ||||||
|         out.setCodec("UTF-8"); |  | ||||||
|         out << _settings.value(_key).toString().toUtf8(); |         out << _settings.value(_key).toString().toUtf8(); | ||||||
|         out.flush(); |         out.flush(); | ||||||
|         file.close(); |         file.close(); | ||||||
|  | |||||||
| @ -15,9 +15,7 @@ | |||||||
|  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * |  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * | ||||||
|  ***************************************************************************/ |  ***************************************************************************/ | ||||||
|  |  | ||||||
|  | #pragma once | ||||||
| #ifndef AWCONFIGHELPER_H |  | ||||||
| #define AWCONFIGHELPER_H |  | ||||||
|  |  | ||||||
| #include <QObject> | #include <QObject> | ||||||
| #include <QVariant> | #include <QVariant> | ||||||
| @ -52,6 +50,3 @@ private: | |||||||
|     QString m_baseDir; |     QString m_baseDir; | ||||||
|     QStringList m_dirs = {"desktops", "quotes", "scripts", "upgrade", "weather", "formatters"}; |     QStringList m_dirs = {"desktops", "quotes", "scripts", "upgrade", "weather", "formatters"}; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| #endif /* AWCONFIGHELPER_H */ |  | ||||||
|  | |||||||
| @ -15,9 +15,7 @@ | |||||||
|  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * |  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * | ||||||
|  ***************************************************************************/ |  ***************************************************************************/ | ||||||
|  |  | ||||||
|  | #pragma once | ||||||
| #ifndef AWCUSTOMKEYSCONFIG_H |  | ||||||
| #define AWCUSTOMKEYSCONFIG_H |  | ||||||
|  |  | ||||||
| #include "awabstractpairconfig.h" | #include "awabstractpairconfig.h" | ||||||
|  |  | ||||||
| @ -30,6 +28,3 @@ public: | |||||||
|     explicit AWCustomKeysConfig(QWidget *_parent = nullptr, const QStringList &_keys = QStringList()); |     explicit AWCustomKeysConfig(QWidget *_parent = nullptr, const QStringList &_keys = QStringList()); | ||||||
|     ~AWCustomKeysConfig() override; |     ~AWCustomKeysConfig() override; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| #endif /* AWCUSTOMKEYSCONFIG_H */ |  | ||||||
|  | |||||||
| @ -15,9 +15,7 @@ | |||||||
|  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * |  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * | ||||||
|  ***************************************************************************/ |  ***************************************************************************/ | ||||||
|  |  | ||||||
|  | #pragma once | ||||||
| #ifndef AWCUSTOMKEYSHELPER_H |  | ||||||
| #define AWCUSTOMKEYSHELPER_H |  | ||||||
|  |  | ||||||
| #include <QObject> | #include <QObject> | ||||||
|  |  | ||||||
| @ -42,6 +40,3 @@ public: | |||||||
|  |  | ||||||
| private: | private: | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| #endif /* AWCUSTOMKEYSHELPER_H */ |  | ||||||
|  | |||||||
| @ -15,9 +15,7 @@ | |||||||
|  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * |  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * | ||||||
|  ***************************************************************************/ |  ***************************************************************************/ | ||||||
|  |  | ||||||
|  | #pragma once | ||||||
| #ifndef AWTOOLTIP_H |  | ||||||
| #define AWTOOLTIP_H |  | ||||||
|  |  | ||||||
| #include <QObject> | #include <QObject> | ||||||
| #include <QVariant> | #include <QVariant> | ||||||
| @ -68,6 +66,3 @@ private: | |||||||
|     bool m_enablePopup = false; |     bool m_enablePopup = false; | ||||||
|     QStringList requiredKeys; |     QStringList requiredKeys; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| #endif /* AWTOOLTIP_H */ |  | ||||||
|  | |||||||
| @ -17,30 +17,35 @@ | |||||||
|  |  | ||||||
| #include "awdataengineaggregator.h" | #include "awdataengineaggregator.h" | ||||||
|  |  | ||||||
| #include <Plasma/DataContainer> | #include <ksysguard/formatter/Unit.h> | ||||||
|  | #include <ksysguard/systemstats/DBusInterface.h> | ||||||
|  |  | ||||||
|  | #include <QDBusConnection> | ||||||
|  |  | ||||||
| #include "awdebug.h" | #include "awdebug.h" | ||||||
|  |  | ||||||
|  |  | ||||||
| AWDataEngineAggregator::AWDataEngineAggregator(QObject *_parent) | AWDataEngineAggregator::AWDataEngineAggregator(QObject *_parent) | ||||||
|     : QObject(_parent) |     : QObject(_parent) | ||||||
|  |     , m_interface(new KSysGuard::SystemStats::DBusInterface()) | ||||||
| { | { | ||||||
|     qCDebug(LOG_AW) << __PRETTY_FUNCTION__; |     qCDebug(LOG_AW) << __PRETTY_FUNCTION__; | ||||||
|  |  | ||||||
|     m_consumer = new Plasma::DataEngineConsumer(); |     qDBusRegisterMetaType<KSysGuard::SensorData>(); | ||||||
|     m_dataEngines["systemmonitor"] = m_consumer->dataEngine("systemmonitor"); |     qDBusRegisterMetaType<KSysGuard::SensorInfo>(); | ||||||
|     m_dataEngines["extsysmon"] = m_consumer->dataEngine("extsysmon"); |     qDBusRegisterMetaType<KSysGuard::SensorDataList>(); | ||||||
|     m_dataEngines["time"] = m_consumer->dataEngine("time"); |     qDBusRegisterMetaType<QHash<QString, KSysGuard::SensorInfo>>(); | ||||||
|  |  | ||||||
|     // additional method required by systemmonitor structure |     connect(m_interface, &KSysGuard::SystemStats::DBusInterface::newSensorData, this, | ||||||
|     m_newSourceConnection |             &AWDataEngineAggregator::updateData); | ||||||
|         = connect(m_dataEngines["systemmonitor"], &Plasma::DataEngine::sourceAdded, [this](const QString &source) { |     connect(m_interface, &KSysGuard::SystemStats::DBusInterface::sensorMetaDataChanged, this, | ||||||
|               emit(deviceAdded(source)); |             &AWDataEngineAggregator::updateSensors); | ||||||
|               m_dataEngines["systemmonitor"]->connectSource(source, parent(), 1000); |     connect(m_interface, &KSysGuard::SystemStats::DBusInterface::sensorAdded, this, | ||||||
|           }); |             &AWDataEngineAggregator::sensorAdded); | ||||||
|  |     connect(m_interface, &KSysGuard::SystemStats::DBusInterface::sensorRemoved, this, | ||||||
|  |             &AWDataEngineAggregator::sensorRemoved); | ||||||
|  |  | ||||||
|     // required to define Qt::QueuedConnection for signal-slot connection |     loadSources(); | ||||||
|     qRegisterMetaType<Plasma::DataEngine::Data>("Plasma::DataEngine::Data"); |  | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| @ -49,67 +54,102 @@ AWDataEngineAggregator::~AWDataEngineAggregator() | |||||||
|     qCDebug(LOG_AW) << __PRETTY_FUNCTION__; |     qCDebug(LOG_AW) << __PRETTY_FUNCTION__; | ||||||
|  |  | ||||||
|     disconnectSources(); |     disconnectSources(); | ||||||
|  |     m_interface->deleteLater(); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | void AWDataEngineAggregator::connectSources() | ||||||
|  | { | ||||||
|  |     auto keys = m_sensors.keys(); | ||||||
|  |     auto newKeys = QSet(keys.cbegin(), keys.cend()) - m_subscribed; | ||||||
|  |  | ||||||
|  |     m_interface->subscribe(newKeys.values()).waitForFinished(); | ||||||
|  |     m_subscribed.unite(newKeys); | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| void AWDataEngineAggregator::disconnectSources() | void AWDataEngineAggregator::disconnectSources() | ||||||
| { | { | ||||||
|     for (auto dataEngine : m_dataEngines.values()) |     m_interface->unsubscribe(m_subscribed.values()).waitForFinished(); | ||||||
|         for (auto &source : dataEngine->sources()) |     m_subscribed.clear(); | ||||||
|             dataEngine->disconnectSource(source, parent()); |  | ||||||
|     disconnect(m_newSourceConnection); |  | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| void AWDataEngineAggregator::reconnectSources(const int _interval) | bool AWDataEngineAggregator::isValidSensor(const KSysGuard::SensorInfo &_sensor) | ||||||
| { | { | ||||||
|     qCDebug(LOG_AW) << "Reconnect sources with interval" << _interval; |     return _sensor.unit != KSysGuard::UnitInvalid; | ||||||
|  | } | ||||||
|  |  | ||||||
|     disconnectSources(); |  | ||||||
|  |  | ||||||
|     m_dataEngines["systemmonitor"]->connectAllSources(parent(), (uint)_interval); | void AWDataEngineAggregator::loadSources() | ||||||
|     m_dataEngines["extsysmon"]->connectAllSources(parent(), (uint)_interval); | { | ||||||
|     m_dataEngines["time"]->connectSource("Local", parent(), 1000); |     auto response = m_interface->allSensors(); | ||||||
|  |     response.waitForFinished(); | ||||||
|  |  | ||||||
|     m_newSourceConnection = connect( |     auto sensors = response.value(); | ||||||
|         m_dataEngines["systemmonitor"], &Plasma::DataEngine::sourceAdded, [this, _interval](const QString &source) { |     updateSensors(sensors); | ||||||
|             emit(deviceAdded(source)); |     connectSources(); | ||||||
|             m_dataEngines["systemmonitor"]->connectSource(source, parent(), (uint)_interval); |  | ||||||
|         }); |  | ||||||
|  |  | ||||||
| #ifdef BUILD_FUTURE |     for (auto &sensor : m_sensors.keys()) | ||||||
|     createQueuedConnection(); |         emit(deviceAdded(sensor)); | ||||||
| #endif /* BUILD_FUTURE */ |  | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| void AWDataEngineAggregator::dropSource(const QString &_source) | void AWDataEngineAggregator::dropSource(const QString &_source) | ||||||
| { | { | ||||||
|     qCDebug(LOG_AW) << "Source" << _source; |     qCDebug(LOG_AW) << "Disconnect sensor" << _source; | ||||||
|  |  | ||||||
|     // HACK there is no possibility to check to which dataengine source |     if (m_subscribed.contains(_source)) { | ||||||
|     // connected we will try to disconnect it from all engines |         m_interface->unsubscribe({_source}).waitForFinished(); | ||||||
|     for (auto dataEngine : m_dataEngines.values()) |         m_subscribed.remove(_source); | ||||||
|         dataEngine->disconnectSource(_source, parent()); |     } | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| void AWDataEngineAggregator::createQueuedConnection() | void AWDataEngineAggregator::sensorAdded(const QString &_sensor) | ||||||
| { | { | ||||||
|     // HACK additional method which forces QueuedConnection instead of Auto one |     qCDebug(LOG_AW) << "New sensor added" << _sensor; | ||||||
|     // for more details refer to plasma-framework source code |  | ||||||
|     for (auto &dataEngine : m_dataEngines.keys()) { |     // check if sensor is actually valid | ||||||
|         // different source set for different engines |     auto response = m_interface->sensors({_sensor}); | ||||||
|         QStringList sources = dataEngine == "time" ? QStringList() << "Local" : m_dataEngines[dataEngine]->sources(); |     response.waitForFinished(); | ||||||
|         // reconnect sources |  | ||||||
|         for (auto &source : sources) { |     auto info = response.value().value(_sensor); | ||||||
|             Plasma::DataContainer *container = m_dataEngines[dataEngine]->containerForSource(source); |     if (!isValidSensor(info)) | ||||||
|             // disconnect old connections first |         return; | ||||||
|             disconnect(container, SIGNAL(dataUpdated(QString, Plasma::DataEngine::Data)), parent(), |  | ||||||
|                        SLOT(dataUpdated(QString, Plasma::DataEngine::Data))); |     m_sensors[_sensor] = info; | ||||||
|             // and now reconnect with Qt::QueuedConnection type |     dropSource(_sensor); // force reconnect | ||||||
|             connect(container, SIGNAL(dataUpdated(QString, Plasma::DataEngine::Data)), parent(), |     if (!m_subscribed.contains(_sensor)) { | ||||||
|                     SLOT(dataUpdated(QString, Plasma::DataEngine::Data)), Qt::QueuedConnection); |         m_interface->subscribe({_sensor}).waitForFinished(); | ||||||
|         } |         m_subscribed.insert(_sensor); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     // notify about new device | ||||||
|  |     emit(deviceAdded(_sensor)); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | void AWDataEngineAggregator::sensorRemoved(const QString &_sensor) | ||||||
|  | { | ||||||
|  |     qCDebug(LOG_AW) << "Sensor" << _sensor << "has been removed"; | ||||||
|  |  | ||||||
|  |     m_sensors.remove(_sensor); | ||||||
|  |     dropSource(_sensor); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | void AWDataEngineAggregator::updateData(KSysGuard::SensorDataList _data) | ||||||
|  | { | ||||||
|  |     emit(dataUpdated(m_sensors, _data)); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | void AWDataEngineAggregator::updateSensors(const QHash<QString, KSysGuard::SensorInfo> &_sensors) | ||||||
|  | { | ||||||
|  |     for (auto sensor = _sensors.cbegin(); sensor != _sensors.cend(); ++sensor) { | ||||||
|  |         if (!isValidSensor(sensor.value())) | ||||||
|  |             continue; | ||||||
|  |         m_sensors.insert(sensor.key(), sensor.value()); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | |||||||
| @ -15,16 +15,20 @@ | |||||||
|  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * |  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * | ||||||
|  ***************************************************************************/ |  ***************************************************************************/ | ||||||
|  |  | ||||||
|  | #pragma once | ||||||
|  |  | ||||||
| #ifndef AWDATAENGINEAGGREGATOR_H | #include <ksysguard/systemstats/SensorInfo.h> | ||||||
| #define AWDATAENGINEAGGREGATOR_H |  | ||||||
|  |  | ||||||
| #include <Plasma/DataEngine> |  | ||||||
| #include <Plasma/DataEngineConsumer> |  | ||||||
|  |  | ||||||
|  | #include <QHash> | ||||||
| #include <QObject> | #include <QObject> | ||||||
|  | #include <QSet> | ||||||
|  |  | ||||||
|  |  | ||||||
|  | namespace KSysGuard::SystemStats | ||||||
|  | { | ||||||
|  | class DBusInterface; | ||||||
|  | } | ||||||
|  |  | ||||||
| class AWDataEngineAggregator : public QObject | class AWDataEngineAggregator : public QObject | ||||||
| { | { | ||||||
|     Q_OBJECT |     Q_OBJECT | ||||||
| @ -32,21 +36,24 @@ class AWDataEngineAggregator : public QObject | |||||||
| public: | public: | ||||||
|     explicit AWDataEngineAggregator(QObject *_parent = nullptr); |     explicit AWDataEngineAggregator(QObject *_parent = nullptr); | ||||||
|     ~AWDataEngineAggregator() override; |     ~AWDataEngineAggregator() override; | ||||||
|  |     void connectSources(); | ||||||
|     void disconnectSources(); |     void disconnectSources(); | ||||||
|     void reconnectSources(int _interval); |     [[nodiscard]] static bool isValidSensor(const KSysGuard::SensorInfo &_sensor); | ||||||
|  |     void loadSources(); | ||||||
|  |  | ||||||
| signals: | signals: | ||||||
|  |     void dataUpdated(const QHash<QString, KSysGuard::SensorInfo> &_sensors, const KSysGuard::SensorDataList &_data); | ||||||
|     void deviceAdded(const QString &_source); |     void deviceAdded(const QString &_source); | ||||||
|  |  | ||||||
| public slots: | public slots: | ||||||
|     void dropSource(const QString &_source); |     void dropSource(const QString &_source); | ||||||
|  |     void sensorAdded(const QString &_sensor); | ||||||
|  |     void sensorRemoved(const QString &_sensor); | ||||||
|  |     void updateData(KSysGuard::SensorDataList _data); | ||||||
|  |     void updateSensors(const QHash<QString, KSysGuard::SensorInfo> &_sensors); | ||||||
|  |  | ||||||
| private: | private: | ||||||
|     void createQueuedConnection(); |     KSysGuard::SystemStats::DBusInterface *m_interface = nullptr; | ||||||
|     Plasma::DataEngineConsumer *m_consumer = nullptr; |     QHash<QString, KSysGuard::SensorInfo> m_sensors; | ||||||
|     QHash<QString, Plasma::DataEngine *> m_dataEngines; |     QSet<QString> m_subscribed; | ||||||
|     QMetaObject::Connection m_newSourceConnection; |  | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| #endif /* AWDATAENGINEAGGREGATOR_H */ |  | ||||||
|  | |||||||
| @ -17,7 +17,7 @@ | |||||||
|  |  | ||||||
| #include "awdataenginemapper.h" | #include "awdataenginemapper.h" | ||||||
|  |  | ||||||
| #include <QRegExp> | #include <QRegularExpression> | ||||||
|  |  | ||||||
| #include "awdebug.h" | #include "awdebug.h" | ||||||
| #include "awformatterhelper.h" | #include "awformatterhelper.h" | ||||||
| @ -76,106 +76,126 @@ 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 QString &_units, const QStringList &_keys) | QStringList AWDataEngineMapper::registerSource(const QString &_source, const KSysGuard::Unit _units, | ||||||
|  |                                                const QStringList &_keys) | ||||||
| { | { | ||||||
|     qCDebug(LOG_AW) << "Source" << _source << "with units" << _units; |     qCDebug(LOG_AW) << "Source" << _source << "with units" << _units; | ||||||
|  |  | ||||||
|     // regular expressions |     // regular expressions | ||||||
|     QRegExp cpuRegExp = QRegExp("cpu/cpu.*/TotalLoad"); |     auto cpuRegExp = QRegularExpression("^cpu/cpu.*/usage$"); | ||||||
|     QRegExp cpuclRegExp = QRegExp("cpu/cpu.*/clock"); |     auto cpuclRegExp = QRegularExpression("^cpu/cpu.*/frequency$"); | ||||||
|     QRegExp hddrRegExp = QRegExp("disk/.*/Rate/rblk"); |     auto cpuTempRegExp = QRegularExpression("^cpu/cpu.*/temperature$"); | ||||||
|     QRegExp hddwRegExp = QRegExp("disk/.*/Rate/wblk"); |     auto gpuRegExp = QRegularExpression("^gpu/gpu.*/usage$"); | ||||||
|     QRegExp mountFillRegExp = QRegExp("partitions/.*/filllevel"); |     auto gpuTempRegExp = QRegularExpression("^gpu/gpu.*/temperature$"); | ||||||
|     QRegExp mountFreeRegExp = QRegExp("partitions/.*/freespace"); |     auto hddrRegExp = QRegularExpression("^disk/.*/read$"); | ||||||
|     QRegExp mountUsedRegExp = QRegExp("partitions/.*/usedspace"); |     auto hddwRegExp = QRegularExpression("^disk/.*/write$"); | ||||||
|     QRegExp netRegExp = QRegExp("network/interfaces/.*/(receiver|transmitter)/data$"); |     auto mountFillRegExp = QRegularExpression("^disk/.*/usedPercent$"); | ||||||
|     QRegExp netTotalRegExp = QRegExp("network/interfaces/.*/(receiver|transmitter)/dataTotal$"); |     auto mountFreeRegExp = QRegularExpression("^disk/.*/free$"); | ||||||
|  |     auto mountUsedRegExp = QRegularExpression("^disk/.*/used$"); | ||||||
|  |     auto netRegExp = QRegularExpression("^network/.*/(download|upload)$"); | ||||||
|  |     auto netTotalRegExp = QRegularExpression("^network/.*/(totalDownload|totalUpload)$"); | ||||||
|  |  | ||||||
|     if (_source == "battery/ac") { |     if (_source == "extsysmon/battery/ac") { | ||||||
|         // AC |         // AC | ||||||
|         m_map.insert(_source, "ac"); |         m_map.insert(_source, "ac"); | ||||||
|         m_formatter["ac"] = AWKeysAggregator::FormatterType::ACFormat; |         m_formatter["ac"] = AWKeysAggregator::FormatterType::ACFormat; | ||||||
|     } else if (_source.startsWith("battery/")) { |     } else if (_source.startsWith("extsysmon/battery/")) { | ||||||
|         // battery stats |         // battery stats | ||||||
|         QString key = _source; |         auto key = _source; | ||||||
|         key.remove("battery/"); |         key.remove("extsysmon/battery/"); | ||||||
|         m_map.insert(_source, key); |         m_map.insert(_source, key); | ||||||
|         m_formatter[key] = _source.contains("rate") ? AWKeysAggregator::FormatterType::Float |         m_formatter[key] = _source.contains("rate") ? AWKeysAggregator::FormatterType::Float | ||||||
|                                                     : AWKeysAggregator::FormatterType::IntegerThree; |                                                     : AWKeysAggregator::FormatterType::IntegerThree; | ||||||
|     } else if (_source == "cpu/system/TotalLoad") { |     } else if (_source == "cpu/all/usage") { | ||||||
|         // cpu |         // cpu | ||||||
|         m_map.insert(_source, "cpu"); |         m_map.insert(_source, "cpu"); | ||||||
|         m_formatter["cpu"] = AWKeysAggregator::FormatterType::Float; |         m_formatter["cpu"] = AWKeysAggregator::FormatterType::Float; | ||||||
|     } else if (_source.contains(cpuRegExp)) { |     } else if (_source.contains(cpuRegExp)) { | ||||||
|         // cpus |         // cpus | ||||||
|         QString key = _source; |         auto key = _source; | ||||||
|         key.remove("cpu/").remove("/TotalLoad"); |         key.remove("cpu/").remove("/usage"); | ||||||
|         m_map.insert(_source, key); |         m_map.insert(_source, key); | ||||||
|         m_formatter[key] = AWKeysAggregator::FormatterType::Float; |         m_formatter[key] = AWKeysAggregator::FormatterType::Float; | ||||||
|     } else if (_source == "cpu/system/AverageClock") { |     } else if (_source == "cpu/all/averageFrequency") { | ||||||
|         // cpucl |         // cpucl | ||||||
|         m_map.insert(_source, "cpucl"); |         m_map.insert(_source, "cpucl"); | ||||||
|         m_formatter["cpucl"] = AWKeysAggregator::FormatterType::Integer; |         m_formatter["cpucl"] = AWKeysAggregator::FormatterType::Integer; | ||||||
|     } else if (_source.contains(cpuclRegExp)) { |     } else if (_source.contains(cpuclRegExp)) { | ||||||
|         // cpucls |         // cpucls | ||||||
|         QString key = _source; |         auto key = _source; | ||||||
|         key.remove("cpu/cpu").remove("/clock"); |         key.remove("cpu/cpu").remove("/frequency"); | ||||||
|         key = QString("cpucl%1").arg(key); |         key = QString("cpucl%1").arg(key); | ||||||
|         m_map.insert(_source, key); |         m_map.insert(_source, key); | ||||||
|         m_formatter[key] = AWKeysAggregator::FormatterType::Integer; |         m_formatter[key] = AWKeysAggregator::FormatterType::Integer; | ||||||
|     } else if (_source.startsWith("custom")) { |     } else if (_source.startsWith("extsysmon/custom")) { | ||||||
|         // custom |         // custom | ||||||
|         QString key = _source; |         auto key = _source; | ||||||
|         key.remove("custom/"); |         key.remove("extsysmon/custom/"); | ||||||
|         m_map.insert(_source, key); |         m_map.insert(_source, key); | ||||||
|         m_formatter[key] = AWKeysAggregator::FormatterType::NoFormat; |         m_formatter[key] = AWKeysAggregator::FormatterType::NoFormat; | ||||||
|     } else if (_source == "desktop/current/name") { |     } else if (_source == "extsysmon/desktop/name") { | ||||||
|         // current desktop name |         // current desktop name | ||||||
|         m_map.insert(_source, "desktop"); |         m_map.insert(_source, "desktop"); | ||||||
|         m_formatter["desktop"] = AWKeysAggregator::FormatterType::NoFormat; |         m_formatter["desktop"] = AWKeysAggregator::FormatterType::NoFormat; | ||||||
|     } else if (_source == "desktop/current/number") { |     } else if (_source == "extsysmon/desktop/number") { | ||||||
|         // current desktop number |         // current desktop number | ||||||
|         m_map.insert(_source, "ndesktop"); |         m_map.insert(_source, "ndesktop"); | ||||||
|         m_formatter["ndesktop"] = AWKeysAggregator::FormatterType::NoFormat; |         m_formatter["ndesktop"] = AWKeysAggregator::FormatterType::NoFormat; | ||||||
|     } else if (_source == "desktop/total/number") { |     } else if (_source == "extsysmon/desktop/count") { | ||||||
|         // desktop count |         // desktop count | ||||||
|         m_map.insert(_source, "tdesktops"); |         m_map.insert(_source, "tdesktops"); | ||||||
|         m_formatter["tdesktops"] = AWKeysAggregator::FormatterType::NoFormat; |         m_formatter["tdesktops"] = AWKeysAggregator::FormatterType::NoFormat; | ||||||
|     } else if (_source.contains(hddrRegExp)) { |     } else if (_source.contains(hddrRegExp)) { | ||||||
|         // read speed |         // read speed | ||||||
|         QString device = _source; |         auto device = _source; | ||||||
|         device.remove("/Rate/rblk"); |         device.remove("disk/").remove("/read"); | ||||||
|         int index = m_devices["disk"].indexOf(device); |         auto index = m_devices["disk"].indexOf(device); | ||||||
|         if (index > -1) { |         if (index > -1) { | ||||||
|             QString key = QString("hddr%1").arg(index); |             QString key = QString("hddr%1").arg(index); | ||||||
|             m_map.insert(_source, key); |             m_map.insert(_source, key); | ||||||
|             m_formatter[key] = AWKeysAggregator::FormatterType::Integer; |             m_formatter[key] = AWKeysAggregator::FormatterType::MemKBFormat; | ||||||
|         } |         } | ||||||
|     } else if (_source.contains(hddwRegExp)) { |     } else if (_source.contains(hddwRegExp)) { | ||||||
|         // write speed |         // write speed | ||||||
|         QString device = _source; |         auto device = _source; | ||||||
|         device.remove("/Rate/wblk"); |         device.remove("disk/").remove("/write"); | ||||||
|         int index = m_devices["disk"].indexOf(device); |         auto index = m_devices["disk"].indexOf(device); | ||||||
|         if (index > -1) { |         if (index > -1) { | ||||||
|             QString key = QString("hddw%1").arg(index); |             QString key = QString("hddw%1").arg(index); | ||||||
|             m_map.insert(_source, key); |             m_map.insert(_source, key); | ||||||
|             m_formatter[key] = AWKeysAggregator::FormatterType::Integer; |             m_formatter[key] = AWKeysAggregator::FormatterType::MemKBFormat; | ||||||
|         } |         } | ||||||
|     } else if (_source == "gpu/load") { |     } else if (_source == "gpu/all/usage") { | ||||||
|         // gpu load |         // gpu load | ||||||
|         m_map.insert(_source, "gpu"); |         m_map.insert(_source, "gpu"); | ||||||
|         m_formatter["gpu"] = AWKeysAggregator::FormatterType::Float; |         m_formatter["gpu"] = AWKeysAggregator::FormatterType::Float; | ||||||
|     } else if (_source == "gpu/temperature") { |     } else if (_source.contains(gpuRegExp)) { | ||||||
|         // gpu temperature |         // gpus | ||||||
|         m_map.insert(_source, "gputemp"); |         auto device = _source; | ||||||
|         m_formatter["gputemp"] = AWKeysAggregator::FormatterType::Temperature; |         device.remove("gpu/").remove("/usage"); | ||||||
|  |         auto index = m_devices["gpu"].indexOf(device); | ||||||
|  |         if (index > -1) { | ||||||
|  |             auto key = QString("gpu%1").arg(index); | ||||||
|  |             m_map.insert(_source, key); | ||||||
|  |             m_formatter[key] = AWKeysAggregator::FormatterType::Float; | ||||||
|  |         } | ||||||
|  |     } else if (_source.contains(gpuTempRegExp)) { | ||||||
|  |         // gpus temps | ||||||
|  |         auto device = _source; | ||||||
|  |         device.remove("gpu/").remove("/temperature"); | ||||||
|  |         auto index = m_devices["gpu"].indexOf(device); | ||||||
|  |         if (index > -1) { | ||||||
|  |             auto key = QString("gputemp%1").arg(index); | ||||||
|  |             m_map.insert(_source, key); | ||||||
|  |             m_formatter[key] = AWKeysAggregator::FormatterType::Temperature; | ||||||
|  |         } | ||||||
|     } else if (_source.contains(mountFillRegExp)) { |     } else if (_source.contains(mountFillRegExp)) { | ||||||
|         // fill level |         // fill level | ||||||
|         QString device = _source; |         auto device = _source; | ||||||
|         device.remove("partitions").remove("/filllevel"); |         device.remove("disk/").remove("/usedPercent"); | ||||||
|         int index = m_devices["mount"].indexOf(device); |         auto index = m_devices["mount"].indexOf(device); | ||||||
|         if (index > -1) { |         if (index > -1) { | ||||||
|             QString key = QString("hdd%1").arg(index); |             auto key = QString("hdd%1").arg(index); | ||||||
|             m_map.insert(_source, key); |             m_map.insert(_source, key); | ||||||
|             m_formatter[key] = AWKeysAggregator::FormatterType::Float; |             m_formatter[key] = AWKeysAggregator::FormatterType::Float; | ||||||
|             // additional keys |             // additional keys | ||||||
| @ -184,9 +204,9 @@ QStringList AWDataEngineMapper::registerSource(const QString &_source, const QSt | |||||||
|         } |         } | ||||||
|     } else if (_source.contains(mountFreeRegExp)) { |     } else if (_source.contains(mountFreeRegExp)) { | ||||||
|         // free space |         // free space | ||||||
|         QString device = _source; |         auto device = _source; | ||||||
|         device.remove("partitions").remove("/freespace"); |         device.remove("disk/").remove("/free"); | ||||||
|         int index = m_devices["mount"].indexOf(device); |         auto index = m_devices["mount"].indexOf(device); | ||||||
|         if (index > -1) { |         if (index > -1) { | ||||||
|             // mb |             // mb | ||||||
|             QString key = QString("hddfreemb%1").arg(index); |             QString key = QString("hddfreemb%1").arg(index); | ||||||
| @ -199,9 +219,9 @@ QStringList AWDataEngineMapper::registerSource(const QString &_source, const QSt | |||||||
|         } |         } | ||||||
|     } else if (_source.contains(mountUsedRegExp)) { |     } else if (_source.contains(mountUsedRegExp)) { | ||||||
|         // used |         // used | ||||||
|         QString device = _source; |         auto device = _source; | ||||||
|         device.remove("partitions").remove("/usedspace"); |         device.remove("disk/").remove("/used"); | ||||||
|         int index = m_devices["mount"].indexOf(device); |         auto index = m_devices["mount"].indexOf(device); | ||||||
|         if (index > -1) { |         if (index > -1) { | ||||||
|             // mb |             // mb | ||||||
|             QString key = QString("hddmb%1").arg(index); |             QString key = QString("hddmb%1").arg(index); | ||||||
| @ -212,24 +232,14 @@ QStringList AWDataEngineMapper::registerSource(const QString &_source, const QSt | |||||||
|             m_map.insert(_source, key); |             m_map.insert(_source, key); | ||||||
|             m_formatter[key] = AWKeysAggregator::FormatterType::MemGBFormat; |             m_formatter[key] = AWKeysAggregator::FormatterType::MemGBFormat; | ||||||
|         } |         } | ||||||
|     } else if (_source.startsWith("hdd/temperature")) { |     } else if (_source.startsWith("cpu/loadaverages/loadaverage")) { | ||||||
|         // hdd temperature |  | ||||||
|         QString device = _source; |  | ||||||
|         device.remove("hdd/temperature"); |  | ||||||
|         int index = m_devices["hdd"].indexOf(device); |  | ||||||
|         if (index > -1) { |  | ||||||
|             QString key = QString("hddtemp%1").arg(index); |  | ||||||
|             m_map.insert(_source, key); |  | ||||||
|             m_formatter[key] = AWKeysAggregator::FormatterType::Temperature; |  | ||||||
|         } |  | ||||||
|     } else if (_source.startsWith("cpu/system/loadavg")) { |  | ||||||
|         // load average |         // load average | ||||||
|         QString time = _source; |         auto time = _source; | ||||||
|         time.remove("cpu/system/loadavg"); |         time.remove("cpu/loadaverages/loadaverage"); | ||||||
|         QString key = QString("la%1").arg(time); |         auto key = QString("la%1").arg(time); | ||||||
|         m_map.insert(_source, key); |         m_map.insert(_source, key); | ||||||
|         m_formatter[key] = AWKeysAggregator::FormatterType::FloatTwoSymbols; |         m_formatter[key] = AWKeysAggregator::FormatterType::FloatTwoSymbols; | ||||||
|     } else if (_source == "mem/physical/application") { |     } else if (_source == "memory/physical/application") { | ||||||
|         // app memory |         // app memory | ||||||
|         // mb |         // mb | ||||||
|         m_map.insert(_source, "memmb"); |         m_map.insert(_source, "memmb"); | ||||||
| @ -237,7 +247,7 @@ QStringList AWDataEngineMapper::registerSource(const QString &_source, const QSt | |||||||
|         // gb |         // gb | ||||||
|         m_map.insert(_source, "memgb"); |         m_map.insert(_source, "memgb"); | ||||||
|         m_formatter["memgb"] = AWKeysAggregator::FormatterType::MemGBFormat; |         m_formatter["memgb"] = AWKeysAggregator::FormatterType::MemGBFormat; | ||||||
|     } else if (_source == "mem/physical/free") { |     } else if (_source == "memory/physical/free") { | ||||||
|         // free memory |         // free memory | ||||||
|         // mb |         // mb | ||||||
|         m_map.insert(_source, "memfreemb"); |         m_map.insert(_source, "memfreemb"); | ||||||
| @ -245,7 +255,7 @@ QStringList AWDataEngineMapper::registerSource(const QString &_source, const QSt | |||||||
|         // gb |         // gb | ||||||
|         m_map.insert(_source, "memfreegb"); |         m_map.insert(_source, "memfreegb"); | ||||||
|         m_formatter["memfreegb"] = AWKeysAggregator::FormatterType::MemGBFormat; |         m_formatter["memfreegb"] = AWKeysAggregator::FormatterType::MemGBFormat; | ||||||
|     } else if (_source == "mem/physical/used") { |     } else if (_source == "memory/physical/used") { | ||||||
|         // used memory |         // used memory | ||||||
|         // mb |         // mb | ||||||
|         m_map.insert(_source, "memusedmb"); |         m_map.insert(_source, "memusedmb"); | ||||||
| @ -253,29 +263,29 @@ QStringList AWDataEngineMapper::registerSource(const QString &_source, const QSt | |||||||
|         // gb |         // gb | ||||||
|         m_map.insert(_source, "memusedgb"); |         m_map.insert(_source, "memusedgb"); | ||||||
|         m_formatter["memusedgb"] = AWKeysAggregator::FormatterType::MemGBFormat; |         m_formatter["memusedgb"] = AWKeysAggregator::FormatterType::MemGBFormat; | ||||||
|     } else if (_source == "network/current/name") { |     } else if (_source == "extsysmon/network/device") { | ||||||
|         // network device |         // network device | ||||||
|         m_map.insert(_source, "netdev"); |         m_map.insert(_source, "netdev"); | ||||||
|         m_formatter["netdev"] = AWKeysAggregator::FormatterType::NoFormat; |         m_formatter["netdev"] = AWKeysAggregator::FormatterType::NoFormat; | ||||||
|     } else if (_source == "network/current/ssid") { |     } else if (_source == "extsysmon/network/ssid") { | ||||||
|         // current ssid |         // current ssid | ||||||
|         m_map.insert(_source, "ssid"); |         m_map.insert(_source, "ssid"); | ||||||
|         m_formatter["ssid"] = AWKeysAggregator::FormatterType::NoFormat; |         m_formatter["ssid"] = AWKeysAggregator::FormatterType::NoFormat; | ||||||
|     } else if (_source.startsWith("network/response")) { |     } else if (_source.startsWith("extsysmon/requests/response")) { | ||||||
|         // network response |         // network response | ||||||
|         QString key = _source; |         auto key = _source; | ||||||
|         key.remove("network/"); |         key.remove("extsysmon/requests/"); | ||||||
|         m_map.insert(_source, key); |         m_map.insert(_source, key); | ||||||
|         m_formatter[key] = AWKeysAggregator::FormatterType::NoFormat; |         m_formatter[key] = AWKeysAggregator::FormatterType::NoFormat; | ||||||
|     } else if (_source.contains(netRegExp)) { |     } else if (_source.contains(netRegExp)) { | ||||||
|         // network speed |         // network speed | ||||||
|         QString type = _source.contains("receiver") ? "down" : "up"; |         auto type = _source.endsWith("download") ? "down" : "up"; | ||||||
|         int index = m_devices["net"].indexOf(_source.split('/')[2]); |         auto index = m_devices["net"].indexOf(_source.split('/')[1]); | ||||||
|         if (index > -1) { |         if (index > -1) { | ||||||
|             // kb |             // kb | ||||||
|             QString key = QString("%1kb%2").arg(type).arg(index); |             auto key = QString("%1kb%2").arg(type).arg(index); | ||||||
|             m_map.insert(_source, key); |             m_map.insert(_source, key); | ||||||
|             m_formatter[key] = AWKeysAggregator::FormatterType::Integer; |             m_formatter[key] = AWKeysAggregator::FormatterType::MemKBFormat; | ||||||
|             // smart |             // smart | ||||||
|             key = QString("%1%2").arg(type).arg(index); |             key = QString("%1%2").arg(type).arg(index); | ||||||
|             m_map.insert(_source, key); |             m_map.insert(_source, key); | ||||||
| @ -287,49 +297,49 @@ QStringList AWDataEngineMapper::registerSource(const QString &_source, const QSt | |||||||
|         } |         } | ||||||
|     } else if (_source.contains(netTotalRegExp)) { |     } else if (_source.contains(netTotalRegExp)) { | ||||||
|         // network data total |         // network data total | ||||||
|         QString type = _source.contains("receiver") ? "down" : "up"; |         auto type = _source.endsWith("Download") ? "down" : "up"; | ||||||
|         int index = m_devices["net"].indexOf(_source.split('/')[2]); |         auto index = m_devices["net"].indexOf(_source.split('/')[1]); | ||||||
|         if (index > -1) { |         if (index > -1) { | ||||||
|             // kb |             // kb | ||||||
|             QString key = QString("%1totkb%2").arg(type).arg(index); |             auto key = QString("%1totkb%2").arg(type).arg(index); | ||||||
|             m_map.insert(_source, key); |             m_map.insert(_source, key); | ||||||
|             m_formatter[key] = AWKeysAggregator::FormatterType::Integer; |             m_formatter[key] = AWKeysAggregator::FormatterType::MemKBFormat; | ||||||
|             // mb |             // mb | ||||||
|             key = QString("%1tot%2").arg(type).arg(index); |             key = QString("%1tot%2").arg(type).arg(index); | ||||||
|             m_map.insert(_source, key); |             m_map.insert(_source, key); | ||||||
|             m_formatter[key] = AWKeysAggregator::FormatterType::MemMBFormat; |             m_formatter[key] = AWKeysAggregator::FormatterType::MemMBFormat; | ||||||
|         } |         } | ||||||
|     } else if (_source.startsWith("upgrade")) { |     } else if (_source.startsWith("extsysmon/upgrade")) { | ||||||
|         // package manager |         // package manager | ||||||
|         QString key = _source; |         auto key = _source; | ||||||
|         key.remove("upgrade/"); |         key.remove("extsysmon/upgrade/"); | ||||||
|         m_map.insert(_source, key); |         m_map.insert(_source, key); | ||||||
|         m_formatter[key] = AWKeysAggregator::FormatterType::IntegerThree; |         m_formatter[key] = AWKeysAggregator::FormatterType::IntegerThree; | ||||||
|     } else if (_source.startsWith("player")) { |     } else if (_source.startsWith("extsysmon/player")) { | ||||||
|         // player |         // player | ||||||
|         QString key = _source; |         auto key = _source; | ||||||
|         key.remove("player/"); |         key.remove("extsysmon/player/"); | ||||||
|         m_map.insert(_source, key); |         m_map.insert(_source, key); | ||||||
|         m_formatter[key] = AWKeysAggregator::FormatterType::NoFormat; |         m_formatter[key] = AWKeysAggregator::FormatterType::NoFormat; | ||||||
|     } else if (_source == "ps/running/count") { |     } else if (_source == "extsysmon/ps/running") { | ||||||
|         // running processes count |         // running processes count | ||||||
|         m_map.insert(_source, "pscount"); |         m_map.insert(_source, "pscount"); | ||||||
|         m_formatter["pscount"] = AWKeysAggregator::FormatterType::NoFormat; |         m_formatter["pscount"] = AWKeysAggregator::FormatterType::NoFormat; | ||||||
|     } else if (_source == "ps/running/list") { |     } else if (_source == "extsysmon/ps/list") { | ||||||
|         // list of running processes |         // list of running processes | ||||||
|         m_map.insert(_source, "ps"); |         m_map.insert(_source, "ps"); | ||||||
|         m_formatter["ps"] = AWKeysAggregator::FormatterType::List; |         m_formatter["ps"] = AWKeysAggregator::FormatterType::List; | ||||||
|     } else if (_source == "ps/total/count") { |     } else if (_source == "extsysmon/ps/count") { | ||||||
|         // total processes count |         // total processes count | ||||||
|         m_map.insert(_source, "pstot"); |         m_map.insert(_source, "pstot"); | ||||||
|         m_formatter["pstot"] = AWKeysAggregator::FormatterType::NoFormat; |         m_formatter["pstot"] = AWKeysAggregator::FormatterType::NoFormat; | ||||||
|     } else if (_source.startsWith("quotes")) { |     } else if (_source.startsWith("extsysmon/quotes")) { | ||||||
|         // quotes |         // quotes | ||||||
|         QString key = _source; |         auto key = _source; | ||||||
|         key.remove("quotes/"); |         key.remove("extsysmon/quotes/"); | ||||||
|         m_map.insert(_source, key); |         m_map.insert(_source, key); | ||||||
|         m_formatter[key] = AWKeysAggregator::FormatterType::Quotes; |         m_formatter[key] = AWKeysAggregator::FormatterType::Quotes; | ||||||
|     } else if (_source == "mem/swap/free") { |     } else if (_source == "memory/swap/free") { | ||||||
|         // free swap |         // free swap | ||||||
|         // mb |         // mb | ||||||
|         m_map.insert(_source, "swapfreemb"); |         m_map.insert(_source, "swapfreemb"); | ||||||
| @ -337,7 +347,7 @@ QStringList AWDataEngineMapper::registerSource(const QString &_source, const QSt | |||||||
|         // gb |         // gb | ||||||
|         m_map.insert(_source, "swapfreegb"); |         m_map.insert(_source, "swapfreegb"); | ||||||
|         m_formatter["swapfreegb"] = AWKeysAggregator::FormatterType::MemGBFormat; |         m_formatter["swapfreegb"] = AWKeysAggregator::FormatterType::MemGBFormat; | ||||||
|     } else if (_source == "mem/swap/used") { |     } else if (_source == "memory/swap/used") { | ||||||
|         // used swap |         // used swap | ||||||
|         // mb |         // mb | ||||||
|         m_map.insert(_source, "swapmb"); |         m_map.insert(_source, "swapmb"); | ||||||
| @ -345,19 +355,20 @@ QStringList AWDataEngineMapper::registerSource(const QString &_source, const QSt | |||||||
|         // gb |         // gb | ||||||
|         m_map.insert(_source, "swapgb"); |         m_map.insert(_source, "swapgb"); | ||||||
|         m_formatter["swapgb"] = AWKeysAggregator::FormatterType::MemGBFormat; |         m_formatter["swapgb"] = AWKeysAggregator::FormatterType::MemGBFormat; | ||||||
|     } else if (_source.startsWith("lmsensors/")) { |     } else if (_source.startsWith("lmsensors/") || _source.contains(cpuTempRegExp) | ||||||
|  |                || _source == "cpu/all/averageTemperature") { | ||||||
|         // temperature |         // temperature | ||||||
|         int index = m_devices["temp"].indexOf(_source); |         auto index = m_devices["temp"].indexOf(_source); | ||||||
|         // HACK on DE initialization there are no units key |         // HACK on DE initialization there are no units key | ||||||
|         if (_units.isEmpty()) |         if (_units == KSysGuard::UnitInvalid) | ||||||
|             return QStringList({QString("temp%1").arg(index)}); |             return QStringList({QString("temp%1").arg(index)}); | ||||||
|         if (index > -1) { |         if (index > -1) { | ||||||
|             QString key = QString("temp%1").arg(index); |             auto key = QString("temp%1").arg(index); | ||||||
|             m_map.insert(_source, key); |             m_map.insert(_source, key); | ||||||
|             m_formatter[key] = _units == "°C" ? AWKeysAggregator::FormatterType::Temperature |             m_formatter[key] = _units == KSysGuard::UnitCelsius ? AWKeysAggregator::FormatterType::Temperature | ||||||
|                                               : AWKeysAggregator::FormatterType::Integer; |                                                                 : AWKeysAggregator::FormatterType::Integer; | ||||||
|         } |         } | ||||||
|     } else if (_source == "Local") { |     } else if (_source == "extsysmon/time/now") { | ||||||
|         // time |         // time | ||||||
|         m_map.insert(_source, "time"); |         m_map.insert(_source, "time"); | ||||||
|         m_formatter["time"] = AWKeysAggregator::FormatterType::Time; |         m_formatter["time"] = AWKeysAggregator::FormatterType::Time; | ||||||
| @ -376,40 +387,40 @@ QStringList AWDataEngineMapper::registerSource(const QString &_source, const QSt | |||||||
|         // timestamp |         // timestamp | ||||||
|         m_map.insert(_source, "tstime"); |         m_map.insert(_source, "tstime"); | ||||||
|         m_formatter["tstime"] = AWKeysAggregator::FormatterType::Timestamp; |         m_formatter["tstime"] = AWKeysAggregator::FormatterType::Timestamp; | ||||||
|     } else if (_source == "system/brightness") { |     } else if (_source == "extsysmon/system/brightness") { | ||||||
|         m_map.insert(_source, "brightness"); |         m_map.insert(_source, "brightness"); | ||||||
|         m_formatter["brightness"] = AWKeysAggregator::FormatterType::IntegerThree; |         m_formatter["brightness"] = AWKeysAggregator::FormatterType::IntegerThree; | ||||||
|     } else if (_source == "system/volume") { |     } else if (_source == "extsysmon/system/volume") { | ||||||
|         m_map.insert(_source, "volume"); |         m_map.insert(_source, "volume"); | ||||||
|         m_formatter["volume"] = AWKeysAggregator::FormatterType::IntegerThree; |         m_formatter["volume"] = AWKeysAggregator::FormatterType::IntegerThree; | ||||||
|     } else if (_source == "system/uptime") { |     } else if (_source == "os/system/uptime") { | ||||||
|         // uptime |         // uptime | ||||||
|         m_map.insert(_source, "uptime"); |         m_map.insert(_source, "uptime"); | ||||||
|         m_formatter["uptime"] = AWKeysAggregator::FormatterType::Uptime; |         m_formatter["uptime"] = AWKeysAggregator::FormatterType::Uptime; | ||||||
|         // custom uptime |         // custom uptime | ||||||
|         m_map.insert(_source, "cuptime"); |         m_map.insert(_source, "cuptime"); | ||||||
|         m_formatter["cuptime"] = AWKeysAggregator::FormatterType::UptimeCustom; |         m_formatter["cuptime"] = AWKeysAggregator::FormatterType::UptimeCustom; | ||||||
|     } else if (_source.startsWith("weather/temperature")) { |     } else if (_source.startsWith("extsysmon/weather/temperature")) { | ||||||
|         // temperature |         // temperature | ||||||
|         QString key = _source; |         auto key = _source; | ||||||
|         key.remove("weather/"); |         key.remove("extsysmon/weather/"); | ||||||
|         m_map.insert(_source, key); |         m_map.insert(_source, key); | ||||||
|         m_formatter[key] = AWKeysAggregator::FormatterType::Temperature; |         m_formatter[key] = AWKeysAggregator::FormatterType::Temperature; | ||||||
|     } else if (_source.startsWith("weather/")) { |     } else if (_source.startsWith("extsysmon/weather/")) { | ||||||
|         // other weather |         // other weather | ||||||
|         QString key = _source; |         auto key = _source; | ||||||
|         key.remove("weather/"); |         key.remove("extsysmon/weather/"); | ||||||
|         m_map.insert(_source, key); |         m_map.insert(_source, key); | ||||||
|         m_formatter[key] = AWKeysAggregator::FormatterType::NoFormat; |         m_formatter[key] = AWKeysAggregator::FormatterType::NoFormat; | ||||||
|     } else if (_source.startsWith("load/load")) { |     } else if (_source.startsWith("extsysmon/load/load")) { | ||||||
|         // load source |         // load source | ||||||
|         QString key = _source; |         auto key = _source; | ||||||
|         key.remove("load/"); |         key.remove("extsysmon/load/"); | ||||||
|         m_map.insert(_source, key); |         m_map.insert(_source, key); | ||||||
|         m_formatter[key] = AWKeysAggregator::FormatterType::Temperature; |         m_formatter[key] = AWKeysAggregator::FormatterType::Temperature; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     QStringList foundKeys = keysFromSource(_source); |     auto foundKeys = keysFromSource(_source); | ||||||
|  |  | ||||||
|     // rewrite formatters for custom ones |     // rewrite formatters for custom ones | ||||||
|     QStringList customFormattersKeys; |     QStringList customFormattersKeys; | ||||||
| @ -424,7 +435,7 @@ QStringList AWDataEngineMapper::registerSource(const QString &_source, const QSt | |||||||
|  |  | ||||||
|     // drop key from dictionary if no one user requested key required it |     // drop key from dictionary if no one user requested key required it | ||||||
|     qCInfo(LOG_AW) << "Looking for keys" << foundKeys << "in" << _keys; |     qCInfo(LOG_AW) << "Looking for keys" << foundKeys << "in" << _keys; | ||||||
|     bool required = _keys.isEmpty() || std::any_of(foundKeys.cbegin(), foundKeys.cend(), [&_keys](const QString &key) { |     auto required = _keys.isEmpty() || std::any_of(foundKeys.cbegin(), foundKeys.cend(), [&_keys](const QString &key) { | ||||||
|                         return _keys.contains(key); |                         return _keys.contains(key); | ||||||
|                     }); |                     }); | ||||||
|     if (!required) { |     if (!required) { | ||||||
|  | |||||||
| @ -15,9 +15,9 @@ | |||||||
|  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * |  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * | ||||||
|  ***************************************************************************/ |  ***************************************************************************/ | ||||||
|  |  | ||||||
|  | #pragma once | ||||||
|  |  | ||||||
| #ifndef AWDATAENGINEMAPPER_H | #include <ksysguard/formatter/Unit.h> | ||||||
| #define AWDATAENGINEMAPPER_H |  | ||||||
|  |  | ||||||
| #include <QMultiHash> | #include <QMultiHash> | ||||||
| #include <QObject> | #include <QObject> | ||||||
| @ -38,7 +38,7 @@ public: | |||||||
|     [[nodiscard]] AWKeysAggregator::FormatterType formatter(const QString &_key) const; |     [[nodiscard]] AWKeysAggregator::FormatterType 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, const QString &_units, const QStringList &_keys); |     QStringList registerSource(const QString &_source, const KSysGuard::Unit _units, const QStringList &_keys); | ||||||
|     void setDevices(const QHash<QString, QStringList> &_devices); |     void setDevices(const QHash<QString, QStringList> &_devices); | ||||||
|  |  | ||||||
| private: | private: | ||||||
| @ -48,6 +48,3 @@ private: | |||||||
|     QHash<QString, AWKeysAggregator::FormatterType> m_formatter; |     QHash<QString, AWKeysAggregator::FormatterType> m_formatter; | ||||||
|     QMultiHash<QString, QString> m_map; |     QMultiHash<QString, QString> m_map; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| #endif /* AWDATAENGINEMAPPER_H */ |  | ||||||
|  | |||||||
| @ -15,9 +15,7 @@ | |||||||
|  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * |  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * | ||||||
|  ***************************************************************************/ |  ***************************************************************************/ | ||||||
|  |  | ||||||
|  | #pragma once | ||||||
| #ifndef AWDBUSADAPTOR_H |  | ||||||
| #define AWDBUSADAPTOR_H |  | ||||||
|  |  | ||||||
| #include <QDBusAbstractAdaptor> | #include <QDBusAbstractAdaptor> | ||||||
|  |  | ||||||
| @ -50,6 +48,3 @@ private: | |||||||
|     AWKeys *m_plugin = nullptr; |     AWKeys *m_plugin = nullptr; | ||||||
|     QStringList m_logLevels = {"debug", "info", "warning", "critical"}; |     QStringList m_logLevels = {"debug", "info", "warning", "critical"}; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| #endif /* AWDBUSADAPTOR_H */ |  | ||||||
|  | |||||||
| @ -15,9 +15,7 @@ | |||||||
|  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * |  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * | ||||||
|  ***************************************************************************/ |  ***************************************************************************/ | ||||||
|  |  | ||||||
|  | #pragma once | ||||||
| #ifndef AWPLUGIN_H |  | ||||||
| #define AWPLUGIN_H |  | ||||||
|  |  | ||||||
| #include <QQmlExtensionPlugin> | #include <QQmlExtensionPlugin> | ||||||
|  |  | ||||||
| @ -30,6 +28,3 @@ class AWPlugin : public QQmlExtensionPlugin | |||||||
| public: | public: | ||||||
|     void registerTypes(const char *uri) override; |     void registerTypes(const char *uri) override; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| #endif /* AWPLUGIN_H */ |  | ||||||
|  | |||||||
| @ -15,9 +15,7 @@ | |||||||
|  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * |  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * | ||||||
|  ***************************************************************************/ |  ***************************************************************************/ | ||||||
|  |  | ||||||
|  | #pragma once | ||||||
| #ifndef AWFORMATTERCONFIG_H |  | ||||||
| #define AWFORMATTERCONFIG_H |  | ||||||
|  |  | ||||||
| #include "awabstractpairconfig.h" | #include "awabstractpairconfig.h" | ||||||
|  |  | ||||||
| @ -30,6 +28,3 @@ public: | |||||||
|     explicit AWFormatterConfig(QWidget *_parent = nullptr, const QStringList &_keys = QStringList()); |     explicit AWFormatterConfig(QWidget *_parent = nullptr, const QStringList &_keys = QStringList()); | ||||||
|     ~AWFormatterConfig() override; |     ~AWFormatterConfig() override; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| #endif /* AWFORMATTERCONFIG_H */ |  | ||||||
|  | |||||||
| @ -114,8 +114,7 @@ QStringList AWFormatterHelper::rightKeys() | |||||||
|  |  | ||||||
| void AWFormatterHelper::editItems() | void AWFormatterHelper::editItems() | ||||||
| { | { | ||||||
|     repaintList(); |     auto ret = exec(); | ||||||
|     int ret = exec(); |  | ||||||
|     qCInfo(LOG_AW) << "Dialog returns" << ret; |     qCInfo(LOG_AW) << "Dialog returns" << ret; | ||||||
| } | } | ||||||
|  |  | ||||||
| @ -200,20 +199,20 @@ QPair<QString, AWAbstractFormatter::FormatterClass> AWFormatterHelper::readMetad | |||||||
|  |  | ||||||
|     QSettings settings(_filePath, QSettings::IniFormat); |     QSettings settings(_filePath, QSettings::IniFormat); | ||||||
|     settings.beginGroup("Desktop Entry"); |     settings.beginGroup("Desktop Entry"); | ||||||
|     QString name = settings.value("Name", _filePath).toString(); |     auto name = settings.value("Name", _filePath).toString(); | ||||||
|     QString type = settings.value("X-AW-Type", "NoFormat").toString(); |     auto type = settings.value("X-AW-Type", "NoFormat").toString(); | ||||||
|     AWAbstractFormatter::FormatterClass formatter = defineFormatterClass(type); |     auto formatter = defineFormatterClass(type); | ||||||
|     settings.endGroup(); |     settings.endGroup(); | ||||||
|  |  | ||||||
|     return QPair<QString, AWAbstractFormatter::FormatterClass>(name, formatter); |     return QPair<QString, AWAbstractFormatter::FormatterClass>(name, formatter); | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| void AWFormatterHelper::doCreateItem() | void AWFormatterHelper::doCreateItem(QListWidget *_widget) | ||||||
| { | { | ||||||
|     QStringList selection = {"NoFormat", "DateTime", "Float", "List", "Script", "String", "Json"}; |     QStringList selection = {"NoFormat", "DateTime", "Float", "List", "Script", "String", "Json"}; | ||||||
|     bool ok; |     bool ok; | ||||||
|     QString select = QInputDialog::getItem(this, i18n("Select type"), i18n("Type:"), selection, 0, false, &ok); |     auto select = QInputDialog::getItem(nullptr, i18n("Select type"), i18n("Type:"), selection, 0, false, &ok); | ||||||
|     if (!ok) { |     if (!ok) { | ||||||
|         qCWarning(LOG_AW) << "No type selected"; |         qCWarning(LOG_AW) << "No type selected"; | ||||||
|         return; |         return; | ||||||
| @ -223,18 +222,18 @@ void AWFormatterHelper::doCreateItem() | |||||||
|     AWAbstractFormatter::FormatterClass formatter = defineFormatterClass(select); |     AWAbstractFormatter::FormatterClass formatter = defineFormatterClass(select); | ||||||
|     switch (formatter) { |     switch (formatter) { | ||||||
|     case AWAbstractFormatter::FormatterClass::DateTime: |     case AWAbstractFormatter::FormatterClass::DateTime: | ||||||
|         return createItem<AWDateTimeFormatter>(); |         return createItem<AWDateTimeFormatter>(_widget); | ||||||
|     case AWAbstractFormatter::FormatterClass::Float: |     case AWAbstractFormatter::FormatterClass::Float: | ||||||
|         return createItem<AWFloatFormatter>(); |         return createItem<AWFloatFormatter>(_widget); | ||||||
|     case AWAbstractFormatter::FormatterClass::List: |     case AWAbstractFormatter::FormatterClass::List: | ||||||
|         return createItem<AWListFormatter>(); |         return createItem<AWListFormatter>(_widget); | ||||||
|     case AWAbstractFormatter::FormatterClass::Script: |     case AWAbstractFormatter::FormatterClass::Script: | ||||||
|         return createItem<AWScriptFormatter>(); |         return createItem<AWScriptFormatter>(_widget); | ||||||
|     case AWAbstractFormatter::FormatterClass::String: |     case AWAbstractFormatter::FormatterClass::String: | ||||||
|         return createItem<AWStringFormatter>(); |         return createItem<AWStringFormatter>(_widget); | ||||||
|     case AWAbstractFormatter::FormatterClass::Json: |     case AWAbstractFormatter::FormatterClass::Json: | ||||||
|         return createItem<AWJsonFormatter>(); |         return createItem<AWJsonFormatter>(_widget); | ||||||
|     case AWAbstractFormatter::FormatterClass::NoFormat: |     case AWAbstractFormatter::FormatterClass::NoFormat: | ||||||
|         return createItem<AWNoFormatter>(); |         return createItem<AWNoFormatter>(_widget); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | |||||||
| @ -15,9 +15,7 @@ | |||||||
|  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * |  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * | ||||||
|  ***************************************************************************/ |  ***************************************************************************/ | ||||||
|  |  | ||||||
|  | #pragma once | ||||||
| #ifndef AWFORMATTERHELPER_H |  | ||||||
| #define AWFORMATTERHELPER_H |  | ||||||
|  |  | ||||||
| #include "abstractextitemaggregator.h" | #include "abstractextitemaggregator.h" | ||||||
| #include "awabstractformatter.h" | #include "awabstractformatter.h" | ||||||
| @ -51,11 +49,8 @@ private: | |||||||
|     void initFormatters(); |     void initFormatters(); | ||||||
|     [[nodiscard]] static QPair<QString, AWAbstractFormatter::FormatterClass> readMetadata(const QString &_filePath); |     [[nodiscard]] static QPair<QString, AWAbstractFormatter::FormatterClass> readMetadata(const QString &_filePath); | ||||||
|     // parent methods |     // parent methods | ||||||
|     void doCreateItem() override; |     void doCreateItem(QListWidget *_widget) override; | ||||||
|     // properties |     // properties | ||||||
|     QHash<QString, AWAbstractFormatter *> m_formatters; |     QHash<QString, AWAbstractFormatter *> m_formatters; | ||||||
|     QHash<QString, AWAbstractFormatter *> m_formattersClasses; |     QHash<QString, AWAbstractFormatter *> m_formattersClasses; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| #endif /* AWFORMATTERHELPER_H */ |  | ||||||
|  | |||||||
| @ -20,6 +20,7 @@ | |||||||
|  |  | ||||||
| #include <QDir> | #include <QDir> | ||||||
| #include <QNetworkInterface> | #include <QNetworkInterface> | ||||||
|  | #include <QRegularExpression> | ||||||
| #include <QSettings> | #include <QSettings> | ||||||
| #include <QStandardPaths> | #include <QStandardPaths> | ||||||
|  |  | ||||||
| @ -30,7 +31,7 @@ bool AWKeyCache::addKeyToCache(const QString &_type, const QString &_key) | |||||||
| { | { | ||||||
|     qCDebug(LOG_AW) << "Key" << _key << "with type" << _type; |     qCDebug(LOG_AW) << "Key" << _key << "with type" << _type; | ||||||
|  |  | ||||||
|     QString fileName |     auto fileName | ||||||
|         = QString("%1/awesomewidgets.ndx").arg(QStandardPaths::writableLocation(QStandardPaths::GenericCacheLocation)); |         = QString("%1/awesomewidgets.ndx").arg(QStandardPaths::writableLocation(QStandardPaths::GenericCacheLocation)); | ||||||
|     qCInfo(LOG_AW) << "Cache file" << fileName; |     qCInfo(LOG_AW) << "Cache file" << fileName; | ||||||
|     QSettings cache(fileName, QSettings::IniFormat); |     QSettings cache(fileName, QSettings::IniFormat); | ||||||
| @ -40,19 +41,8 @@ bool AWKeyCache::addKeyToCache(const QString &_type, const QString &_key) | |||||||
|     for (auto &number : cache.allKeys()) |     for (auto &number : cache.allKeys()) | ||||||
|         cachedValues.append(cache.value(number).toString()); |         cachedValues.append(cache.value(number).toString()); | ||||||
|  |  | ||||||
|     if (_type == "hdd") { |     if (_type == "net") { | ||||||
|         QStringList allDevices = QDir("/dev").entryList(QDir::System, QDir::Name); |         auto rawInterfaceList = QNetworkInterface::allInterfaces(); | ||||||
|         QStringList devices = allDevices.filter(QRegExp("^[hms]d[a-z]$")); |  | ||||||
|         for (auto &dev : devices) { |  | ||||||
|             QString device = QString("/dev/%1").arg(dev); |  | ||||||
|             if (cachedValues.contains(device)) |  | ||||||
|                 continue; |  | ||||||
|             qCInfo(LOG_AW) << "Found new key" << device << "for type" << _type; |  | ||||||
|             cachedValues.append(device); |  | ||||||
|             cache.setValue(QString("%1").arg(cache.allKeys().count(), 3, 10, QChar('0')), device); |  | ||||||
|         } |  | ||||||
|     } else if (_type == "net") { |  | ||||||
|         QList<QNetworkInterface> rawInterfaceList = QNetworkInterface::allInterfaces(); |  | ||||||
|         for (auto &interface : rawInterfaceList) { |         for (auto &interface : rawInterfaceList) { | ||||||
|             QString device = interface.name(); |             QString device = interface.name(); | ||||||
|             if (cachedValues.contains(device)) |             if (cachedValues.contains(device)) | ||||||
| @ -93,19 +83,19 @@ QStringList AWKeyCache::getRequiredKeys(const QStringList &_keys, const QStringL | |||||||
|  |  | ||||||
|     // insert depending keys, refer to AWKeys::calculateValues() |     // insert depending keys, refer to AWKeys::calculateValues() | ||||||
|     // hddtotmb* |     // hddtotmb* | ||||||
|     for (auto &key : _allKeys.filter(QRegExp("^hddtotmb"))) { |     for (auto &key : _allKeys.filter(QRegularExpression("^hddtotmb"))) { | ||||||
|         if (!used.contains(key)) |         if (!used.contains(key)) | ||||||
|             continue; |             continue; | ||||||
|         key.remove("hddtotmb"); |         key.remove("hddtotmb"); | ||||||
|         int index = key.toInt(); |         auto index = key.toInt(); | ||||||
|         used << QString("hddfreemb%1").arg(index) << QString("hddmb%1").arg(index); |         used << QString("hddfreemb%1").arg(index) << QString("hddmb%1").arg(index); | ||||||
|     } |     } | ||||||
|     // hddtotgb* |     // hddtotgb* | ||||||
|     for (auto &key : _allKeys.filter(QRegExp("^hddtotgb"))) { |     for (auto &key : _allKeys.filter(QRegularExpression("^hddtotgb"))) { | ||||||
|         if (!used.contains(key)) |         if (!used.contains(key)) | ||||||
|             continue; |             continue; | ||||||
|         key.remove("hddtotgb"); |         key.remove("hddtotgb"); | ||||||
|         int index = key.toInt(); |         auto index = key.toInt(); | ||||||
|         used << QString("hddfreegb%1").arg(index) << QString("hddgb%1").arg(index); |         used << QString("hddfreegb%1").arg(index) << QString("hddgb%1").arg(index); | ||||||
|     } |     } | ||||||
|     // mem |     // mem | ||||||
| @ -138,7 +128,7 @@ QStringList AWKeyCache::getRequiredKeys(const QStringList &_keys, const QStringL | |||||||
|     for (auto &key : netKeys) { |     for (auto &key : netKeys) { | ||||||
|         if (!used.contains(key)) |         if (!used.contains(key)) | ||||||
|             continue; |             continue; | ||||||
|         QStringList filt = _allKeys.filter(QRegExp(QString("^%1[0-9]{1,}").arg(key))); |         auto filt = _allKeys.filter(QRegularExpression(QString("^%1[0-9]{1,}").arg(key))); | ||||||
|         for (auto &filtered : filt) |         for (auto &filtered : filt) | ||||||
|             used << filtered; |             used << filtered; | ||||||
|     } |     } | ||||||
| @ -157,7 +147,7 @@ QStringList AWKeyCache::getRequiredKeys(const QStringList &_keys, const QStringL | |||||||
|  |  | ||||||
| QHash<QString, QStringList> AWKeyCache::loadKeysFromCache() | QHash<QString, QStringList> AWKeyCache::loadKeysFromCache() | ||||||
| { | { | ||||||
|     QString fileName |     auto fileName | ||||||
|         = QString("%1/awesomewidgets.ndx").arg(QStandardPaths::writableLocation(QStandardPaths::GenericCacheLocation)); |         = QString("%1/awesomewidgets.ndx").arg(QStandardPaths::writableLocation(QStandardPaths::GenericCacheLocation)); | ||||||
|     qCInfo(LOG_AW) << "Cache file" << fileName; |     qCInfo(LOG_AW) << "Cache file" << fileName; | ||||||
|     QSettings cache(fileName, QSettings::IniFormat); |     QSettings cache(fileName, QSettings::IniFormat); | ||||||
|  | |||||||
| @ -15,9 +15,7 @@ | |||||||
|  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * |  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * | ||||||
|  ***************************************************************************/ |  ***************************************************************************/ | ||||||
|  |  | ||||||
|  | #pragma once | ||||||
| #ifndef AWKEYCACHE_H |  | ||||||
| #define AWKEYCACHE_H |  | ||||||
|  |  | ||||||
| #include <QHash> | #include <QHash> | ||||||
| #include <QString> | #include <QString> | ||||||
| @ -31,6 +29,3 @@ QStringList getRequiredKeys(const QStringList &_keys, const QStringList &_bars, | |||||||
|                             const QStringList &_userKeys, const QStringList &_allKeys); |                             const QStringList &_userKeys, const QStringList &_allKeys); | ||||||
| QHash<QString, QStringList> loadKeysFromCache(); | QHash<QString, QStringList> loadKeysFromCache(); | ||||||
| } // namespace AWKeyCache | } // namespace AWKeyCache | ||||||
|  |  | ||||||
|  |  | ||||||
| #endif /* AWKEYCACHE_H */ |  | ||||||
|  | |||||||
| @ -18,7 +18,7 @@ | |||||||
| #include "awkeyoperations.h" | #include "awkeyoperations.h" | ||||||
|  |  | ||||||
| #include <QDir> | #include <QDir> | ||||||
| #include <QRegExp> | #include <QRegularExpression> | ||||||
| #include <QThread> | #include <QThread> | ||||||
|  |  | ||||||
| #include "awcustomkeyshelper.h" | #include "awcustomkeyshelper.h" | ||||||
| @ -72,7 +72,6 @@ QHash<QString, QStringList> AWKeyOperations::devices() const | |||||||
| void AWKeyOperations::updateCache() | void AWKeyOperations::updateCache() | ||||||
| { | { | ||||||
|     // update network and hdd list |     // update network and hdd list | ||||||
|     addKeyToCache("hdd"); |  | ||||||
|     addKeyToCache("net"); |     addKeyToCache("net"); | ||||||
| } | } | ||||||
|  |  | ||||||
| @ -90,15 +89,20 @@ QStringList AWKeyOperations::dictKeys() const | |||||||
|         allKeys.append(item->tag("timestamp")); |         allKeys.append(item->tag("timestamp")); | ||||||
|     } |     } | ||||||
|     // cpuclock & cpu |     // cpuclock & cpu | ||||||
|     for (int i = 0; i < QThread::idealThreadCount(); i++) { |     for (auto i = 0; i < QThread::idealThreadCount(); i++) { | ||||||
|         allKeys.append(QString("cpucl%1").arg(i)); |         allKeys.append(QString("cpucl%1").arg(i)); | ||||||
|         allKeys.append(QString("cpu%1").arg(i)); |         allKeys.append(QString("cpu%1").arg(i)); | ||||||
|     } |     } | ||||||
|     // temperature |     // temperature | ||||||
|     for (int i = 0; i < m_devices["temp"].count(); i++) |     for (auto i = 0; i < m_devices["temp"].count(); i++) | ||||||
|         allKeys.append(QString("temp%1").arg(i)); |         allKeys.append(QString("temp%1").arg(i)); | ||||||
|  |     // gpu | ||||||
|  |     for (auto i = 0; i < m_devices["gpu"].count(); i++) { | ||||||
|  |         allKeys.append(QString("gpu%1").arg(i)); | ||||||
|  |         allKeys.append(QString("gputemp%1").arg(i)); | ||||||
|  |     } | ||||||
|     // hdd |     // hdd | ||||||
|     for (int i = 0; i < m_devices["mount"].count(); i++) { |     for (auto i = 0; i < m_devices["mount"].count(); i++) { | ||||||
|         allKeys.append(QString("hddmb%1").arg(i)); |         allKeys.append(QString("hddmb%1").arg(i)); | ||||||
|         allKeys.append(QString("hddgb%1").arg(i)); |         allKeys.append(QString("hddgb%1").arg(i)); | ||||||
|         allKeys.append(QString("hddfreemb%1").arg(i)); |         allKeys.append(QString("hddfreemb%1").arg(i)); | ||||||
| @ -108,15 +112,12 @@ QStringList AWKeyOperations::dictKeys() const | |||||||
|         allKeys.append(QString("hdd%1").arg(i)); |         allKeys.append(QString("hdd%1").arg(i)); | ||||||
|     } |     } | ||||||
|     // hdd speed |     // hdd speed | ||||||
|     for (int i = 0; i < m_devices["disk"].count(); i++) { |     for (auto i = 0; i < m_devices["disk"].count(); i++) { | ||||||
|         allKeys.append(QString("hddr%1").arg(i)); |         allKeys.append(QString("hddr%1").arg(i)); | ||||||
|         allKeys.append(QString("hddw%1").arg(i)); |         allKeys.append(QString("hddw%1").arg(i)); | ||||||
|     } |     } | ||||||
|     // hdd temp |  | ||||||
|     for (int i = 0; i < m_devices["hdd"].count(); i++) |  | ||||||
|         allKeys.append(QString("hddtemp%1").arg(i)); |  | ||||||
|     // network |     // network | ||||||
|     for (int i = 0; i < m_devices["net"].count(); i++) { |     for (auto i = 0; i < m_devices["net"].count(); i++) { | ||||||
|         allKeys.append(QString("downunits%1").arg(i)); |         allKeys.append(QString("downunits%1").arg(i)); | ||||||
|         allKeys.append(QString("upunits%1").arg(i)); |         allKeys.append(QString("upunits%1").arg(i)); | ||||||
|         allKeys.append(QString("downtotkb%1").arg(i)); |         allKeys.append(QString("downtotkb%1").arg(i)); | ||||||
| @ -129,9 +130,8 @@ QStringList AWKeyOperations::dictKeys() const | |||||||
|         allKeys.append(QString("up%1").arg(i)); |         allKeys.append(QString("up%1").arg(i)); | ||||||
|     } |     } | ||||||
|     // battery |     // battery | ||||||
|     QStringList allBatteryDevices |     auto allBatteryDevices = QDir("/sys/class/power_supply") | ||||||
|         = QDir("/sys/class/power_supply") |                                  .entryList(QStringList({"BAT*"}), QDir::Dirs | QDir::NoDotAndDotDot, QDir::Name); | ||||||
|               .entryList(QStringList({"BAT*"}), QDir::Dirs | QDir::NoDotAndDotDot, QDir::Name); |  | ||||||
|     for (int i = 0; i < allBatteryDevices.count(); i++) { |     for (int i = 0; i < allBatteryDevices.count(); i++) { | ||||||
|         allKeys.append(QString("bat%1").arg(i)); |         allKeys.append(QString("bat%1").arg(i)); | ||||||
|         allKeys.append(QString("batleft%1").arg(i)); |         allKeys.append(QString("batleft%1").arg(i)); | ||||||
| @ -205,52 +205,48 @@ QString AWKeyOperations::infoByKey(const QString &_key) const | |||||||
| { | { | ||||||
|     qCDebug(LOG_AW) << "Requested key" << _key; |     qCDebug(LOG_AW) << "Requested key" << _key; | ||||||
|  |  | ||||||
|     QString stripped = _key; |     auto stripped = _key; | ||||||
|     stripped.remove(QRegExp("\\d+")); |     stripped.remove(QRegularExpression("\\d+")); | ||||||
|     QString output; |     QString output; | ||||||
|  |  | ||||||
|     if (_key.startsWith("bar")) { |     if (_key.startsWith("bar")) { | ||||||
|         AbstractExtItem *item = m_graphicalItems->itemByTag(_key, stripped); |         auto *item = m_graphicalItems->itemByTag(_key, stripped); | ||||||
|         if (item) |         if (item) | ||||||
|             output = item->uniq(); |             output = item->uniq(); | ||||||
|     } else if (_key.startsWith("custom")) { |     } else if (_key.startsWith("custom")) { | ||||||
|         AbstractExtItem *item = m_extScripts->itemByTag(_key, stripped); |         auto *item = m_extScripts->itemByTag(_key, stripped); | ||||||
|         if (item) |         if (item) | ||||||
|             output = item->uniq(); |             output = item->uniq(); | ||||||
|     } else if (_key.contains(QRegExp("^hdd[rw]"))) { |     } else if (_key.contains(QRegularExpression("^hdd[rw]"))) { | ||||||
|         QString index = _key; |         auto index = _key; | ||||||
|         index.remove(QRegExp("hdd[rw]")); |         index.remove(QRegularExpression("hdd[rw]")); | ||||||
|         output = m_devices["disk"][index.toInt()]; |         output = m_devices["disk"][index.toInt()]; | ||||||
|     } else if (_key.contains(QRegExp("^hdd([0-9]|mb|gb|freemb|freegb|totmb|totgb)"))) { |     } else if (_key.contains(QRegularExpression("^hdd([0-9]|mb|gb|freemb|freegb|totmb|totgb)"))) { | ||||||
|         QString index = _key; |         auto index = _key; | ||||||
|         index.remove(QRegExp("^hdd(|mb|gb|freemb|freegb|totmb|totgb)")); |         index.remove(QRegularExpression("^hdd(|mb|gb|freemb|freegb|totmb|totgb)")); | ||||||
|         output = m_devices["mount"][index.toInt()]; |         output = m_devices["mount"][index.toInt()]; | ||||||
|     } else if (_key.startsWith("hddtemp")) { |     } else if (_key.contains(QRegularExpression("^(down|up)[0-9]"))) { | ||||||
|         QString index = _key; |         auto index = _key; | ||||||
|         index.remove("hddtemp"); |         index.remove(QRegularExpression("^(down|up)")); | ||||||
|         output = m_devices["hdd"][index.toInt()]; |  | ||||||
|     } else if (_key.contains(QRegExp("^(down|up)[0-9]"))) { |  | ||||||
|         QString index = _key; |  | ||||||
|         index.remove(QRegExp("^(down|up)")); |  | ||||||
|         output = m_devices["net"][index.toInt()]; |         output = m_devices["net"][index.toInt()]; | ||||||
|     } else if (_key.startsWith("pkgcount")) { |     } else if (_key.startsWith("pkgcount")) { | ||||||
|         AbstractExtItem *item = m_extUpgrade->itemByTag(_key, stripped); |         auto *item = m_extUpgrade->itemByTag(_key, stripped); | ||||||
|         if (item) |         if (item) | ||||||
|             output = item->uniq(); |             output = item->uniq(); | ||||||
|     } else if (_key.contains(QRegExp("(^|perc)(ask|bid|price)(chg|)"))) { |     } else if (_key.contains(QRegularExpression("(^|perc)(ask|bid|price)(chg|)"))) { | ||||||
|         AbstractExtItem *item = m_extQuotes->itemByTag(_key, stripped); |         auto *item = m_extQuotes->itemByTag(_key, stripped); | ||||||
|         if (item) |         if (item) | ||||||
|             output = item->uniq(); |             output = item->uniq(); | ||||||
|     } else if (_key.contains(QRegExp("(weather|weatherId|humidity|pressure|temperature)"))) { |     } else if (_key.contains(QRegularExpression("(weather|weatherId|humidity|pressure|temperature)"))) { | ||||||
|         AbstractExtItem *item = m_extWeather->itemByTag(_key, stripped); |         auto *item = m_extWeather->itemByTag(_key, stripped); | ||||||
|         if (item) |         if (item) | ||||||
|             output = item->uniq(); |             output = item->uniq(); | ||||||
|     } else if (_key.startsWith("temp")) { |     } else if (_key.startsWith("temp")) { | ||||||
|         QString index = _key; |         auto index = _key; | ||||||
|         index.remove("temp"); |         index.remove("temp"); | ||||||
|         output = m_devices["temp"][index.toInt()]; |         output = m_devices["temp"][index.toInt()]; | ||||||
|     } else if (_key.startsWith("response")) { |     } else if (_key.startsWith("response")) { | ||||||
|         AbstractExtItem *item = m_extNetRequest->itemByTag(_key, stripped); |         auto *item = m_extNetRequest->itemByTag(_key, stripped); | ||||||
|         if (item) |         if (item) | ||||||
|             output = item->uniq(); |             output = item->uniq(); | ||||||
|     } else { |     } else { | ||||||
| @ -280,7 +276,7 @@ void AWKeyOperations::editItem(const QString &_type) | |||||||
|     qCDebug(LOG_AW) << "Item type" << _type; |     qCDebug(LOG_AW) << "Item type" << _type; | ||||||
|  |  | ||||||
|     if (_type == "graphicalitem") { |     if (_type == "graphicalitem") { | ||||||
|         QStringList keys = dictKeys().filter(QRegExp("^(cpu(?!cl).*|gpu$|mem$|swap$|hdd[0-9].*|bat.*)")); |         QStringList keys = dictKeys().filter(QRegularExpression("^(cpu(?!cl).*|gpu$|mem$|swap$|hdd[0-9].*|bat.*)")); | ||||||
|         keys.sort(); |         keys.sort(); | ||||||
|         m_graphicalItems->setConfigArgs(keys); |         m_graphicalItems->setConfigArgs(keys); | ||||||
|         return m_graphicalItems->editItems(); |         return m_graphicalItems->editItems(); | ||||||
| @ -302,19 +298,26 @@ void AWKeyOperations::addDevice(const QString &_source) | |||||||
| { | { | ||||||
|     qCDebug(LOG_AW) << "Source" << _source; |     qCDebug(LOG_AW) << "Source" << _source; | ||||||
|  |  | ||||||
|     QRegExp diskRegexp = QRegExp("disk/(?:md|sd|hd)[a-z|0-9]_.*/Rate/(?:rblk)"); |     auto diskRegexp = QRegularExpression("^disk/.*/read$"); | ||||||
|     QRegExp mountRegexp = QRegExp("partitions/.*/filllevel"); |     auto mountRegexp = QRegularExpression("^disk/.*/usedPercent$"); | ||||||
|  |     auto cpuTempRegExp = QRegularExpression("^cpu/cpu.*/temperature$"); | ||||||
|  |     auto gpuRegExp = QRegularExpression("^gpu/gpu.*/usage$"); | ||||||
|  |  | ||||||
|     if (_source.contains(diskRegexp)) { |     if (_source.contains(diskRegexp)) { | ||||||
|         QString device = _source; |         auto device = _source; | ||||||
|         device.remove("/Rate/rblk"); |         device.remove("disk/").remove("/read"); | ||||||
|         addKeyToCache("disk", device); |         addKeyToCache("disk", device); | ||||||
|     } else if (_source.contains(mountRegexp)) { |     } else if (_source.contains(mountRegexp)) { | ||||||
|         QString device = _source; |         auto device = _source; | ||||||
|         device.remove("partitions").remove("/filllevel"); |         device.remove("disk/").remove("/usedPercent"); | ||||||
|         addKeyToCache("mount", device); |         addKeyToCache("mount", device); | ||||||
|     } else if (_source.startsWith("lmsensors")) { |     } else if (_source.startsWith("lmsensors") || _source.contains(cpuTempRegExp) | ||||||
|  |                || _source == "cpu/all/averageTemperature") { | ||||||
|         addKeyToCache("temp", _source); |         addKeyToCache("temp", _source); | ||||||
|  |     } else if (_source.contains(gpuRegExp)) { | ||||||
|  |         auto device = _source; | ||||||
|  |         device.remove("gpu/").remove("/usage"); | ||||||
|  |         addKeyToCache("gpu", device); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | |||||||
| @ -15,9 +15,7 @@ | |||||||
|  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * |  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * | ||||||
|  ***************************************************************************/ |  ***************************************************************************/ | ||||||
|  |  | ||||||
|  | #pragma once | ||||||
| #ifndef AWKEYOPERATIONS_H |  | ||||||
| #define AWKEYOPERATIONS_H |  | ||||||
|  |  | ||||||
| #include <QObject> | #include <QObject> | ||||||
|  |  | ||||||
| @ -78,6 +76,3 @@ private: | |||||||
|     QHash<QString, QStringList> m_devices; |     QHash<QString, QStringList> m_devices; | ||||||
|     QString m_pattern; |     QString m_pattern; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| #endif /* AWKEYOPERATIONS_H */ |  | ||||||
|  | |||||||
| @ -56,16 +56,17 @@ AWKeys::AWKeys(QObject *_parent) | |||||||
|     createDBusInterface(); |     createDBusInterface(); | ||||||
|  |  | ||||||
|     // update key data if required |     // update key data if required | ||||||
|     connect(m_keyOperator, SIGNAL(updateKeys(const QStringList &)), this, SLOT(reinitKeys(const QStringList &))); |     connect(m_keyOperator, &AWKeyOperations::updateKeys, this, &AWKeys::reinitKeys); | ||||||
|     connect(m_timer, SIGNAL(timeout()), this, SLOT(updateTextData())); |     connect(m_timer, &QTimer::timeout, this, &AWKeys::updateTextData); | ||||||
|  |  | ||||||
|     // transfer signal from AWDataAggregator object to QML ui |     // transfer signal from AWDataAggregator object to QML ui | ||||||
|     connect(m_dataAggregator, SIGNAL(toolTipPainted(const QString &)), this, |     connect(m_dataAggregator, &AWDataAggregator::toolTipPainted, | ||||||
|             SIGNAL(needToolTipToBeUpdated(const QString &))); |             [this](const QString &_tooltip) { emit(needToolTipToBeUpdated(_tooltip)); }); | ||||||
|     connect(this, SIGNAL(dropSourceFromDataengine(const QString &)), m_dataEngineAggregator, |  | ||||||
|             SLOT(dropSource(const QString &))); |     connect(this, &AWKeys::dropSourceFromDataengine, m_dataEngineAggregator, &AWDataEngineAggregator::dropSource); | ||||||
|  |     connect(m_dataEngineAggregator, &AWDataEngineAggregator::dataUpdated, this, &AWKeys::dataUpdated); | ||||||
|     // transfer signal from dataengine to update source list |     // transfer signal from dataengine to update source list | ||||||
|     connect(m_dataEngineAggregator, SIGNAL(deviceAdded(const QString &)), m_keyOperator, |     connect(m_dataEngineAggregator, &AWDataEngineAggregator::deviceAdded, m_keyOperator, &AWKeyOperations::addDevice); | ||||||
|             SLOT(addDevice(const QString &))); |  | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| @ -102,7 +103,7 @@ void AWKeys::initKeys(const QString &_currentPattern, const int _interval, const | |||||||
|     m_aggregator->initFormatters(); |     m_aggregator->initFormatters(); | ||||||
|     m_keyOperator->setPattern(_currentPattern); |     m_keyOperator->setPattern(_currentPattern); | ||||||
|     m_keyOperator->updateCache(); |     m_keyOperator->updateCache(); | ||||||
|     m_dataEngineAggregator->reconnectSources(_interval); |     m_dataEngineAggregator->loadSources(); | ||||||
|  |  | ||||||
|     // timer |     // timer | ||||||
|     m_timer->setInterval(_interval); |     m_timer->setInterval(_interval); | ||||||
| @ -148,7 +149,7 @@ QStringList AWKeys::dictKeys(const bool _sorted, const QString &_regexp) const | |||||||
|     if (_sorted) |     if (_sorted) | ||||||
|         allKeys.sort(); |         allKeys.sort(); | ||||||
|  |  | ||||||
|     return allKeys.filter(QRegExp(_regexp)); |     return allKeys.filter(QRegularExpression(_regexp)); | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| @ -185,9 +186,9 @@ QString AWKeys::valueByKey(const QString &_key) const | |||||||
| { | { | ||||||
|     qCDebug(LOG_AW) << "Requested value for key" << _key; |     qCDebug(LOG_AW) << "Requested value for key" << _key; | ||||||
|  |  | ||||||
|     QString trueKey = _key.startsWith("bar") ? m_keyOperator->infoByKey(_key) : _key; |     auto realKey = _key.startsWith("bar") ? m_keyOperator->infoByKey(_key) : _key; | ||||||
|  |  | ||||||
|     return m_aggregator->formatter(m_values[trueKey], trueKey, true); |     return m_aggregator->formatter(m_values[realKey], realKey, true); | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| @ -199,10 +200,15 @@ void AWKeys::editItem(const QString &_type) | |||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| void AWKeys::dataUpdated(const QString &_sourceName, const Plasma::DataEngine::Data &_data) | void AWKeys::dataUpdated(const QHash<QString, KSysGuard::SensorInfo> &_sensors, const KSysGuard::SensorDataList &_data) | ||||||
| { | { | ||||||
|     // run concurrent data update |     for (auto &single : _data) { | ||||||
|     QtConcurrent::run(m_threadPool, this, &AWKeys::setDataBySource, _sourceName, _data); |         if (_sensors.contains(single.sensorProperty)) { | ||||||
|  |             setDataBySource(single.sensorProperty, _sensors.value(single.sensorProperty), single); | ||||||
|  |         } | ||||||
|  |         // TODO use QtConcurrent::map or something like that | ||||||
|  |         //        QtConcurrent::run(m_threadPool, this, &AWKeys::setDataBySource, "ss", sensor); | ||||||
|  |     } | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| @ -239,7 +245,7 @@ void AWKeys::updateTextData() | |||||||
|     // do not do it in parallel to avoid race condition |     // do not do it in parallel to avoid race condition | ||||||
|     m_mutex.lock(); |     m_mutex.lock(); | ||||||
|     calculateValues(); |     calculateValues(); | ||||||
|     QString text = parsePattern(m_keyOperator->pattern()); |     auto text = parsePattern(m_keyOperator->pattern()); | ||||||
|     // update tooltip values under lock |     // update tooltip values under lock | ||||||
|     m_dataAggregator->dataUpdate(m_values); |     m_dataAggregator->dataUpdate(m_values); | ||||||
|     m_mutex.unlock(); |     m_mutex.unlock(); | ||||||
| @ -256,17 +262,17 @@ void AWKeys::calculateValues() | |||||||
|     QStringList mountDevices = m_keyOperator->devices("mount"); |     QStringList mountDevices = m_keyOperator->devices("mount"); | ||||||
|     for (auto &device : mountDevices) { |     for (auto &device : mountDevices) { | ||||||
|         int index = mountDevices.indexOf(device); |         int index = mountDevices.indexOf(device); | ||||||
|         m_values[QString("hddtotmb%1").arg(index)] |         m_values[QString("hddtotmb%1").arg(index)] = m_values[QString("hddfreemb%1").arg(index)].toDouble() | ||||||
|             = m_values[QString("hddfreemb%1").arg(index)].toFloat() + m_values[QString("hddmb%1").arg(index)].toFloat(); |                                                      + m_values[QString("hddmb%1").arg(index)].toDouble(); | ||||||
|         m_values[QString("hddtotgb%1").arg(index)] |         m_values[QString("hddtotgb%1").arg(index)] = m_values[QString("hddfreegb%1").arg(index)].toDouble() | ||||||
|             = m_values[QString("hddfreegb%1").arg(index)].toFloat() + m_values[QString("hddgb%1").arg(index)].toFloat(); |                                                      + m_values[QString("hddgb%1").arg(index)].toDouble(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     // memtot* |     // memtot* | ||||||
|     m_values["memtotmb"] = m_values["memusedmb"].toInt() + m_values["memfreemb"].toInt(); |     m_values["memtotmb"] = m_values["memusedmb"].toLongLong() + m_values["memfreemb"].toLongLong(); | ||||||
|     m_values["memtotgb"] = m_values["memusedgb"].toFloat() + m_values["memfreegb"].toFloat(); |     m_values["memtotgb"] = m_values["memusedgb"].toDouble() + m_values["memfreegb"].toDouble(); | ||||||
|     // mem |     // mem | ||||||
|     m_values["mem"] = 100.0f * m_values["memmb"].toFloat() / m_values["memtotmb"].toFloat(); |     m_values["mem"] = 100.0f * m_values["memmb"].toDouble() / m_values["memtotmb"].toDouble(); | ||||||
|  |  | ||||||
|     // up, down, upkb, downkb, upunits, downunits |     // up, down, upkb, downkb, upunits, downunits | ||||||
|     int netIndex = m_keyOperator->devices("net").indexOf(m_values["netdev"].toString()); |     int netIndex = m_keyOperator->devices("net").indexOf(m_values["netdev"].toString()); | ||||||
| @ -282,10 +288,10 @@ void AWKeys::calculateValues() | |||||||
|     m_values["upunits"] = m_values[QString("upunits%1").arg(netIndex)]; |     m_values["upunits"] = m_values[QString("upunits%1").arg(netIndex)]; | ||||||
|  |  | ||||||
|     // swaptot* |     // swaptot* | ||||||
|     m_values["swaptotmb"] = m_values["swapmb"].toInt() + m_values["swapfreemb"].toInt(); |     m_values["swaptotmb"] = m_values["swapmb"].toLongLong() + m_values["swapfreemb"].toLongLong(); | ||||||
|     m_values["swaptotgb"] = m_values["swapgb"].toFloat() + m_values["swapfreegb"].toFloat(); |     m_values["swaptotgb"] = m_values["swapgb"].toDouble() + m_values["swapfreegb"].toDouble(); | ||||||
|     // swap |     // swap | ||||||
|     m_values["swap"] = 100.0f * m_values["swapmb"].toFloat() / m_values["swaptotmb"].toFloat(); |     m_values["swap"] = 100.0f * m_values["swapmb"].toDouble() / m_values["swaptotmb"].toDouble(); | ||||||
|  |  | ||||||
|     // user defined keys |     // user defined keys | ||||||
|     for (auto &key : m_keyOperator->userKeys()) |     for (auto &key : m_keyOperator->userKeys()) | ||||||
| @ -323,7 +329,7 @@ void AWKeys::createDBusInterface() | |||||||
| QString AWKeys::parsePattern(QString _pattern) const | QString AWKeys::parsePattern(QString _pattern) const | ||||||
| { | { | ||||||
|     // screen sign |     // screen sign | ||||||
|     _pattern.replace("$$", QString(0x1d)); |     _pattern.replace("$$", QChar(0x1d)); | ||||||
|  |  | ||||||
|     // lambdas |     // lambdas | ||||||
|     for (auto &key : m_foundLambdas) |     for (auto &key : m_foundLambdas) | ||||||
| @ -343,7 +349,7 @@ QString AWKeys::parsePattern(QString _pattern) const | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     // prepare strings |     // prepare strings | ||||||
|     _pattern.replace(QString(0x1d), "$"); |     _pattern.replace(QChar(0x1d), "$"); | ||||||
|     if (m_wrapNewLines) |     if (m_wrapNewLines) | ||||||
|         _pattern.replace("\n", "<br>"); |         _pattern.replace("\n", "<br>"); | ||||||
|  |  | ||||||
| @ -351,25 +357,23 @@ QString AWKeys::parsePattern(QString _pattern) const | |||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| void AWKeys::setDataBySource(const QString &_sourceName, const QVariantMap &_data) | void AWKeys::setDataBySource(const QString &_source, const KSysGuard::SensorInfo &_sensor, | ||||||
|  |                              const KSysGuard::SensorData &_data) | ||||||
| { | { | ||||||
|     qCDebug(LOG_AW) << "Source" << _sourceName << "with data" << _data; |     qCDebug(LOG_AW) << "Source" << _source << _sensor.name << "with data" << _data.payload; | ||||||
|  |  | ||||||
|     // first list init |     // first list init | ||||||
|     QStringList tags = m_aggregator->keysFromSource(_sourceName); |     auto tags = m_aggregator->keysFromSource(_source); | ||||||
|     if (tags.isEmpty()) |     if (tags.isEmpty()) | ||||||
|         tags = m_aggregator->registerSource(_sourceName, _data["units"].toString(), m_requiredKeys); |         tags = m_aggregator->registerSource(_source, _sensor.unit, m_requiredKeys); | ||||||
|  |  | ||||||
|     // 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()) { | ||||||
|         qCInfo(LOG_AW) << "Source" << _sourceName << "not found"; |         qCInfo(LOG_AW) << "Sensor" << _source << "not found"; | ||||||
|         return emit(dropSourceFromDataengine(_sourceName)); |         return emit(dropSourceFromDataengine(_source)); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     m_mutex.lock(); |     m_mutex.lock(); | ||||||
|     // HACK workaround for time values which are stored in the different path |     std::for_each(tags.cbegin(), tags.cend(), [this, &_data](const QString &tag) { m_values[tag] = _data.payload; }); | ||||||
|     std::for_each(tags.cbegin(), tags.cend(), [this, &_data, &_sourceName](const QString &tag) { |  | ||||||
|         m_values[tag] = _sourceName == "Local" ? _data["DateTime"] : _data["value"]; |  | ||||||
|     }); |  | ||||||
|     m_mutex.unlock(); |     m_mutex.unlock(); | ||||||
| } | } | ||||||
|  | |||||||
| @ -15,15 +15,13 @@ | |||||||
|  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * |  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * | ||||||
|  ***************************************************************************/ |  ***************************************************************************/ | ||||||
|  |  | ||||||
|  | #pragma once | ||||||
| #ifndef AWKEYS_H |  | ||||||
| #define AWKEYS_H |  | ||||||
|  |  | ||||||
| #include <Plasma/DataEngine> |  | ||||||
|  |  | ||||||
| #include <QMutex> | #include <QMutex> | ||||||
| #include <QObject> | #include <QObject> | ||||||
|  |  | ||||||
|  | #include <ksysguard/systemstats/SensorInfo.h> | ||||||
|  |  | ||||||
|  |  | ||||||
| class AWDataAggregator; | class AWDataAggregator; | ||||||
| class AWDataEngineAggregator; | class AWDataEngineAggregator; | ||||||
| @ -56,9 +54,7 @@ public: | |||||||
|     Q_INVOKABLE void editItem(const QString &_type); |     Q_INVOKABLE void editItem(const QString &_type); | ||||||
|  |  | ||||||
| public slots: | public slots: | ||||||
|     void dataUpdated(const QString &_sourceName, const Plasma::DataEngine::Data &_data); |     void dataUpdated(const QHash<QString, KSysGuard::SensorInfo> &_sensors, const KSysGuard::SensorDataList &_data); | ||||||
|     // dummy method required by DataEngine connections |  | ||||||
|     static void modelChanged(const QString &, QAbstractItemModel *){}; |  | ||||||
|  |  | ||||||
| signals: | signals: | ||||||
|     void dropSourceFromDataengine(const QString &_source); |     void dropSourceFromDataengine(const QString &_source); | ||||||
| @ -74,7 +70,8 @@ private: | |||||||
|     void calculateValues(); |     void calculateValues(); | ||||||
|     void createDBusInterface(); |     void createDBusInterface(); | ||||||
|     [[nodiscard]] QString parsePattern(QString _pattern) const; |     [[nodiscard]] QString parsePattern(QString _pattern) const; | ||||||
|     void setDataBySource(const QString &_sourceName, const QVariantMap &_data); |     void setDataBySource(const QString &_source, const KSysGuard::SensorInfo &_sensor, | ||||||
|  |                          const KSysGuard::SensorData &_data); | ||||||
|     // objects |     // objects | ||||||
|     AWDataAggregator *m_dataAggregator = nullptr; |     AWDataAggregator *m_dataAggregator = nullptr; | ||||||
|     AWDataEngineAggregator *m_dataEngineAggregator = nullptr; |     AWDataEngineAggregator *m_dataEngineAggregator = nullptr; | ||||||
| @ -91,6 +88,3 @@ private: | |||||||
|     QThreadPool *m_threadPool = nullptr; |     QThreadPool *m_threadPool = nullptr; | ||||||
|     QMutex m_mutex; |     QMutex m_mutex; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| #endif /* AWKEYS_H */ |  | ||||||
|  | |||||||
| @ -64,19 +64,19 @@ QString AWKeysAggregator::formatter(const QVariant &_data, const QString &_key, | |||||||
|     // case block |     // case block | ||||||
|     switch (m_mapper->formatter(_key)) { |     switch (m_mapper->formatter(_key)) { | ||||||
|     case FormatterType::Float: |     case FormatterType::Float: | ||||||
|         output = QString("%1").arg(_data.toFloat(), 5, 'f', 1); |         output = QString("%1").arg(_data.toDouble(), 5, 'f', 1); | ||||||
|         break; |         break; | ||||||
|     case FormatterType::FloatTwoSymbols: |     case FormatterType::FloatTwoSymbols: | ||||||
|         output = QString("%1").arg(_data.toFloat(), 5, 'f', 2); |         output = QString("%1").arg(_data.toDouble(), 5, 'f', 2); | ||||||
|         break; |         break; | ||||||
|     case FormatterType::Integer: |     case FormatterType::Integer: | ||||||
|         output = QString("%1").arg(_data.toFloat(), 4, 'f', 0); |         output = QString("%1").arg(_data.toDouble(), 4, 'f', 0); | ||||||
|         break; |         break; | ||||||
|     case FormatterType::IntegerFive: |     case FormatterType::IntegerFive: | ||||||
|         output = QString("%1").arg(_data.toFloat(), 5, 'f', 0); |         output = QString("%1").arg(_data.toDouble(), 5, 'f', 0); | ||||||
|         break; |         break; | ||||||
|     case FormatterType::IntegerThree: |     case FormatterType::IntegerThree: | ||||||
|         output = QString("%1").arg(_data.toFloat(), 3, 'f', 0); |         output = QString("%1").arg(_data.toDouble(), 3, 'f', 0); | ||||||
|         break; |         break; | ||||||
|     case FormatterType::List: |     case FormatterType::List: | ||||||
|         output = _data.toStringList().join(','); |         output = _data.toStringList().join(','); | ||||||
| @ -85,21 +85,24 @@ QString AWKeysAggregator::formatter(const QVariant &_data, const QString &_key, | |||||||
|         output = _data.toBool() ? m_acOnline : m_acOffline; |         output = _data.toBool() ? m_acOnline : m_acOffline; | ||||||
|         break; |         break; | ||||||
|     case FormatterType::MemGBFormat: |     case FormatterType::MemGBFormat: | ||||||
|         output = QString("%1").arg(_data.toFloat() / (1024.0 * 1024.0), 5, 'f', 1); |         output = QString("%1").arg(_data.toDouble() / GBinBytes, 5, 'f', 1); | ||||||
|         break; |         break; | ||||||
|     case FormatterType::MemMBFormat: |     case FormatterType::MemMBFormat: | ||||||
|         output = QString("%1").arg(_data.toFloat() / 1024.0, 5, 'f', 0); |         output = QString("%1").arg(_data.toDouble() / MBinBytes, 5, 'f', 0); | ||||||
|  |         break; | ||||||
|  |     case FormatterType::MemKBFormat: | ||||||
|  |         output = QString("%1").arg(_data.toDouble() / KBinBytes, 5, 'f', 0); | ||||||
|         break; |         break; | ||||||
|     case FormatterType::NetSmartFormat: |     case FormatterType::NetSmartFormat: | ||||||
|         output = [](const float value) { |         output = [](const double value) { | ||||||
|             if (value > 1024.0) |             if (value > MBinBytes) | ||||||
|                 return QString("%1").arg(value / 1024.0, 4, 'f', 1); |                 return QString("%1").arg(value / MBinBytes, 4, 'f', 1); | ||||||
|             else |             else | ||||||
|                 return QString("%1").arg(value, 4, 'f', 0); |                 return QString("%1").arg(value / KBinBytes, 4, 'f', 0); | ||||||
|         }(_data.toFloat()); |         }(_data.toDouble()); | ||||||
|         break; |         break; | ||||||
|     case FormatterType::NetSmartUnits: |     case FormatterType::NetSmartUnits: | ||||||
|         if (_data.toFloat() > 1024.0) |         if (_data.toDouble() > MBinBytes) | ||||||
|             output = m_translate ? i18n("MB/s") : "MB/s"; |             output = m_translate ? i18n("MB/s") : "MB/s"; | ||||||
|         else |         else | ||||||
|             output = m_translate ? i18n("KB/s") : "KB/s"; |             output = m_translate ? i18n("KB/s") : "KB/s"; | ||||||
| @ -110,29 +113,29 @@ QString AWKeysAggregator::formatter(const QVariant &_data, const QString &_key, | |||||||
|         output = output.rightJustified(8, QLatin1Char(' '), true); |         output = output.rightJustified(8, QLatin1Char(' '), true); | ||||||
|         break; |         break; | ||||||
|     case FormatterType::Temperature: |     case FormatterType::Temperature: | ||||||
|         output = QString("%1").arg(temperature(_data.toFloat()), 5, 'f', 1); |         output = QString("%1").arg(temperature(_data.toDouble()), 5, 'f', 1); | ||||||
|         break; |         break; | ||||||
|     case FormatterType::Time: |     case FormatterType::Time: | ||||||
|         output = _data.toDateTime().toString(); |         output = QDateTime::fromSecsSinceEpoch(_data.toLongLong()).toString(); | ||||||
|         break; |         break; | ||||||
|     case FormatterType::TimeCustom: |     case FormatterType::TimeCustom: | ||||||
|         output = m_customTime; |         output = m_customTime; | ||||||
|         [&output, loc, this](const QDateTime &dt) { |         [&output, loc, this](const QDateTime &dt) { | ||||||
|             for (auto &key : m_timeKeys) |             for (auto &key : m_timeKeys) | ||||||
|                 output.replace(QString("$%1").arg(key), loc.toString(dt, key)); |                 output.replace(QString("$%1").arg(key), loc.toString(dt, key)); | ||||||
|         }(_data.toDateTime()); |         }(QDateTime::fromSecsSinceEpoch(_data.toLongLong())); | ||||||
|         break; |         break; | ||||||
|     case FormatterType::TimeISO: |     case FormatterType::TimeISO: | ||||||
|         output = _data.toDateTime().toString(Qt::ISODate); |         output = QDateTime::fromSecsSinceEpoch(_data.toLongLong()).toString(Qt::ISODate); | ||||||
|         break; |         break; | ||||||
|     case FormatterType::TimeLong: |     case FormatterType::TimeLong: | ||||||
|         output = loc.toString(_data.toDateTime(), QLocale::LongFormat); |         output = loc.toString(QDateTime::fromSecsSinceEpoch(_data.toLongLong()), QLocale::LongFormat); | ||||||
|         break; |         break; | ||||||
|     case FormatterType::TimeShort: |     case FormatterType::TimeShort: | ||||||
|         output = loc.toString(_data.toDateTime(), QLocale::ShortFormat); |         output = loc.toString(QDateTime::fromSecsSinceEpoch(_data.toLongLong()), QLocale::ShortFormat); | ||||||
|         break; |         break; | ||||||
|     case FormatterType::Timestamp: |     case FormatterType::Timestamp: | ||||||
|         output = QString("%1").arg(_data.toDateTime().toMSecsSinceEpoch() / 1000.0, 10, 'f', 0); |         output = _data.toString(); | ||||||
|         break; |         break; | ||||||
|     case FormatterType::Uptime: |     case FormatterType::Uptime: | ||||||
|     case FormatterType::UptimeCustom: |     case FormatterType::UptimeCustom: | ||||||
| @ -150,7 +153,7 @@ QString AWKeysAggregator::formatter(const QVariant &_data, const QString &_key, | |||||||
|                 source.replace("$m", QString("%1").arg(minutes)); |                 source.replace("$m", QString("%1").arg(minutes)); | ||||||
|                 return source; |                 return source; | ||||||
|             }(m_mapper->formatter(_key) == FormatterType::Uptime ? "$ddd$hhh$mmm" : m_customUptime, |             }(m_mapper->formatter(_key) == FormatterType::Uptime ? "$ddd$hhh$mmm" : m_customUptime, | ||||||
|               static_cast<int>(_data.toFloat())); |               static_cast<int>(_data.toDouble())); | ||||||
|         break; |         break; | ||||||
|     case FormatterType::NoFormat: |     case FormatterType::NoFormat: | ||||||
|         output = _data.toString(); |         output = _data.toString(); | ||||||
| @ -234,7 +237,8 @@ void AWKeysAggregator::setTranslate(const bool _translate) | |||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| QStringList AWKeysAggregator::registerSource(const QString &_source, const QString &_units, const QStringList &_keys) | QStringList AWKeysAggregator::registerSource(const QString &_source, const KSysGuard::Unit _units, | ||||||
|  |                                              const QStringList &_keys) | ||||||
| { | { | ||||||
|     qCDebug(LOG_AW) << "Source" << _source << "with units" << _units; |     qCDebug(LOG_AW) << "Source" << _source << "with units" << _units; | ||||||
|  |  | ||||||
| @ -242,24 +246,24 @@ QStringList AWKeysAggregator::registerSource(const QString &_source, const QStri | |||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| float AWKeysAggregator::temperature(const float temp) const | double AWKeysAggregator::temperature(const double temp) const | ||||||
| { | { | ||||||
|     qCDebug(LOG_AW) << "Temperature value" << temp; |     qCDebug(LOG_AW) << "Temperature value" << temp; | ||||||
|  |  | ||||||
|     float converted = temp; |     auto converted = temp; | ||||||
|     if (m_tempUnits == "Celsius") { |     if (m_tempUnits == "Celsius") { | ||||||
|     } else if (m_tempUnits == "Fahrenheit") { |     } else if (m_tempUnits == "Fahrenheit") { | ||||||
|         converted = temp * 9.0f / 5.0f + 32.0f; |         converted = temp * 9.0f / 5.0 + 32.0; | ||||||
|     } else if (m_tempUnits == "Kelvin") { |     } else if (m_tempUnits == "Kelvin") { | ||||||
|         converted = temp + 273.15f; |         converted = temp + 273.15; | ||||||
|     } else if (m_tempUnits == "Reaumur") { |     } else if (m_tempUnits == "Reaumur") { | ||||||
|         converted = temp * 0.8f; |         converted = temp * 0.8; | ||||||
|     } else if (m_tempUnits == "cm^-1") { |     } else if (m_tempUnits == "cm^-1") { | ||||||
|         converted = (temp + 273.15f) * 0.695f; |         converted = (temp + 273.15) * 0.695; | ||||||
|     } else if (m_tempUnits == "kJ/mol") { |     } else if (m_tempUnits == "kJ/mol") { | ||||||
|         converted = (temp + 273.15f) * 8.31f; |         converted = (temp + 273.15) * 8.31; | ||||||
|     } else if (m_tempUnits == "kcal/mol") { |     } else if (m_tempUnits == "kcal/mol") { | ||||||
|         converted = (temp + 273.15f) * 1.98f; |         converted = (temp + 273.15) * 1.98; | ||||||
|     } else { |     } else { | ||||||
|         qCWarning(LOG_AW) << "Invalid units" << m_tempUnits; |         qCWarning(LOG_AW) << "Invalid units" << m_tempUnits; | ||||||
|     } |     } | ||||||
|  | |||||||
| @ -15,9 +15,9 @@ | |||||||
|  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * |  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * | ||||||
|  ***************************************************************************/ |  ***************************************************************************/ | ||||||
|  |  | ||||||
|  | #pragma once | ||||||
|  |  | ||||||
| #ifndef AWKEYSAGGREGATOR_H | #include <ksysguard/formatter/Unit.h> | ||||||
| #define AWKEYSAGGREGATOR_H |  | ||||||
|  |  | ||||||
| #include <QHash> | #include <QHash> | ||||||
| #include <QObject> | #include <QObject> | ||||||
| @ -51,6 +51,7 @@ public: | |||||||
|         ACFormat, |         ACFormat, | ||||||
|         MemGBFormat, |         MemGBFormat, | ||||||
|         MemMBFormat, |         MemMBFormat, | ||||||
|  |         MemKBFormat, | ||||||
|         NetSmartFormat, |         NetSmartFormat, | ||||||
|         NetSmartUnits, |         NetSmartUnits, | ||||||
|         Quotes, |         Quotes, | ||||||
| @ -65,6 +66,10 @@ public: | |||||||
|         UptimeCustom |         UptimeCustom | ||||||
|     }; |     }; | ||||||
|  |  | ||||||
|  |     static constexpr double KBinBytes = 1024.0; | ||||||
|  |     static constexpr double MBinBytes = 1024.0 * KBinBytes; | ||||||
|  |     static constexpr double GBinBytes = 1024.0 * MBinBytes; | ||||||
|  |  | ||||||
|     explicit AWKeysAggregator(QObject *_parent = nullptr); |     explicit AWKeysAggregator(QObject *_parent = nullptr); | ||||||
|     ~AWKeysAggregator() override; |     ~AWKeysAggregator() override; | ||||||
|     void initFormatters(); |     void initFormatters(); | ||||||
| @ -81,10 +86,10 @@ public: | |||||||
|     void setTranslate(bool _translate); |     void setTranslate(bool _translate); | ||||||
|  |  | ||||||
| public slots: | public slots: | ||||||
|     QStringList registerSource(const QString &_source, const QString &_units, const QStringList &_keys); |     QStringList registerSource(const QString &_source, const KSysGuard::Unit _units, const QStringList &_keys); | ||||||
|  |  | ||||||
| private: | private: | ||||||
|     [[nodiscard]] float temperature(float temp) const; |     [[nodiscard]] double temperature(double temp) const; | ||||||
|     AWFormatterHelper *m_customFormatters = nullptr; |     AWFormatterHelper *m_customFormatters = nullptr; | ||||||
|     AWDataEngineMapper *m_mapper = nullptr; |     AWDataEngineMapper *m_mapper = nullptr; | ||||||
|     QStringList m_timeKeys; |     QStringList m_timeKeys; | ||||||
| @ -96,6 +101,3 @@ private: | |||||||
|     QString m_tempUnits; |     QString m_tempUnits; | ||||||
|     bool m_translate = false; |     bool m_translate = false; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| #endif /* AWKEYSAGGREGATOR_H */ |  | ||||||
|  | |||||||
| @ -15,9 +15,7 @@ | |||||||
|  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * |  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * | ||||||
|  ***************************************************************************/ |  ***************************************************************************/ | ||||||
|  |  | ||||||
|  | #pragma once | ||||||
| #ifndef AWPAIRCONFIGFACTORY_H |  | ||||||
| #define AWPAIRCONFIGFACTORY_H |  | ||||||
|  |  | ||||||
| #include <QObject> | #include <QObject> | ||||||
|  |  | ||||||
| @ -34,6 +32,3 @@ public: | |||||||
|  |  | ||||||
| private: | private: | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| #endif /* AWPAIRCONFIGFACTORY_H */ |  | ||||||
|  | |||||||
| @ -105,9 +105,9 @@ QList<AWPatternFunctions::AWFunction> AWPatternFunctions::findFunctionCalls(cons | |||||||
|             metadata.args = QStringList(); |             metadata.args = QStringList(); | ||||||
|         } else { |         } else { | ||||||
|             // replace '$,' to 0x1d |             // replace '$,' to 0x1d | ||||||
|             argsString.replace("$,", QString(0x1d)); |             argsString.replace("$,", QChar(0x1d)); | ||||||
|             QStringList args = argsString.split(','); |             QStringList args = argsString.split(','); | ||||||
|             std::for_each(args.begin(), args.end(), [](QString &arg) { arg.replace(QString(0x1d), ","); }); |             std::for_each(args.begin(), args.end(), [](QString &arg) { arg.replace(QChar(0x1d), ","); }); | ||||||
|             metadata.args = args; |             metadata.args = args; | ||||||
|         } |         } | ||||||
|         // other variables |         // other variables | ||||||
| @ -130,7 +130,7 @@ QString AWPatternFunctions::insertAllKeys(QString _code, const QStringList &_key | |||||||
|     QList<AWPatternFunctions::AWFunction> found = AWPatternFunctions::findFunctionCalls("aw_all", _code); |     QList<AWPatternFunctions::AWFunction> found = AWPatternFunctions::findFunctionCalls("aw_all", _code); | ||||||
|     for (auto &function : found) { |     for (auto &function : found) { | ||||||
|         QString separator = function.args.isEmpty() ? "," : function.args.at(0); |         QString separator = function.args.isEmpty() ? "," : function.args.at(0); | ||||||
|         QStringList required = _keys.filter(QRegExp(function.body)); |         QStringList required = _keys.filter(QRegularExpression(function.body)); | ||||||
|         std::for_each(required.begin(), required.end(), [](QString &value) { value = QString("%1: $%1").arg(value); }); |         std::for_each(required.begin(), required.end(), [](QString &value) { value = QString("%1: $%1").arg(value); }); | ||||||
|  |  | ||||||
|         _code.replace(function.what, required.join(separator)); |         _code.replace(function.what, required.join(separator)); | ||||||
| @ -146,7 +146,7 @@ QString AWPatternFunctions::insertKeyCount(QString _code, const QStringList &_ke | |||||||
|  |  | ||||||
|     QList<AWPatternFunctions::AWFunction> found = AWPatternFunctions::findFunctionCalls("aw_count", _code); |     QList<AWPatternFunctions::AWFunction> found = AWPatternFunctions::findFunctionCalls("aw_count", _code); | ||||||
|     for (auto &function : found) { |     for (auto &function : found) { | ||||||
|         int count = _keys.filter(QRegExp(function.body)).count(); |         int count = _keys.filter(QRegularExpression(function.body)).count(); | ||||||
|  |  | ||||||
|         _code.replace(function.what, QString::number(count)); |         _code.replace(function.what, QString::number(count)); | ||||||
|     } |     } | ||||||
| @ -162,7 +162,7 @@ QString AWPatternFunctions::insertKeyNames(QString _code, const QStringList &_ke | |||||||
|     QList<AWPatternFunctions::AWFunction> found = AWPatternFunctions::findFunctionCalls("aw_names", _code); |     QList<AWPatternFunctions::AWFunction> found = AWPatternFunctions::findFunctionCalls("aw_names", _code); | ||||||
|     for (auto &function : found) { |     for (auto &function : found) { | ||||||
|         QString separator = function.args.isEmpty() ? "," : function.args.at(0); |         QString separator = function.args.isEmpty() ? "," : function.args.at(0); | ||||||
|         QStringList required = _keys.filter(QRegExp(function.body)); |         QStringList required = _keys.filter(QRegularExpression(function.body)); | ||||||
|  |  | ||||||
|         _code.replace(function.what, required.join(separator)); |         _code.replace(function.what, required.join(separator)); | ||||||
|     } |     } | ||||||
| @ -178,7 +178,7 @@ QString AWPatternFunctions::insertKeys(QString _code, const QStringList &_keys) | |||||||
|     QList<AWPatternFunctions::AWFunction> found = AWPatternFunctions::findFunctionCalls("aw_keys", _code); |     QList<AWPatternFunctions::AWFunction> found = AWPatternFunctions::findFunctionCalls("aw_keys", _code); | ||||||
|     for (auto &function : found) { |     for (auto &function : found) { | ||||||
|         QString separator = function.args.isEmpty() ? "," : function.args.at(0); |         QString separator = function.args.isEmpty() ? "," : function.args.at(0); | ||||||
|         QStringList required = _keys.filter(QRegExp(function.body)); |         QStringList required = _keys.filter(QRegularExpression(function.body)); | ||||||
|         std::for_each(required.begin(), required.end(), [](QString &value) { value = QString("$%1").arg(value); }); |         std::for_each(required.begin(), required.end(), [](QString &value) { value = QString("$%1").arg(value); }); | ||||||
|  |  | ||||||
|         _code.replace(function.what, required.join(separator)); |         _code.replace(function.what, required.join(separator)); | ||||||
|  | |||||||
| @ -15,9 +15,7 @@ | |||||||
|  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * |  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * | ||||||
|  ***************************************************************************/ |  ***************************************************************************/ | ||||||
|  |  | ||||||
|  | #pragma once | ||||||
| #ifndef AWPATTERNFUNCTIONS_H |  | ||||||
| #define AWPATTERNFUNCTIONS_H |  | ||||||
|  |  | ||||||
| #include <QString> | #include <QString> | ||||||
| #include <QVariant> | #include <QVariant> | ||||||
| @ -47,6 +45,3 @@ QString insertMacros(QString _code); | |||||||
| QStringList findKeys(const QString &_code, const QStringList &_keys, bool _isBars); | QStringList findKeys(const QString &_code, const QStringList &_keys, bool _isBars); | ||||||
| QStringList findLambdas(const QString &_code); | QStringList findLambdas(const QString &_code); | ||||||
| } // namespace AWPatternFunctions | } // namespace AWPatternFunctions | ||||||
|  |  | ||||||
|  |  | ||||||
| #endif /* AWPATTERNFUNCTIONS_H */ |  | ||||||
|  | |||||||
| @ -127,7 +127,7 @@ void AWTelemetryHandler::uploadTelemetry(const QString &_group, const QString &_ | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     auto *manager = new QNetworkAccessManager(nullptr); |     auto *manager = new QNetworkAccessManager(nullptr); | ||||||
|     connect(manager, SIGNAL(finished(QNetworkReply *)), this, SLOT(telemetryReplyRecieved(QNetworkReply *))); |     connect(manager, &QNetworkAccessManager::finished, this, &AWTelemetryHandler::telemetryReplyReceived); | ||||||
|  |  | ||||||
|     QUrl url(REMOTE_TELEMETRY_URL); |     QUrl url(REMOTE_TELEMETRY_URL); | ||||||
|     QNetworkRequest request(url); |     QNetworkRequest request(url); | ||||||
| @ -140,14 +140,14 @@ void AWTelemetryHandler::uploadTelemetry(const QString &_group, const QString &_ | |||||||
|     payload["metadata"] = _value; |     payload["metadata"] = _value; | ||||||
|     payload["type"] = _group; |     payload["type"] = _group; | ||||||
|     // convert to QByteArray to send request |     // convert to QByteArray to send request | ||||||
|     QByteArray data = QJsonDocument::fromVariant(payload).toJson(QJsonDocument::Compact); |     auto data = QJsonDocument::fromVariant(payload).toJson(QJsonDocument::Compact); | ||||||
|     qCInfo(LOG_AW) << "Send request with body" << data.data() << "and size" << data.size(); |     qCInfo(LOG_AW) << "Send request with body" << data.data() << "and size" << data.size(); | ||||||
|  |  | ||||||
|     manager->post(request, data); |     manager->post(request, data); | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| void AWTelemetryHandler::telemetryReplyRecieved(QNetworkReply *_reply) | void AWTelemetryHandler::telemetryReplyReceived(QNetworkReply *_reply) | ||||||
| { | { | ||||||
|     if (_reply->error() != QNetworkReply::NoError) { |     if (_reply->error() != QNetworkReply::NoError) { | ||||||
|         qCWarning(LOG_AW) << "An error occurs" << _reply->error() << "with message" << _reply->errorString(); |         qCWarning(LOG_AW) << "An error occurs" << _reply->error() << "with message" << _reply->errorString(); | ||||||
| @ -155,7 +155,7 @@ void AWTelemetryHandler::telemetryReplyRecieved(QNetworkReply *_reply) | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     QJsonParseError error{}; |     QJsonParseError error{}; | ||||||
|     QJsonDocument jsonDoc = QJsonDocument::fromJson(_reply->readAll(), &error); |     auto jsonDoc = QJsonDocument::fromJson(_reply->readAll(), &error); | ||||||
|     if (error.error != QJsonParseError::NoError) { |     if (error.error != QJsonParseError::NoError) { | ||||||
|         qCWarning(LOG_AW) << "Parse error" << error.errorString(); |         qCWarning(LOG_AW) << "Parse error" << error.errorString(); | ||||||
|         return; |         return; | ||||||
| @ -163,8 +163,8 @@ void AWTelemetryHandler::telemetryReplyRecieved(QNetworkReply *_reply) | |||||||
|     _reply->deleteLater(); |     _reply->deleteLater(); | ||||||
|  |  | ||||||
|     // convert to map |     // convert to map | ||||||
|     QVariantMap response = jsonDoc.toVariant().toMap(); |     auto response = jsonDoc.toVariant().toMap(); | ||||||
|     QString message = response["message"].toString(); |     auto message = response["message"].toString(); | ||||||
|     qCInfo(LOG_AW) << "Server reply on telemetry" << message; |     qCInfo(LOG_AW) << "Server reply on telemetry" << message; | ||||||
|  |  | ||||||
|     return emit(replyReceived(message)); |     return emit(replyReceived(message)); | ||||||
|  | |||||||
| @ -15,9 +15,7 @@ | |||||||
|  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * |  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * | ||||||
|  ***************************************************************************/ |  ***************************************************************************/ | ||||||
|  |  | ||||||
|  | #pragma once | ||||||
| #ifndef AWTELEMETRYHANDLER_H |  | ||||||
| #define AWTELEMETRYHANDLER_H |  | ||||||
|  |  | ||||||
| #include <QObject> | #include <QObject> | ||||||
|  |  | ||||||
| @ -43,7 +41,7 @@ signals: | |||||||
|     void replyReceived(const QString &_message); |     void replyReceived(const QString &_message); | ||||||
|  |  | ||||||
| private slots: | private slots: | ||||||
|     void telemetryReplyRecieved(QNetworkReply *_reply); |     void telemetryReplyReceived(QNetworkReply *_reply); | ||||||
|  |  | ||||||
| private: | private: | ||||||
|     static QString getKey(int _count); |     static QString getKey(int _count); | ||||||
| @ -52,6 +50,3 @@ private: | |||||||
|     int m_storeCount = 0; |     int m_storeCount = 0; | ||||||
|     bool m_uploadEnabled = false; |     bool m_uploadEnabled = false; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| #endif /* AWTELEMETRYHANDLER_H */ |  | ||||||
|  | |||||||
| @ -24,6 +24,7 @@ | |||||||
| #include <QNetworkAccessManager> | #include <QNetworkAccessManager> | ||||||
| #include <QNetworkReply> | #include <QNetworkReply> | ||||||
| #include <QSettings> | #include <QSettings> | ||||||
|  | #include <QStandardPaths> | ||||||
|  |  | ||||||
| #include "awdebug.h" | #include "awdebug.h" | ||||||
|  |  | ||||||
| @ -53,7 +54,7 @@ void AWUpdateHelper::checkUpdates(const bool _showAnyway) | |||||||
|     // request. In case of automatic check no message will be shown |     // request. In case of automatic check no message will be shown | ||||||
|     auto *manager = new QNetworkAccessManager(nullptr); |     auto *manager = new QNetworkAccessManager(nullptr); | ||||||
|     connect(manager, &QNetworkAccessManager::finished, |     connect(manager, &QNetworkAccessManager::finished, | ||||||
|             [_showAnyway, this](QNetworkReply *reply) { return versionReplyRecieved(reply, _showAnyway); }); |             [_showAnyway, this](QNetworkReply *reply) { return versionReplyReceived(reply, _showAnyway); }); | ||||||
|  |  | ||||||
|     manager->get(QNetworkRequest(QUrl(VERSION_API))); |     manager->get(QNetworkRequest(QUrl(VERSION_API))); | ||||||
| } | } | ||||||
| @ -62,7 +63,7 @@ void AWUpdateHelper::checkUpdates(const bool _showAnyway) | |||||||
| bool AWUpdateHelper::checkVersion() | bool AWUpdateHelper::checkVersion() | ||||||
| { | { | ||||||
|     QSettings settings(m_genericConfig, QSettings::IniFormat); |     QSettings settings(m_genericConfig, QSettings::IniFormat); | ||||||
|     QVersionNumber version = QVersionNumber::fromString(settings.value("Version", QString(VERSION)).toString()); |     auto version = QVersionNumber::fromString(settings.value("Version", QString(VERSION)).toString()); | ||||||
|     // update version |     // update version | ||||||
|     settings.setValue("Version", QString(VERSION)); |     settings.setValue("Version", QString(VERSION)); | ||||||
|     settings.sync(); |     settings.sync(); | ||||||
| @ -87,7 +88,7 @@ void AWUpdateHelper::showInfo(const QVersionNumber &_version) | |||||||
| { | { | ||||||
|     qCDebug(LOG_AW) << "Version" << _version; |     qCDebug(LOG_AW) << "Version" << _version; | ||||||
|  |  | ||||||
|     QString text = i18n("You are using the actual version %1", _version.toString()); |     auto text = i18n("You are using the actual version %1", _version.toString()); | ||||||
|     if (!QString(COMMIT_SHA).isEmpty()) |     if (!QString(COMMIT_SHA).isEmpty()) | ||||||
|         text += QString(" (%1)").arg(QString(COMMIT_SHA)); |         text += QString(" (%1)").arg(QString(COMMIT_SHA)); | ||||||
|     return genMessageBox(i18n("No new version found"), text, QMessageBox::Ok)->open(); |     return genMessageBox(i18n("No new version found"), text, QMessageBox::Ok)->open(); | ||||||
| @ -111,7 +112,7 @@ void AWUpdateHelper::showUpdates(const QVersionNumber &_version) | |||||||
|  |  | ||||||
| void AWUpdateHelper::userReplyOnUpdates(QAbstractButton *_button) | void AWUpdateHelper::userReplyOnUpdates(QAbstractButton *_button) | ||||||
| { | { | ||||||
|     QMessageBox::ButtonRole ret = dynamic_cast<QMessageBox *>(sender())->buttonRole(_button); |     auto ret = dynamic_cast<QMessageBox *>(sender())->buttonRole(_button); | ||||||
|     qCInfo(LOG_AW) << "User select" << ret; |     qCInfo(LOG_AW) << "User select" << ret; | ||||||
|  |  | ||||||
|     switch (ret) { |     switch (ret) { | ||||||
| @ -125,7 +126,7 @@ void AWUpdateHelper::userReplyOnUpdates(QAbstractButton *_button) | |||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| void AWUpdateHelper::versionReplyRecieved(QNetworkReply *_reply, const bool _showAnyway) | void AWUpdateHelper::versionReplyReceived(QNetworkReply *_reply, const bool _showAnyway) | ||||||
| { | { | ||||||
|     qCDebug(LOG_AW) << "Show message anyway" << _showAnyway; |     qCDebug(LOG_AW) << "Show message anyway" << _showAnyway; | ||||||
|     if (_reply->error() != QNetworkReply::NoError) { |     if (_reply->error() != QNetworkReply::NoError) { | ||||||
| @ -133,8 +134,8 @@ void AWUpdateHelper::versionReplyRecieved(QNetworkReply *_reply, const bool _sho | |||||||
|         return; |         return; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     QJsonParseError error = QJsonParseError(); |     auto error = QJsonParseError(); | ||||||
|     QJsonDocument jsonDoc = QJsonDocument::fromJson(_reply->readAll(), &error); |     auto jsonDoc = QJsonDocument::fromJson(_reply->readAll(), &error); | ||||||
|     if (error.error != QJsonParseError::NoError) { |     if (error.error != QJsonParseError::NoError) { | ||||||
|         qCWarning(LOG_AW) << "Parse error" << error.errorString(); |         qCWarning(LOG_AW) << "Parse error" << error.errorString(); | ||||||
|         return; |         return; | ||||||
| @ -142,13 +143,13 @@ void AWUpdateHelper::versionReplyRecieved(QNetworkReply *_reply, const bool _sho | |||||||
|     _reply->deleteLater(); |     _reply->deleteLater(); | ||||||
|  |  | ||||||
|     // convert to map |     // convert to map | ||||||
|     QVariantMap firstRelease = jsonDoc.toVariant().toList().first().toMap(); |     auto firstRelease = jsonDoc.toVariant().toList().first().toMap(); | ||||||
|     QString version = firstRelease["tag_name"].toString(); |     auto version = firstRelease["tag_name"].toString(); | ||||||
|     version.remove("V."); |     version.remove("V."); | ||||||
|     m_foundVersion = QVersionNumber::fromString(version); |     m_foundVersion = QVersionNumber::fromString(version); | ||||||
|     qCInfo(LOG_AW) << "Update found version to" << m_foundVersion; |     qCInfo(LOG_AW) << "Update found version to" << m_foundVersion; | ||||||
|  |  | ||||||
|     QVersionNumber oldVersion = QVersionNumber::fromString(VERSION); |     auto oldVersion = QVersionNumber::fromString(VERSION); | ||||||
|     if (oldVersion < m_foundVersion) |     if (oldVersion < m_foundVersion) | ||||||
|         return showUpdates(m_foundVersion); |         return showUpdates(m_foundVersion); | ||||||
|     else if (_showAnyway) |     else if (_showAnyway) | ||||||
|  | |||||||
| @ -15,9 +15,7 @@ | |||||||
|  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * |  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * | ||||||
|  ***************************************************************************/ |  ***************************************************************************/ | ||||||
|  |  | ||||||
|  | #pragma once | ||||||
| #ifndef AWUPDATEHELPER_H |  | ||||||
| #define AWUPDATEHELPER_H |  | ||||||
|  |  | ||||||
| #include <QMessageBox> | #include <QMessageBox> | ||||||
| #include <QObject> | #include <QObject> | ||||||
| @ -40,7 +38,7 @@ private slots: | |||||||
|     static void showInfo(const QVersionNumber &_version); |     static void showInfo(const QVersionNumber &_version); | ||||||
|     void showUpdates(const QVersionNumber &_version); |     void showUpdates(const QVersionNumber &_version); | ||||||
|     void userReplyOnUpdates(QAbstractButton *_button); |     void userReplyOnUpdates(QAbstractButton *_button); | ||||||
|     void versionReplyRecieved(QNetworkReply *_reply, bool _showAnyway); |     void versionReplyReceived(QNetworkReply *_reply, bool _showAnyway); | ||||||
|  |  | ||||||
| private: | private: | ||||||
|     static QMessageBox *genMessageBox(const QString &_title, const QString &_body, |     static QMessageBox *genMessageBox(const QString &_title, const QString &_body, | ||||||
| @ -48,6 +46,3 @@ private: | |||||||
|     QVersionNumber m_foundVersion; |     QVersionNumber m_foundVersion; | ||||||
|     QString m_genericConfig; |     QString m_genericConfig; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| #endif /* AWUPDATEHELPER_H */ |  | ||||||
|  | |||||||
| @ -7,7 +7,7 @@ include_directories( | |||||||
|         ${CMAKE_BINARY_DIR} |         ${CMAKE_BINARY_DIR} | ||||||
|         ${PROJECT_TRDPARTY_DIR} |         ${PROJECT_TRDPARTY_DIR} | ||||||
|         ${Qt_INCLUDE} |         ${Qt_INCLUDE} | ||||||
|         ${Kf5_INCLUDE} |         ${Kf6_INCLUDE} | ||||||
| ) | ) | ||||||
|  |  | ||||||
| file(GLOB SUBPROJECT_SOURCE *.cpp ${PROJECT_TRDPARTY_DIR}/qreplytimeout/*.cpp ${CMAKE_SOURCE_DIR}/*.cpp) | file(GLOB SUBPROJECT_SOURCE *.cpp ${PROJECT_TRDPARTY_DIR}/qreplytimeout/*.cpp ${CMAKE_SOURCE_DIR}/*.cpp) | ||||||
| @ -28,18 +28,18 @@ file(RELATIVE_PATH SUBPROJECT_WEATHER_JSON ${CMAKE_SOURCE_DIR} ${SUBPROJECT_WEAT | |||||||
| # prepare | # prepare | ||||||
| configure_file(${SUBPROJECT_WEATHER_JSON_IN} ${CMAKE_CURRENT_BINARY_DIR}/${SUBPROJECT_WEATHER_JSON}) | configure_file(${SUBPROJECT_WEATHER_JSON_IN} ${CMAKE_CURRENT_BINARY_DIR}/${SUBPROJECT_WEATHER_JSON}) | ||||||
|  |  | ||||||
| qt5_wrap_ui(SUBPROJECT_UI_HEADER ${SUBPROJECT_UI}) | qt6_wrap_ui(SUBPROJECT_UI_HEADER ${SUBPROJECT_UI}) | ||||||
| add_library(${SUBPROJECT} STATIC ${SUBPROJECT_SOURCE} ${SUBPROJECT_HEADER} ${SUBPROJECT_UI_HEADER}) | add_library(${SUBPROJECT} STATIC ${SUBPROJECT_SOURCE} ${SUBPROJECT_HEADER} ${SUBPROJECT_UI_HEADER}) | ||||||
| target_link_libraries(${SUBPROJECT} ${Qt_LIBRARIES} ${Kf5_LIBRARIES}) | target_link_libraries(${SUBPROJECT} ${Qt_LIBRARIES} ${Kf6_LIBRARIES}) | ||||||
|  |  | ||||||
| # install | # install | ||||||
| install(DIRECTORY ${SUBPROJECT_CONFIGS} DESTINATION ${DATA_INSTALL_DIR}/${PROJECT_NAME}) | install(DIRECTORY ${SUBPROJECT_CONFIGS} DESTINATION ${KDE_INSTALL_DATADIR}/${PROJECT_NAME}) | ||||||
| install(DIRECTORY ${SUBPROJECT_FORMATTERS} DESTINATION ${DATA_INSTALL_DIR}/${PROJECT_NAME}) | install(DIRECTORY ${SUBPROJECT_FORMATTERS} DESTINATION ${KDE_INSTALL_DATADIR}/${PROJECT_NAME}) | ||||||
| install(DIRECTORY ${SUBPROJECT_GRAPHITEMS} DESTINATION ${DATA_INSTALL_DIR}/${PROJECT_NAME}) | install(DIRECTORY ${SUBPROJECT_GRAPHITEMS} DESTINATION ${KDE_INSTALL_DATADIR}/${PROJECT_NAME}) | ||||||
| install(DIRECTORY ${SUBPROJECT_QUOTES} DESTINATION ${DATA_INSTALL_DIR}/${PROJECT_NAME}) | install(DIRECTORY ${SUBPROJECT_QUOTES} DESTINATION ${KDE_INSTALL_DATADIR}/${PROJECT_NAME}) | ||||||
| install(DIRECTORY ${SUBPROJECT_SCRIPTS} DESTINATION ${DATA_INSTALL_DIR}/${PROJECT_NAME}) | install(DIRECTORY ${SUBPROJECT_SCRIPTS} DESTINATION ${KDE_INSTALL_DATADIR}/${PROJECT_NAME}) | ||||||
| install(DIRECTORY ${SUBPROJECT_REQUESTS} DESTINATION ${DATA_INSTALL_DIR}/${PROJECT_NAME}) | install(DIRECTORY ${SUBPROJECT_REQUESTS} DESTINATION ${KDE_INSTALL_DATADIR}/${PROJECT_NAME}) | ||||||
| install(DIRECTORY ${SUBPROJECT_UPGRADE} DESTINATION ${DATA_INSTALL_DIR}/${PROJECT_NAME}) | install(DIRECTORY ${SUBPROJECT_UPGRADE} DESTINATION ${KDE_INSTALL_DATADIR}/${PROJECT_NAME}) | ||||||
| install(DIRECTORY ${SUBPROJECT_WEATHER} DESTINATION ${DATA_INSTALL_DIR}/${PROJECT_NAME}) | install(DIRECTORY ${SUBPROJECT_WEATHER} DESTINATION ${KDE_INSTALL_DATADIR}/${PROJECT_NAME}) | ||||||
| install(FILES ${SUBPROJECT_INI} DESTINATION ${CONFIG_INSTALL_DIR}) | install(FILES ${SUBPROJECT_INI} DESTINATION /${KDE_INSTALL_CONFDIR}) | ||||||
| install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${SUBPROJECT_WEATHER_JSON} DESTINATION ${DATA_INSTALL_DIR}/${PROJECT_NAME}/weather) | install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${SUBPROJECT_WEATHER_JSON} DESTINATION ${KDE_INSTALL_DATADIR}/${PROJECT_NAME}/weather) | ||||||
|  | |||||||
| @ -27,8 +27,8 @@ | |||||||
| #include "qcronscheduler.h" | #include "qcronscheduler.h" | ||||||
|  |  | ||||||
|  |  | ||||||
| AbstractExtItem::AbstractExtItem(QWidget *_parent, const QString &_filePath) | AbstractExtItem::AbstractExtItem(QObject *_parent, const QString &_filePath) | ||||||
|     : QDialog(_parent) |     : QObject(_parent) | ||||||
|     , m_fileName(_filePath) |     , m_fileName(_filePath) | ||||||
| { | { | ||||||
|     qCDebug(LOG_LIB) << __PRETTY_FUNCTION__; |     qCDebug(LOG_LIB) << __PRETTY_FUNCTION__; | ||||||
| @ -97,15 +97,13 @@ void AbstractExtItem::startTimer() | |||||||
|  |  | ||||||
| QString AbstractExtItem::writtableConfig() const | QString AbstractExtItem::writtableConfig() const | ||||||
| { | { | ||||||
|     QString path = m_fileName; |     auto path = m_fileName; | ||||||
|     QString name = QFileInfo(path).fileName(); |     auto name = QFileInfo(path).fileName(); | ||||||
|     path.remove(path.count() - name.count() - 1, name.count() + 1); |     path.remove(path.length() - name.length() - 1, name.length() + 1); | ||||||
|     QString dir = QFileInfo(path).fileName(); |     auto dir = QFileInfo(path).fileName(); | ||||||
|  |  | ||||||
|     return QString("%1/awesomewidgets/%2/%3") |     return QString("%1/awesomewidgets/%2/%3") | ||||||
|         .arg(QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation)) |         .arg(QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation), dir, name); | ||||||
|         .arg(dir) |  | ||||||
|         .arg(name); |  | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| @ -200,7 +198,7 @@ void AbstractExtItem::setCron(const QString &_cron) | |||||||
|     qCDebug(LOG_LIB) << "Cron string" << _cron; |     qCDebug(LOG_LIB) << "Cron string" << _cron; | ||||||
|     // deinit module first |     // deinit module first | ||||||
|     if (m_scheduler) { |     if (m_scheduler) { | ||||||
|         disconnect(m_scheduler, SIGNAL(activated()), this, SIGNAL(requestDataUpdate())); |         disconnect(m_scheduler, &QCronScheduler::activated, this, &AbstractExtItem::requestDataUpdate); | ||||||
|         delete m_scheduler; |         delete m_scheduler; | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @ -211,7 +209,7 @@ void AbstractExtItem::setCron(const QString &_cron) | |||||||
|     // init scheduler |     // init scheduler | ||||||
|     m_scheduler = new QCronScheduler(this); |     m_scheduler = new QCronScheduler(this); | ||||||
|     m_scheduler->parse(cron()); |     m_scheduler->parse(cron()); | ||||||
|     connect(m_scheduler, SIGNAL(activated()), this, SIGNAL(requestDataUpdate())); |     connect(m_scheduler, &QCronScheduler::activated, this, &AbstractExtItem::requestDataUpdate); | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| @ -236,7 +234,7 @@ void AbstractExtItem::setName(const QString &_name) | |||||||
| void AbstractExtItem::setNumber(int _number) | void AbstractExtItem::setNumber(int _number) | ||||||
| { | { | ||||||
|     qCDebug(LOG_LIB) << "Number" << _number; |     qCDebug(LOG_LIB) << "Number" << _number; | ||||||
|     bool generateNumber = (_number == -1); |     auto generateNumber = (_number == -1); | ||||||
|     if (generateNumber) { |     if (generateNumber) { | ||||||
|         _number = []() { |         _number = []() { | ||||||
|             qCWarning(LOG_LIB) << "Number is empty, generate new one"; |             qCWarning(LOG_LIB) << "Number is empty, generate new one"; | ||||||
| @ -269,8 +267,8 @@ void AbstractExtItem::deinitSocket() | |||||||
|  |  | ||||||
|     m_socket->close(); |     m_socket->close(); | ||||||
|     QLocalServer::removeServer(socket()); |     QLocalServer::removeServer(socket()); | ||||||
|  |     disconnect(m_socket, &QLocalServer::newConnection, this, &AbstractExtItem::newConnectionReceived); | ||||||
|     delete m_socket; |     delete m_socket; | ||||||
|     disconnect(m_socket, SIGNAL(newConnection()), this, SLOT(newConnectionReceived())); |  | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| @ -280,9 +278,9 @@ void AbstractExtItem::initSocket() | |||||||
|     deinitSocket(); |     deinitSocket(); | ||||||
|  |  | ||||||
|     m_socket = new QLocalServer(this); |     m_socket = new QLocalServer(this); | ||||||
|     bool listening = m_socket->listen(socket()); |     auto listening = m_socket->listen(socket()); | ||||||
|     qCInfo(LOG_LIB) << "Server listening on" << socket() << listening; |     qCInfo(LOG_LIB) << "Server listening on" << socket() << listening; | ||||||
|     connect(m_socket, SIGNAL(newConnection()), this, SLOT(newConnectionReceived())); |     connect(m_socket, &QLocalServer::newConnection, this, &AbstractExtItem::newConnectionReceived); | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| @ -305,7 +303,7 @@ void AbstractExtItem::readConfiguration() | |||||||
|  |  | ||||||
| bool AbstractExtItem::tryDelete() const | bool AbstractExtItem::tryDelete() const | ||||||
| { | { | ||||||
|     bool status = QFile::remove(m_fileName); |     auto status = QFile::remove(m_fileName); | ||||||
|     qCInfo(LOG_LIB) << "Remove file" << m_fileName << status; |     qCInfo(LOG_LIB) << "Remove file" << m_fileName << status; | ||||||
|  |  | ||||||
|     return status; |     return status; | ||||||
|  | |||||||
| @ -15,17 +15,16 @@ | |||||||
|  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * |  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * | ||||||
|  ***************************************************************************/ |  ***************************************************************************/ | ||||||
|  |  | ||||||
| #ifndef ABSTRACTEXTITEM_H | #pragma once | ||||||
| #define ABSTRACTEXTITEM_H |  | ||||||
|  |  | ||||||
| #include <QDialog> |  | ||||||
| #include <QVariant> | #include <QVariant> | ||||||
|  |  | ||||||
|  |  | ||||||
| class QCronScheduler; | class QCronScheduler; | ||||||
| class QLocalServer; | class QLocalServer; | ||||||
|  | class QWidget; | ||||||
|  |  | ||||||
| class AbstractExtItem : public QDialog | class AbstractExtItem : public QObject | ||||||
| { | { | ||||||
|     Q_OBJECT |     Q_OBJECT | ||||||
|     Q_PROPERTY(bool active READ isActive WRITE setActive) |     Q_PROPERTY(bool active READ isActive WRITE setActive) | ||||||
| @ -40,7 +39,7 @@ class AbstractExtItem : public QDialog | |||||||
|     Q_PROPERTY(QString uniq READ uniq) |     Q_PROPERTY(QString uniq READ uniq) | ||||||
|  |  | ||||||
| public: | public: | ||||||
|     explicit AbstractExtItem(QWidget *_parent = nullptr, const QString &_filePath = ""); |     explicit AbstractExtItem(QObject *_parent = nullptr, const QString &_filePath = ""); | ||||||
|     ~AbstractExtItem() override; |     ~AbstractExtItem() override; | ||||||
|     virtual void bumpApi(int _newVer); |     virtual void bumpApi(int _newVer); | ||||||
|     virtual AbstractExtItem *copy(const QString &_fileName, int _number) = 0; |     virtual AbstractExtItem *copy(const QString &_fileName, int _number) = 0; | ||||||
| @ -78,7 +77,7 @@ public slots: | |||||||
|     virtual void initSocket(); |     virtual void initSocket(); | ||||||
|     virtual void readConfiguration(); |     virtual void readConfiguration(); | ||||||
|     virtual QVariantHash run() = 0; |     virtual QVariantHash run() = 0; | ||||||
|     virtual int showConfiguration(const QVariant &_args) = 0; |     virtual int showConfiguration(QWidget *_parent, const QVariant &_args) = 0; | ||||||
|     [[nodiscard]] virtual bool tryDelete() const; |     [[nodiscard]] virtual bool tryDelete() const; | ||||||
|     virtual void writeConfiguration() const; |     virtual void writeConfiguration() const; | ||||||
|  |  | ||||||
| @ -89,7 +88,8 @@ private: | |||||||
|     QCronScheduler *m_scheduler = nullptr; |     QCronScheduler *m_scheduler = nullptr; | ||||||
|     QString m_fileName = "/dev/null"; |     QString m_fileName = "/dev/null"; | ||||||
|     int m_times = 0; |     int m_times = 0; | ||||||
|     virtual void translate() = 0; |     // FIXME find a better way to do it | ||||||
|  |     virtual void translate(void *_ui) = 0; | ||||||
|     // properties |     // properties | ||||||
|     int m_apiVersion = 0; |     int m_apiVersion = 0; | ||||||
|     bool m_active = true; |     bool m_active = true; | ||||||
| @ -101,6 +101,3 @@ private: | |||||||
|     QLocalServer *m_socket = nullptr; |     QLocalServer *m_socket = nullptr; | ||||||
|     QString m_socketFile = ""; |     QString m_socketFile = ""; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| #endif /* ABSTRACTEXTITEM_H */ |  | ||||||
|  | |||||||
| @ -26,65 +26,45 @@ | |||||||
| #include <utility> | #include <utility> | ||||||
|  |  | ||||||
|  |  | ||||||
| AbstractExtItemAggregator::AbstractExtItemAggregator(QWidget *_parent, QString _type) | AbstractExtItemAggregator::AbstractExtItemAggregator(QObject *_parent, QString _type) | ||||||
|     : QDialog(_parent) |     : QObject(_parent) | ||||||
|     , ui(new Ui::AbstractExtItemAggregator) |  | ||||||
|     , m_type(std::move(_type)) |     , m_type(std::move(_type)) | ||||||
| { | { | ||||||
|     qCDebug(LOG_LIB) << __PRETTY_FUNCTION__; |     qCDebug(LOG_LIB) << __PRETTY_FUNCTION__; | ||||||
|  |  | ||||||
|     // create directory at $HOME |     // create directory at $HOME | ||||||
|     QString localDir = QString("%1/awesomewidgets/%2") |     auto localDir = QString("%1/awesomewidgets/%2") | ||||||
|                            .arg(QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation)) |                         .arg(QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation), type()); | ||||||
|                            .arg(type()); |  | ||||||
|     QDir localDirectory; |     QDir localDirectory; | ||||||
|     if (localDirectory.mkpath(localDir)) |     if (localDirectory.mkpath(localDir)) | ||||||
|         qCInfo(LOG_LIB) << "Created directory" << localDir; |         qCInfo(LOG_LIB) << "Created directory" << localDir; | ||||||
|  |  | ||||||
|     ui->setupUi(this); |  | ||||||
|     copyButton = ui->buttonBox->addButton(i18n("Copy"), QDialogButtonBox::ActionRole); |  | ||||||
|     createButton = ui->buttonBox->addButton(i18n("Create"), QDialogButtonBox::ActionRole); |  | ||||||
|     deleteButton = ui->buttonBox->addButton(i18n("Remove"), QDialogButtonBox::ActionRole); |  | ||||||
|  |  | ||||||
|     connect(ui->buttonBox, SIGNAL(clicked(QAbstractButton *)), this, SLOT(editItemButtonPressed(QAbstractButton *))); |  | ||||||
|     connect(ui->buttonBox, SIGNAL(rejected()), this, SLOT(reject())); |  | ||||||
|     connect(ui->listWidget, SIGNAL(itemActivated(QListWidgetItem *)), this, SLOT(editItemActivated(QListWidgetItem *))); |  | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| AbstractExtItemAggregator::~AbstractExtItemAggregator() | void AbstractExtItemAggregator::copyItem(QListWidget *_widget) | ||||||
| { | { | ||||||
|     qCDebug(LOG_LIB) << __PRETTY_FUNCTION__; |     auto source = itemFromWidget(_widget); | ||||||
|  |     auto fileName = getName(); | ||||||
|     delete ui; |     auto number = uniqNumber(); | ||||||
| } |     auto dir = QString("%1/awesomewidgets/%2") | ||||||
|  |                    .arg(QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation), m_type); | ||||||
|  |  | ||||||
| void AbstractExtItemAggregator::copyItem() |  | ||||||
| { |  | ||||||
|     AbstractExtItem *source = itemFromWidget(); |  | ||||||
|     QString fileName = getName(); |  | ||||||
|     int number = uniqNumber(); |  | ||||||
|     QString dir = QString("%1/awesomewidgets/%2") |  | ||||||
|                       .arg(QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation)) |  | ||||||
|                       .arg(m_type); |  | ||||||
|     if ((!source) || (fileName.isEmpty())) { |     if ((!source) || (fileName.isEmpty())) { | ||||||
|         qCWarning(LOG_LIB) << "Nothing to copy"; |         qCWarning(LOG_LIB) << "Nothing to copy"; | ||||||
|         return; |         return; | ||||||
|     } |     } | ||||||
|     QString filePath = QString("%1/%2").arg(dir).arg(fileName); |     auto filePath = QString("%1/%2").arg(dir, fileName); | ||||||
|  |  | ||||||
|     AbstractExtItem *newItem = source->copy(filePath, number); |     auto newItem = source->copy(filePath, number); | ||||||
|     if (newItem->showConfiguration(configArgs()) == 1) { |     if (newItem->showConfiguration(nullptr, configArgs()) == 1) { | ||||||
|         initItems(); |         initItems(); | ||||||
|         repaintList(); |         repaintList(_widget); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| void AbstractExtItemAggregator::deleteItem() | void AbstractExtItemAggregator::deleteItem(QListWidget *_widget) | ||||||
| { | { | ||||||
|     AbstractExtItem *source = itemFromWidget(); |     auto source = itemFromWidget(_widget); | ||||||
|     if (!source) { |     if (!source) { | ||||||
|         qCWarning(LOG_LIB) << "Nothing to delete"; |         qCWarning(LOG_LIB) << "Nothing to delete"; | ||||||
|         return; |         return; | ||||||
| @ -92,30 +72,63 @@ void AbstractExtItemAggregator::deleteItem() | |||||||
|  |  | ||||||
|     if (source->tryDelete()) { |     if (source->tryDelete()) { | ||||||
|         initItems(); |         initItems(); | ||||||
|         repaintList(); |         repaintList(_widget); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| void AbstractExtItemAggregator::editItem() | void AbstractExtItemAggregator::editItem(QListWidget *_widget) | ||||||
| { | { | ||||||
|     AbstractExtItem *source = itemFromWidget(); |     auto source = itemFromWidget(_widget); | ||||||
|     if (!source) { |     if (!source) { | ||||||
|         qCWarning(LOG_LIB) << "Nothing to edit"; |         qCWarning(LOG_LIB) << "Nothing to edit"; | ||||||
|         return; |         return; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     if (source->showConfiguration(configArgs()) == 1) { |     if (source->showConfiguration(nullptr, configArgs()) == 1) { | ||||||
|         initItems(); |         initItems(); | ||||||
|         repaintList(); |         repaintList(_widget); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | int AbstractExtItemAggregator::exec() | ||||||
|  | { | ||||||
|  |     auto dialog = new QDialog(); | ||||||
|  |     auto ui = new Ui::AbstractExtItemAggregator(); | ||||||
|  |     ui->setupUi(dialog); | ||||||
|  |  | ||||||
|  |     auto copyButton = ui->buttonBox->addButton(i18n("Copy"), QDialogButtonBox::ActionRole); | ||||||
|  |     auto createButton = ui->buttonBox->addButton(i18n("Create"), QDialogButtonBox::ActionRole); | ||||||
|  |     auto deleteButton = ui->buttonBox->addButton(i18n("Remove"), QDialogButtonBox::ActionRole); | ||||||
|  |  | ||||||
|  |     connect(ui->buttonBox, &QDialogButtonBox::clicked, [&](QAbstractButton *_button) { | ||||||
|  |         if (dynamic_cast<QPushButton *>(_button) == copyButton) | ||||||
|  |             copyItem(ui->listWidget); | ||||||
|  |         else if (dynamic_cast<QPushButton *>(_button) == createButton) | ||||||
|  |             doCreateItem(ui->listWidget); | ||||||
|  |         else if (dynamic_cast<QPushButton *>(_button) == deleteButton) | ||||||
|  |             deleteItem(ui->listWidget); | ||||||
|  |         else if (ui->buttonBox->buttonRole(_button) == QDialogButtonBox::AcceptRole) | ||||||
|  |             editItem(ui->listWidget); | ||||||
|  |     }); | ||||||
|  |     connect(ui->buttonBox, &QDialogButtonBox::rejected, [dialog]() { dialog->reject(); }); | ||||||
|  |     connect(ui->listWidget, &QListWidget::itemActivated, [&](QListWidgetItem *) { editItem(ui->listWidget); }); | ||||||
|  |  | ||||||
|  |     repaintList(ui->listWidget); | ||||||
|  |     auto ret = dialog->exec(); | ||||||
|  |  | ||||||
|  |     dialog->deleteLater(); | ||||||
|  |     delete ui; | ||||||
|  |  | ||||||
|  |     return ret; | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
| QString AbstractExtItemAggregator::getName() | QString AbstractExtItemAggregator::getName() | ||||||
| { | { | ||||||
|     bool ok; |     bool ok; | ||||||
|     QString name = QInputDialog::getText(this, i18n("Enter file name"), i18n("File name"), QLineEdit::Normal, "", &ok); |     auto name = QInputDialog::getText(nullptr, i18n("Enter file name"), i18n("File name"), QLineEdit::Normal, "", &ok); | ||||||
|     if ((!ok) || (name.isEmpty())) |     if ((!ok) || (name.isEmpty())) | ||||||
|         return ""; |         return ""; | ||||||
|     if (!name.endsWith(".desktop")) |     if (!name.endsWith(".desktop")) | ||||||
| @ -125,15 +138,15 @@ QString AbstractExtItemAggregator::getName() | |||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| AbstractExtItem *AbstractExtItemAggregator::itemFromWidget() const | AbstractExtItem *AbstractExtItemAggregator::itemFromWidget(QListWidget *_widget) const | ||||||
| { | { | ||||||
|     QListWidgetItem *widgetItem = ui->listWidget->currentItem(); |     auto widgetItem = _widget->currentItem(); | ||||||
|     if (!widgetItem) |     if (!widgetItem) | ||||||
|         return nullptr; |         return nullptr; | ||||||
|  |  | ||||||
|     AbstractExtItem *found = nullptr; |     AbstractExtItem *found = nullptr; | ||||||
|     for (auto &item : items()) { |     for (auto &item : items()) { | ||||||
|         QString fileName = QFileInfo(item->fileName()).fileName(); |         auto fileName = QFileInfo(item->fileName()).fileName(); | ||||||
|         if (fileName != widgetItem->text()) |         if (fileName != widgetItem->text()) | ||||||
|             continue; |             continue; | ||||||
|         found = item; |         found = item; | ||||||
| @ -146,18 +159,18 @@ AbstractExtItem *AbstractExtItemAggregator::itemFromWidget() const | |||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| void AbstractExtItemAggregator::repaintList() const | void AbstractExtItemAggregator::repaintList(QListWidget *_widget) const | ||||||
| { | { | ||||||
|     ui->listWidget->clear(); |     _widget->clear(); | ||||||
|     for (auto &_item : items()) { |     for (auto &_item : items()) { | ||||||
|         QString fileName = QFileInfo(_item->fileName()).fileName(); |         QString fileName = QFileInfo(_item->fileName()).fileName(); | ||||||
|         auto *item = new QListWidgetItem(fileName, ui->listWidget); |         auto item = new QListWidgetItem(fileName, _widget); | ||||||
|         QStringList tooltip; |         QStringList tooltip; | ||||||
|         tooltip.append(i18n("Name: %1", _item->name())); |         tooltip.append(i18n("Name: %1", _item->name())); | ||||||
|         tooltip.append(i18n("Comment: %1", _item->comment())); |         tooltip.append(i18n("Comment: %1", _item->comment())); | ||||||
|         tooltip.append(i18n("Identity: %1", _item->uniq())); |         tooltip.append(i18n("Identity: %1", _item->uniq())); | ||||||
|         item->setToolTip(tooltip.join('\n')); |         item->setToolTip(tooltip.join('\n')); | ||||||
|         ui->listWidget->addItem(item); |         _widget->addItem(item); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| @ -202,22 +215,3 @@ void AbstractExtItemAggregator::setConfigArgs(const QVariant &_configArgs) | |||||||
|  |  | ||||||
|     m_configArgs = _configArgs; |     m_configArgs = _configArgs; | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| void AbstractExtItemAggregator::editItemActivated(QListWidgetItem *) |  | ||||||
| { |  | ||||||
|     return editItem(); |  | ||||||
| } |  | ||||||
|  |  | ||||||
|  |  | ||||||
| void AbstractExtItemAggregator::editItemButtonPressed(QAbstractButton *_button) |  | ||||||
| { |  | ||||||
|     if (dynamic_cast<QPushButton *>(_button) == copyButton) |  | ||||||
|         return copyItem(); |  | ||||||
|     else if (dynamic_cast<QPushButton *>(_button) == createButton) |  | ||||||
|         return doCreateItem(); |  | ||||||
|     else if (dynamic_cast<QPushButton *>(_button) == deleteButton) |  | ||||||
|         return deleteItem(); |  | ||||||
|     else if (ui->buttonBox->buttonRole(_button) == QDialogButtonBox::AcceptRole) |  | ||||||
|         return editItem(); |  | ||||||
| } |  | ||||||
|  | |||||||
| @ -15,10 +15,8 @@ | |||||||
|  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * |  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * | ||||||
|  ***************************************************************************/ |  ***************************************************************************/ | ||||||
|  |  | ||||||
| #ifndef ABSTRACTEXTITEMAGGREGATOR_H | #pragma once | ||||||
| #define ABSTRACTEXTITEMAGGREGATOR_H |  | ||||||
|  |  | ||||||
| #include <QDialog> |  | ||||||
| #include <QStandardPaths> | #include <QStandardPaths> | ||||||
|  |  | ||||||
| #include "abstractextitem.h" | #include "abstractextitem.h" | ||||||
| @ -26,49 +24,45 @@ | |||||||
|  |  | ||||||
|  |  | ||||||
| class QAbstractButton; | class QAbstractButton; | ||||||
|  | class QListWidget; | ||||||
| class QListWidgetItem; | class QListWidgetItem; | ||||||
| namespace Ui |  | ||||||
| { |  | ||||||
| class AbstractExtItemAggregator; |  | ||||||
| } |  | ||||||
|  |  | ||||||
| class AbstractExtItemAggregator : public QDialog | class AbstractExtItemAggregator : public QObject | ||||||
| { | { | ||||||
|     Q_OBJECT |     Q_OBJECT | ||||||
|     Q_PROPERTY(QVariant configArgs READ configArgs WRITE setConfigArgs) |     Q_PROPERTY(QVariant configArgs READ configArgs WRITE setConfigArgs) | ||||||
|     Q_PROPERTY(QVariant type READ type) |     Q_PROPERTY(QVariant type READ type) | ||||||
|  |  | ||||||
| public: | public: | ||||||
|     explicit AbstractExtItemAggregator(QWidget *_parent, QString _type); |     explicit AbstractExtItemAggregator(QObject *_parent, QString _type); | ||||||
|     ~AbstractExtItemAggregator() override; |  | ||||||
|     // methods |     // methods | ||||||
|     void copyItem(); |     void copyItem(QListWidget *_widget); | ||||||
|     template <class T> void createItem() |     template <class T> void createItem(QListWidget *_widget) | ||||||
|     { |     { | ||||||
|         QString fileName = getName(); |         auto fileName = getName(); | ||||||
|         int number = uniqNumber(); |         auto number = uniqNumber(); | ||||||
|         QString dir = QString("%1/awesomewidgets/%2") |         auto dir = QString("%1/awesomewidgets/%2") | ||||||
|                           .arg(QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation)) |                        .arg(QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation), m_type); | ||||||
|                           .arg(m_type); |  | ||||||
|         if (fileName.isEmpty()) { |         if (fileName.isEmpty()) { | ||||||
|             qCWarning(LOG_LIB) << "Nothing to create"; |             qCWarning(LOG_LIB) << "Nothing to create"; | ||||||
|             return; |             return; | ||||||
|         } |         } | ||||||
|         QString filePath = QString("%1/%2").arg(dir).arg(fileName); |         auto filePath = QString("%1/%2").arg(dir, fileName); | ||||||
|  |  | ||||||
|         T *newItem = new T(this, filePath); |         auto newItem = new T(this, filePath); | ||||||
|         newItem->setNumber(number); |         newItem->setNumber(number); | ||||||
|         if (newItem->showConfiguration(configArgs()) == 1) { |         if (newItem->showConfiguration(nullptr, configArgs()) == 1) { | ||||||
|             initItems(); |             initItems(); | ||||||
|             repaintList(); |             repaintList(_widget); | ||||||
|         } |         } | ||||||
|     }; |     }; | ||||||
|     void deleteItem(); |     void deleteItem(QListWidget *_widget); | ||||||
|     void editItem(); |     void editItem(QListWidget *_widget); | ||||||
|  |     [[nodiscard]] int exec(); | ||||||
|     QString getName(); |     QString getName(); | ||||||
|     virtual void initItems() = 0; |     virtual void initItems() = 0; | ||||||
|     [[nodiscard]] AbstractExtItem *itemFromWidget() const; |     [[nodiscard]] AbstractExtItem *itemFromWidget(QListWidget *_widget) const; | ||||||
|     void repaintList() const; |     void repaintList(QListWidget *_widget) const; | ||||||
|     [[nodiscard]] int uniqNumber() const; |     [[nodiscard]] int uniqNumber() const; | ||||||
|     // get methods |     // get methods | ||||||
|     [[nodiscard]] QVariant configArgs() const; |     [[nodiscard]] QVariant configArgs() const; | ||||||
| @ -78,22 +72,10 @@ public: | |||||||
|     // set methods |     // set methods | ||||||
|     void setConfigArgs(const QVariant &_configArgs); |     void setConfigArgs(const QVariant &_configArgs); | ||||||
|  |  | ||||||
| private slots: |  | ||||||
|     void editItemActivated(QListWidgetItem *); |  | ||||||
|     void editItemButtonPressed(QAbstractButton *_button); |  | ||||||
|  |  | ||||||
| private: | private: | ||||||
|     // ui |  | ||||||
|     Ui::AbstractExtItemAggregator *ui = nullptr; |  | ||||||
|     QPushButton *copyButton = nullptr; |  | ||||||
|     QPushButton *createButton = nullptr; |  | ||||||
|     QPushButton *deleteButton = nullptr; |  | ||||||
|     // properties |     // properties | ||||||
|     QVariant m_configArgs; |     QVariant m_configArgs; | ||||||
|     QString m_type; |     QString m_type; | ||||||
|     // ui methods |     // ui methods | ||||||
|     virtual void doCreateItem() = 0; |     virtual void doCreateItem(QListWidget *_widget) = 0; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| #endif /* ABSTRACTEXTITEMAGGREGATOR_H */ |  | ||||||
|  | |||||||
| @ -15,8 +15,7 @@ | |||||||
|  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * |  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * | ||||||
|  ***************************************************************************/ |  ***************************************************************************/ | ||||||
|  |  | ||||||
| #ifndef ABSTRACTQUOTESPROVIDER_H | #pragma once | ||||||
| #define ABSTRACTQUOTESPROVIDER_H |  | ||||||
|  |  | ||||||
| #include <QObject> | #include <QObject> | ||||||
| #include <QUrl> | #include <QUrl> | ||||||
| @ -40,6 +39,3 @@ public: | |||||||
|     }; |     }; | ||||||
|     [[nodiscard]] virtual QUrl url() const = 0; |     [[nodiscard]] virtual QUrl url() const = 0; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| #endif /* ABSTRACTQUOTESPROVIDER_H */ |  | ||||||
|  | |||||||
| @ -15,8 +15,7 @@ | |||||||
|  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * |  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * | ||||||
|  ***************************************************************************/ |  ***************************************************************************/ | ||||||
|  |  | ||||||
| #ifndef ABSTRACTWEATHERPROVIDER_H | #pragma once | ||||||
| #define ABSTRACTWEATHERPROVIDER_H |  | ||||||
|  |  | ||||||
| #include <QObject> | #include <QObject> | ||||||
| #include <QUrl> | #include <QUrl> | ||||||
| @ -40,6 +39,3 @@ public: | |||||||
|     }; |     }; | ||||||
|     [[nodiscard]] virtual QUrl url() const = 0; |     [[nodiscard]] virtual QUrl url() const = 0; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| #endif /* ABSTRACTWEATHERPROVIDER_H */ |  | ||||||
|  | |||||||
| @ -22,19 +22,13 @@ | |||||||
| #include "awdebug.h" | #include "awdebug.h" | ||||||
|  |  | ||||||
|  |  | ||||||
| AWAbstractFormatter::AWAbstractFormatter(QWidget *_parent, const QString &_filePath) | AWAbstractFormatter::AWAbstractFormatter(QObject *_parent, const QString &_filePath) | ||||||
|     : AbstractExtItem(_parent, _filePath) |     : AbstractExtItem(_parent, _filePath) | ||||||
| { | { | ||||||
|     qCDebug(LOG_LIB) << __PRETTY_FUNCTION__; |     qCDebug(LOG_LIB) << __PRETTY_FUNCTION__; | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| AWAbstractFormatter::~AWAbstractFormatter() |  | ||||||
| { |  | ||||||
|     qCDebug(LOG_LIB) << __PRETTY_FUNCTION__; |  | ||||||
| } |  | ||||||
|  |  | ||||||
|  |  | ||||||
| void AWAbstractFormatter::copyDefaults(AbstractExtItem *_other) const | void AWAbstractFormatter::copyDefaults(AbstractExtItem *_other) const | ||||||
| { | { | ||||||
|     AbstractExtItem::copyDefaults(_other); |     AbstractExtItem::copyDefaults(_other); | ||||||
| @ -45,7 +39,7 @@ void AWAbstractFormatter::copyDefaults(AbstractExtItem *_other) const | |||||||
|  |  | ||||||
| QString AWAbstractFormatter::uniq() const | QString AWAbstractFormatter::uniq() const | ||||||
| { | { | ||||||
|     return QString("%1(%2)").arg(name()).arg(strType()); |     return QString("%1(%2)").arg(name(), strType()); | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | |||||||
| @ -15,8 +15,9 @@ | |||||||
|  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * |  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * | ||||||
|  ***************************************************************************/ |  ***************************************************************************/ | ||||||
|  |  | ||||||
| #ifndef AWABSTRACTFORMATTER_H | #pragma once | ||||||
| #define AWABSTRACTFORMATTER_H |  | ||||||
|  | #include <QRegularExpression> | ||||||
|  |  | ||||||
| #include "abstractextitem.h" | #include "abstractextitem.h" | ||||||
|  |  | ||||||
| @ -30,8 +31,8 @@ class AWAbstractFormatter : public AbstractExtItem | |||||||
| public: | public: | ||||||
|     enum class FormatterClass { DateTime, Float, List, Script, String, NoFormat, Json }; |     enum class FormatterClass { DateTime, Float, List, Script, String, NoFormat, Json }; | ||||||
|  |  | ||||||
|     explicit AWAbstractFormatter(QWidget *_parent = nullptr, const QString &_filePath = ""); |     explicit AWAbstractFormatter(QObject *_parent = nullptr, const QString &_filePath = ""); | ||||||
|     ~AWAbstractFormatter() override; |     ~AWAbstractFormatter() override = default; | ||||||
|     [[nodiscard]] virtual QString convert(const QVariant &_value) const = 0; |     [[nodiscard]] virtual QString convert(const QVariant &_value) const = 0; | ||||||
|     void copyDefaults(AbstractExtItem *_other) const override; |     void copyDefaults(AbstractExtItem *_other) const override; | ||||||
|     [[nodiscard]] QString uniq() const override; |     [[nodiscard]] QString uniq() const override; | ||||||
| @ -50,6 +51,3 @@ private: | |||||||
|     // properties |     // properties | ||||||
|     FormatterClass m_type = FormatterClass::NoFormat; |     FormatterClass m_type = FormatterClass::NoFormat; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| #endif /* AWABSTRACTFORMATTER_H */ |  | ||||||
|  | |||||||
| @ -15,7 +15,6 @@ | |||||||
|  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * |  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * | ||||||
|  ***************************************************************************/ |  ***************************************************************************/ | ||||||
|  |  | ||||||
|  |  | ||||||
| #include "awdatetimeformatter.h" | #include "awdatetimeformatter.h" | ||||||
| #include "ui_awdatetimeformatter.h" | #include "ui_awdatetimeformatter.h" | ||||||
|  |  | ||||||
| @ -27,24 +26,13 @@ | |||||||
| #include "awdebug.h" | #include "awdebug.h" | ||||||
|  |  | ||||||
|  |  | ||||||
| AWDateTimeFormatter::AWDateTimeFormatter(QWidget *_parent, const QString &_filePath) | AWDateTimeFormatter::AWDateTimeFormatter(QObject *_parent, const QString &_filePath) | ||||||
|     : AWAbstractFormatter(_parent, _filePath) |     : AWAbstractFormatter(_parent, _filePath) | ||||||
|     , ui(new Ui::AWDateTimeFormatter) |  | ||||||
| { | { | ||||||
|     qCDebug(LOG_LIB) << __PRETTY_FUNCTION__; |     qCDebug(LOG_LIB) << __PRETTY_FUNCTION__; | ||||||
|  |  | ||||||
|     if (!_filePath.isEmpty()) |     if (!_filePath.isEmpty()) | ||||||
|         AWDateTimeFormatter::readConfiguration(); |         AWDateTimeFormatter::readConfiguration(); | ||||||
|     ui->setupUi(this); |  | ||||||
|     AWDateTimeFormatter::translate(); |  | ||||||
| } |  | ||||||
|  |  | ||||||
|  |  | ||||||
| AWDateTimeFormatter::~AWDateTimeFormatter() |  | ||||||
| { |  | ||||||
|     qCDebug(LOG_LIB) << __PRETTY_FUNCTION__; |  | ||||||
|  |  | ||||||
|     delete ui; |  | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| @ -60,7 +48,7 @@ AWDateTimeFormatter *AWDateTimeFormatter::copy(const QString &_fileName, const i | |||||||
| { | { | ||||||
|     qCDebug(LOG_LIB) << "File" << _fileName << "with number" << _number; |     qCDebug(LOG_LIB) << "File" << _fileName << "with number" << _number; | ||||||
|  |  | ||||||
|     auto *item = new AWDateTimeFormatter(dynamic_cast<QWidget *>(parent()), _fileName); |     auto item = new AWDateTimeFormatter(parent(), _fileName); | ||||||
|     AWAbstractFormatter::copyDefaults(item); |     AWAbstractFormatter::copyDefaults(item); | ||||||
|     item->setFormat(format()); |     item->setFormat(format()); | ||||||
|     item->setTranslateString(translateString()); |     item->setTranslateString(translateString()); | ||||||
| @ -114,27 +102,36 @@ void AWDateTimeFormatter::readConfiguration() | |||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| int AWDateTimeFormatter::showConfiguration(const QVariant &_args) | int AWDateTimeFormatter::showConfiguration(QWidget *_parent, const QVariant &_args) | ||||||
| { | { | ||||||
|     Q_UNUSED(_args) |     Q_UNUSED(_args) | ||||||
|  |  | ||||||
|  |     auto dialog = new QDialog(_parent); | ||||||
|  |     auto ui = new Ui::AWDateTimeFormatter(); | ||||||
|  |     ui->setupUi(dialog); | ||||||
|  |     translate(ui); | ||||||
|  |  | ||||||
|     ui->lineEdit_name->setText(name()); |     ui->lineEdit_name->setText(name()); | ||||||
|     ui->lineEdit_comment->setText(comment()); |     ui->lineEdit_comment->setText(comment()); | ||||||
|     ui->label_typeValue->setText("DateTime"); |     ui->label_typeValue->setText("DateTime"); | ||||||
|     ui->lineEdit_format->setText(format()); |     ui->lineEdit_format->setText(format()); | ||||||
|     ui->checkBox_translate->setCheckState(translateString() ? Qt::Checked : Qt::Unchecked); |     ui->checkBox_translate->setCheckState(translateString() ? Qt::Checked : Qt::Unchecked); | ||||||
|  |  | ||||||
|     int ret = exec(); |     auto ret = dialog->exec(); | ||||||
|     if (ret != 1) |     if (ret == 1) { | ||||||
|         return ret; |         setName(ui->lineEdit_name->text()); | ||||||
|     setName(ui->lineEdit_name->text()); |         setComment(ui->lineEdit_comment->text()); | ||||||
|     setComment(ui->lineEdit_comment->text()); |         setApiVersion(AW_FORMATTER_API); | ||||||
|     setApiVersion(AW_FORMATTER_API); |         setStrType(ui->label_typeValue->text()); | ||||||
|     setStrType(ui->label_typeValue->text()); |         setFormat(ui->lineEdit_format->text()); | ||||||
|     setFormat(ui->lineEdit_format->text()); |         setTranslateString(ui->checkBox_translate->checkState() == Qt::Checked); | ||||||
|     setTranslateString(ui->checkBox_translate->checkState() == Qt::Checked); |  | ||||||
|  |         writeConfiguration(); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     dialog->deleteLater(); | ||||||
|  |     delete ui; | ||||||
|  |  | ||||||
|     writeConfiguration(); |  | ||||||
|     return ret; |     return ret; | ||||||
| } | } | ||||||
|  |  | ||||||
| @ -160,9 +157,10 @@ void AWDateTimeFormatter::initLocale() | |||||||
|     m_locale = m_translate ? QLocale::system() : QLocale::c(); |     m_locale = m_translate ? QLocale::system() : QLocale::c(); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | void AWDateTimeFormatter::translate(void *_ui) | ||||||
| void AWDateTimeFormatter::translate() |  | ||||||
| { | { | ||||||
|  |     auto ui = reinterpret_cast<Ui::AWDateTimeFormatter *>(_ui); | ||||||
|  |  | ||||||
|     ui->label_name->setText(i18n("Name")); |     ui->label_name->setText(i18n("Name")); | ||||||
|     ui->label_comment->setText(i18n("Comment")); |     ui->label_comment->setText(i18n("Comment")); | ||||||
|     ui->label_type->setText(i18n("Type")); |     ui->label_type->setText(i18n("Type")); | ||||||
|  | |||||||
| @ -15,19 +15,13 @@ | |||||||
|  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * |  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * | ||||||
|  ***************************************************************************/ |  ***************************************************************************/ | ||||||
|  |  | ||||||
| #ifndef AWDATETIMEFORMATTER_H | #pragma once | ||||||
| #define AWDATETIMEFORMATTER_H |  | ||||||
|  |  | ||||||
| #include <QLocale> | #include <QLocale> | ||||||
|  |  | ||||||
| #include "awabstractformatter.h" | #include "awabstractformatter.h" | ||||||
|  |  | ||||||
|  |  | ||||||
| namespace Ui |  | ||||||
| { |  | ||||||
| class AWDateTimeFormatter; |  | ||||||
| } |  | ||||||
|  |  | ||||||
| class AWDateTimeFormatter : public AWAbstractFormatter | class AWDateTimeFormatter : public AWAbstractFormatter | ||||||
| { | { | ||||||
|     Q_OBJECT |     Q_OBJECT | ||||||
| @ -35,8 +29,7 @@ class AWDateTimeFormatter : public AWAbstractFormatter | |||||||
|     Q_PROPERTY(bool translateString READ translateString WRITE setTranslateString) |     Q_PROPERTY(bool translateString READ translateString WRITE setTranslateString) | ||||||
|  |  | ||||||
| public: | public: | ||||||
|     explicit AWDateTimeFormatter(QWidget *_parent = nullptr, const QString &_filePath = ""); |     explicit AWDateTimeFormatter(QObject *_parent = nullptr, const QString &_filePath = ""); | ||||||
|     ~AWDateTimeFormatter() override; |  | ||||||
|     [[nodiscard]] QString convert(const QVariant &_value) const override; |     [[nodiscard]] QString convert(const QVariant &_value) const override; | ||||||
|     AWDateTimeFormatter *copy(const QString &_fileName, int _number) override; |     AWDateTimeFormatter *copy(const QString &_fileName, int _number) override; | ||||||
|     // properties |     // properties | ||||||
| @ -47,18 +40,14 @@ public: | |||||||
|  |  | ||||||
| public slots: | public slots: | ||||||
|     void readConfiguration() override; |     void readConfiguration() override; | ||||||
|     int showConfiguration(const QVariant &_args) override; |     int showConfiguration(QWidget *_parent, const QVariant &_args) override; | ||||||
|     void writeConfiguration() const override; |     void writeConfiguration() const override; | ||||||
|  |  | ||||||
| private: | private: | ||||||
|     Ui::AWDateTimeFormatter *ui = nullptr; |  | ||||||
|     void initLocale(); |     void initLocale(); | ||||||
|     void translate() override; |     void translate(void *_ui) override; | ||||||
|     // properties |     // properties | ||||||
|     QLocale m_locale; |     QLocale m_locale; | ||||||
|     QString m_format = ""; |     QString m_format = ""; | ||||||
|     bool m_translate = true; |     bool m_translate = true; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| #endif /* AWDATETIMEFORMATTER_H */ |  | ||||||
|  | |||||||
| @ -5,120 +5,120 @@ | |||||||
|     "image": { |     "image": { | ||||||
|         "__comment": "should be described as html image with full path inside", |         "__comment": "should be described as html image with full path inside", | ||||||
|  |  | ||||||
|         "default": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/3200.gif\">", |         "default": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/3200.gif\">", | ||||||
|  |  | ||||||
|         "800": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/01d.png\">", |         "800": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/01d.png\">", | ||||||
|  |  | ||||||
|         "801": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/02d.png\">", |         "801": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/02d.png\">", | ||||||
|  |  | ||||||
|         "802": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/03d.png\">", |         "802": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/03d.png\">", | ||||||
|         "803": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/03d.png\">", |         "803": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/03d.png\">", | ||||||
|  |  | ||||||
|         "804": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/04d.png\">", |                 "804": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/04d.png\">", | ||||||
|  |  | ||||||
|         "300": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/09d.png\">", |         "300": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/09d.png\">", | ||||||
|         "301": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/09d.png\">", |         "301": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/09d.png\">", | ||||||
|         "302": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/09d.png\">", |         "302": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/09d.png\">", | ||||||
|         "310": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/09d.png\">", |         "310": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/09d.png\">", | ||||||
|         "311": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/09d.png\">", |         "311": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/09d.png\">", | ||||||
|         "312": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/09d.png\">", |         "312": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/09d.png\">", | ||||||
|         "313": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/09d.png\">", |         "313": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/09d.png\">", | ||||||
|         "314": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/09d.png\">", |         "314": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/09d.png\">", | ||||||
|         "321": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/09d.png\">", |         "321": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/09d.png\">", | ||||||
|         "520": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/09d.png\">", |         "520": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/09d.png\">", | ||||||
|         "521": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/09d.png\">", |         "521": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/09d.png\">", | ||||||
|         "522": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/09d.png\">", |         "522": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/09d.png\">", | ||||||
|         "531": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/09d.png\">", |         "531": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/09d.png\">", | ||||||
|  |  | ||||||
|         "500": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/10d.png\">", |         "500": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/10d.png\">", | ||||||
|         "501": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/10d.png\">", |         "501": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/10d.png\">", | ||||||
|         "502": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/10d.png\">", |         "502": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/10d.png\">", | ||||||
|         "503": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/10d.png\">", |         "503": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/10d.png\">", | ||||||
|         "504": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/10d.png\">", |         "504": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/10d.png\">", | ||||||
|  |  | ||||||
|         "200": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/11d.png\">", |         "200": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/11d.png\">", | ||||||
|         "201": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/11d.png\">", |         "201": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/11d.png\">", | ||||||
|         "202": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/11d.png\">", |         "202": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/11d.png\">", | ||||||
|         "210": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/11d.png\">", |         "210": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/11d.png\">", | ||||||
|         "211": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/11d.png\">", |         "211": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/11d.png\">", | ||||||
|         "212": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/11d.png\">", |         "212": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/11d.png\">", | ||||||
|         "221": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/11d.png\">", |         "221": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/11d.png\">", | ||||||
|         "230": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/11d.png\">", |         "230": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/11d.png\">", | ||||||
|         "231": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/11d.png\">", |         "231": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/11d.png\">", | ||||||
|         "232": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/11d.png\">", |         "232": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/11d.png\">", | ||||||
|  |  | ||||||
|         "511": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/13d.png\">", |         "511": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/13d.png\">", | ||||||
|         "600": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/13d.png\">", |         "600": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/13d.png\">", | ||||||
|         "601": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/13d.png\">", |         "601": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/13d.png\">", | ||||||
|         "602": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/13d.png\">", |         "602": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/13d.png\">", | ||||||
|         "611": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/13d.png\">", |         "611": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/13d.png\">", | ||||||
|         "612": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/13d.png\">", |         "612": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/13d.png\">", | ||||||
|         "615": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/13d.png\">", |         "615": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/13d.png\">", | ||||||
|         "616": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/13d.png\">", |         "616": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/13d.png\">", | ||||||
|         "620": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/13d.png\">", |         "620": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/13d.png\">", | ||||||
|         "621": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/13d.png\">", |         "621": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/13d.png\">", | ||||||
|         "622": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/13d.png\">", |         "622": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/13d.png\">", | ||||||
|  |  | ||||||
|         "701": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/50d.png\">", |         "701": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/50d.png\">", | ||||||
|         "711": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/50d.png\">", |         "711": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/50d.png\">", | ||||||
|         "721": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/50d.png\">", |         "721": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/50d.png\">", | ||||||
|         "731": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/50d.png\">", |         "731": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/50d.png\">", | ||||||
|         "741": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/50d.png\">", |         "741": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/50d.png\">", | ||||||
|         "751": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/50d.png\">", |         "751": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/50d.png\">", | ||||||
|         "761": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/50d.png\">", |         "761": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/50d.png\">", | ||||||
|         "762": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/50d.png\">", |         "762": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/50d.png\">", | ||||||
|         "771": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/50d.png\">", |         "771": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/50d.png\">", | ||||||
|         "781": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/50d.png\">", |         "781": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/50d.png\">", | ||||||
|  |  | ||||||
|         "0": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/0.gif\">", |         "0": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/0.gif\">", | ||||||
|         "1": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/1.gif\">", |         "1": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/1.gif\">", | ||||||
|         "2": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/2.gif\">", |         "2": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/2.gif\">", | ||||||
|         "3": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/3.gif\">", |         "3": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/3.gif\">", | ||||||
|         "4": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/4.gif\">", |         "4": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/4.gif\">", | ||||||
|         "5": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/5.gif\">", |         "5": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/5.gif\">", | ||||||
|         "6": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/6.gif\">", |         "6": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/6.gif\">", | ||||||
|         "7": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/7.gif\">", |         "7": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/7.gif\">", | ||||||
|         "8": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/8.gif\">", |         "8": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/8.gif\">", | ||||||
|         "9": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/9.gif\">", |         "9": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/9.gif\">", | ||||||
|         "10": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/10.gif\">", |         "10": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/10.gif\">", | ||||||
|         "11": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/11.gif\">", |         "11": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/11.gif\">", | ||||||
|         "12": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/12.gif\">", |         "12": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/12.gif\">", | ||||||
|         "13": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/13.gif\">", |         "13": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/13.gif\">", | ||||||
|         "14": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/14.gif\">", |         "14": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/14.gif\">", | ||||||
|         "15": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/15.gif\">", |         "15": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/15.gif\">", | ||||||
|         "16": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/16.gif\">", |         "16": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/16.gif\">", | ||||||
|         "17": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/17.gif\">", |         "17": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/17.gif\">", | ||||||
|         "18": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/18.gif\">", |         "18": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/18.gif\">", | ||||||
|         "19": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/19.gif\">", |         "19": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/19.gif\">", | ||||||
|         "20": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/20.gif\">", |         "20": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/20.gif\">", | ||||||
|         "21": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/21.gif\">", |         "21": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/21.gif\">", | ||||||
|         "22": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/22.gif\">", |         "22": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/22.gif\">", | ||||||
|         "23": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/23.gif\">", |         "23": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/23.gif\">", | ||||||
|         "24": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/24.gif\">", |         "24": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/24.gif\">", | ||||||
|         "25": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/25.gif\">", |         "25": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/25.gif\">", | ||||||
|         "26": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/26.gif\">", |         "26": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/26.gif\">", | ||||||
|         "27": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/27.gif\">", |         "27": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/27.gif\">", | ||||||
|         "28": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/28.gif\">", |         "28": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/28.gif\">", | ||||||
|         "29": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/29.gif\">", |         "29": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/29.gif\">", | ||||||
|         "30": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/30.gif\">", |         "30": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/30.gif\">", | ||||||
|         "31": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/31.gif\">", |         "31": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/31.gif\">", | ||||||
|         "32": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/32.gif\">", |         "32": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/32.gif\">", | ||||||
|         "33": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/33.gif\">", |         "33": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/33.gif\">", | ||||||
|         "34": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/34.gif\">", |         "34": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/34.gif\">", | ||||||
|         "35": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/35.gif\">", |         "35": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/35.gif\">", | ||||||
|         "36": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/36.gif\">", |         "36": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/36.gif\">", | ||||||
|         "37": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/37.gif\">", |         "37": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/37.gif\">", | ||||||
|         "38": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/38.gif\">", |         "38": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/38.gif\">", | ||||||
|         "39": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/39.gif\">", |         "39": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/39.gif\">", | ||||||
|         "40": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/40.gif\">", |         "40": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/40.gif\">", | ||||||
|         "41": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/41.gif\">", |         "41": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/41.gif\">", | ||||||
|         "42": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/42.gif\">", |         "42": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/42.gif\">", | ||||||
|         "43": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/43.gif\">", |         "43": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/43.gif\">", | ||||||
|         "44": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/44.gif\">", |         "44": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/44.gif\">", | ||||||
|         "45": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/45.gif\">", |         "45": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/45.gif\">", | ||||||
|         "46": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/46.gif\">", |         "46": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/46.gif\">", | ||||||
|         "47": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/47.gif\">", |         "47": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/47.gif\">", | ||||||
|         "3200": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/3200.gif\">" |         "3200": "<img src=\"@KDE_INSTALL_FULL_DATADIR@/@PROJECT_NAME@/weather/3200.gif\">" | ||||||
|     }, |     }, | ||||||
|  |  | ||||||
|     "text": { |     "text": { | ||||||
|  | |||||||
| @ -15,7 +15,6 @@ | |||||||
|  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * |  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * | ||||||
|  ***************************************************************************/ |  ***************************************************************************/ | ||||||
|  |  | ||||||
|  |  | ||||||
| #include "awfloatformatter.h" | #include "awfloatformatter.h" | ||||||
| #include "ui_awfloatformatter.h" | #include "ui_awfloatformatter.h" | ||||||
|  |  | ||||||
| @ -26,24 +25,13 @@ | |||||||
| #include "awdebug.h" | #include "awdebug.h" | ||||||
|  |  | ||||||
|  |  | ||||||
| AWFloatFormatter::AWFloatFormatter(QWidget *_parent, const QString &_filePath) | AWFloatFormatter::AWFloatFormatter(QObject *_parent, const QString &_filePath) | ||||||
|     : AWAbstractFormatter(_parent, _filePath) |     : AWAbstractFormatter(_parent, _filePath) | ||||||
|     , ui(new Ui::AWFloatFormatter) |  | ||||||
| { | { | ||||||
|     qCDebug(LOG_LIB) << __PRETTY_FUNCTION__; |     qCDebug(LOG_LIB) << __PRETTY_FUNCTION__; | ||||||
|  |  | ||||||
|     if (!_filePath.isEmpty()) |     if (!_filePath.isEmpty()) | ||||||
|         AWFloatFormatter::readConfiguration(); |         AWFloatFormatter::readConfiguration(); | ||||||
|     ui->setupUi(this); |  | ||||||
|     AWFloatFormatter::translate(); |  | ||||||
| } |  | ||||||
|  |  | ||||||
|  |  | ||||||
| AWFloatFormatter::~AWFloatFormatter() |  | ||||||
| { |  | ||||||
|     qCDebug(LOG_LIB) << __PRETTY_FUNCTION__; |  | ||||||
|  |  | ||||||
|     delete ui; |  | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| @ -51,7 +39,7 @@ QString AWFloatFormatter::convert(const QVariant &_value) const | |||||||
| { | { | ||||||
|     qCDebug(LOG_LIB) << "Convert value" << _value; |     qCDebug(LOG_LIB) << "Convert value" << _value; | ||||||
|  |  | ||||||
|     QString output |     auto output | ||||||
|         = QString("%1").arg(_value.toDouble() * multiplier() + summand(), count(), format(), precision(), fillChar()); |         = QString("%1").arg(_value.toDouble() * multiplier() + summand(), count(), format(), precision(), fillChar()); | ||||||
|     if (forceWidth()) |     if (forceWidth()) | ||||||
|         output = output.left(count()); |         output = output.left(count()); | ||||||
| @ -64,7 +52,7 @@ AWFloatFormatter *AWFloatFormatter::copy(const QString &_fileName, const int _nu | |||||||
| { | { | ||||||
|     qCDebug(LOG_LIB) << "File" << _fileName << "with number" << _number; |     qCDebug(LOG_LIB) << "File" << _fileName << "with number" << _number; | ||||||
|  |  | ||||||
|     auto *item = new AWFloatFormatter(dynamic_cast<QWidget *>(parent()), _fileName); |     auto item = new AWFloatFormatter(parent(), _fileName); | ||||||
|     AWAbstractFormatter::copyDefaults(item); |     AWAbstractFormatter::copyDefaults(item); | ||||||
|     item->setCount(count()); |     item->setCount(count()); | ||||||
|     item->setFormat(format()); |     item->setFormat(format()); | ||||||
| @ -202,10 +190,15 @@ void AWFloatFormatter::readConfiguration() | |||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| int AWFloatFormatter::showConfiguration(const QVariant &_args) | int AWFloatFormatter::showConfiguration(QWidget *_parent, const QVariant &_args) | ||||||
| { | { | ||||||
|     Q_UNUSED(_args) |     Q_UNUSED(_args) | ||||||
|  |  | ||||||
|  |     auto dialog = new QDialog(_parent); | ||||||
|  |     auto ui = new Ui::AWFloatFormatter(); | ||||||
|  |     ui->setupUi(dialog); | ||||||
|  |     translate(ui); | ||||||
|  |  | ||||||
|     ui->lineEdit_name->setText(name()); |     ui->lineEdit_name->setText(name()); | ||||||
|     ui->lineEdit_comment->setText(comment()); |     ui->lineEdit_comment->setText(comment()); | ||||||
|     ui->label_typeValue->setText("Float"); |     ui->label_typeValue->setText("Float"); | ||||||
| @ -217,22 +210,26 @@ int AWFloatFormatter::showConfiguration(const QVariant &_args) | |||||||
|     ui->doubleSpinBox_multiplier->setValue(multiplier()); |     ui->doubleSpinBox_multiplier->setValue(multiplier()); | ||||||
|     ui->doubleSpinBox_summand->setValue(summand()); |     ui->doubleSpinBox_summand->setValue(summand()); | ||||||
|  |  | ||||||
|     int ret = exec(); |     auto ret = dialog->exec(); | ||||||
|     if (ret != 1) |     if (ret == 1) { | ||||||
|         return ret; |         setName(ui->lineEdit_name->text()); | ||||||
|     setName(ui->lineEdit_name->text()); |         setComment(ui->lineEdit_comment->text()); | ||||||
|     setComment(ui->lineEdit_comment->text()); |         setApiVersion(AW_FORMATTER_API); | ||||||
|     setApiVersion(AW_FORMATTER_API); |         setStrType(ui->label_typeValue->text()); | ||||||
|     setStrType(ui->label_typeValue->text()); |         setFormat(ui->comboBox_format->currentText().at(0).toLatin1()); | ||||||
|     setFormat(ui->comboBox_format->currentText().at(0).toLatin1()); |         setPrecision(ui->spinBox_precision->value()); | ||||||
|     setPrecision(ui->spinBox_precision->value()); |         setCount(ui->spinBox_width->value()); | ||||||
|     setCount(ui->spinBox_width->value()); |         setFillChar(ui->lineEdit_fill->text().at(0)); | ||||||
|     setFillChar(ui->lineEdit_fill->text().at(0)); |         setForceWidth(ui->checkBox_forceWidth->checkState() == Qt::Checked); | ||||||
|     setForceWidth(ui->checkBox_forceWidth->checkState() == Qt::Checked); |         setMultiplier(ui->doubleSpinBox_multiplier->value()); | ||||||
|     setMultiplier(ui->doubleSpinBox_multiplier->value()); |         setSummand(ui->doubleSpinBox_summand->value()); | ||||||
|     setSummand(ui->doubleSpinBox_summand->value()); |  | ||||||
|  |         writeConfiguration(); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     dialog->deleteLater(); | ||||||
|  |     delete ui; | ||||||
|  |  | ||||||
|     writeConfiguration(); |  | ||||||
|     return ret; |     return ret; | ||||||
| } | } | ||||||
|  |  | ||||||
| @ -258,8 +255,10 @@ void AWFloatFormatter::writeConfiguration() const | |||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| void AWFloatFormatter::translate() | void AWFloatFormatter::translate(void *_ui) | ||||||
| { | { | ||||||
|  |     auto ui = reinterpret_cast<Ui::AWFloatFormatter *>(_ui); | ||||||
|  |  | ||||||
|     ui->label_name->setText(i18n("Name")); |     ui->label_name->setText(i18n("Name")); | ||||||
|     ui->label_comment->setText(i18n("Comment")); |     ui->label_comment->setText(i18n("Comment")); | ||||||
|     ui->label_type->setText(i18n("Type")); |     ui->label_type->setText(i18n("Type")); | ||||||
|  | |||||||
| @ -15,17 +15,11 @@ | |||||||
|  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * |  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * | ||||||
|  ***************************************************************************/ |  ***************************************************************************/ | ||||||
|  |  | ||||||
| #ifndef AWFLOATFORMATTER_H | #pragma once | ||||||
| #define AWFLOATFORMATTER_H |  | ||||||
|  |  | ||||||
| #include "awabstractformatter.h" | #include "awabstractformatter.h" | ||||||
|  |  | ||||||
|  |  | ||||||
| namespace Ui |  | ||||||
| { |  | ||||||
| class AWFloatFormatter; |  | ||||||
| } |  | ||||||
|  |  | ||||||
| class AWFloatFormatter : public AWAbstractFormatter | class AWFloatFormatter : public AWAbstractFormatter | ||||||
| { | { | ||||||
|     Q_OBJECT |     Q_OBJECT | ||||||
| @ -38,8 +32,7 @@ class AWFloatFormatter : public AWAbstractFormatter | |||||||
|     Q_PROPERTY(double summand READ summand WRITE setSummand) |     Q_PROPERTY(double summand READ summand WRITE setSummand) | ||||||
|  |  | ||||||
| public: | public: | ||||||
|     explicit AWFloatFormatter(QWidget *_parent = nullptr, const QString &_filePath = ""); |     explicit AWFloatFormatter(QObject *_parent = nullptr, const QString &_filePath = ""); | ||||||
|     ~AWFloatFormatter() override; |  | ||||||
|     [[nodiscard]] QString convert(const QVariant &_value) const override; |     [[nodiscard]] QString convert(const QVariant &_value) const override; | ||||||
|     AWFloatFormatter *copy(const QString &_fileName, int _number) override; |     AWFloatFormatter *copy(const QString &_fileName, int _number) override; | ||||||
|     // properties |     // properties | ||||||
| @ -60,12 +53,11 @@ public: | |||||||
|  |  | ||||||
| public slots: | public slots: | ||||||
|     void readConfiguration() override; |     void readConfiguration() override; | ||||||
|     int showConfiguration(const QVariant &_args) override; |     int showConfiguration(QWidget *_parent, const QVariant &_args) override; | ||||||
|     void writeConfiguration() const override; |     void writeConfiguration() const override; | ||||||
|  |  | ||||||
| private: | private: | ||||||
|     Ui::AWFloatFormatter *ui = nullptr; |     void translate(void *_ui) override; | ||||||
|     void translate() override; |  | ||||||
|     // properties |     // properties | ||||||
|     int m_count = 0; |     int m_count = 0; | ||||||
|     QChar m_fillChar = QChar(); |     QChar m_fillChar = QChar(); | ||||||
| @ -75,6 +67,3 @@ private: | |||||||
|     int m_precision = -1; |     int m_precision = -1; | ||||||
|     double m_summand = 0.0; |     double m_summand = 0.0; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| #endif /* AWFLOATFORMATTER_H */ |  | ||||||
|  | |||||||
| @ -15,7 +15,6 @@ | |||||||
|  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * |  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * | ||||||
|  ***************************************************************************/ |  ***************************************************************************/ | ||||||
|  |  | ||||||
|  |  | ||||||
| #include "awjsonformatter.h" | #include "awjsonformatter.h" | ||||||
| #include "ui_awjsonformatter.h" | #include "ui_awjsonformatter.h" | ||||||
|  |  | ||||||
| @ -27,24 +26,13 @@ | |||||||
| #include "awdebug.h" | #include "awdebug.h" | ||||||
|  |  | ||||||
|  |  | ||||||
| AWJsonFormatter::AWJsonFormatter(QWidget *_parent, const QString &_filePath) | AWJsonFormatter::AWJsonFormatter(QObject *_parent, const QString &_filePath) | ||||||
|     : AWAbstractFormatter(_parent, _filePath) |     : AWAbstractFormatter(_parent, _filePath) | ||||||
|     , ui(new Ui::AWJsonFormatter) |  | ||||||
| { | { | ||||||
|     qCDebug(LOG_LIB) << __PRETTY_FUNCTION__; |     qCDebug(LOG_LIB) << __PRETTY_FUNCTION__; | ||||||
|  |  | ||||||
|     if (!_filePath.isEmpty()) |     if (!_filePath.isEmpty()) | ||||||
|         AWJsonFormatter::readConfiguration(); |         AWJsonFormatter::readConfiguration(); | ||||||
|     ui->setupUi(this); |  | ||||||
|     AWJsonFormatter::translate(); |  | ||||||
| } |  | ||||||
|  |  | ||||||
|  |  | ||||||
| AWJsonFormatter::~AWJsonFormatter() |  | ||||||
| { |  | ||||||
|     qCDebug(LOG_LIB) << __PRETTY_FUNCTION__; |  | ||||||
|  |  | ||||||
|     delete ui; |  | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| @ -53,8 +41,8 @@ QString AWJsonFormatter::convert(const QVariant &_value) const | |||||||
|     qCDebug(LOG_LIB) << "Convert value" << _value; |     qCDebug(LOG_LIB) << "Convert value" << _value; | ||||||
|  |  | ||||||
|     // check if _value is string and parse first if required |     // check if _value is string and parse first if required | ||||||
|     QJsonDocument json = _value.type() == QVariant::String ? QJsonDocument::fromJson(_value.toString().toUtf8()) |     QJsonDocument json = _value.userType() == QMetaType::QString ? QJsonDocument::fromJson(_value.toString().toUtf8()) | ||||||
|                                                            : QJsonDocument::fromVariant(_value); |                                                                  : QJsonDocument::fromVariant(_value); | ||||||
|     QVariant converted = json.toVariant(); |     QVariant converted = json.toVariant(); | ||||||
|     for (auto &element : m_splittedPath) |     for (auto &element : m_splittedPath) | ||||||
|         converted = getFromJson(converted, element); |         converted = getFromJson(converted, element); | ||||||
| @ -67,7 +55,7 @@ AWJsonFormatter *AWJsonFormatter::copy(const QString &_fileName, const int _numb | |||||||
| { | { | ||||||
|     qCDebug(LOG_LIB) << "File" << _fileName << "with number" << _number; |     qCDebug(LOG_LIB) << "File" << _fileName << "with number" << _number; | ||||||
|  |  | ||||||
|     auto *item = new AWJsonFormatter(dynamic_cast<QWidget *>(parent()), _fileName); |     auto item = new AWJsonFormatter(parent(), _fileName); | ||||||
|     AWAbstractFormatter::copyDefaults(item); |     AWAbstractFormatter::copyDefaults(item); | ||||||
|     item->setNumber(_number); |     item->setNumber(_number); | ||||||
|     item->setPath(path()); |     item->setPath(path()); | ||||||
| @ -105,25 +93,34 @@ void AWJsonFormatter::readConfiguration() | |||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| int AWJsonFormatter::showConfiguration(const QVariant &args) | int AWJsonFormatter::showConfiguration(QWidget *_parent, const QVariant &args) | ||||||
| { | { | ||||||
|     Q_UNUSED(args) |     Q_UNUSED(args) | ||||||
|  |  | ||||||
|  |     auto dialog = new QDialog(_parent); | ||||||
|  |     auto ui = new Ui::AWJsonFormatter(); | ||||||
|  |     ui->setupUi(dialog); | ||||||
|  |     translate(ui); | ||||||
|  |  | ||||||
|     ui->lineEdit_name->setText(name()); |     ui->lineEdit_name->setText(name()); | ||||||
|     ui->lineEdit_comment->setText(comment()); |     ui->lineEdit_comment->setText(comment()); | ||||||
|     ui->label_typeValue->setText("Json"); |     ui->label_typeValue->setText("Json"); | ||||||
|     ui->lineEdit_path->setText(path()); |     ui->lineEdit_path->setText(path()); | ||||||
|  |  | ||||||
|     int ret = exec(); |     auto ret = dialog->exec(); | ||||||
|     if (ret != 1) |     if (ret == 1) { | ||||||
|         return ret; |         setName(ui->lineEdit_name->text()); | ||||||
|     setName(ui->lineEdit_name->text()); |         setComment(ui->lineEdit_comment->text()); | ||||||
|     setComment(ui->lineEdit_comment->text()); |         setApiVersion(AW_FORMATTER_API); | ||||||
|     setApiVersion(AW_FORMATTER_API); |         setStrType(ui->label_typeValue->text()); | ||||||
|     setStrType(ui->label_typeValue->text()); |         setPath(ui->lineEdit_path->text()); | ||||||
|     setPath(ui->lineEdit_path->text()); |  | ||||||
|  |         writeConfiguration(); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     dialog->deleteLater(); | ||||||
|  |     delete ui; | ||||||
|  |  | ||||||
|     writeConfiguration(); |  | ||||||
|     return ret; |     return ret; | ||||||
| } | } | ||||||
|  |  | ||||||
| @ -147,9 +144,9 @@ QVariant AWJsonFormatter::getFromJson(const QVariant &_value, const QVariant &_e | |||||||
| { | { | ||||||
|     qCDebug(LOG_LIB) << "Looking for element" << _element << "in" << _value; |     qCDebug(LOG_LIB) << "Looking for element" << _element << "in" << _value; | ||||||
|  |  | ||||||
|     if (_element.type() == QVariant::String) { |     if (_element.userType() == QMetaType::QString) { | ||||||
|         return getFromMap(_value, _element.toString()); |         return getFromMap(_value, _element.toString()); | ||||||
|     } else if (_element.type() == QVariant::Int) { |     } else if (_element.userType() == QMetaType::Int) { | ||||||
|         return getFromList(_value, _element.toInt()); |         return getFromList(_value, _element.toInt()); | ||||||
|     } else { |     } else { | ||||||
|         qCWarning(LOG_LIB) << "Unknown type" << _element.typeName(); |         qCWarning(LOG_LIB) << "Unknown type" << _element.typeName(); | ||||||
| @ -187,8 +184,10 @@ void AWJsonFormatter::initPath() | |||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| void AWJsonFormatter::translate() | void AWJsonFormatter::translate(void *_ui) | ||||||
| { | { | ||||||
|  |     auto ui = reinterpret_cast<Ui::AWJsonFormatter *>(_ui); | ||||||
|  |  | ||||||
|     ui->label_name->setText(i18n("Name")); |     ui->label_name->setText(i18n("Name")); | ||||||
|     ui->label_comment->setText(i18n("Comment")); |     ui->label_comment->setText(i18n("Comment")); | ||||||
|     ui->label_type->setText(i18n("Type")); |     ui->label_type->setText(i18n("Type")); | ||||||
|  | |||||||
| @ -15,25 +15,18 @@ | |||||||
|  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * |  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * | ||||||
|  ***************************************************************************/ |  ***************************************************************************/ | ||||||
|  |  | ||||||
| #ifndef AWJSONFORMATTER_H | #pragma once | ||||||
| #define AWJSONFORMATTER_H |  | ||||||
|  |  | ||||||
| #include "awabstractformatter.h" | #include "awabstractformatter.h" | ||||||
|  |  | ||||||
|  |  | ||||||
| namespace Ui |  | ||||||
| { |  | ||||||
| class AWJsonFormatter; |  | ||||||
| } |  | ||||||
|  |  | ||||||
| class AWJsonFormatter : public AWAbstractFormatter | class AWJsonFormatter : public AWAbstractFormatter | ||||||
| { | { | ||||||
|     Q_OBJECT |     Q_OBJECT | ||||||
|     Q_PROPERTY(QString path READ path WRITE setPath) |     Q_PROPERTY(QString path READ path WRITE setPath) | ||||||
|  |  | ||||||
| public: | public: | ||||||
|     explicit AWJsonFormatter(QWidget *_parent = nullptr, const QString &_filePath = ""); |     explicit AWJsonFormatter(QObject *_parent = nullptr, const QString &_filePath = ""); | ||||||
|     ~AWJsonFormatter() override; |  | ||||||
|     [[nodiscard]] QString convert(const QVariant &_value) const override; |     [[nodiscard]] QString convert(const QVariant &_value) const override; | ||||||
|     AWJsonFormatter *copy(const QString &_fileName, int _number) override; |     AWJsonFormatter *copy(const QString &_fileName, int _number) override; | ||||||
|     // properties |     // properties | ||||||
| @ -42,20 +35,16 @@ public: | |||||||
|  |  | ||||||
| public slots: | public slots: | ||||||
|     void readConfiguration() override; |     void readConfiguration() override; | ||||||
|     int showConfiguration(const QVariant &_args) override; |     int showConfiguration(QWidget *_parent, const QVariant &_args) override; | ||||||
|     void writeConfiguration() const override; |     void writeConfiguration() const override; | ||||||
|  |  | ||||||
| private: | private: | ||||||
|     Ui::AWJsonFormatter *ui = nullptr; |  | ||||||
|     static QVariant getFromJson(const QVariant &_value, const QVariant &_element); |     static QVariant getFromJson(const QVariant &_value, const QVariant &_element); | ||||||
|     static QVariant getFromList(const QVariant &_value, int _index); |     static QVariant getFromList(const QVariant &_value, int _index); | ||||||
|     static QVariant getFromMap(const QVariant &_value, const QString &_key); |     static QVariant getFromMap(const QVariant &_value, const QString &_key); | ||||||
|     void initPath(); |     void initPath(); | ||||||
|     void translate() override; |     void translate(void *_ui) override; | ||||||
|     // properties |     // properties | ||||||
|     QString m_path; |     QString m_path; | ||||||
|     QVariantList m_splittedPath; |     QVariantList m_splittedPath; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| #endif /* AWJSONFORMATTER_H */ |  | ||||||
|  | |||||||
| @ -15,7 +15,6 @@ | |||||||
|  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * |  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * | ||||||
|  ***************************************************************************/ |  ***************************************************************************/ | ||||||
|  |  | ||||||
|  |  | ||||||
| #include "awlistformatter.h" | #include "awlistformatter.h" | ||||||
| #include "ui_awlistformatter.h" | #include "ui_awlistformatter.h" | ||||||
|  |  | ||||||
| @ -26,24 +25,13 @@ | |||||||
| #include "awdebug.h" | #include "awdebug.h" | ||||||
|  |  | ||||||
|  |  | ||||||
| AWListFormatter::AWListFormatter(QWidget *_parent, const QString &_filePath) | AWListFormatter::AWListFormatter(QObject *_parent, const QString &_filePath) | ||||||
|     : AWAbstractFormatter(_parent, _filePath) |     : AWAbstractFormatter(_parent, _filePath) | ||||||
|     , ui(new Ui::AWListFormatter) |  | ||||||
| { | { | ||||||
|     qCDebug(LOG_LIB) << __PRETTY_FUNCTION__; |     qCDebug(LOG_LIB) << __PRETTY_FUNCTION__; | ||||||
|  |  | ||||||
|     if (!_filePath.isEmpty()) |     if (!_filePath.isEmpty()) | ||||||
|         AWListFormatter::readConfiguration(); |         AWListFormatter::readConfiguration(); | ||||||
|     ui->setupUi(this); |  | ||||||
|     AWListFormatter::translate(); |  | ||||||
| } |  | ||||||
|  |  | ||||||
|  |  | ||||||
| AWListFormatter::~AWListFormatter() |  | ||||||
| { |  | ||||||
|     qCDebug(LOG_LIB) << __PRETTY_FUNCTION__; |  | ||||||
|  |  | ||||||
|     delete ui; |  | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| @ -51,7 +39,7 @@ QString AWListFormatter::convert(const QVariant &_value) const | |||||||
| { | { | ||||||
|     qCDebug(LOG_LIB) << "Convert value" << _value; |     qCDebug(LOG_LIB) << "Convert value" << _value; | ||||||
|  |  | ||||||
|     QStringList output = _value.toStringList(); |     auto output = _value.toStringList(); | ||||||
|     if (isSorted()) |     if (isSorted()) | ||||||
|         output.sort(); |         output.sort(); | ||||||
|  |  | ||||||
| @ -63,7 +51,7 @@ AWListFormatter *AWListFormatter::copy(const QString &_fileName, const int _numb | |||||||
| { | { | ||||||
|     qCDebug(LOG_LIB) << "File" << _fileName << "with number" << _number; |     qCDebug(LOG_LIB) << "File" << _fileName << "with number" << _number; | ||||||
|  |  | ||||||
|     auto *item = new AWListFormatter(dynamic_cast<QWidget *>(parent()), _fileName); |     auto item = new AWListFormatter(parent(), _fileName); | ||||||
|     AWAbstractFormatter::copyDefaults(item); |     AWAbstractFormatter::copyDefaults(item); | ||||||
|     item->setFilter(filter()); |     item->setFilter(filter()); | ||||||
|     item->setSeparator(separator()); |     item->setSeparator(separator()); | ||||||
| @ -97,7 +85,7 @@ void AWListFormatter::setFilter(const QString &_filter) | |||||||
|     qCDebug(LOG_LIB) << "Filter" << _filter; |     qCDebug(LOG_LIB) << "Filter" << _filter; | ||||||
|  |  | ||||||
|     m_filter = _filter; |     m_filter = _filter; | ||||||
|     m_regex = QRegExp(m_filter); |     m_regex = QRegularExpression(m_filter); | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| @ -133,10 +121,15 @@ void AWListFormatter::readConfiguration() | |||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| int AWListFormatter::showConfiguration(const QVariant &_args) | int AWListFormatter::showConfiguration(QWidget *_parent, const QVariant &_args) | ||||||
| { | { | ||||||
|     Q_UNUSED(_args) |     Q_UNUSED(_args) | ||||||
|  |  | ||||||
|  |     auto dialog = new QDialog(_parent); | ||||||
|  |     auto ui = new Ui::AWListFormatter(); | ||||||
|  |     ui->setupUi(dialog); | ||||||
|  |     translate(ui); | ||||||
|  |  | ||||||
|     ui->lineEdit_name->setText(name()); |     ui->lineEdit_name->setText(name()); | ||||||
|     ui->lineEdit_comment->setText(comment()); |     ui->lineEdit_comment->setText(comment()); | ||||||
|     ui->label_typeValue->setText("List"); |     ui->label_typeValue->setText("List"); | ||||||
| @ -144,18 +137,22 @@ int AWListFormatter::showConfiguration(const QVariant &_args) | |||||||
|     ui->lineEdit_separator->setText(separator()); |     ui->lineEdit_separator->setText(separator()); | ||||||
|     ui->checkBox_sorted->setCheckState(isSorted() ? Qt::Checked : Qt::Unchecked); |     ui->checkBox_sorted->setCheckState(isSorted() ? Qt::Checked : Qt::Unchecked); | ||||||
|  |  | ||||||
|     int ret = exec(); |     auto ret = dialog->exec(); | ||||||
|     if (ret != 1) |     if (ret == 1) { | ||||||
|         return ret; |         setName(ui->lineEdit_name->text()); | ||||||
|     setName(ui->lineEdit_name->text()); |         setComment(ui->lineEdit_comment->text()); | ||||||
|     setComment(ui->lineEdit_comment->text()); |         setApiVersion(AW_FORMATTER_API); | ||||||
|     setApiVersion(AW_FORMATTER_API); |         setStrType(ui->label_typeValue->text()); | ||||||
|     setStrType(ui->label_typeValue->text()); |         setFilter(ui->lineEdit_filter->text()); | ||||||
|     setFilter(ui->lineEdit_filter->text()); |         setSeparator(ui->lineEdit_separator->text()); | ||||||
|     setSeparator(ui->lineEdit_separator->text()); |         setSorted(ui->checkBox_sorted->checkState() == Qt::Checked); | ||||||
|     setSorted(ui->checkBox_sorted->checkState() == Qt::Checked); |  | ||||||
|  |         writeConfiguration(); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     dialog->deleteLater(); | ||||||
|  |     delete ui; | ||||||
|  |  | ||||||
|     writeConfiguration(); |  | ||||||
|     return ret; |     return ret; | ||||||
| } | } | ||||||
|  |  | ||||||
| @ -177,8 +174,10 @@ void AWListFormatter::writeConfiguration() const | |||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| void AWListFormatter::translate() | void AWListFormatter::translate(void *_ui) | ||||||
| { | { | ||||||
|  |     auto ui = reinterpret_cast<Ui::AWListFormatter *>(_ui); | ||||||
|  |  | ||||||
|     ui->label_name->setText(i18n("Name")); |     ui->label_name->setText(i18n("Name")); | ||||||
|     ui->label_comment->setText(i18n("Comment")); |     ui->label_comment->setText(i18n("Comment")); | ||||||
|     ui->label_type->setText(i18n("Type")); |     ui->label_type->setText(i18n("Type")); | ||||||
|  | |||||||
| @ -15,17 +15,11 @@ | |||||||
|  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * |  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * | ||||||
|  ***************************************************************************/ |  ***************************************************************************/ | ||||||
|  |  | ||||||
| #ifndef AWLISTFORMATTER_H | #pragma once | ||||||
| #define AWLISTFORMATTER_H |  | ||||||
|  |  | ||||||
| #include "awabstractformatter.h" | #include "awabstractformatter.h" | ||||||
|  |  | ||||||
|  |  | ||||||
| namespace Ui |  | ||||||
| { |  | ||||||
| class AWListFormatter; |  | ||||||
| } |  | ||||||
|  |  | ||||||
| class AWListFormatter : public AWAbstractFormatter | class AWListFormatter : public AWAbstractFormatter | ||||||
| { | { | ||||||
|     Q_OBJECT |     Q_OBJECT | ||||||
| @ -34,8 +28,7 @@ class AWListFormatter : public AWAbstractFormatter | |||||||
|     Q_PROPERTY(bool sorted READ isSorted WRITE setSorted) |     Q_PROPERTY(bool sorted READ isSorted WRITE setSorted) | ||||||
|  |  | ||||||
| public: | public: | ||||||
|     explicit AWListFormatter(QWidget *_parent = nullptr, const QString &_filePath = ""); |     explicit AWListFormatter(QObject *_parent = nullptr, const QString &_filePath = ""); | ||||||
|     ~AWListFormatter() override; |  | ||||||
|     [[nodiscard]] QString convert(const QVariant &_value) const override; |     [[nodiscard]] QString convert(const QVariant &_value) const override; | ||||||
|     AWListFormatter *copy(const QString &_fileName, int _number) override; |     AWListFormatter *copy(const QString &_fileName, int _number) override; | ||||||
|     // properties |     // properties | ||||||
| @ -48,18 +41,14 @@ public: | |||||||
|  |  | ||||||
| public slots: | public slots: | ||||||
|     void readConfiguration() override; |     void readConfiguration() override; | ||||||
|     int showConfiguration(const QVariant &_args) override; |     int showConfiguration(QWidget *_parent, const QVariant &_args) override; | ||||||
|     void writeConfiguration() const override; |     void writeConfiguration() const override; | ||||||
|  |  | ||||||
| private: | private: | ||||||
|     Ui::AWListFormatter *ui = nullptr; |     void translate(void *_ui) override; | ||||||
|     void translate() override; |  | ||||||
|     // properties |     // properties | ||||||
|     QString m_filter = ""; |     QString m_filter = ""; | ||||||
|     QString m_separator = ""; |     QString m_separator = ""; | ||||||
|     bool m_sorted = false; |     bool m_sorted = false; | ||||||
|     QRegExp m_regex; |     QRegularExpression m_regex; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| #endif /* AWLISTFORMATTER_H */ |  | ||||||
|  | |||||||
| @ -15,7 +15,6 @@ | |||||||
|  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * |  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * | ||||||
|  ***************************************************************************/ |  ***************************************************************************/ | ||||||
|  |  | ||||||
|  |  | ||||||
| #include "awnoformatter.h" | #include "awnoformatter.h" | ||||||
| #include "ui_awnoformatter.h" | #include "ui_awnoformatter.h" | ||||||
|  |  | ||||||
| @ -24,24 +23,13 @@ | |||||||
| #include "awdebug.h" | #include "awdebug.h" | ||||||
|  |  | ||||||
|  |  | ||||||
| AWNoFormatter::AWNoFormatter(QWidget *_parent, const QString &_filePath) | AWNoFormatter::AWNoFormatter(QObject *_parent, const QString &_filePath) | ||||||
|     : AWAbstractFormatter(_parent, _filePath) |     : AWAbstractFormatter(_parent, _filePath) | ||||||
|     , ui(new Ui::AWNoFormatter) |  | ||||||
| { | { | ||||||
|     qCDebug(LOG_LIB) << __PRETTY_FUNCTION__; |     qCDebug(LOG_LIB) << __PRETTY_FUNCTION__; | ||||||
|  |  | ||||||
|     if (!_filePath.isEmpty()) |     if (!_filePath.isEmpty()) | ||||||
|         AWNoFormatter::readConfiguration(); |         AWNoFormatter::readConfiguration(); | ||||||
|     ui->setupUi(this); |  | ||||||
|     AWNoFormatter::translate(); |  | ||||||
| } |  | ||||||
|  |  | ||||||
|  |  | ||||||
| AWNoFormatter::~AWNoFormatter() |  | ||||||
| { |  | ||||||
|     qCDebug(LOG_LIB) << __PRETTY_FUNCTION__; |  | ||||||
|  |  | ||||||
|     delete ui; |  | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| @ -57,7 +45,7 @@ AWNoFormatter *AWNoFormatter::copy(const QString &_fileName, const int _number) | |||||||
| { | { | ||||||
|     qCDebug(LOG_LIB) << "File" << _fileName << "with number" << _number; |     qCDebug(LOG_LIB) << "File" << _fileName << "with number" << _number; | ||||||
|  |  | ||||||
|     auto *item = new AWNoFormatter(dynamic_cast<QWidget *>(parent()), _fileName); |     auto item = new AWNoFormatter(parent(), _fileName); | ||||||
|     AWAbstractFormatter::copyDefaults(item); |     AWAbstractFormatter::copyDefaults(item); | ||||||
|     item->setNumber(_number); |     item->setNumber(_number); | ||||||
|  |  | ||||||
| @ -65,29 +53,40 @@ AWNoFormatter *AWNoFormatter::copy(const QString &_fileName, const int _number) | |||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| int AWNoFormatter::showConfiguration(const QVariant &_args) | int AWNoFormatter::showConfiguration(QWidget *_parent, const QVariant &_args) | ||||||
| { | { | ||||||
|     Q_UNUSED(_args) |     Q_UNUSED(_args) | ||||||
|  |  | ||||||
|  |     auto dialog = new QDialog(_parent); | ||||||
|  |     auto ui = new Ui::AWNoFormatter(); | ||||||
|  |     ui->setupUi(dialog); | ||||||
|  |     translate(ui); | ||||||
|  |  | ||||||
|     ui->lineEdit_name->setText(name()); |     ui->lineEdit_name->setText(name()); | ||||||
|     ui->lineEdit_comment->setText(comment()); |     ui->lineEdit_comment->setText(comment()); | ||||||
|     ui->label_typeValue->setText("NoFormat"); |     ui->label_typeValue->setText("NoFormat"); | ||||||
|  |  | ||||||
|     int ret = exec(); |     auto ret = dialog->exec(); | ||||||
|     if (ret != 1) |     if (ret == 1) { | ||||||
|         return ret; |         setName(ui->lineEdit_name->text()); | ||||||
|     setName(ui->lineEdit_name->text()); |         setComment(ui->lineEdit_comment->text()); | ||||||
|     setComment(ui->lineEdit_comment->text()); |         setApiVersion(AW_FORMATTER_API); | ||||||
|     setApiVersion(AW_FORMATTER_API); |         setStrType(ui->label_typeValue->text()); | ||||||
|     setStrType(ui->label_typeValue->text()); |  | ||||||
|  |         writeConfiguration(); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     dialog->deleteLater(); | ||||||
|  |     delete ui; | ||||||
|  |  | ||||||
|     writeConfiguration(); |  | ||||||
|     return ret; |     return ret; | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| void AWNoFormatter::translate() | void AWNoFormatter::translate(void *_ui) | ||||||
| { | { | ||||||
|  |     auto ui = reinterpret_cast<Ui::AWNoFormatter *>(_ui); | ||||||
|  |  | ||||||
|     ui->label_name->setText(i18n("Name")); |     ui->label_name->setText(i18n("Name")); | ||||||
|     ui->label_comment->setText(i18n("Comment")); |     ui->label_comment->setText(i18n("Comment")); | ||||||
|     ui->label_type->setText(i18n("Type")); |     ui->label_type->setText(i18n("Type")); | ||||||
|  | |||||||
| @ -15,35 +15,24 @@ | |||||||
|  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * |  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * | ||||||
|  ***************************************************************************/ |  ***************************************************************************/ | ||||||
|  |  | ||||||
| #ifndef AWNOFORMATTER_H | #pragma once | ||||||
| #define AWNOFORMATTER_H |  | ||||||
|  |  | ||||||
| #include "awabstractformatter.h" | #include "awabstractformatter.h" | ||||||
|  |  | ||||||
|  |  | ||||||
| namespace Ui |  | ||||||
| { |  | ||||||
| class AWNoFormatter; |  | ||||||
| } |  | ||||||
|  |  | ||||||
| class AWNoFormatter : public AWAbstractFormatter | class AWNoFormatter : public AWAbstractFormatter | ||||||
| { | { | ||||||
|     Q_OBJECT |     Q_OBJECT | ||||||
|  |  | ||||||
| public: | public: | ||||||
|     explicit AWNoFormatter(QWidget *_parent = nullptr, const QString &_filePath = ""); |     explicit AWNoFormatter(QObject *_parent = nullptr, const QString &_filePath = ""); | ||||||
|     ~AWNoFormatter() override; |  | ||||||
|     [[nodiscard]] QString convert(const QVariant &_value) const override; |     [[nodiscard]] QString convert(const QVariant &_value) const override; | ||||||
|     AWNoFormatter *copy(const QString &_fileName, int _number) override; |     AWNoFormatter *copy(const QString &_fileName, int _number) override; | ||||||
|  |  | ||||||
| public slots: | public slots: | ||||||
|     int showConfiguration(const QVariant &_args) override; |     int showConfiguration(QWidget *_parent, const QVariant &_args) override; | ||||||
|  |  | ||||||
| private: | private: | ||||||
|     Ui::AWNoFormatter *ui = nullptr; |     void translate(void *_ui) override; | ||||||
|     void translate() override; |  | ||||||
|     // properties |     // properties | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| #endif /* AWNOFORMATTER_H */ |  | ||||||
|  | |||||||
| @ -15,7 +15,6 @@ | |||||||
|  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * |  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * | ||||||
|  ***************************************************************************/ |  ***************************************************************************/ | ||||||
|  |  | ||||||
|  |  | ||||||
| #include "awscriptformatter.h" | #include "awscriptformatter.h" | ||||||
| #include "ui_awscriptformatter.h" | #include "ui_awscriptformatter.h" | ||||||
|  |  | ||||||
| @ -27,24 +26,13 @@ | |||||||
| #include "awdebug.h" | #include "awdebug.h" | ||||||
|  |  | ||||||
|  |  | ||||||
| AWScriptFormatter::AWScriptFormatter(QWidget *_parent, const QString &_filePath) | AWScriptFormatter::AWScriptFormatter(QObject *_parent, const QString &_filePath) | ||||||
|     : AWAbstractFormatter(_parent, _filePath) |     : AWAbstractFormatter(_parent, _filePath) | ||||||
|     , ui(new Ui::AWScriptFormatter) |  | ||||||
| { | { | ||||||
|     qCDebug(LOG_LIB) << __PRETTY_FUNCTION__; |     qCDebug(LOG_LIB) << __PRETTY_FUNCTION__; | ||||||
|  |  | ||||||
|     if (!_filePath.isEmpty()) |     if (!_filePath.isEmpty()) | ||||||
|         AWScriptFormatter::readConfiguration(); |         AWScriptFormatter::readConfiguration(); | ||||||
|     ui->setupUi(this); |  | ||||||
|     AWScriptFormatter::translate(); |  | ||||||
| } |  | ||||||
|  |  | ||||||
|  |  | ||||||
| AWScriptFormatter::~AWScriptFormatter() |  | ||||||
| { |  | ||||||
|     qCDebug(LOG_LIB) << __PRETTY_FUNCTION__; |  | ||||||
|  |  | ||||||
|     delete ui; |  | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| @ -54,9 +42,8 @@ QString AWScriptFormatter::convert(const QVariant &_value) const | |||||||
|  |  | ||||||
|     // init engine |     // init engine | ||||||
|     QJSEngine engine; |     QJSEngine engine; | ||||||
|     QJSValue fn = engine.evaluate(m_program); |     auto fn = engine.evaluate(m_program); | ||||||
|     QJSValueList args = QJSValueList() << _value.toString(); |     auto result = fn.call({_value.toString()}); | ||||||
|     QJSValue result = fn.call(args); |  | ||||||
|  |  | ||||||
|     if (result.isError()) { |     if (result.isError()) { | ||||||
|         qCWarning(LOG_LIB) << "Uncaught exception at line" << result.property("lineNumber").toInt() << ":" |         qCWarning(LOG_LIB) << "Uncaught exception at line" << result.property("lineNumber").toInt() << ":" | ||||||
| @ -72,7 +59,7 @@ AWScriptFormatter *AWScriptFormatter::copy(const QString &_fileName, const int _ | |||||||
| { | { | ||||||
|     qCDebug(LOG_LIB) << "File" << _fileName << "with number" << _number; |     qCDebug(LOG_LIB) << "File" << _fileName << "with number" << _number; | ||||||
|  |  | ||||||
|     auto *item = new AWScriptFormatter(dynamic_cast<QWidget *>(parent()), _fileName); |     auto item = new AWScriptFormatter(parent(), _fileName); | ||||||
|     AWAbstractFormatter::copyDefaults(item); |     AWAbstractFormatter::copyDefaults(item); | ||||||
|     item->setAppendCode(appendCode()); |     item->setAppendCode(appendCode()); | ||||||
|     item->setCode(code()); |     item->setCode(code()); | ||||||
| @ -150,10 +137,15 @@ void AWScriptFormatter::readConfiguration() | |||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| int AWScriptFormatter::showConfiguration(const QVariant &_args) | int AWScriptFormatter::showConfiguration(QWidget *_parent, const QVariant &_args) | ||||||
| { | { | ||||||
|     Q_UNUSED(_args) |     Q_UNUSED(_args) | ||||||
|  |  | ||||||
|  |     auto dialog = new QDialog(_parent); | ||||||
|  |     auto ui = new Ui::AWScriptFormatter(); | ||||||
|  |     ui->setupUi(dialog); | ||||||
|  |     translate(ui); | ||||||
|  |  | ||||||
|     ui->lineEdit_name->setText(name()); |     ui->lineEdit_name->setText(name()); | ||||||
|     ui->lineEdit_comment->setText(comment()); |     ui->lineEdit_comment->setText(comment()); | ||||||
|     ui->label_typeValue->setText("Script"); |     ui->label_typeValue->setText("Script"); | ||||||
| @ -161,19 +153,23 @@ int AWScriptFormatter::showConfiguration(const QVariant &_args) | |||||||
|     ui->checkBox_hasReturn->setCheckState(hasReturn() ? Qt::Checked : Qt::Unchecked); |     ui->checkBox_hasReturn->setCheckState(hasReturn() ? Qt::Checked : Qt::Unchecked); | ||||||
|     ui->textEdit_code->setPlainText(code()); |     ui->textEdit_code->setPlainText(code()); | ||||||
|  |  | ||||||
|     int ret = exec(); |     int ret = dialog->exec(); | ||||||
|     if (ret != 1) |     if (ret == 1) { | ||||||
|         return ret; |         setName(ui->lineEdit_name->text()); | ||||||
|     setName(ui->lineEdit_name->text()); |         setComment(ui->lineEdit_comment->text()); | ||||||
|     setComment(ui->lineEdit_comment->text()); |         setApiVersion(AW_FORMATTER_API); | ||||||
|     setApiVersion(AW_FORMATTER_API); |         setStrType(ui->label_typeValue->text()); | ||||||
|     setStrType(ui->label_typeValue->text()); |         setAppendCode(ui->checkBox_appendCode->checkState() == Qt::Checked); | ||||||
|     setAppendCode(ui->checkBox_appendCode->checkState() == Qt::Checked); |         setHasReturn(ui->checkBox_hasReturn->checkState() == Qt::Checked); | ||||||
|     setHasReturn(ui->checkBox_hasReturn->checkState() == Qt::Checked); |         setCode(ui->textEdit_code->toPlainText()); | ||||||
|     setCode(ui->textEdit_code->toPlainText()); |         initProgram(); | ||||||
|     initProgram(); |  | ||||||
|  |         writeConfiguration(); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     dialog->deleteLater(); | ||||||
|  |     delete ui; | ||||||
|  |  | ||||||
|     writeConfiguration(); |  | ||||||
|     return ret; |     return ret; | ||||||
| } | } | ||||||
|  |  | ||||||
| @ -199,7 +195,7 @@ void AWScriptFormatter::initProgram() | |||||||
| { | { | ||||||
|     // init JS code |     // init JS code | ||||||
|     if (appendCode()) |     if (appendCode()) | ||||||
|         m_program = QString("(function(value) { %1%2 })").arg(code()).arg(hasReturn() ? "" : "; return output;"); |         m_program = QString("(function(value) { %1%2 })").arg(code(), hasReturn() ? "" : "; return output;"); | ||||||
|     else |     else | ||||||
|         m_program = code(); |         m_program = code(); | ||||||
|  |  | ||||||
| @ -207,8 +203,10 @@ void AWScriptFormatter::initProgram() | |||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| void AWScriptFormatter::translate() | void AWScriptFormatter::translate(void *_ui) | ||||||
| { | { | ||||||
|  |     auto ui = reinterpret_cast<Ui::AWScriptFormatter *>(_ui); | ||||||
|  |  | ||||||
|     ui->label_name->setText(i18n("Name")); |     ui->label_name->setText(i18n("Name")); | ||||||
|     ui->label_comment->setText(i18n("Comment")); |     ui->label_comment->setText(i18n("Comment")); | ||||||
|     ui->label_type->setText(i18n("Type")); |     ui->label_type->setText(i18n("Type")); | ||||||
|  | |||||||
| @ -15,17 +15,11 @@ | |||||||
|  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * |  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * | ||||||
|  ***************************************************************************/ |  ***************************************************************************/ | ||||||
|  |  | ||||||
| #ifndef AWSCRIPTFORMATTER_H | #pragma once | ||||||
| #define AWSCRIPTFORMATTER_H |  | ||||||
|  |  | ||||||
| #include "awabstractformatter.h" | #include "awabstractformatter.h" | ||||||
|  |  | ||||||
|  |  | ||||||
| namespace Ui |  | ||||||
| { |  | ||||||
| class AWScriptFormatter; |  | ||||||
| } |  | ||||||
|  |  | ||||||
| class AWScriptFormatter : public AWAbstractFormatter | class AWScriptFormatter : public AWAbstractFormatter | ||||||
| { | { | ||||||
|     Q_OBJECT |     Q_OBJECT | ||||||
| @ -35,8 +29,7 @@ class AWScriptFormatter : public AWAbstractFormatter | |||||||
|     Q_PROPERTY(QString program READ program) |     Q_PROPERTY(QString program READ program) | ||||||
|  |  | ||||||
| public: | public: | ||||||
|     explicit AWScriptFormatter(QWidget *_parent = nullptr, const QString &_filePath = ""); |     explicit AWScriptFormatter(QObject *_parent = nullptr, const QString &_filePath = ""); | ||||||
|     ~AWScriptFormatter() override; |  | ||||||
|     [[nodiscard]] QString convert(const QVariant &_value) const override; |     [[nodiscard]] QString convert(const QVariant &_value) const override; | ||||||
|     AWScriptFormatter *copy(const QString &_fileName, int _number) override; |     AWScriptFormatter *copy(const QString &_fileName, int _number) override; | ||||||
|     // properties |     // properties | ||||||
| @ -50,19 +43,15 @@ public: | |||||||
|  |  | ||||||
| public slots: | public slots: | ||||||
|     void readConfiguration() override; |     void readConfiguration() override; | ||||||
|     int showConfiguration(const QVariant &_args) override; |     int showConfiguration(QWidget *_parent, const QVariant &_args) override; | ||||||
|     void writeConfiguration() const override; |     void writeConfiguration() const override; | ||||||
|  |  | ||||||
| private: | private: | ||||||
|     Ui::AWScriptFormatter *ui = nullptr; |  | ||||||
|     void initProgram(); |     void initProgram(); | ||||||
|     void translate() override; |     void translate(void *_ui) override; | ||||||
|     // properties |     // properties | ||||||
|     bool m_appendCode = true; |     bool m_appendCode = true; | ||||||
|     QString m_code = ""; |     QString m_code = ""; | ||||||
|     bool m_hasReturn = false; |     bool m_hasReturn = false; | ||||||
|     QString m_program; |     QString m_program; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| #endif /* AWSCRIPTFORMATTER_H */ |  | ||||||
|  | |||||||
| @ -15,7 +15,6 @@ | |||||||
|  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * |  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * | ||||||
|  ***************************************************************************/ |  ***************************************************************************/ | ||||||
|  |  | ||||||
|  |  | ||||||
| #include "awstringformatter.h" | #include "awstringformatter.h" | ||||||
| #include "ui_awstringformatter.h" | #include "ui_awstringformatter.h" | ||||||
|  |  | ||||||
| @ -26,24 +25,13 @@ | |||||||
| #include "awdebug.h" | #include "awdebug.h" | ||||||
|  |  | ||||||
|  |  | ||||||
| AWStringFormatter::AWStringFormatter(QWidget *_parent, const QString &_filePath) | AWStringFormatter::AWStringFormatter(QObject *_parent, const QString &_filePath) | ||||||
|     : AWAbstractFormatter(_parent, _filePath) |     : AWAbstractFormatter(_parent, _filePath) | ||||||
|     , ui(new Ui::AWStringFormatter) |  | ||||||
| { | { | ||||||
|     qCDebug(LOG_LIB) << __PRETTY_FUNCTION__; |     qCDebug(LOG_LIB) << __PRETTY_FUNCTION__; | ||||||
|  |  | ||||||
|     if (!_filePath.isEmpty()) |     if (!_filePath.isEmpty()) | ||||||
|         AWStringFormatter::readConfiguration(); |         AWStringFormatter::readConfiguration(); | ||||||
|     ui->setupUi(this); |  | ||||||
|     AWStringFormatter::translate(); |  | ||||||
| } |  | ||||||
|  |  | ||||||
|  |  | ||||||
| AWStringFormatter::~AWStringFormatter() |  | ||||||
| { |  | ||||||
|     qCDebug(LOG_LIB) << __PRETTY_FUNCTION__; |  | ||||||
|  |  | ||||||
|     delete ui; |  | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| @ -51,7 +39,7 @@ QString AWStringFormatter::convert(const QVariant &_value) const | |||||||
| { | { | ||||||
|     qCDebug(LOG_LIB) << "Convert value" << _value; |     qCDebug(LOG_LIB) << "Convert value" << _value; | ||||||
|  |  | ||||||
|     QString output = QString("%1").arg(_value.toString(), count(), fillChar()); |     auto output = QString("%1").arg(_value.toString(), count(), fillChar()); | ||||||
|     if (forceWidth()) |     if (forceWidth()) | ||||||
|         output = output.left(count()); |         output = output.left(count()); | ||||||
|  |  | ||||||
| @ -63,7 +51,7 @@ AWStringFormatter *AWStringFormatter::copy(const QString &_fileName, const int _ | |||||||
| { | { | ||||||
|     qCDebug(LOG_LIB) << "File" << _fileName << "with number" << _number; |     qCDebug(LOG_LIB) << "File" << _fileName << "with number" << _number; | ||||||
|  |  | ||||||
|     auto *item = new AWStringFormatter(dynamic_cast<QWidget *>(parent()), _fileName); |     auto item = new AWStringFormatter(parent(), _fileName); | ||||||
|     AWAbstractFormatter::copyDefaults(item); |     AWAbstractFormatter::copyDefaults(item); | ||||||
|     item->setCount(count()); |     item->setCount(count()); | ||||||
|     item->setFillChar(fillChar()); |     item->setFillChar(fillChar()); | ||||||
| @ -132,10 +120,15 @@ void AWStringFormatter::readConfiguration() | |||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| int AWStringFormatter::showConfiguration(const QVariant &_args) | int AWStringFormatter::showConfiguration(QWidget *_parent, const QVariant &_args) | ||||||
| { | { | ||||||
|     Q_UNUSED(_args) |     Q_UNUSED(_args) | ||||||
|  |  | ||||||
|  |     auto dialog = new QDialog(_parent); | ||||||
|  |     auto ui = new Ui::AWStringFormatter(); | ||||||
|  |     ui->setupUi(dialog); | ||||||
|  |     translate(ui); | ||||||
|  |  | ||||||
|     ui->lineEdit_name->setText(name()); |     ui->lineEdit_name->setText(name()); | ||||||
|     ui->lineEdit_comment->setText(comment()); |     ui->lineEdit_comment->setText(comment()); | ||||||
|     ui->label_typeValue->setText("String"); |     ui->label_typeValue->setText("String"); | ||||||
| @ -143,18 +136,22 @@ int AWStringFormatter::showConfiguration(const QVariant &_args) | |||||||
|     ui->lineEdit_fill->setText(QString(fillChar())); |     ui->lineEdit_fill->setText(QString(fillChar())); | ||||||
|     ui->checkBox_forceWidth->setCheckState(forceWidth() ? Qt::Checked : Qt::Unchecked); |     ui->checkBox_forceWidth->setCheckState(forceWidth() ? Qt::Checked : Qt::Unchecked); | ||||||
|  |  | ||||||
|     int ret = exec(); |     auto ret = dialog->exec(); | ||||||
|     if (ret != 1) |     if (ret == 1) { | ||||||
|         return ret; |         setName(ui->lineEdit_name->text()); | ||||||
|     setName(ui->lineEdit_name->text()); |         setComment(ui->lineEdit_comment->text()); | ||||||
|     setComment(ui->lineEdit_comment->text()); |         setApiVersion(AW_FORMATTER_API); | ||||||
|     setApiVersion(AW_FORMATTER_API); |         setStrType(ui->label_typeValue->text()); | ||||||
|     setStrType(ui->label_typeValue->text()); |         setCount(ui->spinBox_width->value()); | ||||||
|     setCount(ui->spinBox_width->value()); |         setFillChar(ui->lineEdit_fill->text().at(0)); | ||||||
|     setFillChar(ui->lineEdit_fill->text().at(0)); |         setForceWidth(ui->checkBox_forceWidth->checkState() == Qt::Checked); | ||||||
|     setForceWidth(ui->checkBox_forceWidth->checkState() == Qt::Checked); |  | ||||||
|  |         writeConfiguration(); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     dialog->deleteLater(); | ||||||
|  |     delete ui; | ||||||
|  |  | ||||||
|     writeConfiguration(); |  | ||||||
|     return ret; |     return ret; | ||||||
| } | } | ||||||
|  |  | ||||||
| @ -176,8 +173,10 @@ void AWStringFormatter::writeConfiguration() const | |||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| void AWStringFormatter::translate() | void AWStringFormatter::translate(void *_ui) | ||||||
| { | { | ||||||
|  |     auto ui = reinterpret_cast<Ui::AWStringFormatter *>(_ui); | ||||||
|  |  | ||||||
|     ui->label_name->setText(i18n("Name")); |     ui->label_name->setText(i18n("Name")); | ||||||
|     ui->label_comment->setText(i18n("Comment")); |     ui->label_comment->setText(i18n("Comment")); | ||||||
|     ui->label_type->setText(i18n("Type")); |     ui->label_type->setText(i18n("Type")); | ||||||
|  | |||||||
| @ -15,17 +15,11 @@ | |||||||
|  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * |  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * | ||||||
|  ***************************************************************************/ |  ***************************************************************************/ | ||||||
|  |  | ||||||
| #ifndef AWSTRINGFORMATTER_H | #pragma once | ||||||
| #define AWSTRINGFORMATTER_H |  | ||||||
|  |  | ||||||
| #include "awabstractformatter.h" | #include "awabstractformatter.h" | ||||||
|  |  | ||||||
|  |  | ||||||
| namespace Ui |  | ||||||
| { |  | ||||||
| class AWStringFormatter; |  | ||||||
| } |  | ||||||
|  |  | ||||||
| class AWStringFormatter : public AWAbstractFormatter | class AWStringFormatter : public AWAbstractFormatter | ||||||
| { | { | ||||||
|     Q_OBJECT |     Q_OBJECT | ||||||
| @ -34,8 +28,7 @@ class AWStringFormatter : public AWAbstractFormatter | |||||||
|     Q_PROPERTY(bool forceWidth READ forceWidth WRITE setForceWidth) |     Q_PROPERTY(bool forceWidth READ forceWidth WRITE setForceWidth) | ||||||
|  |  | ||||||
| public: | public: | ||||||
|     explicit AWStringFormatter(QWidget *_parent = nullptr, const QString &_filePath = ""); |     explicit AWStringFormatter(QObject *_parent = nullptr, const QString &_filePath = ""); | ||||||
|     ~AWStringFormatter() override; |  | ||||||
|     [[nodiscard]] QString convert(const QVariant &_value) const override; |     [[nodiscard]] QString convert(const QVariant &_value) const override; | ||||||
|     AWStringFormatter *copy(const QString &_fileName, int _number) override; |     AWStringFormatter *copy(const QString &_fileName, int _number) override; | ||||||
|     // properties |     // properties | ||||||
| @ -48,17 +41,13 @@ public: | |||||||
|  |  | ||||||
| public slots: | public slots: | ||||||
|     void readConfiguration() override; |     void readConfiguration() override; | ||||||
|     int showConfiguration(const QVariant &_args) override; |     int showConfiguration(QWidget *_parent, const QVariant &_args) override; | ||||||
|     void writeConfiguration() const override; |     void writeConfiguration() const override; | ||||||
|  |  | ||||||
| private: | private: | ||||||
|     Ui::AWStringFormatter *ui = nullptr; |     void translate(void *_ui) override; | ||||||
|     void translate() override; |  | ||||||
|     // properties |     // properties | ||||||
|     int m_count = 0; |     int m_count = 0; | ||||||
|     QChar m_fillChar = QChar(); |     QChar m_fillChar = QChar(); | ||||||
|     bool m_forceWidth = false; |     bool m_forceWidth = false; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| #endif /* AWSTRINGFORMATTER_H */ |  | ||||||
|  | |||||||
| @ -15,8 +15,7 @@ | |||||||
|  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * |  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * | ||||||
|  ***************************************************************************/ |  ***************************************************************************/ | ||||||
|  |  | ||||||
| #ifndef EXTITEMAGGREGATOR_H | #pragma once | ||||||
| #define EXTITEMAGGREGATOR_H |  | ||||||
|  |  | ||||||
| #include <KI18n/KLocalizedString> | #include <KI18n/KLocalizedString> | ||||||
|  |  | ||||||
| @ -31,7 +30,7 @@ | |||||||
| template <class T> class ExtItemAggregator : public AbstractExtItemAggregator | template <class T> class ExtItemAggregator : public AbstractExtItemAggregator | ||||||
| { | { | ||||||
| public: | public: | ||||||
|     explicit ExtItemAggregator(QWidget *_parent, const QString &_type) |     explicit ExtItemAggregator(QObject *_parent, const QString &_type) | ||||||
|         : AbstractExtItemAggregator(_parent, _type) |         : AbstractExtItemAggregator(_parent, _type) | ||||||
|     { |     { | ||||||
|         qSetMessagePattern(AWDebug::LOG_FORMAT); |         qSetMessagePattern(AWDebug::LOG_FORMAT); | ||||||
| @ -56,8 +55,7 @@ public: | |||||||
|  |  | ||||||
|     void editItems() |     void editItems() | ||||||
|     { |     { | ||||||
|         repaintList(); |         auto ret = exec(); | ||||||
|         int ret = exec(); |  | ||||||
|         qCInfo(LOG_LIB) << "Dialog returns" << ret; |         qCInfo(LOG_LIB) << "Dialog returns" << ret; | ||||||
|     }; |     }; | ||||||
|  |  | ||||||
| @ -123,7 +121,7 @@ private: | |||||||
|     QList<AbstractExtItem *> m_items; |     QList<AbstractExtItem *> m_items; | ||||||
|     QList<T *> m_activeItems; |     QList<T *> m_activeItems; | ||||||
|  |  | ||||||
|     void doCreateItem() override { return createItem<T>(); } |     void doCreateItem(QListWidget *_widget) override { return createItem<T>(_widget); } | ||||||
|  |  | ||||||
|     QList<AbstractExtItem *> getItems() |     QList<AbstractExtItem *> getItems() | ||||||
|     { |     { | ||||||
| @ -137,7 +135,7 @@ private: | |||||||
|                 if (!file.endsWith(".desktop")) |                 if (!file.endsWith(".desktop")) | ||||||
|                     continue; |                     continue; | ||||||
|                 qCInfo(LOG_LIB) << "Found file" << file << "in" << dir; |                 qCInfo(LOG_LIB) << "Found file" << file << "in" << dir; | ||||||
|                 QString filePath = QString("%1/%2").arg(dir).arg(file); |                 auto filePath = QString("%1/%2").arg(dir, file); | ||||||
|                 // check if already exists |                 // check if already exists | ||||||
|                 if (std::any_of(items.cbegin(), items.cend(), |                 if (std::any_of(items.cbegin(), items.cend(), | ||||||
|                                 [&filePath](AbstractExtItem *item) { return (item->fileName() == filePath); })) |                                 [&filePath](AbstractExtItem *item) { return (item->fileName() == filePath); })) | ||||||
| @ -147,11 +145,7 @@ private: | |||||||
|         } |         } | ||||||
|  |  | ||||||
|         // sort items |         // sort items | ||||||
|         std::sort(items.begin(), items.end(), |         std::sort(items.begin(), items.end(), [](auto *lhs, auto *rhs) { return lhs->number() < rhs->number(); }); | ||||||
|                   [](const AbstractExtItem *lhs, const AbstractExtItem *rhs) { return lhs->number() < rhs->number(); }); |  | ||||||
|         return items; |         return items; | ||||||
|     }; |     }; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| #endif /* EXTITEMAGGREGATOR_H */ |  | ||||||
|  | |||||||
| @ -20,34 +20,28 @@ | |||||||
|  |  | ||||||
| #include <KI18n/KLocalizedString> | #include <KI18n/KLocalizedString> | ||||||
|  |  | ||||||
| #include <QDir> |  | ||||||
| #include <QSettings> | #include <QSettings> | ||||||
| #include <QTextCodec> |  | ||||||
|  |  | ||||||
| #include <qreplytimeout/qreplytimeout.h> | #include <qreplytimeout/qreplytimeout.h> | ||||||
|  |  | ||||||
| #include "awdebug.h" | #include "awdebug.h" | ||||||
|  |  | ||||||
|  |  | ||||||
| ExtNetworkRequest::ExtNetworkRequest(QWidget *_parent, const QString &_filePath) | ExtNetworkRequest::ExtNetworkRequest(QObject *_parent, const QString &_filePath) | ||||||
|     : AbstractExtItem(_parent, _filePath) |     : AbstractExtItem(_parent, _filePath) | ||||||
|     , ui(new Ui::ExtNetworkRequest) |  | ||||||
| { | { | ||||||
|     qCDebug(LOG_LIB) << __PRETTY_FUNCTION__; |     qCDebug(LOG_LIB) << __PRETTY_FUNCTION__; | ||||||
|  |  | ||||||
|     if (!_filePath.isEmpty()) |     if (!_filePath.isEmpty()) | ||||||
|         ExtNetworkRequest::readConfiguration(); |         ExtNetworkRequest::readConfiguration(); | ||||||
|     ui->setupUi(this); |  | ||||||
|     ExtNetworkRequest::translate(); |  | ||||||
|  |  | ||||||
|     m_values[tag("response")] = ""; |     m_values[tag("response")] = ""; | ||||||
|  |  | ||||||
|     // HACK declare as child of nullptr to avoid crash with plasmawindowed |     // HACK declare as child of nullptr to avoid crash with plasmawindowed | ||||||
|     // in the destructor |     // in the destructor | ||||||
|     m_manager = new QNetworkAccessManager(nullptr); |     m_manager = new QNetworkAccessManager(nullptr); | ||||||
|     connect(m_manager, SIGNAL(finished(QNetworkReply *)), this, SLOT(networkReplyReceived(QNetworkReply *))); |     connect(m_manager, &QNetworkAccessManager::finished, this, &ExtNetworkRequest::networkReplyReceived); | ||||||
|  |     connect(this, &ExtNetworkRequest::requestDataUpdate, this, &ExtNetworkRequest::sendRequest); | ||||||
|     connect(this, SIGNAL(requestDataUpdate()), this, SLOT(sendRequest())); |  | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| @ -55,11 +49,10 @@ ExtNetworkRequest::~ExtNetworkRequest() | |||||||
| { | { | ||||||
|     qCDebug(LOG_LIB) << __PRETTY_FUNCTION__; |     qCDebug(LOG_LIB) << __PRETTY_FUNCTION__; | ||||||
|  |  | ||||||
|     disconnect(m_manager, SIGNAL(finished(QNetworkReply *)), this, SLOT(networkReplyReceived(QNetworkReply *))); |     disconnect(m_manager, &QNetworkAccessManager::finished, this, &ExtNetworkRequest::networkReplyReceived); | ||||||
|     disconnect(this, SIGNAL(requestDataUpdate()), this, SLOT(sendRequest())); |     disconnect(this, &ExtNetworkRequest::requestDataUpdate, this, &ExtNetworkRequest::sendRequest); | ||||||
|  |  | ||||||
|     m_manager->deleteLater(); |     m_manager->deleteLater(); | ||||||
|     delete ui; |  | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| @ -67,7 +60,7 @@ ExtNetworkRequest *ExtNetworkRequest::copy(const QString &_fileName, const int _ | |||||||
| { | { | ||||||
|     qCDebug(LOG_LIB) << "File" << _fileName << "with number" << _number; |     qCDebug(LOG_LIB) << "File" << _fileName << "with number" << _number; | ||||||
|  |  | ||||||
|     auto *item = new ExtNetworkRequest(dynamic_cast<QWidget *>(parent()), _fileName); |     auto item = new ExtNetworkRequest(parent(), _fileName); | ||||||
|     copyDefaults(item); |     copyDefaults(item); | ||||||
|     item->setNumber(_number); |     item->setNumber(_number); | ||||||
|     item->setStringUrl(stringUrl()); |     item->setStringUrl(stringUrl()); | ||||||
| @ -121,10 +114,15 @@ QVariantHash ExtNetworkRequest::run() | |||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| int ExtNetworkRequest::showConfiguration(const QVariant &_args) | int ExtNetworkRequest::showConfiguration(QWidget *_parent, const QVariant &_args) | ||||||
| { | { | ||||||
|     Q_UNUSED(_args) |     Q_UNUSED(_args) | ||||||
|  |  | ||||||
|  |     auto dialog = new QDialog(_parent); | ||||||
|  |     auto ui = new Ui::ExtNetworkRequest(); | ||||||
|  |     ui->setupUi(dialog); | ||||||
|  |     translate(ui); | ||||||
|  |  | ||||||
|     ui->lineEdit_name->setText(name()); |     ui->lineEdit_name->setText(name()); | ||||||
|     ui->lineEdit_comment->setText(comment()); |     ui->lineEdit_comment->setText(comment()); | ||||||
|     ui->label_numberValue->setText(QString("%1").arg(number())); |     ui->label_numberValue->setText(QString("%1").arg(number())); | ||||||
| @ -134,20 +132,24 @@ int ExtNetworkRequest::showConfiguration(const QVariant &_args) | |||||||
|     ui->lineEdit_socket->setText(socket()); |     ui->lineEdit_socket->setText(socket()); | ||||||
|     ui->spinBox_interval->setValue(interval()); |     ui->spinBox_interval->setValue(interval()); | ||||||
|  |  | ||||||
|     int ret = exec(); |     auto ret = dialog->exec(); | ||||||
|     if (ret != 1) |     if (ret == 1) { | ||||||
|         return ret; |         setName(ui->lineEdit_name->text()); | ||||||
|     setName(ui->lineEdit_name->text()); |         setComment(ui->lineEdit_comment->text()); | ||||||
|     setComment(ui->lineEdit_comment->text()); |         setNumber(ui->label_numberValue->text().toInt()); | ||||||
|     setNumber(ui->label_numberValue->text().toInt()); |         setApiVersion(AW_EXTNETREQUEST_API); | ||||||
|     setApiVersion(AW_EXTNETREQUEST_API); |         setStringUrl(ui->lineEdit_url->text()); | ||||||
|     setStringUrl(ui->lineEdit_url->text()); |         setActive(ui->checkBox_active->checkState() == Qt::Checked); | ||||||
|     setActive(ui->checkBox_active->checkState() == Qt::Checked); |         setCron(ui->lineEdit_schedule->text()); | ||||||
|     setCron(ui->lineEdit_schedule->text()); |         setSocket(ui->lineEdit_socket->text()); | ||||||
|     setSocket(ui->lineEdit_socket->text()); |         setInterval(ui->spinBox_interval->value()); | ||||||
|     setInterval(ui->spinBox_interval->value()); |  | ||||||
|  |         writeConfiguration(); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     dialog->deleteLater(); | ||||||
|  |     delete ui; | ||||||
|  |  | ||||||
|     writeConfiguration(); |  | ||||||
|     return ret; |     return ret; | ||||||
| } | } | ||||||
|  |  | ||||||
| @ -174,7 +176,7 @@ void ExtNetworkRequest::networkReplyReceived(QNetworkReply *_reply) | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     m_isRunning = false; |     m_isRunning = false; | ||||||
|     m_values[tag("response")] = QTextCodec::codecForMib(106)->toUnicode(_reply->readAll()).trimmed(); |     m_values[tag("response")] = QString::fromUtf8(_reply->readAll()).trimmed(); | ||||||
|  |  | ||||||
|     emit(dataReceived(m_values)); |     emit(dataReceived(m_values)); | ||||||
| } | } | ||||||
| @ -183,7 +185,7 @@ void ExtNetworkRequest::networkReplyReceived(QNetworkReply *_reply) | |||||||
| void ExtNetworkRequest::sendRequest() | void ExtNetworkRequest::sendRequest() | ||||||
| { | { | ||||||
|     m_isRunning = true; |     m_isRunning = true; | ||||||
|     QNetworkReply *reply = m_manager->get(QNetworkRequest(m_url)); |     auto reply = m_manager->get(QNetworkRequest(m_url)); | ||||||
|     new QReplyTimeout(reply, REQUEST_TIMEOUT); |     new QReplyTimeout(reply, REQUEST_TIMEOUT); | ||||||
| } | } | ||||||
|  |  | ||||||
| @ -194,8 +196,10 @@ void ExtNetworkRequest::initUrl() | |||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| void ExtNetworkRequest::translate() | void ExtNetworkRequest::translate(void *_ui) | ||||||
| { | { | ||||||
|  |     auto ui = reinterpret_cast<Ui::ExtNetworkRequest *>(_ui); | ||||||
|  |  | ||||||
|     ui->label_name->setText(i18n("Name")); |     ui->label_name->setText(i18n("Name")); | ||||||
|     ui->label_comment->setText(i18n("Comment")); |     ui->label_comment->setText(i18n("Comment")); | ||||||
|     ui->label_number->setText(i18n("Tag")); |     ui->label_number->setText(i18n("Tag")); | ||||||
|  | |||||||
| @ -15,26 +15,20 @@ | |||||||
|  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * |  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * | ||||||
|  ***************************************************************************/ |  ***************************************************************************/ | ||||||
|  |  | ||||||
| #ifndef EXTNETWORKREQUEST_H | #pragma once | ||||||
| #define EXTNETWORKREQUEST_H |  | ||||||
|  |  | ||||||
| #include <QNetworkReply> | #include <QNetworkReply> | ||||||
|  |  | ||||||
| #include "abstractextitem.h" | #include "abstractextitem.h" | ||||||
|  |  | ||||||
|  |  | ||||||
| namespace Ui |  | ||||||
| { |  | ||||||
| class ExtNetworkRequest; |  | ||||||
| } |  | ||||||
|  |  | ||||||
| class ExtNetworkRequest : public AbstractExtItem | class ExtNetworkRequest : public AbstractExtItem | ||||||
| { | { | ||||||
|     Q_OBJECT |     Q_OBJECT | ||||||
|     Q_PROPERTY(QString stringUrl READ stringUrl WRITE setStringUrl) |     Q_PROPERTY(QString stringUrl READ stringUrl WRITE setStringUrl) | ||||||
|  |  | ||||||
| public: | public: | ||||||
|     explicit ExtNetworkRequest(QWidget *_parent = nullptr, const QString &_filePath = ""); |     explicit ExtNetworkRequest(QObject *_parent = nullptr, const QString &_filePath = ""); | ||||||
|     ~ExtNetworkRequest() override; |     ~ExtNetworkRequest() override; | ||||||
|     ExtNetworkRequest *copy(const QString &_fileName, int _number) override; |     ExtNetworkRequest *copy(const QString &_fileName, int _number) override; | ||||||
|     // get methods |     // get methods | ||||||
| @ -46,7 +40,7 @@ public: | |||||||
| public slots: | public slots: | ||||||
|     void readConfiguration() override; |     void readConfiguration() override; | ||||||
|     QVariantHash run() override; |     QVariantHash run() override; | ||||||
|     int showConfiguration(const QVariant &_args) override; |     int showConfiguration(QWidget *_parent, const QVariant &_args) override; | ||||||
|     void writeConfiguration() const override; |     void writeConfiguration() const override; | ||||||
|  |  | ||||||
| private slots: | private slots: | ||||||
| @ -57,14 +51,10 @@ private: | |||||||
|     QNetworkAccessManager *m_manager = nullptr; |     QNetworkAccessManager *m_manager = nullptr; | ||||||
|     QUrl m_url; |     QUrl m_url; | ||||||
|     bool m_isRunning = false; |     bool m_isRunning = false; | ||||||
|     Ui::ExtNetworkRequest *ui = nullptr; |  | ||||||
|     void initUrl(); |     void initUrl(); | ||||||
|     void translate() override; |     void translate(void *_ui) override; | ||||||
|     // properties |     // properties | ||||||
|     QString m_stringUrl = "https://httpbin.org/get"; |     QString m_stringUrl = "https://httpbin.org/get"; | ||||||
|     // values |     // values | ||||||
|     QVariantHash m_values; |     QVariantHash m_values; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| #endif /* EXTNETWORKREQUEST_H */ |  | ||||||
|  | |||||||
| @ -20,7 +20,6 @@ | |||||||
|  |  | ||||||
| #include <KI18n/KLocalizedString> | #include <KI18n/KLocalizedString> | ||||||
|  |  | ||||||
| #include <QDir> |  | ||||||
| #include <QSettings> | #include <QSettings> | ||||||
|  |  | ||||||
| #include <qreplytimeout/qreplytimeout.h> | #include <qreplytimeout/qreplytimeout.h> | ||||||
| @ -29,16 +28,13 @@ | |||||||
| #include "stooqquotesprovider.h" | #include "stooqquotesprovider.h" | ||||||
|  |  | ||||||
|  |  | ||||||
| ExtQuotes::ExtQuotes(QWidget *_parent, const QString &_filePath) | ExtQuotes::ExtQuotes(QObject *_parent, const QString &_filePath) | ||||||
|     : AbstractExtItem(_parent, _filePath) |     : AbstractExtItem(_parent, _filePath) | ||||||
|     , ui(new Ui::ExtQuotes) |  | ||||||
| { | { | ||||||
|     qCDebug(LOG_LIB) << __PRETTY_FUNCTION__; |     qCDebug(LOG_LIB) << __PRETTY_FUNCTION__; | ||||||
|  |  | ||||||
|     if (!_filePath.isEmpty()) |     if (!_filePath.isEmpty()) | ||||||
|         ExtQuotes::readConfiguration(); |         ExtQuotes::readConfiguration(); | ||||||
|     ui->setupUi(this); |  | ||||||
|     ExtQuotes::translate(); |  | ||||||
|  |  | ||||||
|     m_values[tag("price")] = 0.0; |     m_values[tag("price")] = 0.0; | ||||||
|     m_values[tag("pricechg")] = 0.0; |     m_values[tag("pricechg")] = 0.0; | ||||||
| @ -50,9 +46,8 @@ ExtQuotes::ExtQuotes(QWidget *_parent, const QString &_filePath) | |||||||
|     // HACK declare as child of nullptr to avoid crash with plasmawindowed |     // HACK declare as child of nullptr to avoid crash with plasmawindowed | ||||||
|     // in the destructor |     // in the destructor | ||||||
|     m_manager = new QNetworkAccessManager(nullptr); |     m_manager = new QNetworkAccessManager(nullptr); | ||||||
|     connect(m_manager, SIGNAL(finished(QNetworkReply *)), this, SLOT(quotesReplyReceived(QNetworkReply *))); |     connect(m_manager, &QNetworkAccessManager::finished, this, &ExtQuotes::quotesReplyReceived); | ||||||
|  |     connect(this, &ExtQuotes::requestDataUpdate, this, &ExtQuotes::sendRequest); | ||||||
|     connect(this, SIGNAL(requestDataUpdate()), this, SLOT(sendRequest())); |  | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| @ -60,11 +55,10 @@ ExtQuotes::~ExtQuotes() | |||||||
| { | { | ||||||
|     qCDebug(LOG_LIB) << __PRETTY_FUNCTION__; |     qCDebug(LOG_LIB) << __PRETTY_FUNCTION__; | ||||||
|  |  | ||||||
|     disconnect(m_manager, SIGNAL(finished(QNetworkReply *)), this, SLOT(quotesReplyReceived(QNetworkReply *))); |     disconnect(m_manager, &QNetworkAccessManager::finished, this, &ExtQuotes::quotesReplyReceived); | ||||||
|     disconnect(this, SIGNAL(requestDataUpdate()), this, SLOT(sendRequest())); |     disconnect(this, &ExtQuotes::requestDataUpdate, this, &ExtQuotes::sendRequest); | ||||||
|  |  | ||||||
|     m_manager->deleteLater(); |     m_manager->deleteLater(); | ||||||
|     delete ui; |  | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| @ -72,7 +66,7 @@ ExtQuotes *ExtQuotes::copy(const QString &_fileName, const int _number) | |||||||
| { | { | ||||||
|     qCDebug(LOG_LIB) << "File" << _fileName << "with number" << _number; |     qCDebug(LOG_LIB) << "File" << _fileName << "with number" << _number; | ||||||
|  |  | ||||||
|     auto *item = new ExtQuotes(dynamic_cast<QWidget *>(parent()), _fileName); |     auto item = new ExtQuotes(parent(), _fileName); | ||||||
|     copyDefaults(item); |     copyDefaults(item); | ||||||
|     item->setNumber(_number); |     item->setNumber(_number); | ||||||
|     item->setTicker(ticker()); |     item->setTicker(ticker()); | ||||||
| @ -126,10 +120,15 @@ QVariantHash ExtQuotes::run() | |||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| int ExtQuotes::showConfiguration(const QVariant &_args) | int ExtQuotes::showConfiguration(QWidget *_parent, const QVariant &_args) | ||||||
| { | { | ||||||
|     Q_UNUSED(_args) |     Q_UNUSED(_args) | ||||||
|  |  | ||||||
|  |     auto dialog = new QDialog(_parent); | ||||||
|  |     auto ui = new Ui::ExtQuotes(); | ||||||
|  |     ui->setupUi(dialog); | ||||||
|  |     translate(ui); | ||||||
|  |  | ||||||
|     ui->lineEdit_name->setText(name()); |     ui->lineEdit_name->setText(name()); | ||||||
|     ui->lineEdit_comment->setText(comment()); |     ui->lineEdit_comment->setText(comment()); | ||||||
|     ui->label_numberValue->setText(QString("%1").arg(number())); |     ui->label_numberValue->setText(QString("%1").arg(number())); | ||||||
| @ -139,20 +138,24 @@ int ExtQuotes::showConfiguration(const QVariant &_args) | |||||||
|     ui->lineEdit_socket->setText(socket()); |     ui->lineEdit_socket->setText(socket()); | ||||||
|     ui->spinBox_interval->setValue(interval()); |     ui->spinBox_interval->setValue(interval()); | ||||||
|  |  | ||||||
|     int ret = exec(); |     auto ret = dialog->exec(); | ||||||
|     if (ret != 1) |     if (ret == 1) { | ||||||
|         return ret; |         setName(ui->lineEdit_name->text()); | ||||||
|     setName(ui->lineEdit_name->text()); |         setComment(ui->lineEdit_comment->text()); | ||||||
|     setComment(ui->lineEdit_comment->text()); |         setNumber(ui->label_numberValue->text().toInt()); | ||||||
|     setNumber(ui->label_numberValue->text().toInt()); |         setApiVersion(AW_EXTQUOTES_API); | ||||||
|     setApiVersion(AW_EXTQUOTES_API); |         setTicker(ui->lineEdit_ticker->text()); | ||||||
|     setTicker(ui->lineEdit_ticker->text()); |         setActive(ui->checkBox_active->checkState() == Qt::Checked); | ||||||
|     setActive(ui->checkBox_active->checkState() == Qt::Checked); |         setCron(ui->lineEdit_schedule->text()); | ||||||
|     setCron(ui->lineEdit_schedule->text()); |         setSocket(ui->lineEdit_socket->text()); | ||||||
|     setSocket(ui->lineEdit_socket->text()); |         setInterval(ui->spinBox_interval->value()); | ||||||
|     setInterval(ui->spinBox_interval->value()); |  | ||||||
|  |         writeConfiguration(); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     dialog->deleteLater(); | ||||||
|  |     delete ui; | ||||||
|  |  | ||||||
|     writeConfiguration(); |  | ||||||
|     return ret; |     return ret; | ||||||
| } | } | ||||||
|  |  | ||||||
| @ -182,7 +185,7 @@ void ExtQuotes::quotesReplyReceived(QNetworkReply *_reply) | |||||||
|     auto text = _reply->readAll(); |     auto text = _reply->readAll(); | ||||||
|     _reply->deleteLater(); |     _reply->deleteLater(); | ||||||
|  |  | ||||||
|     QVariantHash data = m_providerObject->parse(text, m_values); |     auto data = m_providerObject->parse(text, m_values); | ||||||
|     if (data.isEmpty()) |     if (data.isEmpty()) | ||||||
|         return; |         return; | ||||||
|     m_values = data; |     m_values = data; | ||||||
| @ -194,7 +197,7 @@ void ExtQuotes::quotesReplyReceived(QNetworkReply *_reply) | |||||||
| void ExtQuotes::sendRequest() | void ExtQuotes::sendRequest() | ||||||
| { | { | ||||||
|     m_isRunning = true; |     m_isRunning = true; | ||||||
|     QNetworkReply *reply = m_manager->get(QNetworkRequest(m_providerObject->url())); |     auto reply = m_manager->get(QNetworkRequest(m_providerObject->url())); | ||||||
|     new QReplyTimeout(reply, REQUEST_TIMEOUT); |     new QReplyTimeout(reply, REQUEST_TIMEOUT); | ||||||
| } | } | ||||||
|  |  | ||||||
| @ -210,8 +213,10 @@ void ExtQuotes::initProvider() | |||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| void ExtQuotes::translate() | void ExtQuotes::translate(void *_ui) | ||||||
| { | { | ||||||
|  |     auto ui = reinterpret_cast<Ui::ExtQuotes *>(_ui); | ||||||
|  |  | ||||||
|     ui->label_name->setText(i18n("Name")); |     ui->label_name->setText(i18n("Name")); | ||||||
|     ui->label_comment->setText(i18n("Comment")); |     ui->label_comment->setText(i18n("Comment")); | ||||||
|     ui->label_number->setText(i18n("Tag")); |     ui->label_number->setText(i18n("Tag")); | ||||||
|  | |||||||
| @ -15,8 +15,7 @@ | |||||||
|  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * |  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * | ||||||
|  ***************************************************************************/ |  ***************************************************************************/ | ||||||
|  |  | ||||||
| #ifndef EXTQUOTES_H | #pragma once | ||||||
| #define EXTQUOTES_H |  | ||||||
|  |  | ||||||
| #include <QNetworkReply> | #include <QNetworkReply> | ||||||
|  |  | ||||||
| @ -24,10 +23,6 @@ | |||||||
|  |  | ||||||
|  |  | ||||||
| class AbstractQuotesProvider; | class AbstractQuotesProvider; | ||||||
| namespace Ui |  | ||||||
| { |  | ||||||
| class ExtQuotes; |  | ||||||
| } |  | ||||||
|  |  | ||||||
| class ExtQuotes : public AbstractExtItem | class ExtQuotes : public AbstractExtItem | ||||||
| { | { | ||||||
| @ -35,7 +30,7 @@ class ExtQuotes : public AbstractExtItem | |||||||
|     Q_PROPERTY(QString ticker READ ticker WRITE setTicker) |     Q_PROPERTY(QString ticker READ ticker WRITE setTicker) | ||||||
|  |  | ||||||
| public: | public: | ||||||
|     explicit ExtQuotes(QWidget *_parent = nullptr, const QString &_filePath = ""); |     explicit ExtQuotes(QObject *_parent = nullptr, const QString &_filePath = ""); | ||||||
|     ~ExtQuotes() override; |     ~ExtQuotes() override; | ||||||
|     ExtQuotes *copy(const QString &_fileName, int _number) override; |     ExtQuotes *copy(const QString &_fileName, int _number) override; | ||||||
|     // get methods |     // get methods | ||||||
| @ -47,7 +42,7 @@ public: | |||||||
| public slots: | public slots: | ||||||
|     void readConfiguration() override; |     void readConfiguration() override; | ||||||
|     QVariantHash run() override; |     QVariantHash run() override; | ||||||
|     int showConfiguration(const QVariant &_args) override; |     int showConfiguration(QWidget *_parent, const QVariant &_args) override; | ||||||
|     void writeConfiguration() const override; |     void writeConfiguration() const override; | ||||||
|  |  | ||||||
| private slots: | private slots: | ||||||
| @ -58,14 +53,10 @@ private: | |||||||
|     AbstractQuotesProvider *m_providerObject = nullptr; |     AbstractQuotesProvider *m_providerObject = nullptr; | ||||||
|     QNetworkAccessManager *m_manager = nullptr; |     QNetworkAccessManager *m_manager = nullptr; | ||||||
|     bool m_isRunning = false; |     bool m_isRunning = false; | ||||||
|     Ui::ExtQuotes *ui = nullptr; |  | ||||||
|     void initProvider(); |     void initProvider(); | ||||||
|     void translate() override; |     void translate(void *_ui) override; | ||||||
|     // properties |     // properties | ||||||
|     QString m_ticker = "EURUSD=X"; |     QString m_ticker = "EURUSD=X"; | ||||||
|     // values |     // values | ||||||
|     QVariantHash m_values; |     QVariantHash m_values; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| #endif /* EXTQUOTES_H */ |  | ||||||
|  | |||||||
| @ -24,30 +24,26 @@ | |||||||
| #include <QJsonDocument> | #include <QJsonDocument> | ||||||
| #include <QSettings> | #include <QSettings> | ||||||
| #include <QStandardPaths> | #include <QStandardPaths> | ||||||
| #include <QTextCodec> |  | ||||||
|  |  | ||||||
| #include "awdebug.h" | #include "awdebug.h" | ||||||
|  |  | ||||||
|  |  | ||||||
| ExtScript::ExtScript(QWidget *_parent, const QString &_filePath) | ExtScript::ExtScript(QObject *_parent, const QString &_filePath) | ||||||
|     : AbstractExtItem(_parent, _filePath) |     : AbstractExtItem(_parent, _filePath) | ||||||
|     , ui(new Ui::ExtScript) |  | ||||||
| { | { | ||||||
|     qCDebug(LOG_LIB) << __PRETTY_FUNCTION__; |     qCDebug(LOG_LIB) << __PRETTY_FUNCTION__; | ||||||
|  |  | ||||||
|     if (!_filePath.isEmpty()) |     if (!_filePath.isEmpty()) | ||||||
|         ExtScript::readConfiguration(); |         ExtScript::readConfiguration(); | ||||||
|     readJsonFilters(); |     readJsonFilters(); | ||||||
|     ui->setupUi(this); |  | ||||||
|     ExtScript::translate(); |  | ||||||
|  |  | ||||||
|     m_values[tag("custom")] = ""; |     m_values[tag("custom")] = ""; | ||||||
|  |  | ||||||
|     m_process = new QProcess(nullptr); |     m_process = new QProcess(nullptr); | ||||||
|     connect(m_process, SIGNAL(finished(int, QProcess::ExitStatus)), this, SLOT(updateValue())); |     connect(m_process, &QProcess::finished, [this]() { return updateValue(); }); | ||||||
|     m_process->waitForFinished(0); |     m_process->waitForFinished(0); | ||||||
|  |  | ||||||
|     connect(this, SIGNAL(requestDataUpdate()), this, SLOT(startProcess())); |     connect(this, &ExtScript::requestDataUpdate, this, &ExtScript::startProcess); | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| @ -55,11 +51,9 @@ ExtScript::~ExtScript() | |||||||
| { | { | ||||||
|     qCDebug(LOG_LIB) << __PRETTY_FUNCTION__; |     qCDebug(LOG_LIB) << __PRETTY_FUNCTION__; | ||||||
|  |  | ||||||
|     disconnect(m_process, SIGNAL(finished(int, QProcess::ExitStatus)), this, SLOT(updateValue())); |  | ||||||
|     m_process->kill(); |     m_process->kill(); | ||||||
|     m_process->deleteLater(); |     m_process->deleteLater(); | ||||||
|     disconnect(this, SIGNAL(requestDataUpdate()), this, SLOT(startProcess())); |     disconnect(this, &ExtScript::requestDataUpdate, this, &ExtScript::startProcess); | ||||||
|     delete ui; |  | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| @ -67,7 +61,7 @@ ExtScript *ExtScript::copy(const QString &_fileName, const int _number) | |||||||
| { | { | ||||||
|     qCDebug(LOG_LIB) << "File" << _fileName << "with number" << _number; |     qCDebug(LOG_LIB) << "File" << _fileName << "with number" << _number; | ||||||
|  |  | ||||||
|     auto *item = new ExtScript(dynamic_cast<QWidget *>(parent()), _fileName); |     auto item = new ExtScript(parent(), _fileName); | ||||||
|     copyDefaults(item); |     copyDefaults(item); | ||||||
|     item->setExecutable(executable()); |     item->setExecutable(executable()); | ||||||
|     item->setNumber(_number); |     item->setNumber(_number); | ||||||
| @ -180,7 +174,7 @@ QString ExtScript::applyFilters(QString _value) const | |||||||
|  |  | ||||||
|     for (auto &filt : filters()) { |     for (auto &filt : filters()) { | ||||||
|         qCInfo(LOG_LIB) << "Found filter" << filt; |         qCInfo(LOG_LIB) << "Found filter" << filt; | ||||||
|         QVariantMap filter = m_jsonFilters[filt].toMap(); |         auto filter = m_jsonFilters[filt].toMap(); | ||||||
|         if (filter.isEmpty()) { |         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; |             continue; | ||||||
| @ -226,17 +220,17 @@ void ExtScript::readConfiguration() | |||||||
|  |  | ||||||
| void ExtScript::readJsonFilters() | void ExtScript::readJsonFilters() | ||||||
| { | { | ||||||
|     QString fileName = jsonFiltersFile(); |     auto fileName = jsonFiltersFile(); | ||||||
|     QFile jsonFile(fileName); |     QFile jsonFile(fileName); | ||||||
|     if (!jsonFile.open(QIODevice::ReadOnly | QIODevice::Text)) { |     if (!jsonFile.open(QIODevice::ReadOnly | QIODevice::Text)) { | ||||||
|         qCWarning(LOG_LIB) << "Could not open" << fileName; |         qCWarning(LOG_LIB) << "Could not open" << fileName; | ||||||
|         return; |         return; | ||||||
|     } |     } | ||||||
|     QString jsonText = jsonFile.readAll(); |     auto jsonText = jsonFile.readAll(); | ||||||
|     jsonFile.close(); |     jsonFile.close(); | ||||||
|  |  | ||||||
|     QJsonParseError error{}; |     QJsonParseError error{}; | ||||||
|     QJsonDocument jsonDoc = QJsonDocument::fromJson(jsonText.toUtf8(), &error); |     auto jsonDoc = QJsonDocument::fromJson(jsonText, &error); | ||||||
|     if (error.error != QJsonParseError::NoError) { |     if (error.error != QJsonParseError::NoError) { | ||||||
|         qCWarning(LOG_LIB) << "Parse error" << error.errorString(); |         qCWarning(LOG_LIB) << "Parse error" << error.errorString(); | ||||||
|         return; |         return; | ||||||
| @ -257,10 +251,15 @@ QVariantHash ExtScript::run() | |||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| int ExtScript::showConfiguration(const QVariant &_args) | int ExtScript::showConfiguration(QWidget *_parent, const QVariant &_args) | ||||||
| { | { | ||||||
|     Q_UNUSED(_args) |     Q_UNUSED(_args) | ||||||
|  |  | ||||||
|  |     auto dialog = new QDialog(_parent); | ||||||
|  |     auto ui = new Ui::ExtScript(); | ||||||
|  |     ui->setupUi(dialog); | ||||||
|  |     translate(ui); | ||||||
|  |  | ||||||
|     ui->lineEdit_name->setText(name()); |     ui->lineEdit_name->setText(name()); | ||||||
|     ui->lineEdit_comment->setText(comment()); |     ui->lineEdit_comment->setText(comment()); | ||||||
|     ui->label_numberValue->setText(QString("%1").arg(number())); |     ui->label_numberValue->setText(QString("%1").arg(number())); | ||||||
| @ -275,25 +274,29 @@ int ExtScript::showConfiguration(const QVariant &_args) | |||||||
|     ui->checkBox_linesFilter->setCheckState(filters().contains("newline") ? Qt::Checked : Qt::Unchecked); |     ui->checkBox_linesFilter->setCheckState(filters().contains("newline") ? Qt::Checked : Qt::Unchecked); | ||||||
|     ui->checkBox_spaceFilter->setCheckState(filters().contains("space") ? Qt::Checked : Qt::Unchecked); |     ui->checkBox_spaceFilter->setCheckState(filters().contains("space") ? Qt::Checked : Qt::Unchecked); | ||||||
|  |  | ||||||
|     int ret = exec(); |     int ret = dialog->exec(); | ||||||
|     if (ret != 1) |     if (ret == 1) { | ||||||
|         return ret; |         setName(ui->lineEdit_name->text()); | ||||||
|     setName(ui->lineEdit_name->text()); |         setComment(ui->lineEdit_comment->text()); | ||||||
|     setComment(ui->lineEdit_comment->text()); |         setNumber(ui->label_numberValue->text().toInt()); | ||||||
|     setNumber(ui->label_numberValue->text().toInt()); |         setApiVersion(AW_EXTSCRIPT_API); | ||||||
|     setApiVersion(AW_EXTSCRIPT_API); |         setExecutable(ui->lineEdit_command->text()); | ||||||
|     setExecutable(ui->lineEdit_command->text()); |         setActive(ui->checkBox_active->checkState() == Qt::Checked); | ||||||
|     setActive(ui->checkBox_active->checkState() == Qt::Checked); |         setRedirect(static_cast<Redirect>(ui->comboBox_redirect->currentIndex())); | ||||||
|     setRedirect(static_cast<Redirect>(ui->comboBox_redirect->currentIndex())); |         setCron(ui->lineEdit_schedule->text()); | ||||||
|     setCron(ui->lineEdit_schedule->text()); |         setSocket(ui->lineEdit_socket->text()); | ||||||
|     setSocket(ui->lineEdit_socket->text()); |         setInterval(ui->spinBox_interval->value()); | ||||||
|     setInterval(ui->spinBox_interval->value()); |         // filters | ||||||
|     // filters |         updateFilter("color", ui->checkBox_colorFilter->checkState() == Qt::Checked); | ||||||
|     updateFilter("color", ui->checkBox_colorFilter->checkState() == Qt::Checked); |         updateFilter("newline", ui->checkBox_linesFilter->checkState() == Qt::Checked); | ||||||
|     updateFilter("newline", ui->checkBox_linesFilter->checkState() == Qt::Checked); |         updateFilter("space", ui->checkBox_spaceFilter->checkState() == Qt::Checked); | ||||||
|     updateFilter("space", ui->checkBox_spaceFilter->checkState() == Qt::Checked); |  | ||||||
|  |         writeConfiguration(); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     dialog->deleteLater(); | ||||||
|  |     delete ui; | ||||||
|  |  | ||||||
|     writeConfiguration(); |  | ||||||
|     return ret; |     return ret; | ||||||
| } | } | ||||||
|  |  | ||||||
| @ -325,9 +328,9 @@ void ExtScript::startProcess() | |||||||
| void ExtScript::updateValue() | void ExtScript::updateValue() | ||||||
| { | { | ||||||
|     qCInfo(LOG_LIB) << "Cmd returns" << m_process->exitCode(); |     qCInfo(LOG_LIB) << "Cmd returns" << m_process->exitCode(); | ||||||
|     QString qdebug = QTextCodec::codecForMib(106)->toUnicode(m_process->readAllStandardError()).trimmed(); |     auto qdebug = QString::fromUtf8(m_process->readAllStandardError()).trimmed(); | ||||||
|     qCInfo(LOG_LIB) << "Error" << qdebug; |     qCInfo(LOG_LIB) << "Error" << qdebug; | ||||||
|     QString qoutput = QTextCodec::codecForMib(106)->toUnicode(m_process->readAllStandardOutput()).trimmed(); |     auto qoutput = QString::fromUtf8(m_process->readAllStandardOutput()).trimmed(); | ||||||
|     qCInfo(LOG_LIB) << "Output" << qoutput; |     qCInfo(LOG_LIB) << "Output" << qoutput; | ||||||
|     QString strValue; |     QString strValue; | ||||||
|  |  | ||||||
| @ -351,8 +354,10 @@ void ExtScript::updateValue() | |||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| void ExtScript::translate() | void ExtScript::translate(void *_ui) | ||||||
| { | { | ||||||
|  |     auto ui = reinterpret_cast<Ui::ExtScript *>(_ui); | ||||||
|  |  | ||||||
|     ui->label_name->setText(i18n("Name")); |     ui->label_name->setText(i18n("Name")); | ||||||
|     ui->label_comment->setText(i18n("Comment")); |     ui->label_comment->setText(i18n("Comment")); | ||||||
|     ui->label_number->setText(i18n("Tag")); |     ui->label_number->setText(i18n("Tag")); | ||||||
|  | |||||||
| @ -15,19 +15,13 @@ | |||||||
|  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * |  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * | ||||||
|  ***************************************************************************/ |  ***************************************************************************/ | ||||||
|  |  | ||||||
| #ifndef EXTSCRIPT_H | #pragma once | ||||||
| #define EXTSCRIPT_H |  | ||||||
|  |  | ||||||
| #include <QProcess> | #include <QProcess> | ||||||
|  |  | ||||||
| #include "abstractextitem.h" | #include "abstractextitem.h" | ||||||
|  |  | ||||||
|  |  | ||||||
| namespace Ui |  | ||||||
| { |  | ||||||
| class ExtScript; |  | ||||||
| } |  | ||||||
|  |  | ||||||
| class ExtScript : public AbstractExtItem | class ExtScript : public AbstractExtItem | ||||||
| { | { | ||||||
|     Q_OBJECT |     Q_OBJECT | ||||||
| @ -38,7 +32,7 @@ class ExtScript : public AbstractExtItem | |||||||
| public: | public: | ||||||
|     enum class Redirect { stdout2stderr = 0, nothing = 1, stderr2stdout = 2, swap = 3 }; |     enum class Redirect { stdout2stderr = 0, nothing = 1, stderr2stdout = 2, swap = 3 }; | ||||||
|  |  | ||||||
|     explicit ExtScript(QWidget *_parent = nullptr, const QString &_filePath = ""); |     explicit ExtScript(QObject *_parent = nullptr, const QString &_filePath = ""); | ||||||
|     ~ExtScript() override; |     ~ExtScript() override; | ||||||
|     ExtScript *copy(const QString &_fileName, int _number) override; |     ExtScript *copy(const QString &_fileName, int _number) override; | ||||||
|     static QString jsonFiltersFile(); |     static QString jsonFiltersFile(); | ||||||
| @ -62,7 +56,7 @@ public slots: | |||||||
|     void readConfiguration() override; |     void readConfiguration() override; | ||||||
|     void readJsonFilters(); |     void readJsonFilters(); | ||||||
|     QVariantHash run() override; |     QVariantHash run() override; | ||||||
|     int showConfiguration(const QVariant &_args) override; |     int showConfiguration(QWidget *_parent, const QVariant &_args) override; | ||||||
|     void writeConfiguration() const override; |     void writeConfiguration() const override; | ||||||
|  |  | ||||||
| private slots: | private slots: | ||||||
| @ -71,8 +65,7 @@ private slots: | |||||||
|  |  | ||||||
| private: | private: | ||||||
|     QProcess *m_process = nullptr; |     QProcess *m_process = nullptr; | ||||||
|     Ui::ExtScript *ui = nullptr; |     void translate(void *_ui) override; | ||||||
|     void translate() override; |  | ||||||
|     // properties |     // properties | ||||||
|     QString m_executable = "/usr/bin/true"; |     QString m_executable = "/usr/bin/true"; | ||||||
|     QStringList m_filters = QStringList(); |     QStringList m_filters = QStringList(); | ||||||
| @ -82,6 +75,3 @@ private: | |||||||
|     QVariantMap m_jsonFilters; |     QVariantMap m_jsonFilters; | ||||||
|     QVariantHash m_values; |     QVariantHash m_values; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| #endif /* EXTSCRIPT_H */ |  | ||||||
|  | |||||||
| @ -21,29 +21,25 @@ | |||||||
| #include <KI18n/KLocalizedString> | #include <KI18n/KLocalizedString> | ||||||
|  |  | ||||||
| #include <QSettings> | #include <QSettings> | ||||||
| #include <QTextCodec> |  | ||||||
|  |  | ||||||
| #include "awdebug.h" | #include "awdebug.h" | ||||||
|  |  | ||||||
|  |  | ||||||
| ExtUpgrade::ExtUpgrade(QWidget *_parent, const QString &_filePath) | ExtUpgrade::ExtUpgrade(QObject *_parent, const QString &_filePath) | ||||||
|     : AbstractExtItem(_parent, _filePath) |     : AbstractExtItem(_parent, _filePath) | ||||||
|     , ui(new Ui::ExtUpgrade) |  | ||||||
| { | { | ||||||
|     qCDebug(LOG_LIB) << __PRETTY_FUNCTION__; |     qCDebug(LOG_LIB) << __PRETTY_FUNCTION__; | ||||||
|  |  | ||||||
|     if (!_filePath.isEmpty()) |     if (!_filePath.isEmpty()) | ||||||
|         ExtUpgrade::readConfiguration(); |         ExtUpgrade::readConfiguration(); | ||||||
|     ui->setupUi(this); |  | ||||||
|     ExtUpgrade::translate(); |  | ||||||
|  |  | ||||||
|     m_values[tag("pkgcount")] = 0; |     m_values[tag("pkgcount")] = 0; | ||||||
|  |  | ||||||
|     m_process = new QProcess(nullptr); |     m_process = new QProcess(nullptr); | ||||||
|     connect(m_process, SIGNAL(finished(int)), this, SLOT(updateValue())); |     connect(m_process, &QProcess::finished, [this]() { return updateValue(); }); | ||||||
|     m_process->waitForFinished(0); |     m_process->waitForFinished(0); | ||||||
|  |  | ||||||
|     connect(this, SIGNAL(requestDataUpdate()), this, SLOT(startProcess())); |     connect(this, &ExtUpgrade::requestDataUpdate, this, &ExtUpgrade::startProcess); | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| @ -53,8 +49,7 @@ ExtUpgrade::~ExtUpgrade() | |||||||
|  |  | ||||||
|     m_process->kill(); |     m_process->kill(); | ||||||
|     m_process->deleteLater(); |     m_process->deleteLater(); | ||||||
|     disconnect(this, SIGNAL(requestDataUpdate()), this, SLOT(startProcess())); |     disconnect(this, &ExtUpgrade::requestDataUpdate, this, &ExtUpgrade::startProcess); | ||||||
|     delete ui; |  | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| @ -62,7 +57,7 @@ ExtUpgrade *ExtUpgrade::copy(const QString &_fileName, const int _number) | |||||||
| { | { | ||||||
|     qCDebug(LOG_LIB) << "File" << _fileName << "with number" << _number; |     qCDebug(LOG_LIB) << "File" << _fileName << "with number" << _number; | ||||||
|  |  | ||||||
|     auto *item = new ExtUpgrade(dynamic_cast<QWidget *>(parent()), _fileName); |     auto item = new ExtUpgrade(parent(), _fileName); | ||||||
|     copyDefaults(item); |     copyDefaults(item); | ||||||
|     item->setExecutable(executable()); |     item->setExecutable(executable()); | ||||||
|     item->setFilter(filter()); |     item->setFilter(filter()); | ||||||
| @ -150,10 +145,15 @@ QVariantHash ExtUpgrade::run() | |||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| int ExtUpgrade::showConfiguration(const QVariant &_args) | int ExtUpgrade::showConfiguration(QWidget *_parent, const QVariant &_args) | ||||||
| { | { | ||||||
|     Q_UNUSED(_args) |     Q_UNUSED(_args) | ||||||
|  |  | ||||||
|  |     auto dialog = new QDialog(_parent); | ||||||
|  |     auto ui = new Ui::ExtUpgrade(); | ||||||
|  |     ui->setupUi(dialog); | ||||||
|  |     translate(ui); | ||||||
|  |  | ||||||
|     ui->lineEdit_name->setText(name()); |     ui->lineEdit_name->setText(name()); | ||||||
|     ui->lineEdit_comment->setText(comment()); |     ui->lineEdit_comment->setText(comment()); | ||||||
|     ui->label_numberValue->setText(QString("%1").arg(number())); |     ui->label_numberValue->setText(QString("%1").arg(number())); | ||||||
| @ -165,22 +165,26 @@ int ExtUpgrade::showConfiguration(const QVariant &_args) | |||||||
|     ui->lineEdit_socket->setText(socket()); |     ui->lineEdit_socket->setText(socket()); | ||||||
|     ui->spinBox_interval->setValue(interval()); |     ui->spinBox_interval->setValue(interval()); | ||||||
|  |  | ||||||
|     int ret = exec(); |     auto ret = dialog->exec(); | ||||||
|     if (ret != 1) |     if (ret == 1) { | ||||||
|         return ret; |         setName(ui->lineEdit_name->text()); | ||||||
|     setName(ui->lineEdit_name->text()); |         setComment(ui->lineEdit_comment->text()); | ||||||
|     setComment(ui->lineEdit_comment->text()); |         setNumber(ui->label_numberValue->text().toInt()); | ||||||
|     setNumber(ui->label_numberValue->text().toInt()); |         setApiVersion(AW_EXTUPGRADE_API); | ||||||
|     setApiVersion(AW_EXTUPGRADE_API); |         setExecutable(ui->lineEdit_command->text()); | ||||||
|     setExecutable(ui->lineEdit_command->text()); |         setFilter(ui->lineEdit_filter->text()); | ||||||
|     setFilter(ui->lineEdit_filter->text()); |         setActive(ui->checkBox_active->checkState() == Qt::Checked); | ||||||
|     setActive(ui->checkBox_active->checkState() == Qt::Checked); |         setNull(ui->spinBox_null->value()); | ||||||
|     setNull(ui->spinBox_null->value()); |         setCron(ui->lineEdit_schedule->text()); | ||||||
|     setCron(ui->lineEdit_schedule->text()); |         setSocket(ui->lineEdit_socket->text()); | ||||||
|     setSocket(ui->lineEdit_socket->text()); |         setInterval(ui->spinBox_interval->value()); | ||||||
|     setInterval(ui->spinBox_interval->value()); |  | ||||||
|  |         writeConfiguration(); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     dialog->deleteLater(); | ||||||
|  |     delete ui; | ||||||
|  |  | ||||||
|     writeConfiguration(); |  | ||||||
|     return ret; |     return ret; | ||||||
| } | } | ||||||
|  |  | ||||||
| @ -214,18 +218,20 @@ void ExtUpgrade::updateValue() | |||||||
|     qCInfo(LOG_LIB) << "Cmd returns" << m_process->exitCode(); |     qCInfo(LOG_LIB) << "Cmd returns" << m_process->exitCode(); | ||||||
|     qCInfo(LOG_LIB) << "Error" << m_process->readAllStandardError(); |     qCInfo(LOG_LIB) << "Error" << m_process->readAllStandardError(); | ||||||
|  |  | ||||||
|     QString qoutput = QTextCodec::codecForMib(106)->toUnicode(m_process->readAllStandardOutput()).trimmed(); |     auto qoutput = QString::fromUtf8(m_process->readAllStandardOutput()).trimmed(); | ||||||
|     m_values[tag("pkgcount")] = [this](const QString &output) { |     m_values[tag("pkgcount")] = [this](const QString &output) { | ||||||
|         return filter().isEmpty() ? output.split('\n', Qt::SkipEmptyParts).count() - null() |         return filter().isEmpty() ? output.split('\n', Qt::SkipEmptyParts).count() - null() | ||||||
|                                   : output.split('\n', Qt::SkipEmptyParts).filter(QRegExp(filter())).count(); |                                   : output.split('\n', Qt::SkipEmptyParts).filter(QRegularExpression(filter())).count(); | ||||||
|     }(qoutput); |     }(qoutput); | ||||||
|  |  | ||||||
|     emit(dataReceived(m_values)); |     emit(dataReceived(m_values)); | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| void ExtUpgrade::translate() | void ExtUpgrade::translate(void *_ui) | ||||||
| { | { | ||||||
|  |     auto ui = reinterpret_cast<Ui::ExtUpgrade *>(_ui); | ||||||
|  |  | ||||||
|     ui->label_name->setText(i18n("Name")); |     ui->label_name->setText(i18n("Name")); | ||||||
|     ui->label_comment->setText(i18n("Comment")); |     ui->label_comment->setText(i18n("Comment")); | ||||||
|     ui->label_number->setText(i18n("Tag")); |     ui->label_number->setText(i18n("Tag")); | ||||||
|  | |||||||
| @ -15,19 +15,13 @@ | |||||||
|  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * |  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * | ||||||
|  ***************************************************************************/ |  ***************************************************************************/ | ||||||
|  |  | ||||||
| #ifndef EXTUPGRADE_H | #pragma once | ||||||
| #define EXTUPGRADE_H |  | ||||||
|  |  | ||||||
| #include <QProcess> | #include <QProcess> | ||||||
|  |  | ||||||
| #include "abstractextitem.h" | #include "abstractextitem.h" | ||||||
|  |  | ||||||
|  |  | ||||||
| namespace Ui |  | ||||||
| { |  | ||||||
| class ExtUpgrade; |  | ||||||
| } |  | ||||||
|  |  | ||||||
| class ExtUpgrade : public AbstractExtItem | class ExtUpgrade : public AbstractExtItem | ||||||
| { | { | ||||||
|     Q_OBJECT |     Q_OBJECT | ||||||
| @ -36,7 +30,7 @@ class ExtUpgrade : public AbstractExtItem | |||||||
|     Q_PROPERTY(int null READ null WRITE setNull) |     Q_PROPERTY(int null READ null WRITE setNull) | ||||||
|  |  | ||||||
| public: | public: | ||||||
|     explicit ExtUpgrade(QWidget *_parent = nullptr, const QString &_filePath = ""); |     explicit ExtUpgrade(QObject *_parent = nullptr, const QString &_filePath = ""); | ||||||
|     ~ExtUpgrade() override; |     ~ExtUpgrade() override; | ||||||
|     ExtUpgrade *copy(const QString &_fileName, int _number) override; |     ExtUpgrade *copy(const QString &_fileName, int _number) override; | ||||||
|     // get methods |     // get methods | ||||||
| @ -52,7 +46,7 @@ public: | |||||||
| public slots: | public slots: | ||||||
|     void readConfiguration() override; |     void readConfiguration() override; | ||||||
|     QVariantHash run() override; |     QVariantHash run() override; | ||||||
|     int showConfiguration(const QVariant &_args) override; |     int showConfiguration(QWidget *_parent, const QVariant &_args) override; | ||||||
|     void writeConfiguration() const override; |     void writeConfiguration() const override; | ||||||
|  |  | ||||||
| private slots: | private slots: | ||||||
| @ -61,8 +55,7 @@ private slots: | |||||||
|  |  | ||||||
| private: | private: | ||||||
|     QProcess *m_process = nullptr; |     QProcess *m_process = nullptr; | ||||||
|     Ui::ExtUpgrade *ui = nullptr; |     void translate(void *_ui) override; | ||||||
|     void translate() override; |  | ||||||
|     // properties |     // properties | ||||||
|     QString m_executable = "/usr/bin/true"; |     QString m_executable = "/usr/bin/true"; | ||||||
|     QString m_filter = ""; |     QString m_filter = ""; | ||||||
| @ -70,6 +63,3 @@ private: | |||||||
|     // internal properties |     // internal properties | ||||||
|     QVariantHash m_values; |     QVariantHash m_values; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| #endif /* EXTUPGRADE_H */ |  | ||||||
|  | |||||||
| @ -29,20 +29,16 @@ | |||||||
|  |  | ||||||
| #include "awdebug.h" | #include "awdebug.h" | ||||||
| #include "owmweatherprovider.h" | #include "owmweatherprovider.h" | ||||||
| #include "yahooweatherprovider.h" |  | ||||||
|  |  | ||||||
|  |  | ||||||
| ExtWeather::ExtWeather(QWidget *_parent, const QString &_filePath) | ExtWeather::ExtWeather(QObject *_parent, const QString &_filePath) | ||||||
|     : AbstractExtItem(_parent, _filePath) |     : AbstractExtItem(_parent, _filePath) | ||||||
|     , ui(new Ui::ExtWeather) |  | ||||||
| { | { | ||||||
|     qCDebug(LOG_LIB) << __PRETTY_FUNCTION__; |     qCDebug(LOG_LIB) << __PRETTY_FUNCTION__; | ||||||
|  |  | ||||||
|     if (!_filePath.isEmpty()) |     if (!_filePath.isEmpty()) | ||||||
|         ExtWeather::readConfiguration(); |         ExtWeather::readConfiguration(); | ||||||
|     readJsonMap(); |     readJsonMap(); | ||||||
|     ui->setupUi(this); |  | ||||||
|     ExtWeather::translate(); |  | ||||||
|  |  | ||||||
|     m_values[tag("weatherId")] = 0; |     m_values[tag("weatherId")] = 0; | ||||||
|     m_values[tag("weather")] = ""; |     m_values[tag("weather")] = ""; | ||||||
| @ -53,9 +49,8 @@ ExtWeather::ExtWeather(QWidget *_parent, const QString &_filePath) | |||||||
|     // HACK declare as child of nullptr to avoid crash with plasmawindowed |     // HACK declare as child of nullptr to avoid crash with plasmawindowed | ||||||
|     // in the destructor |     // in the destructor | ||||||
|     m_manager = new QNetworkAccessManager(nullptr); |     m_manager = new QNetworkAccessManager(nullptr); | ||||||
|     connect(m_manager, SIGNAL(finished(QNetworkReply *)), this, SLOT(weatherReplyReceived(QNetworkReply *))); |     connect(m_manager, &QNetworkAccessManager::finished, this, &ExtWeather::weatherReplyReceived); | ||||||
|  |     connect(this, &ExtWeather::requestDataUpdate, this, &ExtWeather::sendRequest); | ||||||
|     connect(this, SIGNAL(requestDataUpdate()), this, SLOT(sendRequest())); |  | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| @ -63,11 +58,10 @@ ExtWeather::~ExtWeather() | |||||||
| { | { | ||||||
|     qCDebug(LOG_LIB) << __PRETTY_FUNCTION__; |     qCDebug(LOG_LIB) << __PRETTY_FUNCTION__; | ||||||
|  |  | ||||||
|     disconnect(m_manager, SIGNAL(finished(QNetworkReply *)), this, SLOT(weatherReplyReceived(QNetworkReply *))); |     disconnect(m_manager, &QNetworkAccessManager::finished, this, &ExtWeather::weatherReplyReceived); | ||||||
|     disconnect(this, SIGNAL(requestDataUpdate()), this, SLOT(sendRequest())); |     disconnect(this, &ExtWeather::requestDataUpdate, this, &ExtWeather::sendRequest); | ||||||
|  |  | ||||||
|     m_manager->deleteLater(); |     m_manager->deleteLater(); | ||||||
|     delete ui; |  | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| @ -75,7 +69,7 @@ ExtWeather *ExtWeather::copy(const QString &_fileName, const int _number) | |||||||
| { | { | ||||||
|     qCDebug(LOG_LIB) << "File" << _fileName << "number" << _number; |     qCDebug(LOG_LIB) << "File" << _fileName << "number" << _number; | ||||||
|  |  | ||||||
|     auto *item = new ExtWeather(dynamic_cast<QWidget *>(parent()), _fileName); |     auto item = new ExtWeather(parent(), _fileName); | ||||||
|     copyDefaults(item); |     copyDefaults(item); | ||||||
|     item->setCity(city()); |     item->setCity(city()); | ||||||
|     item->setCountry(country()); |     item->setCountry(country()); | ||||||
| @ -102,7 +96,7 @@ QString ExtWeather::weatherFromInt(const int _id) const | |||||||
| { | { | ||||||
|     qCDebug(LOG_LIB) << "Weather ID" << _id; |     qCDebug(LOG_LIB) << "Weather ID" << _id; | ||||||
|  |  | ||||||
|     QVariantMap map = m_jsonMap[m_image ? "image" : "text"].toMap(); |     auto map = m_jsonMap[m_image ? "image" : "text"].toMap(); | ||||||
|     return map.value(QString::number(_id), map["default"]).toString(); |     return map.value(QString::number(_id), map["default"]).toString(); | ||||||
| } | } | ||||||
|  |  | ||||||
| @ -155,7 +149,7 @@ int ExtWeather::ts() const | |||||||
|  |  | ||||||
| QString ExtWeather::uniq() const | QString ExtWeather::uniq() const | ||||||
| { | { | ||||||
|     return QString("%1 (%2) at %3").arg(city()).arg(country()).arg(ts()); |     return QString("%1 (%2) at %3").arg(city(), country()).arg(ts()); | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| @ -236,17 +230,17 @@ void ExtWeather::readConfiguration() | |||||||
|  |  | ||||||
| void ExtWeather::readJsonMap() | void ExtWeather::readJsonMap() | ||||||
| { | { | ||||||
|     QString fileName = jsonMapFile(); |     auto fileName = jsonMapFile(); | ||||||
|     QFile jsonFile(fileName); |     QFile jsonFile(fileName); | ||||||
|     if (!jsonFile.open(QIODevice::ReadOnly | QIODevice::Text)) { |     if (!jsonFile.open(QIODevice::ReadOnly | QIODevice::Text)) { | ||||||
|         qCWarning(LOG_LIB) << "Could not open" << fileName; |         qCWarning(LOG_LIB) << "Could not open" << fileName; | ||||||
|         return; |         return; | ||||||
|     } |     } | ||||||
|     QString jsonText = jsonFile.readAll(); |     auto jsonText = jsonFile.readAll(); | ||||||
|     jsonFile.close(); |     jsonFile.close(); | ||||||
|  |  | ||||||
|     QJsonParseError error{}; |     QJsonParseError error{}; | ||||||
|     QJsonDocument jsonDoc = QJsonDocument::fromJson(jsonText.toUtf8(), &error); |     auto jsonDoc = QJsonDocument::fromJson(jsonText, &error); | ||||||
|     if (error.error != QJsonParseError::NoError) { |     if (error.error != QJsonParseError::NoError) { | ||||||
|         qCWarning(LOG_LIB) << "Parse error" << error.errorString(); |         qCWarning(LOG_LIB) << "Parse error" << error.errorString(); | ||||||
|         return; |         return; | ||||||
| @ -267,10 +261,15 @@ QVariantHash ExtWeather::run() | |||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| int ExtWeather::showConfiguration(const QVariant &_args) | int ExtWeather::showConfiguration(QWidget *_parent, const QVariant &_args) | ||||||
| { | { | ||||||
|     Q_UNUSED(_args) |     Q_UNUSED(_args) | ||||||
|  |  | ||||||
|  |     auto dialog = new QDialog(_parent); | ||||||
|  |     auto ui = new Ui::ExtWeather(); | ||||||
|  |     ui->setupUi(dialog); | ||||||
|  |     translate(ui); | ||||||
|  |  | ||||||
|     ui->lineEdit_name->setText(name()); |     ui->lineEdit_name->setText(name()); | ||||||
|     ui->lineEdit_comment->setText(comment()); |     ui->lineEdit_comment->setText(comment()); | ||||||
|     ui->label_numberValue->setText(QString("%1").arg(number())); |     ui->label_numberValue->setText(QString("%1").arg(number())); | ||||||
| @ -284,24 +283,28 @@ int ExtWeather::showConfiguration(const QVariant &_args) | |||||||
|     ui->lineEdit_socket->setText(socket()); |     ui->lineEdit_socket->setText(socket()); | ||||||
|     ui->spinBox_interval->setValue(interval()); |     ui->spinBox_interval->setValue(interval()); | ||||||
|  |  | ||||||
|     int ret = exec(); |     int ret = dialog->exec(); | ||||||
|     if (ret != 1) |     if (ret == 1) { | ||||||
|         return ret; |         setName(ui->lineEdit_name->text()); | ||||||
|     setName(ui->lineEdit_name->text()); |         setComment(ui->lineEdit_comment->text()); | ||||||
|     setComment(ui->lineEdit_comment->text()); |         setNumber(ui->label_numberValue->text().toInt()); | ||||||
|     setNumber(ui->label_numberValue->text().toInt()); |         setApiVersion(AW_EXTWEATHER_API); | ||||||
|     setApiVersion(AW_EXTWEATHER_API); |         setCity(ui->lineEdit_city->text()); | ||||||
|     setCity(ui->lineEdit_city->text()); |         setCountry(ui->lineEdit_country->text()); | ||||||
|     setCountry(ui->lineEdit_country->text()); |         setProvider(static_cast<Provider>(ui->comboBox_provider->currentIndex())); | ||||||
|     setProvider(static_cast<Provider>(ui->comboBox_provider->currentIndex())); |         setTs(ui->spinBox_timestamp->value()); | ||||||
|     setTs(ui->spinBox_timestamp->value()); |         setImage(ui->checkBox_image->checkState() == Qt::Checked); | ||||||
|     setImage(ui->checkBox_image->checkState() == Qt::Checked); |         setActive(ui->checkBox_active->checkState() == Qt::Checked); | ||||||
|     setActive(ui->checkBox_active->checkState() == Qt::Checked); |         setCron(ui->lineEdit_schedule->text()); | ||||||
|     setCron(ui->lineEdit_schedule->text()); |         setSocket(ui->lineEdit_socket->text()); | ||||||
|     setSocket(ui->lineEdit_socket->text()); |         setInterval(ui->spinBox_interval->value()); | ||||||
|     setInterval(ui->spinBox_interval->value()); |  | ||||||
|  |         writeConfiguration(); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     dialog->deleteLater(); | ||||||
|  |     delete ui; | ||||||
|  |  | ||||||
|     writeConfiguration(); |  | ||||||
|     return ret; |     return ret; | ||||||
| } | } | ||||||
|  |  | ||||||
| @ -328,7 +331,7 @@ void ExtWeather::writeConfiguration() const | |||||||
| void ExtWeather::sendRequest() | void ExtWeather::sendRequest() | ||||||
| { | { | ||||||
|     m_isRunning = true; |     m_isRunning = true; | ||||||
|     QNetworkReply *reply = m_manager->get(QNetworkRequest(m_providerObject->url())); |     auto reply = m_manager->get(QNetworkRequest(m_providerObject->url())); | ||||||
|     new QReplyTimeout(reply, REQUEST_TIMEOUT); |     new QReplyTimeout(reply, REQUEST_TIMEOUT); | ||||||
| } | } | ||||||
|  |  | ||||||
| @ -342,14 +345,14 @@ void ExtWeather::weatherReplyReceived(QNetworkReply *_reply) | |||||||
|  |  | ||||||
|     m_isRunning = false; |     m_isRunning = false; | ||||||
|     QJsonParseError error{}; |     QJsonParseError error{}; | ||||||
|     QJsonDocument jsonDoc = QJsonDocument::fromJson(_reply->readAll(), &error); |     auto jsonDoc = QJsonDocument::fromJson(_reply->readAll(), &error); | ||||||
|     _reply->deleteLater(); |     _reply->deleteLater(); | ||||||
|     if (error.error != QJsonParseError::NoError) { |     if (error.error != QJsonParseError::NoError) { | ||||||
|         qCWarning(LOG_LIB) << "Parse error" << error.errorString(); |         qCWarning(LOG_LIB) << "Parse error" << error.errorString(); | ||||||
|         return; |         return; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     QVariantHash data = m_providerObject->parse(jsonDoc.toVariant().toMap()); |     auto data = m_providerObject->parse(jsonDoc.toVariant().toMap()); | ||||||
|     if (data.isEmpty()) |     if (data.isEmpty()) | ||||||
|         return; |         return; | ||||||
|     m_values = data; |     m_values = data; | ||||||
| @ -370,8 +373,10 @@ void ExtWeather::initProvider() | |||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| void ExtWeather::translate() | void ExtWeather::translate(void *_ui) | ||||||
| { | { | ||||||
|  |     auto ui = reinterpret_cast<Ui::ExtWeather *>(_ui); | ||||||
|  |  | ||||||
|     ui->label_name->setText(i18n("Name")); |     ui->label_name->setText(i18n("Name")); | ||||||
|     ui->label_comment->setText(i18n("Comment")); |     ui->label_comment->setText(i18n("Comment")); | ||||||
|     ui->label_number->setText(i18n("Tag")); |     ui->label_number->setText(i18n("Tag")); | ||||||
|  | |||||||
| @ -15,8 +15,7 @@ | |||||||
|  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * |  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * | ||||||
|  ***************************************************************************/ |  ***************************************************************************/ | ||||||
|  |  | ||||||
| #ifndef EXTWEATHER_H | #pragma once | ||||||
| #define EXTWEATHER_H |  | ||||||
|  |  | ||||||
| #include <QNetworkReply> | #include <QNetworkReply> | ||||||
|  |  | ||||||
| @ -42,7 +41,7 @@ class ExtWeather : public AbstractExtItem | |||||||
| public: | public: | ||||||
|     enum class Provider { OWM = 0, Yahoo = 1 }; |     enum class Provider { OWM = 0, Yahoo = 1 }; | ||||||
|  |  | ||||||
|     explicit ExtWeather(QWidget *_parent = nullptr, const QString &_filePath = ""); |     explicit ExtWeather(QObject *_parent = nullptr, const QString &_filePath = ""); | ||||||
|     ~ExtWeather() override; |     ~ExtWeather() override; | ||||||
|     ExtWeather *copy(const QString &_fileName, int _number) override; |     ExtWeather *copy(const QString &_fileName, int _number) override; | ||||||
|     static QString jsonMapFile(); |     static QString jsonMapFile(); | ||||||
| @ -67,7 +66,7 @@ public slots: | |||||||
|     void readConfiguration() override; |     void readConfiguration() override; | ||||||
|     void readJsonMap(); |     void readJsonMap(); | ||||||
|     QVariantHash run() override; |     QVariantHash run() override; | ||||||
|     int showConfiguration(const QVariant &_args) override; |     int showConfiguration(QWidget *_parent, const QVariant &_args) override; | ||||||
|     void writeConfiguration() const override; |     void writeConfiguration() const override; | ||||||
|  |  | ||||||
| private slots: | private slots: | ||||||
| @ -78,9 +77,8 @@ private: | |||||||
|     AbstractWeatherProvider *m_providerObject = nullptr; |     AbstractWeatherProvider *m_providerObject = nullptr; | ||||||
|     QNetworkAccessManager *m_manager = nullptr; |     QNetworkAccessManager *m_manager = nullptr; | ||||||
|     bool m_isRunning = false; |     bool m_isRunning = false; | ||||||
|     Ui::ExtWeather *ui = nullptr; |  | ||||||
|     void initProvider(); |     void initProvider(); | ||||||
|     void translate() override; |     void translate(void *_ui) override; | ||||||
|     // properties |     // properties | ||||||
|     QString m_city = "London"; |     QString m_city = "London"; | ||||||
|     QString m_country = "uk"; |     QString m_country = "uk"; | ||||||
| @ -91,6 +89,3 @@ private: | |||||||
|     // values |     // values | ||||||
|     QVariantHash m_values; |     QVariantHash m_values; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| #endif /* EXTWEATHER_H */ |  | ||||||
|  | |||||||
| @ -32,9 +32,8 @@ | |||||||
| #include "graphicalitemhelper.h" | #include "graphicalitemhelper.h" | ||||||
|  |  | ||||||
|  |  | ||||||
| GraphicalItem::GraphicalItem(QWidget *_parent, const QString &_filePath) | GraphicalItem::GraphicalItem(QObject *_parent, const QString &_filePath) | ||||||
|     : AbstractExtItem(_parent, _filePath) |     : AbstractExtItem(_parent, _filePath) | ||||||
|     , ui(new Ui::GraphicalItem) |  | ||||||
| { | { | ||||||
|     qCDebug(LOG_LIB) << __PRETTY_FUNCTION__; |     qCDebug(LOG_LIB) << __PRETTY_FUNCTION__; | ||||||
|  |  | ||||||
| @ -53,21 +52,6 @@ GraphicalItem::GraphicalItem(QWidget *_parent, const QString &_filePath) | |||||||
|  |  | ||||||
|     if (!_filePath.isEmpty()) |     if (!_filePath.isEmpty()) | ||||||
|         GraphicalItem::readConfiguration(); |         GraphicalItem::readConfiguration(); | ||||||
|     ui->setupUi(this); |  | ||||||
|     GraphicalItem::translate(); |  | ||||||
|  |  | ||||||
|     connect(ui->checkBox_custom, SIGNAL(stateChanged(int)), this, SLOT(changeValue(int))); |  | ||||||
|     connect(ui->comboBox_type, SIGNAL(currentIndexChanged(int)), this, SLOT(changeCountState(int))); |  | ||||||
|     connect(ui->toolButton_activeColor, SIGNAL(clicked()), this, SLOT(changeColor())); |  | ||||||
|     connect(ui->toolButton_inactiveColor, SIGNAL(clicked()), this, SLOT(changeColor())); |  | ||||||
| } |  | ||||||
|  |  | ||||||
|  |  | ||||||
| GraphicalItem::~GraphicalItem() |  | ||||||
| { |  | ||||||
|     qCDebug(LOG_LIB) << __PRETTY_FUNCTION__; |  | ||||||
|  |  | ||||||
|     delete ui; |  | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| @ -75,7 +59,7 @@ GraphicalItem *GraphicalItem::copy(const QString &_fileName, const int _number) | |||||||
| { | { | ||||||
|     qCDebug(LOG_LIB) << "File" << _fileName << "with number" << _number; |     qCDebug(LOG_LIB) << "File" << _fileName << "with number" << _number; | ||||||
|  |  | ||||||
|     auto *item = new GraphicalItem(dynamic_cast<QWidget *>(parent()), _fileName); |     auto item = new GraphicalItem(parent(), _fileName); | ||||||
|     copyDefaults(item); |     copyDefaults(item); | ||||||
|     item->setActiveColor(activeColor()); |     item->setActiveColor(activeColor()); | ||||||
|     item->setBar(bar()); |     item->setBar(bar()); | ||||||
| @ -100,7 +84,7 @@ QString GraphicalItem::image(const QVariant &value) | |||||||
|  |  | ||||||
|     m_scene->clear(); |     m_scene->clear(); | ||||||
|     int scale[2] = {1, 1}; |     int scale[2] = {1, 1}; | ||||||
|     float converted = GraphicalItemHelper::getPercents(value.toFloat(), minValue(), maxValue()); |     auto converted = GraphicalItemHelper::getPercents(value.toFloat(), minValue(), maxValue()); | ||||||
|  |  | ||||||
|     // paint |     // paint | ||||||
|     switch (m_type) { |     switch (m_type) { | ||||||
| @ -132,11 +116,11 @@ QString GraphicalItem::image(const QVariant &value) | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     // convert |     // convert | ||||||
|     QPixmap pixmap = m_view->grab().transformed(QTransform().scale(scale[0], scale[1])); |     auto pixmap = m_view->grab().transformed(QTransform().scale(scale[0], scale[1])); | ||||||
|     QByteArray byteArray; |     QByteArray byteArray; | ||||||
|     QBuffer buffer(&byteArray); |     QBuffer buffer(&byteArray); | ||||||
|     pixmap.save(&buffer, "PNG"); |     pixmap.save(&buffer, "PNG"); | ||||||
|     QString url = QString("<img src=\"data:image/png;base64,%1\"/>").arg(QString(byteArray.toBase64())); |     auto url = QString("<img src=\"data:image/png;base64,%1\"/>").arg(QString(byteArray.toBase64())); | ||||||
|  |  | ||||||
|     return url; |     return url; | ||||||
| } | } | ||||||
| @ -438,10 +422,21 @@ void GraphicalItem::readConfiguration() | |||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| int GraphicalItem::showConfiguration(const QVariant &_args) | int GraphicalItem::showConfiguration(QWidget *_parent, const QVariant &_args) | ||||||
| { | { | ||||||
|     qCDebug(LOG_LIB) << "Combobox arguments" << _args; |     qCDebug(LOG_LIB) << "Combobox arguments" << _args; | ||||||
|     QStringList tags = _args.toStringList(); |     auto tags = _args.toStringList(); | ||||||
|  |  | ||||||
|  |     auto dialog = new QDialog(_parent); | ||||||
|  |     auto ui = new Ui::GraphicalItem(); | ||||||
|  |     ui->setupUi(dialog); | ||||||
|  |     translate(ui); | ||||||
|  |  | ||||||
|  |     connect(ui->checkBox_custom, &QCheckBox::stateChanged, [this, ui](const int state) { changeValue(ui, state); }); | ||||||
|  |     connect(ui->comboBox_type, &QComboBox::currentIndexChanged, | ||||||
|  |             [this, ui](const int state) { changeCountState(ui, state); }); | ||||||
|  |     connect(ui->toolButton_activeColor, &QToolButton::clicked, [this, ui]() { changeColor(ui); }); | ||||||
|  |     connect(ui->toolButton_inactiveColor, &QToolButton::clicked, [this, ui]() { changeColor(ui); }); | ||||||
|  |  | ||||||
|     ui->lineEdit_name->setText(name()); |     ui->lineEdit_name->setText(name()); | ||||||
|     ui->lineEdit_comment->setText(comment()); |     ui->lineEdit_comment->setText(comment()); | ||||||
| @ -476,25 +471,29 @@ int GraphicalItem::showConfiguration(const QVariant &_args) | |||||||
|     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->stateChanged(ui->checkBox_custom->checkState())); | ||||||
|  |  | ||||||
|     int ret = exec(); |     int ret = dialog->exec(); | ||||||
|     if (ret != 1) |     if (ret == 1) { | ||||||
|         return ret; |         setName(ui->lineEdit_name->text()); | ||||||
|     setName(ui->lineEdit_name->text()); |         setComment(ui->lineEdit_comment->text()); | ||||||
|     setComment(ui->lineEdit_comment->text()); |         setApiVersion(AW_GRAPHITEM_API); | ||||||
|     setApiVersion(AW_GRAPHITEM_API); |         setCount(ui->spinBox_count->value()); | ||||||
|     setCount(ui->spinBox_count->value()); |         setCustom(ui->checkBox_custom->isChecked()); | ||||||
|     setCustom(ui->checkBox_custom->isChecked()); |         setBar(m_custom ? ui->lineEdit_customValue->text() : ui->comboBox_value->currentText()); | ||||||
|     setBar(m_custom ? ui->lineEdit_customValue->text() : ui->comboBox_value->currentText()); |         setMaxValue(static_cast<float>(ui->doubleSpinBox_max->value())); | ||||||
|     setMaxValue(static_cast<float>(ui->doubleSpinBox_max->value())); |         setMinValue(static_cast<float>(ui->doubleSpinBox_min->value())); | ||||||
|     setMinValue(static_cast<float>(ui->doubleSpinBox_min->value())); |         setActiveColor(ui->lineEdit_activeColor->text()); | ||||||
|     setActiveColor(ui->lineEdit_activeColor->text()); |         setInactiveColor(ui->lineEdit_inactiveColor->text()); | ||||||
|     setInactiveColor(ui->lineEdit_inactiveColor->text()); |         setType(static_cast<Type>(ui->comboBox_type->currentIndex())); | ||||||
|     setType(static_cast<Type>(ui->comboBox_type->currentIndex())); |         setDirection(static_cast<Direction>(ui->comboBox_direction->currentIndex())); | ||||||
|     setDirection(static_cast<Direction>(ui->comboBox_direction->currentIndex())); |         setItemHeight(ui->spinBox_height->value()); | ||||||
|     setItemHeight(ui->spinBox_height->value()); |         setItemWidth(ui->spinBox_width->value()); | ||||||
|     setItemWidth(ui->spinBox_width->value()); |  | ||||||
|  |         writeConfiguration(); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     dialog->deleteLater(); | ||||||
|  |     delete ui; | ||||||
|  |  | ||||||
|     writeConfiguration(); |  | ||||||
|     return ret; |     return ret; | ||||||
| } | } | ||||||
|  |  | ||||||
| @ -524,23 +523,23 @@ void GraphicalItem::writeConfiguration() const | |||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| void GraphicalItem::changeColor() | void GraphicalItem::changeColor(Ui::GraphicalItem *_ui) | ||||||
| { | { | ||||||
|     QLineEdit *lineEdit; |     QLineEdit *lineEdit; | ||||||
|     int state; |     int state; | ||||||
|     if (sender() == ui->toolButton_activeColor) { |     if (sender() == _ui->toolButton_activeColor) { | ||||||
|         lineEdit = ui->lineEdit_activeColor; |         lineEdit = _ui->lineEdit_activeColor; | ||||||
|         state = ui->comboBox_activeImageType->currentIndex(); |         state = _ui->comboBox_activeImageType->currentIndex(); | ||||||
|     } else { |     } else { | ||||||
|         lineEdit = ui->lineEdit_inactiveColor; |         lineEdit = _ui->lineEdit_inactiveColor; | ||||||
|         state = ui->comboBox_inactiveImageType->currentIndex(); |         state = _ui->comboBox_inactiveImageType->currentIndex(); | ||||||
|     } |     } | ||||||
|     qCInfo(LOG_LIB) << "Using state" << state << "and lineEdit" << lineEdit; |     qCInfo(LOG_LIB) << "Using state" << state << "and lineEdit" << lineEdit; | ||||||
|  |  | ||||||
|     QString outputColor; |     QString outputColor; | ||||||
|     if (state == 0) { |     if (state == 0) { | ||||||
|         QColor color = GraphicalItemHelper::stringToColor(lineEdit->text()); |         auto color = GraphicalItemHelper::stringToColor(lineEdit->text()); | ||||||
|         QColor newColor = QColorDialog::getColor(color, this, i18n("Select color"), QColorDialog::ShowAlphaChannel); |         auto newColor = QColorDialog::getColor(color, nullptr, i18n("Select color"), QColorDialog::ShowAlphaChannel); | ||||||
|         if (!newColor.isValid()) |         if (!newColor.isValid()) | ||||||
|             return; |             return; | ||||||
|         qCInfo(LOG_LIB) << "Selected color" << newColor; |         qCInfo(LOG_LIB) << "Selected color" << newColor; | ||||||
| @ -553,9 +552,9 @@ void GraphicalItem::changeColor() | |||||||
|  |  | ||||||
|         outputColor = QString("color://%1").arg(colorText.join(',')); |         outputColor = QString("color://%1").arg(colorText.join(',')); | ||||||
|     } else if (state == 1) { |     } else if (state == 1) { | ||||||
|         QString path = lineEdit->text(); |         auto path = lineEdit->text(); | ||||||
|         QString directory = QFileInfo(path).absolutePath(); |         auto directory = QFileInfo(path).absolutePath(); | ||||||
|         outputColor = QFileDialog::getOpenFileUrl(this, i18n("Select path"), directory, |         outputColor = QFileDialog::getOpenFileUrl(nullptr, i18n("Select path"), directory, | ||||||
|                                                   i18n("Images (*.png *.bpm *.jpg);;All files (*.*)")) |                                                   i18n("Images (*.png *.bpm *.jpg);;All files (*.*)")) | ||||||
|                           .toString(); |                           .toString(); | ||||||
|  |  | ||||||
| @ -570,26 +569,28 @@ void GraphicalItem::changeColor() | |||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| void GraphicalItem::changeCountState(const int _state) | void GraphicalItem::changeCountState(Ui::GraphicalItem *_ui, const int _state) | ||||||
| { | { | ||||||
|     qCDebug(LOG_LIB) << "Current state is" << _state; |     qCDebug(LOG_LIB) << "Current state is" << _state; | ||||||
|  |  | ||||||
|     // 3 is magic number. Actually 3 is Graph mode |     // 3 is magic number. Actually 3 is Graph mode | ||||||
|     ui->widget_count->setHidden(_state != 3); |     _ui->widget_count->setHidden(_state != 3); | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| void GraphicalItem::changeValue(const int _state) | void GraphicalItem::changeValue(Ui::GraphicalItem *_ui, const int _state) | ||||||
| { | { | ||||||
|     qCDebug(LOG_LIB) << "Current state is" << _state; |     qCDebug(LOG_LIB) << "Current state is" << _state; | ||||||
|  |  | ||||||
|     ui->widget_value->setHidden(_state != Qt::Unchecked); |     _ui->widget_value->setHidden(_state != Qt::Unchecked); | ||||||
|     ui->widget_customValue->setHidden(_state == Qt::Unchecked); |     _ui->widget_customValue->setHidden(_state == Qt::Unchecked); | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| void GraphicalItem::translate() | void GraphicalItem::translate(void *_ui) | ||||||
| { | { | ||||||
|  |     auto ui = reinterpret_cast<Ui::GraphicalItem *>(_ui); | ||||||
|  |  | ||||||
|     ui->label_name->setText(i18n("Name")); |     ui->label_name->setText(i18n("Name")); | ||||||
|     ui->label_comment->setText(i18n("Comment")); |     ui->label_comment->setText(i18n("Comment")); | ||||||
|     ui->label_number->setText(i18n("Tag")); |     ui->label_number->setText(i18n("Tag")); | ||||||
|  | |||||||
| @ -15,8 +15,7 @@ | |||||||
|  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * |  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * | ||||||
|  ***************************************************************************/ |  ***************************************************************************/ | ||||||
|  |  | ||||||
| #ifndef GRAPHICALITEM_H | #pragma once | ||||||
| #define GRAPHICALITEM_H |  | ||||||
|  |  | ||||||
| #include <QColor> | #include <QColor> | ||||||
|  |  | ||||||
| @ -52,8 +51,7 @@ public: | |||||||
|     enum class Direction { LeftToRight = 0, RightToLeft = 1 }; |     enum class Direction { LeftToRight = 0, RightToLeft = 1 }; | ||||||
|     enum class Type { Horizontal = 0, Vertical = 1, Circle = 2, Graph = 3, Bars = 4 }; |     enum class Type { Horizontal = 0, Vertical = 1, Circle = 2, Graph = 3, Bars = 4 }; | ||||||
|  |  | ||||||
|     explicit GraphicalItem(QWidget *_parent = nullptr, const QString &_filePath = ""); |     explicit GraphicalItem(QObject *_parent = nullptr, const QString &_filePath = ""); | ||||||
|     ~GraphicalItem() override; |  | ||||||
|     GraphicalItem *copy(const QString &_fileName, int _number) override; |     GraphicalItem *copy(const QString &_fileName, int _number) override; | ||||||
|     QString image(const QVariant &value); |     QString image(const QVariant &value); | ||||||
|     void initScene(); |     void initScene(); | ||||||
| @ -92,20 +90,19 @@ public: | |||||||
| public slots: | public slots: | ||||||
|     void readConfiguration() override; |     void readConfiguration() override; | ||||||
|     QVariantHash run() override { return {}; }; |     QVariantHash run() override { return {}; }; | ||||||
|     int showConfiguration(const QVariant &_args) override; |     int showConfiguration(QWidget *_parent, const QVariant &_args) override; | ||||||
|     void writeConfiguration() const override; |     void writeConfiguration() const override; | ||||||
|  |  | ||||||
| private slots: | private slots: | ||||||
|     void changeColor(); |     void changeColor(Ui::GraphicalItem *_ui); | ||||||
|     void changeCountState(int _state); |     void changeCountState(Ui::GraphicalItem *_ui, int _state); | ||||||
|     void changeValue(int _state); |     void changeValue(Ui::GraphicalItem *_ui, int _state); | ||||||
|  |  | ||||||
| private: | private: | ||||||
|     GraphicalItemHelper *m_helper = nullptr; |     GraphicalItemHelper *m_helper = nullptr; | ||||||
|     QGraphicsScene *m_scene = nullptr; |     QGraphicsScene *m_scene = nullptr; | ||||||
|     QGraphicsView *m_view = nullptr; |     QGraphicsView *m_view = nullptr; | ||||||
|     Ui::GraphicalItem *ui = nullptr; |     void translate(void *_ui) override; | ||||||
|     void translate() override; |  | ||||||
|     // properties |     // properties | ||||||
|     QString m_bar = "cpu"; |     QString m_bar = "cpu"; | ||||||
|     int m_count = 100; |     int m_count = 100; | ||||||
| @ -120,6 +117,3 @@ private: | |||||||
|     QStringList m_usedKeys; |     QStringList m_usedKeys; | ||||||
|     int m_width = 100; |     int m_width = 100; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| #endif /* GRAPHICALITEM_H */ |  | ||||||
|  | |||||||
| @ -15,8 +15,7 @@ | |||||||
|  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * |  *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  * | ||||||
|  ***************************************************************************/ |  ***************************************************************************/ | ||||||
|  |  | ||||||
| #ifndef GRAPHICALITEMHELPER_H | #pragma once | ||||||
| #define GRAPHICALITEMHELPER_H |  | ||||||
|  |  | ||||||
| #include <QColor> | #include <QColor> | ||||||
| #include <QObject> | #include <QObject> | ||||||
| @ -56,6 +55,3 @@ private: | |||||||
|     // list of values which will be used to store data for graph type only |     // list of values which will be used to store data for graph type only | ||||||
|     QList<float> m_values; |     QList<float> m_values; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| #endif /* GRAPHICALITEMHELPER_H */ |  | ||||||
|  | |||||||
| @ -93,13 +93,13 @@ QVariantHash OWMWeatherProvider::parseSingleJson(const QVariantMap &_json) const | |||||||
|     // main data |     // main data | ||||||
|     QVariantMap mainWeather = _json["main"].toMap(); |     QVariantMap mainWeather = _json["main"].toMap(); | ||||||
|     if (!weather.isEmpty()) { |     if (!weather.isEmpty()) { | ||||||
|         output[tag("humidity")] = mainWeather["humidity"].toFloat(); |         output[tag("humidity")] = mainWeather["humidity"].toDouble(); | ||||||
|         output[tag("pressure")] = mainWeather["pressure"].toFloat(); |         output[tag("pressure")] = mainWeather["pressure"].toDouble(); | ||||||
|         output[tag("temperature")] = mainWeather["temp"].toFloat(); |         output[tag("temperature")] = mainWeather["temp"].toDouble(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     // timestamp |     // timestamp | ||||||
|     output[tag("timestamp")] = QDateTime::fromTime_t(_json["dt"].toUInt()).toUTC(); |     output[tag("timestamp")] = QDateTime::fromSecsSinceEpoch(_json["dt"].toUInt()).toUTC(); | ||||||
|  |  | ||||||
|     return output; |     return output; | ||||||
| } | } | ||||||
|  | |||||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user