From 56124325e377aed4efee3200a21a8d6b4becdc85 Mon Sep 17 00:00:00 2001 From: Alexander Kanavin Date: Thu, 18 Nov 2010 22:05:42 +0200 Subject: [PATCH] Stricter rules for manual modem selection A modem has to exist during class construction If a modem goes away and then comes back, it's not picked up --- lib/ofonomodem.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/ofonomodem.cpp b/lib/ofonomodem.cpp index 47e8eae..a0da911 100644 --- a/lib/ofonomodem.cpp +++ b/lib/ofonomodem.cpp @@ -31,14 +31,18 @@ OfonoModem::OfonoModem(SelectionSetting setting, const QString &modemPath, QObject *parent) : OfonoInterface("/", "org.ofono.Modem", OfonoInterface::GetAllOnStartup, parent), m_selectionSetting(setting) { - QString finalModemPath = modemPath; m_mm = new OfonoModemManager(this); connect(m_mm, SIGNAL(modemAdded(QString)), this, SLOT(modemAdded(QString))); connect(m_mm, SIGNAL(modemRemoved(QString)), this, SLOT(modemRemoved(QString))); + QString finalModemPath; + if (setting == AutomaticSelect) finalModemPath = m_mm->modems().value(0); + else if (setting == ManualSelect) + if (m_mm->modems().contains(modemPath)) + finalModemPath = modemPath; if (finalModemPath.isEmpty()) { finalModemPath = "/"; @@ -112,6 +116,8 @@ void OfonoModem::modemsChanged() } setPath(modemPath); emit modemPathChanged(modemPath); + } else if (m_selectionSetting == ManualSelect) { + setPath("/"); } } // validity has changed -- 2.7.4