diff --git a/resources/SettingsTab.qml b/resources/SettingsTab.qml index d7b45fce7..11f7f0181 100644 --- a/resources/SettingsTab.qml +++ b/resources/SettingsTab.qml @@ -47,13 +47,8 @@ MainTab { SettingsTabData { id: settingsTabData - } - Timer { - interval: Utils.hzToMilliseconds(Constants.staticTimerIntervalRate) - running: true - repeat: true - onTriggered: { + function update() { settings_tab_model.fill_data(settingsTabData); if (settingsTabData.notification !== "") { settingsNotification.text = settingsTabData.notification; diff --git a/resources/SettingsTabComponents/SettingsTable.qml b/resources/SettingsTabComponents/SettingsTable.qml index a541001b4..46581cdfd 100644 --- a/resources/SettingsTabComponents/SettingsTable.qml +++ b/resources/SettingsTabComponents/SettingsTable.qml @@ -81,9 +81,7 @@ Rectangle { } onVisibleChanged: { - if (visible) - clearTableModel(); - else + if (!visible) selectedRowIdx = -1; } Keys.onUpPressed: { @@ -121,6 +119,46 @@ Rectangle { SettingsTableEntries { id: settingsTableEntries + + function update() { + settings_table_model.fill_console_points(settingsTableEntries); + var entries = settingsTableEntries.entries; + if (!entries.length) { + settingsHealthy = false; + return; + } + settingsHealthy = true; + if (lastShowExpert != showExpert) { + tableView._currentSelectedIndex = -1; + tableView.model.clear(); + rowOffsets = {}; + lastShowExpert = showExpert; + } + if (entries.length != lastEntriesLen) { + lastEntriesLen = entries.length; + tableView.model.clear(); + } + var offset = 0; + entries.forEach((entry, idx, entries) => { + var new_row; + if (!isHeader(entry)) { + if (!showExpert && entry.expert === true) { + offset++; + return; + } + new_row = row(entry); + } else { + if (!showExpert && !groupHasNonExpertSetting(entries, idx)) { + offset++; + return; + } + new_row = headerRow(entry); + } + rowOffsets[idx - offset] = idx; + tableView.model.setRow(idx - offset, new_row); + }); + tableView.forceLayout(); + } } ColumnLayout { @@ -257,52 +295,5 @@ Rectangle { } } } - - Timer { - interval: Utils.hzToMilliseconds(Constants.staticTableTimerIntervalRate) - running: parent.visible - repeat: true - onTriggered: { - settings_table_model.fill_console_points(settingsTableEntries); - var entries = settingsTableEntries.entries; - if (!entries.length) { - settingsHealthy = false; - return; - } - settingsHealthy = true; - if (lastShowExpert != showExpert) { - tableView._currentSelectedIndex = -1; - tableView.model.clear(); - rowOffsets = {}; - lastShowExpert = showExpert; - } - if (entries.length != lastEntriesLen) { - lastEntriesLen = entries.length; - tableView.model.clear(); - } - var offset = 0; - entries.forEach((entry, idx, entries) => { - var new_row; - if (!isHeader(entry)) { - if (showExpert || entry.expert === false) { - new_row = row(entry); - } else { - offset++; - return; - } - } else { - if (showExpert || groupHasNonExpertSetting(entries, idx)) { - new_row = headerRow(entry); - } else { - offset++; - return; - } - } - rowOffsets[idx - offset] = idx; - tableView.model.setRow(idx - offset, new_row); - }); - tableView.forceLayout(); - } - } } } diff --git a/swiftnav_console/settings_tab.py b/swiftnav_console/settings_tab.py index 947228568..390e00af9 100644 --- a/swiftnav_console/settings_tab.py +++ b/swiftnav_console/settings_tab.py @@ -86,6 +86,7 @@ def handle_data_updated(self) -> None: self.settings_import_status = SETTINGS_IMPORT_STATUS[0] self.settings_ins = SETTINGS_INS[0] self.settings_notification = SETTINGS_NOTIFICATION[0] + self.update() # type: ignore def get_import_status(self) -> str: return self._import_status @@ -166,6 +167,7 @@ def post_data_update(cls, update_data: Dict[str, Any]) -> None: @Slot() # type: ignore def handle_data_updated(self) -> None: self.settings_table = SETTINGS_TABLE[0] + self.update() # type: ignore def get_entries(self) -> List[dict]: return self._entries