diff --git a/resources/SettingsTab.qml b/resources/SettingsTab.qml index 1f2992562..e62cb42a8 100644 --- a/resources/SettingsTab.qml +++ b/resources/SettingsTab.qml @@ -11,22 +11,6 @@ import SwiftConsole 1.0 MainTab { id: settingsTab - function selectedRow() { - var rowIdx = settingsTable.selectedRowIdx; - if (rowIdx < 0) - return ; - - return settingsTable.table[settingsTable.rowOffsets[rowIdx]]; - } - - function selectedRowField(name) { - var row = selectedRow(); - if (!row) - return ""; - - return row[name] || ""; - } - function autoSurveyDialogText() { var text = "This will set the Surveyed Position section to the mean position of up to the last 1000 position solutions. "; text += "The fields that will be auto-populated are: \n\n"; @@ -156,12 +140,8 @@ MainTab { SettingsTabComponents.SettingsTable { id: settingsTable + showExpert: showAdvancedButton.checked SplitView.minimumWidth: Constants.settingsTable.minimumWidth - onSelectedRowIdxChanged: { - if (!!selectedRow()) - settingsPane.selectedRow = selectedRow(); - - } } ColumnLayout { @@ -255,7 +235,7 @@ MainTab { SwiftButton { id: autoSurveyButton - property bool buttonEnabled: (selectedRowField("group") === "surveyed_position") + property bool buttonEnabled: (settingsPane.selectedRowField("group") === "surveyed_position") Layout.columnSpan: 1 Layout.rowSpan: 1 @@ -298,6 +278,8 @@ MainTab { } SmallCheckBox { + id: showAdvancedButton + Layout.columnSpan: 1 Layout.rowSpan: 1 Layout.preferredWidth: parent.colWidth @@ -308,14 +290,6 @@ MainTab { font.pointSize: refreshButton.font.pointSize font.family: Constants.fontFamily font.bold: false - onClicked: { - if (this.enabled) { - this.enabled = false; - settingsTable.showExpert = checked; - settingsTable.selectedRowIdx = -1; - this.enabled = true; - } - } } } @@ -330,12 +304,20 @@ MainTab { SettingsTabComponents.SettingsPane { id: settingsPane + function selectedRow() { + var rowIdx = settingsTable.selectedRowIdx; + if (rowIdx < 0) + return ; + + return settingsTable.table[settingsTable.rowOffsets[rowIdx]]; + } + Layout.rightMargin: 10 Layout.fillHeight: true Layout.fillWidth: true Layout.alignment: Qt.AlignLeft | Qt.AlignTop visible: { - var row = settingsTab.selectedRow(); + var row = this.selectedRow(); if (row && row.hasOwnProperty("valueOnDevice")) return true; else diff --git a/resources/SettingsTabComponents/SettingsPane.qml b/resources/SettingsTabComponents/SettingsPane.qml index a984344b4..ac051ae83 100644 --- a/resources/SettingsTabComponents/SettingsPane.qml +++ b/resources/SettingsTabComponents/SettingsPane.qml @@ -7,23 +7,24 @@ import SwiftConsole 1.0 Rectangle { id: settingsPane - property var selectedRow property var floatValidator property var intValidator property var stringValidator function shouldShowField(name) { - if (!selectedRow) + let row = settingsPane.selectedRow(); + if (!row) return false; - return !!selectedRow[name]; + return !!row[name]; } function selectedRowField(name) { - if (!selectedRow) + let row = settingsPane.selectedRow(); + if (!row) return ""; - return selectedRow[name] || ""; + return row[name] || ""; } clip: true diff --git a/resources/SettingsTabComponents/SettingsTable.qml b/resources/SettingsTabComponents/SettingsTable.qml index e9ee3f3fc..af5c52694 100644 --- a/resources/SettingsTabComponents/SettingsTable.qml +++ b/resources/SettingsTabComponents/SettingsTable.qml @@ -17,6 +17,10 @@ Rectangle { property bool settingsHealthy: false property real mouse_x: 0 + function clearTableModel() { + tableView.model.clear(); + } + function isHeader(entry) { return !entry.hasOwnProperty("name"); } @@ -53,10 +57,10 @@ Rectangle { } onVisibleChanged: { - if (visible && selectedRowIdx == -1) { - selectedRowIdx = 1; - tableView.focus = true; - } + if (visible) + clearTableModel(); + else + selectedRowIdx = -1; } Keys.onUpPressed: { let cellDecrease = 1; @@ -247,6 +251,7 @@ Rectangle { } settingsHealthy = true; if (lastShowExpert != showExpert) { + tableView._currentSelectedIndex = -1; tableView.model.clear(); rowOffsets = { }; diff --git a/resources/TableComponents/SwiftTableView.qml b/resources/TableComponents/SwiftTableView.qml index d5a8118c2..b62e0fd41 100644 --- a/resources/TableComponents/SwiftTableView.qml +++ b/resources/TableComponents/SwiftTableView.qml @@ -48,6 +48,11 @@ TableView { id: _verticalScrollBar policy: ScrollBar.AlwaysOn + onSizeChanged: { + if (position + size > 1) + position = 1 - size; + + } } delegate: Rectangle {