quicksettings: Make mobile data quick setting use NM API directly

This commit is contained in:
Devin Lin 2022-02-10 22:50:09 -05:00
parent 5660a9e016
commit b323a83add
5 changed files with 30 additions and 2 deletions

View file

@ -47,6 +47,7 @@ find_package(KF5 ${KF5_MIN_VERSION} REQUIRED COMPONENTS
Notifications Notifications
Wayland Wayland
ModemManagerQt ModemManagerQt
NetworkManagerQt
) )
find_package(KWinDBusInterface) find_package(KWinDBusInterface)
set_package_properties(KWinDBusInterface PROPERTIES DESCRIPTION "KWin DBus interface" set_package_properties(KWinDBusInterface PROPERTIES DESCRIPTION "KWin DBus interface"

View file

@ -10,6 +10,7 @@ target_sources(ppc-mmqmlplugin PRIVATE
target_link_libraries(ppc-mmqmlplugin target_link_libraries(ppc-mmqmlplugin
Qt5::Qml Qt5::Qml
KF5::ModemManagerQt KF5::ModemManagerQt
KF5::NetworkManagerQt
) )
set_property(TARGET ppc-mmqmlplugin PROPERTY LIBRARY_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/org/kde/plasma/mm) set_property(TARGET ppc-mmqmlplugin PROPERTY LIBRARY_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/org/kde/plasma/mm)

View file

@ -1,10 +1,17 @@
// SPDX-FileCopyrightText: 2021 Tobias Fella <fella@posteo.de> // SPDX-FileCopyrightText: 2021 Tobias Fella <fella@posteo.de>
// SPDX-FileCopyrightText: 2022 Devin Lin <devin@kde.org>
// SPDX-License-Identifier: GPL-2.0-or-later // SPDX-License-Identifier: GPL-2.0-or-later
#include <NetworkManagerQt/Manager>
#include "signalindicator.h" #include "signalindicator.h"
SignalIndicator::SignalIndicator() SignalIndicator::SignalIndicator()
{ {
connect(NetworkManager::notifier(), &NetworkManager::Notifier::wwanEnabledChanged, this, [this](bool) {
Q_EMIT wwanEnabledChanged();
});
connect(ModemManager::notifier(), &ModemManager::Notifier::modemAdded, this, &SignalIndicator::updateModem); connect(ModemManager::notifier(), &ModemManager::Notifier::modemAdded, this, &SignalIndicator::updateModem);
connect(ModemManager::notifier(), &ModemManager::Notifier::modemRemoved, this, &SignalIndicator::updateModem); connect(ModemManager::notifier(), &ModemManager::Notifier::modemRemoved, this, &SignalIndicator::updateModem);
updateModem(); updateModem();
@ -36,6 +43,16 @@ bool SignalIndicator::available() const
return !ModemManager::modemDevices().isEmpty(); return !ModemManager::modemDevices().isEmpty();
} }
bool SignalIndicator::wwanEnabled() const
{
return NetworkManager::isWwanEnabled();
}
void SignalIndicator::setWwanEnabled(bool wwanEnabled)
{
NetworkManager::setWwanEnabled(wwanEnabled);
}
void SignalIndicator::updateModem() void SignalIndicator::updateModem()
{ {
if (!available()) { if (!available()) {

View file

@ -1,12 +1,15 @@
// SPDX-FileCopyrightText: 2021 Tobias Fella <fella@posteo.de> // SPDX-FileCopyrightText: 2021 Tobias Fella <fella@posteo.de>
// SPDX-FileCopyrightText: 2022 Devin Lin <devin@kde.org>
// SPDX-License-Identifier: GPL-2.0-or-later // SPDX-License-Identifier: GPL-2.0-or-later
#pragma once #pragma once
#include <ModemManagerQt/Manager> #include <ModemManagerQt/Manager>
#include <ModemManagerQt/modem3gpp.h> #include <ModemManagerQt/modem3gpp.h>
#include <QObject> #include <QObject>
// We make the assumption that there is only one modem.
class SignalIndicator : public QObject class SignalIndicator : public QObject
{ {
Q_OBJECT Q_OBJECT
@ -15,6 +18,7 @@ class SignalIndicator : public QObject
Q_PROPERTY(QString name READ name NOTIFY nameChanged) Q_PROPERTY(QString name READ name NOTIFY nameChanged)
Q_PROPERTY(bool simLocked READ simLocked NOTIFY simLockedChanged) Q_PROPERTY(bool simLocked READ simLocked NOTIFY simLockedChanged)
Q_PROPERTY(bool available READ available NOTIFY availableChanged) Q_PROPERTY(bool available READ available NOTIFY availableChanged)
Q_PROPERTY(bool wwanEnabled READ wwanEnabled WRITE setWwanEnabled NOTIFY wwanEnabledChanged)
public: public:
SignalIndicator(); SignalIndicator();
@ -23,12 +27,16 @@ public:
QString name() const; QString name() const;
bool simLocked() const; bool simLocked() const;
bool available() const; bool available() const;
bool wwanEnabled() const;
void setWwanEnabled(bool wwanEnabled);
Q_SIGNALS: Q_SIGNALS:
void strengthChanged(); void strengthChanged();
void nameChanged(); void nameChanged();
void simLockedChanged(); void simLockedChanged();
void availableChanged(); void availableChanged();
void wwanEnabledChanged();
private: private:
ModemManager::Modem::Ptr m_modem; ModemManager::Modem::Ptr m_modem;

View file

@ -15,6 +15,7 @@ import org.kde.bluezqt 1.0 as BluezQt
import org.kde.plasma.core 2.0 as PlasmaCore import org.kde.plasma.core 2.0 as PlasmaCore
import org.kde.plasma.components 3.0 as PC3 import org.kde.plasma.components 3.0 as PC3
import org.kde.plasma.networkmanagement 0.2 as PlasmaNM import org.kde.plasma.networkmanagement 0.2 as PlasmaNM
import org.kde.plasma.mm 1.0 as PlasmaMM
import org.kde.plasma.private.mobileshell 1.0 as MobileShell import org.kde.plasma.private.mobileshell 1.0 as MobileShell
MobileShell.QuickSettingsModel { MobileShell.QuickSettingsModel {
@ -67,9 +68,9 @@ MobileShell.QuickSettingsModel {
text: i18n("Mobile Data") text: i18n("Mobile Data")
icon: "network-modem" icon: "network-modem"
settingsCommand: "plasma-open-settings kcm_mobile_broadband" settingsCommand: "plasma-open-settings kcm_mobile_broadband"
enabled: enabledConnections.wwanEnabled enabled: PlasmaMM.SignalIndicator.wwanEnabled
function toggle() { function toggle() {
nmHandler.enableWwan(!enabledConnections.wwanEnabled) PlasmaMM.SignalIndicator.wwanEnabled = !PlasmaMM.SignalIndicator.wwanEnabled
} }
} }
MobileShell.QuickSetting { MobileShell.QuickSetting {