diff --git a/src/QmlControls/QGCTextField.qml b/src/QmlControls/QGCTextField.qml index 7de56bb71f8..892e8256683 100644 --- a/src/QmlControls/QGCTextField.qml +++ b/src/QmlControls/QGCTextField.qml @@ -53,25 +53,31 @@ TextField { if (validationError) { validationToolTip.visible = true } + } else { + validationToolTip.visible = false } } - function showValidationError(errorString, originalValidValue = undefined) { + function showValidationError(errorString, originalValidValue = undefined, preventViewSiwtch = true) { validationToolTip.text = errorString validationToolTip.originalValidValue = originalValidValue validationToolTip.visible = true if (!validationError) { validationError = true - globals.validationErrorCount++ + if (preventViewSiwtch) { + globals.validationErrorCount++ + } } } - function clearValidationError() { + function clearValidationError(preventViewSiwtch = true) { validationToolTip.visible = false validationToolTip.originalValidValue = undefined if (validationError) { validationError = false - globals.validationErrorCount-- + if (preventViewSiwtch) { + globals.validationErrorCount-- + } } } diff --git a/src/UI/preferences/RemoteIDSettings.qml b/src/UI/preferences/RemoteIDSettings.qml index cd3ec963abe..fec1e5f346e 100644 --- a/src/UI/preferences/RemoteIDSettings.qml +++ b/src/UI/preferences/RemoteIDSettings.qml @@ -342,8 +342,6 @@ SettingsPage { SettingsGroupLayout { heading: qsTr("Operator ID") Layout.fillWidth: true - outerBorderColor: (_regionOperation === RemoteIDSettings.RegionOperation.EU || remoteIDSettings.sendOperatorID.value) ? - (_activeRID && !_remoteIDManager.operatorIDGood ? qgcPal.colorRed : defaultBorderColor) : defaultBorderColor FactCheckBoxSlider { text: qsTr("Broadcast%1").arg(isEURegion ? " (EU Required)" : "") @@ -375,12 +373,24 @@ SettingsPage { } QGCTextField { + id: operatorIDTextField Layout.preferredWidth: textFieldWidth Layout.fillWidth: true text: operatorIDFact.valueString visible: operatorIDFact.visible maximumLength: 20 // Maximum defined by Mavlink definition of OPEN_DRONE_ID_OPERATOR_ID message + property bool operatorIDInvalid: ((_regionOperation === RemoteIDSettings.RegionOperation.EU || remoteIDSettings.sendOperatorID.value) && + _activeRID && !_remoteIDManager.operatorIDGood) + + onOperatorIDInvalidChanged: { + if (operatorIDInvalid) { + operatorIDTextField.showValidationError(qsTr("Invalid Operator ID"), operatorIDFact.valueString, false /* preventViewSwitch */) + } else { + operatorIDTextField.clearValidationError(false /* preventViewSwitch */) + } + } + onTextChanged: { operatorIDFact.value = text if (_activeVehicle) {