mirror of
https://invent.kde.org/marcoa/shift-shell.git
synced 2026-04-29 15:03:09 +00:00
mmplugin: Flesh out update signals and behaviour
This commit is contained in:
parent
e2bfa2212f
commit
867dc32df2
4 changed files with 64 additions and 30 deletions
|
|
@ -4,14 +4,33 @@
|
|||
|
||||
#include <NetworkManagerQt/GsmSetting>
|
||||
#include <NetworkManagerQt/Manager>
|
||||
#include <NetworkManagerQt/Settings>
|
||||
#include <NetworkManagerQt/Utils>
|
||||
|
||||
#include "signalindicator.h"
|
||||
|
||||
SignalIndicator::SignalIndicator()
|
||||
{
|
||||
connect(ModemManager::notifier(), &ModemManager::Notifier::modemAdded, this, &SignalIndicator::updateModem);
|
||||
connect(ModemManager::notifier(), &ModemManager::Notifier::modemRemoved, this, &SignalIndicator::updateModem);
|
||||
updateModem();
|
||||
connect(ModemManager::notifier(), &ModemManager::Notifier::modemAdded, this, &SignalIndicator::updateModemManagerModem);
|
||||
connect(ModemManager::notifier(), &ModemManager::Notifier::modemRemoved, this, &SignalIndicator::updateModemManagerModem);
|
||||
|
||||
connect(NetworkManager::settingsNotifier(), &NetworkManager::SettingsNotifier::connectionAdded, this, [this]() {
|
||||
Q_EMIT mobileDataEnabledChanged();
|
||||
});
|
||||
connect(NetworkManager::settingsNotifier(), &NetworkManager::SettingsNotifier::connectionRemoved, this, [this]() {
|
||||
Q_EMIT mobileDataEnabledChanged();
|
||||
});
|
||||
connect(NetworkManager::notifier(), &NetworkManager::Notifier::activeConnectionAdded, this, [this]() {
|
||||
Q_EMIT mobileDataEnabledChanged();
|
||||
});
|
||||
connect(NetworkManager::notifier(), &NetworkManager::Notifier::activeConnectionRemoved, this, [this]() {
|
||||
Q_EMIT mobileDataEnabledChanged();
|
||||
});
|
||||
|
||||
connect(NetworkManager::notifier(), &NetworkManager::Notifier::deviceAdded, this, &SignalIndicator::updateNetworkManagerModem);
|
||||
connect(NetworkManager::notifier(), &NetworkManager::Notifier::deviceRemoved, this, &SignalIndicator::updateNetworkManagerModem);
|
||||
|
||||
updateModemManagerModem();
|
||||
}
|
||||
|
||||
int SignalIndicator::strength() const
|
||||
|
|
@ -27,6 +46,11 @@ QString SignalIndicator::name() const
|
|||
return m_3gppModem ? m_3gppModem->operatorName() : QString();
|
||||
}
|
||||
|
||||
bool SignalIndicator::modemAvailable() const
|
||||
{
|
||||
return m_modem;
|
||||
}
|
||||
|
||||
bool SignalIndicator::simLocked() const
|
||||
{
|
||||
if (!m_modem) {
|
||||
|
|
@ -43,14 +67,9 @@ bool SignalIndicator::simEmpty() const
|
|||
return m_modemDevice && m_modemDevice->sim() && m_modemDevice->sim()->uni() == QStringLiteral("/");
|
||||
}
|
||||
|
||||
bool SignalIndicator::available() const
|
||||
{
|
||||
return !ModemManager::modemDevices().isEmpty();
|
||||
}
|
||||
|
||||
bool SignalIndicator::mobileDataSupported() const
|
||||
{
|
||||
return m_nmModem && m_modemDevice->sim() && !simEmpty();
|
||||
return m_nmModem && !simEmpty();
|
||||
}
|
||||
|
||||
bool SignalIndicator::mobileDataEnabled() const
|
||||
|
|
@ -98,7 +117,7 @@ void SignalIndicator::setMobileDataEnabled(bool enabled)
|
|||
con->settings()->setAutoconnect(false);
|
||||
con->update(con->settings()->toMap());
|
||||
}
|
||||
m_nmModem->disconnectInterface().waitForFinished();
|
||||
m_nmModem->disconnectInterface();
|
||||
} else {
|
||||
m_nmModem->setAutoconnect(true);
|
||||
// activate the connection that was last used
|
||||
|
|
@ -125,18 +144,41 @@ void SignalIndicator::setMobileDataEnabled(bool enabled)
|
|||
}
|
||||
}
|
||||
|
||||
void SignalIndicator::updateModem()
|
||||
void SignalIndicator::updateModemManagerModem()
|
||||
{
|
||||
if (!available()) {
|
||||
if (ModemManager::modemDevices().isEmpty()) {
|
||||
qWarning() << "No modems available";
|
||||
return;
|
||||
}
|
||||
|
||||
// we assume that there is a single modem
|
||||
// TODO: we assume that there is a single modem for the time being
|
||||
m_modemDevice = ModemManager::modemDevices()[0];
|
||||
m_modem = m_modemDevice->modemInterface();
|
||||
m_3gppModem = m_modemDevice->interface(ModemManager::ModemDevice::GsmInterface).objectCast<ModemManager::Modem3gpp>();
|
||||
|
||||
connect(m_modemDevice->sim().get(), &ModemManager::Sim::simIdentifierChanged, this, &SignalIndicator::simEmptyChanged);
|
||||
|
||||
if (m_modem) {
|
||||
connect(m_modem.get(), &ModemManager::Modem::signalQualityChanged, this, &SignalIndicator::strengthChanged);
|
||||
connect(m_modem.get(), &ModemManager::Modem::unlockRequiredChanged, this, &SignalIndicator::simLockedChanged);
|
||||
}
|
||||
if (m_3gppModem) {
|
||||
connect(m_3gppModem.get(), &ModemManager::Modem3gpp::operatorNameChanged, this, &SignalIndicator::nameChanged);
|
||||
}
|
||||
|
||||
updateNetworkManagerModem();
|
||||
|
||||
Q_EMIT nameChanged();
|
||||
Q_EMIT strengthChanged();
|
||||
Q_EMIT modemAvailableChanged();
|
||||
}
|
||||
|
||||
void SignalIndicator::updateNetworkManagerModem()
|
||||
{
|
||||
if (!m_modemDevice) {
|
||||
return;
|
||||
}
|
||||
|
||||
// find networkmanager modem
|
||||
for (NetworkManager::Device::Ptr nmDevice : NetworkManager::networkInterfaces()) {
|
||||
if (nmDevice->udi() == m_modemDevice->uni()) {
|
||||
|
|
@ -150,18 +192,7 @@ void SignalIndicator::updateModem()
|
|||
});
|
||||
}
|
||||
}
|
||||
|
||||
connect(m_modemDevice->sim().get(), &ModemManager::Sim::simIdentifierChanged, this, &SignalIndicator::simEmptyChanged);
|
||||
|
||||
if (m_modem) {
|
||||
connect(m_modem.get(), &ModemManager::Modem::signalQualityChanged, this, &SignalIndicator::strengthChanged);
|
||||
connect(m_modem.get(), &ModemManager::Modem::unlockRequiredChanged, this, &SignalIndicator::simLockedChanged);
|
||||
}
|
||||
if (m_3gppModem) {
|
||||
connect(m_3gppModem.get(), &ModemManager::Modem3gpp::operatorNameChanged, this, &SignalIndicator::nameChanged);
|
||||
}
|
||||
|
||||
Q_EMIT mobileDataSupportedChanged();
|
||||
Q_EMIT nameChanged();
|
||||
Q_EMIT availableChanged();
|
||||
Q_EMIT mobileDataEnabledChanged();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -19,9 +19,9 @@ class SignalIndicator : public QObject
|
|||
|
||||
Q_PROPERTY(int strength READ strength NOTIFY strengthChanged)
|
||||
Q_PROPERTY(QString name READ name NOTIFY nameChanged)
|
||||
Q_PROPERTY(bool modemAvailable READ modemAvailable NOTIFY modemAvailableChanged)
|
||||
Q_PROPERTY(bool simLocked READ simLocked NOTIFY simLockedChanged)
|
||||
Q_PROPERTY(bool simEmpty READ simEmpty NOTIFY simEmptyChanged)
|
||||
Q_PROPERTY(bool available READ available NOTIFY availableChanged)
|
||||
Q_PROPERTY(bool mobileDataSupported READ mobileDataSupported NOTIFY mobileDataSupportedChanged)
|
||||
Q_PROPERTY(bool mobileDataEnabled READ mobileDataEnabled WRITE setMobileDataEnabled NOTIFY mobileDataEnabledChanged)
|
||||
Q_PROPERTY(bool needsAPNAdded READ needsAPNAdded NOTIFY mobileDataEnabledChanged)
|
||||
|
|
@ -31,9 +31,9 @@ public:
|
|||
|
||||
int strength() const;
|
||||
QString name() const;
|
||||
bool modemAvailable() const;
|
||||
bool simLocked() const;
|
||||
bool simEmpty() const;
|
||||
bool available() const;
|
||||
bool mobileDataSupported() const;
|
||||
bool mobileDataEnabled() const;
|
||||
bool needsAPNAdded() const;
|
||||
|
|
@ -43,9 +43,9 @@ public:
|
|||
Q_SIGNALS:
|
||||
void strengthChanged();
|
||||
void nameChanged();
|
||||
void modemAvailableChanged();
|
||||
void simLockedChanged();
|
||||
void simEmptyChanged();
|
||||
void availableChanged();
|
||||
void mobileDataSupportedChanged();
|
||||
void mobileDataEnabledChanged();
|
||||
|
||||
|
|
@ -55,5 +55,6 @@ private:
|
|||
ModemManager::Modem::Ptr m_modem;
|
||||
ModemManager::Modem3gpp::Ptr m_3gppModem;
|
||||
|
||||
void updateModem();
|
||||
void updateModemManagerModem();
|
||||
void updateNetworkManagerModem();
|
||||
};
|
||||
|
|
|
|||
|
|
@ -17,5 +17,7 @@ QtObject {
|
|||
|
||||
property string label: !SignalIndicator.available ? ""
|
||||
: SignalIndicator.simLocked ? i18n("SIM Locked") : SignalIndicator.name
|
||||
|
||||
property bool showIndicator: SignalIndicator.modemAvailable
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ Item {
|
|||
source: provider.icon
|
||||
|
||||
// don't show mobile indicator icon if the networkmanager one is already showing
|
||||
visible: !isInternetIndicatorMobileData
|
||||
visible: !isInternetIndicatorMobileData && provider.showIndicator
|
||||
}
|
||||
|
||||
PlasmaComponents.Label {
|
||||
|
|
|
|||
Loading…
Reference in a new issue