2019-01-29 02:11:32 +03:00
/ * *
* Battery Buddy , a Sailfish application to prolong battery lifetime
*
* Copyright ( C ) 2019 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 CarBudget . If not , see < http: //www.gnu.org/licenses/>.
*
* Author: Matti Viljanen
* /
import QtQuick 2.0
import Sailfish . Silica 1.0
2020-03-20 23:57:59 +03:00
import "../components"
2019-01-29 02:11:32 +03:00
Page {
id: settingsPage
2020-03-20 18:26:29 +03:00
SilicaFlickable {
anchors.fill: parent
contentHeight: header . height + settingsColumn . height + Theme . horizontalPageMargin
2019-01-29 02:11:32 +03:00
2020-03-20 18:26:29 +03:00
PageHeader {
id: header
title: qsTr ( "Settings" )
2019-01-29 02:11:32 +03:00
}
2020-03-20 18:26:29 +03:00
Column {
id: settingsColumn
anchors {
top: header . bottom
left: parent . left
right: parent . right
}
spacing: Theme . paddingMedium
Label {
x: Theme . paddingLarge
text: qsTr ( "Alert settings" )
color: Theme . highlightColor
}
2020-03-20 23:57:59 +03:00
MySlider {
2020-03-20 18:26:29 +03:00
width: parent . width
label: qsTr ( "Alert interval" )
minimumValue: 60
maximumValue: 600
stepSize: 10
value: settings . interval
valueText: Math . floor ( value / 60 ) + ( value % 60 < 10 ? ":0" + value % 60 : ":" + value % 60 )
onValueChanged: settings . interval = value
}
Label {
x: Theme . paddingLarge * 2
width: parent . width - x * 2 ;
wrapMode: Text . Wrap
text: qsTr ( "Set the maximum and minimum target charge levels." )
color: Theme . primaryColor
font.pixelSize: Theme . fontSizeSmall
}
2020-03-20 23:57:59 +03:00
MySlider {
2020-03-20 21:57:06 +03:00
id: highAlertSlider
2020-03-20 18:26:29 +03:00
width: parent . width
label: qsTr ( "Charging limit" )
2020-03-20 21:57:06 +03:00
minimumValue: 10
2020-03-20 18:26:29 +03:00
maximumValue: 99
stepSize: 1
2020-03-20 21:57:06 +03:00
value: settings . highAlert
2020-03-20 18:26:29 +03:00
valueText: value + "%"
2020-03-20 23:57:59 +03:00
highlightDirection: Qt . RightToLeft
2020-03-20 18:26:29 +03:00
onValueChanged: {
2020-03-21 00:00:30 +03:00
settings . highAlert = value
2020-03-20 21:57:06 +03:00
if ( lowAlertSlider . value >= value )
lowAlertSlider . value = value - 1
2020-03-20 18:26:29 +03:00
}
}
2020-03-20 23:57:59 +03:00
MySlider {
2020-03-20 21:57:06 +03:00
id: lowAlertSlider
2020-03-20 18:26:29 +03:00
width: parent . width
label: qsTr ( "Discharging limit" )
minimumValue: 10
2020-03-20 21:57:06 +03:00
maximumValue: 99
2020-03-20 18:26:29 +03:00
stepSize: 1
2020-03-20 21:57:06 +03:00
value: settings . lowAlert
2020-03-20 18:26:29 +03:00
valueText: value + "%"
2020-03-20 21:57:06 +03:00
onValueChanged: {
2020-03-21 00:00:30 +03:00
settings . lowAlert = value
2020-03-20 21:57:06 +03:00
if ( highAlertSlider . value <= value )
highAlertSlider . value = value + 1
}
2020-03-20 18:26:29 +03:00
}
TextSwitch {
id: autoStopCharging
text: qsTr ( "Stop charging when limit reached" )
description: qsTr ( "This option stops charging when battery has reached the percentage set in Charging limit value, and resumes charging when charge has decreased below Continue charge limit value. Generally a value close to the Charging limit value is recommened, such as 80% and 75%." )
checked: settings . limitEnabled
onCheckedChanged: settings . limitEnabled = checked
}
2020-03-20 23:57:59 +03:00
MySlider {
2020-03-20 21:57:06 +03:00
id: highLimitSlider
handleVisible: enabled
width: parent . width
label: qsTr ( "Stop charging limit" )
minimumValue: 20
maximumValue: 95
stepSize: 1
2020-03-21 00:00:30 +03:00
value: settings . highLimit
2020-03-20 21:57:06 +03:00
valueText: value + "%"
2020-03-20 23:57:59 +03:00
highlightDirection: Qt . RightToLeft
2020-03-20 21:57:06 +03:00
onValueChanged: {
2020-03-21 00:00:30 +03:00
settings . highLimit = value
2020-03-20 21:57:06 +03:00
if ( lowLimitSlider . value >= value )
lowLimitSlider . value = value - 1
}
}
2020-03-20 23:57:59 +03:00
MySlider {
2020-03-20 21:57:06 +03:00
id: lowLimitSlider
2020-03-20 18:26:29 +03:00
handleVisible: enabled
width: parent . width
label: qsTr ( "Resume charging limit" )
2020-03-20 21:57:06 +03:00
minimumValue: 20
maximumValue: 95
2020-03-20 18:26:29 +03:00
stepSize: 1
2020-03-21 00:00:30 +03:00
value: settings . lowLimit
2020-03-20 18:26:29 +03:00
valueText: value + "%"
2020-03-20 21:57:06 +03:00
onValueChanged: {
2020-03-21 00:00:30 +03:00
settings . lowLimit = value
2020-03-20 21:57:06 +03:00
if ( highLimitSlider . value <= value )
highLimitSlider . value = value + 1
}
2020-03-20 18:26:29 +03:00
}
Label {
x: Theme . paddingLarge * 2
width: parent . width - x * 2 ;
wrapMode: Text . Wrap
text: qsTr ( "You can also independently stop and resume charging." )
color: Theme . primaryColor
font.pixelSize: Theme . fontSizeSmall
}
Row {
anchors {
left: parent . left
right: parent . right
}
height: button . height
Column {
width: parent . width / 2
Button {
id: button
anchors.horizontalCenter: parent . horizontalCenter
text: qsTr ( "Enable" )
2020-03-20 21:57:06 +03:00
onClicked: chargingEnabled = true
2020-03-20 18:26:29 +03:00
}
}
Column {
width: parent . width / 2
Button {
anchors.horizontalCenter: parent . horizontalCenter
text: qsTr ( "Disable" )
2020-03-20 21:57:06 +03:00
onClicked: chargingEnabled = false
2020-03-20 18:26:29 +03:00
}
}
}
Label {
x: Theme . paddingLarge
text: qsTr ( "Alert tests" )
color: Theme . highlightColor
}
Label {
x: Theme . paddingLarge * 2
width: parent . width - x * 2 ;
wrapMode: Text . Wrap
text: qsTr ( "Click the buttons to test the sound and notification." )
color: Theme . primaryColor
font.pixelSize: Theme . fontSizeSmall
}
Row {
anchors {
left: parent . left
right: parent . right
}
height: button . height
Column {
width: parent . width / 2
Button {
anchors.horizontalCenter: parent . horizontalCenter
text: qsTr ( "Charged" )
onClicked: {
alertHigh . play ( )
notification . republishTest ( )
}
}
}
Column {
width: parent . width / 2
Button {
anchors.horizontalCenter: parent . horizontalCenter
text: qsTr ( "Discharged" )
onClicked: {
alertLow . play ( )
notification . republishTest ( )
}
}
}
}
2019-01-29 02:11:32 +03:00
}
}
}