mirror of
https://github.com/arcan1s/awesome-widgets.git
synced 2025-04-24 15:37:23 +00:00
* create cppcheck and clangformat targets
* apply code style (#67) * send values by reference * fix warnings on plugin destruction by disconnecting dataengines first * fix invalid hddtemp group definition
This commit is contained in:
parent
8645260f99
commit
17a8a1734b
@ -126,6 +126,12 @@ HIG
|
||||
|
||||
The recommended HIG is [KDE one](https://techbase.kde.org/Projects/Usability/HIG).
|
||||
|
||||
Licensing
|
||||
---------
|
||||
|
||||
All files should be licensed under GPLv3, the owner of the license should be the
|
||||
project (i.e. **awesome-widgets**). See **Tools** section for more details.
|
||||
|
||||
Logging
|
||||
-------
|
||||
|
||||
@ -212,7 +218,7 @@ Tools
|
||||
// declare with default value
|
||||
bool m_prop = false;
|
||||
```
|
||||
* Use `cppcheck` to avoid common errors in the code. Refer to `utils` for more
|
||||
details.
|
||||
* Use `clang-format` to apply valid code format. Refer to `utils` for more
|
||||
details.
|
||||
* Use `cppcheck` to avoid common errors in the code. To start application just
|
||||
run `make cppcheck`.
|
||||
* Use `clang-format` to apply valid code format. To start application just run
|
||||
`make clangformat`.
|
||||
|
@ -9,7 +9,7 @@ AlignTrailingComments: true
|
||||
AllowAllParametersOfDeclarationOnNextLine: true
|
||||
AllowShortBlocksOnASingleLine: false
|
||||
AllowShortCaseLabelsOnASingleLine: false
|
||||
AllowShortFunctionsOnASingleLine: All
|
||||
AllowShortFunctionsOnASingleLine: Inline
|
||||
AllowShortIfStatementsOnASingleLine: false
|
||||
AllowShortLoopsOnASingleLine: false
|
||||
AlwaysBreakAfterDefinitionReturnType: None
|
||||
@ -37,7 +37,7 @@ IndentWrappedFunctionNames: false
|
||||
KeepEmptyLinesAtTheStartOfBlocks: true
|
||||
MacroBlockBegin: ''
|
||||
MacroBlockEnd: ''
|
||||
MaxEmptyLinesToKeep: 1
|
||||
MaxEmptyLinesToKeep: 2
|
||||
NamespaceIndentation: None
|
||||
ObjCBlockIndentWidth: 2
|
||||
ObjCSpaceAfterProperty: false
|
41
sources/.idea/codeStyleSettings.xml
generated
Normal file
41
sources/.idea/codeStyleSettings.xml
generated
Normal file
@ -0,0 +1,41 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectCodeStyleSettingsManager">
|
||||
<option name="PER_PROJECT_SETTINGS">
|
||||
<value>
|
||||
<Objective-C-extensions>
|
||||
<option name="GENERATE_INSTANCE_VARIABLES_FOR_PROPERTIES" value="ASK" />
|
||||
<option name="RELEASE_STYLE" value="IVAR" />
|
||||
<option name="TYPE_QUALIFIERS_PLACEMENT" value="BEFORE" />
|
||||
<file>
|
||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Import" />
|
||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Macro" />
|
||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Typedef" />
|
||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Enum" />
|
||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Constant" />
|
||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Global" />
|
||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Struct" />
|
||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="FunctionPredecl" />
|
||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Function" />
|
||||
</file>
|
||||
<class>
|
||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Property" />
|
||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Synthesize" />
|
||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="InitMethod" />
|
||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="StaticMethod" />
|
||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="InstanceMethod" />
|
||||
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="DeallocMethod" />
|
||||
</class>
|
||||
<extensions>
|
||||
<pair source="cpp" header="h" />
|
||||
<pair source="c" header="h" />
|
||||
</extensions>
|
||||
</Objective-C-extensions>
|
||||
<XML>
|
||||
<option name="XML_LEGACY_SETTINGS_IMPORTED" value="true" />
|
||||
</XML>
|
||||
</value>
|
||||
</option>
|
||||
<option name="PREFERRED_PROJECT_CODE_STYLE" value="Qt" />
|
||||
</component>
|
||||
</project>
|
2
sources/.idea/sources.iml
generated
2
sources/.idea/sources.iml
generated
@ -66,6 +66,8 @@
|
||||
<sourceFolder url="file://$MODULE_DIR$/awesomewidgets/graphicalitem.h" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/awesomewidgets/graphicalitem.ui" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/checkgit.cmake" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/clang-format.cmake" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/cppcheck.cmake" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/desktop-panel/CMakeLists.txt" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/desktop-panel/metadata.desktop" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/desktop-panel/plugin/CMakeLists.txt" isTestSource="false" />
|
||||
|
675
sources/.idea/workspace.xml
generated
675
sources/.idea/workspace.xml
generated
@ -6,8 +6,10 @@
|
||||
<config projectName="awesomewidgets" targetName="awplugin" />
|
||||
<config projectName="awesomewidgets" targetName="awesomewidgets" />
|
||||
<config projectName="awesomewidgets" targetName="dpplugin_automoc" />
|
||||
<config projectName="awesomewidgets" targetName="cppcheck" />
|
||||
<config projectName="awesomewidgets" targetName="plasma_dataengine_extsysmon" />
|
||||
<config projectName="awesomewidgets" targetName="uninstall" />
|
||||
<config projectName="awesomewidgets" targetName="clangformat" />
|
||||
<config projectName="awesomewidgets" targetName="awplugin_automoc" />
|
||||
<config projectName="awesomewidgets" targetName="dpplugin" />
|
||||
<config projectName="awesomewidgets" targetName="plasma_dataengine_extsysmon_automoc" />
|
||||
@ -21,38 +23,88 @@
|
||||
</component>
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="2abf8d0d-47d8-4127-8499-2d7068a74152" name="Default" comment="">
|
||||
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/clang-format.cmake" />
|
||||
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/.idea/codeStyleSettings.xml" />
|
||||
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/cppcheck.cmake" />
|
||||
<change type="DELETED" beforePath="$PROJECT_DIR$/../utils/cpp-check.sh" afterPath="" />
|
||||
<change type="DELETED" beforePath="$PROJECT_DIR$/../utils/qt-code-style.sh" afterPath="" />
|
||||
<change type="MOVED" beforePath="$PROJECT_DIR$/../utils/.clang-format" afterPath="$PROJECT_DIR$/.clang-format" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/../CHANGELOG-RU" afterPath="$PROJECT_DIR$/../CHANGELOG-RU" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/../CHANGELOG" afterPath="$PROJECT_DIR$/../CHANGELOG" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/CMakeLists.txt" afterPath="$PROJECT_DIR$/CMakeLists.txt" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/awesome-widget/plugin/CMakeLists.txt" afterPath="$PROJECT_DIR$/awesome-widget/plugin/CMakeLists.txt" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/awesomewidgets/CMakeLists.txt" afterPath="$PROJECT_DIR$/awesomewidgets/CMakeLists.txt" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/desktop-panel/plugin/CMakeLists.txt" afterPath="$PROJECT_DIR$/desktop-panel/plugin/CMakeLists.txt" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/extsysmon/CMakeLists.txt" afterPath="$PROJECT_DIR$/extsysmon/CMakeLists.txt" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translations/CMakeLists.txt" afterPath="$PROJECT_DIR$/translations/CMakeLists.txt" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/../CONTRIBUTING.md" afterPath="$PROJECT_DIR$/../CONTRIBUTING.md" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/../packages/PKGBUILD" afterPath="$PROJECT_DIR$/../packages/PKGBUILD" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/awesome-widget/package/contents/ui/about.qml" afterPath="$PROJECT_DIR$/awesome-widget/package/contents/ui/about.qml" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/awesome-widget/package/contents/ui/advanced.qml" afterPath="$PROJECT_DIR$/awesome-widget/package/contents/ui/advanced.qml" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/awesome-widget/package/contents/ui/appearance.qml" afterPath="$PROJECT_DIR$/awesome-widget/package/contents/ui/appearance.qml" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/awesomewidgets/abstractextitem.cpp" afterPath="$PROJECT_DIR$/awesomewidgets/abstractextitem.cpp" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/awesomewidgets/abstractextitem.h" afterPath="$PROJECT_DIR$/awesomewidgets/abstractextitem.h" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/awesomewidgets/abstractextitemaggregator.cpp" afterPath="$PROJECT_DIR$/awesomewidgets/abstractextitemaggregator.cpp" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/extsysmon/sources/abstractextsysmonsource.h" afterPath="$PROJECT_DIR$/extsysmon/sources/abstractextsysmonsource.h" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/awesome-widget/plugin/awactions.cpp" afterPath="$PROJECT_DIR$/awesome-widget/plugin/awactions.cpp" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/awesome-widget/plugin/awactions.h" afterPath="$PROJECT_DIR$/awesome-widget/plugin/awactions.h" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/awesome-widget/plugin/awesomewidget.cpp" afterPath="$PROJECT_DIR$/awesome-widget/plugin/awesomewidget.cpp" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/awesome-widget/plugin/awconfighelper.cpp" afterPath="$PROJECT_DIR$/awesome-widget/plugin/awconfighelper.cpp" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/awesome-widget/plugin/awconfighelper.h" afterPath="$PROJECT_DIR$/awesome-widget/plugin/awconfighelper.h" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/awesome-widget/plugin/awdataaggregator.cpp" afterPath="$PROJECT_DIR$/awesome-widget/plugin/awdataaggregator.cpp" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/awesome-widget/plugin/awdataaggregator.h" afterPath="$PROJECT_DIR$/awesome-widget/plugin/awdataaggregator.h" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/awesome-widget/plugin/awdataengineaggregator.cpp" afterPath="$PROJECT_DIR$/awesome-widget/plugin/awdataengineaggregator.cpp" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/awesome-widget/plugin/awdataengineaggregator.h" afterPath="$PROJECT_DIR$/awesome-widget/plugin/awdataengineaggregator.h" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/awdebug.cpp" afterPath="$PROJECT_DIR$/awdebug.cpp" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/awdebug.h" afterPath="$PROJECT_DIR$/awdebug.h" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/.kdev4/awesomewidgets.kdev4" afterPath="$PROJECT_DIR$/.kdev4/awesomewidgets.kdev4" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/awesome-widget/plugin/awkeys.cpp" afterPath="$PROJECT_DIR$/awesome-widget/plugin/awkeys.cpp" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/awesome-widget/plugin/awkeys.h" afterPath="$PROJECT_DIR$/awesome-widget/plugin/awkeys.h" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/awesome-widget/plugin/awkeysaggregator.cpp" afterPath="$PROJECT_DIR$/awesome-widget/plugin/awkeysaggregator.cpp" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/awesome-widget/plugin/awkeysaggregator.h" afterPath="$PROJECT_DIR$/awesome-widget/plugin/awkeysaggregator.h" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/extsysmon/sources/batterysource.cpp" afterPath="$PROJECT_DIR$/extsysmon/sources/batterysource.cpp" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/checkgit.cmake" afterPath="$PROJECT_DIR$/checkgit.cmake" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/extsysmon/sources/customsource.cpp" afterPath="$PROJECT_DIR$/extsysmon/sources/customsource.cpp" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/extsysmon/sources/customsource.h" afterPath="$PROJECT_DIR$/extsysmon/sources/customsource.h" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/awesome-widget/package/contents/ui/dataengine.qml" afterPath="$PROJECT_DIR$/awesome-widget/package/contents/ui/dataengine.qml" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/extsysmon/sources/desktopsource.cpp" afterPath="$PROJECT_DIR$/extsysmon/sources/desktopsource.cpp" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/extsysmon/sources/desktopsource.h" afterPath="$PROJECT_DIR$/extsysmon/sources/desktopsource.h" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/desktop-panel/plugin/dpadds.cpp" afterPath="$PROJECT_DIR$/desktop-panel/plugin/dpadds.cpp" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/desktop-panel/plugin/dpadds.h" afterPath="$PROJECT_DIR$/desktop-panel/plugin/dpadds.h" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/awesomewidgets/extitemaggregator.h" afterPath="$PROJECT_DIR$/awesomewidgets/extitemaggregator.h" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/awesomewidgets/extquotes.cpp" afterPath="$PROJECT_DIR$/awesomewidgets/extquotes.cpp" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/awesomewidgets/extquotes.h" afterPath="$PROJECT_DIR$/awesomewidgets/extquotes.h" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/awesomewidgets/extscript.cpp" afterPath="$PROJECT_DIR$/awesomewidgets/extscript.cpp" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/awesomewidgets/extscript.h" afterPath="$PROJECT_DIR$/awesomewidgets/extscript.h" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/extsysmon/extsysmon.cpp" afterPath="$PROJECT_DIR$/extsysmon/extsysmon.cpp" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/extsysmon/extsysmon.h" afterPath="$PROJECT_DIR$/extsysmon/extsysmon.h" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/extsysmon/extsysmonaggregator.cpp" afterPath="$PROJECT_DIR$/extsysmon/extsysmonaggregator.cpp" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/extsysmon/extsysmonaggregator.h" afterPath="$PROJECT_DIR$/extsysmon/extsysmonaggregator.h" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/awesomewidgets/extupgrade.cpp" afterPath="$PROJECT_DIR$/awesomewidgets/extupgrade.cpp" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/awesomewidgets/extupgrade.h" afterPath="$PROJECT_DIR$/awesomewidgets/extupgrade.h" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/awesomewidgets/extweather.cpp" afterPath="$PROJECT_DIR$/awesomewidgets/extweather.cpp" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/awesomewidgets/extweather.h" afterPath="$PROJECT_DIR$/awesomewidgets/extweather.h" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/extsysmon/sources/gpuloadsource.cpp" afterPath="$PROJECT_DIR$/extsysmon/sources/gpuloadsource.cpp" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/extsysmon/sources/gpuloadsource.h" afterPath="$PROJECT_DIR$/extsysmon/sources/gpuloadsource.h" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/extsysmon/sources/gputempsource.cpp" afterPath="$PROJECT_DIR$/extsysmon/sources/gputempsource.cpp" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/extsysmon/sources/gputempsource.h" afterPath="$PROJECT_DIR$/extsysmon/sources/gputempsource.h" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/awesomewidgets/graphicalitem.cpp" afterPath="$PROJECT_DIR$/awesomewidgets/graphicalitem.cpp" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/awesomewidgets/graphicalitem.h" afterPath="$PROJECT_DIR$/awesomewidgets/graphicalitem.h" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/extsysmon/sources/hddtempsource.cpp" afterPath="$PROJECT_DIR$/extsysmon/sources/hddtempsource.cpp" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/extsysmon/sources/hddtempsource.h" afterPath="$PROJECT_DIR$/extsysmon/sources/hddtempsource.h" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/libraries.cmake" afterPath="$PROJECT_DIR$/libraries.cmake" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/extsysmon/sources/loadsource.cpp" afterPath="$PROJECT_DIR$/extsysmon/sources/loadsource.cpp" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/awesome-widget/package/contents/ui/main.qml" afterPath="$PROJECT_DIR$/awesome-widget/package/contents/ui/main.qml" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/misc.xml" afterPath="$PROJECT_DIR$/.idea/misc.xml" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/extsysmon/sources/loadsource.h" afterPath="$PROJECT_DIR$/extsysmon/sources/loadsource.h" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/extsysmon/sources/networksource.cpp" afterPath="$PROJECT_DIR$/extsysmon/sources/networksource.cpp" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/extsysmon/sources/networksource.h" afterPath="$PROJECT_DIR$/extsysmon/sources/networksource.h" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/packages-recipe.cmake" afterPath="$PROJECT_DIR$/packages-recipe.cmake" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/extsysmon/sources/playersource.cpp" afterPath="$PROJECT_DIR$/extsysmon/sources/playersource.cpp" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/extsysmon/sources/playersource.h" afterPath="$PROJECT_DIR$/extsysmon/sources/playersource.h" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/extsysmon/sources/processessource.cpp" afterPath="$PROJECT_DIR$/extsysmon/sources/processessource.cpp" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/extsysmon/sources/quotessource.cpp" afterPath="$PROJECT_DIR$/extsysmon/sources/quotessource.cpp" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/extsysmon/sources/quotessource.h" afterPath="$PROJECT_DIR$/extsysmon/sources/quotessource.h" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/sources.iml" afterPath="$PROJECT_DIR$/.idea/sources.iml" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/awesome-widget/package/contents/ui/tooltip.qml" afterPath="$PROJECT_DIR$/awesome-widget/package/contents/ui/tooltip.qml" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/vcs.xml" afterPath="$PROJECT_DIR$/.idea/vcs.xml" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/extsysmon/sources/updatesource.h" afterPath="$PROJECT_DIR$/extsysmon/sources/updatesource.h" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/extsysmon/sources/upgradesource.cpp" afterPath="$PROJECT_DIR$/extsysmon/sources/upgradesource.cpp" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/extsysmon/sources/upgradesource.h" afterPath="$PROJECT_DIR$/extsysmon/sources/upgradesource.h" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/extsysmon/sources/weathersource.cpp" afterPath="$PROJECT_DIR$/extsysmon/sources/weathersource.cpp" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/awesome-widget/package/contents/ui/widget.qml" afterPath="$PROJECT_DIR$/awesome-widget/package/contents/ui/widget.qml" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/extsysmon/sources/weathersource.h" afterPath="$PROJECT_DIR$/extsysmon/sources/weathersource.h" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
|
||||
</list>
|
||||
<ignored path="sources.iws" />
|
||||
@ -74,40 +126,68 @@
|
||||
</component>
|
||||
<component name="FileEditorManager">
|
||||
<leaf>
|
||||
<file leaf-file-name="awconfighelper.cpp" pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/awesome-widget/plugin/awconfighelper.cpp">
|
||||
<file leaf-file-name="awkeys.cpp" pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/awesome-widget/plugin/awkeys.cpp">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0">
|
||||
<caret line="143" column="33" selection-start-line="143" selection-start-column="33" selection-end-line="143" selection-end-column="33" />
|
||||
<folding>
|
||||
<element signature="e#1234#1261#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="awconfighelper.h" pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/awesome-widget/plugin/awconfighelper.h">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0">
|
||||
<caret line="25" column="0" selection-start-line="25" selection-start-column="0" selection-end-line="25" selection-end-column="0" />
|
||||
<folding>
|
||||
<element signature="e#1286#1304#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="advanced.qml" pinned="false" current-in-tab="true">
|
||||
<entry file="file://$PROJECT_DIR$/awesome-widget/package/contents/ui/advanced.qml">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="8.986733">
|
||||
<caret line="391" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="402" selection-end-column="0" />
|
||||
<caret line="779" column="42" selection-start-line="779" selection-start-column="42" selection-end-line="779" selection-end-column="42" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="awkeys.h" pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/awesome-widget/plugin/awkeys.h">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0">
|
||||
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="awdataaggregator.h" pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/awesome-widget/plugin/awdataaggregator.h">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0">
|
||||
<caret line="49" column="8" selection-start-line="49" selection-start-column="8" selection-end-line="49" selection-end-column="8" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="awdataaggregator.cpp" pinned="false" current-in-tab="true">
|
||||
<entry file="file://$PROJECT_DIR$/awesome-widget/plugin/awdataaggregator.cpp">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.27768594">
|
||||
<caret line="312" column="12" selection-start-line="312" selection-start-column="12" selection-end-line="312" selection-end-column="12" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="awkeysaggregator.h" pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/awesome-widget/plugin/awkeysaggregator.h">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0">
|
||||
<caret line="67" column="58" selection-start-line="67" selection-start-column="58" selection-end-line="67" selection-end-column="58" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="awkeysaggregator.cpp" pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/awesome-widget/plugin/awkeysaggregator.cpp">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0">
|
||||
<caret line="43" column="1" selection-start-line="43" selection-start-column="1" selection-end-line="43" selection-end-column="1" />
|
||||
<folding>
|
||||
<element signature="e#1234#1263#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
</leaf>
|
||||
</component>
|
||||
<component name="Git.Settings">
|
||||
@ -116,10 +196,37 @@
|
||||
<component name="IdeDocumentHistory">
|
||||
<option name="CHANGED_PATHS">
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/awesome-widget/plugin/awdataaggregator.cpp" />
|
||||
<option value="$PROJECT_DIR$/awesome-widget/plugin/awconfighelper.h" />
|
||||
<option value="$PROJECT_DIR$/awesome-widget/plugin/awconfighelper.cpp" />
|
||||
<option value="$PROJECT_DIR$/awesome-widget/package/contents/ui/advanced.qml" />
|
||||
<option value="$PROJECT_DIR$/awesome-widget/plugin/awdataengineaggregator.h" />
|
||||
<option value="$PROJECT_DIR$/awesome-widget/plugin/awdataengineaggregator.cpp" />
|
||||
<option value="$PROJECT_DIR$/../utils/cpp-check.sh" />
|
||||
<option value="$PROJECT_DIR$/cppcheck-target.cmake" />
|
||||
<option value="$PROJECT_DIR$/awesome-widget/plugin/CMakeLists.txt" />
|
||||
<option value="$PROJECT_DIR$/checkgit.cmake" />
|
||||
<option value="$PROJECT_DIR$/clang-format.cmake" />
|
||||
<option value="$PROJECT_DIR$/CMakeLists.txt" />
|
||||
<option value="$PROJECT_DIR$/libraries.cmake" />
|
||||
<option value="$PROJECT_DIR$/packages-recipe.cmake" />
|
||||
<option value="$PROJECT_DIR$/awesomewidgets/CMakeLists.txt" />
|
||||
<option value="$PROJECT_DIR$/desktop-panel/plugin/CMakeLists.txt" />
|
||||
<option value="$PROJECT_DIR$/extsysmon/CMakeLists.txt" />
|
||||
<option value="$PROJECT_DIR$/translations/CMakeLists.txt" />
|
||||
<option value="$PROJECT_DIR$/awesomewidgets/extweather.cpp" />
|
||||
<option value="$PROJECT_DIR$/awesomewidgets/extquotes.cpp" />
|
||||
<option value="$PROJECT_DIR$/awdebug.h" />
|
||||
<option value="$PROJECT_DIR$/awesome-widget/plugin/awactions.cpp" />
|
||||
<option value="$PROJECT_DIR$/awesome-widget/package/contents/ui/dataengine.qml" />
|
||||
<option value="$PROJECT_DIR$/extsysmon/extsysmonaggregator.h" />
|
||||
<option value="$PROJECT_DIR$/extsysmon/extsysmonaggregator.cpp" />
|
||||
<option value="$PROJECT_DIR$/awesomewidgets/extscript.h" />
|
||||
<option value="$PROJECT_DIR$/cppcheck.cmake" />
|
||||
<option value="$PROJECT_DIR$/awesome-widget/plugin/awkeys.cpp" />
|
||||
<option value="$PROJECT_DIR$/awesome-widget/plugin/awkeysaggregator.h" />
|
||||
<option value="$PROJECT_DIR$/awesome-widget/plugin/awkeysaggregator.cpp" />
|
||||
<option value="$PROJECT_DIR$/awesome-widget/plugin/awdataaggregator.h" />
|
||||
<option value="$PROJECT_DIR$/awesome-widget/plugin/awdataaggregator.cpp" />
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
@ -191,6 +298,24 @@
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
</PATH>
|
||||
<PATH>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="sources" />
|
||||
<option name="myItemType" value="com.jetbrains.cidr.projectView.CidrFilesViewHelper$MyProjectTreeStructure$1" />
|
||||
</PATH_ELEMENT>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="sources" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewModuleNode" />
|
||||
</PATH_ELEMENT>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="sources" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="extsysmon" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
</PATH>
|
||||
<PATH>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="sources" />
|
||||
@ -209,6 +334,28 @@
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
</PATH>
|
||||
<PATH>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="sources" />
|
||||
<option name="myItemType" value="com.jetbrains.cidr.projectView.CidrFilesViewHelper$MyProjectTreeStructure$1" />
|
||||
</PATH_ELEMENT>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="sources" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewModuleNode" />
|
||||
</PATH_ELEMENT>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="sources" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="awesomewidgets" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="desktops" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
</PATH>
|
||||
<PATH>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="sources" />
|
||||
@ -339,10 +486,30 @@
|
||||
<property name="restartRequiresConfirmation" value="true" />
|
||||
</component>
|
||||
<component name="RunManager" selected="Application.Release">
|
||||
<configuration default="true" type="BashConfigurationType" factoryName="Bash">
|
||||
<option name="INTERPRETER_OPTIONS" value="" />
|
||||
<option name="INTERPRETER_PATH" value="/bin/bash" />
|
||||
<option name="WORKING_DIRECTORY" value="" />
|
||||
<option name="PARENT_ENVS" value="true" />
|
||||
<option name="SCRIPT_NAME" value="" />
|
||||
<option name="PARAMETERS" value="" />
|
||||
<module name="" />
|
||||
<envs />
|
||||
<method />
|
||||
</configuration>
|
||||
<configuration default="true" type="CMakeRunConfiguration" factoryName="Application" PASS_PARENT_ENVS="FALSE" PROJECT_NAME="awesomewidgets" TARGET_NAME="uninstall" CONFIG_NAME="Debug">
|
||||
<envs />
|
||||
<method />
|
||||
</configuration>
|
||||
<configuration default="true" type="js.build_tools.gulp" factoryName="Gulp.js">
|
||||
<node-options />
|
||||
<gulpfile />
|
||||
<tasks />
|
||||
<arguments />
|
||||
<pass-parent-envs>true</pass-parent-envs>
|
||||
<envs />
|
||||
<method />
|
||||
</configuration>
|
||||
<configuration default="false" name="Release" type="CMakeRunConfiguration" factoryName="Application" WORKING_DIR="" PASS_PARENT_ENVS="FALSE" CONFIG_NAME="Release" EXPLICIT_BUILD_TARGET_NAME="all">
|
||||
<envs />
|
||||
<method />
|
||||
@ -387,7 +554,15 @@
|
||||
<envs />
|
||||
<method />
|
||||
</configuration>
|
||||
<list size="11">
|
||||
<configuration default="false" name="clangformat" type="CMakeRunConfiguration" factoryName="Application" PASS_PARENT_ENVS="FALSE" PROJECT_NAME="awesomewidgets" TARGET_NAME="clangformat" CONFIG_NAME="Debug">
|
||||
<envs />
|
||||
<method />
|
||||
</configuration>
|
||||
<configuration default="false" name="cppcheck" type="CMakeRunConfiguration" factoryName="Application" PASS_PARENT_ENVS="FALSE" PROJECT_NAME="awesomewidgets" TARGET_NAME="cppcheck" CONFIG_NAME="Debug">
|
||||
<envs />
|
||||
<method />
|
||||
</configuration>
|
||||
<list size="13">
|
||||
<item index="0" class="java.lang.String" itemvalue="Application.Release" />
|
||||
<item index="1" class="java.lang.String" itemvalue="Application.uninstall" />
|
||||
<item index="2" class="java.lang.String" itemvalue="Application.awplugin" />
|
||||
@ -399,6 +574,8 @@
|
||||
<item index="8" class="java.lang.String" itemvalue="Application.plasma_dataengine_extsysmon" />
|
||||
<item index="9" class="java.lang.String" itemvalue="Application.plasma_dataengine_extsysmon_automoc" />
|
||||
<item index="10" class="java.lang.String" itemvalue="Application.aw_pofiles" />
|
||||
<item index="11" class="java.lang.String" itemvalue="Application.clangformat" />
|
||||
<item index="12" class="java.lang.String" itemvalue="Application.cppcheck" />
|
||||
</list>
|
||||
</component>
|
||||
<component name="ShelveChangesManager" show_recycled="false" />
|
||||
@ -415,27 +592,46 @@
|
||||
<servers />
|
||||
</component>
|
||||
<component name="ToolWindowManager">
|
||||
<frame x="1280" y="21" width="1366" height="747" extended-state="6" />
|
||||
<frame x="1280" y="21" width="1366" height="747" extended-state="7" />
|
||||
<editor active="true" />
|
||||
<layout>
|
||||
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.24981412" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
|
||||
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.24535316" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
|
||||
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="CMake" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32857144" sideWeight="0.4944238" order="-1" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32857144" sideWeight="0.5055762" order="-1" side_tool="true" content_ui="tabs" />
|
||||
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="CMake" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32753164" sideWeight="0.4944238" order="7" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32857144" sideWeight="0.5055762" order="10" side_tool="true" content_ui="tabs" />
|
||||
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32857144" sideWeight="0.5" order="8" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="-1" side_tool="true" content_ui="tabs" />
|
||||
<window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="9" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
|
||||
<window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
|
||||
<window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="SLIDING" type="SLIDING" visible="false" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
|
||||
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
|
||||
</layout>
|
||||
<layout-to-restore>
|
||||
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="CMake" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32753164" sideWeight="0.4944238" order="7" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="SLIDING" type="SLIDING" visible="false" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32857144" sideWeight="0.5055762" order="10" side_tool="true" content_ui="tabs" />
|
||||
<window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32857144" sideWeight="0.5" order="8" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="9" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.24535316" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
|
||||
<window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
|
||||
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
|
||||
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
|
||||
</layout-to-restore>
|
||||
</component>
|
||||
<component name="Vcs.Log.UiProperties">
|
||||
<option name="RECENTLY_FILTERED_USER_GROUPS">
|
||||
@ -448,46 +644,28 @@
|
||||
<component name="VcsContentAnnotationSettings">
|
||||
<option name="myLimit" value="2678400000" />
|
||||
</component>
|
||||
<component name="VcsManagerConfiguration">
|
||||
<ignored-roots>
|
||||
<path value="$USER_HOME$" />
|
||||
<path value="$PROJECT_DIR$/3rdparty/task" />
|
||||
<path value="$PROJECT_DIR$/3rdparty/tasks" />
|
||||
<path value="$PROJECT_DIR$/3rdparty/fontdialog" />
|
||||
</ignored-roots>
|
||||
</component>
|
||||
<component name="XDebuggerManager">
|
||||
<breakpoint-manager />
|
||||
<watches-manager />
|
||||
</component>
|
||||
<component name="editorHistoryManager">
|
||||
<entry file="file://$PROJECT_DIR$/CMakeLists.txt">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0">
|
||||
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/awesome-widget/plugin/awdataaggregator.h">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.74242425">
|
||||
<caret line="21" column="15" selection-start-line="21" selection-start-column="15" selection-end-line="21" selection-end-column="15" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/awesome-widget/plugin/awdataaggregator.cpp">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="-1.3466003">
|
||||
<caret line="68" column="31" selection-start-line="68" selection-start-column="31" selection-end-line="68" selection-end-column="31" />
|
||||
<folding>
|
||||
<element signature="e#1234#1263#0" expanded="false" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/awesomewidgets/extscript.cpp">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0">
|
||||
<caret line="389" column="104" selection-start-line="389" selection-start-column="21" selection-end-line="389" selection-end-column="104" />
|
||||
<caret line="38" column="37" selection-start-line="38" selection-start-column="37" selection-end-line="38" selection-end-column="37" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/awesome-widget/package/contents/ui/appearance.qml">
|
||||
<entry file="file://$PROJECT_DIR$/awesome-widget/plugin/awkeys.h">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0">
|
||||
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
||||
@ -495,13 +673,25 @@
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/awesome-widget/plugin/awconfighelper.h">
|
||||
<entry file="file://$PROJECT_DIR$/awesome-widget/plugin/awkeys.cpp">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0">
|
||||
<caret line="25" column="0" selection-start-line="25" selection-start-column="0" selection-end-line="25" selection-end-column="0" />
|
||||
<folding>
|
||||
<element signature="e#1286#1304#0" expanded="true" />
|
||||
</folding>
|
||||
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/awesome-widget/plugin/CMakeLists.txt">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0">
|
||||
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/awesome-widget/plugin/CMakeLists.txt">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0">
|
||||
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
@ -509,16 +699,333 @@
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0">
|
||||
<caret line="143" column="33" selection-start-line="143" selection-start-column="33" selection-end-line="143" selection-end-column="33" />
|
||||
<folding>
|
||||
<element signature="e#1234#1261#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/awesome-widget/plugin/awconfighelper.h">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0">
|
||||
<caret line="25" column="0" selection-start-line="25" selection-start-column="0" selection-end-line="25" selection-end-column="0" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/awesome-widget/package/contents/ui/advanced.qml">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="8.986733">
|
||||
<state vertical-scroll-proportion="0.0">
|
||||
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/awesome-widget/package/contents/ui/appearance.qml">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0">
|
||||
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/awesome-widget/package/contents/ui/advanced.qml">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.60862356">
|
||||
<caret line="391" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="402" selection-end-column="0" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/awesome-widget/plugin/awconfighelper.h">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.094527364">
|
||||
<caret line="25" column="0" selection-start-line="25" selection-start-column="0" selection-end-line="25" selection-end-column="0" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/awesome-widget/plugin/awconfighelper.cpp">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0">
|
||||
<caret line="143" column="33" selection-start-line="143" selection-start-column="33" selection-end-line="143" selection-end-column="33" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/awesome-widget/plugin/awdataengineaggregator.h">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.5356551">
|
||||
<caret line="34" column="0" selection-start-line="34" selection-start-column="0" selection-end-line="34" selection-end-column="0" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/awesome-widget/plugin/awdataengineaggregator.cpp">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.16252074">
|
||||
<caret line="39" column="0" selection-start-line="39" selection-start-column="0" selection-end-line="39" selection-end-column="0" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/checkgit.cmake">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.25454545">
|
||||
<caret line="11" column="0" selection-start-line="11" selection-start-column="0" selection-end-line="11" selection-end-column="0" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/CMakeLists.txt">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="1.2958678">
|
||||
<caret line="56" column="12" selection-start-line="56" selection-start-column="12" selection-end-line="56" selection-end-column="12" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/libraries.cmake">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0">
|
||||
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/packages-recipe.cmake">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0">
|
||||
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/awesome-widget/CMakeLists.txt">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0">
|
||||
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/awesome-widget/plugin/CMakeLists.txt">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.13884297">
|
||||
<caret line="6" column="15" selection-start-line="6" selection-start-column="15" selection-end-line="6" selection-end-column="15" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/desktop-panel/CMakeLists.txt">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0">
|
||||
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/desktop-panel/plugin/CMakeLists.txt">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0">
|
||||
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/extsysmon/CMakeLists.txt">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0">
|
||||
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/translations/CMakeLists.txt">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0">
|
||||
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/awesomewidgets/abstractextitem.cpp">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0">
|
||||
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/awesomewidgets/extquotes.cpp">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.4859504">
|
||||
<caret line="63" column="0" selection-start-line="63" selection-start-column="0" selection-end-line="63" selection-end-column="0" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/awesomewidgets/extweather.cpp">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.069421485">
|
||||
<caret line="54" column="4" selection-start-line="54" selection-start-column="4" selection-end-line="56" selection-end-column="49" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/awesomewidgets.kdev4">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0">
|
||||
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/awdebug.cpp">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0">
|
||||
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/awdebug.h">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.25950414">
|
||||
<caret line="23" column="18" selection-start-line="23" selection-start-column="18" selection-end-line="23" selection-end-column="18" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/awesome-widget/plugin/awactions.cpp">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="1.8925476">
|
||||
<caret line="78" column="40" selection-start-line="78" selection-start-column="23" selection-end-line="78" selection-end-column="40" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/awesomewidgets/awesomewidgets-extweather-ids.json">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.09638554">
|
||||
<caret line="4" column="25" selection-start-line="4" selection-start-column="25" selection-end-line="4" selection-end-column="25" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/awesomewidgets/CMakeLists.txt">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="-0.041322313">
|
||||
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/awesome-widget/package/contents/ui/dataengine.qml">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.30082646">
|
||||
<caret line="44" column="49" selection-start-line="44" selection-start-column="49" selection-end-line="44" selection-end-column="49" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/desktop-panel/package/contents/ui/advanced.qml">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="-5.016529">
|
||||
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="76" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/clang-format.cmake">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.04628099">
|
||||
<caret line="2" column="0" selection-start-line="2" selection-start-column="0" selection-end-line="9" selection-end-column="13" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/extsysmon/extsysmon.cpp">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0">
|
||||
<caret line="31" column="24" selection-start-line="31" selection-start-column="18" selection-end-line="31" selection-end-column="24" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/extsysmon/extsysmonaggregator.h">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0">
|
||||
<caret line="33" column="46" selection-start-line="33" selection-start-column="46" selection-end-line="33" selection-end-column="46" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/extsysmon/extsysmonaggregator.cpp">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0">
|
||||
<caret line="61" column="1" selection-start-line="61" selection-start-column="1" selection-end-line="61" selection-end-column="1" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/awesomewidgets/extscript.cpp">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="-6.857143">
|
||||
<caret line="389" column="43" selection-start-line="389" selection-start-column="36" selection-end-line="389" selection-end-column="43" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/awesomewidgets/extscript.h">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="-6.857143">
|
||||
<caret line="34" column="39" selection-start-line="34" selection-start-column="35" selection-end-line="34" selection-end-column="39" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/cppcheck.cmake">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.46280992">
|
||||
<caret line="20" column="62" selection-start-line="20" selection-start-column="62" selection-end-line="20" selection-end-column="62" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/awesome-widget/plugin/awkeys.cpp">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0">
|
||||
<caret line="779" column="42" selection-start-line="779" selection-start-column="42" selection-end-line="779" selection-end-column="42" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/awesome-widget/plugin/awkeys.h">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0">
|
||||
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/awesome-widget/plugin/awkeysaggregator.cpp">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0">
|
||||
<caret line="43" column="1" selection-start-line="43" selection-start-column="1" selection-end-line="43" selection-end-column="1" />
|
||||
<folding>
|
||||
<element signature="e#1234#1263#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/awesome-widget/plugin/awkeysaggregator.h">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0">
|
||||
<caret line="67" column="58" selection-start-line="67" selection-start-column="58" selection-end-line="67" selection-end-column="58" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/awesome-widget/plugin/awdataaggregator.h">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0">
|
||||
<caret line="49" column="8" selection-start-line="49" selection-start-column="8" selection-end-line="49" selection-end-column="8" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/awesome-widget/package/contents/ui/main.qml">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="-0.41652894">
|
||||
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
||||
<folding>
|
||||
<element signature="e#0#1232#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/awesome-widget/package/contents/ui/qmldir">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0">
|
||||
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/awesomewidgets/desktops/aw-bat-bar.desktop">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.13884297">
|
||||
<caret line="6" column="36" selection-start-line="6" selection-start-column="36" selection-end-line="6" selection-end-column="36" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/awesome-widget/plugin/awdataaggregator.cpp">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.27768594">
|
||||
<caret line="312" column="12" selection-start-line="312" selection-start-column="12" selection-end-line="312" selection-end-column="12" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
|
@ -8,7 +8,7 @@ ProjectRootRelative=./
|
||||
|
||||
[CMake][CMake Build Directory 0]
|
||||
Build Directory Path=file:///home/arcanis/Documents/github/awesome-widgets/build
|
||||
Build Type=Optimizaton
|
||||
Build Type=Optimization
|
||||
CMake Binary=file:///usr/bin/cmake
|
||||
Environment Profile=
|
||||
Extra Arguments=
|
||||
|
@ -7,7 +7,7 @@ cmake_policy(SET CMP0011 NEW)
|
||||
cmake_policy(SET CMP0015 NEW)
|
||||
if (POLICY CMP0063)
|
||||
cmake_policy(SET CMP0063 OLD)
|
||||
endif()
|
||||
endif ()
|
||||
|
||||
project(awesomewidgets)
|
||||
set(PROJECT_AUTHOR "Evgeniy Alekseev")
|
||||
@ -35,9 +35,12 @@ option(BUILD_RPM_PACKAGE "Build rpm package" OFF)
|
||||
# build details
|
||||
option(BUILD_FUTURE "Build with the features which will be marked as stable later" OFF)
|
||||
option(BUILD_TESTING "Build with additional test abilities" OFF)
|
||||
# some additional targets
|
||||
set(CPPCHECK_EXECUTABLE "/usr/bin/cppcheck" CACHE STRING "Path to cppcheck executable")
|
||||
set(CLANGFORMAT_EXECUTABLE "/usr/bin/clang-format" CACHE STRING "Path to clang-format executable")
|
||||
|
||||
# flags
|
||||
if(CMAKE_COMPILER_IS_GNUCXX)
|
||||
if (CMAKE_COMPILER_IS_GNUCXX)
|
||||
set(CMAKE_CXX_FLAGS "-Wall -Wno-cpp -std=c++11")
|
||||
set(CMAKE_CXX_FLAGS_DEBUG "-g -O0")
|
||||
set(CMAKE_CXX_FLAGS_RELEASE "-O2 -DNDEBUG")
|
||||
@ -55,22 +58,24 @@ elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
||||
set(CMAKE_SHARED_LINKER_FLAGS "-lc++abi")
|
||||
else()
|
||||
message(FATAL_ERROR "Unknown compiler")
|
||||
endif()
|
||||
if(CMAKE_BUILD_TYPE MATCHES Debug)
|
||||
endif ()
|
||||
if (CMAKE_BUILD_TYPE MATCHES Debug)
|
||||
set(CMAKE_VERBOSE_MAKEFILE ON)
|
||||
endif()
|
||||
endif ()
|
||||
|
||||
configure_file(${CMAKE_SOURCE_DIR}/version.h.in ${CMAKE_CURRENT_BINARY_DIR}/version.h)
|
||||
set(PROJECT_TRDPARTY_DIR ${CMAKE_CURRENT_SOURCE_DIR}/3rdparty)
|
||||
set(PROJECT_LIBRARY awesomewidgets)
|
||||
include(libraries.cmake)
|
||||
include(clang-format.cmake)
|
||||
include(cppcheck.cmake)
|
||||
|
||||
add_subdirectory(awesomewidgets)
|
||||
add_subdirectory(extsysmon)
|
||||
if(BUILD_PLASMOIDS)
|
||||
if (BUILD_PLASMOIDS)
|
||||
add_subdirectory(awesome-widget)
|
||||
add_subdirectory(desktop-panel)
|
||||
add_subdirectory(translations)
|
||||
endif()
|
||||
endif ()
|
||||
|
||||
include(packages-recipe.cmake)
|
||||
|
@ -19,7 +19,10 @@
|
||||
#include "awdebug.h"
|
||||
|
||||
|
||||
Q_LOGGING_CATEGORY(LOG_AW, "org.kde.plasma.awesomewidget", QtMsgType::QtWarningMsg)
|
||||
Q_LOGGING_CATEGORY(LOG_DP, "org.kde.plasma.desktoppanel", QtMsgType::QtWarningMsg)
|
||||
Q_LOGGING_CATEGORY(LOG_AW, "org.kde.plasma.awesomewidget",
|
||||
QtMsgType::QtWarningMsg)
|
||||
Q_LOGGING_CATEGORY(LOG_DP, "org.kde.plasma.desktoppanel",
|
||||
QtMsgType::QtWarningMsg)
|
||||
Q_LOGGING_CATEGORY(LOG_ESM, "org.kde.plasma.extsysmon", QtMsgType::QtWarningMsg)
|
||||
Q_LOGGING_CATEGORY(LOG_LIB, "org.kde.plasma.awesomewidgets", QtMsgType::QtWarningMsg)
|
||||
Q_LOGGING_CATEGORY(LOG_LIB, "org.kde.plasma.awesomewidgets",
|
||||
QtMsgType::QtWarningMsg)
|
||||
|
@ -22,7 +22,11 @@
|
||||
#include <QLoggingCategory>
|
||||
|
||||
#ifndef LOG_FORMAT
|
||||
#define LOG_FORMAT "[%{time yyyy-MM-ddTHH:mm:ss.zzz}][%{if-debug}DD%{endif}%{if-info}II%{endif}%{if-warning}WW%{endif}%{if-critical}CC%{endif}%{if-fatal}FF%{endif}][%{category}][%{function}] %{message}"
|
||||
#define LOG_FORMAT \
|
||||
"[%{time " \
|
||||
"yyyy-MM-ddTHH:mm:ss.zzz}][%{if-debug}DD%{endif}%{if-info}II%{endif}%{if-" \
|
||||
"warning}WW%{endif}%{if-critical}CC%{endif}%{if-fatal}FF%{endif}][%{" \
|
||||
"category}][%{function}] %{message}"
|
||||
#endif /* LOG_FORMAT */
|
||||
|
||||
// define info log level
|
||||
|
@ -342,9 +342,9 @@ Item {
|
||||
|
||||
// update hdd model
|
||||
hdd.model = awKeys.getHddDevices()
|
||||
for (var i=0; i<model.length; i++) {
|
||||
if (model[i] == cfg_dataengine["HDDDEV"]) {
|
||||
if (debug) console.info("Found", model[i], "on", i)
|
||||
for (var i=0; i<hdd.model.length; i++) {
|
||||
if (hdd.model[i] == cfg_dataengine["HDDDEV"]) {
|
||||
if (debug) console.info("Found", hdd.model[i], "on", i)
|
||||
hdd.currentIndex = i;
|
||||
}
|
||||
}
|
||||
|
@ -2,14 +2,14 @@ set(PLUGIN_NAME awplugin)
|
||||
add_definitions(-DTRANSLATION_DOMAIN=\"plasma_applet_org.kde.plasma.awesomewidget\")
|
||||
|
||||
include_directories(
|
||||
${CMAKE_SOURCE_DIR}
|
||||
${CMAKE_BINARY_DIR}
|
||||
${CMAKE_CURRENT_BINARY_DIR}
|
||||
${CMAKE_CURRENT_BINARY_DIR}/../
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../../${PROJECT_LIBRARY}/
|
||||
${PROJECT_TRDPARTY_DIR}
|
||||
${Qt_INCLUDE}
|
||||
${Kf5_INCLUDE}
|
||||
${CMAKE_SOURCE_DIR}
|
||||
${CMAKE_BINARY_DIR}
|
||||
${CMAKE_CURRENT_BINARY_DIR}
|
||||
${CMAKE_CURRENT_BINARY_DIR}/../
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../../${PROJECT_LIBRARY}/
|
||||
${PROJECT_TRDPARTY_DIR}
|
||||
${Qt_INCLUDE}
|
||||
${Kf5_INCLUDE}
|
||||
)
|
||||
|
||||
file(GLOB SUBPROJECT_SOURCE *.cpp ${PROJECT_TRDPARTY_DIR}/fontdialog/*.cpp ${CMAKE_SOURCE_DIR}/*.cpp)
|
||||
|
@ -57,7 +57,7 @@ void AWActions::checkUpdates(const bool showAnyway)
|
||||
|
||||
// showAnyway options requires to show message if no updates found on direct
|
||||
// request. In case of automatic check no message will be shown
|
||||
QNetworkAccessManager *manager = new QNetworkAccessManager(this);
|
||||
QNetworkAccessManager *manager = new QNetworkAccessManager(nullptr);
|
||||
connect(manager, &QNetworkAccessManager::finished,
|
||||
[showAnyway, this](QNetworkReply *reply) {
|
||||
return versionReplyRecieved(reply, showAnyway);
|
||||
@ -106,32 +106,50 @@ QString AWActions::getAboutText(const QString type) const
|
||||
if (type == QString("header")) {
|
||||
text = QString(NAME);
|
||||
} else if (type == QString("version")) {
|
||||
text = i18n("Version %1 (build date %2)", QString(VERSION), QString(BUILD_DATE));
|
||||
if (!QString(COMMIT_SHA).isEmpty()) text += QString(" (%1)").arg(QString(COMMIT_SHA));
|
||||
text = i18n("Version %1 (build date %2)", QString(VERSION),
|
||||
QString(BUILD_DATE));
|
||||
if (!QString(COMMIT_SHA).isEmpty())
|
||||
text += QString(" (%1)").arg(QString(COMMIT_SHA));
|
||||
} else if (type == QString("description")) {
|
||||
text = i18n("A set of minimalistic plasmoid widgets");
|
||||
} else if (type == QString("links")) {
|
||||
text = i18n("Links:") + QString("<br>")
|
||||
+ QString("<a href=\"%1\">%2</a><br>").arg(QString(HOMEPAGE)).arg(i18n("Homepage"))
|
||||
+ QString("<a href=\"%1\">%2</a><br>").arg(QString(REPOSITORY)).arg(i18n("Repository"))
|
||||
+ QString("<a href=\"%1\">%2</a><br>").arg(QString(BUGTRACKER)).arg(i18n("Bugtracker"))
|
||||
+ QString("<a href=\"%1\">%2</a><br>").arg(QString(TRANSLATION)).arg(i18n("Translation issue"))
|
||||
+ QString("<a href=\"%1\">%2</a><br>").arg(QString(AUR_PACKAGES)).arg(i18n("AUR packages"))
|
||||
+ QString("<a href=\"%1\">%2</a>").arg(QString(OPENSUSE_PACKAGES)).arg(i18n("openSUSE packages"));
|
||||
+ QString("<a href=\"%1\">%2</a><br>")
|
||||
.arg(QString(HOMEPAGE))
|
||||
.arg(i18n("Homepage"))
|
||||
+ QString("<a href=\"%1\">%2</a><br>")
|
||||
.arg(QString(REPOSITORY))
|
||||
.arg(i18n("Repository"))
|
||||
+ QString("<a href=\"%1\">%2</a><br>")
|
||||
.arg(QString(BUGTRACKER))
|
||||
.arg(i18n("Bugtracker"))
|
||||
+ QString("<a href=\"%1\">%2</a><br>")
|
||||
.arg(QString(TRANSLATION))
|
||||
.arg(i18n("Translation issue"))
|
||||
+ QString("<a href=\"%1\">%2</a><br>")
|
||||
.arg(QString(AUR_PACKAGES))
|
||||
.arg(i18n("AUR packages"))
|
||||
+ QString("<a href=\"%1\">%2</a>")
|
||||
.arg(QString(OPENSUSE_PACKAGES))
|
||||
.arg(i18n("openSUSE packages"));
|
||||
} else if (type == QString("copy")) {
|
||||
text = QString("<small>© %1 <a href=\"mailto:%2\">%3</a><br>").
|
||||
arg(QString(DATE)).arg(QString(EMAIL)).arg(QString(AUTHOR))
|
||||
+ i18n("This software is licensed under %1", QString(LICENSE))
|
||||
+ QString("</small>");
|
||||
text = QString("<small>© %1 <a href=\"mailto:%2\">%3</a><br>")
|
||||
.arg(QString(DATE))
|
||||
.arg(QString(EMAIL))
|
||||
.arg(QString(AUTHOR))
|
||||
+ i18n("This software is licensed under %1", QString(LICENSE))
|
||||
+ QString("</small>");
|
||||
} else if (type == QString("translators")) {
|
||||
text = i18n("Translators: %1", QString(TRANSLATORS));
|
||||
} else if (type == QString("3rdparty")) {
|
||||
QStringList trdPartyList = QString(TRDPARTY_LICENSE).split(QChar(';'), QString::SkipEmptyParts);
|
||||
for (int i=0; i<trdPartyList.count(); i++)
|
||||
trdPartyList[i] = QString("<a href=\"%3\">%1</a> (%2 license)").
|
||||
arg(trdPartyList.at(i).split(QChar(','))[0]).
|
||||
arg(trdPartyList.at(i).split(QChar(','))[1]).
|
||||
arg(trdPartyList.at(i).split(QChar(','))[2]);
|
||||
QStringList trdPartyList
|
||||
= QString(TRDPARTY_LICENSE)
|
||||
.split(QChar(';'), QString::SkipEmptyParts);
|
||||
for (int i = 0; i < trdPartyList.count(); i++)
|
||||
trdPartyList[i] = QString("<a href=\"%3\">%1</a> (%2 license)")
|
||||
.arg(trdPartyList.at(i).split(QChar(','))[0])
|
||||
.arg(trdPartyList.at(i).split(QChar(','))[1])
|
||||
.arg(trdPartyList.at(i).split(QChar(','))[2]);
|
||||
text = i18n("This software uses: %1", trdPartyList.join(QString(", ")));
|
||||
}
|
||||
|
||||
@ -146,10 +164,10 @@ QVariantMap AWActions::getFont(const QVariantMap defaultFont) const
|
||||
|
||||
QVariantMap fontMap;
|
||||
CFont defaultCFont = CFont(defaultFont[QString("family")].toString(),
|
||||
defaultFont[QString("size")].toInt(),
|
||||
400, false, defaultFont[QString("color")].toString());
|
||||
CFont font = CFontDialog::getFont(i18n("Select font"), defaultCFont,
|
||||
false, false);
|
||||
defaultFont[QString("size")].toInt(), 400, false,
|
||||
defaultFont[QString("color")].toString());
|
||||
CFont font
|
||||
= CFontDialog::getFont(i18n("Select font"), defaultCFont, false, false);
|
||||
fontMap[QString("color")] = font.color().name();
|
||||
fontMap[QString("family")] = font.family();
|
||||
fontMap[QString("size")] = font.pointSize();
|
||||
@ -158,7 +176,6 @@ QVariantMap AWActions::getFont(const QVariantMap defaultFont) const
|
||||
}
|
||||
|
||||
|
||||
|
||||
// to avoid additional object definition this method is static
|
||||
void AWActions::sendNotification(const QString eventId, const QString message)
|
||||
{
|
||||
@ -166,10 +183,10 @@ void AWActions::sendNotification(const QString eventId, const QString message)
|
||||
qCDebug(LOG_AW) << "Event" << eventId;
|
||||
qCDebug(LOG_AW) << "Message" << message;
|
||||
|
||||
KNotification *notification = KNotification::event(eventId,
|
||||
QString("Awesome Widget ::: %1").arg(eventId),
|
||||
message);
|
||||
notification->setComponentName(QString("plasma-applet-org.kde.plasma.awesome-widget"));
|
||||
KNotification *notification = KNotification::event(
|
||||
eventId, QString("Awesome Widget ::: %1").arg(eventId), message);
|
||||
notification->setComponentName(
|
||||
QString("plasma-applet-org.kde.plasma.awesome-widget"));
|
||||
}
|
||||
|
||||
|
||||
@ -185,7 +202,6 @@ void AWActions::showInfo(const QString version) const
|
||||
}
|
||||
|
||||
|
||||
|
||||
void AWActions::showUpdates(const QString version) const
|
||||
{
|
||||
qCDebug(LOG_AW);
|
||||
@ -193,12 +209,15 @@ void AWActions::showUpdates(const QString version) const
|
||||
|
||||
QString text;
|
||||
text += i18n("Current version : %1", QString(VERSION));
|
||||
text += QString(COMMIT_SHA).isEmpty() ? QString("\n") : QString(" (%1)\n").arg(QString(COMMIT_SHA));
|
||||
text += QString(COMMIT_SHA).isEmpty()
|
||||
? QString("\n")
|
||||
: QString(" (%1)\n").arg(QString(COMMIT_SHA));
|
||||
text += i18n("New version : %1", version) + QString("\n\n");
|
||||
text += i18n("Click \"Ok\" to download");
|
||||
|
||||
int select = QMessageBox::information(nullptr, i18n("There are updates"), text,
|
||||
QMessageBox::Ok | QMessageBox::Cancel);
|
||||
int select
|
||||
= QMessageBox::information(nullptr, i18n("There are updates"), text,
|
||||
QMessageBox::Ok | QMessageBox::Cancel);
|
||||
switch (select) {
|
||||
case QMessageBox::Ok:
|
||||
QDesktopServices::openUrl(QString(RELEASES) + version);
|
||||
@ -210,7 +229,8 @@ void AWActions::showUpdates(const QString version) const
|
||||
}
|
||||
|
||||
|
||||
void AWActions::versionReplyRecieved(QNetworkReply *reply, const bool showAnyway) const
|
||||
void AWActions::versionReplyRecieved(QNetworkReply *reply,
|
||||
const bool showAnyway) const
|
||||
{
|
||||
qCDebug(LOG_AW);
|
||||
qCDebug(LOG_AW) << "Return code" << reply->error();
|
||||
@ -241,7 +261,8 @@ void AWActions::versionReplyRecieved(QNetworkReply *reply, const bool showAnyway
|
||||
int new_patch = QString(version).split(QChar('.')).at(2).toInt();
|
||||
if ((old_major < new_major)
|
||||
|| ((old_major == new_major) && (old_minor < new_minor))
|
||||
|| ((old_major == new_major) && (old_minor == new_minor) && (old_patch < new_patch)))
|
||||
|| ((old_major == new_major) && (old_minor == new_minor)
|
||||
&& (old_patch < new_patch)))
|
||||
return showUpdates(version);
|
||||
else if (showAnyway)
|
||||
return showInfo(version);
|
||||
|
@ -36,16 +36,19 @@ public:
|
||||
Q_INVOKABLE bool runCmd(const QString cmd = QString("/usr/bin/true")) const;
|
||||
Q_INVOKABLE void showReadme() const;
|
||||
// configuration slots
|
||||
Q_INVOKABLE QString getAboutText(const QString type = QString("header")) const;
|
||||
Q_INVOKABLE QString getAboutText(const QString type
|
||||
= QString("header")) const;
|
||||
Q_INVOKABLE QVariantMap getFont(const QVariantMap defaultFont) const;
|
||||
|
||||
public slots:
|
||||
Q_INVOKABLE static void sendNotification(const QString eventId, const QString message);
|
||||
Q_INVOKABLE static void sendNotification(const QString eventId,
|
||||
const QString message);
|
||||
|
||||
private slots:
|
||||
void showInfo(const QString version) const;
|
||||
void showUpdates(const QString version) const;
|
||||
void versionReplyRecieved(QNetworkReply *reply, const bool showAnyway) const;
|
||||
void versionReplyRecieved(QNetworkReply *reply,
|
||||
const bool showAnyway) const;
|
||||
};
|
||||
|
||||
|
||||
|
@ -48,8 +48,9 @@ bool AWConfigHelper::dropCache() const
|
||||
{
|
||||
qCDebug(LOG_AW);
|
||||
|
||||
QString fileName = QString("%1/awesomewidgets.ndx").
|
||||
arg(QStandardPaths::writableLocation(QStandardPaths::GenericCacheLocation));
|
||||
QString fileName = QString("%1/awesomewidgets.ndx")
|
||||
.arg(QStandardPaths::writableLocation(
|
||||
QStandardPaths::GenericCacheLocation));
|
||||
|
||||
return QFile(fileName).remove();
|
||||
}
|
||||
@ -67,9 +68,10 @@ void AWConfigHelper::exportConfiguration(QObject *nativeConfig) const
|
||||
QSettings settings(fileName, QSettings::IniFormat);
|
||||
|
||||
// plasmoid configuration
|
||||
QQmlPropertyMap *configuration = static_cast<QQmlPropertyMap *>(nativeConfig);
|
||||
QQmlPropertyMap *configuration
|
||||
= static_cast<QQmlPropertyMap *>(nativeConfig);
|
||||
settings.beginGroup(QString("plasmoid"));
|
||||
foreach(QString key, configuration->keys()) {
|
||||
foreach (QString key, configuration->keys()) {
|
||||
QVariant value = configuration->value(key);
|
||||
if (!value.isValid())
|
||||
continue;
|
||||
@ -77,12 +79,14 @@ void AWConfigHelper::exportConfiguration(QObject *nativeConfig) const
|
||||
}
|
||||
settings.endGroup();
|
||||
|
||||
// extenstions
|
||||
foreach(QString item, m_dirs) {
|
||||
QStringList items = QDir(QString("%1/%2").arg(m_baseDir).arg(item)).entryList(
|
||||
QStringList() << QString("*.desktop"), QDir::Files);
|
||||
// extensions
|
||||
foreach (QString item, m_dirs) {
|
||||
QStringList items
|
||||
= QDir(QString("%1/%2").arg(m_baseDir).arg(item))
|
||||
.entryList(QStringList() << QString("*.desktop"),
|
||||
QDir::Files);
|
||||
settings.beginGroup(item);
|
||||
foreach(QString it, items)
|
||||
foreach (QString it, items)
|
||||
copyExtensions(it, item, settings, false);
|
||||
settings.endGroup();
|
||||
}
|
||||
@ -91,10 +95,12 @@ void AWConfigHelper::exportConfiguration(QObject *nativeConfig) const
|
||||
settings.beginGroup(QString("json"));
|
||||
// script filters
|
||||
readFile(settings, QString("filters"),
|
||||
QString("%1/scripts/awesomewidgets-extscripts-filters.json").arg(m_baseDir));
|
||||
QString("%1/scripts/awesomewidgets-extscripts-filters.json")
|
||||
.arg(m_baseDir));
|
||||
// weather icon settings
|
||||
readFile(settings, QString("weathers"),
|
||||
QString("%1/weather/awesomewidgets-extweather-ids.json").arg(m_baseDir));
|
||||
QString("%1/weather/awesomewidgets-extweather-ids.json")
|
||||
.arg(m_baseDir));
|
||||
settings.endGroup();
|
||||
|
||||
// sync settings
|
||||
@ -115,11 +121,11 @@ QVariantMap AWConfigHelper::importConfiguration() const
|
||||
QSettings settings(fileName, QSettings::IniFormat);
|
||||
QHash<QString, bool> selection = selectImport();
|
||||
|
||||
// extenstions
|
||||
if (selection[QString("extenstions")]) {
|
||||
foreach(QString item, m_dirs) {
|
||||
// extensions
|
||||
if (selection[QString("extensions")]) {
|
||||
foreach (QString item, m_dirs) {
|
||||
settings.beginGroup(item);
|
||||
foreach(QString it, settings.childGroups())
|
||||
foreach (QString it, settings.childGroups())
|
||||
copyExtensions(it, item, settings, true);
|
||||
settings.endGroup();
|
||||
}
|
||||
@ -130,17 +136,19 @@ QVariantMap AWConfigHelper::importConfiguration() const
|
||||
settings.beginGroup(QString("json"));
|
||||
// script filters
|
||||
writeFile(settings, QString("filters"),
|
||||
QString("%1/scripts/awesomewidgets-extscripts-filters.json").arg(m_baseDir));
|
||||
QString("%1/scripts/awesomewidgets-extscripts-filters.json")
|
||||
.arg(m_baseDir));
|
||||
// weather icon settings
|
||||
writeFile(settings, QString("weathers"),
|
||||
QString("%1/weather/awesomewidgets-extweather-ids.json").arg(m_baseDir));
|
||||
QString("%1/weather/awesomewidgets-extweather-ids.json")
|
||||
.arg(m_baseDir));
|
||||
settings.endGroup();
|
||||
}
|
||||
|
||||
// plasmoid configuration
|
||||
if (selection[QString("plasmoid")]) {
|
||||
settings.beginGroup(QString("plasmoid"));
|
||||
foreach(QString key, settings.childKeys())
|
||||
foreach (QString key, settings.childKeys())
|
||||
configuration[key] = settings.value(key);
|
||||
settings.endGroup();
|
||||
}
|
||||
@ -153,22 +161,32 @@ QVariantMap AWConfigHelper::readDataEngineConfiguration() const
|
||||
{
|
||||
qCDebug(LOG_AW);
|
||||
|
||||
QString fileName = QStandardPaths::locate(QStandardPaths::ConfigLocation,
|
||||
QString("plasma-dataengine-extsysmon.conf"));
|
||||
QString fileName
|
||||
= QStandardPaths::locate(QStandardPaths::ConfigLocation,
|
||||
QString("plasma-dataengine-extsysmon.conf"));
|
||||
qCInfo(LOG_AW) << "Configuration file" << fileName;
|
||||
QSettings settings(fileName, QSettings::IniFormat);
|
||||
QVariantMap configuration;
|
||||
|
||||
settings.beginGroup(QString("Configuration"));
|
||||
configuration[QString("ACPIPATH")] = settings.value(QString("ACPIPATH"), QString("/sys/class/power_supply/"));
|
||||
configuration[QString("GPUDEV")] = settings.value(QString("GPUDEV"), QString("auto"));
|
||||
configuration[QString("HDDDEV")] = settings.value(QString("HDDDEV"), QString("all"));
|
||||
configuration[QString("HDDTEMPCMD")] = settings.value(QString("HDDTEMPCMD"), QString("sudo smartctl -a"));
|
||||
configuration[QString("MPDADDRESS")] = settings.value(QString("MPDADDRESS"), QString("localhost"));
|
||||
configuration[QString("MPDPORT")] = settings.value(QString("MPDPORT"), QString("6600"));
|
||||
configuration[QString("MPRIS")] = settings.value(QString("MPRIS"), QString("auto"));
|
||||
configuration[QString("PLAYER")] = settings.value(QString("PLAYER"), QString("mpris"));
|
||||
configuration[QString("PLAYERSYMBOLS")] = settings.value(QString("PLAYERSYMBOLS"), QString("10"));
|
||||
configuration[QString("ACPIPATH")] = settings.value(
|
||||
QString("ACPIPATH"), QString("/sys/class/power_supply/"));
|
||||
configuration[QString("GPUDEV")]
|
||||
= settings.value(QString("GPUDEV"), QString("auto"));
|
||||
configuration[QString("HDDDEV")]
|
||||
= settings.value(QString("HDDDEV"), QString("all"));
|
||||
configuration[QString("HDDTEMPCMD")]
|
||||
= settings.value(QString("HDDTEMPCMD"), QString("sudo smartctl -a"));
|
||||
configuration[QString("MPDADDRESS")]
|
||||
= settings.value(QString("MPDADDRESS"), QString("localhost"));
|
||||
configuration[QString("MPDPORT")]
|
||||
= settings.value(QString("MPDPORT"), QString("6600"));
|
||||
configuration[QString("MPRIS")]
|
||||
= settings.value(QString("MPRIS"), QString("auto"));
|
||||
configuration[QString("PLAYER")]
|
||||
= settings.value(QString("PLAYER"), QString("mpris"));
|
||||
configuration[QString("PLAYERSYMBOLS")]
|
||||
= settings.value(QString("PLAYERSYMBOLS"), QString("10"));
|
||||
settings.endGroup();
|
||||
|
||||
qCInfo(LOG_AW) << "Configuration" << configuration;
|
||||
@ -177,12 +195,14 @@ QVariantMap AWConfigHelper::readDataEngineConfiguration() const
|
||||
}
|
||||
|
||||
|
||||
void AWConfigHelper::writeDataEngineConfiguration(const QVariantMap configuration) const
|
||||
void AWConfigHelper::writeDataEngineConfiguration(
|
||||
const QVariantMap configuration) const
|
||||
{
|
||||
qCDebug(LOG_AW);
|
||||
|
||||
QString fileName = QStandardPaths::writableLocation(QStandardPaths::ConfigLocation)
|
||||
+ QString("/plasma-dataengine-extsysmon.conf");
|
||||
QString fileName
|
||||
= QStandardPaths::writableLocation(QStandardPaths::ConfigLocation)
|
||||
+ QString("/plasma-dataengine-extsysmon.conf");
|
||||
QSettings settings(fileName, QSettings::IniFormat);
|
||||
qCInfo(LOG_AW) << "Configuration file" << settings.fileName();
|
||||
|
||||
@ -190,12 +210,15 @@ void AWConfigHelper::writeDataEngineConfiguration(const QVariantMap configuratio
|
||||
settings.setValue(QString("ACPIPATH"), configuration[QString("ACPIPATH")]);
|
||||
settings.setValue(QString("GPUDEV"), configuration[QString("GPUDEV")]);
|
||||
settings.setValue(QString("HDDDEV"), configuration[QString("HDDDEV")]);
|
||||
settings.setValue(QString("HDDTEMPCMD"), configuration[QString("HDDTEMPCMD")]);
|
||||
settings.setValue(QString("MPDADDRESS"), configuration[QString("MPDADDRESS")]);
|
||||
settings.setValue(QString("HDDTEMPCMD"),
|
||||
configuration[QString("HDDTEMPCMD")]);
|
||||
settings.setValue(QString("MPDADDRESS"),
|
||||
configuration[QString("MPDADDRESS")]);
|
||||
settings.setValue(QString("MPDPORT"), configuration[QString("MPDPORT")]);
|
||||
settings.setValue(QString("MPRIS"), configuration[QString("MPRIS")]);
|
||||
settings.setValue(QString("PLAYER"), configuration[QString("PLAYER")]);
|
||||
settings.setValue(QString("PLAYERSYMBOLS"), configuration[QString("PLAYERSYMBOLS")]);
|
||||
settings.setValue(QString("PLAYERSYMBOLS"),
|
||||
configuration[QString("PLAYERSYMBOLS")]);
|
||||
settings.endGroup();
|
||||
|
||||
settings.sync();
|
||||
@ -203,7 +226,8 @@ void AWConfigHelper::writeDataEngineConfiguration(const QVariantMap configuratio
|
||||
|
||||
|
||||
void AWConfigHelper::copyExtensions(const QString item, const QString type,
|
||||
QSettings &settings, const bool inverse) const
|
||||
QSettings &settings,
|
||||
const bool inverse) const
|
||||
{
|
||||
qCDebug(LOG_AW);
|
||||
qCDebug(LOG_AW) << "Extension" << item;
|
||||
@ -211,7 +235,9 @@ void AWConfigHelper::copyExtensions(const QString item, const QString type,
|
||||
qCDebug(LOG_AW) << "Inverse" << inverse;
|
||||
|
||||
settings.beginGroup(item);
|
||||
QSettings itemSettings(QString("%1/%2/%3").arg(m_baseDir).arg(type).arg(item), QSettings::IniFormat);
|
||||
QSettings itemSettings(
|
||||
QString("%1/%2/%3").arg(m_baseDir).arg(type).arg(item),
|
||||
QSettings::IniFormat);
|
||||
itemSettings.beginGroup(QString("Desktop Entry"));
|
||||
if (inverse)
|
||||
copySettings(settings, itemSettings);
|
||||
@ -229,12 +255,13 @@ void AWConfigHelper::copySettings(QSettings &from, QSettings &to) const
|
||||
{
|
||||
qCDebug(LOG_AW);
|
||||
|
||||
foreach(QString key, from.childKeys())
|
||||
foreach (QString key, from.childKeys())
|
||||
to.setValue(key, from.value(key));
|
||||
}
|
||||
|
||||
|
||||
void AWConfigHelper::readFile(QSettings &settings, const QString key, const QString fileName) const
|
||||
void AWConfigHelper::readFile(QSettings &settings, const QString key,
|
||||
const QString fileName) const
|
||||
{
|
||||
qCDebug(LOG_AW);
|
||||
qCDebug(LOG_AW) << "Key" << key;
|
||||
@ -256,14 +283,18 @@ QHash<QString, bool> AWConfigHelper::selectImport() const
|
||||
qCDebug(LOG_AW);
|
||||
|
||||
QDialog *dialog = new QDialog(nullptr);
|
||||
QCheckBox *importPlasmoidSettings = new QCheckBox(i18n("Import plasmoid settings"), dialog);
|
||||
QCheckBox *importPlasmoidSettings
|
||||
= new QCheckBox(i18n("Import plasmoid settings"), dialog);
|
||||
importPlasmoidSettings->setChecked(true);
|
||||
QCheckBox *importExtensionsSettings = new QCheckBox(i18n("Import extenstions"), dialog);
|
||||
QCheckBox *importExtensionsSettings
|
||||
= new QCheckBox(i18n("Import extensions"), dialog);
|
||||
importExtensionsSettings->setChecked(true);
|
||||
QCheckBox *importAddsSettings = new QCheckBox(i18n("Import additional files"), dialog);
|
||||
QCheckBox *importAddsSettings
|
||||
= new QCheckBox(i18n("Import additional files"), dialog);
|
||||
importAddsSettings->setChecked(true);
|
||||
QDialogButtonBox *dialogButtons = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel,
|
||||
Qt::Horizontal, dialog);
|
||||
QDialogButtonBox *dialogButtons
|
||||
= new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel,
|
||||
Qt::Horizontal, dialog);
|
||||
QVBoxLayout *layout = new QVBoxLayout(dialog);
|
||||
layout->addWidget(importPlasmoidSettings);
|
||||
layout->addWidget(importExtensionsSettings);
|
||||
@ -275,12 +306,12 @@ QHash<QString, bool> AWConfigHelper::selectImport() const
|
||||
// get parameters
|
||||
QHash<QString, bool> import;
|
||||
import[QString("plasmoid")] = false;
|
||||
import[QString("extenstions")] = false;
|
||||
import[QString("extensions")] = false;
|
||||
import[QString("adds")] = false;
|
||||
switch(int ret = dialog->exec()) {
|
||||
switch (int ret = dialog->exec()) {
|
||||
case QDialog::Accepted:
|
||||
import[QString("plasmoid")] = importPlasmoidSettings->isChecked();
|
||||
import[QString("extenstions")] = importExtensionsSettings->isChecked();
|
||||
import[QString("extensions")] = importExtensionsSettings->isChecked();
|
||||
import[QString("adds")] = importAddsSettings->isChecked();
|
||||
break;
|
||||
case QDialog::Rejected:
|
||||
@ -293,7 +324,8 @@ QHash<QString, bool> AWConfigHelper::selectImport() const
|
||||
}
|
||||
|
||||
|
||||
void AWConfigHelper::writeFile(QSettings &settings, const QString key, const QString fileName) const
|
||||
void AWConfigHelper::writeFile(QSettings &settings, const QString key,
|
||||
const QString fileName) const
|
||||
{
|
||||
qCDebug(LOG_AW);
|
||||
qCDebug(LOG_AW) << "Key" << key;
|
||||
|
@ -37,21 +37,27 @@ public:
|
||||
Q_INVOKABLE QVariantMap importConfiguration() const;
|
||||
// dataengine
|
||||
Q_INVOKABLE QVariantMap readDataEngineConfiguration() const;
|
||||
Q_INVOKABLE void writeDataEngineConfiguration(const QVariantMap configuration) const;
|
||||
Q_INVOKABLE void
|
||||
writeDataEngineConfiguration(const QVariantMap configuration) const;
|
||||
|
||||
private:
|
||||
// methods
|
||||
void copyExtensions(const QString item, const QString type,
|
||||
QSettings &settings, const bool inverse) const;
|
||||
void copySettings(QSettings &from, QSettings &to) const;
|
||||
void readFile(QSettings &settings, const QString key, const QString fileName) const;
|
||||
void readFile(QSettings &settings, const QString key,
|
||||
const QString fileName) const;
|
||||
QHash<QString, bool> selectImport() const;
|
||||
void writeFile(QSettings &settings, const QString key, const QString fileName) const;
|
||||
void writeFile(QSettings &settings, const QString key,
|
||||
const QString fileName) const;
|
||||
// properties
|
||||
QString m_baseDir = QString("%1/awesomewidgets").
|
||||
arg(QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation));
|
||||
QStringList m_dirs = QStringList() << QString("desktops") << QString("quotes")
|
||||
<< QString("scripts") << QString("upgrade") << QString("weather");
|
||||
QString m_baseDir = QString("%1/awesomewidgets")
|
||||
.arg(QStandardPaths::writableLocation(
|
||||
QStandardPaths::GenericDataLocation));
|
||||
QStringList m_dirs = QStringList()
|
||||
<< QString("desktops") << QString("quotes")
|
||||
<< QString("scripts") << QString("upgrade")
|
||||
<< QString("weather");
|
||||
};
|
||||
|
||||
|
||||
|
@ -39,8 +39,8 @@ AWDataAggregator::AWDataAggregator(QObject *parent)
|
||||
qRegisterMetaType<QHash<QString, QString>>("QHash<QString, QString>");
|
||||
|
||||
initScene();
|
||||
connect(this, SIGNAL(updateData(const QHash<QString, QString>)),
|
||||
this, SLOT(dataUpdate(const QHash<QString, QString>)));
|
||||
connect(this, SIGNAL(updateData(const QHash<QString, QString> &)), this,
|
||||
SLOT(dataUpdate(const QHash<QString, QString> &)));
|
||||
}
|
||||
|
||||
|
||||
@ -61,7 +61,7 @@ QList<float> AWDataAggregator::getData(const QString key) const
|
||||
}
|
||||
|
||||
|
||||
QString AWDataAggregator::htmlImage(const QPixmap source) const
|
||||
QString AWDataAggregator::htmlImage(const QPixmap &source) const
|
||||
{
|
||||
qCDebug(LOG_AW);
|
||||
|
||||
@ -70,8 +70,9 @@ QString AWDataAggregator::htmlImage(const QPixmap source) const
|
||||
source.save(&buffer, "PNG");
|
||||
|
||||
return byteArray.isEmpty()
|
||||
? QString()
|
||||
: QString("<img src=\"data:image/png;base64,%1\"/>").arg(QString(byteArray.toBase64()));
|
||||
? QString()
|
||||
: QString("<img src=\"data:image/png;base64,%1\"/>")
|
||||
.arg(QString(byteArray.toBase64()));
|
||||
}
|
||||
|
||||
|
||||
@ -104,18 +105,27 @@ void AWDataAggregator::setParameters(QVariantMap settings)
|
||||
boundaries[QString("batTooltip")] = 100.0;
|
||||
|
||||
requiredKeys.clear();
|
||||
if (configuration[QString("cpuTooltip")].toBool()) requiredKeys.append(QString("cpuTooltip"));
|
||||
if (configuration[QString("cpuclTooltip")].toBool()) requiredKeys.append(QString("cpuclTooltip"));
|
||||
if (configuration[QString("memTooltip")].toBool()) requiredKeys.append(QString("memTooltip"));
|
||||
if (configuration[QString("swapTooltip")].toBool()) requiredKeys.append(QString("swapTooltip"));
|
||||
if (configuration[QString("downTooltip")].toBool()) requiredKeys.append(QString("downTooltip"));
|
||||
if (configuration[QString("upTooltip")].toBool()) requiredKeys.append(QString("upTooltip"));
|
||||
if (configuration[QString("batTooltip")].toBool()) requiredKeys.append(QString("batTooltip"));
|
||||
if (configuration[QString("cpuTooltip")].toBool())
|
||||
requiredKeys.append(QString("cpuTooltip"));
|
||||
if (configuration[QString("cpuclTooltip")].toBool())
|
||||
requiredKeys.append(QString("cpuclTooltip"));
|
||||
if (configuration[QString("memTooltip")].toBool())
|
||||
requiredKeys.append(QString("memTooltip"));
|
||||
if (configuration[QString("swapTooltip")].toBool())
|
||||
requiredKeys.append(QString("swapTooltip"));
|
||||
if (configuration[QString("downTooltip")].toBool())
|
||||
requiredKeys.append(QString("downTooltip"));
|
||||
if (configuration[QString("upTooltip")].toBool())
|
||||
requiredKeys.append(QString("upTooltip"));
|
||||
if (configuration[QString("batTooltip")].toBool())
|
||||
requiredKeys.append(QString("batTooltip"));
|
||||
|
||||
// background
|
||||
toolTipScene->setBackgroundBrush(configuration[QString("useTooltipBackground")].toBool()
|
||||
? QBrush(QColor(configuration[QString("tooltipBackground")].toString()))
|
||||
: QBrush(Qt::NoBrush));
|
||||
toolTipScene->setBackgroundBrush(
|
||||
configuration[QString("useTooltipBackground")].toBool()
|
||||
? QBrush(QColor(
|
||||
configuration[QString("tooltipBackground")].toString()))
|
||||
: QBrush(Qt::NoBrush));
|
||||
}
|
||||
|
||||
|
||||
@ -127,7 +137,7 @@ QPixmap AWDataAggregator::tooltipImage()
|
||||
toolTipScene->clear();
|
||||
QPen pen;
|
||||
bool down = false;
|
||||
foreach(QString key, requiredKeys) {
|
||||
foreach (QString key, requiredKeys) {
|
||||
// create frame
|
||||
float normX = 100.0 / static_cast<float>(data[key].count());
|
||||
float normY = 100.0 / (1.5 * boundaries[key]);
|
||||
@ -136,19 +146,23 @@ QPixmap AWDataAggregator::tooltipImage()
|
||||
shift -= 100.0;
|
||||
// apply pen color
|
||||
if (key != QString("batTooltip"))
|
||||
pen.setColor(QColor(configuration[QString("%1Color").arg(key)].toString()));
|
||||
pen.setColor(
|
||||
QColor(configuration[QString("%1Color").arg(key)].toString()));
|
||||
// paint data inside frame
|
||||
for (int j=0; j<data[key].count()-1; j++) {
|
||||
for (int j = 0; j < data[key].count() - 1; j++) {
|
||||
// some magic here
|
||||
float x1 = j * normX + shift;
|
||||
float y1 = - fabs(data[key].at(j)) * normY + 5.0;
|
||||
float y1 = -fabs(data[key].at(j)) * normY + 5.0;
|
||||
float x2 = (j + 1) * normX + shift;
|
||||
float y2 = - fabs(data[key].at(j+1)) * normY + 5.0;
|
||||
float y2 = -fabs(data[key].at(j + 1)) * normY + 5.0;
|
||||
if (key == QString("batTooltip")) {
|
||||
if (data[key].at(j+1) > 0)
|
||||
pen.setColor(QColor(configuration[QString("batTooltipColor")].toString()));
|
||||
if (data[key].at(j + 1) > 0)
|
||||
pen.setColor(QColor(
|
||||
configuration[QString("batTooltipColor")].toString()));
|
||||
else
|
||||
pen.setColor(QColor(configuration[QString("batInTooltipColor")].toString()));
|
||||
pen.setColor(
|
||||
QColor(configuration[QString("batInTooltipColor")]
|
||||
.toString()));
|
||||
}
|
||||
toolTipScene->addLine(x1, y1, x2, y2, pen);
|
||||
}
|
||||
@ -160,7 +174,7 @@ QPixmap AWDataAggregator::tooltipImage()
|
||||
}
|
||||
|
||||
|
||||
void AWDataAggregator::dataUpdate(const QHash<QString, QString> values)
|
||||
void AWDataAggregator::dataUpdate(const QHash<QString, QString> &values)
|
||||
{
|
||||
qCDebug(LOG_AW);
|
||||
|
||||
@ -178,11 +192,15 @@ void AWDataAggregator::checkValue(const QString source, const float value,
|
||||
qCDebug(LOG_AW) << "Called with extremum" << extremum;
|
||||
|
||||
if (value >= 0.0) {
|
||||
if ((m_enablePopup) && (value > extremum) && (data[source].last() < extremum))
|
||||
return AWActions::sendNotification(QString("event"), notificationText(source, value));
|
||||
if ((m_enablePopup) && (value > extremum)
|
||||
&& (data[source].last() < extremum))
|
||||
return AWActions::sendNotification(QString("event"),
|
||||
notificationText(source, value));
|
||||
} else {
|
||||
if ((m_enablePopup) && (value < extremum) && (data[source].last() > extremum))
|
||||
return AWActions::sendNotification(QString("event"), notificationText(source, value));
|
||||
if ((m_enablePopup) && (value < extremum)
|
||||
&& (data[source].last() > extremum))
|
||||
return AWActions::sendNotification(QString("event"),
|
||||
notificationText(source, value));
|
||||
}
|
||||
}
|
||||
|
||||
@ -196,7 +214,8 @@ void AWDataAggregator::checkValue(const QString source, const QString current,
|
||||
qCDebug(LOG_AW) << "Received value" << received;
|
||||
|
||||
if ((m_enablePopup) && (current != received) && (!received.isEmpty()))
|
||||
return AWActions::sendNotification(QString("event"), notificationText(source, received));
|
||||
return AWActions::sendNotification(QString("event"),
|
||||
notificationText(source, received));
|
||||
}
|
||||
|
||||
|
||||
@ -214,7 +233,8 @@ void AWDataAggregator::initScene()
|
||||
}
|
||||
|
||||
|
||||
QString AWDataAggregator::notificationText(const QString source, const float value) const
|
||||
QString AWDataAggregator::notificationText(const QString source,
|
||||
const float value) const
|
||||
{
|
||||
qCDebug(LOG_AW);
|
||||
qCDebug(LOG_AW) << "Notification source" << source;
|
||||
@ -236,7 +256,8 @@ QString AWDataAggregator::notificationText(const QString source, const float val
|
||||
}
|
||||
|
||||
|
||||
QString AWDataAggregator::notificationText(const QString source, const QString value) const
|
||||
QString AWDataAggregator::notificationText(const QString source,
|
||||
const QString value) const
|
||||
{
|
||||
qCDebug(LOG_AW);
|
||||
qCDebug(LOG_AW) << "Notification source" << source;
|
||||
@ -250,7 +271,7 @@ QString AWDataAggregator::notificationText(const QString source, const QString v
|
||||
}
|
||||
|
||||
|
||||
void AWDataAggregator::setData(const QHash< QString, QString > values)
|
||||
void AWDataAggregator::setData(const QHash<QString, QString> &values)
|
||||
{
|
||||
qCDebug(LOG_AW);
|
||||
|
||||
@ -277,7 +298,8 @@ void AWDataAggregator::setData(const QHash< QString, QString > values)
|
||||
}
|
||||
|
||||
|
||||
void AWDataAggregator::setData(const QString source, float value, const float extremum)
|
||||
void AWDataAggregator::setData(const QString &source, float value,
|
||||
const float extremum)
|
||||
{
|
||||
qCDebug(LOG_AW);
|
||||
qCDebug(LOG_AW) << "Source" << source;
|
||||
@ -286,7 +308,8 @@ void AWDataAggregator::setData(const QString source, float value, const float ex
|
||||
|
||||
if (data[source].count() == 0)
|
||||
data[source].append(0.0);
|
||||
else if (data[source].count() > configuration[QString("tooltipNumber")].toInt())
|
||||
else if (data[source].count()
|
||||
> configuration[QString("tooltipNumber")].toInt())
|
||||
data[source].removeFirst();
|
||||
if (isnan(value))
|
||||
value = 0.0;
|
||||
@ -296,14 +319,17 @@ void AWDataAggregator::setData(const QString source, float value, const float ex
|
||||
|
||||
data[source].append(value);
|
||||
if (source == QString("downTooltip")) {
|
||||
QList<float> netValues = data[QString("downTooltip")] + data[QString("upTooltip")];
|
||||
boundaries[QString("downTooltip")] = 1.2 * *std::max_element(netValues.cbegin(), netValues.cend());
|
||||
QList<float> netValues
|
||||
= data[QString("downTooltip")] + data[QString("upTooltip")];
|
||||
boundaries[QString("downTooltip")]
|
||||
= 1.2 * *std::max_element(netValues.cbegin(), netValues.cend());
|
||||
boundaries[QString("upTooltip")] = boundaries[QString("downTooltip")];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void AWDataAggregator::setData(const bool dontInvert, const QString source, float value)
|
||||
void AWDataAggregator::setData(const bool dontInvert, const QString &source,
|
||||
float value)
|
||||
{
|
||||
qCDebug(LOG_AW);
|
||||
qCDebug(LOG_AW) << "Do not invert value" << dontInvert;
|
||||
|
@ -36,31 +36,34 @@ public:
|
||||
explicit AWDataAggregator(QObject *parent = nullptr);
|
||||
virtual ~AWDataAggregator();
|
||||
QList<float> getData(const QString key) const;
|
||||
QString htmlImage(const QPixmap source) const;
|
||||
QString htmlImage(const QPixmap &source) const;
|
||||
void setParameters(QVariantMap settings);
|
||||
QPixmap tooltipImage();
|
||||
|
||||
signals:
|
||||
void updateData(const QHash<QString, QString> values);
|
||||
void updateData(const QHash<QString, QString> &values);
|
||||
void toolTipPainted(const QString image) const;
|
||||
|
||||
public slots:
|
||||
void dataUpdate(const QHash<QString, QString> values);
|
||||
void dataUpdate(const QHash<QString, QString> &values);
|
||||
|
||||
private:
|
||||
// ui
|
||||
QGraphicsScene *toolTipScene = nullptr;
|
||||
QGraphicsView *toolTipView = nullptr;
|
||||
void checkValue(const QString source, const float value, const float extremum) const;
|
||||
void checkValue(const QString source, const QString current, const QString received) const;
|
||||
void checkValue(const QString source, const float value,
|
||||
const float extremum) const;
|
||||
void checkValue(const QString source, const QString current,
|
||||
const QString received) const;
|
||||
void initScene();
|
||||
QString notificationText(const QString source, const float value) const;
|
||||
QString notificationText(const QString source, const QString value) const;
|
||||
// main method
|
||||
void setData(const QHash<QString, QString> values);
|
||||
void setData(const QString source, float value, const float extremum = -1.0);
|
||||
void setData(const QHash<QString, QString> &values);
|
||||
void setData(const QString &source, float value,
|
||||
const float extremum = -1.0);
|
||||
// different signature for battery device
|
||||
void setData(const bool dontInvert, const QString source, float value);
|
||||
void setData(const bool dontInvert, const QString &source, float value);
|
||||
// variables
|
||||
int counts = 0;
|
||||
QVariantHash configuration;
|
||||
|
@ -23,7 +23,8 @@
|
||||
#include "awkeys.h"
|
||||
|
||||
|
||||
AWDataEngineAggregator::AWDataEngineAggregator(QObject *parent, const int interval)
|
||||
AWDataEngineAggregator::AWDataEngineAggregator(QObject *parent,
|
||||
const int interval)
|
||||
: QObject(parent)
|
||||
{
|
||||
qCDebug(LOG_AW);
|
||||
@ -37,10 +38,22 @@ AWDataEngineAggregator::~AWDataEngineAggregator()
|
||||
{
|
||||
qCDebug(LOG_AW);
|
||||
|
||||
// disconnect sources first
|
||||
disconnectSources();
|
||||
m_dataEngines.clear();
|
||||
}
|
||||
|
||||
|
||||
void AWDataEngineAggregator::disconnectSources()
|
||||
{
|
||||
qCDebug(LOG_AW);
|
||||
|
||||
foreach (QString dataengine, m_dataEngines.keys())
|
||||
foreach (QString source, m_dataEngines[dataengine]->sources())
|
||||
m_dataEngines[dataengine]->disconnectSource(source, parent());
|
||||
}
|
||||
|
||||
|
||||
void AWDataEngineAggregator::setInterval(const int _interval)
|
||||
{
|
||||
qCDebug(LOG_AW);
|
||||
@ -55,7 +68,8 @@ void AWDataEngineAggregator::dropSource(const QString source)
|
||||
qCDebug(LOG_AW);
|
||||
qCDebug(LOG_AW) << "Source" << source;
|
||||
|
||||
// FIXME there is no possiblibity to check to which dataengine source connected
|
||||
// FIXME there is no possibility to check to which dataengine source
|
||||
// connected
|
||||
// we will try to disconnect it from systemmonitor and extsysmon
|
||||
m_dataEngines[QString("systemmonitor")]->disconnectSource(source, parent());
|
||||
m_dataEngines[QString("extsysmon")]->disconnectSource(source, parent());
|
||||
@ -66,9 +80,12 @@ void AWDataEngineAggregator::reconnectSources()
|
||||
{
|
||||
qCDebug(LOG_AW);
|
||||
|
||||
m_dataEngines[QString("systemmonitor")]->connectAllSources(parent(), m_interval);
|
||||
m_dataEngines[QString("extsysmon")]->connectAllSources(parent(), m_interval);
|
||||
m_dataEngines[QString("time")]->connectSource(QString("Local"), parent(), 1000);
|
||||
m_dataEngines[QString("systemmonitor")]->connectAllSources(parent(),
|
||||
m_interval);
|
||||
m_dataEngines[QString("extsysmon")]->connectAllSources(parent(),
|
||||
m_interval);
|
||||
m_dataEngines[QString("time")]->connectSource(QString("Local"), parent(),
|
||||
1000);
|
||||
}
|
||||
|
||||
|
||||
@ -77,14 +94,17 @@ void AWDataEngineAggregator::initDataEngines()
|
||||
qCDebug(LOG_AW);
|
||||
|
||||
Plasma::DataEngineConsumer *deConsumer = new Plasma::DataEngineConsumer();
|
||||
m_dataEngines[QString("systemmonitor")] = deConsumer->dataEngine(QString("systemmonitor"));
|
||||
m_dataEngines[QString("extsysmon")] = deConsumer->dataEngine(QString("extsysmon"));
|
||||
m_dataEngines[QString("systemmonitor")]
|
||||
= deConsumer->dataEngine(QString("systemmonitor"));
|
||||
m_dataEngines[QString("extsysmon")]
|
||||
= deConsumer->dataEngine(QString("extsysmon"));
|
||||
m_dataEngines[QString("time")] = deConsumer->dataEngine(QString("time"));
|
||||
|
||||
// additional method required by systemmonitor structure
|
||||
connect(m_dataEngines[QString("systemmonitor")], &Plasma::DataEngine::sourceAdded,
|
||||
[this](const QString source) {
|
||||
connect(m_dataEngines[QString("systemmonitor")],
|
||||
&Plasma::DataEngine::sourceAdded, [this](const QString source) {
|
||||
static_cast<AWKeys *>(parent())->addDevice(source);
|
||||
m_dataEngines[QString("systemmonitor")]->connectSource(source, parent(), m_interval);
|
||||
m_dataEngines[QString("systemmonitor")]->connectSource(
|
||||
source, parent(), m_interval);
|
||||
});
|
||||
}
|
||||
|
@ -29,8 +29,10 @@ class AWDataEngineAggregator : public QObject
|
||||
Q_PROPERTY(int interval MEMBER m_interval WRITE setInterval);
|
||||
|
||||
public:
|
||||
explicit AWDataEngineAggregator(QObject *parent = nullptr, const int interval = 1000);
|
||||
explicit AWDataEngineAggregator(QObject *parent = nullptr,
|
||||
const int interval = 1000);
|
||||
virtual ~AWDataEngineAggregator();
|
||||
void disconnectSources();
|
||||
// properties
|
||||
void setInterval(const int _interval);
|
||||
|
||||
|
@ -55,8 +55,8 @@ AWKeys::AWKeys(QObject *parent)
|
||||
aggregator = new AWKeysAggregator(this);
|
||||
dataAggregator = new AWDataAggregator(this);
|
||||
// transfer signal from AWDataAggregator object to QML ui
|
||||
connect(dataAggregator, SIGNAL(toolTipPainted(const QString)),
|
||||
this, SIGNAL(needToolTipToBeUpdated(const QString)));
|
||||
connect(dataAggregator, SIGNAL(toolTipPainted(const QString)), this,
|
||||
SIGNAL(needToolTipToBeUpdated(const QString)));
|
||||
connect(this, SIGNAL(needToBeUpdated()), this, SLOT(updateTextData()));
|
||||
}
|
||||
|
||||
@ -66,15 +66,22 @@ AWKeys::~AWKeys()
|
||||
qCDebug(LOG_AW);
|
||||
|
||||
// extensions
|
||||
if (graphicalItems != nullptr) delete graphicalItems;
|
||||
if (extQuotes != nullptr) delete extQuotes;
|
||||
if (extScripts != nullptr) delete extScripts;
|
||||
if (extUpgrade != nullptr) delete extUpgrade;
|
||||
if (extWeather != nullptr) delete extWeather;
|
||||
if (graphicalItems != nullptr)
|
||||
delete graphicalItems;
|
||||
if (extQuotes != nullptr)
|
||||
delete extQuotes;
|
||||
if (extScripts != nullptr)
|
||||
delete extScripts;
|
||||
if (extUpgrade != nullptr)
|
||||
delete extUpgrade;
|
||||
if (extWeather != nullptr)
|
||||
delete extWeather;
|
||||
|
||||
// core
|
||||
if (dataEngineAggregator != nullptr) delete dataEngineAggregator;
|
||||
if (m_threadPool != nullptr) delete m_threadPool;
|
||||
if (dataEngineAggregator != nullptr)
|
||||
delete dataEngineAggregator;
|
||||
if (m_threadPool != nullptr)
|
||||
delete m_threadPool;
|
||||
delete aggregator;
|
||||
delete dataAggregator;
|
||||
}
|
||||
@ -89,7 +96,8 @@ void AWKeys::initDataAggregator(const QVariantMap tooltipParams)
|
||||
}
|
||||
|
||||
|
||||
void AWKeys::initKeys(const QString currentPattern, const int interval, const int limit)
|
||||
void AWKeys::initKeys(const QString currentPattern, const int interval,
|
||||
const int limit)
|
||||
{
|
||||
qCDebug(LOG_AW);
|
||||
qCDebug(LOG_AW) << "Pattern" << currentPattern;
|
||||
@ -105,7 +113,8 @@ void AWKeys::initKeys(const QString currentPattern, const int interval, const in
|
||||
} else
|
||||
dataEngineAggregator->setInterval(interval);
|
||||
#ifdef BUILD_FUTURE
|
||||
m_threadPool->setMaxThreadCount(limit == 0 ? QThread::idealThreadCount() : limit);
|
||||
m_threadPool->setMaxThreadCount(limit == 0 ? QThread::idealThreadCount()
|
||||
: limit);
|
||||
#endif /* BUILD_FUTURE */
|
||||
updateCache();
|
||||
|
||||
@ -148,13 +157,19 @@ QStringList AWKeys::dictKeys(const bool sorted, const QString regexp) const
|
||||
|
||||
QStringList allKeys;
|
||||
// weather
|
||||
for (int i=extWeather->activeItems().count()-1; i>=0; i--) {
|
||||
allKeys.append(extWeather->activeItems().at(i)->tag(QString("weatherId")));
|
||||
allKeys.append(extWeather->activeItems().at(i)->tag(QString("weather")));
|
||||
allKeys.append(extWeather->activeItems().at(i)->tag(QString("humidity")));
|
||||
allKeys.append(extWeather->activeItems().at(i)->tag(QString("pressure")));
|
||||
allKeys.append(extWeather->activeItems().at(i)->tag(QString("temperature")));
|
||||
allKeys.append(extWeather->activeItems().at(i)->tag(QString("timestamp")));
|
||||
for (int i = extWeather->activeItems().count() - 1; i >= 0; i--) {
|
||||
allKeys.append(
|
||||
extWeather->activeItems().at(i)->tag(QString("weatherId")));
|
||||
allKeys.append(
|
||||
extWeather->activeItems().at(i)->tag(QString("weather")));
|
||||
allKeys.append(
|
||||
extWeather->activeItems().at(i)->tag(QString("humidity")));
|
||||
allKeys.append(
|
||||
extWeather->activeItems().at(i)->tag(QString("pressure")));
|
||||
allKeys.append(
|
||||
extWeather->activeItems().at(i)->tag(QString("temperature")));
|
||||
allKeys.append(
|
||||
extWeather->activeItems().at(i)->tag(QString("timestamp")));
|
||||
}
|
||||
// time
|
||||
allKeys.append(QString("time"));
|
||||
@ -166,14 +181,14 @@ QStringList AWKeys::dictKeys(const bool sorted, const QString regexp) const
|
||||
allKeys.append(QString("uptime"));
|
||||
allKeys.append(QString("cuptime"));
|
||||
// cpuclock & cpu
|
||||
for (int i=QThread::idealThreadCount()-1; i>=0; i--) {
|
||||
for (int i = QThread::idealThreadCount() - 1; i >= 0; i--) {
|
||||
allKeys.append(QString("cpucl%1").arg(i));
|
||||
allKeys.append(QString("cpu%1").arg(i));
|
||||
}
|
||||
allKeys.append(QString("cpucl"));
|
||||
allKeys.append(QString("cpu"));
|
||||
// temperature
|
||||
for (int i=m_devices[QString("temp")].count()-1; i>=0; i--)
|
||||
for (int i = m_devices[QString("temp")].count() - 1; i >= 0; i--)
|
||||
allKeys.append(QString("temp%1").arg(i));
|
||||
// gputemp
|
||||
allKeys.append(QString("gputemp"));
|
||||
@ -198,7 +213,7 @@ QStringList AWKeys::dictKeys(const bool sorted, const QString regexp) const
|
||||
allKeys.append(QString("swaptotgb"));
|
||||
allKeys.append(QString("swap"));
|
||||
// hdd
|
||||
for (int i=m_devices[QString("mount")].count()-1; i>=0; i--) {
|
||||
for (int i = m_devices[QString("mount")].count() - 1; i >= 0; i--) {
|
||||
allKeys.append(QString("hddmb%1").arg(i));
|
||||
allKeys.append(QString("hddgb%1").arg(i));
|
||||
allKeys.append(QString("hddfreemb%1").arg(i));
|
||||
@ -208,15 +223,15 @@ QStringList AWKeys::dictKeys(const bool sorted, const QString regexp) const
|
||||
allKeys.append(QString("hdd%1").arg(i));
|
||||
}
|
||||
// hdd speed
|
||||
for (int i=m_devices[QString("disk")].count()-1; i>=0; i--) {
|
||||
for (int i = m_devices[QString("disk")].count() - 1; i >= 0; i--) {
|
||||
allKeys.append(QString("hddr%1").arg(i));
|
||||
allKeys.append(QString("hddw%1").arg(i));
|
||||
}
|
||||
// hdd temp
|
||||
for (int i=m_devices[QString("hdd")].count()-1; i>=0; i--)
|
||||
for (int i = m_devices[QString("hdd")].count() - 1; i >= 0; i--)
|
||||
allKeys.append(QString("hddtemp%1").arg(i));
|
||||
// network
|
||||
for (int i=m_devices[QString("net")].count()-1; i>=0; i--) {
|
||||
for (int i = m_devices[QString("net")].count() - 1; i >= 0; i--) {
|
||||
allKeys.append(QString("downunits%1").arg(i));
|
||||
allKeys.append(QString("upunits%1").arg(i));
|
||||
allKeys.append(QString("downkb%1").arg(i));
|
||||
@ -233,11 +248,11 @@ QStringList AWKeys::dictKeys(const bool sorted, const QString regexp) const
|
||||
allKeys.append(QString("netdev"));
|
||||
// battery
|
||||
allKeys.append(QString("ac"));
|
||||
QStringList allBatteryDevices = QDir(QString("/sys/class/power_supply")).
|
||||
entryList(QStringList() << QString("BAT*"),
|
||||
QDir::Dirs | QDir::NoDotAndDotDot,
|
||||
QDir::Name);
|
||||
for (int i=allBatteryDevices.count()-1; i>=0; i--)
|
||||
QStringList allBatteryDevices
|
||||
= QDir(QString("/sys/class/power_supply"))
|
||||
.entryList(QStringList() << QString("BAT*"),
|
||||
QDir::Dirs | QDir::NoDotAndDotDot, QDir::Name);
|
||||
for (int i = allBatteryDevices.count() - 1; i >= 0; i--)
|
||||
allKeys.append(QString("bat%1").arg(i));
|
||||
allKeys.append(QString("bat"));
|
||||
// player
|
||||
@ -257,22 +272,27 @@ QStringList AWKeys::dictKeys(const bool sorted, const QString regexp) const
|
||||
allKeys.append(QString("pstotal"));
|
||||
allKeys.append(QString("ps"));
|
||||
// package manager
|
||||
for (int i=extUpgrade->activeItems().count()-1; i>=0; i--)
|
||||
allKeys.append(extUpgrade->activeItems().at(i)->tag(QString("pkgcount")));
|
||||
for (int i = extUpgrade->activeItems().count() - 1; i >= 0; i--)
|
||||
allKeys.append(
|
||||
extUpgrade->activeItems().at(i)->tag(QString("pkgcount")));
|
||||
// quotes
|
||||
for (int i=extQuotes->activeItems().count()-1; i>=0; i--) {
|
||||
for (int i = extQuotes->activeItems().count() - 1; i >= 0; i--) {
|
||||
allKeys.append(extQuotes->activeItems().at(i)->tag(QString("ask")));
|
||||
allKeys.append(extQuotes->activeItems().at(i)->tag(QString("askchg")));
|
||||
allKeys.append(extQuotes->activeItems().at(i)->tag(QString("percaskchg")));
|
||||
allKeys.append(
|
||||
extQuotes->activeItems().at(i)->tag(QString("percaskchg")));
|
||||
allKeys.append(extQuotes->activeItems().at(i)->tag(QString("bid")));
|
||||
allKeys.append(extQuotes->activeItems().at(i)->tag(QString("bidchg")));
|
||||
allKeys.append(extQuotes->activeItems().at(i)->tag(QString("percbidchg")));
|
||||
allKeys.append(
|
||||
extQuotes->activeItems().at(i)->tag(QString("percbidchg")));
|
||||
allKeys.append(extQuotes->activeItems().at(i)->tag(QString("price")));
|
||||
allKeys.append(extQuotes->activeItems().at(i)->tag(QString("pricechg")));
|
||||
allKeys.append(extQuotes->activeItems().at(i)->tag(QString("percpricechg")));
|
||||
allKeys.append(
|
||||
extQuotes->activeItems().at(i)->tag(QString("pricechg")));
|
||||
allKeys.append(
|
||||
extQuotes->activeItems().at(i)->tag(QString("percpricechg")));
|
||||
}
|
||||
// custom
|
||||
for (int i=extScripts->activeItems().count()-1; i>=0; i--)
|
||||
for (int i = extScripts->activeItems().count() - 1; i >= 0; i--)
|
||||
allKeys.append(extScripts->activeItems().at(i)->tag(QString("custom")));
|
||||
// desktop
|
||||
allKeys.append(QString("desktop"));
|
||||
@ -284,10 +304,10 @@ QStringList AWKeys::dictKeys(const bool sorted, const QString regexp) const
|
||||
allKeys.append(QString("la1"));
|
||||
// bars
|
||||
QStringList graphicalItemsKeys;
|
||||
foreach(GraphicalItem *item, graphicalItems->items())
|
||||
foreach (GraphicalItem *item, graphicalItems->items())
|
||||
graphicalItemsKeys.append(item->tag());
|
||||
graphicalItemsKeys.sort();
|
||||
for (int i=graphicalItemsKeys.count()-1; i>=0; i--)
|
||||
for (int i = graphicalItemsKeys.count() - 1; i >= 0; i--)
|
||||
allKeys.append(graphicalItemsKeys.at(i));
|
||||
|
||||
// sort if required
|
||||
@ -318,23 +338,47 @@ QString AWKeys::infoByKey(QString key) const
|
||||
|
||||
key.remove(QRegExp(QString("^bar[0-9]{1,}")));
|
||||
if (key.startsWith(QString("custom")))
|
||||
return extScripts->itemByTagNumber(key.remove(QString("custom")).toInt())->uniq();
|
||||
return extScripts->itemByTagNumber(
|
||||
key.remove(QString("custom")).toInt())
|
||||
->uniq();
|
||||
else if (key.contains(QRegExp(QString("^hdd[rw]"))))
|
||||
return QString("%1").arg(m_devices[QString("disk")][key.remove(QRegExp(QString("hdd[rw]"))).toInt()]);
|
||||
else if (key.contains(QRegExp(QString("^hdd([0-9]|mb|gb|freemb|freegb|totmb|totgb)"))))
|
||||
return QString("%1").arg(m_devices[QString("mount")][key.remove(QRegExp(QString("^hdd([0-9]|mb|gb|freemb|freegb|totmb|totgb)"))).toInt()]);
|
||||
return QString("%1").arg(m_devices[QString(
|
||||
"disk")][key.remove(QRegExp(QString("hdd[rw]"))).toInt()]);
|
||||
else if (key.contains(QRegExp(
|
||||
QString("^hdd([0-9]|mb|gb|freemb|freegb|totmb|totgb)"))))
|
||||
return QString("%1").arg(m_devices[QString(
|
||||
"mount")][key
|
||||
.remove(QRegExp(QString(
|
||||
"^hdd([0-9]|mb|gb|freemb|freegb|totmb|totgb)")))
|
||||
.toInt()]);
|
||||
else if (key.startsWith(QString("hddtemp")))
|
||||
return QString("%1").arg(m_devices[QString("hdd")][key.remove(QString("hddtemp")).toInt()]);
|
||||
return QString("%1").arg(
|
||||
m_devices[QString("hdd")][key.remove(QString("hddtemp")).toInt()]);
|
||||
else if (key.contains(QRegExp(QString("^(down|up)[0-9]"))))
|
||||
return QString("%1").arg(m_devices[QString("net")][key.remove(QRegExp(QString("^(down|up)"))).toInt()]);
|
||||
return QString("%1").arg(m_devices[QString(
|
||||
"net")][key.remove(QRegExp(QString("^(down|up)"))).toInt()]);
|
||||
else if (key.startsWith(QString("pkgcount")))
|
||||
return extUpgrade->itemByTagNumber(key.remove(QString("pkgcount")).toInt())->uniq();
|
||||
return extUpgrade->itemByTagNumber(
|
||||
key.remove(QString("pkgcount")).toInt())
|
||||
->uniq();
|
||||
else if (key.contains(QRegExp(QString("(^|perc)(ask|bid|price)(chg|)"))))
|
||||
return extQuotes->itemByTagNumber(key.remove(QRegExp(QString("(^|perc)(ask|bid|price)(chg|)"))).toInt())->uniq();
|
||||
else if (key.contains(QRegExp(QString("(weather|weatherId|humidity|pressure|temperature)"))))
|
||||
return extWeather->itemByTagNumber(key.remove(QRegExp(QString("(weather|weatherId|humidity|pressure|temperature)"))).toInt())->uniq();
|
||||
return extQuotes->itemByTagNumber(
|
||||
key.remove(QRegExp(QString(
|
||||
"(^|perc)(ask|bid|price)(chg|)")))
|
||||
.toInt())
|
||||
->uniq();
|
||||
else if (key.contains(QRegExp(
|
||||
QString("(weather|weatherId|humidity|pressure|temperature)"))))
|
||||
return extWeather
|
||||
->itemByTagNumber(
|
||||
key
|
||||
.remove(QRegExp(QString(
|
||||
"(weather|weatherId|humidity|pressure|temperature)")))
|
||||
.toInt())
|
||||
->uniq();
|
||||
else if (key.startsWith(QString("temp")))
|
||||
return QString("%1").arg(m_devices[QString("temp")][key.remove(QString("temp")).toInt()]);
|
||||
return QString("%1").arg(
|
||||
m_devices[QString("temp")][key.remove(QString("temp")).toInt()]);
|
||||
|
||||
return QString("(none)");
|
||||
}
|
||||
@ -346,7 +390,8 @@ QString AWKeys::valueByKey(QString key) const
|
||||
qCDebug(LOG_AW);
|
||||
qCDebug(LOG_AW) << "Requested key" << key;
|
||||
|
||||
return values.value(key.remove(QRegExp(QString("^bar[0-9]{1,}"))), QString(""));
|
||||
return values.value(key.remove(QRegExp(QString("^bar[0-9]{1,}"))),
|
||||
QString(""));
|
||||
}
|
||||
|
||||
|
||||
@ -356,7 +401,8 @@ void AWKeys::editItem(const QString type)
|
||||
qCDebug(LOG_AW) << "Item type" << type;
|
||||
|
||||
if (type == QString("graphicalitem")) {
|
||||
graphicalItems->setConfigArgs(dictKeys(true, QString("^(cpu(?!cl).*|gpu$|mem$|swap$|hdd[0-9].*|bat.*)")));
|
||||
graphicalItems->setConfigArgs(dictKeys(
|
||||
true, QString("^(cpu(?!cl).*|gpu$|mem$|swap$|hdd[0-9].*|bat.*)")));
|
||||
return graphicalItems->editItems();
|
||||
} else if (type == QString("extquotes")) {
|
||||
return extQuotes->editItems();
|
||||
@ -375,7 +421,8 @@ void AWKeys::addDevice(const QString source)
|
||||
qCDebug(LOG_AW);
|
||||
qCDebug(LOG_AW) << "Source" << source;
|
||||
|
||||
QRegExp diskRegexp = QRegExp(QString("disk/(?:md|sd|hd)[a-z|0-9]_.*/Rate/(?:rblk)"));
|
||||
QRegExp diskRegexp
|
||||
= QRegExp(QString("disk/(?:md|sd|hd)[a-z|0-9]_.*/Rate/(?:rblk)"));
|
||||
QRegExp mountRegexp = QRegExp(QString("partitions/.*/filllevel"));
|
||||
|
||||
if (source.contains(diskRegexp)) {
|
||||
@ -392,7 +439,8 @@ void AWKeys::addDevice(const QString source)
|
||||
}
|
||||
|
||||
|
||||
void AWKeys::dataUpdated(const QString &sourceName, const Plasma::DataEngine::Data &data)
|
||||
void AWKeys::dataUpdated(const QString &sourceName,
|
||||
const Plasma::DataEngine::Data &data)
|
||||
{
|
||||
qCDebug(LOG_AW);
|
||||
qCDebug(LOG_AW) << "Source" << sourceName;
|
||||
@ -403,8 +451,9 @@ void AWKeys::dataUpdated(const QString &sourceName, const Plasma::DataEngine::Da
|
||||
|
||||
#ifdef BUILD_FUTURE
|
||||
// run concurrent data update
|
||||
QtConcurrent::run(m_threadPool, this, &AWKeys::setDataBySource, sourceName, data);
|
||||
#else /* BUILD_FUTURE */
|
||||
QtConcurrent::run(m_threadPool, this, &AWKeys::setDataBySource, sourceName,
|
||||
data);
|
||||
#else /* BUILD_FUTURE */
|
||||
return setDataBySource(sourceName, data);
|
||||
#endif /* BUILD_FUTURE */
|
||||
}
|
||||
@ -414,15 +463,16 @@ void AWKeys::loadKeysFromCache()
|
||||
{
|
||||
qCDebug(LOG_AW);
|
||||
|
||||
QString fileName = QString("%1/awesomewidgets.ndx").
|
||||
arg(QStandardPaths::writableLocation(QStandardPaths::GenericCacheLocation));
|
||||
QString fileName = QString("%1/awesomewidgets.ndx")
|
||||
.arg(QStandardPaths::writableLocation(
|
||||
QStandardPaths::GenericCacheLocation));
|
||||
qCInfo(LOG_AW) << "Cache file" << fileName;
|
||||
QSettings cache(fileName, QSettings::IniFormat);
|
||||
|
||||
foreach(QString group, cache.childGroups()) {
|
||||
foreach (QString group, cache.childGroups()) {
|
||||
cache.beginGroup(group);
|
||||
m_devices.remove(group);
|
||||
foreach(QString key, cache.allKeys())
|
||||
foreach (QString key, cache.allKeys())
|
||||
m_devices[group].append(cache.value(key).toString());
|
||||
cache.endGroup();
|
||||
}
|
||||
@ -437,13 +487,19 @@ void AWKeys::reinitKeys()
|
||||
|
||||
// renew extensions
|
||||
// delete them if any
|
||||
if (graphicalItems != nullptr) delete graphicalItems;
|
||||
if (extQuotes != nullptr) delete extQuotes;
|
||||
if (extScripts != nullptr) delete extScripts;
|
||||
if (extUpgrade != nullptr) delete extUpgrade;
|
||||
if (extWeather != nullptr) delete extWeather;
|
||||
if (graphicalItems != nullptr)
|
||||
delete graphicalItems;
|
||||
if (extQuotes != nullptr)
|
||||
delete extQuotes;
|
||||
if (extScripts != nullptr)
|
||||
delete extScripts;
|
||||
if (extUpgrade != nullptr)
|
||||
delete extUpgrade;
|
||||
if (extWeather != nullptr)
|
||||
delete extWeather;
|
||||
// create
|
||||
graphicalItems = new ExtItemAggregator<GraphicalItem>(nullptr, QString("desktops"));
|
||||
graphicalItems
|
||||
= new ExtItemAggregator<GraphicalItem>(nullptr, QString("desktops"));
|
||||
extQuotes = new ExtItemAggregator<ExtQuotes>(nullptr, QString("quotes"));
|
||||
extScripts = new ExtItemAggregator<ExtScript>(nullptr, QString("scripts"));
|
||||
extUpgrade = new ExtItemAggregator<ExtUpgrade>(nullptr, QString("upgrade"));
|
||||
@ -456,7 +512,7 @@ void AWKeys::reinitKeys()
|
||||
// not documented feature - place all available tags
|
||||
m_pattern = m_pattern.replace(QString("$ALL"), [allKeys]() {
|
||||
QStringList strings;
|
||||
foreach(QString tag, allKeys)
|
||||
foreach (QString tag, allKeys)
|
||||
strings.append(QString("%1: $%1").arg(tag));
|
||||
return strings.join(QString(" | "));
|
||||
}());
|
||||
@ -466,9 +522,9 @@ void AWKeys::reinitKeys()
|
||||
// bars
|
||||
m_foundBars = [allKeys](QString pattern) {
|
||||
QStringList selectedKeys;
|
||||
foreach(QString key, allKeys)
|
||||
if ((key.startsWith(QString("bar"))) &&
|
||||
(pattern.contains(QString("$%1").arg(key)))) {
|
||||
foreach (QString key, allKeys)
|
||||
if ((key.startsWith(QString("bar")))
|
||||
&& (pattern.contains(QString("$%1").arg(key)))) {
|
||||
qCInfo(LOG_AW) << "Found bar" << key;
|
||||
selectedKeys.append(key);
|
||||
}
|
||||
@ -480,9 +536,9 @@ void AWKeys::reinitKeys()
|
||||
// main key list
|
||||
m_foundKeys = [allKeys](QString pattern) {
|
||||
QStringList selectedKeys;
|
||||
foreach(QString key, allKeys)
|
||||
if ((!key.startsWith(QString("bar"))) &&
|
||||
(pattern.contains(QString("$%1").arg(key)))) {
|
||||
foreach (QString key, allKeys)
|
||||
if ((!key.startsWith(QString("bar")))
|
||||
&& (pattern.contains(QString("$%1").arg(key)))) {
|
||||
qCInfo(LOG_AW) << "Found key" << key;
|
||||
selectedKeys.append(key);
|
||||
}
|
||||
@ -495,8 +551,10 @@ void AWKeys::reinitKeys()
|
||||
m_foundLambdas = [](QString pattern) {
|
||||
QStringList selectedKeys;
|
||||
// substring inside ${{ }} (with brackets) which should not contain ${{
|
||||
QRegularExpression lambdaRegexp(QString("\\$\\{\\{((?!\\$\\{\\{).)*?\\}\\}"));
|
||||
lambdaRegexp.setPatternOptions(QRegularExpression::DotMatchesEverythingOption);
|
||||
QRegularExpression lambdaRegexp(
|
||||
QString("\\$\\{\\{((?!\\$\\{\\{).)*?\\}\\}"));
|
||||
lambdaRegexp.setPatternOptions(
|
||||
QRegularExpression::DotMatchesEverythingOption);
|
||||
|
||||
QRegularExpressionMatchIterator it = lambdaRegexp.globalMatch(pattern);
|
||||
while (it.hasNext()) {
|
||||
@ -535,40 +593,49 @@ void AWKeys::addKeyToCache(const QString type, const QString key)
|
||||
qCDebug(LOG_AW) << "Key type" << type;
|
||||
qCDebug(LOG_AW) << "Key" << key;
|
||||
|
||||
QString fileName = QString("%1/awesomewidgets.ndx").
|
||||
arg(QStandardPaths::writableLocation(QStandardPaths::GenericCacheLocation));
|
||||
QString fileName = QString("%1/awesomewidgets.ndx")
|
||||
.arg(QStandardPaths::writableLocation(
|
||||
QStandardPaths::GenericCacheLocation));
|
||||
qCInfo(LOG_AW) << "Cache file" << fileName;
|
||||
QSettings cache(fileName, QSettings::IniFormat);
|
||||
|
||||
cache.beginGroup(type);
|
||||
QStringList cachedValues;
|
||||
foreach(QString key, cache.allKeys())
|
||||
foreach (QString key, cache.allKeys())
|
||||
cachedValues.append(cache.value(key).toString());
|
||||
|
||||
if (type == QString("hdd")) {
|
||||
QStringList allDevices = QDir(QString("/dev")).entryList(QDir::System, QDir::Name);
|
||||
QStringList devices = allDevices.filter(QRegExp(QString("^[hms]d[a-z]$")));
|
||||
foreach(QString dev, devices) {
|
||||
QStringList allDevices
|
||||
= QDir(QString("/dev")).entryList(QDir::System, QDir::Name);
|
||||
QStringList devices
|
||||
= allDevices.filter(QRegExp(QString("^[hms]d[a-z]$")));
|
||||
foreach (QString dev, devices) {
|
||||
QString device = QString("/dev/%1").arg(dev);
|
||||
if (cachedValues.contains(device))
|
||||
continue;
|
||||
qCInfo(LOG_AW) << "Found new key" << device << "for type" << type;
|
||||
cache.setValue(QString("%1").arg(cache.allKeys().count(), 3, 10, QChar('0')), device);
|
||||
cache.setValue(
|
||||
QString("%1").arg(cache.allKeys().count(), 3, 10, QChar('0')),
|
||||
device);
|
||||
}
|
||||
} else if (type == QString("net")) {
|
||||
QList<QNetworkInterface> rawInterfaceList = QNetworkInterface::allInterfaces();
|
||||
foreach(QNetworkInterface interface, rawInterfaceList) {
|
||||
QList<QNetworkInterface> rawInterfaceList
|
||||
= QNetworkInterface::allInterfaces();
|
||||
foreach (QNetworkInterface interface, rawInterfaceList) {
|
||||
QString device = interface.name();
|
||||
if (cachedValues.contains(device))
|
||||
continue;
|
||||
qCInfo(LOG_AW) << "Found new key" << device << "for type" << type;
|
||||
cache.setValue(QString("%1").arg(cache.allKeys().count(), 3, 10, QChar('0')), device);
|
||||
cache.setValue(
|
||||
QString("%1").arg(cache.allKeys().count(), 3, 10, QChar('0')),
|
||||
device);
|
||||
}
|
||||
} else {
|
||||
if (cachedValues.contains(key))
|
||||
return;
|
||||
qCInfo(LOG_AW) << "Found new key" << key << "for type" << type;
|
||||
cache.setValue(QString("%1").arg(cache.allKeys().count(), 3, 10, QChar('0')), key);
|
||||
cache.setValue(
|
||||
QString("%1").arg(cache.allKeys().count(), 3, 10, QChar('0')), key);
|
||||
}
|
||||
cache.endGroup();
|
||||
|
||||
@ -584,25 +651,32 @@ void AWKeys::calculateValues()
|
||||
qCDebug(LOG_AW);
|
||||
|
||||
// hddtot*
|
||||
foreach(QString device, m_devices[QString("mount")]) {
|
||||
foreach (QString device, m_devices[QString("mount")]) {
|
||||
int index = m_devices[QString("mount")].indexOf(device);
|
||||
values[QString("hddtotmb%1").arg(index)] = QString("%1").
|
||||
arg(values[QString("hddfreemb%1").arg(index)].toFloat()
|
||||
+ values[QString("hddmb%1").arg(index)].toFloat(), 5, 'f', 0);
|
||||
values[QString("hddtotgb%1").arg(index)] = QString("%1").
|
||||
arg(values[QString("hddfreegb%1").arg(index)].toFloat()
|
||||
+ values[QString("hddgb%1").arg(index)].toFloat(), 5, 'f', 1);
|
||||
values[QString("hddtotmb%1").arg(index)] = QString("%1").arg(
|
||||
values[QString("hddfreemb%1").arg(index)].toFloat()
|
||||
+ values[QString("hddmb%1").arg(index)].toFloat(),
|
||||
5, 'f', 0);
|
||||
values[QString("hddtotgb%1").arg(index)] = QString("%1").arg(
|
||||
values[QString("hddfreegb%1").arg(index)].toFloat()
|
||||
+ values[QString("hddgb%1").arg(index)].toFloat(),
|
||||
5, 'f', 1);
|
||||
}
|
||||
|
||||
// memtot*
|
||||
values[QString("memtotmb")] = QString("%1").
|
||||
arg(values[QString("memusedmb")].toInt() + values[QString("memfreemb")].toInt(), 5);
|
||||
values[QString("memtotgb")] = QString("%1").
|
||||
arg(values[QString("memusedgb")].toFloat() + values[QString("memfreegb")].toFloat(), 5, 'f', 1);
|
||||
values[QString("memtotmb")]
|
||||
= QString("%1").arg(values[QString("memusedmb")].toInt()
|
||||
+ values[QString("memfreemb")].toInt(),
|
||||
5);
|
||||
values[QString("memtotgb")]
|
||||
= QString("%1").arg(values[QString("memusedgb")].toFloat()
|
||||
+ values[QString("memfreegb")].toFloat(),
|
||||
5, 'f', 1);
|
||||
// mem
|
||||
values[QString("mem")] = QString("%1").
|
||||
arg(100.0 * values[QString("memmb")].toFloat() / values[QString("memtotmb")].toFloat(),
|
||||
5, 'f', 1);
|
||||
values[QString("mem")]
|
||||
= QString("%1").arg(100.0 * values[QString("memmb")].toFloat()
|
||||
/ values[QString("memtotmb")].toFloat(),
|
||||
5, 'f', 1);
|
||||
|
||||
// up, down, upkb, downkb, upunits, downunits
|
||||
int netIndex = m_devices[QString("net")].indexOf(values[QString("netdev")]);
|
||||
@ -614,27 +688,33 @@ void AWKeys::calculateValues()
|
||||
values[QString("upunits")] = values[QString("upunits%1").arg(netIndex)];
|
||||
|
||||
// swaptot*
|
||||
values[QString("swaptotmb")] = QString("%1").
|
||||
arg(values[QString("swapmb")].toInt() + values[QString("swapfreemb")].toInt(), 5);
|
||||
values[QString("swaptotgb")] = QString("%1").
|
||||
arg(values[QString("swapgb")].toFloat() + values[QString("swapfreegb")].toFloat(), 5, 'f', 1);
|
||||
values[QString("swaptotmb")]
|
||||
= QString("%1").arg(values[QString("swapmb")].toInt()
|
||||
+ values[QString("swapfreemb")].toInt(),
|
||||
5);
|
||||
values[QString("swaptotgb")]
|
||||
= QString("%1").arg(values[QString("swapgb")].toFloat()
|
||||
+ values[QString("swapfreegb")].toFloat(),
|
||||
5, 'f', 1);
|
||||
// swap
|
||||
values[QString("swap")] = QString("%1").
|
||||
arg(100.0 * values[QString("swapmb")].toFloat() / values[QString("swaptotmb")].toFloat(),
|
||||
5, 'f', 1);
|
||||
values[QString("swap")]
|
||||
= QString("%1").arg(100.0 * values[QString("swapmb")].toFloat()
|
||||
/ values[QString("swaptotmb")].toFloat(),
|
||||
5, 'f', 1);
|
||||
|
||||
// lambdas
|
||||
foreach(QString key, m_foundLambdas)
|
||||
foreach (QString key, m_foundLambdas)
|
||||
values[key] = [this](QString key) {
|
||||
QJSEngine engine;
|
||||
// apply $this values
|
||||
key.replace(QString("$this"), values[key]);
|
||||
foreach(QString lambdaKey, m_foundKeys)
|
||||
foreach (QString lambdaKey, m_foundKeys)
|
||||
key.replace(QString("$%1").arg(lambdaKey), values[lambdaKey]);
|
||||
qCInfo(LOG_AW) << "Expression" << key;
|
||||
QJSValue result = engine.evaluate(key);
|
||||
if (result.isError()) {
|
||||
qCWarning(LOG_AW) << "Uncaught exception at line" << result.property("lineNumber").toInt()
|
||||
qCWarning(LOG_AW) << "Uncaught exception at line"
|
||||
<< result.property("lineNumber").toInt()
|
||||
<< ":" << result.toString();
|
||||
return QString();
|
||||
} else {
|
||||
@ -652,27 +732,29 @@ QString AWKeys::parsePattern(QString pattern) const
|
||||
pattern.replace(QString("$$"), QString("$\\$\\"));
|
||||
|
||||
// lambdas
|
||||
foreach(QString key, m_foundLambdas)
|
||||
foreach (QString key, m_foundLambdas)
|
||||
pattern.replace(QString("${{%1}}").arg(key), values[key]);
|
||||
|
||||
// main keys
|
||||
foreach(QString key, m_foundKeys)
|
||||
pattern.replace(QString("$%1").arg(key), [](QString key, QString value) {
|
||||
if ((!key.startsWith(QString("custom")))
|
||||
&& (!key.startsWith(QString("weather"))))
|
||||
value.replace(QString(" "), QString(" "));
|
||||
return value;
|
||||
}(key, values[key]));
|
||||
foreach (QString key, m_foundKeys)
|
||||
pattern.replace(QString("$%1").arg(key),
|
||||
[](QString key, QString value) {
|
||||
if ((!key.startsWith(QString("custom")))
|
||||
&& (!key.startsWith(QString("weather"))))
|
||||
value.replace(QString(" "), QString(" "));
|
||||
return value;
|
||||
}(key, values[key]));
|
||||
|
||||
// bars
|
||||
foreach(QString bar,m_foundBars) {
|
||||
foreach (QString bar, m_foundBars) {
|
||||
GraphicalItem *item = graphicalItems->itemByTag(bar);
|
||||
QString key = bar;
|
||||
key.remove(QRegExp(QString("^bar[0-9]{1,}")));
|
||||
if (item->type() == GraphicalItem::Graph)
|
||||
pattern.replace(QString("$%1").arg(bar), item->image([](const QList<float> data) {
|
||||
return QVariant::fromValue<QList<float>>(data);
|
||||
}(dataAggregator->getData(key))));
|
||||
pattern.replace(QString("$%1").arg(bar),
|
||||
item->image([](const QList<float> data) {
|
||||
return QVariant::fromValue<QList<float>>(data);
|
||||
}(dataAggregator->getData(key))));
|
||||
else
|
||||
pattern.replace(QString("$%1").arg(bar), item->image(values[key]));
|
||||
}
|
||||
@ -695,7 +777,8 @@ void AWKeys::setDataBySource(const QString &sourceName, const QVariantMap &data)
|
||||
// first list init
|
||||
QStringList tags = aggregator->keysFromSource(sourceName);
|
||||
if (tags.isEmpty())
|
||||
tags = aggregator->registerSource(sourceName, data[QString("units")].toString());
|
||||
tags = aggregator->registerSource(sourceName,
|
||||
data[QString("units")].toString());
|
||||
|
||||
// update data or drop source if there are no matches
|
||||
if (tags.isEmpty()) {
|
||||
@ -705,11 +788,15 @@ void AWKeys::setDataBySource(const QString &sourceName, const QVariantMap &data)
|
||||
#ifdef BUILD_FUTURE
|
||||
m_mutex.lock();
|
||||
#endif /* BUILD_FUTURE */
|
||||
// HACK workaround for time values which are stored in the different path
|
||||
QVariant value = sourceName == QString("Local") ? data[QString("DateTime")] : data[QString("value")];
|
||||
std::for_each(tags.cbegin(), tags.cend(), [this, value](const QString tag) {
|
||||
values[tag] = aggregator->formater(value, tag);
|
||||
});
|
||||
// HACK workaround for time values which are stored in the different
|
||||
// path
|
||||
QVariant value = sourceName == QString("Local")
|
||||
? data[QString("DateTime")]
|
||||
: data[QString("value")];
|
||||
std::for_each(tags.cbegin(), tags.cend(),
|
||||
[this, value](const QString tag) {
|
||||
values[tag] = aggregator->formater(value, tag);
|
||||
});
|
||||
#ifdef BUILD_FUTURE
|
||||
m_mutex.unlock();
|
||||
#endif /* BUILD_FUTURE */
|
||||
|
@ -46,7 +46,8 @@ public:
|
||||
Q_INVOKABLE void initDataAggregator(const QVariantMap tooltipParams);
|
||||
Q_INVOKABLE void initKeys(const QString currentPattern, const int interval,
|
||||
const int limit);
|
||||
Q_INVOKABLE void setAggregatorProperty(const QString key, const QVariant value);
|
||||
Q_INVOKABLE void setAggregatorProperty(const QString key,
|
||||
const QVariant value);
|
||||
Q_INVOKABLE void setWrapNewLines(const bool wrap = false);
|
||||
Q_INVOKABLE void updateCache();
|
||||
// keys
|
||||
@ -61,9 +62,10 @@ public:
|
||||
|
||||
public slots:
|
||||
void addDevice(const QString source);
|
||||
void dataUpdated(const QString &sourceName, const Plasma::DataEngine::Data &data);
|
||||
void dataUpdated(const QString &sourceName,
|
||||
const Plasma::DataEngine::Data &data);
|
||||
// dummy method required by DataEngine connections
|
||||
void modelChanged(QString, QAbstractItemModel *) {};
|
||||
void modelChanged(QString, QAbstractItemModel *){};
|
||||
|
||||
signals:
|
||||
void dropSourceFromDataengine(const QString source);
|
||||
|
@ -39,7 +39,8 @@ AWKeysAggregator::~AWKeysAggregator()
|
||||
}
|
||||
|
||||
|
||||
QString AWKeysAggregator::formater(const QVariant data, const QString key) const
|
||||
QString AWKeysAggregator::formater(const QVariant &data,
|
||||
const QString &key) const
|
||||
{
|
||||
qCDebug(LOG_AW);
|
||||
qCDebug(LOG_AW) << "Data" << data;
|
||||
@ -68,7 +69,8 @@ QString AWKeysAggregator::formater(const QVariant data, const QString key) const
|
||||
output = data.toBool() ? m_acOnline : m_acOffline;
|
||||
break;
|
||||
case MemGBFormat:
|
||||
output = QString("%1").arg(data.toFloat() / (1024.0 * 1024.0), 5, 'f', 1);
|
||||
output
|
||||
= QString("%1").arg(data.toFloat() / (1024.0 * 1024.0), 5, 'f', 1);
|
||||
break;
|
||||
case MemMBFormat:
|
||||
output = QString("%1").arg(data.toFloat() / 1024.0, 5, 'f', 0);
|
||||
@ -101,7 +103,7 @@ QString AWKeysAggregator::formater(const QVariant data, const QString key) const
|
||||
case TimeCustom:
|
||||
output = m_customTime;
|
||||
[&output, loc, this](const QDateTime dt) {
|
||||
foreach(QString key, timeKeys)
|
||||
foreach (QString key, timeKeys)
|
||||
output.replace(QString("$%1").arg(key), loc.toString(dt, key));
|
||||
}(data.toDateTime());
|
||||
break;
|
||||
@ -116,19 +118,25 @@ QString AWKeysAggregator::formater(const QVariant data, const QString key) const
|
||||
break;
|
||||
case Uptime:
|
||||
case UptimeCustom:
|
||||
output = [](QString source, const int uptime) {
|
||||
int seconds = uptime - uptime % 60;
|
||||
int minutes = seconds / 60 % 60;
|
||||
int hours = ((seconds / 60) - minutes) / 60 % 24;
|
||||
int days = (((seconds / 60) - minutes) / 60 - hours) / 24;
|
||||
source.replace(QString("$dd"), QString("%1").arg(days, 3, 10, QChar('0')));
|
||||
source.replace(QString("$d"), QString("%1").arg(days));
|
||||
source.replace(QString("$hh"), QString("%1").arg(hours, 2, 10, QChar('0')));
|
||||
source.replace(QString("$h"), QString("%1").arg(hours));
|
||||
source.replace(QString("$mm"), QString("%1").arg(minutes, 2, 10, QChar('0')));
|
||||
source.replace(QString("$m"), QString("%1").arg(minutes));
|
||||
return source;
|
||||
}(m_formater[key] == Uptime ? QString("$ddd$hhh$mmm") : m_customUptime, data.toFloat());
|
||||
output =
|
||||
[](QString source, const int uptime) {
|
||||
int seconds = uptime - uptime % 60;
|
||||
int minutes = seconds / 60 % 60;
|
||||
int hours = ((seconds / 60) - minutes) / 60 % 24;
|
||||
int days = (((seconds / 60) - minutes) / 60 - hours) / 24;
|
||||
source.replace(QString("$dd"),
|
||||
QString("%1").arg(days, 3, 10, QChar('0')));
|
||||
source.replace(QString("$d"), QString("%1").arg(days));
|
||||
source.replace(QString("$hh"),
|
||||
QString("%1").arg(hours, 2, 10, QChar('0')));
|
||||
source.replace(QString("$h"), QString("%1").arg(hours));
|
||||
source.replace(QString("$mm"),
|
||||
QString("%1").arg(minutes, 2, 10, QChar('0')));
|
||||
source.replace(QString("$m"), QString("%1").arg(minutes));
|
||||
return source;
|
||||
}(m_formater[key] == Uptime ? QString("$ddd$hhh$mmm")
|
||||
: m_customUptime,
|
||||
data.toFloat());
|
||||
break;
|
||||
case NoFormat:
|
||||
default:
|
||||
@ -140,7 +148,7 @@ QString AWKeysAggregator::formater(const QVariant data, const QString key) const
|
||||
}
|
||||
|
||||
|
||||
QStringList AWKeysAggregator::keysFromSource(const QString source) const
|
||||
QStringList AWKeysAggregator::keysFromSource(const QString &source) const
|
||||
{
|
||||
qCDebug(LOG_AW);
|
||||
qCDebug(LOG_AW) << "Search for source" << source;
|
||||
@ -212,8 +220,10 @@ void AWKeysAggregator::setTranslate(const bool translate)
|
||||
}
|
||||
|
||||
|
||||
// HACK units required to define should the value be calculated as temperature or fan data
|
||||
QStringList AWKeysAggregator::registerSource(const QString source, const QString units)
|
||||
// HACK units required to define should the value be calculated as temperature
|
||||
// or fan data
|
||||
QStringList AWKeysAggregator::registerSource(const QString &source,
|
||||
const QString &units)
|
||||
{
|
||||
qCDebug(LOG_AW);
|
||||
qCDebug(LOG_AW) << "Source" << source;
|
||||
@ -227,7 +237,8 @@ QStringList AWKeysAggregator::registerSource(const QString source, const QString
|
||||
QRegExp mountFillRegExp = QRegExp(QString("partitions/.*/filllevel"));
|
||||
QRegExp mountFreeRegExp = QRegExp(QString("partitions/.*/freespace"));
|
||||
QRegExp mountUsedRegExp = QRegExp(QString("partitions/.*/usedspace"));
|
||||
QRegExp netRegExp = QRegExp(QString("network/interfaces/.*/(receiver|transmitter)/data$"));
|
||||
QRegExp netRegExp = QRegExp(
|
||||
QString("network/interfaces/.*/(receiver|transmitter)/data$"));
|
||||
|
||||
if (source == QString("battery/ac")) {
|
||||
// AC
|
||||
@ -393,8 +404,10 @@ QStringList AWKeysAggregator::registerSource(const QString source, const QString
|
||||
m_formater[QString("netdev")] = NoFormat;
|
||||
} else if (source.contains(netRegExp)) {
|
||||
// network speed
|
||||
QString type = source.contains(QString("receiver")) ? QString("down") : QString("up");
|
||||
int index = m_devices[QString("net")].indexOf(source.split(QChar('/'))[2]);
|
||||
QString type = source.contains(QString("receiver")) ? QString("down")
|
||||
: QString("up");
|
||||
int index
|
||||
= m_devices[QString("net")].indexOf(source.split(QChar('/'))[2]);
|
||||
if (index > -1) {
|
||||
// kb
|
||||
QString key = QString("%1kb%2").arg(type).arg(index);
|
||||
@ -459,7 +472,8 @@ QStringList AWKeysAggregator::registerSource(const QString source, const QString
|
||||
// temperature
|
||||
int index = m_devices[QString("temp")].indexOf(source);
|
||||
// FIXME on DE initialization there are no units key
|
||||
if (units.isEmpty()) return QStringList() << QString("temp%1").arg(index);
|
||||
if (units.isEmpty())
|
||||
return QStringList() << QString("temp%1").arg(index);
|
||||
if (index > -1) {
|
||||
QString key = QString("temp%1").arg(index);
|
||||
m_map[source] = key;
|
||||
|
@ -31,7 +31,8 @@ class AWKeysAggregator : public QObject
|
||||
Q_PROPERTY(QString acOffline MEMBER m_acOffline WRITE setAcOffline);
|
||||
Q_PROPERTY(QString acOnline MEMBER m_acOnline WRITE setAcOnline);
|
||||
Q_PROPERTY(QString customTime MEMBER m_customTime WRITE setCustomTime);
|
||||
Q_PROPERTY(QString customUptime MEMBER m_customUptime WRITE setCustomUptime);
|
||||
Q_PROPERTY(
|
||||
QString customUptime MEMBER m_customUptime WRITE setCustomUptime);
|
||||
Q_PROPERTY(QString tempUnits MEMBER m_tempUnits WRITE setTempUnits);
|
||||
Q_PROPERTY(bool translate MEMBER m_translate WRITE setTranslate);
|
||||
|
||||
@ -64,8 +65,8 @@ public:
|
||||
explicit AWKeysAggregator(QObject *parent = nullptr);
|
||||
virtual ~AWKeysAggregator();
|
||||
// get methods
|
||||
QString formater(const QVariant data, const QString key) const;
|
||||
QStringList keysFromSource(const QString source) const;
|
||||
QString formater(const QVariant &data, const QString &key) const;
|
||||
QStringList keysFromSource(const QString &source) const;
|
||||
// set methods
|
||||
void setAcOffline(const QString inactive);
|
||||
void setAcOnline(const QString active);
|
||||
@ -76,7 +77,7 @@ public:
|
||||
void setTranslate(const bool translate);
|
||||
|
||||
public slots:
|
||||
QStringList registerSource(const QString source, const QString units);
|
||||
QStringList registerSource(const QString &source, const QString &units);
|
||||
|
||||
private:
|
||||
float temperature(const float temp) const;
|
||||
@ -90,7 +91,7 @@ private:
|
||||
QHash<QString, FormaterType> m_formater;
|
||||
QHash<QString, QString> m_map;
|
||||
QString m_tempUnits;
|
||||
bool m_translate;
|
||||
bool m_translate = false;
|
||||
};
|
||||
|
||||
|
||||
|
@ -3,13 +3,13 @@ message(STATUS "Subproject ${SUBPROJECT}")
|
||||
add_definitions(-DTRANSLATION_DOMAIN=\"plasma_applet_org.kde.plasma.awesomewidget\")
|
||||
|
||||
include_directories(
|
||||
${CMAKE_SOURCE_DIR}
|
||||
${CMAKE_BINARY_DIR}
|
||||
${CMAKE_CURRENT_BINARY_DIR}
|
||||
${CMAKE_CURRENT_BINARY_DIR}/../
|
||||
${PROJECT_TRDPARTY_DIR}
|
||||
${Qt_INCLUDE}
|
||||
${Kf5_INCLUDE}
|
||||
${CMAKE_SOURCE_DIR}
|
||||
${CMAKE_BINARY_DIR}
|
||||
${CMAKE_CURRENT_BINARY_DIR}
|
||||
${CMAKE_CURRENT_BINARY_DIR}/../
|
||||
${PROJECT_TRDPARTY_DIR}
|
||||
${Qt_INCLUDE}
|
||||
${Kf5_INCLUDE}
|
||||
)
|
||||
|
||||
file(GLOB SUBPROJECT_SOURCE *.cpp ${PROJECT_TRDPARTY_DIR}/qreplytimeout/*.cpp ${CMAKE_SOURCE_DIR}/*.cpp)
|
||||
|
@ -28,9 +28,9 @@
|
||||
|
||||
AbstractExtItem::AbstractExtItem(QWidget *parent, const QString desktopName,
|
||||
const QStringList directories)
|
||||
: QDialog(parent),
|
||||
m_fileName(desktopName),
|
||||
m_dirs(directories)
|
||||
: QDialog(parent)
|
||||
, m_fileName(desktopName)
|
||||
, m_dirs(directories)
|
||||
{
|
||||
qCDebug(LOG_LIB);
|
||||
qCDebug(LOG_LIB) << "Desktop name" << desktopName;
|
||||
@ -46,8 +46,7 @@ AbstractExtItem::~AbstractExtItem()
|
||||
}
|
||||
|
||||
|
||||
template <class T>
|
||||
T *AbstractExtItem::copy(const QString, const int)
|
||||
template <class T> T *AbstractExtItem::copy(const QString, const int)
|
||||
{
|
||||
qCDebug(LOG_LIB);
|
||||
|
||||
@ -56,7 +55,6 @@ T *AbstractExtItem::copy(const QString, const int)
|
||||
}
|
||||
|
||||
|
||||
|
||||
int AbstractExtItem::apiVersion() const
|
||||
{
|
||||
qCDebug(LOG_LIB);
|
||||
@ -198,7 +196,7 @@ void AbstractExtItem::readConfiguration()
|
||||
{
|
||||
qCDebug(LOG_LIB);
|
||||
|
||||
for (int i=m_dirs.count()-1; i>=0; i--) {
|
||||
for (int i = m_dirs.count() - 1; i >= 0; i--) {
|
||||
if (!QDir(m_dirs.at(i)).entryList(QDir::Files).contains(m_fileName))
|
||||
continue;
|
||||
QSettings settings(QString("%1/%2").arg(m_dirs.at(i)).arg(m_fileName),
|
||||
@ -207,9 +205,13 @@ void AbstractExtItem::readConfiguration()
|
||||
settings.beginGroup(QString("Desktop Entry"));
|
||||
setName(settings.value(QString("Name"), m_name).toString());
|
||||
setComment(settings.value(QString("Comment"), m_comment).toString());
|
||||
setApiVersion(settings.value(QString("X-AW-ApiVersion"), m_apiVersion).toInt());
|
||||
setActive(settings.value(QString("X-AW-Active"), QVariant(m_active)).toString() == QString("true"));
|
||||
setInterval(settings.value(QString("X-AW-Interval"), m_interval).toInt());
|
||||
setApiVersion(
|
||||
settings.value(QString("X-AW-ApiVersion"), m_apiVersion).toInt());
|
||||
setActive(settings.value(QString("X-AW-Active"), QVariant(m_active))
|
||||
.toString()
|
||||
== QString("true"));
|
||||
setInterval(
|
||||
settings.value(QString("X-AW-Interval"), m_interval).toInt());
|
||||
setNumber(settings.value(QString("X-AW-Number"), m_number).toInt());
|
||||
settings.endGroup();
|
||||
}
|
||||
@ -220,13 +222,14 @@ bool AbstractExtItem::tryDelete() const
|
||||
{
|
||||
qCDebug(LOG_LIB);
|
||||
|
||||
foreach(QString dir, m_dirs) {
|
||||
foreach (QString dir, m_dirs) {
|
||||
bool status = QFile::remove(QString("%1/%2").arg(dir).arg(m_fileName));
|
||||
qCInfo(LOG_LIB) << "Remove file" << QString("%1/%2").arg(dir).arg(m_fileName) << status;
|
||||
qCInfo(LOG_LIB) << "Remove file"
|
||||
<< QString("%1/%2").arg(dir).arg(m_fileName) << status;
|
||||
}
|
||||
|
||||
// check if exists
|
||||
foreach(QString dir, m_dirs)
|
||||
foreach (QString dir, m_dirs)
|
||||
if (QFile::exists(QString("%1/%2").arg(dir).arg(m_fileName)))
|
||||
return false;
|
||||
return true;
|
||||
@ -237,7 +240,8 @@ void AbstractExtItem::writeConfiguration() const
|
||||
{
|
||||
qCDebug(LOG_LIB);
|
||||
|
||||
QSettings settings(QString("%1/%2").arg(m_dirs.first()).arg(m_fileName), QSettings::IniFormat);
|
||||
QSettings settings(QString("%1/%2").arg(m_dirs.first()).arg(m_fileName),
|
||||
QSettings::IniFormat);
|
||||
qCInfo(LOG_LIB) << "Configuration file" << settings.fileName();
|
||||
|
||||
settings.beginGroup(QString("Desktop Entry"));
|
||||
|
@ -36,7 +36,8 @@ class AbstractExtItem : public QDialog
|
||||
Q_PROPERTY(QString uniq READ uniq)
|
||||
|
||||
public:
|
||||
explicit AbstractExtItem(QWidget *parent = nullptr, const QString desktopName = QString(),
|
||||
explicit AbstractExtItem(QWidget *parent = nullptr,
|
||||
const QString desktopName = QString(),
|
||||
const QStringList directories = QStringList());
|
||||
virtual ~AbstractExtItem();
|
||||
template <class T> T *copy(const QString, const int);
|
||||
|
@ -33,21 +33,24 @@ AbstractExtItemAggregator::AbstractExtItemAggregator(QWidget *parent)
|
||||
|
||||
dialog = new QDialog(this);
|
||||
widgetDialog = new QListWidget(dialog);
|
||||
dialogButtons = new QDialogButtonBox(QDialogButtonBox::Open | QDialogButtonBox::Close,
|
||||
Qt::Vertical, dialog);
|
||||
copyButton = dialogButtons->addButton(i18n("Copy"), QDialogButtonBox::ActionRole);
|
||||
createButton = dialogButtons->addButton(i18n("Create"), QDialogButtonBox::ActionRole);
|
||||
deleteButton = dialogButtons->addButton(i18n("Remove"), QDialogButtonBox::ActionRole);
|
||||
dialogButtons = new QDialogButtonBox(
|
||||
QDialogButtonBox::Open | QDialogButtonBox::Close, Qt::Vertical, dialog);
|
||||
copyButton
|
||||
= dialogButtons->addButton(i18n("Copy"), QDialogButtonBox::ActionRole);
|
||||
createButton = dialogButtons->addButton(i18n("Create"),
|
||||
QDialogButtonBox::ActionRole);
|
||||
deleteButton = dialogButtons->addButton(i18n("Remove"),
|
||||
QDialogButtonBox::ActionRole);
|
||||
QHBoxLayout *layout = new QHBoxLayout(dialog);
|
||||
layout->addWidget(widgetDialog);
|
||||
layout->addWidget(dialogButtons);
|
||||
dialog->setLayout(layout);
|
||||
|
||||
connect(dialogButtons, SIGNAL(clicked(QAbstractButton *)),
|
||||
this, SLOT(editItemButtonPressed(QAbstractButton *)));
|
||||
connect(dialogButtons, SIGNAL(clicked(QAbstractButton *)), this,
|
||||
SLOT(editItemButtonPressed(QAbstractButton *)));
|
||||
connect(dialogButtons, SIGNAL(rejected()), dialog, SLOT(reject()));
|
||||
connect(widgetDialog, SIGNAL(itemActivated(QListWidgetItem *)),
|
||||
this, SLOT(editItemActivated(QListWidgetItem *)));
|
||||
connect(widgetDialog, SIGNAL(itemActivated(QListWidgetItem *)), this,
|
||||
SLOT(editItemActivated(QListWidgetItem *)));
|
||||
}
|
||||
|
||||
|
||||
|
@ -29,13 +29,12 @@
|
||||
#include "abstractextitemaggregator.h"
|
||||
|
||||
|
||||
template <class T>
|
||||
class ExtItemAggregator : public AbstractExtItemAggregator
|
||||
template <class T> class ExtItemAggregator : public AbstractExtItemAggregator
|
||||
{
|
||||
public:
|
||||
explicit ExtItemAggregator(QWidget *parent, const QString type)
|
||||
: AbstractExtItemAggregator(parent),
|
||||
m_type(type)
|
||||
: AbstractExtItemAggregator(parent)
|
||||
, m_type(type)
|
||||
{
|
||||
qCDebug(LOG_LIB);
|
||||
qCDebug(LOG_LIB) << "Type" << type;
|
||||
@ -75,7 +74,7 @@ public:
|
||||
qCDebug(LOG_LIB) << "Tag" << _tag;
|
||||
|
||||
T *found = nullptr;
|
||||
foreach(T *item, m_items) {
|
||||
foreach (T *item, m_items) {
|
||||
if (item->tag() != _tag)
|
||||
continue;
|
||||
found = item;
|
||||
@ -93,7 +92,7 @@ public:
|
||||
qCDebug(LOG_LIB) << "Number" << _number;
|
||||
|
||||
T *found = nullptr;
|
||||
foreach(T *item, m_items) {
|
||||
foreach (T *item, m_items) {
|
||||
if (item->number() != _number)
|
||||
continue;
|
||||
found = item;
|
||||
@ -114,14 +113,15 @@ public:
|
||||
return nullptr;
|
||||
|
||||
T *found = nullptr;
|
||||
foreach(T *item, m_items) {
|
||||
foreach (T *item, m_items) {
|
||||
if (item->fileName() != widgetItem->text())
|
||||
continue;
|
||||
found = item;
|
||||
break;
|
||||
}
|
||||
if (found == nullptr)
|
||||
qCWarning(LOG_LIB) << "Could not find item by name" << widgetItem->text();
|
||||
qCWarning(LOG_LIB) << "Could not find item by name"
|
||||
<< widgetItem->text();
|
||||
|
||||
return found;
|
||||
};
|
||||
@ -138,7 +138,8 @@ public:
|
||||
qCDebug(LOG_LIB);
|
||||
|
||||
QList<int> tagList;
|
||||
foreach(T *item, m_items) tagList.append(item->number());
|
||||
foreach (T *item, m_items)
|
||||
tagList.append(item->number());
|
||||
int number = 0;
|
||||
while (tagList.contains(number))
|
||||
number++;
|
||||
@ -157,21 +158,23 @@ private:
|
||||
qCDebug(LOG_LIB);
|
||||
|
||||
// create directory at $HOME
|
||||
QString localDir = QString("%1/awesomewidgets/%2").
|
||||
arg(QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation)).
|
||||
arg(m_type);
|
||||
QString localDir = QString("%1/awesomewidgets/%2")
|
||||
.arg(QStandardPaths::writableLocation(
|
||||
QStandardPaths::GenericDataLocation))
|
||||
.arg(m_type);
|
||||
QDir localDirectory;
|
||||
if (localDirectory.mkpath(localDir))
|
||||
qCInfo(LOG_LIB) << "Created directory" << localDir;
|
||||
|
||||
QStringList dirs = QStandardPaths::locateAll(QStandardPaths::GenericDataLocation,
|
||||
QString("awesomewidgets/%1").arg(m_type),
|
||||
QStandardPaths::LocateDirectory);
|
||||
QStringList dirs = QStandardPaths::locateAll(
|
||||
QStandardPaths::GenericDataLocation,
|
||||
QString("awesomewidgets/%1").arg(m_type),
|
||||
QStandardPaths::LocateDirectory);
|
||||
QStringList names;
|
||||
QList<T *> items;
|
||||
foreach(QString dir, dirs) {
|
||||
foreach (QString dir, dirs) {
|
||||
QStringList files = QDir(dir).entryList(QDir::Files, QDir::Name);
|
||||
foreach(QString file, files) {
|
||||
foreach (QString file, files) {
|
||||
if ((!file.endsWith(QString(".desktop")))
|
||||
|| (names.contains(file)))
|
||||
continue;
|
||||
@ -196,7 +199,7 @@ private:
|
||||
m_activeItems.clear();
|
||||
|
||||
m_items = getItems();
|
||||
foreach(T *item, m_items) {
|
||||
foreach (T *item, m_items) {
|
||||
if (!item->isActive())
|
||||
continue;
|
||||
m_activeItems.append(item);
|
||||
@ -208,8 +211,9 @@ private:
|
||||
qCDebug(LOG_LIB);
|
||||
|
||||
widgetDialog->clear();
|
||||
foreach(T *_item, m_items) {
|
||||
QListWidgetItem *item = new QListWidgetItem(_item->fileName(), widgetDialog);
|
||||
foreach (T *_item, m_items) {
|
||||
QListWidgetItem *item
|
||||
= new QListWidgetItem(_item->fileName(), widgetDialog);
|
||||
QStringList tooltip;
|
||||
tooltip.append(i18n("Name: %1", _item->name()));
|
||||
tooltip.append(i18n("Comment: %1", _item->comment()));
|
||||
@ -227,8 +231,7 @@ private:
|
||||
T *source = itemFromWidget();
|
||||
QString fileName = getName();
|
||||
int number = uniqNumber();
|
||||
if ((source == nullptr)
|
||||
|| (fileName.isEmpty())) {
|
||||
if ((source == nullptr) || (fileName.isEmpty())) {
|
||||
qCWarning(LOG_LIB) << "Nothing to copy";
|
||||
return;
|
||||
}
|
||||
@ -246,9 +249,10 @@ private:
|
||||
|
||||
QString fileName = getName();
|
||||
int number = uniqNumber();
|
||||
QStringList dirs = QStandardPaths::locateAll(QStandardPaths::GenericDataLocation,
|
||||
QString("awesomewidgets/%1").arg(m_type),
|
||||
QStandardPaths::LocateDirectory);
|
||||
QStringList dirs = QStandardPaths::locateAll(
|
||||
QStandardPaths::GenericDataLocation,
|
||||
QString("awesomewidgets/%1").arg(m_type),
|
||||
QStandardPaths::LocateDirectory);
|
||||
if (fileName.isEmpty()) {
|
||||
qCWarning(LOG_LIB) << "Nothing to create";
|
||||
return;
|
||||
|
@ -35,8 +35,8 @@
|
||||
|
||||
ExtQuotes::ExtQuotes(QWidget *parent, const QString quotesName,
|
||||
const QStringList directories)
|
||||
: AbstractExtItem(parent, quotesName, directories),
|
||||
ui(new Ui::ExtQuotes)
|
||||
: AbstractExtItem(parent, quotesName, directories)
|
||||
, ui(new Ui::ExtQuotes)
|
||||
{
|
||||
qCDebug(LOG_LIB);
|
||||
|
||||
@ -54,9 +54,11 @@ ExtQuotes::ExtQuotes(QWidget *parent, const QString quotesName,
|
||||
values[tag(QString("pricechg"))] = 0.0;
|
||||
values[tag(QString("percpricechg"))] = 0.0;
|
||||
|
||||
manager = new QNetworkAccessManager(this);
|
||||
connect(manager, SIGNAL(finished(QNetworkReply *)),
|
||||
this, SLOT(quotesReplyReceived(QNetworkReply *)));
|
||||
// HACK declare as child of nullptr to avoid crash with plasmawindowed
|
||||
// in the destructor
|
||||
manager = new QNetworkAccessManager(nullptr);
|
||||
connect(manager, SIGNAL(finished(QNetworkReply *)), this,
|
||||
SLOT(quotesReplyReceived(QNetworkReply *)));
|
||||
}
|
||||
|
||||
|
||||
@ -64,10 +66,10 @@ ExtQuotes::~ExtQuotes()
|
||||
{
|
||||
qCDebug(LOG_LIB);
|
||||
|
||||
disconnect(manager, SIGNAL(finished(QNetworkReply *)),
|
||||
this, SLOT(quotesReplyReceived(QNetworkReply *)));
|
||||
disconnect(manager, SIGNAL(finished(QNetworkReply *)), this,
|
||||
SLOT(quotesReplyReceived(QNetworkReply *)));
|
||||
|
||||
delete manager;
|
||||
manager->deleteLater();
|
||||
delete ui;
|
||||
}
|
||||
|
||||
@ -78,8 +80,8 @@ ExtQuotes *ExtQuotes::copy(const QString _fileName, const int _number)
|
||||
qCDebug(LOG_LIB) << "File" << _fileName;
|
||||
qCDebug(LOG_LIB) << "Number" << _number;
|
||||
|
||||
ExtQuotes *item = new ExtQuotes(static_cast<QWidget *>(parent()),
|
||||
_fileName, directories());
|
||||
ExtQuotes *item = new ExtQuotes(static_cast<QWidget *>(parent()), _fileName,
|
||||
directories());
|
||||
item->setActive(isActive());
|
||||
item->setApiVersion(apiVersion());
|
||||
item->setComment(comment());
|
||||
@ -122,11 +124,14 @@ void ExtQuotes::readConfiguration()
|
||||
qCDebug(LOG_LIB);
|
||||
AbstractExtItem::readConfiguration();
|
||||
|
||||
for (int i=directories().count()-1; i>=0; i--) {
|
||||
if (!QDir(directories().at(i)).entryList(QDir::Files).contains(fileName()))
|
||||
for (int i = directories().count() - 1; i >= 0; i--) {
|
||||
if (!QDir(directories().at(i))
|
||||
.entryList(QDir::Files)
|
||||
.contains(fileName()))
|
||||
continue;
|
||||
QSettings settings(QString("%1/%2").arg(directories().at(i)).arg(fileName()),
|
||||
QSettings::IniFormat);
|
||||
QSettings settings(
|
||||
QString("%1/%2").arg(directories().at(i)).arg(fileName()),
|
||||
QSettings::IniFormat);
|
||||
|
||||
settings.beginGroup(QString("Desktop Entry"));
|
||||
setTicker(settings.value(QString("X-AW-Ticker"), m_ticker).toString());
|
||||
@ -135,7 +140,8 @@ void ExtQuotes::readConfiguration()
|
||||
|
||||
// update for current API
|
||||
if ((apiVersion() > 0) && (apiVersion() < AWEQAPI)) {
|
||||
qCWarning(LOG_LIB) << "Bump API version from" << apiVersion() << "to" << AWEQAPI;
|
||||
qCWarning(LOG_LIB) << "Bump API version from" << apiVersion() << "to"
|
||||
<< AWEQAPI;
|
||||
setApiVersion(AWEQAPI);
|
||||
writeConfiguration();
|
||||
}
|
||||
@ -173,7 +179,8 @@ int ExtQuotes::showConfiguration(const QVariant args)
|
||||
ui->lineEdit_comment->setText(comment());
|
||||
ui->label_numberValue->setText(QString("%1").arg(number()));
|
||||
ui->lineEdit_ticker->setText(m_ticker);
|
||||
ui->checkBox_active->setCheckState(isActive() ? Qt::Checked : Qt::Unchecked);
|
||||
ui->checkBox_active->setCheckState(isActive() ? Qt::Checked
|
||||
: Qt::Unchecked);
|
||||
ui->spinBox_interval->setValue(interval());
|
||||
|
||||
int ret = exec();
|
||||
@ -197,8 +204,9 @@ void ExtQuotes::writeConfiguration() const
|
||||
qCDebug(LOG_LIB);
|
||||
AbstractExtItem::writeConfiguration();
|
||||
|
||||
QSettings settings(QString("%1/%2").arg(directories().first()).arg(fileName()),
|
||||
QSettings::IniFormat);
|
||||
QSettings settings(
|
||||
QString("%1/%2").arg(directories().first()).arg(fileName()),
|
||||
QSettings::IniFormat);
|
||||
qCInfo(LOG_LIB) << "Configuration file" << settings.fileName();
|
||||
|
||||
settings.beginGroup(QString("Desktop Entry"));
|
||||
@ -223,35 +231,43 @@ void ExtQuotes::quotesReplyReceived(QNetworkReply *reply)
|
||||
qCWarning(LOG_LIB) << "Parse error" << error.errorString();
|
||||
return;
|
||||
}
|
||||
QVariantMap jsonQuotes = jsonDoc.toVariant().toMap()[QString("query")].toMap();
|
||||
jsonQuotes = jsonQuotes[QString("results")].toMap()[QString("quote")].toMap();
|
||||
QVariantMap jsonQuotes
|
||||
= jsonDoc.toVariant().toMap()[QString("query")].toMap();
|
||||
jsonQuotes
|
||||
= jsonQuotes[QString("results")].toMap()[QString("quote")].toMap();
|
||||
double value;
|
||||
|
||||
// ask
|
||||
value = jsonQuotes[QString("Ask")].toString().toDouble();
|
||||
values[tag(QString("askchg"))] = values[QString("ask")].toDouble() == 0.0
|
||||
? 0.0
|
||||
: value - values[QString("ask")].toDouble();
|
||||
values[tag(QString("percaskchg"))] = 100.0 * values[QString("askchg")].toDouble()
|
||||
/ values[QString("ask")].toDouble();
|
||||
values[tag(QString("askchg"))]
|
||||
= values[QString("ask")].toDouble() == 0.0
|
||||
? 0.0
|
||||
: value - values[QString("ask")].toDouble();
|
||||
values[tag(QString("percaskchg"))] = 100.0
|
||||
* values[QString("askchg")].toDouble()
|
||||
/ values[QString("ask")].toDouble();
|
||||
values[tag(QString("ask"))] = value;
|
||||
|
||||
// bid
|
||||
value = jsonQuotes[QString("Bid")].toString().toDouble();
|
||||
values[tag(QString("bidchg"))] = values[QString("bid")].toDouble() == 0.0
|
||||
? 0.0
|
||||
: value - values[QString("bid")].toDouble();
|
||||
values[tag(QString("percbidchg"))] = 100.0 * values[QString("bidchg")].toDouble()
|
||||
/ values[QString("bid")].toDouble();
|
||||
values[tag(QString("bidchg"))]
|
||||
= values[QString("bid")].toDouble() == 0.0
|
||||
? 0.0
|
||||
: value - values[QString("bid")].toDouble();
|
||||
values[tag(QString("percbidchg"))] = 100.0
|
||||
* values[QString("bidchg")].toDouble()
|
||||
/ values[QString("bid")].toDouble();
|
||||
values[tag(QString("bid"))] = value;
|
||||
|
||||
// last trade
|
||||
value = jsonQuotes[QString("LastTradePriceOnly")].toString().toDouble();
|
||||
values[tag(QString("pricechg"))] = values[QString("price")].toDouble() == 0.0
|
||||
? 0.0
|
||||
: value - values[QString("price")].toDouble();
|
||||
values[tag(QString("percpricechg"))] = 100.0 * values[QString("pricechg")].toDouble()
|
||||
/ values[QString("price")].toDouble();
|
||||
values[tag(QString("pricechg"))]
|
||||
= values[QString("price")].toDouble() == 0.0
|
||||
? 0.0
|
||||
: value - values[QString("price")].toDouble();
|
||||
values[tag(QString("percpricechg"))]
|
||||
= 100.0 * values[QString("pricechg")].toDouble()
|
||||
/ values[QString("price")].toDouble();
|
||||
values[tag(QString("price"))] = value;
|
||||
}
|
||||
|
||||
@ -263,7 +279,8 @@ void ExtQuotes::translate()
|
||||
ui->label_name->setText(i18n("Name"));
|
||||
ui->label_comment->setText(i18n("Comment"));
|
||||
ui->label_number->setText(i18n("Tag"));
|
||||
ui->label->setText(i18n("<html><head/><body><p>Use YAHOO! finance ticker to \
|
||||
ui->label->setText(
|
||||
i18n("<html><head/><body><p>Use YAHOO! finance ticker to \
|
||||
get quotes for the instrument. Refer to <a href=\"http://finance.yahoo.com/\">\
|
||||
<span style=\" text-decoration: underline; color:#0057ae;\">http://finance.yahoo.com/\
|
||||
</span></a></p></body></html>"));
|
||||
|
@ -22,11 +22,16 @@
|
||||
|
||||
#include "abstractextitem.h"
|
||||
|
||||
#define YAHOO_URL "https://query.yahooapis.com/v1/public/yql?q=select * from yahoo.finance.quotes where symbol=\"$TICKER\"&env=store://datatables.org/alltableswithkeys&format=json"
|
||||
#define YAHOO_URL \
|
||||
"https://query.yahooapis.com/v1/public/yql?q=select * from " \
|
||||
"yahoo.finance.quotes where " \
|
||||
"symbol=\"$TICKER\"&env=store://datatables.org/" \
|
||||
"alltableswithkeys&format=json"
|
||||
|
||||
|
||||
namespace Ui {
|
||||
class ExtQuotes;
|
||||
namespace Ui
|
||||
{
|
||||
class ExtQuotes;
|
||||
}
|
||||
|
||||
class ExtQuotes : public AbstractExtItem
|
||||
@ -35,7 +40,8 @@ class ExtQuotes : public AbstractExtItem
|
||||
Q_PROPERTY(QString ticker READ ticker WRITE setTicker)
|
||||
|
||||
public:
|
||||
explicit ExtQuotes(QWidget *parent = nullptr, const QString quotesName = QString(),
|
||||
explicit ExtQuotes(QWidget *parent = nullptr,
|
||||
const QString quotesName = QString(),
|
||||
const QStringList directories = QStringList());
|
||||
virtual ~ExtQuotes();
|
||||
ExtQuotes *copy(const QString _fileName, const int _number);
|
||||
|
@ -33,8 +33,8 @@
|
||||
|
||||
ExtScript::ExtScript(QWidget *parent, const QString scriptName,
|
||||
const QStringList directories)
|
||||
: AbstractExtItem(parent, scriptName, directories),
|
||||
ui(new Ui::ExtScript)
|
||||
: AbstractExtItem(parent, scriptName, directories)
|
||||
, ui(new Ui::ExtScript)
|
||||
{
|
||||
qCDebug(LOG_LIB);
|
||||
|
||||
@ -46,7 +46,8 @@ ExtScript::ExtScript(QWidget *parent, const QString scriptName,
|
||||
value[tag(QString("custom"))] = QString("");
|
||||
|
||||
process = new QProcess(this);
|
||||
connect(process, SIGNAL(finished(int, QProcess::ExitStatus)), this, SLOT(updateValue()));
|
||||
connect(process, SIGNAL(finished(int, QProcess::ExitStatus)), this,
|
||||
SLOT(updateValue()));
|
||||
process->waitForFinished(0);
|
||||
}
|
||||
|
||||
@ -67,8 +68,8 @@ ExtScript *ExtScript::copy(const QString _fileName, const int _number)
|
||||
qCDebug(LOG_LIB) << "File" << _fileName;
|
||||
qCDebug(LOG_LIB) << "Number" << _number;
|
||||
|
||||
ExtScript *item = new ExtScript(static_cast<QWidget *>(parent()),
|
||||
_fileName, directories());
|
||||
ExtScript *item = new ExtScript(static_cast<QWidget *>(parent()), _fileName,
|
||||
directories());
|
||||
item->setActive(isActive());
|
||||
item->setApiVersion(apiVersion());
|
||||
item->setComment(comment());
|
||||
@ -162,9 +163,8 @@ void ExtScript::setFilters(const QStringList _filters)
|
||||
qCDebug(LOG_LIB);
|
||||
qCDebug(LOG_LIB) << "Filters" << _filters;
|
||||
|
||||
std::for_each(_filters.cbegin(), _filters.cend(), [this](QString filter) {
|
||||
return updateFilter(filter);
|
||||
});
|
||||
std::for_each(_filters.cbegin(), _filters.cend(),
|
||||
[this](QString filter) { return updateFilter(filter); });
|
||||
}
|
||||
|
||||
|
||||
@ -207,14 +207,15 @@ QString ExtScript::applyFilters(QString _value) const
|
||||
qCDebug(LOG_LIB);
|
||||
qCDebug(LOG_LIB) << "Value" << _value;
|
||||
|
||||
foreach(QString filt, m_filters) {
|
||||
foreach (QString filt, m_filters) {
|
||||
qCInfo(LOG_LIB) << "Found filter" << filt;
|
||||
QVariantMap filter = jsonFilters[filt].toMap();
|
||||
if (filter.isEmpty()) {
|
||||
qCWarning(LOG_LIB) << "Could not find filter" << _value << "in the json";
|
||||
qCWarning(LOG_LIB) << "Could not find filter" << _value
|
||||
<< "in the json";
|
||||
continue;
|
||||
}
|
||||
foreach(QString f, filter.keys())
|
||||
foreach (QString f, filter.keys())
|
||||
_value.replace(f, filter[f].toString());
|
||||
}
|
||||
|
||||
@ -243,24 +244,31 @@ void ExtScript::readConfiguration()
|
||||
qCDebug(LOG_LIB);
|
||||
AbstractExtItem::readConfiguration();
|
||||
|
||||
for (int i=directories().count()-1; i>=0; i--) {
|
||||
if (!QDir(directories().at(i)).entryList(QDir::Files).contains(fileName()))
|
||||
for (int i = directories().count() - 1; i >= 0; i--) {
|
||||
if (!QDir(directories().at(i))
|
||||
.entryList(QDir::Files)
|
||||
.contains(fileName()))
|
||||
continue;
|
||||
QSettings settings(QString("%1/%2").arg(directories().at(i)).arg(fileName()), QSettings::IniFormat);
|
||||
QSettings settings(
|
||||
QString("%1/%2").arg(directories().at(i)).arg(fileName()),
|
||||
QSettings::IniFormat);
|
||||
|
||||
settings.beginGroup(QString("Desktop Entry"));
|
||||
setExecutable(settings.value(QString("Exec"), m_executable).toString());
|
||||
setPrefix(settings.value(QString("X-AW-Prefix"), m_prefix).toString());
|
||||
setStrRedirect(settings.value(QString("X-AW-Redirect"), strRedirect()).toString());
|
||||
setStrRedirect(
|
||||
settings.value(QString("X-AW-Redirect"), strRedirect()).toString());
|
||||
// api == 3
|
||||
setFilters(settings.value(QString("X-AW-Filters"), m_filters).toString().
|
||||
split(QChar(','), QString::SkipEmptyParts));
|
||||
setFilters(settings.value(QString("X-AW-Filters"), m_filters)
|
||||
.toString()
|
||||
.split(QChar(','), QString::SkipEmptyParts));
|
||||
settings.endGroup();
|
||||
}
|
||||
|
||||
// update for current API
|
||||
if ((apiVersion() > 0) && (apiVersion() < AWESAPI)) {
|
||||
qCWarning(LOG_LIB) << "Bump API version from" << apiVersion() << "to" << AWESAPI;
|
||||
qCWarning(LOG_LIB) << "Bump API version from" << apiVersion() << "to"
|
||||
<< AWESAPI;
|
||||
setApiVersion(AWESAPI);
|
||||
writeConfiguration();
|
||||
}
|
||||
@ -271,8 +279,10 @@ void ExtScript::readJsonFilters()
|
||||
{
|
||||
qCDebug(LOG_LIB);
|
||||
|
||||
QString fileName = QStandardPaths::locate(QStandardPaths::GenericDataLocation,
|
||||
QString("awesomewidgets/scripts/awesomewidgets-extscripts-filters.json"));
|
||||
QString fileName = QStandardPaths::locate(
|
||||
QStandardPaths::GenericDataLocation,
|
||||
QString(
|
||||
"awesomewidgets/scripts/awesomewidgets-extscripts-filters.json"));
|
||||
qCInfo(LOG_LIB) << "Filters file" << fileName;
|
||||
QFile jsonFile(fileName);
|
||||
if (!jsonFile.open(QIODevice::ReadOnly | QIODevice::Text)) {
|
||||
@ -326,19 +336,17 @@ int ExtScript::showConfiguration(const QVariant args)
|
||||
ui->label_numberValue->setText(QString("%1").arg(number()));
|
||||
ui->lineEdit_command->setText(m_executable);
|
||||
ui->lineEdit_prefix->setText(m_prefix);
|
||||
ui->checkBox_active->setCheckState(isActive() ? Qt::Checked : Qt::Unchecked);
|
||||
ui->checkBox_active->setCheckState(isActive() ? Qt::Checked
|
||||
: Qt::Unchecked);
|
||||
ui->comboBox_redirect->setCurrentIndex(static_cast<int>(m_redirect));
|
||||
ui->spinBox_interval->setValue(interval());
|
||||
// filters
|
||||
ui->checkBox_colorFilter->setCheckState(m_filters.contains(QString("color"))
|
||||
? Qt::Checked
|
||||
: Qt::Unchecked);
|
||||
ui->checkBox_linesFilter->setCheckState(m_filters.contains(QString("newline"))
|
||||
? Qt::Checked
|
||||
: Qt::Unchecked);
|
||||
ui->checkBox_spaceFilter->setCheckState(m_filters.contains(QString("space"))
|
||||
? Qt::Checked
|
||||
: Qt::Unchecked);
|
||||
ui->checkBox_colorFilter->setCheckState(
|
||||
m_filters.contains(QString("color")) ? Qt::Checked : Qt::Unchecked);
|
||||
ui->checkBox_linesFilter->setCheckState(
|
||||
m_filters.contains(QString("newline")) ? Qt::Checked : Qt::Unchecked);
|
||||
ui->checkBox_spaceFilter->setCheckState(
|
||||
m_filters.contains(QString("space")) ? Qt::Checked : Qt::Unchecked);
|
||||
|
||||
int ret = exec();
|
||||
if (ret != 1)
|
||||
@ -353,9 +361,12 @@ int ExtScript::showConfiguration(const QVariant args)
|
||||
setStrRedirect(ui->comboBox_redirect->currentText());
|
||||
setInterval(ui->spinBox_interval->value());
|
||||
// filters
|
||||
updateFilter(QString("color"), ui->checkBox_colorFilter->checkState() == Qt::Checked);
|
||||
updateFilter(QString("newline"), ui->checkBox_linesFilter->checkState() == Qt::Checked);
|
||||
updateFilter(QString("space"), ui->checkBox_spaceFilter->checkState() == Qt::Checked);
|
||||
updateFilter(QString("color"),
|
||||
ui->checkBox_colorFilter->checkState() == Qt::Checked);
|
||||
updateFilter(QString("newline"),
|
||||
ui->checkBox_linesFilter->checkState() == Qt::Checked);
|
||||
updateFilter(QString("space"),
|
||||
ui->checkBox_spaceFilter->checkState() == Qt::Checked);
|
||||
|
||||
writeConfiguration();
|
||||
return ret;
|
||||
@ -367,8 +378,9 @@ void ExtScript::writeConfiguration() const
|
||||
qCDebug(LOG_LIB);
|
||||
AbstractExtItem::writeConfiguration();
|
||||
|
||||
QSettings settings(QString("%1/%2").arg(directories().first()).arg(fileName()),
|
||||
QSettings::IniFormat);
|
||||
QSettings settings(
|
||||
QString("%1/%2").arg(directories().first()).arg(fileName()),
|
||||
QSettings::IniFormat);
|
||||
qCInfo(LOG_LIB) << "Configuration file" << settings.fileName();
|
||||
|
||||
settings.beginGroup(QString("Desktop Entry"));
|
||||
@ -387,9 +399,13 @@ void ExtScript::updateValue()
|
||||
qCDebug(LOG_LIB);
|
||||
|
||||
qCInfo(LOG_LIB) << "Cmd returns" << process->exitCode();
|
||||
QString qdebug = QTextCodec::codecForMib(106)->toUnicode(process->readAllStandardError()).trimmed();
|
||||
QString qdebug = QTextCodec::codecForMib(106)
|
||||
->toUnicode(process->readAllStandardError())
|
||||
.trimmed();
|
||||
qCInfo(LOG_LIB) << "Error" << qdebug;
|
||||
QString qoutput = QTextCodec::codecForMib(106)->toUnicode(process->readAllStandardOutput()).trimmed();
|
||||
QString qoutput = QTextCodec::codecForMib(106)
|
||||
->toUnicode(process->readAllStandardOutput())
|
||||
.trimmed();
|
||||
qCInfo(LOG_LIB) << "Output" << qoutput;
|
||||
QString strValue;
|
||||
|
||||
|
@ -23,8 +23,9 @@
|
||||
#include "abstractextitem.h"
|
||||
|
||||
|
||||
namespace Ui {
|
||||
class ExtScript;
|
||||
namespace Ui
|
||||
{
|
||||
class ExtScript;
|
||||
}
|
||||
|
||||
class ExtScript : public AbstractExtItem
|
||||
@ -36,14 +37,10 @@ class ExtScript : public AbstractExtItem
|
||||
Q_PROPERTY(Redirect redirect READ redirect WRITE setRedirect)
|
||||
|
||||
public:
|
||||
enum Redirect {
|
||||
stdout2stderr = 0,
|
||||
nothing,
|
||||
stderr2stdout,
|
||||
swap
|
||||
};
|
||||
enum Redirect { stdout2stderr = 0, nothing, stderr2stdout, swap };
|
||||
|
||||
explicit ExtScript(QWidget *parent = nullptr, const QString scriptName = QString(),
|
||||
explicit ExtScript(QWidget *parent = nullptr,
|
||||
const QString scriptName = QString(),
|
||||
const QStringList directories = QStringList());
|
||||
virtual ~ExtScript();
|
||||
ExtScript *copy(const QString _fileName, const int _number);
|
||||
|
@ -31,8 +31,8 @@
|
||||
|
||||
ExtUpgrade::ExtUpgrade(QWidget *parent, const QString upgradeName,
|
||||
const QStringList directories)
|
||||
: AbstractExtItem(parent, upgradeName, directories),
|
||||
ui(new Ui::ExtUpgrade)
|
||||
: AbstractExtItem(parent, upgradeName, directories)
|
||||
, ui(new Ui::ExtUpgrade)
|
||||
{
|
||||
qCDebug(LOG_LIB);
|
||||
|
||||
@ -134,7 +134,8 @@ void ExtUpgrade::setNull(const int _null)
|
||||
{
|
||||
qCDebug(LOG_LIB);
|
||||
qCDebug(LOG_LIB) << "Null lines" << _null;
|
||||
if (_null < 0) return;
|
||||
if (_null < 0)
|
||||
return;
|
||||
|
||||
m_null = _null;
|
||||
}
|
||||
@ -145,11 +146,14 @@ void ExtUpgrade::readConfiguration()
|
||||
qCDebug(LOG_LIB);
|
||||
AbstractExtItem::readConfiguration();
|
||||
|
||||
for (int i=directories().count()-1; i>=0; i--) {
|
||||
if (!QDir(directories().at(i)).entryList(QDir::Files).contains(fileName()))
|
||||
for (int i = directories().count() - 1; i >= 0; i--) {
|
||||
if (!QDir(directories().at(i))
|
||||
.entryList(QDir::Files)
|
||||
.contains(fileName()))
|
||||
continue;
|
||||
QSettings settings(QString("%1/%2").arg(directories().at(i)).arg(fileName()),
|
||||
QSettings::IniFormat);
|
||||
QSettings settings(
|
||||
QString("%1/%2").arg(directories().at(i)).arg(fileName()),
|
||||
QSettings::IniFormat);
|
||||
|
||||
settings.beginGroup(QString("Desktop Entry"));
|
||||
setExecutable(settings.value(QString("Exec"), m_executable).toString());
|
||||
@ -161,7 +165,8 @@ void ExtUpgrade::readConfiguration()
|
||||
|
||||
// update for current API
|
||||
if ((apiVersion() > 0) && (apiVersion() < AWEUAPI)) {
|
||||
qCWarning(LOG_LIB) << "Bump API version from" << apiVersion() << "to" << AWEUAPI;
|
||||
qCWarning(LOG_LIB) << "Bump API version from" << apiVersion() << "to"
|
||||
<< AWEUAPI;
|
||||
setApiVersion(AWEUAPI);
|
||||
writeConfiguration();
|
||||
}
|
||||
@ -197,7 +202,8 @@ int ExtUpgrade::showConfiguration(const QVariant args)
|
||||
ui->label_numberValue->setText(QString("%1").arg(number()));
|
||||
ui->lineEdit_command->setText(m_executable);
|
||||
ui->lineEdit_filter->setText(m_filter);
|
||||
ui->checkBox_active->setCheckState(isActive() ? Qt::Checked : Qt::Unchecked);
|
||||
ui->checkBox_active->setCheckState(isActive() ? Qt::Checked
|
||||
: Qt::Unchecked);
|
||||
ui->spinBox_null->setValue(m_null);
|
||||
ui->spinBox_interval->setValue(interval());
|
||||
|
||||
@ -224,8 +230,9 @@ void ExtUpgrade::writeConfiguration() const
|
||||
qCDebug(LOG_LIB);
|
||||
AbstractExtItem::writeConfiguration();
|
||||
|
||||
QSettings settings(QString("%1/%2").arg(directories().first()).arg(fileName()),
|
||||
QSettings::IniFormat);
|
||||
QSettings settings(
|
||||
QString("%1/%2").arg(directories().first()).arg(fileName()),
|
||||
QSettings::IniFormat);
|
||||
qCInfo(LOG_LIB) << "Configuration file" << settings.fileName();
|
||||
|
||||
settings.beginGroup(QString("Desktop Entry"));
|
||||
@ -245,11 +252,16 @@ void ExtUpgrade::updateValue()
|
||||
qCInfo(LOG_LIB) << "Cmd returns" << process->exitCode();
|
||||
qCInfo(LOG_LIB) << "Error" << process->readAllStandardError();
|
||||
|
||||
QString qoutput = QTextCodec::codecForMib(106)->toUnicode(process->readAllStandardOutput()).trimmed();
|
||||
QString qoutput = QTextCodec::codecForMib(106)
|
||||
->toUnicode(process->readAllStandardOutput())
|
||||
.trimmed();
|
||||
value[tag(QString("pkgcount"))] = [this](QString output) {
|
||||
return m_filter.isEmpty()
|
||||
? output.split(QChar('\n'), QString::SkipEmptyParts).count() - m_null
|
||||
: output.split(QChar('\n'), QString::SkipEmptyParts).filter(QRegExp(m_filter)).count();
|
||||
? output.split(QChar('\n'), QString::SkipEmptyParts).count()
|
||||
- m_null
|
||||
: output.split(QChar('\n'), QString::SkipEmptyParts)
|
||||
.filter(QRegExp(m_filter))
|
||||
.count();
|
||||
}(qoutput);
|
||||
}
|
||||
|
||||
|
@ -23,8 +23,9 @@
|
||||
#include "abstractextitem.h"
|
||||
|
||||
|
||||
namespace Ui {
|
||||
class ExtUpgrade;
|
||||
namespace Ui
|
||||
{
|
||||
class ExtUpgrade;
|
||||
}
|
||||
|
||||
class ExtUpgrade : public AbstractExtItem
|
||||
@ -35,7 +36,8 @@ class ExtUpgrade : public AbstractExtItem
|
||||
Q_PROPERTY(int null READ null WRITE setNull)
|
||||
|
||||
public:
|
||||
explicit ExtUpgrade(QWidget *parent = nullptr, const QString upgradeName = QString(),
|
||||
explicit ExtUpgrade(QWidget *parent = nullptr,
|
||||
const QString upgradeName = QString(),
|
||||
const QStringList directories = QStringList());
|
||||
virtual ~ExtUpgrade();
|
||||
ExtUpgrade *copy(const QString _fileName, const int _number);
|
||||
|
@ -36,8 +36,8 @@
|
||||
|
||||
ExtWeather::ExtWeather(QWidget *parent, const QString weatherName,
|
||||
const QStringList directories)
|
||||
: AbstractExtItem(parent, weatherName, directories),
|
||||
ui(new Ui::ExtWeather)
|
||||
: AbstractExtItem(parent, weatherName, directories)
|
||||
, ui(new Ui::ExtWeather)
|
||||
{
|
||||
qCDebug(LOG_LIB);
|
||||
|
||||
@ -52,9 +52,11 @@ ExtWeather::ExtWeather(QWidget *parent, const QString weatherName,
|
||||
values[tag(QString("pressure"))] = 0.0;
|
||||
values[tag(QString("temperature"))] = 0.0;
|
||||
|
||||
manager = new QNetworkAccessManager(this);
|
||||
connect(manager, SIGNAL(finished(QNetworkReply *)),
|
||||
this, SLOT(weatherReplyReceived(QNetworkReply *)));
|
||||
// HACK declare as child of nullptr to avoid crash with plasmawindowed
|
||||
// in the destructor
|
||||
manager = new QNetworkAccessManager(nullptr);
|
||||
connect(manager, SIGNAL(finished(QNetworkReply *)), this,
|
||||
SLOT(weatherReplyReceived(QNetworkReply *)));
|
||||
}
|
||||
|
||||
|
||||
@ -62,10 +64,10 @@ ExtWeather::~ExtWeather()
|
||||
{
|
||||
qCDebug(LOG_LIB);
|
||||
|
||||
disconnect(manager, SIGNAL(finished(QNetworkReply *)),
|
||||
this, SLOT(weatherReplyReceived(QNetworkReply *)));
|
||||
disconnect(manager, SIGNAL(finished(QNetworkReply *)), this,
|
||||
SLOT(weatherReplyReceived(QNetworkReply *)));
|
||||
|
||||
delete manager;
|
||||
manager->deleteLater();
|
||||
delete ui;
|
||||
}
|
||||
|
||||
@ -98,7 +100,8 @@ QString ExtWeather::weatherFromInt(const int _id) const
|
||||
qCDebug(LOG_LIB);
|
||||
qCDebug(LOG_LIB) << "Weather ID" << _id;
|
||||
|
||||
QVariantMap map = jsonMap[m_image ? QString("image") : QString("text")].toMap();
|
||||
QVariantMap map
|
||||
= jsonMap[m_image ? QString("image") : QString("text")].toMap();
|
||||
return map.value(QString::number(_id), map[QString("default")]).toString();
|
||||
}
|
||||
|
||||
@ -184,24 +187,31 @@ void ExtWeather::readConfiguration()
|
||||
qCDebug(LOG_LIB);
|
||||
AbstractExtItem::readConfiguration();
|
||||
|
||||
for (int i=directories().count()-1; i>=0; i--) {
|
||||
if (!QDir(directories().at(i)).entryList(QDir::Files).contains(fileName()))
|
||||
for (int i = directories().count() - 1; i >= 0; i--) {
|
||||
if (!QDir(directories().at(i))
|
||||
.entryList(QDir::Files)
|
||||
.contains(fileName()))
|
||||
continue;
|
||||
QSettings settings(QString("%1/%2").arg(directories().at(i)).arg(fileName()),
|
||||
QSettings::IniFormat);
|
||||
QSettings settings(
|
||||
QString("%1/%2").arg(directories().at(i)).arg(fileName()),
|
||||
QSettings::IniFormat);
|
||||
|
||||
settings.beginGroup(QString("Desktop Entry"));
|
||||
setCity(settings.value(QString("X-AW-City"), m_city).toString());
|
||||
setCountry(settings.value(QString("X-AW-Country"), m_country).toString());
|
||||
setCountry(
|
||||
settings.value(QString("X-AW-Country"), m_country).toString());
|
||||
setTs(settings.value(QString("X-AW-TS"), m_ts).toInt());
|
||||
// api == 2
|
||||
setImage(settings.value(QString("X-AW-Image"), QVariant(m_image)).toString() == QString("true"));
|
||||
setImage(
|
||||
settings.value(QString("X-AW-Image"), QVariant(m_image)).toString()
|
||||
== QString("true"));
|
||||
settings.endGroup();
|
||||
}
|
||||
|
||||
// update for current API
|
||||
if ((apiVersion() > 0) && (apiVersion() < AWEWAPI)) {
|
||||
qCWarning(LOG_LIB) << "Bump API version from" << apiVersion() << "to" << AWEWAPI;
|
||||
qCWarning(LOG_LIB) << "Bump API version from" << apiVersion() << "to"
|
||||
<< AWEWAPI;
|
||||
setApiVersion(AWEWAPI);
|
||||
writeConfiguration();
|
||||
}
|
||||
@ -212,8 +222,9 @@ void ExtWeather::readJsonMap()
|
||||
{
|
||||
qCDebug(LOG_LIB);
|
||||
|
||||
QString fileName = QStandardPaths::locate(QStandardPaths::GenericDataLocation,
|
||||
QString("awesomewidgets/weather/awesomewidgets-extweather-ids.json"));
|
||||
QString fileName = QStandardPaths::locate(
|
||||
QStandardPaths::GenericDataLocation,
|
||||
QString("awesomewidgets/weather/awesomewidgets-extweather-ids.json"));
|
||||
qCInfo(LOG_LIB) << "Map file" << fileName;
|
||||
QFile jsonFile(fileName);
|
||||
if (!jsonFile.open(QIODevice::ReadOnly | QIODevice::Text)) {
|
||||
@ -244,7 +255,8 @@ QVariantHash ExtWeather::run()
|
||||
if (times == 1) {
|
||||
qCInfo(LOG_LIB) << "Send request";
|
||||
isRunning = true;
|
||||
QNetworkReply *reply = manager->get(QNetworkRequest(QUrl(url(m_ts != 0))));
|
||||
QNetworkReply *reply
|
||||
= manager->get(QNetworkRequest(QUrl(url(m_ts != 0))));
|
||||
new QReplyTimeout(reply, 1000);
|
||||
}
|
||||
|
||||
@ -269,7 +281,8 @@ int ExtWeather::showConfiguration(const QVariant args)
|
||||
ui->lineEdit_country->setText(m_country);
|
||||
ui->spinBox_timestamp->setValue(m_ts);
|
||||
ui->checkBox_image->setCheckState(m_image ? Qt::Checked : Qt::Unchecked);
|
||||
ui->checkBox_active->setCheckState(isActive() ? Qt::Checked : Qt::Unchecked);
|
||||
ui->checkBox_active->setCheckState(isActive() ? Qt::Checked
|
||||
: Qt::Unchecked);
|
||||
ui->spinBox_interval->setValue(interval());
|
||||
|
||||
int ret = exec();
|
||||
@ -296,8 +309,9 @@ void ExtWeather::writeConfiguration() const
|
||||
qCDebug(LOG_LIB);
|
||||
AbstractExtItem::writeConfiguration();
|
||||
|
||||
QSettings settings(QString("%1/%2").arg(directories().first()).arg(fileName()),
|
||||
QSettings::IniFormat);
|
||||
QSettings settings(
|
||||
QString("%1/%2").arg(directories().first()).arg(fileName()),
|
||||
QSettings::IniFormat);
|
||||
qCInfo(LOG_LIB) << "Configuration file" << settings.fileName();
|
||||
|
||||
settings.beginGroup(QString("Desktop Entry"));
|
||||
@ -330,7 +344,8 @@ void ExtWeather::weatherReplyReceived(QNetworkReply *reply)
|
||||
// convert to map
|
||||
QVariantMap json = jsonDoc.toVariant().toMap();
|
||||
if (json[QString("cod")].toInt() != 200) {
|
||||
qCWarning(LOG_LIB) << "Invalid OpenWeatherMap return code" << json[QString("cod")].toInt();
|
||||
qCWarning(LOG_LIB) << "Invalid OpenWeatherMap return code"
|
||||
<< json[QString("cod")].toInt();
|
||||
return;
|
||||
}
|
||||
|
||||
@ -339,11 +354,10 @@ void ExtWeather::weatherReplyReceived(QNetworkReply *reply)
|
||||
data = parseSingleJson(json);
|
||||
} else {
|
||||
QVariantList list = json[QString("list")].toList();
|
||||
data = parseSingleJson(list.count() <= m_ts
|
||||
? list.at(m_ts-1).toMap()
|
||||
: list.last().toMap());
|
||||
data = parseSingleJson(list.count() <= m_ts ? list.at(m_ts - 1).toMap()
|
||||
: list.last().toMap());
|
||||
}
|
||||
foreach(QString key, data.keys())
|
||||
foreach (QString key, data.keys())
|
||||
values[tag(key)] = data[key];
|
||||
}
|
||||
|
||||
@ -366,8 +380,10 @@ QVariantHash ExtWeather::parseSingleJson(const QVariantMap json) const
|
||||
// main data
|
||||
QVariantMap mainWeather = json[QString("main")].toMap();
|
||||
if (!weather.isEmpty()) {
|
||||
output[QString("humidity")] = mainWeather[QString("humidity")].toFloat();
|
||||
output[QString("pressure")] = mainWeather[QString("pressure")].toFloat();
|
||||
output[QString("humidity")]
|
||||
= mainWeather[QString("humidity")].toFloat();
|
||||
output[QString("pressure")]
|
||||
= mainWeather[QString("pressure")].toFloat();
|
||||
output[QString("temperature")] = mainWeather[QString("temp")].toFloat();
|
||||
}
|
||||
|
||||
|
@ -22,12 +22,17 @@
|
||||
|
||||
#include "abstractextitem.h"
|
||||
|
||||
#define OWM_URL "http://api.openweathermap.org/data/2.5/weather?q=$CITY,$COUNTRY&units=metric"
|
||||
#define OWM_FORECAST_URL "http://api.openweathermap.org/data/2.5/forecast?q=$CITY,$COUNTRY&units=metric"
|
||||
#define OWM_URL \
|
||||
"http://api.openweathermap.org/data/2.5/" \
|
||||
"weather?q=$CITY,$COUNTRY&units=metric"
|
||||
#define OWM_FORECAST_URL \
|
||||
"http://api.openweathermap.org/data/2.5/" \
|
||||
"forecast?q=$CITY,$COUNTRY&units=metric"
|
||||
|
||||
|
||||
namespace Ui {
|
||||
class ExtWeather;
|
||||
namespace Ui
|
||||
{
|
||||
class ExtWeather;
|
||||
}
|
||||
|
||||
class ExtWeather : public AbstractExtItem
|
||||
@ -39,7 +44,8 @@ class ExtWeather : public AbstractExtItem
|
||||
Q_PROPERTY(int ts READ ts WRITE setTs)
|
||||
|
||||
public:
|
||||
explicit ExtWeather(QWidget *parent = nullptr, const QString weatherName = QString(),
|
||||
explicit ExtWeather(QWidget *parent = nullptr,
|
||||
const QString weatherName = QString(),
|
||||
const QStringList directories = QStringList());
|
||||
virtual ~ExtWeather();
|
||||
ExtWeather *copy(const QString _fileName, const int _number);
|
||||
|
@ -36,8 +36,8 @@
|
||||
|
||||
GraphicalItem::GraphicalItem(QWidget *parent, const QString desktopName,
|
||||
const QStringList directories)
|
||||
: AbstractExtItem(parent, desktopName, directories),
|
||||
ui(new Ui::GraphicalItem)
|
||||
: AbstractExtItem(parent, desktopName, directories)
|
||||
, ui(new Ui::GraphicalItem)
|
||||
{
|
||||
qCDebug(LOG_LIB);
|
||||
|
||||
@ -47,8 +47,10 @@ GraphicalItem::GraphicalItem(QWidget *parent, const QString desktopName,
|
||||
|
||||
initScene();
|
||||
|
||||
connect(ui->pushButton_activeColor, SIGNAL(clicked()), this, SLOT(changeColor()));
|
||||
connect(ui->pushButton_inactiveColor, SIGNAL(clicked()), this, SLOT(changeColor()));
|
||||
connect(ui->pushButton_activeColor, SIGNAL(clicked()), this,
|
||||
SLOT(changeColor()));
|
||||
connect(ui->pushButton_inactiveColor, SIGNAL(clicked()), this,
|
||||
SLOT(changeColor()));
|
||||
}
|
||||
|
||||
|
||||
@ -91,10 +93,11 @@ QString GraphicalItem::image(const QVariant value)
|
||||
{
|
||||
qCDebug(LOG_LIB);
|
||||
qCDebug(LOG_LIB) << "Value" << value;
|
||||
if (m_bar == QString("none")) return QString("");
|
||||
if (m_bar == QString("none"))
|
||||
return QString("");
|
||||
|
||||
m_scene->clear();
|
||||
int scale[2] = { 1, 1 };
|
||||
int scale[2] = {1, 1};
|
||||
|
||||
// paint
|
||||
switch (m_type) {
|
||||
@ -121,12 +124,13 @@ QString GraphicalItem::image(const QVariant value)
|
||||
}
|
||||
|
||||
// convert
|
||||
QPixmap pixmap = m_view->grab().transformed(QTransform().scale(scale[0], scale[1]));
|
||||
QPixmap pixmap
|
||||
= m_view->grab().transformed(QTransform().scale(scale[0], scale[1]));
|
||||
QByteArray byteArray;
|
||||
QBuffer buffer(&byteArray);
|
||||
pixmap.save(&buffer, "PNG");
|
||||
QString url = QString("<img src=\"data:image/png;base64,%1\"/>").
|
||||
arg(QString(byteArray.toBase64()));
|
||||
QString url = QString("<img src=\"data:image/png;base64,%1\"/>")
|
||||
.arg(QString(byteArray.toBase64()));
|
||||
|
||||
return url;
|
||||
}
|
||||
@ -253,7 +257,8 @@ void GraphicalItem::setBar(const QString _bar)
|
||||
qCDebug(LOG_LIB);
|
||||
qCDebug(LOG_LIB) << "Bar" << _bar;
|
||||
|
||||
if (!_bar.contains(QRegExp(QString("^(cpu(?!cl).*|gpu$|mem$|swap$|hdd[0-9].*|bat.*)")))) {
|
||||
if (!_bar.contains(QRegExp(
|
||||
QString("^(cpu(?!cl).*|gpu$|mem$|swap$|hdd[0-9].*|bat.*)")))) {
|
||||
qCWarning(LOG_LIB) << "Unsupported bar type" << _bar;
|
||||
m_bar = QString("none");
|
||||
} else {
|
||||
@ -353,18 +358,27 @@ void GraphicalItem::readConfiguration()
|
||||
qCDebug(LOG_LIB);
|
||||
AbstractExtItem::readConfiguration();
|
||||
|
||||
for (int i=directories().count()-1; i>=0; i--) {
|
||||
if (!QDir(directories().at(i)).entryList(QDir::Files).contains(fileName()))
|
||||
for (int i = directories().count() - 1; i >= 0; i--) {
|
||||
if (!QDir(directories().at(i))
|
||||
.entryList(QDir::Files)
|
||||
.contains(fileName()))
|
||||
continue;
|
||||
QSettings settings(QString("%1/%2").arg(directories().at(i)).arg(fileName()),
|
||||
QSettings::IniFormat);
|
||||
QSettings settings(
|
||||
QString("%1/%2").arg(directories().at(i)).arg(fileName()),
|
||||
QSettings::IniFormat);
|
||||
|
||||
settings.beginGroup(QString("Desktop Entry"));
|
||||
setBar(settings.value(QString("X-AW-Value"), m_bar).toString());
|
||||
setActiveColor(settings.value(QString("X-AW-ActiveColor"), m_activeColor).toString());
|
||||
setInactiveColor(settings.value(QString("X-AW-InactiveColor"), m_inactiveColor).toString());
|
||||
setActiveColor(
|
||||
settings.value(QString("X-AW-ActiveColor"), m_activeColor)
|
||||
.toString());
|
||||
setInactiveColor(
|
||||
settings.value(QString("X-AW-InactiveColor"), m_inactiveColor)
|
||||
.toString());
|
||||
setStrType(settings.value(QString("X-AW-Type"), strType()).toString());
|
||||
setStrDirection(settings.value(QString("X-AW-Direction"), strDirection()).toString());
|
||||
setStrDirection(
|
||||
settings.value(QString("X-AW-Direction"), strDirection())
|
||||
.toString());
|
||||
setHeight(settings.value(QString("X-AW-Height"), m_height).toInt());
|
||||
setWidth(settings.value(QString("X-AW-Width"), m_width).toInt());
|
||||
// api == 2
|
||||
@ -375,7 +389,8 @@ void GraphicalItem::readConfiguration()
|
||||
|
||||
// update for current API
|
||||
if ((apiVersion() > 0) && (apiVersion() < AWGIAPI)) {
|
||||
qCWarning(LOG_LIB) << "Bump API version from" << apiVersion() << "to" << AWGIAPI;
|
||||
qCWarning(LOG_LIB) << "Bump API version from" << apiVersion() << "to"
|
||||
<< AWGIAPI;
|
||||
setApiVersion(AWGIAPI);
|
||||
writeConfiguration();
|
||||
}
|
||||
@ -433,8 +448,9 @@ void GraphicalItem::writeConfiguration() const
|
||||
qCDebug(LOG_LIB);
|
||||
AbstractExtItem::writeConfiguration();
|
||||
|
||||
QSettings settings(QString("%1/%2").arg(directories().first()).arg(fileName()),
|
||||
QSettings::IniFormat);
|
||||
QSettings settings(
|
||||
QString("%1/%2").arg(directories().first()).arg(fileName()),
|
||||
QSettings::IniFormat);
|
||||
qCInfo(LOG_LIB) << "Configuration file" << settings.fileName();
|
||||
|
||||
settings.beginGroup(QString("Desktop Entry"));
|
||||
@ -455,7 +471,8 @@ void GraphicalItem::changeColor()
|
||||
{
|
||||
qCDebug(LOG_LIB);
|
||||
|
||||
QColor color = stringToColor((static_cast<QPushButton *>(sender()))->text());
|
||||
QColor color
|
||||
= stringToColor((static_cast<QPushButton *>(sender()))->text());
|
||||
QColor newColor = QColorDialog::getColor(color, this, tr("Select color"),
|
||||
QColorDialog::ShowAlphaChannel);
|
||||
if (!newColor.isValid())
|
||||
@ -468,7 +485,8 @@ void GraphicalItem::changeColor()
|
||||
colorText.append(QString("%1").arg(newColor.blue()));
|
||||
colorText.append(QString("%1").arg(newColor.alpha()));
|
||||
|
||||
return static_cast<QPushButton *>(sender())->setText(colorText.join(QChar(',')));
|
||||
return static_cast<QPushButton *>(sender())
|
||||
->setText(colorText.join(QChar(',')));
|
||||
}
|
||||
|
||||
|
||||
@ -509,13 +527,13 @@ void GraphicalItem::paintCircle(const float value)
|
||||
pen.setColor(inactive);
|
||||
circle = m_scene->addEllipse(0.0, 0.0, m_width, m_height, pen,
|
||||
QBrush(inactive, Qt::SolidPattern));
|
||||
circle->setSpanAngle(- (1.0 - percent) * 360.0 * 16.0);
|
||||
circle->setSpanAngle(-(1.0 - percent) * 360.0 * 16.0);
|
||||
circle->setStartAngle(90.0 * 16.0 - percent * 360.0 * 16.0);
|
||||
// active
|
||||
pen.setColor(active);
|
||||
circle = m_scene->addEllipse(0.0, 0.0, m_width, m_height, pen,
|
||||
QBrush(active, Qt::SolidPattern));
|
||||
circle->setSpanAngle(- percent * 360.0 * 16.0);
|
||||
circle->setSpanAngle(-percent * 360.0 * 16.0);
|
||||
circle->setStartAngle(90.0 * 16.0);
|
||||
}
|
||||
|
||||
@ -528,15 +546,16 @@ void GraphicalItem::paintGraph(const QList<float> value)
|
||||
pen.setColor(stringToColor(m_activeColor));
|
||||
|
||||
// default norms
|
||||
float normX = static_cast<float>(m_width) / static_cast<float>(value.count());
|
||||
float normX
|
||||
= static_cast<float>(m_width) / static_cast<float>(value.count());
|
||||
float normY = static_cast<float>(m_height) / (1.5 * 100.0);
|
||||
// paint graph
|
||||
for (int i=0; i<value.count()-1; i++) {
|
||||
for (int i = 0; i < value.count() - 1; i++) {
|
||||
// some magic here
|
||||
float x1 = i * normX;
|
||||
float y1 = - fabs(value.at(i)) * normY + 5.0;
|
||||
float y1 = -fabs(value.at(i)) * normY + 5.0;
|
||||
float x2 = (i + 1) * normX;
|
||||
float y2 = - fabs(value.at(i+1)) * normY + 5.0;
|
||||
float y2 = -fabs(value.at(i + 1)) * normY + 5.0;
|
||||
m_scene->addLine(x1, y1, x2, y2, pen);
|
||||
}
|
||||
}
|
||||
|
@ -26,8 +26,9 @@
|
||||
class QGraphicsScene;
|
||||
class QGraphicsView;
|
||||
|
||||
namespace Ui {
|
||||
class GraphicalItem;
|
||||
namespace Ui
|
||||
{
|
||||
class GraphicalItem;
|
||||
}
|
||||
|
||||
class GraphicalItem : public AbstractExtItem
|
||||
@ -42,18 +43,11 @@ class GraphicalItem : public AbstractExtItem
|
||||
Q_PROPERTY(int width READ width WRITE setWidth)
|
||||
|
||||
public:
|
||||
enum Direction {
|
||||
LeftToRight = 0,
|
||||
RightToLeft
|
||||
};
|
||||
enum Type {
|
||||
Horizontal = 0,
|
||||
Vertical,
|
||||
Circle,
|
||||
Graph
|
||||
};
|
||||
enum Direction { LeftToRight = 0, RightToLeft };
|
||||
enum Type { Horizontal = 0, Vertical, Circle, Graph };
|
||||
|
||||
explicit GraphicalItem(QWidget *parent = nullptr, const QString desktopName = QString(),
|
||||
explicit GraphicalItem(QWidget *parent = nullptr,
|
||||
const QString desktopName = QString(),
|
||||
const QStringList directories = QStringList());
|
||||
virtual ~GraphicalItem();
|
||||
GraphicalItem *copy(const QString _fileName, const int _number);
|
||||
|
@ -1,11 +1,11 @@
|
||||
exec_program(
|
||||
"git"
|
||||
${CMAKE_CURRENT_SOURCE_DIR}
|
||||
ARGS "log" "-1" "--format=\"%h\""
|
||||
OUTPUT_VARIABLE COMMIT_SHA
|
||||
RETURN_VALUE GIT_RETURN
|
||||
"git"
|
||||
${CMAKE_CURRENT_SOURCE_DIR}
|
||||
ARGS "log" "-1" "--format=\"%h\""
|
||||
OUTPUT_VARIABLE COMMIT_SHA
|
||||
RETURN_VALUE GIT_RETURN
|
||||
)
|
||||
|
||||
if(${GIT_RETURN} EQUAL "0")
|
||||
if (${GIT_RETURN} EQUAL "0")
|
||||
set(PROJECT_COMMIT_SHA "${COMMIT_SHA}")
|
||||
endif()
|
||||
endif ()
|
||||
|
18
sources/clang-format.cmake
Normal file
18
sources/clang-format.cmake
Normal file
@ -0,0 +1,18 @@
|
||||
# additional target to perform clang-format run, requires clang-format
|
||||
|
||||
# get all project files
|
||||
file(GLOB_RECURSE ALL_SOURCE_FILES *.cpp *.h)
|
||||
foreach (SOURCE_FILE ${ALL_SOURCE_FILES})
|
||||
string(FIND ${SOURCE_FILE} ${PROJECT_TRDPARTY_DIR} PROJECT_TRDPARTY_DIR_FOUND)
|
||||
if (NOT ${PROJECT_TRDPARTY_DIR_FOUND} EQUAL -1)
|
||||
list(REMOVE_ITEM ALL_SOURCE_FILES ${SOURCE_FILE})
|
||||
endif ()
|
||||
endforeach ()
|
||||
|
||||
add_custom_target(
|
||||
clangformat
|
||||
COMMAND ${CLANGFORMAT_EXECUTABLE}
|
||||
-style=file
|
||||
-i
|
||||
${ALL_SOURCE_FILES}
|
||||
)
|
23
sources/cppcheck.cmake
Normal file
23
sources/cppcheck.cmake
Normal file
@ -0,0 +1,23 @@
|
||||
# additional target to perform cppcheck run, requires cppcheck
|
||||
|
||||
# get all project files
|
||||
# HACK this workaround is required to avoid qml files checking ^_^
|
||||
file(GLOB_RECURSE ALL_SOURCE_FILES *.cpp *.h)
|
||||
foreach (SOURCE_FILE ${ALL_SOURCE_FILES})
|
||||
string(FIND ${SOURCE_FILE} ${PROJECT_TRDPARTY_DIR} PROJECT_TRDPARTY_DIR_FOUND)
|
||||
if (NOT ${PROJECT_TRDPARTY_DIR_FOUND} EQUAL -1)
|
||||
list(REMOVE_ITEM ALL_SOURCE_FILES ${SOURCE_FILE})
|
||||
endif ()
|
||||
endforeach ()
|
||||
|
||||
add_custom_target(
|
||||
cppcheck
|
||||
COMMAND ${CPPCHECK_EXECUTABLE}
|
||||
--enable=warning,performance,portability,information,missingInclude
|
||||
--std=c++11
|
||||
--library=qt.cfg
|
||||
--template="[{severity}][{id}] {message} {callstack} \(On {file}:{line}\)"
|
||||
--verbose
|
||||
--quiet
|
||||
${ALL_SOURCE_FILES}
|
||||
)
|
@ -2,13 +2,13 @@ set(PLUGIN_NAME dpplugin)
|
||||
add_definitions(-DTRANSLATION_DOMAIN=\"plasma_applet_org.kde.plasma.desktoppanel\")
|
||||
|
||||
include_directories(
|
||||
${CMAKE_SOURCE_DIR}
|
||||
${CMAKE_BINARY_DIR}
|
||||
${CMAKE_CURRENT_BINARY_DIR}
|
||||
${CMAKE_CURRENT_BINARY_DIR}/../
|
||||
${PROJECT_TRDPARTY_DIR}
|
||||
${Qt_INCLUDE}
|
||||
${Kf5_INCLUDE}
|
||||
${CMAKE_SOURCE_DIR}
|
||||
${CMAKE_BINARY_DIR}
|
||||
${CMAKE_CURRENT_BINARY_DIR}
|
||||
${CMAKE_CURRENT_BINARY_DIR}/../
|
||||
${PROJECT_TRDPARTY_DIR}
|
||||
${Qt_INCLUDE}
|
||||
${Kf5_INCLUDE}
|
||||
)
|
||||
|
||||
file(GLOB SUBPROJECT_SOURCE *.cpp ${PROJECT_TRDPARTY_DIR}/fontdialog/*.cpp ${CMAKE_SOURCE_DIR}/*.cpp)
|
||||
|
@ -45,9 +45,12 @@ DPAdds::DPAdds(QObject *parent)
|
||||
// logging
|
||||
qSetMessagePattern(LOG_FORMAT);
|
||||
|
||||
connect(KWindowSystem::self(), SIGNAL(currentDesktopChanged(int)), this, SIGNAL(desktopChanged()));
|
||||
connect(KWindowSystem::self(), SIGNAL(windowAdded(WId)), this, SIGNAL(windowListChanged()));
|
||||
connect(KWindowSystem::self(), SIGNAL(windowRemoved(WId)), this, SIGNAL(windowListChanged()));
|
||||
connect(KWindowSystem::self(), SIGNAL(currentDesktopChanged(int)), this,
|
||||
SIGNAL(desktopChanged()));
|
||||
connect(KWindowSystem::self(), SIGNAL(windowAdded(WId)), this,
|
||||
SIGNAL(windowListChanged()));
|
||||
connect(KWindowSystem::self(), SIGNAL(windowRemoved(WId)), this,
|
||||
SIGNAL(windowListChanged()));
|
||||
}
|
||||
|
||||
|
||||
@ -101,16 +104,19 @@ QString DPAdds::toolTipImage(const int desktop) const
|
||||
qCDebug(LOG_DP);
|
||||
qCDebug(LOG_DP) << "Desktop" << desktop;
|
||||
// drop if no tooltip required
|
||||
if (m_tooltipType == QString("none")) return QString();
|
||||
if (m_tooltipType == QString("none"))
|
||||
return QString();
|
||||
|
||||
// prepare
|
||||
DesktopWindowsInfo info = getInfoByDesktop(desktop);
|
||||
// special tooltip format for names
|
||||
if (m_tooltipType == QString("names")) {
|
||||
QStringList windowList;
|
||||
std::for_each(info.windowsData.cbegin(), info.windowsData.cend(),
|
||||
[&windowList](WindowData data) { windowList.append(data.name); });
|
||||
return QString("<ul><li>%1</li></ul>").arg(windowList.join(QString("</li><li>")));
|
||||
std::for_each(
|
||||
info.windowsData.cbegin(), info.windowsData.cend(),
|
||||
[&windowList](WindowData data) { windowList.append(data.name); });
|
||||
return QString("<ul><li>%1</li></ul>")
|
||||
.arg(windowList.join(QString("</li><li>")));
|
||||
}
|
||||
// init
|
||||
QGraphicsScene *toolTipScene = new QGraphicsScene();
|
||||
@ -122,14 +128,17 @@ QString DPAdds::toolTipImage(const int desktop) const
|
||||
toolTipView->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
|
||||
// update
|
||||
float margin = 5.0 * info.desktop.width() / 400.0;
|
||||
toolTipView->resize(info.desktop.width() + 2.0 * margin, info.desktop.height() + 2.0 * margin);
|
||||
toolTipView->resize(info.desktop.width() + 2.0 * margin,
|
||||
info.desktop.height() + 2.0 * margin);
|
||||
toolTipScene->clear();
|
||||
toolTipScene->setBackgroundBrush(QBrush(Qt::NoBrush));
|
||||
// borders
|
||||
toolTipScene->addLine(0, 0, 0, info.desktop.height() + 2.0 * margin);
|
||||
toolTipScene->addLine(0, info.desktop.height() + 2.0 * margin,
|
||||
info.desktop.width() + 2.0 * margin, info.desktop.height() + 2.0 * margin);
|
||||
toolTipScene->addLine(info.desktop.width() + 2.0 * margin, info.desktop.height() + 2.0 * margin,
|
||||
info.desktop.width() + 2.0 * margin,
|
||||
info.desktop.height() + 2.0 * margin);
|
||||
toolTipScene->addLine(info.desktop.width() + 2.0 * margin,
|
||||
info.desktop.height() + 2.0 * margin,
|
||||
info.desktop.width() + 2.0 * margin, 0);
|
||||
toolTipScene->addLine(info.desktop.width() + 2.0 * margin, 0, 0, 0);
|
||||
|
||||
@ -137,36 +146,43 @@ QString DPAdds::toolTipImage(const int desktop) const
|
||||
QPen pen = QPen();
|
||||
pen.setWidthF(2.0 * info.desktop.width() / 400.0);
|
||||
pen.setColor(QColor(m_tooltipColor));
|
||||
foreach(WindowData data, info.windowsData) {
|
||||
foreach (WindowData data, info.windowsData) {
|
||||
QRect rect = data.rect;
|
||||
toolTipScene->addLine(rect.left() + margin, rect.bottom() + margin,
|
||||
rect.left() + margin, rect.top() + margin, pen);
|
||||
rect.left() + margin, rect.top() + margin,
|
||||
pen);
|
||||
toolTipScene->addLine(rect.left() + margin, rect.top() + margin,
|
||||
rect.right() + margin, rect.top() + margin, pen);
|
||||
rect.right() + margin, rect.top() + margin,
|
||||
pen);
|
||||
toolTipScene->addLine(rect.right() + margin, rect.top() + margin,
|
||||
rect.right() + margin, rect.bottom() + margin, pen);
|
||||
rect.right() + margin, rect.bottom() + margin,
|
||||
pen);
|
||||
toolTipScene->addLine(rect.right() + margin, rect.bottom() + margin,
|
||||
rect.left() + margin, rect.bottom() + margin, pen);
|
||||
rect.left() + margin, rect.bottom() + margin,
|
||||
pen);
|
||||
}
|
||||
} else if (m_tooltipType == QString("clean")) {
|
||||
QScreen *screen = QGuiApplication::primaryScreen();
|
||||
std::for_each(info.desktopsData.cbegin(), info.desktopsData.cend(),
|
||||
[&toolTipScene, &screen](WindowData data) {
|
||||
QPixmap desktop = screen->grabWindow(data.id);
|
||||
toolTipScene->addPixmap(desktop)->setOffset(data.rect.left(), data.rect.top());
|
||||
});
|
||||
toolTipScene->addPixmap(desktop)
|
||||
->setOffset(data.rect.left(), data.rect.top());
|
||||
});
|
||||
} else if (m_tooltipType == QString("windows")) {
|
||||
QScreen *screen = QGuiApplication::primaryScreen();
|
||||
std::for_each(info.desktopsData.cbegin(), info.desktopsData.cend(),
|
||||
[&toolTipScene, &screen](WindowData data) {
|
||||
QPixmap desktop = screen->grabWindow(data.id);
|
||||
toolTipScene->addPixmap(desktop)->setOffset(data.rect.left(), data.rect.top());
|
||||
});
|
||||
toolTipScene->addPixmap(desktop)
|
||||
->setOffset(data.rect.left(), data.rect.top());
|
||||
});
|
||||
std::for_each(info.windowsData.cbegin(), info.windowsData.cend(),
|
||||
[&toolTipScene, &screen](WindowData data) {
|
||||
QPixmap window = screen->grabWindow(data.id);
|
||||
toolTipScene->addPixmap(window)->setOffset(data.rect.left(), data.rect.top());
|
||||
});
|
||||
toolTipScene->addPixmap(window)
|
||||
->setOffset(data.rect.left(), data.rect.top());
|
||||
});
|
||||
}
|
||||
|
||||
QPixmap image = toolTipView->grab().scaledToWidth(m_tooltipWidth);
|
||||
@ -177,7 +193,8 @@ QString DPAdds::toolTipImage(const int desktop) const
|
||||
delete toolTipView;
|
||||
delete toolTipScene;
|
||||
|
||||
return QString("<img src=\"data:image/png;base64,%1\"/>").arg(QString(byteArray.toBase64()));
|
||||
return QString("<img src=\"data:image/png;base64,%1\"/>")
|
||||
.arg(QString(byteArray.toBase64()));
|
||||
}
|
||||
|
||||
|
||||
@ -189,7 +206,7 @@ QString DPAdds::parsePattern(const QString pattern, const int desktop) const
|
||||
|
||||
QString parsed = pattern;
|
||||
parsed.replace(QString("$$"), QString("$\\$\\"));
|
||||
foreach(QString key, dictKeys())
|
||||
foreach (QString key, dictKeys())
|
||||
parsed.replace(QString("$%1").arg(key), valueByKey(key, desktop));
|
||||
parsed.replace(QString("$\\$\\"), QString("$$"));
|
||||
|
||||
@ -222,14 +239,17 @@ QString DPAdds::valueByKey(const QString key, int desktop) const
|
||||
qCDebug(LOG_DP);
|
||||
qCDebug(LOG_DP) << "Requested key" << key;
|
||||
qCDebug(LOG_DP) << "Desktop number" << desktop;
|
||||
if (desktop == -1) desktop = currentDesktop();
|
||||
if (desktop == -1)
|
||||
desktop = currentDesktop();
|
||||
|
||||
QString currentMark = currentDesktop() == desktop ? m_mark : QString("");
|
||||
if (key == QString("mark"))
|
||||
return QString("%1").arg(currentMark, m_mark.count(), QLatin1Char(' '))
|
||||
.replace(QString(" "), QString(" "));
|
||||
return QString("%1")
|
||||
.arg(currentMark, m_mark.count(), QLatin1Char(' '))
|
||||
.replace(QString(" "), QString(" "));
|
||||
else if (key == QString("name"))
|
||||
return KWindowSystem::desktopName(desktop).replace(QString(" "), QString(" "));
|
||||
return KWindowSystem::desktopName(desktop)
|
||||
.replace(QString(" "), QString(" "));
|
||||
else if (key == QString("number"))
|
||||
return QString::number(desktop);
|
||||
else if (key == QString("total"))
|
||||
@ -246,33 +266,54 @@ QString DPAdds::getAboutText(const QString type) const
|
||||
qCDebug(LOG_DP) << "Type" << type;
|
||||
|
||||
QString text;
|
||||
if (type == QString("header"))
|
||||
if (type == QString("header")) {
|
||||
text = QString(NAME);
|
||||
else if (type == QString("version")) {
|
||||
text = i18n("Version %1 (build date %2)", QString(VERSION), QString(BUILD_DATE));
|
||||
if (!QString(COMMIT_SHA).isEmpty()) text += QString(" (%1)").arg(QString(COMMIT_SHA));
|
||||
} else if (type == QString("description"))
|
||||
} else if (type == QString("version")) {
|
||||
text = i18n("Version %1 (build date %2)", QString(VERSION),
|
||||
QString(BUILD_DATE));
|
||||
if (!QString(COMMIT_SHA).isEmpty())
|
||||
text += QString(" (%1)").arg(QString(COMMIT_SHA));
|
||||
} else if (type == QString("description")) {
|
||||
text = i18n("A set of minimalistic plasmoid widgets");
|
||||
else if (type == QString("links"))
|
||||
text = i18n("Links:") + QString("<br>") +
|
||||
QString("<a href=\"%1\">%2</a><br>").arg(QString(HOMEPAGE)).arg(i18n("Homepage")) +
|
||||
QString("<a href=\"%1\">%2</a><br>").arg(QString(REPOSITORY)).arg(i18n("Repository")) +
|
||||
QString("<a href=\"%1\">%2</a><br>").arg(QString(BUGTRACKER)).arg(i18n("Bugtracker")) +
|
||||
QString("<a href=\"%1\">%2</a><br>").arg(QString(TRANSLATION)).arg(i18n("Translation issue")) +
|
||||
QString("<a href=\"%1\">%2</a><br>").arg(QString(AUR_PACKAGES)).arg(i18n("AUR packages")) +
|
||||
QString("<a href=\"%1\">%2</a>").arg(QString(OPENSUSE_PACKAGES)).arg(i18n("openSUSE packages"));
|
||||
else if (type == QString("copy"))
|
||||
text = QString("<small>© %1 <a href=\"mailto:%2\">%3</a><br>").arg(QString(DATE)).arg(QString(EMAIL)).arg(QString(AUTHOR)) +
|
||||
i18n("This software is licensed under %1", QString(LICENSE)) + QString("</small>");
|
||||
else if (type == QString("translators"))
|
||||
} else if (type == QString("links")) {
|
||||
text = i18n("Links:") + QString("<br>")
|
||||
+ QString("<a href=\"%1\">%2</a><br>")
|
||||
.arg(QString(HOMEPAGE))
|
||||
.arg(i18n("Homepage"))
|
||||
+ QString("<a href=\"%1\">%2</a><br>")
|
||||
.arg(QString(REPOSITORY))
|
||||
.arg(i18n("Repository"))
|
||||
+ QString("<a href=\"%1\">%2</a><br>")
|
||||
.arg(QString(BUGTRACKER))
|
||||
.arg(i18n("Bugtracker"))
|
||||
+ QString("<a href=\"%1\">%2</a><br>")
|
||||
.arg(QString(TRANSLATION))
|
||||
.arg(i18n("Translation issue"))
|
||||
+ QString("<a href=\"%1\">%2</a><br>")
|
||||
.arg(QString(AUR_PACKAGES))
|
||||
.arg(i18n("AUR packages"))
|
||||
+ QString("<a href=\"%1\">%2</a>")
|
||||
.arg(QString(OPENSUSE_PACKAGES))
|
||||
.arg(i18n("openSUSE packages"));
|
||||
} else if (type == QString("copy")) {
|
||||
text = QString("<small>© %1 <a href=\"mailto:%2\">%3</a><br>")
|
||||
.arg(QString(DATE))
|
||||
.arg(QString(EMAIL))
|
||||
.arg(QString(AUTHOR))
|
||||
+ i18n("This software is licensed under %1", QString(LICENSE))
|
||||
+ QString("</small>");
|
||||
} else if (type == QString("translators")) {
|
||||
text = i18n("Translators: %1", QString(TRANSLATORS));
|
||||
else if (type == QString("3rdparty")) {
|
||||
QStringList trdPartyList = QString(TRDPARTY_LICENSE).split(QChar(';'), QString::SkipEmptyParts);
|
||||
for (int i=0; i<trdPartyList.count(); i++)
|
||||
trdPartyList[i] = QString("<a href=\"%3\">%1</a> (%2 license)")
|
||||
.arg(trdPartyList.at(i).split(QChar(',')).at(0))
|
||||
.arg(trdPartyList.at(i).split(QChar(',')).at(1))
|
||||
.arg(trdPartyList.at(i).split(QChar(',')).at(2));
|
||||
} else if (type == QString("3rdparty")) {
|
||||
QStringList trdPartyList
|
||||
= QString(TRDPARTY_LICENSE)
|
||||
.split(QChar(';'), QString::SkipEmptyParts);
|
||||
for (int i = 0; i < trdPartyList.count(); i++)
|
||||
trdPartyList[i]
|
||||
= QString("<a href=\"%3\">%1</a> (%2 license)")
|
||||
.arg(trdPartyList.at(i).split(QChar(',')).at(0))
|
||||
.arg(trdPartyList.at(i).split(QChar(',')).at(1))
|
||||
.arg(trdPartyList.at(i).split(QChar(',')).at(2));
|
||||
text = i18n("This software uses: %1", trdPartyList.join(QString(", ")));
|
||||
}
|
||||
|
||||
@ -287,10 +328,10 @@ QVariantMap DPAdds::getFont(const QVariantMap defaultFont) const
|
||||
|
||||
QVariantMap fontMap;
|
||||
CFont defaultCFont = CFont(defaultFont[QString("family")].toString(),
|
||||
defaultFont[QString("size")].toInt(),
|
||||
400, false, defaultFont[QString("color")].toString());
|
||||
CFont font = CFontDialog::getFont(i18n("Select font"), defaultCFont,
|
||||
false, false);
|
||||
defaultFont[QString("size")].toInt(), 400, false,
|
||||
defaultFont[QString("color")].toString());
|
||||
CFont font
|
||||
= CFontDialog::getFont(i18n("Select font"), defaultCFont, false, false);
|
||||
fontMap[QString("color")] = font.color().name();
|
||||
fontMap[QString("family")] = font.family();
|
||||
fontMap[QString("size")] = font.pointSize();
|
||||
@ -306,8 +347,10 @@ void DPAdds::sendNotification(const QString eventId, const QString message)
|
||||
qCDebug(LOG_DP) << "Event" << eventId;
|
||||
qCDebug(LOG_DP) << "Message" << message;
|
||||
|
||||
KNotification *notification = KNotification::event(eventId, QString("Desktop Panel ::: %1").arg(eventId), message);
|
||||
notification->setComponentName(QString("plasma-applet-org.kde.plasma.desktop-panel"));
|
||||
KNotification *notification = KNotification::event(
|
||||
eventId, QString("Desktop Panel ::: %1").arg(eventId), message);
|
||||
notification->setComponentName(
|
||||
QString("plasma-applet-org.kde.plasma.desktop-panel"));
|
||||
}
|
||||
|
||||
|
||||
@ -330,20 +373,24 @@ DPAdds::DesktopWindowsInfo DPAdds::getInfoByDesktop(const int desktop) const
|
||||
DesktopWindowsInfo info;
|
||||
info.desktop = KWindowSystem::workArea(desktop);
|
||||
|
||||
foreach(WId id, KWindowSystem::windows()) {
|
||||
KWindowInfo winInfo = KWindowInfo(id,
|
||||
NET::Property::WMDesktop | NET::Property::WMGeometry |
|
||||
NET::Property::WMState | NET::Property::WMWindowType |
|
||||
NET::Property::WMVisibleName);
|
||||
if (!winInfo.isOnDesktop(desktop)) continue;
|
||||
foreach (WId id, KWindowSystem::windows()) {
|
||||
KWindowInfo winInfo = KWindowInfo(
|
||||
id, NET::Property::WMDesktop | NET::Property::WMGeometry
|
||||
| NET::Property::WMState | NET::Property::WMWindowType
|
||||
| NET::Property::WMVisibleName);
|
||||
if (!winInfo.isOnDesktop(desktop))
|
||||
continue;
|
||||
WindowData data;
|
||||
data.id = id;
|
||||
data.name = winInfo.visibleName();
|
||||
data.rect = winInfo.geometry();
|
||||
if (winInfo.windowType(NET::WindowTypeMask::NormalMask) == NET::WindowType::Normal) {
|
||||
if (winInfo.isMinimized()) continue;
|
||||
if (winInfo.windowType(NET::WindowTypeMask::NormalMask)
|
||||
== NET::WindowType::Normal) {
|
||||
if (winInfo.isMinimized())
|
||||
continue;
|
||||
info.windowsData.append(data);
|
||||
} else if (winInfo.windowType(NET::WindowTypeMask::DesktopMask) == NET::WindowType::Desktop) {
|
||||
} else if (winInfo.windowType(NET::WindowTypeMask::DesktopMask)
|
||||
== NET::WindowType::Desktop) {
|
||||
info.desktopsData.append(data);
|
||||
}
|
||||
}
|
||||
|
@ -43,13 +43,13 @@ class DPAdds : public QObject
|
||||
public:
|
||||
explicit DPAdds(QObject *parent = nullptr);
|
||||
virtual ~DPAdds();
|
||||
|
||||
Q_INVOKABLE bool isDebugEnabled() const;
|
||||
Q_INVOKABLE int currentDesktop() const;
|
||||
Q_INVOKABLE QStringList dictKeys() const;
|
||||
Q_INVOKABLE int numberOfDesktops() const;
|
||||
Q_INVOKABLE QString toolTipImage(const int desktop) const;
|
||||
Q_INVOKABLE QString parsePattern(const QString pattern, const int desktop) const;
|
||||
Q_INVOKABLE QString parsePattern(const QString pattern,
|
||||
const int desktop) const;
|
||||
// values
|
||||
Q_INVOKABLE void setMark(const QString newMark);
|
||||
Q_INVOKABLE void setToolTipData(const QVariantMap tooltipData);
|
||||
@ -63,7 +63,8 @@ signals:
|
||||
void windowListChanged() const;
|
||||
|
||||
public slots:
|
||||
Q_INVOKABLE static void sendNotification(const QString eventId, const QString message);
|
||||
Q_INVOKABLE static void sendNotification(const QString eventId,
|
||||
const QString message);
|
||||
Q_INVOKABLE void setCurrentDesktop(const int desktop) const;
|
||||
|
||||
private:
|
||||
|
@ -3,14 +3,14 @@ message(STATUS "Subproject ${SUBPROJECT}")
|
||||
add_definitions(-DTRANSLATION_DOMAIN=\"plasma_applet_org.kde.plasma.awesomewidget\")
|
||||
|
||||
include_directories(
|
||||
${CMAKE_SOURCE_DIR}
|
||||
${CMAKE_BINARY_DIR}
|
||||
${CMAKE_CURRENT_BINARY_DIR}
|
||||
${CMAKE_CURRENT_BINARY_DIR}/../
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../${PROJECT_LIBRARY}/
|
||||
${PROJECT_TRDPARTY_DIR}
|
||||
${Qt_INCLUDE}
|
||||
${Kf5_INCLUDE}
|
||||
${CMAKE_SOURCE_DIR}
|
||||
${CMAKE_BINARY_DIR}
|
||||
${CMAKE_CURRENT_BINARY_DIR}
|
||||
${CMAKE_CURRENT_BINARY_DIR}/../
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../${PROJECT_LIBRARY}/
|
||||
${PROJECT_TRDPARTY_DIR}
|
||||
${Qt_INCLUDE}
|
||||
${Kf5_INCLUDE}
|
||||
)
|
||||
|
||||
file(GLOB SUBPROJECT_DESKTOP_IN *.desktop)
|
||||
|
@ -42,7 +42,7 @@ ExtendedSysMon::ExtendedSysMon(QObject *parent, const QVariantList &args)
|
||||
|
||||
// init aggregator
|
||||
aggregator = new ExtSysMonAggregator(this, configuration);
|
||||
foreach(QString source, aggregator->sources())
|
||||
foreach (QString source, aggregator->sources())
|
||||
setData(source, aggregator->initialData(source));
|
||||
}
|
||||
|
||||
@ -92,9 +92,10 @@ QStringList ExtendedSysMon::getAllHdd() const
|
||||
{
|
||||
qCDebug(LOG_ESM);
|
||||
|
||||
QStringList allDevices = QDir(QString("/dev")).entryList(QDir::System, QDir::Name);
|
||||
QStringList allDevices
|
||||
= QDir(QString("/dev")).entryList(QDir::System, QDir::Name);
|
||||
QStringList devices = allDevices.filter(QRegExp(QString("^[hms]d[a-z]$")));
|
||||
for (int i=0; i<devices.count(); i++)
|
||||
for (int i = 0; i < devices.count(); i++)
|
||||
devices[i] = QString("/dev/%1").arg(devices.at(i));
|
||||
|
||||
qCInfo(LOG_ESM) << "Device list" << devices;
|
||||
@ -108,7 +109,8 @@ QString ExtendedSysMon::getAutoGpu() const
|
||||
|
||||
QString gpu = QString("disable");
|
||||
QFile moduleFile(QString("/proc/modules"));
|
||||
if (!moduleFile.open(QIODevice::ReadOnly)) return gpu;
|
||||
if (!moduleFile.open(QIODevice::ReadOnly))
|
||||
return gpu;
|
||||
|
||||
QString output = moduleFile.readAll();
|
||||
if (output.contains(QString("fglrx")))
|
||||
@ -125,29 +127,44 @@ void ExtendedSysMon::readConfiguration()
|
||||
{
|
||||
qCDebug(LOG_ESM);
|
||||
|
||||
QString fileName = QStandardPaths::locate(QStandardPaths::ConfigLocation,
|
||||
QString("plasma-dataengine-extsysmon.conf"));
|
||||
QString fileName
|
||||
= QStandardPaths::locate(QStandardPaths::ConfigLocation,
|
||||
QString("plasma-dataengine-extsysmon.conf"));
|
||||
qCInfo(LOG_ESM) << "Configuration file" << fileName;
|
||||
QSettings settings(fileName, QSettings::IniFormat);
|
||||
QHash<QString, QString> rawConfig;
|
||||
|
||||
settings.beginGroup(QString("Configuration"));
|
||||
rawConfig[QString("ACPIPATH")] = settings.value(QString("ACPIPATH"), QString("/sys/class/power_supply/")).toString();
|
||||
rawConfig[QString("GPUDEV")] = settings.value(QString("GPUDEV"), QString("auto")).toString();
|
||||
rawConfig[QString("HDDDEV")] = settings.value(QString("HDDDEV"), QString("all")).toString();
|
||||
rawConfig[QString("HDDTEMPCMD")] = settings.value(QString("HDDTEMPCMD"), QString("sudo smartctl -a")).toString();
|
||||
rawConfig[QString("MPDADDRESS")] = settings.value(QString("MPDADDRESS"), QString("localhost")).toString();
|
||||
rawConfig[QString("MPDPORT")] = settings.value(QString("MPDPORT"), QString("6600")).toString();
|
||||
rawConfig[QString("MPRIS")] = settings.value(QString("MPRIS"), QString("auto")).toString();
|
||||
rawConfig[QString("PLAYER")] = settings.value(QString("PLAYER"), QString("mpris")).toString();
|
||||
rawConfig[QString("PLAYERSYMBOLS")] = settings.value(QString("PLAYERSYMBOLS"), QString("10")).toString();
|
||||
rawConfig[QString("ACPIPATH")]
|
||||
= settings.value(QString("ACPIPATH"),
|
||||
QString("/sys/class/power_supply/"))
|
||||
.toString();
|
||||
rawConfig[QString("GPUDEV")]
|
||||
= settings.value(QString("GPUDEV"), QString("auto")).toString();
|
||||
rawConfig[QString("HDDDEV")]
|
||||
= settings.value(QString("HDDDEV"), QString("all")).toString();
|
||||
rawConfig[QString("HDDTEMPCMD")]
|
||||
= settings.value(QString("HDDTEMPCMD"), QString("sudo smartctl -a"))
|
||||
.toString();
|
||||
rawConfig[QString("MPDADDRESS")]
|
||||
= settings.value(QString("MPDADDRESS"), QString("localhost"))
|
||||
.toString();
|
||||
rawConfig[QString("MPDPORT")]
|
||||
= settings.value(QString("MPDPORT"), QString("6600")).toString();
|
||||
rawConfig[QString("MPRIS")]
|
||||
= settings.value(QString("MPRIS"), QString("auto")).toString();
|
||||
rawConfig[QString("PLAYER")]
|
||||
= settings.value(QString("PLAYER"), QString("mpris")).toString();
|
||||
rawConfig[QString("PLAYERSYMBOLS")]
|
||||
= settings.value(QString("PLAYERSYMBOLS"), QString("10")).toString();
|
||||
settings.endGroup();
|
||||
|
||||
configuration = updateConfiguration(rawConfig);
|
||||
}
|
||||
|
||||
|
||||
QHash<QString, QString> ExtendedSysMon::updateConfiguration(QHash<QString, QString> rawConfig) const
|
||||
QHash<QString, QString>
|
||||
ExtendedSysMon::updateConfiguration(QHash<QString, QString> rawConfig) const
|
||||
{
|
||||
qCDebug(LOG_ESM);
|
||||
qCDebug(LOG_ESM) << "Raw configuration" << rawConfig;
|
||||
@ -157,20 +174,21 @@ QHash<QString, QString> ExtendedSysMon::updateConfiguration(QHash<QString, QStri
|
||||
rawConfig[QString("GPUDEV")] = QString("disable");
|
||||
else if (rawConfig[QString("GPUDEV")] == QString("auto"))
|
||||
rawConfig[QString("GPUDEV")] = getAutoGpu();
|
||||
else if ((rawConfig[QString("GPUDEV")] != QString("ati")) &&
|
||||
(rawConfig[QString("GPUDEV")] != QString("nvidia")))
|
||||
else if ((rawConfig[QString("GPUDEV")] != QString("ati"))
|
||||
&& (rawConfig[QString("GPUDEV")] != QString("nvidia")))
|
||||
rawConfig[QString("GPUDEV")] = getAutoGpu();
|
||||
// hdddev
|
||||
QStringList allHddDevices = getAllHdd();
|
||||
if (rawConfig[QString("HDDDEV")] == QString("all"))
|
||||
if (rawConfig[QString("HDDDEV")] == QString("all")) {
|
||||
rawConfig[QString("HDDDEV")] = allHddDevices.join(QChar(','));
|
||||
else if (rawConfig[QString("HDDDEV")] == QString("disable"))
|
||||
} else if (rawConfig[QString("HDDDEV")] == QString("disable")) {
|
||||
rawConfig[QString("HDDDEV")] = QString("");
|
||||
else {
|
||||
QStringList deviceList = rawConfig[QString("HDDDEV")].split(QChar(','), QString::SkipEmptyParts);
|
||||
} else {
|
||||
QStringList deviceList = rawConfig[QString("HDDDEV")].split(
|
||||
QChar(','), QString::SkipEmptyParts);
|
||||
QStringList devices;
|
||||
QRegExp diskRegexp = QRegExp("^/dev/[hms]d[a-z]$");
|
||||
foreach(QString device, deviceList)
|
||||
foreach (QString device, deviceList)
|
||||
if ((QFile::exists(device)) && (device.contains(diskRegexp)))
|
||||
devices.append(device);
|
||||
if (devices.isEmpty())
|
||||
@ -179,20 +197,21 @@ QHash<QString, QString> ExtendedSysMon::updateConfiguration(QHash<QString, QStri
|
||||
rawConfig[QString("HDDDEV")] = devices.join(QChar(','));
|
||||
}
|
||||
// player
|
||||
if ((rawConfig[QString("PLAYER")] != QString("mpd")) &&
|
||||
(rawConfig[QString("PLAYER")] != QString("mpris")) &&
|
||||
(rawConfig[QString("PLAYER")] != QString("disable")))
|
||||
if ((rawConfig[QString("PLAYER")] != QString("mpd"))
|
||||
&& (rawConfig[QString("PLAYER")] != QString("mpris"))
|
||||
&& (rawConfig[QString("PLAYER")] != QString("disable")))
|
||||
rawConfig[QString("PLAYER")] = QString("mpris");
|
||||
// player symbols
|
||||
if (rawConfig[QString("PLAYERSYMBOLS")].toInt() <= 0)
|
||||
rawConfig[QString("PLAYERSYMBOLS")] = QString("10");
|
||||
|
||||
foreach(QString key, rawConfig.keys())
|
||||
foreach (QString key, rawConfig.keys())
|
||||
qCInfo(LOG_ESM) << key << "=" << rawConfig[key];
|
||||
return rawConfig;
|
||||
}
|
||||
|
||||
|
||||
K_EXPORT_PLASMA_DATAENGINE_WITH_JSON(extsysmon, ExtendedSysMon, "plasma-dataengine-extsysmon.json")
|
||||
K_EXPORT_PLASMA_DATAENGINE_WITH_JSON(extsysmon, ExtendedSysMon,
|
||||
"plasma-dataengine-extsysmon.json")
|
||||
|
||||
#include "extsysmon.moc"
|
||||
|
@ -44,7 +44,8 @@ private:
|
||||
QStringList getAllHdd() const;
|
||||
QString getAutoGpu() const;
|
||||
void readConfiguration();
|
||||
QHash<QString, QString> updateConfiguration(QHash<QString, QString> rawConfig) const;
|
||||
QHash<QString, QString>
|
||||
updateConfiguration(QHash<QString, QString> rawConfig) const;
|
||||
};
|
||||
|
||||
|
||||
|
@ -35,7 +35,8 @@
|
||||
#include "sources/weathersource.h"
|
||||
|
||||
|
||||
ExtSysMonAggregator::ExtSysMonAggregator(QObject *parent, const QHash<QString, QString> config)
|
||||
ExtSysMonAggregator::ExtSysMonAggregator(QObject *parent,
|
||||
const QHash<QString, QString> config)
|
||||
: QObject(parent)
|
||||
{
|
||||
qCDebug(LOG_ESM);
|
||||
@ -61,15 +62,6 @@ QVariant ExtSysMonAggregator::data(const QString source) const
|
||||
}
|
||||
|
||||
|
||||
AbstractExtSysMonSource *ExtSysMonAggregator::engine(const QString source)
|
||||
{
|
||||
qCDebug(LOG_ESM);
|
||||
qCDebug(LOG_ESM) << "Source" << source;
|
||||
|
||||
return hasSource(source) ? m_map[source] : nullptr;
|
||||
}
|
||||
|
||||
|
||||
bool ExtSysMonAggregator::hasSource(const QString source) const
|
||||
{
|
||||
return m_map.contains(source);
|
||||
@ -81,7 +73,8 @@ QVariantMap ExtSysMonAggregator::initialData(const QString source) const
|
||||
qCDebug(LOG_ESM);
|
||||
qCDebug(LOG_ESM) << "Source" << source;
|
||||
|
||||
return hasSource(source) ? m_map[source]->initialData(source) : QVariantMap();
|
||||
return hasSource(source) ? m_map[source]->initialData(source)
|
||||
: QVariantMap();
|
||||
}
|
||||
|
||||
|
||||
@ -100,64 +93,75 @@ void ExtSysMonAggregator::init(const QHash<QString, QString> config)
|
||||
qCDebug(LOG_ESM);
|
||||
|
||||
// battery
|
||||
AbstractExtSysMonSource *batteryItem = new BatterySource(this, QStringList() << config[QString("ACPIPATH")]);
|
||||
foreach(QString source, batteryItem->sources())
|
||||
AbstractExtSysMonSource *batteryItem
|
||||
= new BatterySource(this, QStringList() << config[QString("ACPIPATH")]);
|
||||
foreach (QString source, batteryItem->sources())
|
||||
m_map[source] = batteryItem;
|
||||
// custom
|
||||
AbstractExtSysMonSource *customItem = new CustomSource(this, QStringList());
|
||||
foreach(QString source, customItem->sources())
|
||||
foreach (QString source, customItem->sources())
|
||||
m_map[source] = customItem;
|
||||
// desktop
|
||||
AbstractExtSysMonSource *desktopItem = new DesktopSource(this, QStringList());
|
||||
foreach(QString source, desktopItem->sources())
|
||||
AbstractExtSysMonSource *desktopItem
|
||||
= new DesktopSource(this, QStringList());
|
||||
foreach (QString source, desktopItem->sources())
|
||||
m_map[source] = desktopItem;
|
||||
// gpu load
|
||||
AbstractExtSysMonSource *gpuLoadItem = new GPULoadSource(this, QStringList() << config[QString("GPUDEV")]);
|
||||
foreach(QString source, gpuLoadItem->sources())
|
||||
AbstractExtSysMonSource *gpuLoadItem
|
||||
= new GPULoadSource(this, QStringList() << config[QString("GPUDEV")]);
|
||||
foreach (QString source, gpuLoadItem->sources())
|
||||
m_map[source] = gpuLoadItem;
|
||||
// gpu temperature
|
||||
AbstractExtSysMonSource *gpuTempItem = new GPUTemperatureSource(this, QStringList() << config[QString("GPUDEV")]);
|
||||
foreach(QString source, gpuTempItem->sources())
|
||||
AbstractExtSysMonSource *gpuTempItem = new GPUTemperatureSource(
|
||||
this, QStringList() << config[QString("GPUDEV")]);
|
||||
foreach (QString source, gpuTempItem->sources())
|
||||
m_map[source] = gpuTempItem;
|
||||
// hdd temperature
|
||||
AbstractExtSysMonSource *hddTempItem = new HDDTemperatureSource(this,
|
||||
QStringList() << config[QString("HDDDEV")] << config[QString("HDDTEMPCMD")]);
|
||||
foreach(QString source, hddTempItem->sources())
|
||||
AbstractExtSysMonSource *hddTempItem = new HDDTemperatureSource(
|
||||
this, QStringList() << config[QString("HDDDEV")]
|
||||
<< config[QString("HDDTEMPCMD")]);
|
||||
foreach (QString source, hddTempItem->sources())
|
||||
m_map[source] = hddTempItem;
|
||||
// network
|
||||
AbstractExtSysMonSource *networkItem = new NetworkSource(this, QStringList());
|
||||
foreach(QString source, networkItem->sources())
|
||||
AbstractExtSysMonSource *networkItem
|
||||
= new NetworkSource(this, QStringList());
|
||||
foreach (QString source, networkItem->sources())
|
||||
m_map[source] = networkItem;
|
||||
// player
|
||||
AbstractExtSysMonSource *playerItem = new PlayerSource(this,
|
||||
QStringList() << config[QString("PLAYER")] << config[QString("MPDADDRESS")]
|
||||
<< config[QString("MPDPORT")] << config[QString("MPRIS")] << config[QString("PLAYERSYMBOLS")]);
|
||||
foreach(QString source, playerItem->sources())
|
||||
AbstractExtSysMonSource *playerItem = new PlayerSource(
|
||||
this, QStringList()
|
||||
<< config[QString("PLAYER")] << config[QString("MPDADDRESS")]
|
||||
<< config[QString("MPDPORT")] << config[QString("MPRIS")]
|
||||
<< config[QString("PLAYERSYMBOLS")]);
|
||||
foreach (QString source, playerItem->sources())
|
||||
m_map[source] = playerItem;
|
||||
// processes
|
||||
AbstractExtSysMonSource *processesItem = new ProcessesSource(this, QStringList());
|
||||
foreach(QString source, processesItem->sources())
|
||||
AbstractExtSysMonSource *processesItem
|
||||
= new ProcessesSource(this, QStringList());
|
||||
foreach (QString source, processesItem->sources())
|
||||
m_map[source] = processesItem;
|
||||
// quotes
|
||||
AbstractExtSysMonSource *quotesItem = new QuotesSource(this, QStringList());
|
||||
foreach(QString source, quotesItem->sources())
|
||||
foreach (QString source, quotesItem->sources())
|
||||
m_map[source] = quotesItem;
|
||||
// update
|
||||
AbstractExtSysMonSource *updateItem = new UpdateSource(this, QStringList());
|
||||
foreach(QString source, updateItem->sources())
|
||||
foreach (QString source, updateItem->sources())
|
||||
m_map[source] = updateItem;
|
||||
// upgrade
|
||||
AbstractExtSysMonSource *upgradeItem = new UpgradeSource(this, QStringList());
|
||||
foreach(QString source, upgradeItem->sources())
|
||||
AbstractExtSysMonSource *upgradeItem
|
||||
= new UpgradeSource(this, QStringList());
|
||||
foreach (QString source, upgradeItem->sources())
|
||||
m_map[source] = upgradeItem;
|
||||
// weather
|
||||
AbstractExtSysMonSource *weatherItem = new WeatherSource(this, QStringList());
|
||||
foreach(QString source, weatherItem->sources())
|
||||
AbstractExtSysMonSource *weatherItem
|
||||
= new WeatherSource(this, QStringList());
|
||||
foreach (QString source, weatherItem->sources())
|
||||
m_map[source] = weatherItem;
|
||||
#ifdef BUILD_TESTING
|
||||
// additional load source
|
||||
AbstractExtSysMonSource *loadItem = new LoadSource(this, QStringList());
|
||||
foreach(QString source, loadItem->sources())
|
||||
foreach (QString source, loadItem->sources())
|
||||
m_map[source] = loadItem;
|
||||
#endif /* BUILD_TESTING */
|
||||
}
|
||||
|
@ -28,10 +28,10 @@ class ExtSysMonAggregator : public QObject
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit ExtSysMonAggregator(QObject *parent, const QHash<QString, QString> config);
|
||||
explicit ExtSysMonAggregator(QObject *parent,
|
||||
const QHash<QString, QString> config);
|
||||
virtual ~ExtSysMonAggregator();
|
||||
QVariant data(const QString source) const;
|
||||
AbstractExtSysMonSource *engine(const QString source);
|
||||
bool hasSource(const QString source) const;
|
||||
QVariantMap initialData(const QString source) const;
|
||||
QStringList sources() const;
|
||||
|
@ -26,8 +26,9 @@
|
||||
class AbstractExtSysMonSource : public QObject
|
||||
{
|
||||
public:
|
||||
explicit AbstractExtSysMonSource(QObject *parent, const QStringList) : QObject(parent) {};
|
||||
virtual ~AbstractExtSysMonSource() {};
|
||||
explicit AbstractExtSysMonSource(QObject *parent, const QStringList)
|
||||
: QObject(parent){};
|
||||
virtual ~AbstractExtSysMonSource(){};
|
||||
virtual QVariant data(QString source) = 0;
|
||||
virtual QVariantMap initialData(QString source) const = 0;
|
||||
virtual void run() = 0;
|
||||
|
@ -45,7 +45,8 @@ QVariant BatterySource::data(QString source)
|
||||
qCDebug(LOG_ESM);
|
||||
qCDebug(LOG_ESM) << "Source" << source;
|
||||
|
||||
if (source == QString("battery/ac")) run();
|
||||
if (source == QString("battery/ac"))
|
||||
run();
|
||||
return values[source];
|
||||
}
|
||||
|
||||
@ -87,27 +88,34 @@ void BatterySource::run()
|
||||
// adaptor
|
||||
QFile acFile(QString("%1/AC/online").arg(m_acpiPath));
|
||||
if (acFile.open(QIODevice::ReadOnly))
|
||||
values[QString("battery/ac")] = (QString(acFile.readLine()).trimmed().toInt() == 1);
|
||||
values[QString("battery/ac")]
|
||||
= (QString(acFile.readLine()).trimmed().toInt() == 1);
|
||||
acFile.close();
|
||||
|
||||
// batterites
|
||||
float currentLevel = 0.0;
|
||||
float fullLevel = 0.0;
|
||||
for (int i=0; i<m_batteriesCount; i++) {
|
||||
QFile currentLevelFile(QString("%1/BAT%2/energy_now").arg(m_acpiPath).arg(i));
|
||||
QFile fullLevelFile(QString("%1/BAT%2/energy_full").arg(m_acpiPath).arg(i));
|
||||
if ((currentLevelFile.open(QIODevice::ReadOnly)) &&
|
||||
(fullLevelFile.open(QIODevice::ReadOnly))) {
|
||||
float batCurrent = QString(currentLevelFile.readLine()).trimmed().toFloat();
|
||||
float batFull = QString(fullLevelFile.readLine()).trimmed().toFloat();
|
||||
values[QString("battery/bat%1").arg(i)] = static_cast<int>(100 * batCurrent / batFull);
|
||||
for (int i = 0; i < m_batteriesCount; i++) {
|
||||
QFile currentLevelFile(
|
||||
QString("%1/BAT%2/energy_now").arg(m_acpiPath).arg(i));
|
||||
QFile fullLevelFile(
|
||||
QString("%1/BAT%2/energy_full").arg(m_acpiPath).arg(i));
|
||||
if ((currentLevelFile.open(QIODevice::ReadOnly))
|
||||
&& (fullLevelFile.open(QIODevice::ReadOnly))) {
|
||||
float batCurrent
|
||||
= QString(currentLevelFile.readLine()).trimmed().toFloat();
|
||||
float batFull
|
||||
= QString(fullLevelFile.readLine()).trimmed().toFloat();
|
||||
values[QString("battery/bat%1").arg(i)]
|
||||
= static_cast<int>(100 * batCurrent / batFull);
|
||||
currentLevel += batCurrent;
|
||||
fullLevel += batFull;
|
||||
}
|
||||
currentLevelFile.close();
|
||||
fullLevelFile.close();
|
||||
}
|
||||
values[QString("battery/bat")] = static_cast<int>(100 * currentLevel / fullLevel);
|
||||
values[QString("battery/bat")]
|
||||
= static_cast<int>(100 * currentLevel / fullLevel);
|
||||
}
|
||||
|
||||
|
||||
@ -126,13 +134,15 @@ QStringList BatterySource::getSources()
|
||||
QStringList sources;
|
||||
sources.append(QString("battery/ac"));
|
||||
sources.append(QString("battery/bat"));
|
||||
m_batteriesCount = QDir(m_acpiPath).entryList(QStringList() << QString("BAT*"),
|
||||
QDir::Dirs | QDir::NoDotAndDotDot, QDir::Name).count();
|
||||
m_batteriesCount
|
||||
= QDir(m_acpiPath)
|
||||
.entryList(QStringList() << QString("BAT*"),
|
||||
QDir::Dirs | QDir::NoDotAndDotDot, QDir::Name)
|
||||
.count();
|
||||
qCInfo(LOG_ESM) << "Init batteries count as" << m_batteriesCount;
|
||||
for (int i=0; i<m_batteriesCount; i++)
|
||||
for (int i = 0; i < m_batteriesCount; i++)
|
||||
sources.append(QString("battery/bat%1").arg(i));
|
||||
|
||||
qCInfo(LOG_ESM) << "Sources list" << sources;
|
||||
|
||||
return sources;
|
||||
}
|
||||
|
@ -59,7 +59,9 @@ QVariantMap CustomSource::initialData(QString source) const
|
||||
QVariantMap data;
|
||||
data[QString("min")] = QString("");
|
||||
data[QString("max")] = QString("");
|
||||
data[QString("name")] = QString("Custom command '%1' output").arg(extScripts->itemByTagNumber(index(source))->uniq());
|
||||
data[QString("name")]
|
||||
= QString("Custom command '%1' output")
|
||||
.arg(extScripts->itemByTagNumber(index(source))->uniq());
|
||||
data[QString("type")] = QString("QString");
|
||||
data[QString("units")] = QString("");
|
||||
|
||||
@ -80,7 +82,7 @@ QStringList CustomSource::getSources()
|
||||
qCDebug(LOG_ESM);
|
||||
|
||||
QStringList sources;
|
||||
foreach(ExtScript *item, extScripts->activeItems())
|
||||
foreach (ExtScript *item, extScripts->activeItems())
|
||||
sources.append(QString("custom/%1").arg(item->tag(QString("custom"))));
|
||||
|
||||
return sources;
|
||||
|
@ -33,7 +33,7 @@ public:
|
||||
virtual ~CustomSource();
|
||||
QVariant data(QString source);
|
||||
QVariantMap initialData(QString source) const;
|
||||
void run() {};
|
||||
void run(){};
|
||||
QStringList sources() const;
|
||||
|
||||
private:
|
||||
|
@ -51,7 +51,7 @@ QVariant DesktopSource::data(QString source)
|
||||
return current;
|
||||
} else if (source == QString("desktop/total/name")) {
|
||||
QStringList desktops;
|
||||
for (int i=1; i<total+1; i++)
|
||||
for (int i = 1; i < total + 1; i++)
|
||||
desktops.append(KWindowSystem::desktopName(i));
|
||||
return desktops;
|
||||
} else if (source == QString("desktop/total/number")) {
|
||||
|
@ -30,7 +30,7 @@ public:
|
||||
virtual ~DesktopSource();
|
||||
QVariant data(QString source);
|
||||
QVariantMap initialData(QString source) const;
|
||||
void run() {};
|
||||
void run(){};
|
||||
QStringList sources() const;
|
||||
};
|
||||
|
||||
|
@ -51,29 +51,39 @@ QVariant GPULoadSource::data(QString source)
|
||||
if ((m_device != QString("nvidia")) && (m_device != QString("ati")))
|
||||
return value;
|
||||
// build cmd
|
||||
QString cmd = m_device == QString("nvidia") ? QString("nvidia-smi -q -x") : QString("aticonfig --od-getclocks");
|
||||
QString cmd = m_device == QString("nvidia")
|
||||
? QString("nvidia-smi -q -x")
|
||||
: QString("aticonfig --od-getclocks");
|
||||
qCInfo(LOG_ESM) << "cmd" << cmd;
|
||||
TaskResult process = runTask(cmd);
|
||||
qCInfo(LOG_ESM) << "Cmd returns" << process.exitCode;
|
||||
qCInfo(LOG_ESM) << "Error" << process.error;
|
||||
// parse
|
||||
QString qoutput = QTextCodec::codecForMib(106)->toUnicode(process.output).trimmed();
|
||||
if (m_device == QString("nvidia"))
|
||||
foreach(QString str, qoutput.split(QChar('\n'), QString::SkipEmptyParts)) {
|
||||
if (!str.contains(QString("<gpu_util>"))) continue;
|
||||
QString load = str.remove(QString("<gpu_util>")).remove(QString("</gpu_util>"))
|
||||
.remove(QChar('%'));
|
||||
QString qoutput
|
||||
= QTextCodec::codecForMib(106)->toUnicode(process.output).trimmed();
|
||||
if (m_device == QString("nvidia")) {
|
||||
foreach (QString str,
|
||||
qoutput.split(QChar('\n'), QString::SkipEmptyParts)) {
|
||||
if (!str.contains(QString("<gpu_util>")))
|
||||
continue;
|
||||
QString load = str.remove(QString("<gpu_util>"))
|
||||
.remove(QString("</gpu_util>"))
|
||||
.remove(QChar('%'));
|
||||
value = load.toFloat();
|
||||
break;
|
||||
}
|
||||
else if (m_device == QString("ati"))
|
||||
foreach(QString str, qoutput.split(QChar('\n'), QString::SkipEmptyParts)) {
|
||||
if (!str.contains(QString("load"))) continue;
|
||||
QString load = str.split(QChar(' '), QString::SkipEmptyParts)[3]
|
||||
.remove(QChar('%'));
|
||||
} else if (m_device == QString("ati")) {
|
||||
foreach (QString str,
|
||||
qoutput.split(QChar('\n'), QString::SkipEmptyParts)) {
|
||||
if (!str.contains(QString("load")))
|
||||
continue;
|
||||
QString load
|
||||
= str.split(QChar(' '), QString::SkipEmptyParts)[3].remove(
|
||||
QChar('%'));
|
||||
value = load.toFloat();
|
||||
break;
|
||||
}
|
||||
}
|
||||
// return
|
||||
return value;
|
||||
}
|
||||
|
@ -30,7 +30,7 @@ public:
|
||||
virtual ~GPULoadSource();
|
||||
QVariant data(QString source);
|
||||
QVariantMap initialData(QString source) const;
|
||||
void run() {};
|
||||
void run(){};
|
||||
QStringList sources() const;
|
||||
|
||||
private:
|
||||
|
@ -25,7 +25,8 @@
|
||||
#include "awdebug.h"
|
||||
|
||||
|
||||
GPUTemperatureSource::GPUTemperatureSource(QObject *parent, const QStringList args)
|
||||
GPUTemperatureSource::GPUTemperatureSource(QObject *parent,
|
||||
const QStringList args)
|
||||
: AbstractExtSysMonSource(parent, args)
|
||||
{
|
||||
Q_ASSERT(args.count() == 1);
|
||||
@ -51,27 +52,37 @@ QVariant GPUTemperatureSource::data(QString source)
|
||||
if ((m_device != QString("nvidia")) && (m_device != QString("ati")))
|
||||
return value;
|
||||
// build cmd
|
||||
QString cmd = m_device == QString("nvidia") ? QString("nvidia-smi -q -x") : QString("aticonfig --od-gettemperature");
|
||||
QString cmd = m_device == QString("nvidia")
|
||||
? QString("nvidia-smi -q -x")
|
||||
: QString("aticonfig --od-gettemperature");
|
||||
qCInfo(LOG_ESM) << "cmd" << cmd;
|
||||
TaskResult process = runTask(cmd);
|
||||
qCInfo(LOG_ESM) << "Cmd returns" << process.exitCode;
|
||||
qCInfo(LOG_ESM) << "Error" << process.error;
|
||||
// parse
|
||||
QString qoutput = QTextCodec::codecForMib(106)->toUnicode(process.output).trimmed();
|
||||
if (m_device == QString("nvidia"))
|
||||
foreach(QString str, qoutput.split(QChar('\n'), QString::SkipEmptyParts)) {
|
||||
if (!str.contains(QString("<gpu_temp>"))) continue;
|
||||
QString temp = str.remove(QString("<gpu_temp>")).remove(QString("C</gpu_temp>"));
|
||||
QString qoutput
|
||||
= QTextCodec::codecForMib(106)->toUnicode(process.output).trimmed();
|
||||
if (m_device == QString("nvidia")) {
|
||||
foreach (QString str,
|
||||
qoutput.split(QChar('\n'), QString::SkipEmptyParts)) {
|
||||
if (!str.contains(QString("<gpu_temp>")))
|
||||
continue;
|
||||
QString temp = str.remove(QString("<gpu_temp>"))
|
||||
.remove(QString("C</gpu_temp>"));
|
||||
value = temp.toFloat();
|
||||
break;
|
||||
}
|
||||
else if (m_device == QString("ati"))
|
||||
foreach(QString str, qoutput.split(QChar('\n'), QString::SkipEmptyParts)) {
|
||||
if (!str.contains(QString("Temperature"))) continue;
|
||||
QString temp = str.split(QChar(' '), QString::SkipEmptyParts).at(4);
|
||||
} else if (m_device == QString("ati")) {
|
||||
foreach (QString str,
|
||||
qoutput.split(QChar('\n'), QString::SkipEmptyParts)) {
|
||||
if (!str.contains(QString("Temperature")))
|
||||
continue;
|
||||
QString temp
|
||||
= str.split(QChar(' '), QString::SkipEmptyParts).at(4);
|
||||
value = temp.toFloat();
|
||||
break;
|
||||
}
|
||||
}
|
||||
// return
|
||||
return value;
|
||||
}
|
||||
|
@ -30,7 +30,7 @@ public:
|
||||
virtual ~GPUTemperatureSource();
|
||||
QVariant data(QString source);
|
||||
QVariantMap initialData(QString source) const;
|
||||
void run() {};
|
||||
void run(){};
|
||||
QStringList sources() const;
|
||||
|
||||
private:
|
||||
|
@ -25,7 +25,8 @@
|
||||
#include "awdebug.h"
|
||||
|
||||
|
||||
HDDTemperatureSource::HDDTemperatureSource(QObject *parent, const QStringList args)
|
||||
HDDTemperatureSource::HDDTemperatureSource(QObject *parent,
|
||||
const QStringList args)
|
||||
: AbstractExtSysMonSource(parent, args)
|
||||
{
|
||||
Q_ASSERT(args.count() == 2);
|
||||
@ -58,17 +59,24 @@ QVariant HDDTemperatureSource::data(QString source)
|
||||
qCInfo(LOG_ESM) << "Error" << process.error;
|
||||
|
||||
// parse
|
||||
QString qoutput = QTextCodec::codecForMib(106)->toUnicode(process.output).trimmed();
|
||||
QString qoutput
|
||||
= QTextCodec::codecForMib(106)->toUnicode(process.output).trimmed();
|
||||
if (m_smartctl) {
|
||||
foreach(QString str, qoutput.split(QChar('\n'), QString::SkipEmptyParts)) {
|
||||
if (!str.startsWith(QString("194"))) continue;
|
||||
if (str.split(QChar(' '), QString::SkipEmptyParts).count() < 9) break;
|
||||
value = str.split(QChar(' '), QString::SkipEmptyParts).at(9).toFloat();
|
||||
foreach (QString str,
|
||||
qoutput.split(QChar('\n'), QString::SkipEmptyParts)) {
|
||||
if (!str.startsWith(QString("194")))
|
||||
continue;
|
||||
if (str.split(QChar(' '), QString::SkipEmptyParts).count() < 9)
|
||||
break;
|
||||
value = str.split(QChar(' '), QString::SkipEmptyParts)
|
||||
.at(9)
|
||||
.toFloat();
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
if (qoutput.split(QChar(':'), QString::SkipEmptyParts).count() >= 3) {
|
||||
QString temp = qoutput.split(QChar(':'), QString::SkipEmptyParts).at(2);
|
||||
QString temp
|
||||
= qoutput.split(QChar(':'), QString::SkipEmptyParts).at(2);
|
||||
temp.remove(QChar(0260)).remove(QChar('C'));
|
||||
value = temp.toFloat();
|
||||
}
|
||||
@ -100,7 +108,7 @@ QStringList HDDTemperatureSource::sources() const
|
||||
qCDebug(LOG_ESM);
|
||||
|
||||
QStringList sources;
|
||||
foreach(QString device, m_devices)
|
||||
foreach (QString device, m_devices)
|
||||
sources.append(QString("hdd/temperature%1").arg(device));
|
||||
|
||||
return sources;
|
||||
|
@ -30,7 +30,7 @@ public:
|
||||
virtual ~HDDTemperatureSource();
|
||||
QVariant data(QString source);
|
||||
QVariantMap initialData(QString source) const;
|
||||
void run() {};
|
||||
void run(){};
|
||||
QStringList sources() const;
|
||||
|
||||
private:
|
||||
|
@ -68,8 +68,8 @@ QStringList LoadSource::sources() const
|
||||
qCDebug(LOG_ESM);
|
||||
|
||||
QStringList sources;
|
||||
for (int i=0; i<1000; i++)
|
||||
sources.append(QString("load/load%1").arg(i));
|
||||
for (int i = 0; i < 1000; i++)
|
||||
sources.append(QString("load/load%1").arg(i));
|
||||
|
||||
return sources;
|
||||
}
|
||||
|
@ -30,7 +30,7 @@ public:
|
||||
virtual ~LoadSource();
|
||||
QVariant data(QString source);
|
||||
QVariantMap initialData(QString source) const;
|
||||
void run() {};
|
||||
void run(){};
|
||||
QStringList sources() const;
|
||||
};
|
||||
|
||||
|
@ -44,13 +44,16 @@ QVariant NetworkSource::data(QString source)
|
||||
|
||||
if (source == QString("network/current/name")) {
|
||||
QString device = QString("lo");
|
||||
QList<QNetworkInterface> rawInterfaceList = QNetworkInterface::allInterfaces();
|
||||
QList<QNetworkInterface> rawInterfaceList
|
||||
= QNetworkInterface::allInterfaces();
|
||||
qCInfo(LOG_ESM) << "Devices" << rawInterfaceList;
|
||||
foreach(QNetworkInterface interface, rawInterfaceList) {
|
||||
if ((interface.flags().testFlag(QNetworkInterface::IsLoopBack)) ||
|
||||
(interface.flags().testFlag(QNetworkInterface::IsPointToPoint)))
|
||||
foreach (QNetworkInterface interface, rawInterfaceList) {
|
||||
if ((interface.flags().testFlag(QNetworkInterface::IsLoopBack))
|
||||
|| (interface.flags().testFlag(
|
||||
QNetworkInterface::IsPointToPoint)))
|
||||
continue;
|
||||
if (interface.addressEntries().isEmpty())
|
||||
continue;
|
||||
if (interface.addressEntries().isEmpty()) continue;
|
||||
device = interface.name();
|
||||
break;
|
||||
}
|
||||
|
@ -30,7 +30,7 @@ public:
|
||||
virtual ~NetworkSource();
|
||||
QVariant data(QString source);
|
||||
QVariantMap initialData(QString source) const;
|
||||
void run() {};
|
||||
void run(){};
|
||||
QStringList sources() const;
|
||||
};
|
||||
|
||||
|
@ -53,7 +53,8 @@ QVariant PlayerSource::data(QString source)
|
||||
qCDebug(LOG_ESM);
|
||||
qCDebug(LOG_ESM) << "Source" << source;
|
||||
|
||||
if (source == QString("player/title")) run();
|
||||
if (source == QString("player/title"))
|
||||
run();
|
||||
return values[source];
|
||||
}
|
||||
|
||||
@ -73,13 +74,16 @@ QVariantMap PlayerSource::initialData(QString source) const
|
||||
} else if (source == QString("player/salbum")) {
|
||||
data[QString("min")] = QString("");
|
||||
data[QString("max")] = QString("");
|
||||
data[QString("name")] = QString("Current song album (%1 symbols)").arg(m_symbols);
|
||||
data[QString("name")]
|
||||
= QString("Current song album (%1 symbols)").arg(m_symbols);
|
||||
data[QString("type")] = QString("QString");
|
||||
data[QString("units")] = QString("");
|
||||
} else if (source == QString("player/dalbum")) {
|
||||
data[QString("min")] = QString("");
|
||||
data[QString("max")] = QString("");
|
||||
data[QString("name")] = QString("Current song album (%1 symbols, dynamic)").arg(m_symbols);
|
||||
data[QString("name")]
|
||||
= QString("Current song album (%1 symbols, dynamic)")
|
||||
.arg(m_symbols);
|
||||
data[QString("type")] = QString("QString");
|
||||
data[QString("units")] = QString("");
|
||||
} else if (source == QString("player/artist")) {
|
||||
@ -91,13 +95,16 @@ QVariantMap PlayerSource::initialData(QString source) const
|
||||
} else if (source == QString("player/sartist")) {
|
||||
data[QString("min")] = QString("");
|
||||
data[QString("max")] = QString("");
|
||||
data[QString("name")] = QString("Current song artist (%1 symbols)").arg(m_symbols);
|
||||
data[QString("name")]
|
||||
= QString("Current song artist (%1 symbols)").arg(m_symbols);
|
||||
data[QString("type")] = QString("QString");
|
||||
data[QString("units")] = QString("");
|
||||
} else if (source == QString("player/dartist")) {
|
||||
data[QString("min")] = QString("");
|
||||
data[QString("max")] = QString("");
|
||||
data[QString("name")] = QString("Current song artist (%1 symbols, dynamic)").arg(m_symbols);
|
||||
data[QString("name")]
|
||||
= QString("Current song artist (%1 symbols, dynamic)")
|
||||
.arg(m_symbols);
|
||||
data[QString("type")] = QString("QString");
|
||||
data[QString("units")] = QString("");
|
||||
} else if (source == QString("player/duration")) {
|
||||
@ -121,13 +128,16 @@ QVariantMap PlayerSource::initialData(QString source) const
|
||||
} else if (source == QString("player/stitle")) {
|
||||
data[QString("min")] = QString("");
|
||||
data[QString("max")] = QString("");
|
||||
data[QString("name")] = QString("Current song title (%1 symbols)").arg(m_symbols);
|
||||
data[QString("name")]
|
||||
= QString("Current song title (%1 symbols)").arg(m_symbols);
|
||||
data[QString("type")] = QString("QString");
|
||||
data[QString("units")] = QString("");
|
||||
} else if (source == QString("player/dtitle")) {
|
||||
data[QString("min")] = QString("");
|
||||
data[QString("max")] = QString("");
|
||||
data[QString("name")] = QString("Current song title (%1 symbols, dynamic)").arg(m_symbols);
|
||||
data[QString("name")]
|
||||
= QString("Current song title (%1 symbols, dynamic)")
|
||||
.arg(m_symbols);
|
||||
data[QString("type")] = QString("QString");
|
||||
data[QString("units")] = QString("");
|
||||
}
|
||||
@ -144,32 +154,34 @@ void PlayerSource::run()
|
||||
if (m_player == QString("mpd")) {
|
||||
// mpd
|
||||
QHash<QString, QVariant> data = getPlayerMpdInfo(m_mpdAddress);
|
||||
foreach(QString key, data.keys()) values[key] = data[key];
|
||||
foreach (QString key, data.keys())
|
||||
values[key] = data[key];
|
||||
} else if (m_player == QString("mpris")) {
|
||||
// players which supports mpris
|
||||
QString mpris = m_mpris == QString("auto") ? getAutoMpris() : m_mpris;
|
||||
QHash<QString, QVariant> data = getPlayerMprisInfo(mpris);
|
||||
foreach(QString key, data.keys()) values[key] = data[key];
|
||||
foreach (QString key, data.keys())
|
||||
values[key] = data[key];
|
||||
}
|
||||
|
||||
// dymanic properties
|
||||
// solid
|
||||
values[QString("player/salbum")] = stripString(values[QString("player/album")].toString(),
|
||||
m_symbols);
|
||||
values[QString("player/sartist")] = stripString(values[QString("player/artist")].toString(),
|
||||
m_symbols);
|
||||
values[QString("player/stitle")] = stripString(values[QString("player/title")].toString(),
|
||||
m_symbols);
|
||||
values[QString("player/salbum")]
|
||||
= stripString(values[QString("player/album")].toString(), m_symbols);
|
||||
values[QString("player/sartist")]
|
||||
= stripString(values[QString("player/artist")].toString(), m_symbols);
|
||||
values[QString("player/stitle")]
|
||||
= stripString(values[QString("player/title")].toString(), m_symbols);
|
||||
// dynamic
|
||||
values[QString("player/dalbum")] = buildString(values[QString("player/dalbum")].toString(),
|
||||
values[QString("player/album")].toString(),
|
||||
m_symbols);
|
||||
values[QString("player/dartist")] = buildString(values[QString("player/dartist")].toString(),
|
||||
values[QString("player/artist")].toString(),
|
||||
m_symbols);
|
||||
values[QString("player/dtitle")] = buildString(values[QString("player/dtitle")].toString(),
|
||||
values[QString("player/title")].toString(),
|
||||
m_symbols);
|
||||
values[QString("player/dalbum")]
|
||||
= buildString(values[QString("player/dalbum")].toString(),
|
||||
values[QString("player/album")].toString(), m_symbols);
|
||||
values[QString("player/dartist")]
|
||||
= buildString(values[QString("player/dartist")].toString(),
|
||||
values[QString("player/artist")].toString(), m_symbols);
|
||||
values[QString("player/dtitle")]
|
||||
= buildString(values[QString("player/dtitle")].toString(),
|
||||
values[QString("player/title")].toString(), m_symbols);
|
||||
}
|
||||
|
||||
|
||||
@ -211,12 +223,15 @@ QString PlayerSource::getAutoMpris() const
|
||||
{
|
||||
qCDebug(LOG_ESM);
|
||||
|
||||
QDBusMessage listServices = QDBusConnection::sessionBus().interface()->call(QDBus::BlockWithGui, QString("ListNames"));
|
||||
if (listServices.arguments().isEmpty()) return QString();
|
||||
QDBusMessage listServices = QDBusConnection::sessionBus().interface()->call(
|
||||
QDBus::BlockWithGui, QString("ListNames"));
|
||||
if (listServices.arguments().isEmpty())
|
||||
return QString();
|
||||
QStringList arguments = listServices.arguments().first().toStringList();
|
||||
|
||||
foreach(QString arg, arguments) {
|
||||
if (!arg.startsWith(QString("org.mpris.MediaPlayer2."))) continue;
|
||||
foreach (QString arg, arguments) {
|
||||
if (!arg.startsWith(QString("org.mpris.MediaPlayer2.")))
|
||||
continue;
|
||||
qCInfo(LOG_ESM) << "Service found" << arg;
|
||||
QString service = arg;
|
||||
service.remove(QString("org.mpris.MediaPlayer2."));
|
||||
@ -235,19 +250,25 @@ QVariantHash PlayerSource::getPlayerMpdInfo(const QString mpdAddress) const
|
||||
QVariantHash info = defaultInfo();
|
||||
|
||||
// build cmd
|
||||
QString cmd = QString("bash -c \"echo 'currentsong\nstatus\nclose' | curl --connect-timeout 1 -fsm 3 telnet://%1\"")
|
||||
.arg(mpdAddress);
|
||||
QString cmd = QString("bash -c \"echo 'currentsong\nstatus\nclose' | curl "
|
||||
"--connect-timeout 1 -fsm 3 telnet://%1\"")
|
||||
.arg(mpdAddress);
|
||||
qCInfo(LOG_ESM) << "cmd" << cmd;
|
||||
TaskResult process = runTask(cmd);
|
||||
qCInfo(LOG_ESM) << "Cmd returns" << process.exitCode;
|
||||
qCInfo(LOG_ESM) << "Error" << process.error;
|
||||
|
||||
QString qoutput = QTextCodec::codecForMib(106)->toUnicode(process.output).trimmed();
|
||||
foreach(QString str, qoutput.split(QChar('\n'), QString::SkipEmptyParts)) {
|
||||
QString qoutput
|
||||
= QTextCodec::codecForMib(106)->toUnicode(process.output).trimmed();
|
||||
foreach (QString str, qoutput.split(QChar('\n'), QString::SkipEmptyParts)) {
|
||||
if (str.split(QString(": "), QString::SkipEmptyParts).count() == 2) {
|
||||
// "Metadata: data"
|
||||
QString metadata = str.split(QString(": "), QString::SkipEmptyParts).first().toLower();
|
||||
QString data = str.split(QString(": "), QString::SkipEmptyParts).last().trimmed();
|
||||
QString metadata = str.split(QString(": "), QString::SkipEmptyParts)
|
||||
.first()
|
||||
.toLower();
|
||||
QString data = str.split(QString(": "), QString::SkipEmptyParts)
|
||||
.last()
|
||||
.trimmed();
|
||||
// there are one more time...
|
||||
if ((metadata == QString("time")) && (data.contains(QChar(':')))) {
|
||||
QStringList times = data.split(QString(":"));
|
||||
@ -269,44 +290,63 @@ QVariantHash PlayerSource::getPlayerMprisInfo(const QString mpris) const
|
||||
qCDebug(LOG_ESM) << "MPRIS" << mpris;
|
||||
|
||||
QVariantHash info = defaultInfo();
|
||||
if (mpris.isEmpty()) return info;
|
||||
if (mpris.isEmpty())
|
||||
return info;
|
||||
|
||||
QDBusConnection bus = QDBusConnection::sessionBus();
|
||||
// comes from the following request:
|
||||
// qdbus org.mpris.MediaPlayer2.vlc /org/mpris/MediaPlayer2 org.freedesktop.DBus.Properties.Get org.mpris.MediaPlayer2.Player Metadata
|
||||
// qdbus org.mpris.MediaPlayer2.vlc /org/mpris/MediaPlayer2
|
||||
// org.freedesktop.DBus.Properties.Get org.mpris.MediaPlayer2.Player
|
||||
// Metadata
|
||||
// or the same but using dbus-send:
|
||||
// dbus-send --print-reply --session --dest=org.mpris.MediaPlayer2.vlc /org/mpris/MediaPlayer2 org.freedesktop.DBus.Properties.Get string:'org.mpris.MediaPlayer2.Player' string:'Metadata'
|
||||
QVariantList args = QVariantList() << QString("org.mpris.MediaPlayer2.Player") << QString("Metadata");
|
||||
QDBusMessage request = QDBusMessage::createMethodCall(QString("org.mpris.MediaPlayer2.%1").arg(mpris),
|
||||
QString("/org/mpris/MediaPlayer2"),
|
||||
QString(""),
|
||||
QString("Get"));
|
||||
// dbus-send --print-reply --session --dest=org.mpris.MediaPlayer2.vlc
|
||||
// /org/mpris/MediaPlayer2 org.freedesktop.DBus.Properties.Get
|
||||
// string:'org.mpris.MediaPlayer2.Player' string:'Metadata'
|
||||
QVariantList args = QVariantList()
|
||||
<< QString("org.mpris.MediaPlayer2.Player")
|
||||
<< QString("Metadata");
|
||||
QDBusMessage request = QDBusMessage::createMethodCall(
|
||||
QString("org.mpris.MediaPlayer2.%1").arg(mpris),
|
||||
QString("/org/mpris/MediaPlayer2"), QString(""), QString("Get"));
|
||||
request.setArguments(args);
|
||||
QDBusMessage response = bus.call(request, QDBus::BlockWithGui);
|
||||
if ((response.type() != QDBusMessage::ReplyMessage) || (response.arguments().isEmpty())) {
|
||||
if ((response.type() != QDBusMessage::ReplyMessage)
|
||||
|| (response.arguments().isEmpty())) {
|
||||
qCWarning(LOG_ESM) << "Error message" << response.errorMessage();
|
||||
} else {
|
||||
// another portion of dirty magic
|
||||
QVariantHash map = qdbus_cast<QVariantHash>(response.arguments().first()
|
||||
.value<QDBusVariant>().variant()
|
||||
.value<QDBusArgument>());
|
||||
info[QString("player/album")] = map.value(QString("xesam:album"), QString("unknown"));
|
||||
QVariantHash map
|
||||
= qdbus_cast<QVariantHash>(response.arguments()
|
||||
.first()
|
||||
.value<QDBusVariant>()
|
||||
.variant()
|
||||
.value<QDBusArgument>());
|
||||
info[QString("player/album")]
|
||||
= map.value(QString("xesam:album"), QString("unknown"));
|
||||
// artist is array
|
||||
info[QString("player/artist")] = map.value(QString("xesam:artist"), QString("unknown")).toString();
|
||||
info[QString("player/duration")] = map.value(QString("mpris:length"), 0).toInt() / (1000 * 1000);
|
||||
info[QString("player/title")] = map.value(QString("xesam:title"), QString("unknown"));
|
||||
info[QString("player/artist")]
|
||||
= map.value(QString("xesam:artist"), QString("unknown")).toString();
|
||||
info[QString("player/duration")]
|
||||
= map.value(QString("mpris:length"), 0).toInt() / (1000 * 1000);
|
||||
info[QString("player/title")]
|
||||
= map.value(QString("xesam:title"), QString("unknown"));
|
||||
}
|
||||
|
||||
// position
|
||||
args[1] = QString("Position");
|
||||
request.setArguments(args);
|
||||
response = bus.call(request, QDBus::BlockWithGui);
|
||||
if ((response.type() != QDBusMessage::ReplyMessage) || (response.arguments().isEmpty())) {
|
||||
if ((response.type() != QDBusMessage::ReplyMessage)
|
||||
|| (response.arguments().isEmpty())) {
|
||||
qCWarning(LOG_ESM) << "Error message" << response.errorMessage();
|
||||
} else {
|
||||
// this cast is simpler than the previous one ;)
|
||||
info[QString("player/progress")] = response.arguments().first().value<QDBusVariant>()
|
||||
.variant().toLongLong() / (1000 * 1000);
|
||||
info[QString("player/progress")] = response.arguments()
|
||||
.first()
|
||||
.value<QDBusVariant>()
|
||||
.variant()
|
||||
.toLongLong()
|
||||
/ (1000 * 1000);
|
||||
}
|
||||
|
||||
return info;
|
||||
@ -322,10 +362,11 @@ QString PlayerSource::buildString(const QString current, const QString value,
|
||||
qCDebug(LOG_ESM) << "Strip after" << s;
|
||||
|
||||
int index = value.indexOf(current);
|
||||
if ((current.isEmpty()) || ((index + s + 1) > value.count()))
|
||||
if ((current.isEmpty()) || ((index + s + 1) > value.count())) {
|
||||
return QString("%1").arg(value.left(s), s, QLatin1Char(' '));
|
||||
else
|
||||
} else {
|
||||
return QString("%1").arg(value.mid(index + 1, s), s, QLatin1Char(' '));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -335,6 +376,6 @@ QString PlayerSource::stripString(const QString value, const int s) const
|
||||
qCDebug(LOG_ESM) << "New value" << value;
|
||||
qCDebug(LOG_ESM) << "Strip after" << s;
|
||||
|
||||
return value.count() > s ? QString("%1\u2026").arg(value.left(s - 1)) :
|
||||
value.leftJustified(s, QLatin1Char(' '));
|
||||
return value.count() > s ? QString("%1\u2026").arg(value.left(s - 1))
|
||||
: value.leftJustified(s, QLatin1Char(' '));
|
||||
}
|
||||
|
@ -39,14 +39,17 @@ private:
|
||||
QVariantHash getPlayerMpdInfo(const QString mpdAddress) const;
|
||||
QVariantHash getPlayerMprisInfo(const QString mpris) const;
|
||||
// additional method to build dynamic tags
|
||||
QString buildString(const QString current, const QString value, const int s) const;
|
||||
QString buildString(const QString current, const QString value,
|
||||
const int s) const;
|
||||
QString stripString(const QString value, const int s) const;
|
||||
// configuration and values
|
||||
QString m_mpdAddress;
|
||||
QString m_mpris;
|
||||
QString m_player;
|
||||
int m_symbols;
|
||||
QStringList m_metadata = QStringList() << QString("album") << QString("artist") << QString("title");
|
||||
QStringList m_metadata = QStringList() << QString("album")
|
||||
<< QString("artist")
|
||||
<< QString("title");
|
||||
QVariantHash values;
|
||||
};
|
||||
|
||||
|
@ -42,7 +42,8 @@ QVariant ProcessesSource::data(QString source)
|
||||
qCDebug(LOG_ESM);
|
||||
qCDebug(LOG_ESM) << "Source" << source;
|
||||
|
||||
if (source == QString("ps/running/count")) run();
|
||||
if (source == QString("ps/running/count"))
|
||||
run();
|
||||
return values[source];
|
||||
}
|
||||
|
||||
@ -81,19 +82,23 @@ void ProcessesSource::run()
|
||||
{
|
||||
qCDebug(LOG_ESM);
|
||||
|
||||
QStringList allDirectories = QDir(QString("/proc")).entryList(QDir::Dirs | QDir::NoDotAndDotDot,
|
||||
QDir::Name);
|
||||
QStringList allDirectories
|
||||
= QDir(QString("/proc"))
|
||||
.entryList(QDir::Dirs | QDir::NoDotAndDotDot, QDir::Name);
|
||||
QStringList directories = allDirectories.filter(QRegExp(QString("(\\d+)")));
|
||||
QStringList running;
|
||||
|
||||
foreach(QString dir, directories) {
|
||||
foreach (QString dir, directories) {
|
||||
QFile statusFile(QString("/proc/%1/status").arg(dir));
|
||||
if (!statusFile.open(QIODevice::ReadOnly)) continue;
|
||||
if (!statusFile.open(QIODevice::ReadOnly))
|
||||
continue;
|
||||
QFile cmdFile(QString("/proc/%1/cmdline").arg(dir));
|
||||
if (!cmdFile.open(QIODevice::ReadOnly)) continue;
|
||||
if (!cmdFile.open(QIODevice::ReadOnly))
|
||||
continue;
|
||||
|
||||
QString output = statusFile.readAll();
|
||||
if (output.contains(QString("running"))) running.append(cmdFile.readAll());
|
||||
if (output.contains(QString("running")))
|
||||
running.append(cmdFile.readAll());
|
||||
}
|
||||
|
||||
values[QString("ps/running/count")] = running.count();
|
||||
|
@ -48,7 +48,8 @@ QVariant QuotesSource::data(QString source)
|
||||
|
||||
if (source.startsWith(QString("quotes/percpricechg"))) {
|
||||
QVariantHash data = extQuotes->itemByTagNumber(index(source))->run();
|
||||
foreach(QString key, data.keys()) values[key] = data[key];
|
||||
foreach (QString key, data.keys())
|
||||
values[key] = data[key];
|
||||
}
|
||||
QString key = QString(source).remove(QString("quotes/"));
|
||||
return values[key];
|
||||
@ -65,55 +66,73 @@ QVariantMap QuotesSource::initialData(QString source) const
|
||||
if (source.startsWith(QString("quotes/askchg"))) {
|
||||
data[QString("min")] = 0.0;
|
||||
data[QString("max")] = 0.0;
|
||||
data[QString("name")] = QString("Absolute ask changes for '%1'").arg(extQuotes->itemByTagNumber(ind)->uniq());
|
||||
data[QString("name")]
|
||||
= QString("Absolute ask changes for '%1'")
|
||||
.arg(extQuotes->itemByTagNumber(ind)->uniq());
|
||||
data[QString("type")] = QString("double");
|
||||
data[QString("units")] = QString("");
|
||||
} else if (source.startsWith(QString("quotes/ask"))) {
|
||||
data[QString("min")] = 0.0;
|
||||
data[QString("max")] = 0.0;
|
||||
data[QString("name")] = QString("Ask for '%1'").arg(extQuotes->itemByTagNumber(ind)->uniq());
|
||||
data[QString("name")]
|
||||
= QString("Ask for '%1'")
|
||||
.arg(extQuotes->itemByTagNumber(ind)->uniq());
|
||||
data[QString("type")] = QString("double");
|
||||
data[QString("units")] = QString("");
|
||||
} else if (source.startsWith(QString("quotes/percaskchg"))) {
|
||||
data[QString("min")] = -100.0;
|
||||
data[QString("max")] = 100.0;
|
||||
data[QString("name")] = QString("Ask changes for '%1'").arg(extQuotes->itemByTagNumber(ind)->uniq());
|
||||
data[QString("name")]
|
||||
= QString("Ask changes for '%1'")
|
||||
.arg(extQuotes->itemByTagNumber(ind)->uniq());
|
||||
data[QString("type")] = QString("double");
|
||||
data[QString("units")] = QString("");
|
||||
} else if (source.startsWith(QString("quotes/bidchg"))) {
|
||||
data[QString("min")] = 0.0;
|
||||
data[QString("max")] = 0.0;
|
||||
data[QString("name")] = QString("Absolute bid changes for '%1'").arg(extQuotes->itemByTagNumber(ind)->uniq());
|
||||
data[QString("name")]
|
||||
= QString("Absolute bid changes for '%1'")
|
||||
.arg(extQuotes->itemByTagNumber(ind)->uniq());
|
||||
data[QString("type")] = QString("double");
|
||||
data[QString("units")] = QString("");
|
||||
} else if (source.startsWith(QString("quotes/bid"))) {
|
||||
data[QString("min")] = 0.0;
|
||||
data[QString("max")] = 0.0;
|
||||
data[QString("name")] = QString("Bid for '%1'").arg(extQuotes->itemByTagNumber(ind)->uniq());
|
||||
data[QString("name")]
|
||||
= QString("Bid for '%1'")
|
||||
.arg(extQuotes->itemByTagNumber(ind)->uniq());
|
||||
data[QString("type")] = QString("double");
|
||||
data[QString("units")] = QString("");
|
||||
} else if (source.startsWith(QString("quotes/percbidchg"))) {
|
||||
data[QString("min")] = -100.0;
|
||||
data[QString("max")] = 100.0;
|
||||
data[QString("name")] = QString("Bid changes for '%1'").arg(extQuotes->itemByTagNumber(ind)->uniq());
|
||||
data[QString("name")]
|
||||
= QString("Bid changes for '%1'")
|
||||
.arg(extQuotes->itemByTagNumber(ind)->uniq());
|
||||
data[QString("type")] = QString("double");
|
||||
data[QString("units")] = QString("");
|
||||
} else if (source.startsWith(QString("quotes/pricechg"))) {
|
||||
data[QString("min")] = 0.0;
|
||||
data[QString("max")] = 0.0;
|
||||
data[QString("name")] = QString("Absolute prie changes for '%1'").arg(extQuotes->itemByTagNumber(ind)->uniq());
|
||||
data[QString("name")]
|
||||
= QString("Absolute prie changes for '%1'")
|
||||
.arg(extQuotes->itemByTagNumber(ind)->uniq());
|
||||
data[QString("type")] = QString("double");
|
||||
data[QString("units")] = QString("");
|
||||
} else if (source.startsWith(QString("quotes/price"))) {
|
||||
data[QString("min")] = 0.0;
|
||||
data[QString("max")] = 0.0;
|
||||
data[QString("name")] = QString("Price for '%1'").arg(extQuotes->itemByTagNumber(ind)->uniq());
|
||||
data[QString("name")]
|
||||
= QString("Price for '%1'")
|
||||
.arg(extQuotes->itemByTagNumber(ind)->uniq());
|
||||
data[QString("type")] = QString("double");
|
||||
data[QString("units")] = QString("");
|
||||
} else if (source.startsWith(QString("quotes/percpricechg"))) {
|
||||
data[QString("min")] = -100.0;
|
||||
data[QString("max")] = 100.0;
|
||||
data[QString("name")] = QString("Price changes for '%1'").arg(extQuotes->itemByTagNumber(ind)->uniq());
|
||||
data[QString("name")]
|
||||
= QString("Price changes for '%1'")
|
||||
.arg(extQuotes->itemByTagNumber(ind)->uniq());
|
||||
data[QString("type")] = QString("double");
|
||||
data[QString("units")] = QString("");
|
||||
}
|
||||
@ -135,16 +154,20 @@ QStringList QuotesSource::getSources()
|
||||
qCDebug(LOG_ESM);
|
||||
|
||||
QStringList sources;
|
||||
foreach(ExtQuotes *item, extQuotes->activeItems()) {
|
||||
foreach (ExtQuotes *item, extQuotes->activeItems()) {
|
||||
sources.append(QString("quotes/%1").arg(item->tag(QString("ask"))));
|
||||
sources.append(QString("quotes/%1").arg(item->tag(QString("askchg"))));
|
||||
sources.append(QString("quotes/%1").arg(item->tag(QString("percaskchg"))));
|
||||
sources.append(
|
||||
QString("quotes/%1").arg(item->tag(QString("percaskchg"))));
|
||||
sources.append(QString("quotes/%1").arg(item->tag(QString("bid"))));
|
||||
sources.append(QString("quotes/%1").arg(item->tag(QString("bidchg"))));
|
||||
sources.append(QString("quotes/%1").arg(item->tag(QString("percbidchg"))));
|
||||
sources.append(
|
||||
QString("quotes/%1").arg(item->tag(QString("percbidchg"))));
|
||||
sources.append(QString("quotes/%1").arg(item->tag(QString("price"))));
|
||||
sources.append(QString("quotes/%1").arg(item->tag(QString("pricechg"))));
|
||||
sources.append(QString("quotes/%1").arg(item->tag(QString("percpricechg"))));
|
||||
sources.append(
|
||||
QString("quotes/%1").arg(item->tag(QString("pricechg"))));
|
||||
sources.append(
|
||||
QString("quotes/%1").arg(item->tag(QString("percpricechg"))));
|
||||
}
|
||||
|
||||
return sources;
|
||||
|
@ -33,7 +33,7 @@ public:
|
||||
virtual ~QuotesSource();
|
||||
QVariant data(QString source);
|
||||
QVariantMap initialData(QString source) const;
|
||||
void run() {};
|
||||
void run(){};
|
||||
QStringList sources() const;
|
||||
|
||||
private:
|
||||
|
@ -30,7 +30,7 @@ public:
|
||||
virtual ~UpdateSource();
|
||||
QVariant data(QString source);
|
||||
QVariantMap initialData(QString source) const;
|
||||
void run() {};
|
||||
void run(){};
|
||||
QStringList sources() const;
|
||||
};
|
||||
|
||||
|
@ -59,7 +59,9 @@ QVariantMap UpgradeSource::initialData(QString source) const
|
||||
QVariantMap data;
|
||||
data[QString("min")] = QString("");
|
||||
data[QString("max")] = QString("");
|
||||
data[QString("name")] = QString("Package manager '%1' metadata").arg(extUpgrade->itemByTagNumber(index(source))->uniq());
|
||||
data[QString("name")]
|
||||
= QString("Package manager '%1' metadata")
|
||||
.arg(extUpgrade->itemByTagNumber(index(source))->uniq());
|
||||
data[QString("type")] = QString("QString");
|
||||
data[QString("units")] = QString("");
|
||||
|
||||
@ -80,8 +82,9 @@ QStringList UpgradeSource::getSources()
|
||||
qCDebug(LOG_ESM);
|
||||
|
||||
QStringList sources;
|
||||
foreach(ExtUpgrade *item, extUpgrade->activeItems())
|
||||
sources.append(QString("upgrade/%1").arg(item->tag(QString("pkgcount"))));
|
||||
foreach (ExtUpgrade *item, extUpgrade->activeItems())
|
||||
sources.append(
|
||||
QString("upgrade/%1").arg(item->tag(QString("pkgcount"))));
|
||||
|
||||
return sources;
|
||||
}
|
||||
|
@ -33,7 +33,7 @@ public:
|
||||
virtual ~UpgradeSource();
|
||||
QVariant data(QString source);
|
||||
QVariantMap initialData(QString source) const;
|
||||
void run() {};
|
||||
void run(){};
|
||||
QStringList sources() const;
|
||||
|
||||
private:
|
||||
|
@ -48,7 +48,8 @@ QVariant WeatherSource::data(QString source)
|
||||
|
||||
if (source.startsWith(QString("weather/weatherId"))) {
|
||||
QVariantHash data = extWeather->itemByTagNumber(index(source))->run();
|
||||
foreach(QString key, data.keys()) values[key] = data[key];
|
||||
foreach (QString key, data.keys())
|
||||
values[key] = data[key];
|
||||
}
|
||||
QString key = QString(source).remove(QString("weather/"));
|
||||
return values[key];
|
||||
@ -65,31 +66,41 @@ QVariantMap WeatherSource::initialData(QString source) const
|
||||
if (source.startsWith(QString("weather/weatherId"))) {
|
||||
data[QString("min")] = 0;
|
||||
data[QString("max")] = 1000;
|
||||
data[QString("name")] = QString("Numeric weather ID for '%1'").arg(extWeather->itemByTagNumber(ind)->uniq());
|
||||
data[QString("name")]
|
||||
= QString("Numeric weather ID for '%1'")
|
||||
.arg(extWeather->itemByTagNumber(ind)->uniq());
|
||||
data[QString("type")] = QString("integer");
|
||||
data[QString("units")] = QString("");
|
||||
} else if (source.startsWith(QString("weather/weather"))) {
|
||||
data[QString("min")] = QString("");
|
||||
data[QString("max")] = QString("");
|
||||
data[QString("name")] = QString("ID string map for '%1'").arg(extWeather->itemByTagNumber(ind)->uniq());
|
||||
data[QString("name")]
|
||||
= QString("ID string map for '%1'")
|
||||
.arg(extWeather->itemByTagNumber(ind)->uniq());
|
||||
data[QString("type")] = QString("QString");
|
||||
data[QString("units")] = QString("");
|
||||
} else if (source.startsWith(QString("weather/humidity"))) {
|
||||
data[QString("min")] = 0;
|
||||
data[QString("max")] = 100;
|
||||
data[QString("name")] = QString("Humidity for '%1'").arg(extWeather->itemByTagNumber(ind)->uniq());
|
||||
data[QString("name")]
|
||||
= QString("Humidity for '%1'")
|
||||
.arg(extWeather->itemByTagNumber(ind)->uniq());
|
||||
data[QString("type")] = QString("integer");
|
||||
data[QString("units")] = QString("%");
|
||||
} else if (source.startsWith(QString("weather/pressure"))) {
|
||||
data[QString("min")] = 0;
|
||||
data[QString("max")] = 0;
|
||||
data[QString("name")] = QString("Atmospheric pressure for '%1'").arg(extWeather->itemByTagNumber(ind)->uniq());
|
||||
data[QString("name")]
|
||||
= QString("Atmospheric pressure for '%1'")
|
||||
.arg(extWeather->itemByTagNumber(ind)->uniq());
|
||||
data[QString("type")] = QString("integer");
|
||||
data[QString("units")] = QString("hPa");
|
||||
} else if (source.startsWith(QString("weather/temperature"))) {
|
||||
data[QString("min")] = 0.0;
|
||||
data[QString("max")] = 0.0;
|
||||
data[QString("name")] = QString("Temperature for '%1'").arg(extWeather->itemByTagNumber(ind)->uniq());
|
||||
data[QString("name")]
|
||||
= QString("Temperature for '%1'")
|
||||
.arg(extWeather->itemByTagNumber(ind)->uniq());
|
||||
data[QString("type")] = QString("float");
|
||||
data[QString("units")] = QString("°C");
|
||||
}
|
||||
@ -111,12 +122,17 @@ QStringList WeatherSource::getSources()
|
||||
qCDebug(LOG_ESM);
|
||||
|
||||
QStringList sources;
|
||||
foreach(ExtWeather *item, extWeather->activeItems()) {
|
||||
sources.append(QString("weather/%1").arg(item->tag(QString("weatherId"))));
|
||||
sources.append(QString("weather/%1").arg(item->tag(QString("weather"))));
|
||||
sources.append(QString("weather/%1").arg(item->tag(QString("humidity"))));
|
||||
sources.append(QString("weather/%1").arg(item->tag(QString("pressure"))));
|
||||
sources.append(QString("weather/%1").arg(item->tag(QString("temperature"))));
|
||||
foreach (ExtWeather *item, extWeather->activeItems()) {
|
||||
sources.append(
|
||||
QString("weather/%1").arg(item->tag(QString("weatherId"))));
|
||||
sources.append(
|
||||
QString("weather/%1").arg(item->tag(QString("weather"))));
|
||||
sources.append(
|
||||
QString("weather/%1").arg(item->tag(QString("humidity"))));
|
||||
sources.append(
|
||||
QString("weather/%1").arg(item->tag(QString("pressure"))));
|
||||
sources.append(
|
||||
QString("weather/%1").arg(item->tag(QString("temperature"))));
|
||||
}
|
||||
|
||||
return sources;
|
||||
|
@ -33,7 +33,7 @@ public:
|
||||
virtual ~WeatherSource();
|
||||
QVariant data(QString source);
|
||||
QVariantMap initialData(QString source) const;
|
||||
void run() {};
|
||||
void run(){};
|
||||
QStringList sources() const;
|
||||
|
||||
private:
|
||||
|
@ -4,16 +4,16 @@ find_package(Gettext REQUIRED)
|
||||
# main qt libraries
|
||||
find_package(Qt5 5.4.0 REQUIRED COMPONENTS Core DBus Network Qml Widgets)
|
||||
add_definitions(
|
||||
${Qt5Core_DEFINITIONS} ${Qt5DBus_DEFINITIONS} ${Qt5Network_DEFINITIONS}
|
||||
${Qt5Qml_DEFINITIONS} ${Qt5Widgets_DEFINITIONS}
|
||||
${Qt5Core_DEFINITIONS} ${Qt5DBus_DEFINITIONS} ${Qt5Network_DEFINITIONS}
|
||||
${Qt5Qml_DEFINITIONS} ${Qt5Widgets_DEFINITIONS}
|
||||
)
|
||||
set(Qt_INCLUDE
|
||||
${Qt5Core_INCLUDE_DIRS} ${Qt5DBus_INCLUDE_DIRS} ${Qt5Network_INCLUDE_DIRS}
|
||||
${Qt5Qml_INCLUDE_DIRS} ${Qt5Widgets_INCLUDE_DIRS}
|
||||
${Qt5Core_INCLUDE_DIRS} ${Qt5DBus_INCLUDE_DIRS} ${Qt5Network_INCLUDE_DIRS}
|
||||
${Qt5Qml_INCLUDE_DIRS} ${Qt5Widgets_INCLUDE_DIRS}
|
||||
)
|
||||
set(Qt_LIBRARIES
|
||||
${Qt5Core_LIBRARIES} ${Qt5DBus_LIBRARIES} ${Qt5Network_LIBRARIES}
|
||||
${Qt5Qml_LIBRARIES} ${Qt5Widgets_LIBRARIES}
|
||||
${Qt5Core_LIBRARIES} ${Qt5DBus_LIBRARIES} ${Qt5Network_LIBRARIES}
|
||||
${Qt5Qml_LIBRARIES} ${Qt5Widgets_LIBRARIES}
|
||||
)
|
||||
|
||||
# kf5 libraries
|
||||
|
@ -1,10 +1,10 @@
|
||||
# generators
|
||||
if(BUILD_DEB_PACKAGE)
|
||||
if (BUILD_DEB_PACKAGE)
|
||||
set(CPACK_GENERATOR ${CPACK_GENERATOR} "DEB")
|
||||
endif()
|
||||
if(BUILD_RPM_PACKAGE)
|
||||
endif ()
|
||||
if (BUILD_RPM_PACKAGE)
|
||||
set(CPACK_GENERATOR ${CPACK_GENERATOR} "RPM")
|
||||
endif()
|
||||
endif ()
|
||||
|
||||
# build properties
|
||||
set(CPACK_PACKAGING_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}")
|
||||
@ -32,6 +32,6 @@ set(CPACK_RPM_PACKAGE_REQUIRES "plasma-framework")
|
||||
set(CPACK_RPM_PACKAGE_SUGGESTS "mpd, smartmontools")
|
||||
set(CPACK_RPM_PACKAGE_URL "https://arcanis.name/projects/awesome-widgets")
|
||||
|
||||
if(BUILD_DEB_PACKAGE OR BUILD_RPM_PACKAGE)
|
||||
if (BUILD_DEB_PACKAGE OR BUILD_RPM_PACKAGE)
|
||||
include(CPack)
|
||||
endif()
|
||||
endif ()
|
||||
|
@ -4,26 +4,26 @@ set(SND_MO_NAME plasma_applet_org.kde.plasma.desktoppanel.mo)
|
||||
file(GLOB _po_files *.po)
|
||||
set(_gmoFiles)
|
||||
|
||||
foreach(_current_PO_FILE ${_po_files})
|
||||
foreach (_current_PO_FILE ${_po_files})
|
||||
get_filename_component(_lang ${_current_PO_FILE} NAME_WE)
|
||||
set(_gmoFile ${CMAKE_CURRENT_BINARY_DIR}/${_lang}.gmo)
|
||||
add_custom_command(
|
||||
OUTPUT ${_gmoFile}
|
||||
COMMAND ${GETTEXT_MSGFMT_EXECUTABLE} -o ${_gmoFile} ${_current_PO_FILE}
|
||||
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
|
||||
DEPENDS ${_current_PO_FILE}
|
||||
OUTPUT ${_gmoFile}
|
||||
COMMAND ${GETTEXT_MSGFMT_EXECUTABLE} -o ${_gmoFile} ${_current_PO_FILE}
|
||||
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
|
||||
DEPENDS ${_current_PO_FILE}
|
||||
)
|
||||
|
||||
install(
|
||||
FILES ${CMAKE_CURRENT_BINARY_DIR}/${_lang}.gmo
|
||||
DESTINATION ${LOCALE_INSTALL_DIR}/${_lang}/LC_MESSAGES/
|
||||
RENAME ${MO_NAME}
|
||||
FILES ${CMAKE_CURRENT_BINARY_DIR}/${_lang}.gmo
|
||||
DESTINATION ${LOCALE_INSTALL_DIR}/${_lang}/LC_MESSAGES/
|
||||
RENAME ${MO_NAME}
|
||||
)
|
||||
install(
|
||||
FILES ${CMAKE_CURRENT_BINARY_DIR}/${_lang}.gmo
|
||||
DESTINATION ${LOCALE_INSTALL_DIR}/${_lang}/LC_MESSAGES/
|
||||
RENAME ${SND_MO_NAME}
|
||||
FILES ${CMAKE_CURRENT_BINARY_DIR}/${_lang}.gmo
|
||||
DESTINATION ${LOCALE_INSTALL_DIR}/${_lang}/LC_MESSAGES/
|
||||
RENAME ${SND_MO_NAME}
|
||||
)
|
||||
list(APPEND _gmoFiles ${_gmoFile})
|
||||
endforeach(_current_PO_FILE)
|
||||
endforeach (_current_PO_FILE)
|
||||
add_custom_target(aw_pofiles ALL DEPENDS ${_gmoFiles})
|
||||
|
@ -1,9 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# This code is used to check source files with cppcheck
|
||||
|
||||
cppcheck --enable=all \
|
||||
--std=c++11 \
|
||||
--verbose \
|
||||
--quiet \
|
||||
../sources 2>&1 | grep -v '3rdparty'
|
@ -1,10 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# This script will check the source code by using clang-format with required arguments.
|
||||
# The template comes from https://gist.github.com/Uflex/7086827
|
||||
# More details may be found here http://clang.llvm.org/docs/ClangFormatStyleOptions.html
|
||||
|
||||
clang-format -i \
|
||||
-style=file \
|
||||
$(find ../sources -not -path '*3rdparty*' \
|
||||
-and \( -name '*.cpp' -or -name '*.h' \))
|
Loading…
Reference in New Issue
Block a user