mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2026-01-24 21:42:51 -05:00
net: fix binding loop
This commit is contained in:
@@ -439,6 +439,34 @@ Rectangle {
|
|||||||
|
|
||||||
property var frozenNetworks: []
|
property var frozenNetworks: []
|
||||||
property bool menuOpen: false
|
property bool menuOpen: false
|
||||||
|
property var sortedNetworks: {
|
||||||
|
const ssid = NetworkService.currentWifiSSID;
|
||||||
|
const networks = NetworkService.wifiNetworks;
|
||||||
|
const pins = SettingsData.wifiNetworkPins || {};
|
||||||
|
const pinnedSSID = pins["preferredWifi"];
|
||||||
|
|
||||||
|
let sorted = [...networks];
|
||||||
|
sorted.sort((a, b) => {
|
||||||
|
if (a.ssid === pinnedSSID && b.ssid !== pinnedSSID)
|
||||||
|
return -1;
|
||||||
|
if (b.ssid === pinnedSSID && a.ssid !== pinnedSSID)
|
||||||
|
return 1;
|
||||||
|
if (a.ssid === ssid)
|
||||||
|
return -1;
|
||||||
|
if (b.ssid === ssid)
|
||||||
|
return 1;
|
||||||
|
return b.signal - a.signal;
|
||||||
|
});
|
||||||
|
return sorted;
|
||||||
|
}
|
||||||
|
onSortedNetworksChanged: {
|
||||||
|
if (!menuOpen)
|
||||||
|
frozenNetworks = sortedNetworks;
|
||||||
|
}
|
||||||
|
onMenuOpenChanged: {
|
||||||
|
if (menuOpen)
|
||||||
|
frozenNetworks = sortedNetworks;
|
||||||
|
}
|
||||||
|
|
||||||
Column {
|
Column {
|
||||||
id: wifiColumn
|
id: wifiColumn
|
||||||
@@ -468,32 +496,7 @@ Rectangle {
|
|||||||
|
|
||||||
Repeater {
|
Repeater {
|
||||||
model: ScriptModel {
|
model: ScriptModel {
|
||||||
values: {
|
values: wifiContent.menuOpen ? wifiContent.frozenNetworks : wifiContent.sortedNetworks
|
||||||
const ssid = NetworkService.currentWifiSSID;
|
|
||||||
const networks = NetworkService.wifiNetworks;
|
|
||||||
const pins = SettingsData.wifiNetworkPins || {};
|
|
||||||
const pinnedSSID = pins["preferredWifi"];
|
|
||||||
|
|
||||||
let sorted = [...networks];
|
|
||||||
sorted.sort((a, b) => {
|
|
||||||
// Pinned network first
|
|
||||||
if (a.ssid === pinnedSSID && b.ssid !== pinnedSSID)
|
|
||||||
return -1;
|
|
||||||
if (b.ssid === pinnedSSID && a.ssid !== pinnedSSID)
|
|
||||||
return 1;
|
|
||||||
// Then currently connected
|
|
||||||
if (a.ssid === ssid)
|
|
||||||
return -1;
|
|
||||||
if (b.ssid === ssid)
|
|
||||||
return 1;
|
|
||||||
// Then by signal strength
|
|
||||||
return b.signal - a.signal;
|
|
||||||
});
|
|
||||||
if (!wifiContent.menuOpen) {
|
|
||||||
wifiContent.frozenNetworks = sorted;
|
|
||||||
}
|
|
||||||
return wifiContent.menuOpen ? wifiContent.frozenNetworks : sorted;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
delegate: Rectangle {
|
delegate: Rectangle {
|
||||||
|
|||||||
Reference in New Issue
Block a user