Fix crash in case tdelibs is built without support for NetworkManager.

Fix crash in case of unsuccessful search for device.
This resolves issue #8.

Signed-off-by: Slávek Banko <slavek.banko@axis.cz>
pull/9/head
Slávek Banko 3 years ago
parent 0735c7e3f8
commit 88cc44bac4
No known key found for this signature in database
GPG Key ID: 608F5293A04BE668

@ -287,9 +287,11 @@ ConnectionSettingsDialogImpl::slotConnect()
TDEGlobalNetworkManager* nm = TDEGlobal::networkManager(); TDEGlobalNetworkManager* nm = TDEGlobal::networkManager();
// add/save the connection // add/save the connection
if (nm->saveConnection(_conn)) { if (nm && nm->saveConnection(_conn))
{
// activate device // activate device
if (_conn && nm) { if (_conn)
{
// // VPN connection needs a special specific object // // VPN connection needs a special specific object
// if (_conn->getType() == NM_SETTING_VPN_SETTING_NAME) { // if (_conn->getType() == NM_SETTING_VPN_SETTING_NAME) {
// TQT_DBusObjectPath act_conn = nm->getDefaultActiveConnection(); // TQT_DBusObjectPath act_conn = nm->getDefaultActiveConnection();
@ -329,7 +331,8 @@ ConnectionSettingsDialogImpl::slotSave()
TDEGlobalNetworkManager* nm = TDEGlobal::networkManager(); TDEGlobalNetworkManager* nm = TDEGlobal::networkManager();
// save the connection // save the connection
if (!nm->saveConnection(_conn)) { if (!nm || !nm->saveConnection(_conn))
{
KMessageBox::error(this, i18n("<qt><b>Unable to save network connection!</b><p>Potential causes:<br> * Insufficient permissions<br> * NetworkManager not running<br> * DBUS failure</qt>"), i18n("Unable to perform requested operation")); KMessageBox::error(this, i18n("<qt><b>Unable to save network connection!</b><p>Potential causes:<br> * Insufficient permissions<br> * NetworkManager not running<br> * DBUS failure</qt>"), i18n("Unable to perform requested operation"));
} }
@ -453,14 +456,14 @@ ConnectionSettingsDialogImpl::slotEnableButtons()
TDENetworkErrorStringMap errorStringMap; TDENetworkErrorStringMap errorStringMap;
TDENetworkConnectionErrorFlags::TDENetworkConnectionErrorFlags errorFlags; TDENetworkConnectionErrorFlags::TDENetworkConnectionErrorFlags errorFlags;
bool ret; bool ret;
ret = nm->verifyConnectionSettings(_conn, &errorFlags, &errorStringMap); ret = (nm ? nm->verifyConnectionSettings(_conn, &errorFlags, &errorStringMap) : 0);
btnConnect->setEnabled(ret); btnConnect->setEnabled(ret);
if (!ret) { if (!ret) {
// FIXME // FIXME
// Check the error flags and the current dialog type to determine if an error message is warranted // Check the error flags and the current dialog type to determine if an error message is warranted
// KMessageBox::error(this, errorString, i18n("Invalid Settings Detected")); // KMessageBox::error(this, errorString, i18n("Invalid Settings Detected"));
} }
pbSave->setEnabled(nm->verifyConnectionSettings(_conn)); pbSave->setEnabled(nm ? nm->verifyConnectionSettings(_conn) : 0);
} }
} }

@ -76,10 +76,13 @@ DeviceTrayComponent::DeviceTrayComponent(TQString device, KSystemTray * parent,
// Trigger an initial hardware information update // Trigger an initial hardware information update
TDENetworkDevice* dev = dynamic_cast<TDENetworkDevice*>(hwdevices->findByUniqueID(m_device)); TDENetworkDevice* dev = dynamic_cast<TDENetworkDevice*>(hwdevices->findByUniqueID(m_device));
TDENetworkConnectionManager* deviceConnMan = dev->connectionManager(); TDENetworkConnectionManager* deviceConnMan = (dev ? dev->connectionManager() : NULL);
if (deviceConnMan)
{
connect(deviceConnMan, TQT_SIGNAL(networkDeviceStateChanged(TDENetworkConnectionStatus::TDENetworkConnectionStatus, TDENetworkConnectionStatus::TDENetworkConnectionStatus, TQString)), TQT_SLOT(deviceStateChanged(TDENetworkConnectionStatus::TDENetworkConnectionStatus, TDENetworkConnectionStatus::TDENetworkConnectionStatus, TQString))); connect(deviceConnMan, TQT_SIGNAL(networkDeviceStateChanged(TDENetworkConnectionStatus::TDENetworkConnectionStatus, TDENetworkConnectionStatus::TDENetworkConnectionStatus, TQString)), TQT_SLOT(deviceStateChanged(TDENetworkConnectionStatus::TDENetworkConnectionStatus, TDENetworkConnectionStatus::TDENetworkConnectionStatus, TQString)));
connect(deviceConnMan, TQT_SIGNAL(networkDeviceEvent(TDENetworkDeviceEventType::TDENetworkDeviceEventType, TQString)), this, TQT_SLOT(deviceEventHandler(TDENetworkDeviceEventType::TDENetworkDeviceEventType, TQString))); connect(deviceConnMan, TQT_SIGNAL(networkDeviceEvent(TDENetworkDeviceEventType::TDENetworkDeviceEventType, TQString)), this, TQT_SLOT(deviceEventHandler(TDENetworkDeviceEventType::TDENetworkDeviceEventType, TQString)));
}
m_pixmaps[TDENetworkConnectionStatus::Invalid] = "nm_no_connection"; m_pixmaps[TDENetworkConnectionStatus::Invalid] = "nm_no_connection";
m_pixmaps[TDENetworkConnectionStatus::UnManaged] = "nm_no_connection"; m_pixmaps[TDENetworkConnectionStatus::UnManaged] = "nm_no_connection";
@ -128,12 +131,16 @@ TQStringList DeviceTrayComponent::getToolTipText()
TDENetworkDevice* dev = dynamic_cast<TDENetworkDevice*>(hwdevices->findByUniqueID(m_device)); TDENetworkDevice* dev = dynamic_cast<TDENetworkDevice*>(hwdevices->findByUniqueID(m_device));
TQStringList list; TQStringList list;
TDENetworkConnectionManager* deviceConnMan = dev->connectionManager(); TDENetworkConnectionManager* deviceConnMan = (dev ? dev->connectionManager() : NULL);
if (deviceConnMan)
{
TDENetworkConnectionStatus::TDENetworkConnectionStatus state = deviceConnMan->deviceStatus().statusFlags; TDENetworkConnectionStatus::TDENetworkConnectionStatus state = deviceConnMan->deviceStatus().statusFlags;
if (tooltipForConnState(state) != "") { if (tooltipForConnState(state) != "")
{
list.append(i18n("Device: %1").arg(dev->deviceNode())); list.append(i18n("Device: %1").arg(dev->deviceNode()));
list.append(i18n("State: %1").arg(tooltipForConnState(state))); list.append(i18n("State: %1").arg(tooltipForConnState(state)));
} }
}
return list; return list;
} }
@ -203,6 +210,10 @@ void DeviceTrayComponent::deviceStateChanged(TDENetworkConnectionStatus::TDENetw
TDEGlobalNetworkManager* nm = TDEGlobal::networkManager(); TDEGlobalNetworkManager* nm = TDEGlobal::networkManager();
TDENetworkDevice* dev = dynamic_cast<TDENetworkDevice*>(hwdevices->findByUniqueID(m_device)); TDENetworkDevice* dev = dynamic_cast<TDENetworkDevice*>(hwdevices->findByUniqueID(m_device));
if (!dev)
{
return;
}
if (dev->deviceNode() != deviceNode) { if (dev->deviceNode() != deviceNode) {
kdDebug() << k_funcinfo << "WARNING: Got networkDeviceStateChanged signal for interface '" << deviceNode << "', but my interface is '" << dev->deviceNode() << "'! Ignoring..."; kdDebug() << k_funcinfo << "WARNING: Got networkDeviceStateChanged signal for interface '" << deviceNode << "', but my interface is '" << dev->deviceNode() << "'! Ignoring...";
return; return;
@ -219,7 +230,8 @@ void DeviceTrayComponent::deviceStateChanged(TDENetworkConnectionStatus::TDENetw
TQTimer::singleShot(0, this, TQT_SLOT(sendGetCenterStage())); TQTimer::singleShot(0, this, TQT_SLOT(sendGetCenterStage()));
} }
else if (newState & TDENetworkConnectionStatus::Connected) { else if (newState & TDENetworkConnectionStatus::Connected) {
if (nm->defaultNetworkDevices().contains(m_device)) { if (nm && nm->defaultNetworkDevices().contains(m_device))
{
TQTimer::singleShot(0, this, TQT_SLOT(sendGetCenterStage())); TQTimer::singleShot(0, this, TQT_SLOT(sendGetCenterStage()));
} }
} }

@ -51,11 +51,24 @@ class CellularDeviceTrayPrivate
void CellularDeviceTray::newConnection() void CellularDeviceTray::newConnection()
{ {
TDEGlobalNetworkManager* nm = TDEGlobal::networkManager(); TDEGlobalNetworkManager* nm = TDEGlobal::networkManager();
if (!nm)
{
return;
}
TDENetworkDevice* dev = dynamic_cast<TDENetworkDevice*>(hwdevices->findByUniqueID(d->dev)); TDENetworkDevice* dev = dynamic_cast<TDENetworkDevice*>(hwdevices->findByUniqueID(d->dev));
if (!dev)
{
return;
}
// create an appropriate connection // create an appropriate connection
TDENetworkConnection* conn = 0; TDENetworkConnection* conn = 0;
TDENetworkConnectionManager* deviceConnMan = dev->connectionManager(); TDENetworkConnectionManager* deviceConnMan = dev->connectionManager();
if (!deviceConnMan)
{
return;
}
switch (deviceConnMan->deviceType()) { switch (deviceConnMan->deviceType()) {
case TDENetworkDeviceType::Modem: case TDENetworkDeviceType::Modem:
conn = new TDEModemConnection(); conn = new TDEModemConnection();
@ -75,19 +88,24 @@ void CellularDeviceTray::newConnection()
void CellularDeviceTray::addMenuItems(TDEPopupMenu* menu) void CellularDeviceTray::addMenuItems(TDEPopupMenu* menu)
{ {
TDENetworkDevice* dev = dynamic_cast<TDENetworkDevice*>(hwdevices->findByUniqueID(d->dev)); TDENetworkDevice* dev = dynamic_cast<TDENetworkDevice*>(hwdevices->findByUniqueID(d->dev));
if (!dev)
{
return;
}
// device title // device title
Subhead* subhead = new Subhead (menu, "subhead", dev->deviceNode(), SmallIcon("nm_device_wwan", TQIconSet::Automatic)); Subhead* subhead = new Subhead (menu, "subhead", dev->deviceNode(), SmallIcon("nm_device_wwan", TQIconSet::Automatic));
menu->insertItem (subhead, -1, -1); menu->insertItem (subhead, -1, -1);
TDEGlobalNetworkManager* nm = TDEGlobal::networkManager();
TDENetworkConnectionManager* deviceConnMan = dev->connectionManager(); TDENetworkConnectionManager* deviceConnMan = dev->connectionManager();
if (!deviceConnMan->deviceInformation().managed) { if (!nm || !deviceConnMan || !deviceConnMan->deviceInformation().managed)
{
// device is not managed by NM -> do not show any connections // device is not managed by NM -> do not show any connections
subhead = new Subhead(menu, "subhead2", i18n("Not managed"), SmallIcon("no", TQIconSet::Automatic)); subhead = new Subhead(menu, "subhead2", i18n("Not managed"), SmallIcon("no", TQIconSet::Automatic));
menu->insertItem(subhead, -1, -1); menu->insertItem(subhead, -1, -1);
} }
else { else {
TDEGlobalNetworkManager* nm = TDEGlobal::networkManager();
TDENetworkConnection* active_conn = NULL; TDENetworkConnection* active_conn = NULL;
if ((!(deviceConnMan->deviceInformation().statusFlags & TDENetworkConnectionStatus::Disconnected)) if ((!(deviceConnMan->deviceInformation().statusFlags & TDENetworkConnectionStatus::Disconnected))
&& (!(deviceConnMan->deviceInformation().statusFlags & TDENetworkConnectionStatus::Invalid))) { && (!(deviceConnMan->deviceInformation().statusFlags & TDENetworkConnectionStatus::Invalid))) {

@ -73,7 +73,7 @@ void NetworkMenuItem::slotActivate()
TDEGlobalNetworkManager* nm = TDEGlobal::networkManager(); TDEGlobalNetworkManager* nm = TDEGlobal::networkManager();
TDENetworkDevice* dev = dynamic_cast<TDENetworkDevice*>(hwdevices->findByUniqueID(d->dev)); TDENetworkDevice* dev = dynamic_cast<TDENetworkDevice*>(hwdevices->findByUniqueID(d->dev));
TDENetworkConnection* conn = nm->findConnectionByUUID(d->conn); TDENetworkConnection* conn = (nm ? nm->findConnectionByUUID(d->conn) : 0);
if (dev && conn) if (dev && conn)
{ {

@ -220,12 +220,16 @@ void Tray::contextMenuAboutToShow (TDEPopupMenu* menu)
{ {
TDEGlobalNetworkManager* nm = TDEGlobal::networkManager(); TDEGlobalNetworkManager* nm = TDEGlobal::networkManager();
if (tdenetworkmanager_editor_dialog_count == 0) nm->loadConnectionInformation();
// clear menu // clear menu
menu->clear(); menu->clear();
if (!(nm->backendStatus() & TDENetworkGlobalManagerFlags::BackendUnavailable)) { if (nm && !(nm->backendStatus() & TDENetworkGlobalManagerFlags::BackendUnavailable))
{
if (tdenetworkmanager_editor_dialog_count == 0)
{
nm->loadConnectionInformation();
}
// actions for each Device // actions for each Device
for (TQValueList<TrayComponent*>::Iterator it = d->trayComponents.begin(); it != d->trayComponents.end(); ++it) { for (TQValueList<TrayComponent*>::Iterator it = d->trayComponents.begin(); it != d->trayComponents.end(); ++it) {
(*it)->addMenuItems(menu); (*it)->addMenuItems(menu);
@ -248,28 +252,36 @@ void Tray::contextMenuAboutToShow (TDEPopupMenu* menu)
TDEAction * deviceNewConnAction = 0; TDEAction * deviceNewConnAction = 0;
if (dev_comp) { if (dev_comp) {
TDENetworkDevice* dev_comp_dev = dynamic_cast<TDENetworkDevice*>(hwdevices->findByUniqueID(dev_comp->device())); TDENetworkDevice* dev_comp_dev = dynamic_cast<TDENetworkDevice*>(hwdevices->findByUniqueID(dev_comp->device()));
if (dev_comp_dev)
{
TQString actionName = TQString("new_connection_%1").arg(dev_comp_dev->deviceNode()); TQString actionName = TQString("new_connection_%1").arg(dev_comp_dev->deviceNode());
TQString menuCaption = TQString("%1").arg(dev_comp_dev->deviceNode()); TQString menuCaption = TQString("%1").arg(dev_comp_dev->deviceNode());
if (menuCaption.contains("eth", FALSE) > 0) { if (menuCaption.contains("eth", FALSE) > 0)
{
menuCaption = menuCaption.insert(0, "Wired Connection ("); menuCaption = menuCaption.insert(0, "Wired Connection (");
} }
else if (menuCaption.contains("wlan", FALSE) > 0) { else if (menuCaption.contains("wlan", FALSE) > 0)
{
menuCaption = menuCaption.insert(0, "Wireless Connection ("); menuCaption = menuCaption.insert(0, "Wireless Connection (");
} }
else if (menuCaption.contains("pan", FALSE) > 0) { else if (menuCaption.contains("pan", FALSE) > 0)
{
menuCaption = menuCaption.insert(0, "Private Area Connection ("); menuCaption = menuCaption.insert(0, "Private Area Connection (");
} }
else { else
{
menuCaption = menuCaption.insert(0, "Unknown Connection ("); menuCaption = menuCaption.insert(0, "Unknown Connection (");
} }
menuCaption = menuCaption.append(")"); menuCaption = menuCaption.append(")");
deviceNewConnAction = actionCollection ()->action (actionName.utf8()); deviceNewConnAction = actionCollection ()->action (actionName.utf8());
if (!deviceNewConnAction) { if (!deviceNewConnAction)
{
deviceNewConnAction = new TDEAction (menuCaption, 0, (*it), TQT_SLOT(newConnection()), actionCollection(), actionName.utf8()); deviceNewConnAction = new TDEAction (menuCaption, 0, (*it), TQT_SLOT(newConnection()), actionCollection(), actionName.utf8());
} }
newConnActionMenu->insert(deviceNewConnAction); newConnActionMenu->insert(deviceNewConnAction);
} }
} }
}
// New VPN connection option // New VPN connection option
++it; ++it;
TDEAction * deviceNewConnAction = 0; TDEAction * deviceNewConnAction = 0;
@ -278,7 +290,8 @@ void Tray::contextMenuAboutToShow (TDEPopupMenu* menu)
deviceNewConnAction = new TDEAction (menuCaption, 0, TQT_TQOBJECT(this), TQT_SLOT(slotNewVPNConnection()), actionCollection(), actionName.utf8()); deviceNewConnAction = new TDEAction (menuCaption, 0, TQT_TQOBJECT(this), TQT_SLOT(slotNewVPNConnection()), actionCollection(), actionName.utf8());
newConnActionMenu->insert(deviceNewConnAction); newConnActionMenu->insert(deviceNewConnAction);
} }
else if ( devices == 1 ) { else if ( devices == 1 )
{
newConnAction = actionCollection ()->action ("new_connection"); newConnAction = actionCollection ()->action ("new_connection");
TQT_BASE_OBJECT_NAME::disconnect( newConnAction, TQT_SIGNAL(activated()) ); TQT_BASE_OBJECT_NAME::disconnect( newConnAction, TQT_SIGNAL(activated()) );
TQT_BASE_OBJECT_NAME::connect( newConnAction, TQT_SIGNAL(activated()), d->trayComponents[0], TQT_SLOT(newConnection())); TQT_BASE_OBJECT_NAME::connect( newConnAction, TQT_SIGNAL(activated()), d->trayComponents[0], TQT_SLOT(newConnection()));
@ -490,8 +503,10 @@ void Tray::createDeviceTrayComponent(TQString dev)
{ {
DeviceTrayComponent* devTray = 0; DeviceTrayComponent* devTray = 0;
TDENetworkDevice* new_tray_dev = dynamic_cast<TDENetworkDevice*>(hwdevices->findByUniqueID(dev)); TDENetworkDevice* new_tray_dev = dynamic_cast<TDENetworkDevice*>(hwdevices->findByUniqueID(dev));
TDENetworkConnectionManager* deviceConnMan = new_tray_dev->connectionManager(); TDENetworkConnectionManager* deviceConnMan = (new_tray_dev ? new_tray_dev->connectionManager() : NULL);
// different tray icons for different device types! // different tray icons for different device types!
if (deviceConnMan)
{
switch (deviceConnMan->deviceType()) switch (deviceConnMan->deviceType())
{ {
case TDENetworkDeviceType::WiredEthernet: case TDENetworkDeviceType::WiredEthernet:
@ -506,6 +521,7 @@ void Tray::createDeviceTrayComponent(TQString dev)
default: default:
kdWarning() << k_funcinfo << "UDI: " << dev << " has unknown devicetype: " << deviceConnMan->deviceType() << endl; kdWarning() << k_funcinfo << "UDI: " << dev << " has unknown devicetype: " << deviceConnMan->deviceType() << endl;
} }
}
if(devTray) if(devTray)
{ {
connect(devTray, TQT_SIGNAL(needsCenterStage(TrayComponent*, bool)), TQT_SLOT(trayComponentNeedsCenterStage(TrayComponent*, bool))); connect(devTray, TQT_SIGNAL(needsCenterStage(TrayComponent*, bool)), TQT_SLOT(trayComponentNeedsCenterStage(TrayComponent*, bool)));
@ -637,10 +653,14 @@ void Tray::trayComponentNeedsCenterStage(TrayComponent *component, bool needsIt)
TDEGlobalNetworkManager* nm = TDEGlobal::networkManager(); TDEGlobalNetworkManager* nm = TDEGlobal::networkManager();
DeviceTrayComponent * dtc = dynamic_cast<DeviceTrayComponent*>(component); DeviceTrayComponent * dtc = dynamic_cast<DeviceTrayComponent*>(component);
if (dtc) { if (nm && dtc)
{
TDENetworkDevice* dtc_comp_dev = dynamic_cast<TDENetworkDevice*>(hwdevices->findByUniqueID(dtc->device())); TDENetworkDevice* dtc_comp_dev = dynamic_cast<TDENetworkDevice*>(hwdevices->findByUniqueID(dtc->device()));
kdDebug() << k_funcinfo << dtc_comp_dev->deviceNode() << " : " << needsIt << endl; kdDebug()
TDENetworkDevice * device = dtc_comp_dev; << k_funcinfo
<< (dtc_comp_dev ? dtc_comp_dev->deviceNode() : TQString("<unknown device>"))
<< " : " << needsIt
<< endl;
if (needsIt) { if (needsIt) {
if (d->foregroundTrayComponent) { if (d->foregroundTrayComponent) {
disconnectTrayDeviceManager(); disconnectTrayDeviceManager();
@ -663,8 +683,14 @@ void Tray::trayComponentNeedsCenterStage(TrayComponent *component, bool needsIt)
break; break;
} }
} }
kdDebug() << " Device " << dtc_comp_dev->deviceNode() << " background, new foreground device: " << device->deviceNode() << endl;
if (d->foregroundTrayComponent) { if (d->foregroundTrayComponent) {
TDENetworkDevice* newDtc_dev = dynamic_cast<TDENetworkDevice*>(hwdevices->findByUniqueID(d->foregroundTrayComponent->device()));
kdDebug()
<< " Device "
<< (dtc_comp_dev ? dtc_comp_dev->deviceNode() : TQString("<unknown device>"))
<< " background, new foreground device: "
<< (newDtc_dev ? newDtc_dev->deviceNode() : TQString("<unknown device>"))
<< endl;
connectTrayDeviceManager(); connectTrayDeviceManager();
updateTrayDeviceManagerState(); updateTrayDeviceManagerState();
} }
@ -702,26 +728,34 @@ void Tray::trayUiChanged()
DeviceTrayComponent * dtc = d->foregroundTrayComponent; DeviceTrayComponent * dtc = d->foregroundTrayComponent;
if (dtc) { if (dtc) {
TDENetworkDevice* dtc_comp_dev = dynamic_cast<TDENetworkDevice*>(hwdevices->findByUniqueID(dtc->device())); TDENetworkDevice* dtc_comp_dev = dynamic_cast<TDENetworkDevice*>(hwdevices->findByUniqueID(dtc->device()));
if (dtc_comp_dev)
{
TDENetworkConnectionManager* deviceConnMan = dtc_comp_dev->connectionManager(); TDENetworkConnectionManager* deviceConnMan = dtc_comp_dev->connectionManager();
if (deviceConnMan)
{
updateTrayIcon(deviceConnMan->deviceStatus().statusFlags); updateTrayIcon(deviceConnMan->deviceStatus().statusFlags);
} }
} }
}
}
void Tray::showActiveDeviceTray() { void Tray::showActiveDeviceTray() {
// If the current foreground tray device is deactivated, find the first active device and use it instead // If the current foreground tray device is deactivated, find the first active device and use it instead
bool needsNewDeviceTrayComponent = true; bool needsNewDeviceTrayComponent = true;
if (d->foregroundTrayComponent) { if (d->foregroundTrayComponent)
{
needsNewDeviceTrayComponent = false;
TDENetworkDevice* dtc_comp_dev = dynamic_cast<TDENetworkDevice*>(hwdevices->findByUniqueID(d->foregroundTrayComponent->device())); TDENetworkDevice* dtc_comp_dev = dynamic_cast<TDENetworkDevice*>(hwdevices->findByUniqueID(d->foregroundTrayComponent->device()));
TDENetworkConnectionManager* deviceConnMan = dtc_comp_dev->connectionManager(); TDENetworkConnectionManager* deviceConnMan = (dtc_comp_dev ? dtc_comp_dev->connectionManager() : NULL);
if (deviceConnMan)
{
TDENetworkConnectionStatus::TDENetworkConnectionStatus statusFlags = deviceConnMan->deviceStatus().statusFlags; TDENetworkConnectionStatus::TDENetworkConnectionStatus statusFlags = deviceConnMan->deviceStatus().statusFlags;
if ((statusFlags == TDENetworkConnectionStatus::Disconnected) if ((statusFlags == TDENetworkConnectionStatus::Disconnected)
|| (statusFlags == (TDENetworkConnectionStatus::Disconnected | TDENetworkConnectionStatus::LinkUnavailable)) || (statusFlags == (TDENetworkConnectionStatus::Disconnected | TDENetworkConnectionStatus::LinkUnavailable))
|| (statusFlags & TDENetworkConnectionStatus::Invalid) || (statusFlags & TDENetworkConnectionStatus::Invalid))
) { {
needsNewDeviceTrayComponent = true; needsNewDeviceTrayComponent = true;
} }
else {
needsNewDeviceTrayComponent = false;
} }
} }
@ -734,20 +768,25 @@ void Tray::showActiveDeviceTray() {
DeviceTrayComponent* newDtc = dynamic_cast<DeviceTrayComponent*> (*it); DeviceTrayComponent* newDtc = dynamic_cast<DeviceTrayComponent*> (*it);
if (newDtc) { if (newDtc) {
TDENetworkDevice* dtc_comp_dev = dynamic_cast<TDENetworkDevice*>(hwdevices->findByUniqueID(newDtc->device())); TDENetworkDevice* dtc_comp_dev = dynamic_cast<TDENetworkDevice*>(hwdevices->findByUniqueID(newDtc->device()));
TDENetworkConnectionManager* deviceConnMan = dtc_comp_dev->connectionManager(); TDENetworkConnectionManager* deviceConnMan = (dtc_comp_dev ? dtc_comp_dev->connectionManager() : NULL);
if (deviceConnMan)
{
TDENetworkConnectionStatus::TDENetworkConnectionStatus statusFlags = deviceConnMan->deviceStatus().statusFlags; TDENetworkConnectionStatus::TDENetworkConnectionStatus statusFlags = deviceConnMan->deviceStatus().statusFlags;
if ((statusFlags == TDENetworkConnectionStatus::Disconnected) if ((statusFlags == TDENetworkConnectionStatus::Disconnected)
|| (statusFlags == (TDENetworkConnectionStatus::Disconnected | TDENetworkConnectionStatus::LinkUnavailable)) || (statusFlags == (TDENetworkConnectionStatus::Disconnected | TDENetworkConnectionStatus::LinkUnavailable))
|| (statusFlags & TDENetworkConnectionStatus::Invalid) || (statusFlags & TDENetworkConnectionStatus::Invalid)
) { )
{
continue; continue;
} }
else { else
{
d->foregroundTrayComponent = newDtc; d->foregroundTrayComponent = newDtc;
break; break;
} }
} }
} }
}
if (d->foregroundTrayComponent != NULL) { if (d->foregroundTrayComponent != NULL) {
connectTrayDeviceManager(); connectTrayDeviceManager();
@ -777,7 +816,7 @@ void Tray::updateTrayIcon(TDENetworkConnectionStatus::TDENetworkConnectionStatus
} }
} }
TDENetworkGlobalManagerFlags::TDENetworkGlobalManagerFlags globalState = nm->backendStatus(); TDENetworkGlobalManagerFlags::TDENetworkGlobalManagerFlags globalState = (nm ? nm->backendStatus() : TDENetworkGlobalManagerFlags::Unknown);
// get all available VPN Connections // get all available VPN Connections
active_vpn = 0; active_vpn = 0;
@ -796,7 +835,7 @@ void Tray::updateTrayIcon(TDENetworkConnectionStatus::TDENetworkConnectionStatus
// } // }
#endif // DEBUG_STATE #endif // DEBUG_STATE
TDENetworkGlobalManagerFlags::TDENetworkGlobalManagerFlags current_vpn_state = (TDEGlobal::networkManager()->backendStatus() & TDENetworkGlobalManagerFlags::VPNMask); TDENetworkGlobalManagerFlags::TDENetworkGlobalManagerFlags current_vpn_state = (globalState & TDENetworkGlobalManagerFlags::VPNMask);
if ((current_vpn_state & TDENetworkGlobalManagerFlags::VPNFailed) || (current_vpn_state & TDENetworkGlobalManagerFlags::VPNDisconnected)) { if ((current_vpn_state & TDENetworkGlobalManagerFlags::VPNFailed) || (current_vpn_state & TDENetworkGlobalManagerFlags::VPNDisconnected)) {
active_vpn = 0; active_vpn = 0;
} }
@ -840,11 +879,11 @@ void Tray::updateTrayIcon(TDENetworkConnectionStatus::TDENetworkConnectionStatus
} }
} }
else { else {
setBaseStateIcon(nm->backendStatus()); setBaseStateIcon(globalState);
} }
} }
else { else {
TDENetworkGlobalManagerFlags::TDENetworkGlobalManagerFlags current_vpn_state = (TDEGlobal::networkManager()->backendStatus() & TDENetworkGlobalManagerFlags::VPNMask); TDENetworkGlobalManagerFlags::TDENetworkGlobalManagerFlags current_vpn_state = (globalState & TDENetworkGlobalManagerFlags::VPNMask);
#ifdef DEBUG_STATE #ifdef DEBUG_STATE
printf("VPN state: 0x%08x\n", current_vpn_state); printf("VPN state: 0x%08x\n", current_vpn_state);
//printf("Activated is: %d\n", TDENetworkConnectionStatus::Connected); //printf("Activated is: %d\n", TDENetworkConnectionStatus::Connected);
@ -905,7 +944,7 @@ void Tray::updateActiveConnection(TDENetworkConnectionStatus::TDENetworkConnecti
void Tray::slotDeviceAddedNotify(TDENetworkDevice* dev) void Tray::slotDeviceAddedNotify(TDENetworkDevice* dev)
{ {
kdDebug() << "Tray::slotDeviceAddedNotify" << endl; kdDebug() << "Tray::slotDeviceAddedNotify" << endl;
if( !dev->deviceNode().isEmpty() ) { if( dev && !dev->deviceNode().isEmpty() ) {
KNotifyClient::event( winId(), "tdenm-nm-device-added", i18n("New network device %1 found").arg(dev->deviceNode()) ); KNotifyClient::event( winId(), "tdenm-nm-device-added", i18n("New network device %1 found").arg(dev->deviceNode()) );
} }
} }
@ -913,7 +952,7 @@ void Tray::slotDeviceAddedNotify(TDENetworkDevice* dev)
void Tray::slotDeviceRemovedNotify(TDENetworkDevice* dev) void Tray::slotDeviceRemovedNotify(TDENetworkDevice* dev)
{ {
kdDebug() << "Tray::slotDeviceRemovedNotify" << endl; kdDebug() << "Tray::slotDeviceRemovedNotify" << endl;
if( !dev->deviceNode().isEmpty() ) { if( dev && !dev->deviceNode().isEmpty() ) {
KNotifyClient::event( winId(), "tdenm-nm-device-removed", i18n("Network device %1 removed").arg(dev->deviceNode()) ); KNotifyClient::event( winId(), "tdenm-nm-device-removed", i18n("Network device %1 removed").arg(dev->deviceNode()) );
} }
} }
@ -1100,7 +1139,7 @@ Tray::Tray() : KSystemTray()
// initial setup of the device-trays // initial setup of the device-trays
updateDeviceTrays(); updateDeviceTrays();
slotStateChanged(TDEGlobal::networkManager()->backendStatus(), TDENetworkGlobalManagerFlags::Unknown); slotStateChanged(nm ? nm->backendStatus() : TDENetworkGlobalManagerFlags::Unknown, TDENetworkGlobalManagerFlags::Unknown);
} }
Tray::~Tray () Tray::~Tray ()
@ -1109,4 +1148,3 @@ Tray::~Tray ()
} }
#include "tdenetman-tray.moc" #include "tdenetman-tray.moc"

@ -42,25 +42,35 @@ VPNManager::getVPNServices ()
VPNServiceList list; VPNServiceList list;
TDEGlobalNetworkManager* nm = TDEGlobal::networkManager(); TDEGlobalNetworkManager* nm = TDEGlobal::networkManager();
if (nm)
{
TDENetworkVPNTypeList availablePlugins = nm->availableVPNTypes(); TDENetworkVPNTypeList availablePlugins = nm->availableVPNTypes();
if (availablePlugins.count() > 0) { if (availablePlugins.count() > 0)
{
// find all available services // find all available services
for (TDENetworkVPNTypeList::Iterator it = availablePlugins.begin (); it != availablePlugins.end (); ++it) { for (TDENetworkVPNTypeList::Iterator it = availablePlugins.begin (); it != availablePlugins.end (); ++it)
{
TQString serviceString; TQString serviceString;
if ((*it) == TDENetworkVPNType::OpenVPN) { if ((*it) == TDENetworkVPNType::OpenVPN)
{
serviceString = "openvpn"; serviceString = "openvpn";
} }
else if ((*it) == TDENetworkVPNType::PPTP) { else if ((*it) == TDENetworkVPNType::PPTP)
{
serviceString = "pptp"; serviceString = "pptp";
} }
else if ((*it) == TDENetworkVPNType::StrongSwan) { else if ((*it) == TDENetworkVPNType::StrongSwan)
{
serviceString = "strongswan"; serviceString = "strongswan";
} }
else if ((*it) == TDENetworkVPNType::VPNC) { else if ((*it) == TDENetworkVPNType::VPNC)
{
serviceString = "vpnc"; serviceString = "vpnc";
} }
if (serviceString == "") { if (serviceString == "")
{
continue; continue;
} }
@ -68,14 +78,17 @@ VPNManager::getVPNServices ()
// create new VPNService Object // create new VPNService Object
VPNService* vpnservice = new VPNService(serviceString, serviceString, TQT_TQOBJECT(TDENetworkManager::getInstance())); VPNService* vpnservice = new VPNService(serviceString, serviceString, TQT_TQOBJECT(TDENetworkManager::getInstance()));
if (!vpnservice->getVPNPlugin()) { if (!vpnservice->getVPNPlugin())
{
delete vpnservice; delete vpnservice;
} }
else { else
{
list.push_back(vpnservice); list.push_back(vpnservice);
} }
} }
} }
}
return list; return list;
} }
@ -86,39 +99,52 @@ VPNManager::getVPNService(TQString service_type)
VPNServiceList list; VPNServiceList list;
TDEGlobalNetworkManager* nm = TDEGlobal::networkManager(); TDEGlobalNetworkManager* nm = TDEGlobal::networkManager();
if (nm)
{
TDENetworkVPNTypeList availablePlugins = nm->availableVPNTypes(); TDENetworkVPNTypeList availablePlugins = nm->availableVPNTypes();
if (availablePlugins.count() > 0) { if (availablePlugins.count() > 0)
for (TDENetworkVPNTypeList::Iterator it = availablePlugins.begin (); it != availablePlugins.end (); ++it) { {
for (TDENetworkVPNTypeList::Iterator it = availablePlugins.begin (); it != availablePlugins.end (); ++it)
{
TQString serviceString; TQString serviceString;
if ((*it) == TDENetworkVPNType::OpenVPN) { if ((*it) == TDENetworkVPNType::OpenVPN)
{
serviceString = "openvpn"; serviceString = "openvpn";
} }
else if ((*it) == TDENetworkVPNType::PPTP) { else if ((*it) == TDENetworkVPNType::PPTP)
{
serviceString = "pptp"; serviceString = "pptp";
} }
else if ((*it) == TDENetworkVPNType::StrongSwan) { else if ((*it) == TDENetworkVPNType::StrongSwan)
{
serviceString = "strongswan"; serviceString = "strongswan";
} }
else if ((*it) == TDENetworkVPNType::VPNC) { else if ((*it) == TDENetworkVPNType::VPNC)
{
serviceString = "vpnc"; serviceString = "vpnc";
} }
if (serviceString == "") { if (serviceString == "")
{
continue; continue;
} }
if (serviceString == service_type) { if (serviceString == service_type)
{
// create new VPNService Object // create new VPNService Object
VPNService* vpnservice = new VPNService(service_type, service_type, TQT_TQOBJECT(TDENetworkManager::getInstance())); VPNService* vpnservice = new VPNService(service_type, service_type, TQT_TQOBJECT(TDENetworkManager::getInstance()));
if (!vpnservice->getVPNPlugin()) { if (!vpnservice->getVPNPlugin())
{
delete vpnservice; delete vpnservice;
} }
else { else
{
return vpnservice; return vpnservice;
} }
} }
} }
} }
}
return NULL; return NULL;
} }

@ -61,6 +61,10 @@ class WiredDeviceTrayPrivate
void WiredDeviceTray::newConnection() void WiredDeviceTray::newConnection()
{ {
TDEGlobalNetworkManager* nm = TDEGlobal::networkManager(); TDEGlobalNetworkManager* nm = TDEGlobal::networkManager();
if (!nm)
{
return;
}
// create a new wired connection // create a new wired connection
TDENetworkConnection* conn = new TDEWiredEthernetConnection(); TDENetworkConnection* conn = new TDEWiredEthernetConnection();
@ -75,13 +79,19 @@ void WiredDeviceTray::newConnection()
void WiredDeviceTray::addMenuItems(TDEPopupMenu* menu) void WiredDeviceTray::addMenuItems(TDEPopupMenu* menu)
{ {
TDENetworkDevice* dev = dynamic_cast<TDENetworkDevice*>(hwdevices->findByUniqueID(d->dev)); TDENetworkDevice* dev = dynamic_cast<TDENetworkDevice*>(hwdevices->findByUniqueID(d->dev));
if (!dev)
{
return;
}
// device title // device title
Subhead* subhead = new Subhead (menu, "subhead", TQString("Wired Connection (%1)").arg(dev->deviceNode()), SmallIcon("wired", TQIconSet::Automatic)); Subhead* subhead = new Subhead (menu, "subhead", TQString("Wired Connection (%1)").arg(dev->deviceNode()), SmallIcon("wired", TQIconSet::Automatic));
menu->insertItem (subhead, -1, -1); menu->insertItem (subhead, -1, -1);
TDENetworkConnectionManager* deviceConnMan = dev->connectionManager(); TDENetworkConnectionManager* deviceConnMan = dev->connectionManager();
if (!deviceConnMan->deviceInformation().managed) { TDEGlobalNetworkManager* nm = TDEGlobal::networkManager();
if (!nm || !deviceConnMan|| !deviceConnMan->deviceInformation().managed)
{
// device is not managed by NM -> do not show any connections // device is not managed by NM -> do not show any connections
subhead = new Subhead(menu, "subhead2", i18n("Not managed"), SmallIcon("no", TQIconSet::Automatic)); subhead = new Subhead(menu, "subhead2", i18n("Not managed"), SmallIcon("no", TQIconSet::Automatic));
menu->insertItem(subhead, -1, -1); menu->insertItem(subhead, -1, -1);
@ -92,7 +102,6 @@ void WiredDeviceTray::addMenuItems(TDEPopupMenu* menu)
menu->insertItem(subhead, -1, -1); menu->insertItem(subhead, -1, -1);
} }
else { else {
TDEGlobalNetworkManager* nm = TDEGlobal::networkManager();
TDENetworkConnection* active_conn = NULL; TDENetworkConnection* active_conn = NULL;
if ((!(deviceConnMan->deviceInformation().statusFlags & TDENetworkConnectionStatus::Disconnected)) if ((!(deviceConnMan->deviceInformation().statusFlags & TDENetworkConnectionStatus::Disconnected))
&& (!(deviceConnMan->deviceInformation().statusFlags & TDENetworkConnectionStatus::Invalid))) { && (!(deviceConnMan->deviceInformation().statusFlags & TDENetworkConnectionStatus::Invalid))) {

@ -65,17 +65,23 @@ class WirelessDeviceTrayPrivate
TQStringList WirelessDeviceTray::getToolTipText() TQStringList WirelessDeviceTray::getToolTipText()
{ {
TDENetworkDevice* dev = dynamic_cast<TDENetworkDevice*>(hwdevices->findByUniqueID(d->dev));
TQStringList tooltip = DeviceTrayComponent::getToolTipText(); TQStringList tooltip = DeviceTrayComponent::getToolTipText();
TDENetworkDevice* dev = dynamic_cast<TDENetworkDevice*>(hwdevices->findByUniqueID(d->dev));
if (dev)
{
TDENetworkConnectionManager* deviceConnMan = dev->connectionManager(); TDENetworkConnectionManager* deviceConnMan = dev->connectionManager();
if (deviceConnMan)
{
TDENetworkWiFiAPInfo * ap = deviceConnMan->findAccessPointByBSSID(deviceConnMan->deviceInformation().wiFiInfo.activeAccessPointBSSID); TDENetworkWiFiAPInfo * ap = deviceConnMan->findAccessPointByBSSID(deviceConnMan->deviceInformation().wiFiInfo.activeAccessPointBSSID);
if (ap) { if (ap)
{
tooltip.append(i18n("Network: %1").arg(ap->friendlySSID())); tooltip.append(i18n("Network: %1").arg(ap->friendlySSID()));
int strength = (ap->signalQuality*100.0); int strength = (ap->signalQuality*100.0);
tooltip.append(i18n("Signal Strength: %1%").arg(strength)); tooltip.append(i18n("Signal Strength: %1%").arg(strength));
} }
}
}
return tooltip; return tooltip;
} }
@ -88,6 +94,10 @@ void WirelessDeviceTray::newConnection()
void WirelessDeviceTray::newConnection(int id) void WirelessDeviceTray::newConnection(int id)
{ {
TDEGlobalNetworkManager* nm = TDEGlobal::networkManager(); TDEGlobalNetworkManager* nm = TDEGlobal::networkManager();
if (!nm)
{
return;
}
// create a new wireless connection // create a new wireless connection
TDENetworkConnection* conn = new TDEWiFiConnection(); TDENetworkConnection* conn = new TDEWiFiConnection();
@ -154,13 +164,17 @@ void WirelessDeviceTray::addWirelessNetworks(TDEPopupMenu* menu)
TQValueList<TDEWiFiConnection*> conns = WirelessManager::getWirelessConnections(); TQValueList<TDEWiFiConnection*> conns = WirelessManager::getWirelessConnections();
// get the currently active connection // get the currently active connection
TDENetworkConnectionManager* deviceConnMan = dev->connectionManager(); TDENetworkConnectionManager* deviceConnMan = (dev ? dev->connectionManager() : NULL);
TDENetworkConnection* active_conn = NULL; TDENetworkConnection* active_conn = NULL;
if (nm && deviceConnMan)
{
TDENetworkDeviceInformation devInfo = deviceConnMan->deviceStatus(); TDENetworkDeviceInformation devInfo = deviceConnMan->deviceStatus();
if ((!(devInfo.statusFlags & TDENetworkConnectionStatus::Disconnected)) if ((!(devInfo.statusFlags & TDENetworkConnectionStatus::Disconnected))
&& (!(devInfo.statusFlags & TDENetworkConnectionStatus::Invalid))) { && (!(devInfo.statusFlags & TDENetworkConnectionStatus::Invalid)))
{
active_conn = nm->findConnectionByUUID(devInfo.activeConnectionUUID); active_conn = nm->findConnectionByUUID(devInfo.activeConnectionUUID);
} }
}
// add all wireless connections in range // add all wireless connections in range
// (we may have more then one connection per network) // (we may have more then one connection per network)
@ -258,6 +272,10 @@ void WirelessDeviceTray::addWirelessNetworks(TDEPopupMenu* menu)
void WirelessDeviceTray::addMenuItems(TDEPopupMenu* menu) void WirelessDeviceTray::addMenuItems(TDEPopupMenu* menu)
{ {
TDENetworkDevice* dev = dynamic_cast<TDENetworkDevice*>(hwdevices->findByUniqueID(d->dev)); TDENetworkDevice* dev = dynamic_cast<TDENetworkDevice*>(hwdevices->findByUniqueID(d->dev));
if (!dev)
{
return;
}
// get the currently active connection // get the currently active connection
TDEGlobalNetworkManager* nm = TDEGlobal::networkManager(); TDEGlobalNetworkManager* nm = TDEGlobal::networkManager();
@ -267,7 +285,8 @@ void WirelessDeviceTray::addMenuItems(TDEPopupMenu* menu)
menu->insertItem (subhead, -1, -1); menu->insertItem (subhead, -1, -1);
TDENetworkConnectionManager* deviceConnMan = dev->connectionManager(); TDENetworkConnectionManager* deviceConnMan = dev->connectionManager();
if (!deviceConnMan->deviceInformation().managed) { if (!nm || !deviceConnMan || !deviceConnMan->deviceInformation().managed)
{
// device is not managed by NM -> do not show any connections // device is not managed by NM -> do not show any connections
subhead = new Subhead(menu, "subhead2", i18n("Not managed"), SmallIcon("no", TQIconSet::Automatic)); subhead = new Subhead(menu, "subhead2", i18n("Not managed"), SmallIcon("no", TQIconSet::Automatic));
menu->insertItem(subhead, -1, -1); menu->insertItem(subhead, -1, -1);
@ -312,7 +331,12 @@ void WirelessDeviceTray::slotUpdateDeviceState(TDENetworkConnectionStatus::TDENe
{ {
TDENetworkDevice* dev = dynamic_cast<TDENetworkDevice*>(hwdevices->findByUniqueID(d->dev)); TDENetworkDevice* dev = dynamic_cast<TDENetworkDevice*>(hwdevices->findByUniqueID(d->dev));
if (dev->deviceNode() != deviceNode) { if (!dev)
{
return;
}
if (dev->deviceNode() != deviceNode)
{
kdDebug() << k_funcinfo << "WARNING: Got networkDeviceStateChanged signal for interface '" << deviceNode << "', but my interface is '" << dev->deviceNode() << "'! Ignoring..."; kdDebug() << k_funcinfo << "WARNING: Got networkDeviceStateChanged signal for interface '" << deviceNode << "', but my interface is '" << dev->deviceNode() << "'! Ignoring...";
return; return;
} }
@ -326,27 +350,36 @@ void WirelessDeviceTray::slotUpdateDeviceState(TDENetworkConnectionStatus::TDENe
if (newState == TDENetworkConnectionStatus::Connected) { if (newState == TDENetworkConnectionStatus::Connected) {
// trigger an update of the connections seen bssids property // trigger an update of the connections seen bssids property
TDENetworkConnectionManager* deviceConnMan = dev->connectionManager(); TDENetworkConnectionManager* deviceConnMan = dev->connectionManager();
if (deviceConnMan)
{
TDENetworkWiFiAPInfo * ap = deviceConnMan->findAccessPointByBSSID(deviceConnMan->deviceInformation().wiFiInfo.activeAccessPointBSSID); TDENetworkWiFiAPInfo * ap = deviceConnMan->findAccessPointByBSSID(deviceConnMan->deviceInformation().wiFiInfo.activeAccessPointBSSID);
if (ap) { if (ap)
{
int strength = (ap->signalQuality*100.0); int strength = (ap->signalQuality*100.0);
if (strength > 80) { if (strength > 80)
{
setPixmapForStates(newState, "nm_signal_100"); setPixmapForStates(newState, "nm_signal_100");
} }
else if (strength > 55) { else if (strength > 55)
{
setPixmapForStates(newState, "nm_signal_75"); setPixmapForStates(newState, "nm_signal_75");
} }
else if (strength > 30) { else if (strength > 30)
{
setPixmapForStates(newState, "nm_signal_50"); setPixmapForStates(newState, "nm_signal_50");
} }
else if (strength > 5) { else if (strength > 5)
{
setPixmapForStates(newState, "nm_signal_25"); setPixmapForStates(newState, "nm_signal_25");
} }
else { else
{
setPixmapForStates(newState, "nm_signal_00"); setPixmapForStates(newState, "nm_signal_00");
} }
} }
} }
}
// Update tray icon // Update tray icon
TQTimer::singleShot(0, this, TQT_SLOT(sendUpdateUI())); TQTimer::singleShot(0, this, TQT_SLOT(sendUpdateUI()));
@ -361,24 +394,32 @@ void WirelessDeviceTray::slotCheckActiveAccessPoint()
// get the currently active connection // get the currently active connection
TDEGlobalNetworkManager* nm = TDEGlobal::networkManager(); TDEGlobalNetworkManager* nm = TDEGlobal::networkManager();
TDENetworkConnectionManager* deviceConnMan = dev->connectionManager(); TDENetworkConnectionManager* deviceConnMan = (dev ? dev->connectionManager() : NULL);
TDENetworkConnection* active_conn = NULL; TDENetworkConnection* active_conn = NULL;
if (nm && deviceConnMan)
{
TDENetworkDeviceInformation devInfo = deviceConnMan->deviceStatus(); TDENetworkDeviceInformation devInfo = deviceConnMan->deviceStatus();
if ((!(devInfo.statusFlags & TDENetworkConnectionStatus::Disconnected)) if ((!(devInfo.statusFlags & TDENetworkConnectionStatus::Disconnected))
&& (!(devInfo.statusFlags & TDENetworkConnectionStatus::Invalid))) { && (!(devInfo.statusFlags & TDENetworkConnectionStatus::Invalid)))
{
active_conn = nm->findConnectionByUUID(devInfo.activeConnectionUUID); active_conn = nm->findConnectionByUUID(devInfo.activeConnectionUUID);
} }
if (active_conn && devInfo.statusFlags == TDENetworkConnectionStatus::Connected) { if (active_conn && devInfo.statusFlags == TDENetworkConnectionStatus::Connected)
{
TDENetworkDeviceInformation devInfo = deviceConnMan->deviceInformation(); TDENetworkDeviceInformation devInfo = deviceConnMan->deviceInformation();
TDENetworkWiFiAPInfo * activeap = deviceConnMan->findAccessPointByBSSID(devInfo.wiFiInfo.activeAccessPointBSSID); TDENetworkWiFiAPInfo * activeap = deviceConnMan->findAccessPointByBSSID(devInfo.wiFiInfo.activeAccessPointBSSID);
if ( activeap != d->activeAccessPoint) { if ( activeap != d->activeAccessPoint)
{
d->activeAccessPoint = activeap; d->activeAccessPoint = activeap;
if ( d->activeAccessPoint ) { if ( d->activeAccessPoint )
{
TDEWiFiConnection* wireless = dynamic_cast<TDEWiFiConnection*>(active_conn); TDEWiFiConnection* wireless = dynamic_cast<TDEWiFiConnection*>(active_conn);
if (wireless) { if (wireless)
if (!(wireless->heardBSSIDs.contains(d->activeAccessPoint->BSSID))) { {
if (!(wireless->heardBSSIDs.contains(d->activeAccessPoint->BSSID)))
{
wireless->heardBSSIDs.append(d->activeAccessPoint->BSSID); wireless->heardBSSIDs.append(d->activeAccessPoint->BSSID);
} }
} }
@ -386,37 +427,51 @@ void WirelessDeviceTray::slotCheckActiveAccessPoint()
} }
} }
} }
}
void WirelessDeviceTray::apPropertyChanged(TDEMACAddress BSSID, TDENetworkAPEventType::TDENetworkAPEventType event) void WirelessDeviceTray::apPropertyChanged(TDEMACAddress BSSID, TDENetworkAPEventType::TDENetworkAPEventType event)
{ {
TDENetworkDevice* dev = dynamic_cast<TDENetworkDevice*>(hwdevices->findByUniqueID(d->dev)); TDENetworkDevice* dev = dynamic_cast<TDENetworkDevice*>(hwdevices->findByUniqueID(d->dev));
if (!dev)
{
return;
}
if (event == TDENetworkAPEventType::SignalStrengthChanged) { if (event == TDENetworkAPEventType::SignalStrengthChanged) {
TDENetworkConnectionManager* deviceConnMan = dev->connectionManager(); TDENetworkConnectionManager* deviceConnMan = dev->connectionManager();
if (deviceConnMan)
{
TDENetworkWiFiAPInfo * ap = deviceConnMan->findAccessPointByBSSID(BSSID); TDENetworkWiFiAPInfo * ap = deviceConnMan->findAccessPointByBSSID(BSSID);
if (ap) { if (ap)
{
TQ_UINT32 strength = (ap->signalQuality*100.0); TQ_UINT32 strength = (ap->signalQuality*100.0);
kdDebug() << k_funcinfo << strength << endl; kdDebug() << k_funcinfo << strength << endl;
TDENetworkConnectionStatus::TDENetworkConnectionStatus state = deviceConnMan->deviceInformation().statusFlags; TDENetworkConnectionStatus::TDENetworkConnectionStatus state = deviceConnMan->deviceInformation().statusFlags;
if (strength > 80) { if (strength > 80)
{
setPixmapForStates(state, "nm_signal_100"); setPixmapForStates(state, "nm_signal_100");
} }
else if (strength > 55) { else if (strength > 55)
{
setPixmapForStates(state, "nm_signal_75"); setPixmapForStates(state, "nm_signal_75");
} }
else if (strength > 30) { else if (strength > 30)
{
setPixmapForStates(state, "nm_signal_50"); setPixmapForStates(state, "nm_signal_50");
} }
else if (strength > 5) { else if (strength > 5)
{
setPixmapForStates(state, "nm_signal_25"); setPixmapForStates(state, "nm_signal_25");
} }
else { else
{
setPixmapForStates(state, "nm_signal_00"); setPixmapForStates(state, "nm_signal_00");
} }
TQTimer::singleShot(0, this, TQT_SLOT(sendUpdateUI())); TQTimer::singleShot(0, this, TQT_SLOT(sendUpdateUI()));
} }
} }
} }
}
void WirelessDeviceTray::slotAccessPointAdded(TDENetworkWiFiAPInfo* ap) void WirelessDeviceTray::slotAccessPointAdded(TDENetworkWiFiAPInfo* ap)
{ {
@ -430,17 +485,27 @@ void WirelessDeviceTray::slotAccessPointRemoved(TDEMACAddress)
void WirelessDeviceTray::tdeAccessPointStatusChangedHandler(TDEMACAddress BSSID, TDENetworkAPEventType::TDENetworkAPEventType event) { void WirelessDeviceTray::tdeAccessPointStatusChangedHandler(TDEMACAddress BSSID, TDENetworkAPEventType::TDENetworkAPEventType event) {
TDENetworkDevice* dev = dynamic_cast<TDENetworkDevice*>(hwdevices->findByUniqueID(d->dev)); TDENetworkDevice* dev = dynamic_cast<TDENetworkDevice*>(hwdevices->findByUniqueID(d->dev));
if (!dev)
{
return;
}
TDENetworkConnectionManager* deviceConnMan = dev->connectionManager(); TDENetworkConnectionManager* deviceConnMan = dev->connectionManager();
if (event == TDENetworkAPEventType::Discovered) { if (event == TDENetworkAPEventType::Discovered) {
if (deviceConnMan)
{
TDENetworkWiFiAPInfo* apinfo = deviceConnMan->findAccessPointByBSSID(BSSID); TDENetworkWiFiAPInfo* apinfo = deviceConnMan->findAccessPointByBSSID(BSSID);
slotAccessPointAdded(apinfo); slotAccessPointAdded(apinfo);
} }
}
else if (event == TDENetworkAPEventType::Lost) { else if (event == TDENetworkAPEventType::Lost) {
slotAccessPointRemoved(BSSID); slotAccessPointRemoved(BSSID);
} }
else if (event == TDENetworkAPEventType::SignalStrengthChanged) { else if (event == TDENetworkAPEventType::SignalStrengthChanged) {
if (deviceConnMan->deviceInformation().wiFiInfo.activeAccessPointBSSID == BSSID) { if (deviceConnMan &&
deviceConnMan->deviceInformation().wiFiInfo.activeAccessPointBSSID == BSSID)
{
apPropertyChanged(BSSID, event); apPropertyChanged(BSSID, event);
} }
} }

@ -82,16 +82,21 @@ TQValueList<TDENetworkWiFiAPInfo*> internalGetAccessPoints(TDENetworkDevice* dev
TQValueList<TDENetworkWiFiAPInfo*> list; TQValueList<TDENetworkWiFiAPInfo*> list;
if (dev) { if (dev) {
TDENetworkConnectionManager* deviceConnMan = dev->connectionManager(); TDENetworkConnectionManager* deviceConnMan = dev->connectionManager();
if (deviceConnMan)
{
TDENetworkHWNeighbor* neighbor; TDENetworkHWNeighbor* neighbor;
TDENetworkHWNeighborList* neighbors = deviceConnMan->siteSurvey(); TDENetworkHWNeighborList* neighbors = deviceConnMan->siteSurvey();
for (neighbor = neighbors->first(); neighbor; neighbor = neighbors->next()) { for (neighbor = neighbors->first(); neighbor; neighbor = neighbors->next())
{
TDENetworkWiFiAPInfo* apInfo = dynamic_cast<TDENetworkWiFiAPInfo*>(neighbor); TDENetworkWiFiAPInfo* apInfo = dynamic_cast<TDENetworkWiFiAPInfo*>(neighbor);
if (!apInfo) { if (!apInfo)
{
continue; continue;
} }
list.append(apInfo); list.append(apInfo);
} }
} }
}
return list; return list;
} }
@ -141,18 +146,24 @@ TQValueList<TDENetworkWiFiAPInfo*> internalGetAccessPointsWithESSID(TQByteArray
TQValueList<TDENetworkWiFiAPInfo*> list; TQValueList<TDENetworkWiFiAPInfo*> list;
if (dev) { if (dev) {
TDENetworkConnectionManager* deviceConnMan = dev->connectionManager(); TDENetworkConnectionManager* deviceConnMan = dev->connectionManager();
if (deviceConnMan)
{
TDENetworkHWNeighbor* neighbor; TDENetworkHWNeighbor* neighbor;
TDENetworkHWNeighborList* neighbors = deviceConnMan->siteSurvey(); TDENetworkHWNeighborList* neighbors = deviceConnMan->siteSurvey();
for (neighbor = neighbors->first(); neighbor; neighbor = neighbors->next()) { for (neighbor = neighbors->first(); neighbor; neighbor = neighbors->next())
{
TDENetworkWiFiAPInfo* apInfo = dynamic_cast<TDENetworkWiFiAPInfo*>(neighbor); TDENetworkWiFiAPInfo* apInfo = dynamic_cast<TDENetworkWiFiAPInfo*>(neighbor);
if (!apInfo) { if (!apInfo)
{
continue; continue;
} }
if (apInfo->SSID == essid) { if (apInfo->SSID == essid)
{
list.append(apInfo); list.append(apInfo);
} }
} }
} }
}
return list; return list;
} }

@ -56,15 +56,13 @@ using namespace ConnectionSettings;
void WirelessNetworkItem::slotActivate() void WirelessNetworkItem::slotActivate()
{ {
TDENetworkDevice* dev = dynamic_cast<TDENetworkDevice*>(hwdevices->findByUniqueID(_dev)); TDENetworkDevice* dev = dynamic_cast<TDENetworkDevice*>(hwdevices->findByUniqueID(_dev));
TDEGlobalNetworkManager* nm = TDEGlobal::networkManager(); TDEGlobalNetworkManager* nm = TDEGlobal::networkManager();
TDENetworkConnection* conn = nm->findConnectionByUUID(_conn); TDENetworkConnectionManager* deviceConnMan = (dev ? dev->connectionManager() : NULL);
TDENetworkConnectionManager* deviceConnMan = dev->connectionManager();
printf("slotActivate\n"); printf("slotActivate\n");
if (!_dev.isEmpty() && deviceConnMan) if (!_dev.isEmpty() && nm && deviceConnMan)
{ {
TDENetworkConnection* conn = nm->findConnectionByUUID(_conn);
if ( conn ) if ( conn )
{ {
kdDebug() << "Activate Connection " << _conn.ascii() << " on Device " << dev->deviceNode().ascii() << endl; kdDebug() << "Activate Connection " << _conn.ascii() << " on Device " << dev->deviceNode().ascii() << endl;
@ -87,7 +85,7 @@ void WirelessNetworkItem::slotActivate()
TQString WirelessNetworkItem::getDisplayText() TQString WirelessNetworkItem::getDisplayText()
{ {
TDEGlobalNetworkManager* nm = TDEGlobal::networkManager(); TDEGlobalNetworkManager* nm = TDEGlobal::networkManager();
TDENetworkConnection* conn = nm->findConnectionByUUID(_conn); TDENetworkConnection* conn = (nm ? nm->findConnectionByUUID(_conn) : 0);
TQString security = ""; TQString security = "";
if (((_net.getWpaFlags() & TDENetworkWiFiAPFlags::EncryptionFlagsMask) != TDENetworkWiFiAPFlags::None) && ((_net.getRsnFlags() & TDENetworkWiFiAPFlags::EncryptionFlagsMask) != TDENetworkWiFiAPFlags::None)) { if (((_net.getWpaFlags() & TDENetworkWiFiAPFlags::EncryptionFlagsMask) != TDENetworkWiFiAPFlags::None) && ((_net.getRsnFlags() & TDENetworkWiFiAPFlags::EncryptionFlagsMask) != TDENetworkWiFiAPFlags::None)) {

@ -90,13 +90,20 @@ bool WirelessNetwork::contains(const TDEMACAddress ap)
dev = dynamic_cast<TDENetworkDevice*>(hwdevices->findByUniqueID(d->aps[ap])); dev = dynamic_cast<TDENetworkDevice*>(hwdevices->findByUniqueID(d->aps[ap]));
if (dev) { if (dev) {
TDENetworkConnectionManager* deviceConnMan = dev->connectionManager(); TDENetworkConnectionManager* deviceConnMan = dev->connectionManager();
if (deviceConnMan)
{
apInfo = deviceConnMan->findAccessPointByBSSID(ap); apInfo = deviceConnMan->findAccessPointByBSSID(ap);
} }
}
else if (d->aps[ap] == "") { else if (d->aps[ap] == "") {
if (nm)
{
apInfo = nm->findAccessPointByBSSID(ap); apInfo = nm->findAccessPointByBSSID(ap);
} }
} }
else { }
else if (nm)
{
apInfo = nm->findAccessPointByBSSID(ap); apInfo = nm->findAccessPointByBSSID(ap);
} }
@ -137,11 +144,17 @@ const TQByteArray WirelessNetwork::getSsid() const
TDENetworkWiFiAPInfo* apInfo = NULL; TDENetworkWiFiAPInfo* apInfo = NULL;
if (dev) { if (dev) {
TDENetworkConnectionManager* deviceConnMan = dev->connectionManager(); TDENetworkConnectionManager* deviceConnMan = dev->connectionManager();
if (deviceConnMan)
{
apInfo = deviceConnMan->findAccessPointByBSSID(d->aps.begin().key()); apInfo = deviceConnMan->findAccessPointByBSSID(d->aps.begin().key());
} }
}
else if (d->aps.begin().data() == "") { else if (d->aps.begin().data() == "") {
if (nm)
{
apInfo = nm->findAccessPointByBSSID(d->aps.begin().key()); apInfo = nm->findAccessPointByBSSID(d->aps.begin().key());
} }
}
if (apInfo) { if (apInfo) {
return apInfo->SSID; return apInfo->SSID;
@ -164,11 +177,17 @@ TQString WirelessNetwork::getDisplaySsid() const
TDENetworkWiFiAPInfo* apInfo = NULL; TDENetworkWiFiAPInfo* apInfo = NULL;
if (dev) { if (dev) {
TDENetworkConnectionManager* deviceConnMan = dev->connectionManager(); TDENetworkConnectionManager* deviceConnMan = dev->connectionManager();
if (deviceConnMan)
{
apInfo = deviceConnMan->findAccessPointByBSSID(d->aps.begin().key()); apInfo = deviceConnMan->findAccessPointByBSSID(d->aps.begin().key());
} }
}
else if (d->aps.begin().data() == "") { else if (d->aps.begin().data() == "") {
if (nm)
{
apInfo = nm->findAccessPointByBSSID(d->aps.begin().key()); apInfo = nm->findAccessPointByBSSID(d->aps.begin().key());
} }
}
if (apInfo) { if (apInfo) {
return apInfo->friendlySSID(); return apInfo->friendlySSID();
@ -192,11 +211,17 @@ TDENetworkWiFiAPFlags::TDENetworkWiFiAPFlags WirelessNetwork::getFlags() const
TDENetworkWiFiAPInfo* apInfo = NULL; TDENetworkWiFiAPInfo* apInfo = NULL;
if (dev) { if (dev) {
TDENetworkConnectionManager* deviceConnMan = dev->connectionManager(); TDENetworkConnectionManager* deviceConnMan = dev->connectionManager();
if (deviceConnMan)
{
apInfo = deviceConnMan->findAccessPointByBSSID(it.key()); apInfo = deviceConnMan->findAccessPointByBSSID(it.key());
} }
}
else if (it.data() == "") { else if (it.data() == "") {
if (nm)
{
apInfo = nm->findAccessPointByBSSID(it.key()); apInfo = nm->findAccessPointByBSSID(it.key());
} }
}
if (apInfo) { if (apInfo) {
flags |= (apInfo->wpaFlags & TDENetworkWiFiAPFlags::GeneralFlagsMask); flags |= (apInfo->wpaFlags & TDENetworkWiFiAPFlags::GeneralFlagsMask);
@ -217,11 +242,17 @@ TDENetworkWiFiAPFlags::TDENetworkWiFiAPFlags WirelessNetwork::getWpaFlags() cons
TDENetworkWiFiAPInfo* apInfo = NULL; TDENetworkWiFiAPInfo* apInfo = NULL;
if (dev) { if (dev) {
TDENetworkConnectionManager* deviceConnMan = dev->connectionManager(); TDENetworkConnectionManager* deviceConnMan = dev->connectionManager();
if (deviceConnMan)
{
apInfo = deviceConnMan->findAccessPointByBSSID(it.key()); apInfo = deviceConnMan->findAccessPointByBSSID(it.key());
} }
}
else if (it.data() == "") { else if (it.data() == "") {
if (nm)
{
apInfo = nm->findAccessPointByBSSID(it.key()); apInfo = nm->findAccessPointByBSSID(it.key());
} }
}
if (apInfo) { if (apInfo) {
flags |= (apInfo->wpaFlags & TDENetworkWiFiAPFlags::EncryptionFlagsMask); flags |= (apInfo->wpaFlags & TDENetworkWiFiAPFlags::EncryptionFlagsMask);
@ -241,11 +272,17 @@ TDENetworkWiFiAPFlags::TDENetworkWiFiAPFlags WirelessNetwork::getRsnFlags() cons
TDENetworkWiFiAPInfo* apInfo = NULL; TDENetworkWiFiAPInfo* apInfo = NULL;
if (dev) { if (dev) {
TDENetworkConnectionManager* deviceConnMan = dev->connectionManager(); TDENetworkConnectionManager* deviceConnMan = dev->connectionManager();
if (deviceConnMan)
{
apInfo = deviceConnMan->findAccessPointByBSSID(it.key()); apInfo = deviceConnMan->findAccessPointByBSSID(it.key());
} }
}
else if (it.data() == "") { else if (it.data() == "") {
if (nm)
{
apInfo = nm->findAccessPointByBSSID(it.key()); apInfo = nm->findAccessPointByBSSID(it.key());
} }
}
if (apInfo) { if (apInfo) {
flags |= (apInfo->rsnFlags & TDENetworkWiFiAPFlags::EncryptionFlagsMask); flags |= (apInfo->rsnFlags & TDENetworkWiFiAPFlags::EncryptionFlagsMask);
@ -269,11 +306,17 @@ TQ_UINT8 WirelessNetwork::getStrength() const
TDENetworkWiFiAPInfo* apInfo = NULL; TDENetworkWiFiAPInfo* apInfo = NULL;
if (dev) { if (dev) {
TDENetworkConnectionManager* deviceConnMan = dev->connectionManager(); TDENetworkConnectionManager* deviceConnMan = dev->connectionManager();
if (deviceConnMan)
{
apInfo = deviceConnMan->findAccessPointByBSSID(it.key()); apInfo = deviceConnMan->findAccessPointByBSSID(it.key());
} }
}
else if (it.data() == "") { else if (it.data() == "") {
if (nm)
{
apInfo = nm->findAccessPointByBSSID(it.key()); apInfo = nm->findAccessPointByBSSID(it.key());
} }
}
if (apInfo) { if (apInfo) {
if ((apInfo->signalQuality*100.0) > strength) { if ((apInfo->signalQuality*100.0) > strength) {

@ -44,6 +44,10 @@ using namespace ConnectionSettings;
void VPNTrayComponent::slotShowNewConnectionDialog() void VPNTrayComponent::slotShowNewConnectionDialog()
{ {
TDEGlobalNetworkManager* nm = TDEGlobal::networkManager(); TDEGlobalNetworkManager* nm = TDEGlobal::networkManager();
if (!nm)
{
return;
}
// create a new VPN connection // create a new VPN connection
TDEVPNConnection* conn = new TDEVPNConnection(); TDEVPNConnection* conn = new TDEVPNConnection();
@ -63,6 +67,10 @@ void VPNTrayComponent::addMenuItems(TDEPopupMenu* menu)
// Get all active connections // Get all active connections
TDEGlobalNetworkManager* nm = TDEGlobal::networkManager(); TDEGlobalNetworkManager* nm = TDEGlobal::networkManager();
if (!nm)
{
return;
}
if (tdenetworkmanager_editor_dialog_count == 0) nm->loadConnectionInformation(); if (tdenetworkmanager_editor_dialog_count == 0) nm->loadConnectionInformation();

Loading…
Cancel
Save