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
Wayland
ModemManagerQt
NetworkManagerQt
)
find_package(KWinDBusInterface)
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
Qt5::Qml
KF5::ModemManagerQt
KF5::NetworkManagerQt
)
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: 2022 Devin Lin <devin@kde.org>
// SPDX-License-Identifier: GPL-2.0-or-later
#include <NetworkManagerQt/Manager>
#include "signalindicator.h"
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::modemRemoved, this, &SignalIndicator::updateModem);
updateModem();
@ -36,6 +43,16 @@ bool SignalIndicator::available() const
return !ModemManager::modemDevices().isEmpty();
}
bool SignalIndicator::wwanEnabled() const
{
return NetworkManager::isWwanEnabled();
}
void SignalIndicator::setWwanEnabled(bool wwanEnabled)
{
NetworkManager::setWwanEnabled(wwanEnabled);
}
void SignalIndicator::updateModem()
{
if (!available()) {

View file

@ -1,12 +1,15 @@
// SPDX-FileCopyrightText: 2021 Tobias Fella <fella@posteo.de>
// SPDX-FileCopyrightText: 2022 Devin Lin <devin@kde.org>
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#include <ModemManagerQt/Manager>
#include <ModemManagerQt/modem3gpp.h>
#include <QObject>
// We make the assumption that there is only one modem.
class SignalIndicator : public QObject
{
Q_OBJECT
@ -15,6 +18,7 @@ class SignalIndicator : public QObject
Q_PROPERTY(QString name READ name NOTIFY nameChanged)
Q_PROPERTY(bool simLocked READ simLocked NOTIFY simLockedChanged)
Q_PROPERTY(bool available READ available NOTIFY availableChanged)
Q_PROPERTY(bool wwanEnabled READ wwanEnabled WRITE setWwanEnabled NOTIFY wwanEnabledChanged)
public:
SignalIndicator();
@ -23,12 +27,16 @@ public:
QString name() const;
bool simLocked() const;
bool available() const;
bool wwanEnabled() const;
void setWwanEnabled(bool wwanEnabled);
Q_SIGNALS:
void strengthChanged();
void nameChanged();
void simLockedChanged();
void availableChanged();
void wwanEnabledChanged();
private:
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.components 3.0 as PC3
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
MobileShell.QuickSettingsModel {
@ -67,9 +68,9 @@ MobileShell.QuickSettingsModel {
text: i18n("Mobile Data")
icon: "network-modem"
settingsCommand: "plasma-open-settings kcm_mobile_broadband"
enabled: enabledConnections.wwanEnabled
enabled: PlasmaMM.SignalIndicator.wwanEnabled
function toggle() {
nmHandler.enableWwan(!enabledConnections.wwanEnabled)
PlasmaMM.SignalIndicator.wwanEnabled = !PlasmaMM.SignalIndicator.wwanEnabled
}
}
MobileShell.QuickSetting {