current status
This commit is contained in:
parent
f5ed9d0c64
commit
5b423c2ab7
|
@ -7,14 +7,10 @@
|
||||||
|
|
||||||
<group name="General">
|
<group name="General">
|
||||||
<entry name="pollingrate" type="Int">
|
<entry name="pollingrate" type="Int">
|
||||||
<default>10.0</default>
|
<default>10</default>
|
||||||
<min>2.0</min>
|
|
||||||
<max>60.0</max>
|
|
||||||
</entry>
|
</entry>
|
||||||
<entry name="batteryheight" type="Int">
|
<entry name="batteryheight" type="Int">
|
||||||
<default>8.0</default>
|
<default>8</default>
|
||||||
<min>1.0</min>
|
|
||||||
<max>10.0</max>
|
|
||||||
</entry>
|
</entry>
|
||||||
|
|
||||||
<entry name="colorEmpty" type="String">
|
<entry name="colorEmpty" type="String">
|
||||||
|
|
63
package/contents/ui/CompactRepresentation.qml
Normal file
63
package/contents/ui/CompactRepresentation.qml
Normal file
|
@ -0,0 +1,63 @@
|
||||||
|
import QtQuick 2.15
|
||||||
|
import QtQuick.Layouts 1.3
|
||||||
|
import org.kde.plasma.plasmoid 2.0
|
||||||
|
import org.kde.plasma.core 2.0 as PlasmaCore
|
||||||
|
import org.kde.kirigami 2.14 as Kirigami
|
||||||
|
|
||||||
|
import "./lib/helper.js" as Helper
|
||||||
|
|
||||||
|
Item {
|
||||||
|
Layout.minimumWidth: units.iconSizes.medium
|
||||||
|
Layout.alignment: Qt.AlignHCenter
|
||||||
|
|
||||||
|
Rectangle { // battery
|
||||||
|
id: container
|
||||||
|
anchors.fill: parent
|
||||||
|
anchors.rightMargin: 2
|
||||||
|
anchors.topMargin: 10 - batteryheight
|
||||||
|
anchors.bottomMargin: 10 - batteryheight
|
||||||
|
color: "transparent"
|
||||||
|
border.color: PlasmaCore.Theme.textColor
|
||||||
|
radius: 4
|
||||||
|
Plasmoid.toolTipMainText: "battery level: " + Helper.batteryLevel(batteryPercent)
|
||||||
|
Plasmoid.toolTipSubText: "polling rate: " + pollingrate + " seconds"
|
||||||
|
|
||||||
|
Item {
|
||||||
|
anchors.fill: parent
|
||||||
|
anchors.margins: 2
|
||||||
|
Rectangle { // battery fill
|
||||||
|
anchors.left: parent.left
|
||||||
|
anchors.top: parent.top
|
||||||
|
anchors.bottom: parent.bottom
|
||||||
|
color: Helper.interpolateColor(parseFloat("." + batteryPercent), [ colorEmpty, colorHalf, colorFull ])
|
||||||
|
width: parent.width * Math.max(0, Math.min(batteryPercent, 100)) / 100
|
||||||
|
}
|
||||||
|
Kirigami.Icon { // headphones icon
|
||||||
|
anchors.bottom: parent.bottom
|
||||||
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
|
anchors.topMargin: 1
|
||||||
|
anchors.bottomMargin: 1
|
||||||
|
source: Helper.batteryIcon(batteryPercent)
|
||||||
|
color: batteryPercent == -1 ? colorFull : PlasmaCore.Theme.textColor
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Rectangle { // battery cap
|
||||||
|
anchors.left: container.right
|
||||||
|
anchors.leftMargin: 1
|
||||||
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
|
radius: 4
|
||||||
|
height: parent.height / 3
|
||||||
|
width: 2
|
||||||
|
color: PlasmaCore.Theme.textColor
|
||||||
|
}
|
||||||
|
|
||||||
|
MouseArea {
|
||||||
|
anchors.fill: parent
|
||||||
|
onClicked: {
|
||||||
|
plasmoid.expanded = !plasmoid.expanded
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
44
package/contents/ui/FullRepresentation.qml
Normal file
44
package/contents/ui/FullRepresentation.qml
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
import QtQuick 2.15
|
||||||
|
import QtQuick.Layouts 1.3
|
||||||
|
import org.kde.plasma.plasmoid 2.0
|
||||||
|
import org.kde.plasma.core 2.0 as PlasmaCore
|
||||||
|
import org.kde.kirigami 2.14 as Kirigami
|
||||||
|
|
||||||
|
import "./lib/helper.js" as Helper
|
||||||
|
|
||||||
|
Item {
|
||||||
|
id: fullRep
|
||||||
|
|
||||||
|
Layout.preferredWidth: 250 * PlasmaCore.Units.devicePixelRatio
|
||||||
|
Layout.preferredHeight: 250 * PlasmaCore.Units.devicePixelRatio
|
||||||
|
Layout.minimumWidth: Layout.preferredWidth
|
||||||
|
Layout.maximumWidth: Layout.preferredWidth
|
||||||
|
Layout.minimumHeight: Layout.preferredHeight
|
||||||
|
Layout.maximumHeight: Layout.preferredHeight
|
||||||
|
clip: true
|
||||||
|
|
||||||
|
ColumnLayout {
|
||||||
|
id: wrapper
|
||||||
|
anchors.fill: parent
|
||||||
|
spacing: 0
|
||||||
|
|
||||||
|
RowLayout {
|
||||||
|
spacing: 0
|
||||||
|
Layout.fillWidth: true
|
||||||
|
|
||||||
|
ColumnLayout {
|
||||||
|
spacing: 0
|
||||||
|
// Items
|
||||||
|
|
||||||
|
Text {
|
||||||
|
text: "henlo"
|
||||||
|
color: PlasmaCore.Theme.textColor
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Item {
|
||||||
|
Layout.fillHeight: true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,13 +1,13 @@
|
||||||
import QtQuick 2.0
|
import QtQuick 2.0
|
||||||
import QtQuick.Layouts 1.3
|
import QtQuick.Layouts 1.3
|
||||||
import QtQuick.Controls 2.5 as QQC2
|
import org.kde.plasma.components as PlasmaComponents
|
||||||
import org.kde.plasma.core 2.0 as PlasmaCore
|
import org.kde.plasma.core 2.0 as PlasmaCore
|
||||||
import org.kde.kirigami 2.4 as Kirigami
|
import org.kde.kirigami 2.4 as Kirigami
|
||||||
import org.kde.kquickcontrols 2.0 as KQControls
|
import org.kde.kquickcontrols 2.0 as KQControls
|
||||||
|
|
||||||
import "./lib/helper.js" as Helper
|
import "./lib/helper.js" as Helper
|
||||||
|
|
||||||
QQC2.Pane {
|
PlasmaComponents.Pane {
|
||||||
id: root
|
id: root
|
||||||
|
|
||||||
property alias cfg_pollingrate: pollingrate.value
|
property alias cfg_pollingrate: pollingrate.value
|
||||||
|
@ -30,13 +30,13 @@ QQC2.Pane {
|
||||||
text: "polling rate:"
|
text: "polling rate:"
|
||||||
color: PlasmaCore.Theme.textColor
|
color: PlasmaCore.Theme.textColor
|
||||||
}
|
}
|
||||||
QQC2.Slider {
|
PlasmaComponents.Slider {
|
||||||
id: pollingrate
|
id: pollingrate
|
||||||
value: 10.0
|
value: 10
|
||||||
from: 2.0
|
from: 2
|
||||||
to: 60.0
|
to: 60
|
||||||
stepSize: 2.0
|
stepSize: 2
|
||||||
snapMode: QQC2.Slider.SnapAlways
|
snapMode: PlasmaComponents.Slider.SnapAlways
|
||||||
}
|
}
|
||||||
Text {
|
Text {
|
||||||
text: cfg_pollingrate + " seconds"
|
text: cfg_pollingrate + " seconds"
|
||||||
|
@ -48,13 +48,13 @@ QQC2.Pane {
|
||||||
text: "battery height:"
|
text: "battery height:"
|
||||||
color: PlasmaCore.Theme.textColor
|
color: PlasmaCore.Theme.textColor
|
||||||
}
|
}
|
||||||
QQC2.Slider {
|
PlasmaComponents.Slider {
|
||||||
id: batteryheight
|
id: batteryheight
|
||||||
value: 8.0
|
value: 8.0
|
||||||
from: 1.0
|
minimumValue: 1.0
|
||||||
to: 10.0
|
maximumValue: 10.0
|
||||||
stepSize: 1.0
|
stepSize: 1.0
|
||||||
snapMode: QQC2.Slider.SnapAlways
|
snapMode: PlasmaComponents.Slider.SnapAlways
|
||||||
}
|
}
|
||||||
Text {
|
Text {
|
||||||
text: cfg_batteryheight
|
text: cfg_batteryheight
|
||||||
|
|
|
@ -5,7 +5,7 @@ const batteryLevel = batteryPercent => ({
|
||||||
|
|
||||||
const batteryIcon = batteryPercent => ({
|
const batteryIcon = batteryPercent => ({
|
||||||
"-2": "action-unavailable",
|
"-2": "action-unavailable",
|
||||||
"-1": "battery-ac-adapter"
|
"-1": "reload"
|
||||||
})[batteryPercent] ?? "audio-headphones-symbolic";
|
})[batteryPercent] ?? "audio-headphones-symbolic";
|
||||||
|
|
||||||
const hex2rgb = (hex, h = hex.replace('#', '0x')) => ({ r: h >> 16 & 255, g: h >> 8 & 255, b: h & 255 });
|
const hex2rgb = (hex, h = hex.replace('#', '0x')) => ({ r: h >> 16 & 255, g: h >> 8 & 255, b: h & 255 });
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import QtQuick 2.0
|
import QtQuick 2.15
|
||||||
import QtQuick.Layouts 1.3
|
import QtQuick.Layouts 1.3
|
||||||
import org.kde.plasma.plasmoid 2.0
|
import org.kde.plasma.plasmoid 2.0
|
||||||
import org.kde.plasma.core 2.0 as PlasmaCore
|
import org.kde.plasma.core 2.0 as PlasmaCore
|
||||||
|
@ -29,51 +29,6 @@ Item {
|
||||||
}
|
}
|
||||||
|
|
||||||
Plasmoid.preferredRepresentation: Plasmoid.compactRepresentation
|
Plasmoid.preferredRepresentation: Plasmoid.compactRepresentation
|
||||||
|
Plasmoid.fullRepresentation: FullRepresentation{}
|
||||||
Plasmoid.compactRepresentation: Item {
|
Plasmoid.compactRepresentation: CompactRepresentation{}
|
||||||
Layout.minimumWidth: units.iconSizes.medium
|
|
||||||
Layout.alignment: Qt.AlignHCenter
|
|
||||||
|
|
||||||
Rectangle { // battery
|
|
||||||
id: container
|
|
||||||
anchors.fill: parent
|
|
||||||
anchors.rightMargin: 2
|
|
||||||
anchors.topMargin: 10 - batteryheight
|
|
||||||
anchors.bottomMargin: 10 - batteryheight
|
|
||||||
color: "transparent"
|
|
||||||
border.color: PlasmaCore.Theme.textColor
|
|
||||||
radius: 4
|
|
||||||
Plasmoid.toolTipMainText: "battery level: " + Helper.batteryLevel(batteryPercent)
|
|
||||||
Plasmoid.toolTipSubText: "polling rate: " + pollingrate + " seconds"
|
|
||||||
|
|
||||||
Item {
|
|
||||||
anchors.fill: parent
|
|
||||||
anchors.margins: 2
|
|
||||||
Rectangle { // battery fill
|
|
||||||
anchors.left: parent.left
|
|
||||||
anchors.top: parent.top
|
|
||||||
anchors.bottom: parent.bottom
|
|
||||||
color: Helper.interpolateColor(parseFloat("." + batteryPercent), [ colorEmpty, colorHalf, colorFull ])
|
|
||||||
width: parent.width * Math.max(0, Math.min(batteryPercent, 100)) / 100
|
|
||||||
}
|
|
||||||
Kirigami.Icon { // headphones icon
|
|
||||||
anchors.bottom: parent.bottom
|
|
||||||
anchors.verticalCenter: parent.verticalCenter
|
|
||||||
anchors.horizontalCenter: parent.horizontalCenter
|
|
||||||
anchors.topMargin: 1
|
|
||||||
anchors.bottomMargin: 1
|
|
||||||
source: Helper.batteryIcon(batteryPercent)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Rectangle { // battery cap
|
|
||||||
anchors.left: container.right
|
|
||||||
anchors.leftMargin: 1
|
|
||||||
anchors.verticalCenter: parent.verticalCenter
|
|
||||||
radius: 4
|
|
||||||
height: parent.height / 3
|
|
||||||
width: 2
|
|
||||||
color: PlasmaCore.Theme.textColor
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,15 +7,18 @@
|
||||||
"Category": "System Information",
|
"Category": "System Information",
|
||||||
"Dependencies": [
|
"Dependencies": [
|
||||||
],
|
],
|
||||||
|
"EnabledByDefault": true,
|
||||||
"Icon": "battery",
|
"Icon": "battery",
|
||||||
"Id": "org.kde.plasma.headsetcontrol-battery-widget",
|
"Id": "org.kde.plasma.headsetcontrol-battery-widget",
|
||||||
"Name": "Headset Battery Widget",
|
"Name": "Headset Battery Widget",
|
||||||
"ServiceTypes": [
|
"ServiceTypes": [
|
||||||
"Plasma/Applet"
|
"Plasma/Applet"
|
||||||
],
|
],
|
||||||
"Version": "1",
|
"Version": "1.5",
|
||||||
"Website": "https://git.lat/Flummi/headsetcontrol-battery-widget"
|
"Website": "https://git.lat/Flummi/headsetcontrol-battery-widget"
|
||||||
},
|
},
|
||||||
|
"X-Plasma-NotificationArea": true,
|
||||||
|
"X-Plasma-NotificationAreaCategory": "Hardware",
|
||||||
"X-Plasma-API": "declarativeappletscript",
|
"X-Plasma-API": "declarativeappletscript",
|
||||||
"X-Plasma-MainScript": "ui/main.qml"
|
"X-Plasma-MainScript": "ui/main.qml"
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user