forked from Shinonome/dots-hyprland
119 lines
3.9 KiB
QML
119 lines
3.9 KiB
QML
import qs
|
|
import qs.modules.common
|
|
import qs.modules.common.widgets
|
|
import qs.services
|
|
import qs.services.network
|
|
import QtQuick
|
|
import QtQuick.Layouts
|
|
|
|
DialogListItem {
|
|
id: root
|
|
required property WifiAccessPoint wifiNetwork
|
|
enabled: !(Network.wifiConnectTarget === root.wifiNetwork && !wifiNetwork?.active)
|
|
|
|
active: (wifiNetwork?.askingPassword || wifiNetwork?.active) ?? false
|
|
onClicked: {
|
|
Network.connectToWifiNetwork(wifiNetwork);
|
|
}
|
|
|
|
contentItem: ColumnLayout {
|
|
anchors {
|
|
fill: parent
|
|
topMargin: root.verticalPadding
|
|
bottomMargin: root.verticalPadding
|
|
leftMargin: root.horizontalPadding
|
|
rightMargin: root.horizontalPadding
|
|
}
|
|
spacing: 0
|
|
|
|
RowLayout {
|
|
// Name
|
|
spacing: 10
|
|
MaterialSymbol {
|
|
iconSize: Appearance.font.pixelSize.larger
|
|
property int strength: root.wifiNetwork?.strength ?? 0
|
|
text: strength > 80 ? "signal_wifi_4_bar" : strength > 60 ? "network_wifi_3_bar" : strength > 40 ? "network_wifi_2_bar" : strength > 20 ? "network_wifi_1_bar" : "signal_wifi_0_bar"
|
|
color: Appearance.colors.colOnSurfaceVariant
|
|
}
|
|
StyledText {
|
|
Layout.fillWidth: true
|
|
color: Appearance.colors.colOnSurfaceVariant
|
|
elide: Text.ElideRight
|
|
text: root.wifiNetwork?.ssid ?? Translation.tr("Unknown")
|
|
}
|
|
MaterialSymbol {
|
|
visible: (root.wifiNetwork?.isSecure || root.wifiNetwork?.active) ?? false
|
|
text: root.wifiNetwork?.active ? "check" : Network.wifiConnectTarget === root.wifiNetwork ? "settings_ethernet" : "lock"
|
|
iconSize: Appearance.font.pixelSize.larger
|
|
color: Appearance.colors.colOnSurfaceVariant
|
|
}
|
|
}
|
|
|
|
ColumnLayout { // Password
|
|
id: passwordPrompt
|
|
Layout.topMargin: 8
|
|
visible: root.wifiNetwork?.askingPassword ?? false
|
|
|
|
MaterialTextField {
|
|
id: passwordField
|
|
Layout.fillWidth: true
|
|
placeholderText: Translation.tr("Password")
|
|
|
|
// Password
|
|
echoMode: TextInput.Password
|
|
inputMethodHints: Qt.ImhSensitiveData
|
|
|
|
onAccepted: {
|
|
Network.changePassword(root.wifiNetwork, passwordField.text);
|
|
}
|
|
}
|
|
|
|
RowLayout {
|
|
Layout.fillWidth: true
|
|
|
|
Item {
|
|
Layout.fillWidth: true
|
|
}
|
|
|
|
DialogButton {
|
|
buttonText: Translation.tr("Cancel")
|
|
onClicked: {
|
|
root.wifiNetwork.askingPassword = false;
|
|
}
|
|
}
|
|
|
|
DialogButton {
|
|
buttonText: Translation.tr("Connect")
|
|
onClicked: {
|
|
Network.changePassword(root.wifiNetwork, passwordField.text);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
ColumnLayout { // Public wifi login page
|
|
id: publicWifiPortal
|
|
Layout.topMargin: 8
|
|
visible: (root.wifiNetwork?.active && (root.wifiNetwork?.security ?? "").trim().length === 0) ?? false
|
|
|
|
RowLayout {
|
|
DialogButton {
|
|
Layout.fillWidth: true
|
|
buttonText: Translation.tr("Open network portal")
|
|
colBackground: Appearance.colors.colLayer4
|
|
colBackgroundHover: Appearance.colors.colLayer4Hover
|
|
colRipple: Appearance.colors.colLayer4Active
|
|
onClicked: {
|
|
Network.openPublicWifiPortal()
|
|
GlobalStates.sidebarRightOpen = false
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
Item {
|
|
Layout.fillHeight: true
|
|
}
|
|
}
|
|
}
|