mirror of
https://invent.kde.org/marcoa/shift-shell.git
synced 2026-04-26 14:23:09 +00:00
components/mobileshell: Introduce singleton for plasma-nm lib
We currently create several instances of the plasma-nm objects over the shell. Use a single singleton to avoid having to load it multiple times.
This commit is contained in:
parent
5fade2d5eb
commit
ee1a311af7
6 changed files with 38 additions and 51 deletions
|
|
@ -17,13 +17,16 @@ target_include_directories(mobileshellplugin PRIVATE notifications)
|
||||||
target_sources(mobileshellplugin PRIVATE ${mobileshellplugin_SRCS})
|
target_sources(mobileshellplugin PRIVATE ${mobileshellplugin_SRCS})
|
||||||
|
|
||||||
# Singleton declarations
|
# Singleton declarations
|
||||||
set_source_files_properties(qml/components/AppLaunch.qml PROPERTIES QT_QML_SINGLETON_TYPE TRUE)
|
set_source_files_properties(
|
||||||
set_source_files_properties(qml/components/Constants.qml PROPERTIES QT_QML_SINGLETON_TYPE TRUE)
|
qml/components/AppLaunch.qml PROPERTIES QT_QML_SINGLETON_TYPE TRUE
|
||||||
set_source_files_properties(qml/dataproviders/AudioInfo.qml PROPERTIES QT_QML_SINGLETON_TYPE TRUE)
|
qml/components/Constants.qml PROPERTIES QT_QML_SINGLETON_TYPE TRUE
|
||||||
set_source_files_properties(qml/dataproviders/BatteryInfo.qml PROPERTIES QT_QML_SINGLETON_TYPE TRUE)
|
qml/dataproviders/AudioInfo.qml PROPERTIES QT_QML_SINGLETON_TYPE TRUE
|
||||||
set_source_files_properties(qml/dataproviders/BluetoothInfo.qml PROPERTIES QT_QML_SINGLETON_TYPE TRUE)
|
qml/dataproviders/BatteryInfo.qml PROPERTIES QT_QML_SINGLETON_TYPE TRUE
|
||||||
set_source_files_properties(qml/dataproviders/SignalStrengthInfo.qml PROPERTIES QT_QML_SINGLETON_TYPE TRUE)
|
qml/dataproviders/BluetoothInfo.qml PROPERTIES QT_QML_SINGLETON_TYPE TRUE
|
||||||
set_source_files_properties(qml/popups/PopupProviderLoader.qml PROPERTIES QT_QML_SINGLETON_TYPE TRUE)
|
qml/dataproviders/NetworkInfo.qml PROPERTIES QT_QML_SINGLETON_TYPE TRUE
|
||||||
|
qml/dataproviders/SignalStrengthInfo.qml PROPERTIES QT_QML_SINGLETON_TYPE TRUE
|
||||||
|
qml/popups/PopupProviderLoader.qml PROPERTIES QT_QML_SINGLETON_TYPE TRUE
|
||||||
|
)
|
||||||
|
|
||||||
# Include qml and js files within ./qml/
|
# Include qml and js files within ./qml/
|
||||||
file(GLOB_RECURSE _qml_sources
|
file(GLOB_RECURSE _qml_sources
|
||||||
|
|
|
||||||
15
components/mobileshell/qml/dataproviders/NetworkInfo.qml
Normal file
15
components/mobileshell/qml/dataproviders/NetworkInfo.qml
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
// SPDX-FileCopyrightText: 2025 Devin Lin <devin@kde.org>
|
||||||
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
pragma Singleton
|
||||||
|
|
||||||
|
import QtQuick
|
||||||
|
|
||||||
|
import org.kde.plasma.networkmanagement as PlasmaNM
|
||||||
|
|
||||||
|
QtObject {
|
||||||
|
// Initialization of PlasmaNM.Handler is quite heavy, initialize it once for the shell as a singleton.
|
||||||
|
readonly property PlasmaNM.Handler handler: PlasmaNM.Handler {}
|
||||||
|
|
||||||
|
readonly property PlasmaNM.WirelessStatus wirelessStatus: PlasmaNM.WirelessStatus {}
|
||||||
|
}
|
||||||
|
|
@ -15,23 +15,9 @@ import org.kde.kirigami as Kirigami
|
||||||
Item {
|
Item {
|
||||||
id: connectionIcon
|
id: connectionIcon
|
||||||
|
|
||||||
// data
|
|
||||||
|
|
||||||
readonly property string icon: wirelessStatus.hotspotSSID.length !== 0 ? "network-wireless-hotspot" : connectionIconProvider.connectionIcon
|
readonly property string icon: wirelessStatus.hotspotSSID.length !== 0 ? "network-wireless-hotspot" : connectionIconProvider.connectionIcon
|
||||||
readonly property bool indicatorRunning: connectionIconProvider.connecting
|
readonly property bool indicatorRunning: connectionIconProvider.connecting
|
||||||
|
|
||||||
readonly property var networkStatus: PlasmaNM.NetworkStatus {
|
|
||||||
id: networkStatus
|
|
||||||
}
|
|
||||||
|
|
||||||
readonly property var networkModel: PlasmaNM.NetworkModel {
|
|
||||||
id: connectionModel
|
|
||||||
}
|
|
||||||
|
|
||||||
readonly property var handler: PlasmaNM.Handler {
|
|
||||||
id: handler
|
|
||||||
}
|
|
||||||
|
|
||||||
readonly property var wirelessStatus: PlasmaNM.WirelessStatus {
|
readonly property var wirelessStatus: PlasmaNM.WirelessStatus {
|
||||||
id: wirelessStatus
|
id: wirelessStatus
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@
|
||||||
|
|
||||||
import org.kde.plasma.networkmanagement as PlasmaNM
|
import org.kde.plasma.networkmanagement as PlasmaNM
|
||||||
import org.kde.plasma.private.mobileshell.quicksettingsplugin as QS
|
import org.kde.plasma.private.mobileshell.quicksettingsplugin as QS
|
||||||
|
import org.kde.plasma.private.mobileshell as MobileShell
|
||||||
|
|
||||||
QS.QuickSetting {
|
QS.QuickSetting {
|
||||||
text: i18n("Airplane Mode")
|
text: i18n("Airplane Mode")
|
||||||
|
|
@ -14,12 +15,8 @@ QS.QuickSetting {
|
||||||
status: ""
|
status: ""
|
||||||
enabled: PlasmaNM.Configuration.airplaneModeEnabled
|
enabled: PlasmaNM.Configuration.airplaneModeEnabled
|
||||||
|
|
||||||
PlasmaNM.Handler {
|
|
||||||
id: nmHandler
|
|
||||||
}
|
|
||||||
|
|
||||||
function toggle() {
|
function toggle() {
|
||||||
nmHandler.enableAirplaneMode(!PlasmaNM.Configuration.airplaneModeEnabled);
|
MobileShell.NetworkInfo.handler.enableAirplaneMode(!PlasmaNM.Configuration.airplaneModeEnabled);
|
||||||
PlasmaNM.Configuration.airplaneModeEnabled = !PlasmaNM.Configuration.airplaneModeEnabled;
|
PlasmaNM.Configuration.airplaneModeEnabled = !PlasmaNM.Configuration.airplaneModeEnabled;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,32 +3,24 @@
|
||||||
|
|
||||||
import QtQuick 2.15
|
import QtQuick 2.15
|
||||||
|
|
||||||
import org.kde.plasma.networkmanagement as PlasmaNM
|
|
||||||
import org.kde.plasma.private.mobileshell.quicksettingsplugin as QS
|
import org.kde.plasma.private.mobileshell.quicksettingsplugin as QS
|
||||||
|
import org.kde.plasma.private.mobileshell as MobileShell
|
||||||
|
|
||||||
QS.QuickSetting {
|
QS.QuickSetting {
|
||||||
id: root
|
id: root
|
||||||
|
|
||||||
PlasmaNM.Handler {
|
|
||||||
id: nmHandler
|
|
||||||
}
|
|
||||||
|
|
||||||
PlasmaNM.WirelessStatus {
|
|
||||||
id: wirelessStatus
|
|
||||||
}
|
|
||||||
|
|
||||||
text: i18n("Hotspot")
|
text: i18n("Hotspot")
|
||||||
icon: "network-wireless-hotspot"
|
icon: "network-wireless-hotspot"
|
||||||
|
|
||||||
enabled: wirelessStatus.hotspotSSID.length !== 0
|
enabled: MobileShell.NetworkInfo.wirelessStatus.hotspotSSID.length !== 0
|
||||||
status: enabled ? wirelessStatus.hotspotSSID : ""
|
status: enabled ? MobileShell.NetworkInfo.wirelessStatus.hotspotSSID : ""
|
||||||
|
|
||||||
settingsCommand: "plasma-open-settings kcm_mobile_hotspot"
|
settingsCommand: "plasma-open-settings kcm_mobile_hotspot"
|
||||||
function toggle() {
|
function toggle() {
|
||||||
if (!enabled) {
|
if (!enabled) {
|
||||||
nmHandler.createHotspot();
|
MobileShell.NetworkInfo.handler.createHotspot();
|
||||||
} else {
|
} else {
|
||||||
nmHandler.stopHotspot();
|
MobileShell.NetworkInfo.handler.stopHotspot();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -5,26 +5,20 @@ import QtQuick 2.15
|
||||||
|
|
||||||
import org.kde.plasma.networkmanagement as PlasmaNM
|
import org.kde.plasma.networkmanagement as PlasmaNM
|
||||||
import org.kde.plasma.private.mobileshell.quicksettingsplugin as QS
|
import org.kde.plasma.private.mobileshell.quicksettingsplugin as QS
|
||||||
|
import org.kde.plasma.private.mobileshell as MobileShell
|
||||||
|
|
||||||
QS.QuickSetting {
|
QS.QuickSetting {
|
||||||
PlasmaNM.Handler {
|
|
||||||
id: nmHandler
|
|
||||||
}
|
|
||||||
|
|
||||||
PlasmaNM.EnabledConnections {
|
PlasmaNM.EnabledConnections {
|
||||||
id: enabledConnections
|
id: enabledConnections
|
||||||
}
|
}
|
||||||
|
|
||||||
PlasmaNM.WirelessStatus {
|
|
||||||
id: wirelessStatus
|
|
||||||
}
|
|
||||||
|
|
||||||
text: i18n("Wi-Fi")
|
text: i18n("Wi-Fi")
|
||||||
status: enabledConnections.wirelessEnabled ? wirelessStatus.wifiSSID : ""
|
status: enabledConnections.wirelessEnabled ? MobileShell.NetworkInfo.wirelessStatus.wifiSSID : ""
|
||||||
icon: enabledConnections.wirelessEnabled ? "network-wireless" : "network-wireless-disconnected"
|
icon: enabledConnections.wirelessEnabled ? "network-wireless" : "network-wireless-disconnected"
|
||||||
settingsCommand: "plasma-open-settings kcm_mobile_wifi"
|
settingsCommand: "plasma-open-settings kcm_mobile_wifi"
|
||||||
function toggle() {
|
|
||||||
nmHandler.enableWireless(!enabledConnections.wirelessEnabled)
|
|
||||||
}
|
|
||||||
enabled: enabledConnections.wirelessEnabled
|
enabled: enabledConnections.wirelessEnabled
|
||||||
|
|
||||||
|
function toggle() {
|
||||||
|
MobileShell.NetworkInfo.handler.enableWireless(!enabledConnections.wirelessEnabled);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue