114 lines
3.6 KiB
QML
114 lines
3.6 KiB
QML
/**
|
|
* Battery Buddy, a Sailfish application to prolong battery lifetime
|
|
*
|
|
* Copyright (C) 2019-2023 Matti Viljanen
|
|
*
|
|
* Battery Buddy is free software: you can redistribute it and/or modify it under the terms of the
|
|
* GNU General Public License as published by the Free Software Foundation, either version 3 of the
|
|
* License, or (at your option) any later version.
|
|
*
|
|
* Battery Buddy is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
|
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
*
|
|
* See the GNU General Public License for more details. You should have received a copy of the GNU
|
|
* General Public License along with Battery Buddy. If not, see <http://www.gnu.org/licenses/>.
|
|
*
|
|
* Author: Matti Viljanen
|
|
*/
|
|
import QtQuick 2.6
|
|
import Sailfish.Silica 1.0
|
|
|
|
Item {
|
|
id: batteryGraph
|
|
property real borderSize: width * 0.1
|
|
property bool enableLowBatteryAnimation
|
|
property int _charge: battery.charge
|
|
|
|
height: 1.75 * width
|
|
|
|
// Timer {
|
|
// id: debugChargeAnimation
|
|
// property int newCharge: -20
|
|
// repeat: true
|
|
// running: true
|
|
// interval: 300
|
|
// onTriggered: {
|
|
// newCharge = newCharge + 5
|
|
// if(newCharge > 120)
|
|
// newCharge = -20
|
|
// _charge = newCharge < 0 ? 0 : newCharge > 100 ? 100 : newCharge
|
|
// }
|
|
// }
|
|
|
|
Timer {
|
|
id: lowChargeBlink
|
|
property int counter: 0
|
|
running: (enableLowBatteryAnimation
|
|
&& !battery.chargerConnected
|
|
&& !battery.acConnected
|
|
&& _charge <= settings.lowAlert)
|
|
repeat: true
|
|
interval: 400
|
|
onTriggered: {
|
|
counter = (counter + 1) % 5
|
|
if(counter === 0) {
|
|
batteryLevel.opacity = 0.0
|
|
restoreOpacity.start()
|
|
}
|
|
}
|
|
}
|
|
|
|
Timer {
|
|
id: restoreOpacity
|
|
running: false
|
|
repeat: false
|
|
interval: opacityAnimation.duration
|
|
onTriggered: batteryLevel.opacity = 1.0
|
|
}
|
|
|
|
Rectangle {
|
|
id: battTip
|
|
anchors.top: parent.top
|
|
anchors.horizontalCenter: parent.horizontalCenter
|
|
width: 2 * borderSize
|
|
height: 1.5 * borderSize
|
|
color: Theme.secondaryColor
|
|
radius: borderSize / 2
|
|
}
|
|
Rectangle {
|
|
id: battBody
|
|
anchors {
|
|
top: battTip.verticalCenter
|
|
bottom: parent.bottom
|
|
horizontalCenter: parent.horizontalCenter
|
|
}
|
|
width: parent.width * 0.75
|
|
color: "transparent"
|
|
border.color: Theme.secondaryColor
|
|
border.width: borderSize
|
|
radius: borderSize
|
|
|
|
Rectangle {
|
|
id: batteryLevel
|
|
anchors.horizontalCenter: parent.horizontalCenter
|
|
anchors.bottom: parent.bottom
|
|
anchors.bottomMargin: borderSize * 1.5
|
|
width: parent.width - 3 * borderSize
|
|
height: (borderSize) + ((parent.height - 4 * borderSize) * _charge / 100.0)
|
|
radius: borderSize / 2
|
|
opacity: 1.0
|
|
color: _charge >= 80 ? Theme.secondaryColor
|
|
: _charge >= 50 ? Theme.highlightFromColor("green", Theme.colorScheme)
|
|
: _charge >= 20 ? Theme.highlightFromColor("yellow", Theme.colorScheme)
|
|
: Theme.highlightFromColor("red", Theme.colorScheme)
|
|
Behavior on color {
|
|
ColorAnimation {}
|
|
}
|
|
Behavior on opacity {
|
|
NumberAnimation {
|
|
id: opacityAnimation
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|