diff options
| author | ATMDA <atdma2600@gmail.com> | 2025-11-09 21:43:51 -0500 |
|---|---|---|
| committer | ATMDA <atdma2600@gmail.com> | 2025-11-09 21:43:51 -0500 |
| commit | d8de7c7e4b1b57470297dc238b210670f87c23ba (patch) | |
| tree | bd0a600ab3927db2b0f8d1d531818425dd2f56c3 /modules/controlcenter/network/Details.qml | |
| parent | fix: panels (i'm debugging) (diff) | |
| download | caelestia-shell-d8de7c7e4b1b57470297dc238b210670f87c23ba.tar.gz caelestia-shell-d8de7c7e4b1b57470297dc238b210670f87c23ba.tar.bz2 caelestia-shell-d8de7c7e4b1b57470297dc238b210670f87c23ba.zip | |
controlcenter: wifi passphrase input
fix: dependability issues with nmcli
Diffstat (limited to 'modules/controlcenter/network/Details.qml')
| -rw-r--r-- | modules/controlcenter/network/Details.qml | 30 |
1 files changed, 25 insertions, 5 deletions
diff --git a/modules/controlcenter/network/Details.qml b/modules/controlcenter/network/Details.qml index 86164f1..19e011f 100644 --- a/modules/controlcenter/network/Details.qml +++ b/modules/controlcenter/network/Details.qml @@ -79,17 +79,37 @@ Item { checked: root.network?.active ?? false toggle.onToggled: { if (checked) { - if (root.network.isSecure) { - // TODO: Show password dialog - root.session.network.showPasswordDialog = true; - root.session.network.pendingNetwork = root.network; + // If already connected to a different network, disconnect first + if (Network.active && Network.active.ssid !== root.network.ssid) { + Network.disconnectFromNetwork(); + // Wait a moment before connecting to new network + Qt.callLater(() => { + connectToNetwork(); + }); } else { - Network.connectToNetwork(root.network.ssid, ""); + connectToNetwork(); } } else { Network.disconnectFromNetwork(); } } + + function connectToNetwork(): void { + if (root.network.isSecure) { + // Try connecting without password first (in case it's saved) + Network.connectToNetworkWithPasswordCheck( + root.network.ssid, + root.network.isSecure, + () => { + // Callback: connection failed, show password dialog + root.session.network.showPasswordDialog = true; + root.session.network.pendingNetwork = root.network; + } + ); + } else { + Network.connectToNetwork(root.network.ssid, ""); + } + } } } } |