|
|
|
import QtQuick 2.3
|
|
|
|
import QtQuick.Controls 1.2
|
|
|
|
import QtQuick.Controls.Styles 1.4
|
|
|
|
import QtQuick.Dialogs 1.2
|
|
|
|
|
|
|
|
import QGroundControl.FactSystem 1.0
|
|
|
|
import QGroundControl.Palette 1.0
|
|
|
|
import QGroundControl.Controls 1.0
|
|
|
|
import QGroundControl.ScreenTools 1.0
|
|
|
|
|
|
|
|
QGCTextField {
|
|
|
|
id: _textField
|
|
|
|
|
|
|
|
text: fact ? fact.valueString : ""
|
|
|
|
unitsLabel: fact ? fact.units : ""
|
|
|
|
showUnits: true
|
|
|
|
showHelp: true
|
|
|
|
|
|
|
|
property Fact fact: null
|
|
|
|
|
|
|
|
property string _validateString
|
|
|
|
|
|
|
|
// At this point all Facts are numeric
|
|
|
|
inputMethodHints: ((fact && fact.typeIsString) || ScreenTools.isiOS) ?
|
|
|
|
Qt.ImhNone : // iOS numeric keyboard has no done button, we can't use it
|
|
|
|
Qt.ImhFormattedNumbersOnly // Forces use of virtual numeric keyboard
|
|
|
|
|
|
|
|
onEditingFinished: {
|
|
|
|
if (ScreenTools.isMobile) {
|
|
|
|
// Toss focus on mobile after Done on virtual keyboard. Prevent strange interactions.
|
|
|
|
focus = false
|
|
|
|
}
|
|
|
|
if (typeof qgcView !== 'undefined' && qgcView) {
|
|
|
|
var errorString = fact.validate(text, false /* convertOnly */)
|
|
|
|
if (errorString == "") {
|
|
|
|
fact.value = text
|
|
|
|
} else {
|
|
|
|
_validateString = text
|
|
|
|
qgcView.showDialog(validationErrorDialogComponent, qsTr("Invalid Value"), qgcView.showDialogDefaultWidth, StandardButton.Save | StandardButton.Cancel)
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
fact.value = text
|
|
|
|
fact.valueChanged(fact.value)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
onHelpClicked: qgcView.showDialog(helpDialogComponent, qsTr("Value Details"), qgcView.showDialogDefaultWidth, StandardButton.Save | StandardButton.Cancel)
|
|
|
|
|
|
|
|
|
|
|
|
Component {
|
|
|
|
id: validationErrorDialogComponent
|
|
|
|
|
|
|
|
ParameterEditorDialog {
|
|
|
|
validate: true
|
|
|
|
validateValue: _validateString
|
|
|
|
fact: _textField.fact
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
Component {
|
|
|
|
id: helpDialogComponent
|
|
|
|
|
|
|
|
ParameterEditorDialog {
|
|
|
|
fact: _textField.fact
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|