mirror of
https://invent.kde.org/marcoa/shift-shell.git
synced 2026-08-02 09:48:50 +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/GsmSetting>
|
||||||
#include <NetworkManagerQt/Manager>
|
#include <NetworkManagerQt/Manager>
|
||||||
|
#include <NetworkManagerQt/Settings>
|
||||||
|
#include <NetworkManagerQt/Utils>
|
||||||
|
|
||||||
#include "signalindicator.h"
|
#include "signalindicator.h"
|
||||||
|
|
||||||
SignalIndicator::SignalIndicator()
|
SignalIndicator::SignalIndicator()
|
||||||
{
|
{
|
||||||
connect(ModemManager::notifier(), &ModemManager::Notifier::modemAdded, this, &SignalIndicator::updateModem);
|
connect(ModemManager::notifier(), &ModemManager::Notifier::modemAdded, this, &SignalIndicator::updateModemManagerModem);
|
||||||
connect(ModemManager::notifier(), &ModemManager::Notifier::modemRemoved, this, &SignalIndicator::updateModem);
|
connect(ModemManager::notifier(), &ModemManager::Notifier::modemRemoved, this, &SignalIndicator::updateModemManagerModem);
|
||||||
updateModem();
|
|
||||||
|
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
|
int SignalIndicator::strength() const
|
||||||
|
|
@ -27,6 +46,11 @@ QString SignalIndicator::name() const
|
||||||
return m_3gppModem ? m_3gppModem->operatorName() : QString();
|
return m_3gppModem ? m_3gppModem->operatorName() : QString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool SignalIndicator::modemAvailable() const
|
||||||
|
{
|
||||||
|
return m_modem;
|
||||||
|
}
|
||||||
|
|
||||||
bool SignalIndicator::simLocked() const
|
bool SignalIndicator::simLocked() const
|
||||||
{
|
{
|
||||||
if (!m_modem) {
|
if (!m_modem) {
|
||||||
|
|
@ -43,14 +67,9 @@ bool SignalIndicator::simEmpty() const
|
||||||
return m_modemDevice && m_modemDevice->sim() && m_modemDevice->sim()->uni() == QStringLiteral("/");
|
return m_modemDevice && m_modemDevice->sim() && m_modemDevice->sim()->uni() == QStringLiteral("/");
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SignalIndicator::available() const
|
|
||||||
{
|
|
||||||
return !ModemManager::modemDevices().isEmpty();
|
|
||||||
}
|
|
||||||
|
|
||||||
bool SignalIndicator::mobileDataSupported() const
|
bool SignalIndicator::mobileDataSupported() const
|
||||||
{
|
{
|
||||||
return m_nmModem && m_modemDevice->sim() && !simEmpty();
|
return m_nmModem && !simEmpty();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SignalIndicator::mobileDataEnabled() const
|
bool SignalIndicator::mobileDataEnabled() const
|
||||||
|
|
@ -98,7 +117,7 @@ void SignalIndicator::setMobileDataEnabled(bool enabled)
|
||||||
con->settings()->setAutoconnect(false);
|
con->settings()->setAutoconnect(false);
|
||||||
con->update(con->settings()->toMap());
|
con->update(con->settings()->toMap());
|
||||||
}
|
}
|
||||||
m_nmModem->disconnectInterface().waitForFinished();
|
m_nmModem->disconnectInterface();
|
||||||
} else {
|
} else {
|
||||||
m_nmModem->setAutoconnect(true);
|
m_nmModem->setAutoconnect(true);
|
||||||
// activate the connection that was last used
|
// 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";
|
qWarning() << "No modems available";
|
||||||
return;
|
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_modemDevice = ModemManager::modemDevices()[0];
|
||||||
m_modem = m_modemDevice->modemInterface();
|
m_modem = m_modemDevice->modemInterface();
|
||||||
m_3gppModem = m_modemDevice->interface(ModemManager::ModemDevice::GsmInterface).objectCast<ModemManager::Modem3gpp>();
|
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
|
// find networkmanager modem
|
||||||
for (NetworkManager::Device::Ptr nmDevice : NetworkManager::networkInterfaces()) {
|
for (NetworkManager::Device::Ptr nmDevice : NetworkManager::networkInterfaces()) {
|
||||||
if (nmDevice->udi() == m_modemDevice->uni()) {
|
if (nmDevice->udi() == m_modemDevice->uni()) {
|
||||||
|
|
@ -151,17 +193,6 @@ 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 mobileDataSupportedChanged();
|
||||||
Q_EMIT nameChanged();
|
Q_EMIT mobileDataEnabledChanged();
|
||||||
Q_EMIT availableChanged();
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -19,9 +19,9 @@ class SignalIndicator : public QObject
|
||||||
|
|
||||||
Q_PROPERTY(int strength READ strength NOTIFY strengthChanged)
|
Q_PROPERTY(int strength READ strength NOTIFY strengthChanged)
|
||||||
Q_PROPERTY(QString name READ name NOTIFY nameChanged)
|
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 simLocked READ simLocked NOTIFY simLockedChanged)
|
||||||
Q_PROPERTY(bool simEmpty READ simEmpty NOTIFY simEmptyChanged)
|
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 mobileDataSupported READ mobileDataSupported NOTIFY mobileDataSupportedChanged)
|
||||||
Q_PROPERTY(bool mobileDataEnabled READ mobileDataEnabled WRITE setMobileDataEnabled NOTIFY mobileDataEnabledChanged)
|
Q_PROPERTY(bool mobileDataEnabled READ mobileDataEnabled WRITE setMobileDataEnabled NOTIFY mobileDataEnabledChanged)
|
||||||
Q_PROPERTY(bool needsAPNAdded READ needsAPNAdded NOTIFY mobileDataEnabledChanged)
|
Q_PROPERTY(bool needsAPNAdded READ needsAPNAdded NOTIFY mobileDataEnabledChanged)
|
||||||
|
|
@ -31,9 +31,9 @@ public:
|
||||||
|
|
||||||
int strength() const;
|
int strength() const;
|
||||||
QString name() const;
|
QString name() const;
|
||||||
|
bool modemAvailable() const;
|
||||||
bool simLocked() const;
|
bool simLocked() const;
|
||||||
bool simEmpty() const;
|
bool simEmpty() const;
|
||||||
bool available() const;
|
|
||||||
bool mobileDataSupported() const;
|
bool mobileDataSupported() const;
|
||||||
bool mobileDataEnabled() const;
|
bool mobileDataEnabled() const;
|
||||||
bool needsAPNAdded() const;
|
bool needsAPNAdded() const;
|
||||||
|
|
@ -43,9 +43,9 @@ public:
|
||||||
Q_SIGNALS:
|
Q_SIGNALS:
|
||||||
void strengthChanged();
|
void strengthChanged();
|
||||||
void nameChanged();
|
void nameChanged();
|
||||||
|
void modemAvailableChanged();
|
||||||
void simLockedChanged();
|
void simLockedChanged();
|
||||||
void simEmptyChanged();
|
void simEmptyChanged();
|
||||||
void availableChanged();
|
|
||||||
void mobileDataSupportedChanged();
|
void mobileDataSupportedChanged();
|
||||||
void mobileDataEnabledChanged();
|
void mobileDataEnabledChanged();
|
||||||
|
|
||||||
|
|
@ -55,5 +55,6 @@ private:
|
||||||
ModemManager::Modem::Ptr m_modem;
|
ModemManager::Modem::Ptr m_modem;
|
||||||
ModemManager::Modem3gpp::Ptr m_3gppModem;
|
ModemManager::Modem3gpp::Ptr m_3gppModem;
|
||||||
|
|
||||||
void updateModem();
|
void updateModemManagerModem();
|
||||||
|
void updateNetworkManagerModem();
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -17,5 +17,7 @@ QtObject {
|
||||||
|
|
||||||
property string label: !SignalIndicator.available ? ""
|
property string label: !SignalIndicator.available ? ""
|
||||||
: SignalIndicator.simLocked ? i18n("SIM Locked") : SignalIndicator.name
|
: SignalIndicator.simLocked ? i18n("SIM Locked") : SignalIndicator.name
|
||||||
|
|
||||||
|
property bool showIndicator: SignalIndicator.modemAvailable
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -37,7 +37,7 @@ Item {
|
||||||
source: provider.icon
|
source: provider.icon
|
||||||
|
|
||||||
// don't show mobile indicator icon if the networkmanager one is already showing
|
// don't show mobile indicator icon if the networkmanager one is already showing
|
||||||
visible: !isInternetIndicatorMobileData
|
visible: !isInternetIndicatorMobileData && provider.showIndicator
|
||||||
}
|
}
|
||||||
|
|
||||||
PlasmaComponents.Label {
|
PlasmaComponents.Label {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue