/**************************************************************************** ** ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). ** All rights reserved. ** Contact: Nokia Corporation (qt-info@nokia.com) ** ** This file is part of the test suite of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** No Commercial Usage ** This file contains pre-release code and may not be distributed. ** You may use this file in accordance with the terms and conditions ** contained in the Technology Preview License Agreement accompanying ** this package. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Nokia gives you certain additional ** rights. These rights are described in the Nokia Qt LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** ** If you have questions regarding the use of this file, please contact ** Nokia at qt-info@nokia.com. ** ** ** ** ** ** ** ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #include "nmview.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include //#include "ui_dialog.h" #include #include #include #include //static QDBusConnection dbc = QDBusConnection::systemBus(); //typedef QMap< QString, QMap > SettingsMap; //Q_DECLARE_METATYPE(SettingsMap) NMView::NMView(QDialog* parent) : QDialog(parent, 0), dbc(QDBusConnection::systemBus()) { init(); if (!dbc.isConnected()) { qWarning() << "Unable to connect to D-Bus:" << dbc.lastError(); return; } updateConnections(); getDevices(); } NMView::~NMView() { } void NMView::init() { setupUi(this); sess = 0; // readSettings(); connect(startButton, SIGNAL(clicked()), this, SLOT(activate())); connect(stopButton, SIGNAL(clicked()), this, SLOT(deactivate())); connect(scanButton, SIGNAL(clicked()), this, SLOT(findAccessPoints())); connect(updateButton, SIGNAL(clicked()), this, SLOT(update())); connect(cons, SIGNAL(itemActivated(QTreeWidgetItem*, int)), this,SLOT(connectionItemActivated(QTreeWidgetItem*, int))); connect(devicesTreeWidget, SIGNAL(itemActivated(QTreeWidgetItem*, int)), this, SLOT(deviceItemActivated(QTreeWidgetItem*, int))); cons->header()->setResizeMode(QHeaderView::ResizeToContents); devicesTreeWidget->header()->setResizeMode(QHeaderView::ResizeToContents); accessPointsTreeWidget->header()->setResizeMode(QHeaderView::ResizeToContents); // accessPointsTreeWidget->header()->setResizeMode(QHeaderView::ResizeToContents); manager = new QNetworkConfigurationManager(this); connect(manager, SIGNAL(updateCompleted()), this, SLOT(updateCompleted())); connect(manager, SIGNAL(configurationAdded(const QNetworkConfiguration &)), this, SLOT(configurationAdded(const QNetworkConfiguration&))); devicesTreeWidget->header()->hideSection(0); devicesTreeWidget->header()->hideSection(1); devicesTreeWidget->header()->hideSection(3); devicesTreeWidget->header()->hideSection(5); devicesTreeWidget->header()->hideSection(6); devicesTreeWidget->header()->hideSection(7); devicesTreeWidget->header()->hideSection(8); devicesTreeWidget->header()->hideSection(9); } void NMView::updateConnections() { cons->clear(); manager->updateConfigurations(); QList configs = manager->allConfigurations(); foreach(QNetworkConfiguration p, configs) { QStringList strlist; strlist << p.name(); strlist << stateToString(p.state()); strlist << p.identifier(); strlist << typeToString(p.type()); QTreeWidgetItem *item; item = new QTreeWidgetItem(strlist); cons->insertTopLevelItem(0, item); } cons->sortItems ( 1, Qt::AscendingOrder); } void NMView::getActiveConnections() { QList configs = manager->allConfigurations(QNetworkConfiguration::Active); foreach(QNetworkConfiguration p, configs) { qWarning() << __FUNCTION__ << p.name() << p.identifier(); } // QDBusInterface iface(NM_DBUS_SERVICE, NM_DBUS_PATH, NM_DBUS_INTERFACE, dbc); // if (!iface.isValid()) { // qWarning() << "Could not find NetworkManager"; // return; // } // QVariant prop = iface.property("ActiveConnections"); // QList connections = prop.value >(); // foreach(QDBusObjectPath path, connections) { // QDBusInterface conDetails(NM_DBUS_SERVICE, path.path(), NM_DBUS_INTERFACE_ACTIVE_CONNECTION, dbc); // if (conDetails.isValid()) { // QString desc = path.path(); // conDetails.property("Connection Path").value().path(); // QList devices = conDetails.property("Devices").value >(); // // foreach(QDBusObjectPath devpath, devices) { // QDBusInterface devIface(NM_DBUS_SERVICE, devpath.path(), NM_DBUS_INTERFACE_DEVICE, dbc); // desc += " "+devIface.property("Interface").toString(); // desc += " "+QHostAddress(htonl(devIface.property("Ip4Address").toUInt())).toString(); // } // qWarning() << conDetails.property("Connection").value().path() << path.path(); // QListWidgetItem* item = new QListWidgetItem(desc, activeCons); // item->setData(Qt::UserRole, path.path()); // } // } } void NMView::update() { // QNetworkManagerInterface *dbIface; // dbIface = new QNetworkManagerInterface; // QList connections = dbIface->activeConnections(); // // foreach(QDBusObjectPath conpath, connections) { // QNetworkManagerConnectionActive *aConn; // aConn = new QNetworkManagerConnectionActive(conpath.path()); // // in case of accesspoint, specificObject will hold the accessPOintObjectPath // qWarning() << aConn->connection().path() << aConn->specificObject().path() << aConn->devices().count(); // QList devs = aConn->devices(); // foreach(QDBusObjectPath device, devs) { // qWarning() << " " << device.path(); // } // } QStringList connectionServices; connectionServices << NM_DBUS_SERVICE_SYSTEM_SETTINGS; connectionServices << NM_DBUS_SERVICE_USER_SETTINGS; foreach (QString service, connectionServices) { QDBusInterface allCons(service, NM_DBUS_PATH_SETTINGS, NM_DBUS_IFACE_SETTINGS, dbc); if (allCons.isValid()) { QDBusReply > reply = allCons.call("ListConnections"); if ( reply.isValid() ) { QList list = reply.value(); foreach(QDBusObjectPath path, list) { QDBusInterface sysIface(service, path.path(), NM_DBUS_IFACE_SETTINGS_CONNECTION, dbc); if (sysIface.isValid()) { qWarning() << ""; qWarning() << path.path(); // QDBusMessage r = sysIface.call("GetSettings"); QDBusReply< QNmSettingsMap > rep = sysIface.call("GetSettings"); QMap< QString, QMap > map = rep.value(); QList list = map.keys(); foreach (QString key, list) { QMap innerMap = map[key]; qWarning() << " Key: " << key; QMap::const_iterator i = innerMap.constBegin(); while (i != innerMap.constEnd()) { QString k = i.key(); qWarning() << " Key: " << k << " Entry: " << i.value(); i++; }//end innerMap }//end foreach key }//end settings connection } // foreach path } //end ListConnections } //end settingsInterface }// end services QDBusInterface iface(NM_DBUS_SERVICE, NM_DBUS_PATH, NM_DBUS_INTERFACE, dbc); if (iface.isValid()) { QVariant prop = iface.property("ActiveConnections"); QList connections = prop.value >(); foreach(QDBusObjectPath conpath, connections) { qWarning() << "Active connection" << conpath.path(); QDBusInterface conDetails(NM_DBUS_SERVICE, conpath.path(), NM_DBUS_INTERFACE_ACTIVE_CONNECTION, dbc); if (conDetails.isValid()) { QVariant prop = conDetails.property("Connection"); QDBusObjectPath connection = prop.value(); qWarning() << conDetails.property("Default").toBool() << connection.path(); // QVariant Sprop = conDetails.property("Devices"); // QList so = Sprop.value >(); // foreach(QDBusObjectPath device, so) { // if(device.path() == devicePath) { // path = connection.path(); // } // break; // } } } } qWarning() << ""; } void NMView::deactivate() { QList configs = manager->allConfigurations(QNetworkConfiguration::Active); foreach(QNetworkConfiguration p, configs) { qWarning() << "Active cons" << p.name(); if(p.name() == cons->currentItem()->text(0) && p.identifier() == cons->currentItem()->text(2)) { qWarning() <<__FUNCTION__<< p.name(); if(!sess) { sess = new QNetworkSession(p); connect(sess, SIGNAL(stateChanged(QNetworkSession::State)), this, SLOT(stateChanged(QNetworkSession::State))); connect(sess, SIGNAL(error(QNetworkSession::SessionError)), this, SLOT(networkSessionError(QNetworkSession::SessionError))); } sess->close(); delete sess; sess = 0; } } } void NMView::activate() { qWarning() << __FUNCTION__ << cons->currentItem()->text(0); QList configs = manager->allConfigurations(); foreach(QNetworkConfiguration p, configs) { if(p.name() == cons->currentItem()->text(0)) { sess = new QNetworkSession(p); connect(sess, SIGNAL(newConfigurationActivated()), this, SLOT(getActiveConnections())); connect(sess, SIGNAL(stateChanged(QNetworkSession::State)), this, SLOT(stateChanged(QNetworkSession::State))); connect(sess, SIGNAL(error(QNetworkSession::SessionError)), this, SLOT(networkSessionError(QNetworkSession::SessionError))); sess->open(); } } } void NMView::getDevices() { qWarning() << ""; qWarning() << __FUNCTION__; devicesTreeWidget->clear(); //qDBusRegisterMetaType(); if (!dbc.isConnected()) { qWarning() << "Unable to connect to D-Bus:" << dbc.lastError(); return; } QDBusInterface iface(NM_DBUS_SERVICE, NM_DBUS_PATH, NM_DBUS_INTERFACE, dbc); //NetworkManager interface if (!iface.isValid()) { qWarning() << "Could not find NetworkManager"; return; } // uint state = iface.property("State").toUInt(); // switch(state) { // case NM_STATE_UNKNOWN: // qWarning() << "State: Unknown"; break; // case NM_STATE_ASLEEP: // qWarning() << "State: Asleep"; break; // case NM_STATE_CONNECTING: // qWarning() << "State: Connecting"; break; // case NM_STATE_CONNECTED: // qWarning() << "State: Connected"; break; // case NM_STATE_DISCONNECTED: // qWarning() << "State: Disconnected"; break; // } //get list of network devices QTreeWidgetItem *item; QDBusReply > reply = iface.call("GetDevices"); if ( reply.isValid() ) { // qWarning() << "Current devices:"; QList list = reply.value(); foreach(QDBusObjectPath path, list) { QStringList devicesList; qWarning() << " " << path.path(); devicesList << path.path(); QDBusInterface devIface(NM_DBUS_SERVICE, path.path(), NM_DBUS_INTERFACE_DEVICE, dbc); if (devIface.isValid()) { ////// connect the dbus signal // /*if(*/dbc.connect(NM_DBUS_SERVICE, // path.path(), // NM_DBUS_INTERFACE_DEVICE, // "StateChanged", // this,SLOT(deviceStateChanged(quint32))); // { // qWarning() << "XXXXXXXXXX dbus connect successful" << path.path(); // } // qWarning() << " Managed: " << devIface.property("Managed").toBool(); devicesList << devIface.property("Managed").toString(); // qWarning() << " Interface: " << devIface.property("Interface").toString(); devicesList << devIface.property("Interface").toString(); // qWarning() << " HAL UDI: " << devIface.property("Udi").toString(); // qWarning() << " Driver: " << devIface.property("Driver").toString(); devicesList << devIface.property("Driver").toString(); QString x = deviceTypeToString(devIface.property("DeviceType").toUInt()); // qWarning() << " Type:" << x; devicesList << x; if( devIface.property("DeviceType").toUInt() == DEVICE_TYPE_802_11_WIRELESS) { qWarning() << "Device is WIFI"; // // findAccessPoints(path.path()); } QVariant v = devIface.property("State"); x = deviceStateToString(v.toUInt()); // qWarning() << " State:" << x; devicesList << x; quint32 ip = devIface.property("Ip4Address").toUInt(); // qWarning() << " IP4Address: " << QHostAddress(htonl(ip)).toString(); devicesList << QHostAddress(htonl(ip)).toString(); if (v.toUInt() == NM_DEVICE_STATE_ACTIVATED) { QString path = devIface.property("Ip4Config").value().path(); // qWarning() << " IP4Config: " << path; devicesList << path; QDBusInterface ipIface(NM_DBUS_SERVICE, path, NM_DBUS_INTERFACE_IP4_CONFIG, dbc); if (ipIface.isValid()) { // qWarning() << " Hostname: " << ipIface.property("Hostname").toString(); devicesList << ipIface.property("Hostname").toString(); // qWarning() << " Domains: " << ipIface.property("Domains").toStringList(); devicesList << ipIface.property("Domains").toStringList().join(", "); // qWarning() << " NisDomain: " << ipIface.property("NisDomain").toString(); QDBusArgument arg= ipIface.property("Addresses").value(); // qWarning() << " Addresses: " << ipIface.property("Addresses"); // qWarning() << " Nameservers: " << ipIface.property("Nameservers"); // qWarning() << " NisServers: " << ipIface.property("NisServers"); } } } item = new QTreeWidgetItem(devicesList); devicesTreeWidget->insertTopLevelItem(0, item); } } // netconfig(); } void NMView::readSettings() { QDBusInterface settingsiface(NM_DBUS_SERVICE_SYSTEM_SETTINGS, NM_DBUS_PATH_SETTINGS, NM_DBUS_IFACE_SETTINGS, dbc); //NetworkManagerSettings interface if (settingsiface.isValid()) { QDBusReply > reply = settingsiface.call("ListConnections"); if ( reply.isValid() ) { QList list = reply.value(); foreach(QDBusObjectPath path, list) { qWarning() <<__FUNCTION__ << path.path(); } } } QDBusInterface iface(NM_DBUS_SERVICE, NM_DBUS_PATH, NM_DBUS_INTERFACE, dbc); if (!iface.isValid()) { qWarning() << "Could not find NetworkManager"; return; } // QStringList list = item->text().split(" -> "); QVariant prop = iface.property("ActiveConnections"); QList connections = prop.value >(); foreach(QDBusObjectPath path, connections) { QDBusInterface conDetails(NM_DBUS_SERVICE, path.path(), NM_DBUS_INTERFACE_ACTIVE_CONNECTION, dbc); if (conDetails.isValid()) { QString desc = path.path(); qWarning() << desc; //if ( item->text(0) == conDetails.property("Connection").value().path() ) { // QListWidgetItem* item = new QTreeWidgetItem( desc, // cons); // item->setData(Qt::UserRole, desc); // activeItemActivated( item ); //} } } } void NMView::printConnectionDetails(const QString& service) { Q_UNUSED(service); // // qWarning() << __FUNCTION__ << service; // // QDBusConnection dbc = QDBusConnection::systemBus(); // if (!dbc.isConnected()) { // qWarning() << "Unable to connect to D-Bus:" << dbc.lastError(); // return; // } // QDBusInterface allCons(service, // NM_DBUS_PATH_SETTINGS, // NM_DBUS_IFACE_SETTINGS, // dbc); // // if (allCons.isValid()) { // QDBusReply > reply = allCons.call("ListConnections"); // // if ( reply.isValid() ) { // qWarning() << "Known connections:"; // QList list = reply.value(); // // foreach(QDBusObjectPath path, list) { // qWarning() << " " << path.path(); // // QDBusInterface sysIface(NM_DBUS_SERVICE_SYSTEM_SETTINGS, // path.path(), // NM_DBUS_IFACE_SETTINGS_CONNECTION, // dbc); // // if (sysIface.isValid()) { // QDBusMessage r = sysIface.call("GetSettings"); // QDBusReply< QSettingsMap > rep = sysIface.call("GetSettings"); // // qWarning() << " GetSettings:" << r.arguments() << r.signature() << rep.isValid() << sysIface.lastError(); // // QMap< QString, QMap > map = rep.value(); // QList list = map.keys(); // // foreach (QString key, list) { // QMap innerMap = map[key]; // qWarning() << " Key: " << key; // QMap::const_iterator i = innerMap.constBegin(); // // while (i != innerMap.constEnd()) { // QString k = i.key(); // qWarning() << " Key: " << k << " Entry: " << i.value(); // // if (k == "addresses" && i.value().canConvert()) { // QDBusArgument arg = i.value().value(); // arg.beginArray(); // // while (!arg.atEnd()) { // QDBusVariant addr; // arg >> addr; // uint ip = addr.variant().toUInt(); // qWarning() << ip; // qWarning() << " " << QHostAddress(htonl(ip)).toString(); // } // // } // i++; // } // } // } // } // } // } qWarning() << ""; } void NMView::getNetworkDevices() { } void NMView::connectionItemActivated( QTreeWidgetItem * item, int col ) { Q_UNUSED(col); qWarning() <<__FUNCTION__<< item->text(0); QDBusInterface iface(NM_DBUS_SERVICE, NM_DBUS_PATH, NM_DBUS_INTERFACE, dbc); if (!iface.isValid()) { qWarning() << "Could not find NetworkManager"; return; } QVariant prop = iface.property("ActiveConnections"); QList connections = prop.value >(); foreach(QDBusObjectPath path, connections) { QDBusInterface conDetails(NM_DBUS_SERVICE, path.path(), NM_DBUS_INTERFACE_ACTIVE_CONNECTION, dbc); if (conDetails.isValid()) { QString desc = path.path(); qWarning() << desc; if ( item->text(0) == conDetails.property("Connection").value().path() ) { // QListWidgetItem* item = new QTreeWidgetItem( desc, // cons); // item->setData(Qt::UserRole, desc); // activeItemActivated( item ); } } } } void NMView::deviceItemActivated( QTreeWidgetItem * item , int section) { Q_UNUSED(item); Q_UNUSED(section); // qWarning() << item->text(section) << item->text(4); //if(item->text(4) == "Wireless") findAccessPoints(item->text(0)); } void NMView::netconfig() { // qWarning() << __FUNCTION__; // qDBusRegisterMetaType(); QDBusConnection dbc = QDBusConnection::systemBus(); if (!dbc.isConnected()) { qWarning() << "Unable to connect to D-Bus:" << dbc.lastError(); return; } QDBusInterface iface(NM_DBUS_SERVICE, NM_DBUS_PATH, NM_DBUS_IFACE_SETTINGS_CONNECTION, dbc); if (!iface.isValid()) { qWarning() << "Could not find NetworkManager Settings"; return; } else { QDBusReply > reply = iface.call("ListConnections"); QList list = reply.value(); // qWarning() << reply.value(); foreach(QDBusObjectPath path, list) { qWarning() << " " << path.path(); } } } void NMView::findAccessPoints() { accessPointsTreeWidget->clear(); QDBusInterface iface(NM_DBUS_SERVICE, NM_DBUS_PATH, NM_DBUS_INTERFACE, dbc); QDBusReply > reply = iface.call("GetDevices"); if ( reply.isValid() ) { QList list = reply.value(); foreach(QDBusObjectPath path, list) { QDBusInterface devIface(NM_DBUS_SERVICE, path.path(), NM_DBUS_INTERFACE_DEVICE, dbc); if (devIface.isValid()) { if( devIface.property("DeviceType").toUInt() == DEVICE_TYPE_802_11_WIRELESS) { // qWarning() <<"deviface"<< devIface.path(); QDBusInterface wififace(NM_DBUS_SERVICE, devIface.path(), NM_DBUS_INTERFACE_DEVICE_WIRELESS, dbc); if (!wififace.isValid()) { qWarning() << "Could not find NetworkManager wireless interface"; return; } ///////////////////////// // if(dbc.connect(NM_DBUS_SERVICE, // path.path(), // NM_DBUS_INTERFACE_DEVICE_WIRELESS, // "PropertiesChanged", // this,SLOT(aPPropertiesChanged( QMap))) ) { // qWarning() << "PropertiesChanged connect"; // } else { // qWarning() << "NOT connect"; // } ///////////////////////// qWarning() <<"wififace"<< wififace.path(); QDBusReply > reply2 = wififace.call("GetAccessPoints"); if ( reply2.isValid() ) { QTreeWidgetItem *item; QList list2 = reply2.value(); foreach(QDBusObjectPath path2, list2) { QDBusInterface accessPointIface(NM_DBUS_SERVICE, path2.path(), NM_DBUS_INTERFACE_ACCESS_POINT, dbc); if (accessPointIface.isValid()) { //// qWarning() <<"path2" << path2.path(); // if(dbc.connect(NM_DBUS_SERVICE, //signal strength // path2.path(), // NM_DBUS_INTERFACE_ACCESS_POINT, // "PropertiesChanged", // this,SLOT(aPPropertiesChanged( QMap))) ) { // qWarning() << "PropertiesChanged connect"; // } else { // qWarning() << "NOT connect"; // // } QStringList accessPoints; accessPoints << accessPointIface.property("Ssid").toString(); accessPoints << QString::number(accessPointIface.property("Strength").toInt()); accessPoints << securityCapabilitiesToString(accessPointIface.property("WpaFlags" ).toInt()); accessPoints << securityCapabilitiesToString(accessPointIface.property("RsnFlags" ).toInt()); accessPoints << accessPointIface.property("Frequency" ).toString(); accessPoints << accessPointIface.property("HwAddress" ).toString(); accessPoints << deviceModeToString(accessPointIface.property("Mode" ).toInt()); accessPoints << accessPointIface.property("MaxBitrate" ).toString(); //HwAddress // if(accessPointIface.property("Flags" ).toInt() == NM_802_11_AP_FLAGS_PRIVACY ) { // qWarning() << "Secure"; // } item = new QTreeWidgetItem(accessPoints); accessPointsTreeWidget->insertTopLevelItem(0, item); } } } } } } } } QString NMView::deviceStateToString(int state) { QString ret; switch(state) { case NM_DEVICE_STATE_UNKNOWN: ret = "Unknown"; break; case NM_DEVICE_STATE_UNMANAGED: ret = "Unmanaged"; break; case NM_DEVICE_STATE_UNAVAILABLE: ret = "Unavailable"; break; case NM_DEVICE_STATE_DISCONNECTED: ret = "Disconnected"; break; case NM_DEVICE_STATE_PREPARE: ret = "Preparing to connect"; break; case NM_DEVICE_STATE_CONFIG: ret = "Being configured"; break; case NM_DEVICE_STATE_NEED_AUTH: ret = "Awaiting secrets"; break; case NM_DEVICE_STATE_IP_CONFIG: ret = "IP requested"; break; case NM_DEVICE_STATE_ACTIVATED: ret = "Activated"; break; case NM_DEVICE_STATE_FAILED: ret = "FAILED"; break; }; return ret; } QString NMView::deviceTypeToString(int device) { QString ret; switch(device) { case DEVICE_TYPE_UNKNOWN: ret = "Unknown"; break; case DEVICE_TYPE_802_3_ETHERNET: ret = "Ethernet"; break; case DEVICE_TYPE_802_11_WIRELESS: ret = "Wireless"; break; case DEVICE_TYPE_GSM: ret = "GSM"; break; case DEVICE_TYPE_CDMA: ret = "CDMA"; break; }; return ret; } QString NMView::securityCapabilitiesToString(int caps) { int check = caps; // qWarning() << __FUNCTION__<< caps; QString ret; if( check == 0 ) ret += "None."; if( (check & NM_802_11_AP_SEC_PAIR_WEP40)) ret += " 40-bit WEP encryption. "; if( (check & NM_802_11_AP_SEC_PAIR_WEP104) ) ret += " 104-bit WEP encryption. "; if( (check & NM_802_11_AP_SEC_PAIR_TKIP) ) ret += " TKIP encryption. "; if( (check & NM_802_11_AP_SEC_PAIR_CCMP) ) ret += " CCMP encryption. "; if( (check & NM_802_11_AP_SEC_GROUP_WEP40)) ret += " 40-bit WEP cipher. "; if( (check & NM_802_11_AP_SEC_GROUP_WEP104)) ret += " 104-bit WEP cipher. "; if( (check & NM_802_11_AP_SEC_GROUP_TKIP) ) ret += " TKIP cipher. "; if( (check & NM_802_11_AP_SEC_GROUP_CCMP) ) ret += " CCMP cipher. "; if( (check & NM_802_11_AP_SEC_KEY_MGMT_PSK)) ret += " PSK key management. "; if( (check & NM_802_11_AP_SEC_KEY_MGMT_802_1X) ) ret += " 802.1x key management. "; return ret; } QString NMView::deviceModeToString(int mode) { QString ret; switch (mode) { case NM_802_11_MODE_UNKNOWN: ret = "Unknown"; break; case NM_802_11_MODE_ADHOC: ret = " (Adhoc)."; break; case NM_802_11_MODE_INFRA: ret = " (Infrastructure)"; }; return ret; } void NMView::netManagerState(quint32 state) { qWarning() << __FUNCTION__ << state;// << old << reason; switch(state) { case NM_STATE_UNKNOWN: qWarning() << "The NetworkManager daemon is in an unknown state. "; break; case NM_STATE_ASLEEP: qWarning() << "The NetworkManager daemon is asleep and all interfaces managed by it are inactive. "; break; case NM_STATE_CONNECTING: qWarning() << "The NetworkManager daemon is connecting a device. FIXME: What does this mean when one device is active and another is connecting? "; break; case NM_STATE_CONNECTED: qWarning() <<"The NetworkManager daemon is connected. "; break; case NM_STATE_DISCONNECTED: qWarning() << "The NetworkManager daemon is disconnected."; break; }; } void NMView::deviceStateChanged(quint32 state) { qWarning() << __FUNCTION__ << state; switch(state) { case NM_DEVICE_STATE_UNKNOWN : qWarning() <<"The device is in an unknown state. "; break; case NM_DEVICE_STATE_UNMANAGED: qWarning() <<"The device is not managed by NetworkManager."; break; case NM_DEVICE_STATE_UNAVAILABLE: qWarning() <<"The device cannot be used (carrier off, rfkill, etc)."; break; case NM_DEVICE_STATE_DISCONNECTED: qWarning() <<"The device is not connected."; break; case NM_DEVICE_STATE_PREPARE: qWarning() <<"The device is preparing to connect."; break; case NM_DEVICE_STATE_CONFIG: qWarning() <<"The device is being configured."; break; case NM_DEVICE_STATE_NEED_AUTH: qWarning() <<"The device is awaiting secrets necessary to continue connection."; break; case NM_DEVICE_STATE_IP_CONFIG: qWarning() <<"The IP settings of the device are being requested and configured."; break; case NM_DEVICE_STATE_ACTIVATED: qWarning() <<"The device is active."; break; case NM_DEVICE_STATE_FAILED: qWarning() <<"The device is in a failure state following an attempt to activate it."; break; }; } void NMView::updateCompleted() { qWarning() << __FUNCTION__; } void NMView::newConfigurationActivated() { qWarning() << __FUNCTION__; getActiveConnections(); } void NMView::stateChanged(QNetworkSession::State state) { // QString stateStringstr; switch (state) { case QNetworkSession::Invalid: stateString = "Invalid session"; break; case QNetworkSession::NotAvailable: stateString = "Session is defined but not yet discovered"; break; case QNetworkSession::Connecting: stateString = "Session is being established"; break; case QNetworkSession::Connected: stateString = "Session is active and can be used for socket operations"; cons->currentItem()->setText(1, "Active"); break; case QNetworkSession::Closing: stateString = "Session is being shutdown"; break; case QNetworkSession::Disconnected: qWarning() << __FUNCTION__; manager->updateConfigurations(); stateString = "Session disconnected"; cons->currentItem()->setText(1,"Discovered") ; break; case QNetworkSession::Roaming: stateString = "session is roaming from one AP to another"; break; }; qWarning() << __FUNCTION__ << state << stateString; } QString NMView::stateToString(int state) { switch (state) { case QNetworkConfiguration::Undefined: return "Undefined"; break; case QNetworkConfiguration::Defined: return "Defined"; break; case QNetworkConfiguration::Discovered: return "Discovered"; break; case QNetworkConfiguration::Active: return "Active"; break; }; return ""; } void NMView::configurationAdded(const QNetworkConfiguration &config) { qWarning() << __FUNCTION__<< config.name() << config.identifier(); } QString NMView::typeToString(int type) { switch(type) { case QNetworkConfiguration::InternetAccessPoint: return "Internet AccessPoint"; break; case QNetworkConfiguration::ServiceNetwork: return "Service Network"; break; }; return QString(); } void NMView::aPPropertiesChanged( QMap map) { //QMap::const_iterator iterator = d->values.find(type + QLatin1String("Path")) QMapIterator i(map); while (i.hasNext()) { i.next(); if( i.key() == "State") { qWarning() << __FUNCTION__ << i.key() << ": " << i.value().toUInt(); // deviceStateChanged(i.value().toUInt()); } else if( i.key() == "ActiveAccessPoint") { qWarning() << __FUNCTION__ << i.key() << ": " << i.value().value().path(); } else if( i.key() == "Strength") qWarning() << __FUNCTION__ << i.key() << ": " << i.value().toUInt(); else qWarning() << __FUNCTION__ << i.key() << ": " << i.value(); } } void NMView::networkSessionError(QNetworkSession::SessionError error) { QString errorStr; switch(error) { case QNetworkSession::RoamingError: errorStr = "Roaming error"; break; case QNetworkSession::SessionAbortedError: errorStr = "Session aborted by user or system"; break; default: case QNetworkSession::UnknownSessionError: errorStr = "Unidentified Error"; break; }; QMessageBox::warning(this, tr("NMView"), errorStr, QMessageBox::Ok); }