mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2025-12-06 05:25:41 -05:00
- Dedicated view in settings - VPN profile management - Ethernet disconnection - Turn prompts into floating windows
314 lines
12 KiB
QML
314 lines
12 KiB
QML
pragma Singleton
|
|
pragma ComponentBehavior: Bound
|
|
|
|
import QtQuick
|
|
import Quickshell
|
|
|
|
Singleton {
|
|
id: root
|
|
|
|
property bool networkAvailable: activeService !== null
|
|
property string backend: activeService?.backend ?? ""
|
|
property string networkStatus: activeService?.networkStatus ?? "disconnected"
|
|
property string primaryConnection: activeService?.primaryConnection ?? ""
|
|
|
|
property string ethernetIP: activeService?.ethernetIP ?? ""
|
|
property string ethernetInterface: activeService?.ethernetInterface ?? ""
|
|
property bool ethernetConnected: activeService?.ethernetConnected ?? false
|
|
property string ethernetConnectionUuid: activeService?.ethernetConnectionUuid ?? ""
|
|
property var ethernetDevices: activeService?.ethernetDevices ?? []
|
|
|
|
property var wiredConnections: activeService?.wiredConnections ?? []
|
|
|
|
property string wifiIP: activeService?.wifiIP ?? ""
|
|
property string wifiInterface: activeService?.wifiInterface ?? ""
|
|
property bool wifiConnected: activeService?.wifiConnected ?? false
|
|
property bool wifiEnabled: activeService?.wifiEnabled ?? true
|
|
property string wifiConnectionUuid: activeService?.wifiConnectionUuid ?? ""
|
|
property string wifiDevicePath: activeService?.wifiDevicePath ?? ""
|
|
property string activeAccessPointPath: activeService?.activeAccessPointPath ?? ""
|
|
property var wifiDevices: activeService?.wifiDevices ?? []
|
|
property string wifiDeviceOverride: activeService?.wifiDeviceOverride ?? ""
|
|
property string connectingDevice: activeService?.connectingDevice ?? ""
|
|
|
|
property string currentWifiSSID: activeService?.currentWifiSSID ?? ""
|
|
property int wifiSignalStrength: activeService?.wifiSignalStrength ?? 0
|
|
property var wifiNetworks: activeService?.wifiNetworks ?? []
|
|
property var savedConnections: activeService?.savedConnections ?? []
|
|
property var ssidToConnectionName: activeService?.ssidToConnectionName ?? ({})
|
|
property var wifiSignalIcon: activeService?.wifiSignalIcon ?? "wifi_off"
|
|
|
|
property string userPreference: activeService?.userPreference ?? "auto"
|
|
property bool isConnecting: activeService?.isConnecting ?? false
|
|
property string connectingSSID: activeService?.connectingSSID ?? ""
|
|
property string connectionError: activeService?.connectionError ?? ""
|
|
|
|
property bool isScanning: activeService?.isScanning ?? false
|
|
property bool autoScan: activeService?.autoScan ?? false
|
|
|
|
property bool wifiAvailable: activeService?.wifiAvailable ?? true
|
|
property bool wifiToggling: activeService?.wifiToggling ?? false
|
|
property bool changingPreference: activeService?.changingPreference ?? false
|
|
property string targetPreference: activeService?.targetPreference ?? ""
|
|
property var savedWifiNetworks: activeService?.savedWifiNetworks ?? []
|
|
property string connectionStatus: activeService?.connectionStatus ?? ""
|
|
property string lastConnectionError: activeService?.lastConnectionError ?? ""
|
|
property bool passwordDialogShouldReopen: activeService?.passwordDialogShouldReopen ?? false
|
|
property bool autoRefreshEnabled: activeService?.autoRefreshEnabled ?? false
|
|
property string wifiPassword: activeService?.wifiPassword ?? ""
|
|
property string forgetSSID: activeService?.forgetSSID ?? ""
|
|
|
|
property string networkInfoSSID: activeService?.networkInfoSSID ?? ""
|
|
property string networkInfoDetails: activeService?.networkInfoDetails ?? ""
|
|
property bool networkInfoLoading: activeService?.networkInfoLoading ?? false
|
|
|
|
property string networkWiredInfoUUID: activeService?.networkWiredInfoUUID ?? ""
|
|
property string networkWiredInfoDetails: activeService?.networkWiredInfoDetails ?? ""
|
|
property bool networkWiredInfoLoading: activeService?.networkWiredInfoLoading ?? false
|
|
|
|
property int refCount: activeService?.refCount ?? 0
|
|
property bool stateInitialized: activeService?.stateInitialized ?? false
|
|
|
|
property bool subscriptionConnected: activeService?.subscriptionConnected ?? false
|
|
|
|
property var vpnProfiles: activeService?.vpnProfiles ?? []
|
|
property var vpnActive: activeService?.vpnActive ?? []
|
|
property bool vpnAvailable: activeService?.vpnAvailable ?? false
|
|
property bool vpnIsBusy: activeService?.vpnIsBusy ?? false
|
|
property bool vpnConnected: activeService?.vpnConnected ?? false
|
|
property string vpnActiveUuid: activeService?.activeUuid ?? ""
|
|
property string vpnActiveName: activeService?.activeName ?? ""
|
|
|
|
property string credentialsToken: activeService?.credentialsToken ?? ""
|
|
property string credentialsSSID: activeService?.credentialsSSID ?? ""
|
|
property string credentialsSetting: activeService?.credentialsSetting ?? ""
|
|
property var credentialsFields: activeService?.credentialsFields ?? []
|
|
property var credentialsHints: activeService?.credentialsHints ?? []
|
|
property string credentialsReason: activeService?.credentialsReason ?? ""
|
|
property bool credentialsRequested: activeService?.credentialsRequested ?? false
|
|
|
|
signal networksUpdated
|
|
signal connectionChanged
|
|
signal credentialsNeeded(string token, string ssid, string setting, var fields, var hints, string reason, string connType, string connName, string vpnService, var fieldsInfo)
|
|
|
|
property bool usingLegacy: false
|
|
property var activeService: null
|
|
|
|
readonly property string socketPath: Quickshell.env("DMS_SOCKET")
|
|
|
|
Component.onCompleted: {
|
|
console.info("NetworkService: Initializing...");
|
|
if (!socketPath || socketPath.length === 0) {
|
|
console.info("NetworkService: DMS_SOCKET not set, using LegacyNetworkService");
|
|
useLegacyService();
|
|
} else {
|
|
console.log("NetworkService: DMS_SOCKET found, waiting for capabilities...");
|
|
}
|
|
}
|
|
|
|
Connections {
|
|
target: DMSNetworkService
|
|
|
|
function onNetworkAvailableChanged() {
|
|
if (!activeService && DMSNetworkService.networkAvailable) {
|
|
console.info("NetworkService: Network capability detected, using DMSNetworkService");
|
|
activeService = DMSNetworkService;
|
|
usingLegacy = false;
|
|
console.info("NetworkService: Switched to DMSNetworkService, networkAvailable:", networkAvailable);
|
|
connectSignals();
|
|
} else if (!activeService && !DMSNetworkService.networkAvailable && socketPath && socketPath.length > 0) {
|
|
console.info("NetworkService: Network capability not available in DMS, using LegacyNetworkService");
|
|
useLegacyService();
|
|
}
|
|
}
|
|
}
|
|
|
|
function useLegacyService() {
|
|
activeService = LegacyNetworkService;
|
|
usingLegacy = true;
|
|
console.info("NetworkService: Switched to LegacyNetworkService, networkAvailable:", networkAvailable);
|
|
if (LegacyNetworkService.activate) {
|
|
LegacyNetworkService.activate();
|
|
}
|
|
connectSignals();
|
|
}
|
|
|
|
function connectSignals() {
|
|
if (activeService) {
|
|
if (activeService.networksUpdated) {
|
|
activeService.networksUpdated.connect(root.networksUpdated);
|
|
}
|
|
if (activeService.connectionChanged) {
|
|
activeService.connectionChanged.connect(root.connectionChanged);
|
|
}
|
|
if (activeService.credentialsNeeded) {
|
|
activeService.credentialsNeeded.connect(root.credentialsNeeded);
|
|
}
|
|
}
|
|
}
|
|
|
|
function addRef() {
|
|
if (activeService && activeService.addRef) {
|
|
activeService.addRef();
|
|
}
|
|
}
|
|
|
|
function removeRef() {
|
|
if (activeService && activeService.removeRef) {
|
|
activeService.removeRef();
|
|
}
|
|
}
|
|
|
|
function getState() {
|
|
if (activeService && activeService.getState) {
|
|
activeService.getState();
|
|
}
|
|
}
|
|
|
|
function scanWifi() {
|
|
if (activeService && activeService.scanWifi) {
|
|
activeService.scanWifi();
|
|
}
|
|
}
|
|
|
|
function scanWifiNetworks() {
|
|
if (activeService && activeService.scanWifiNetworks) {
|
|
activeService.scanWifiNetworks();
|
|
}
|
|
}
|
|
|
|
function connectToWifi(ssid, password = "", username = "", anonymousIdentity = "", domainSuffixMatch = "") {
|
|
if (activeService && activeService.connectToWifi) {
|
|
activeService.connectToWifi(ssid, password, username, anonymousIdentity, domainSuffixMatch);
|
|
}
|
|
}
|
|
|
|
function disconnectWifi() {
|
|
if (activeService && activeService.disconnectWifi) {
|
|
activeService.disconnectWifi();
|
|
}
|
|
}
|
|
|
|
function forgetWifiNetwork(ssid) {
|
|
if (activeService && activeService.forgetWifiNetwork) {
|
|
activeService.forgetWifiNetwork(ssid);
|
|
}
|
|
}
|
|
|
|
function toggleWifiRadio() {
|
|
if (activeService && activeService.toggleWifiRadio) {
|
|
activeService.toggleWifiRadio();
|
|
}
|
|
}
|
|
|
|
function enableWifiDevice() {
|
|
if (activeService && activeService.enableWifiDevice) {
|
|
activeService.enableWifiDevice();
|
|
}
|
|
}
|
|
|
|
function setNetworkPreference(preference) {
|
|
if (activeService && activeService.setNetworkPreference) {
|
|
activeService.setNetworkPreference(preference);
|
|
}
|
|
}
|
|
|
|
function setConnectionPriority(type) {
|
|
if (activeService && activeService.setConnectionPriority) {
|
|
activeService.setConnectionPriority(type);
|
|
}
|
|
}
|
|
|
|
function connectToWifiAndSetPreference(ssid, password, username = "", anonymousIdentity = "", domainSuffixMatch = "") {
|
|
if (activeService && activeService.connectToWifiAndSetPreference) {
|
|
activeService.connectToWifiAndSetPreference(ssid, password, username, anonymousIdentity, domainSuffixMatch);
|
|
}
|
|
}
|
|
|
|
function toggleNetworkConnection(type) {
|
|
if (activeService && activeService.toggleNetworkConnection) {
|
|
activeService.toggleNetworkConnection(type);
|
|
}
|
|
}
|
|
|
|
function disconnectEthernetDevice(deviceName) {
|
|
if (activeService && activeService.disconnectEthernetDevice) {
|
|
activeService.disconnectEthernetDevice(deviceName);
|
|
}
|
|
}
|
|
|
|
function startAutoScan() {
|
|
if (activeService && activeService.startAutoScan) {
|
|
activeService.startAutoScan();
|
|
}
|
|
}
|
|
|
|
function stopAutoScan() {
|
|
if (activeService && activeService.stopAutoScan) {
|
|
activeService.stopAutoScan();
|
|
}
|
|
}
|
|
|
|
function fetchNetworkInfo(ssid) {
|
|
if (activeService && activeService.fetchNetworkInfo) {
|
|
activeService.fetchNetworkInfo(ssid);
|
|
}
|
|
}
|
|
|
|
function fetchWiredNetworkInfo(uuid) {
|
|
if (activeService && activeService.fetchWiredNetworkInfo) {
|
|
activeService.fetchWiredNetworkInfo(uuid);
|
|
}
|
|
}
|
|
|
|
function getNetworkInfo(ssid) {
|
|
if (activeService && activeService.getNetworkInfo) {
|
|
return activeService.getNetworkInfo(ssid);
|
|
}
|
|
return null;
|
|
}
|
|
|
|
function getWiredNetworkInfo(uuid) {
|
|
if (activeService && activeService.getWiredNetworkInfo) {
|
|
return activeService.getWiredNetworkInfo(uuid);
|
|
}
|
|
return null;
|
|
}
|
|
|
|
function refreshNetworkState() {
|
|
if (activeService && activeService.refreshNetworkState) {
|
|
activeService.refreshNetworkState();
|
|
}
|
|
}
|
|
|
|
function connectToSpecificWiredConfig(uuid) {
|
|
if (activeService && activeService.connectToSpecificWiredConfig) {
|
|
activeService.connectToSpecificWiredConfig(uuid);
|
|
}
|
|
}
|
|
|
|
function submitCredentials(token, secrets, save) {
|
|
if (activeService && activeService.submitCredentials) {
|
|
activeService.submitCredentials(token, secrets, save);
|
|
}
|
|
}
|
|
|
|
function cancelCredentials(token) {
|
|
if (activeService && activeService.cancelCredentials) {
|
|
activeService.cancelCredentials(token);
|
|
}
|
|
}
|
|
|
|
function setWifiAutoconnect(ssid, autoconnect) {
|
|
if (activeService && activeService.setWifiAutoconnect) {
|
|
activeService.setWifiAutoconnect(ssid, autoconnect);
|
|
}
|
|
}
|
|
|
|
function setWifiDeviceOverride(deviceName) {
|
|
if (activeService && activeService.setWifiDeviceOverride) {
|
|
activeService.setWifiDeviceOverride(deviceName);
|
|
}
|
|
}
|
|
}
|