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

This resolves issue #8.

Signed-off-by: Slávek Banko <slavek.banko@axis.cz>
Slávek Banko 3 years ago
parent 0735c7e3f8
commit 3e4beea9ee
Signed by: SlavekB
GPG Key ID: 608F5293A04BE668

@ -287,9 +287,11 @@ ConnectionSettingsDialogImpl::slotConnect()
TDEGlobalNetworkManager* nm = TDEGlobal::networkManager();
// add/save the connection
if (nm->saveConnection(_conn)) {
if (nm && nm->saveConnection(_conn))
{
// activate device
if (_conn && nm) {
if (_conn)
{
// // VPN connection needs a special specific object
// if (_conn->getType() == NM_SETTING_VPN_SETTING_NAME) {
// TQT_DBusObjectPath act_conn = nm->getDefaultActiveConnection();
@ -329,7 +331,8 @@ ConnectionSettingsDialogImpl::slotSave()
TDEGlobalNetworkManager* nm = TDEGlobal::networkManager();
// 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"));
}
@ -453,14 +456,14 @@ ConnectionSettingsDialogImpl::slotEnableButtons()
TDENetworkErrorStringMap errorStringMap;
TDENetworkConnectionErrorFlags::TDENetworkConnectionErrorFlags errorFlags;
bool ret;
ret = nm->verifyConnectionSettings(_conn, &errorFlags, &errorStringMap);
ret = (nm ? nm->verifyConnectionSettings(_conn, &errorFlags, &errorStringMap) : 0);
btnConnect->setEnabled(ret);
if (!ret) {
// FIXME
// 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"));
}
pbSave->setEnabled(nm->verifyConnectionSettings(_conn));
pbSave->setEnabled(nm ? nm->verifyConnectionSettings(_conn) : 0);
}
}

@ -78,8 +78,11 @@ DeviceTrayComponent::DeviceTrayComponent(TQString device, KSystemTray * parent,
TDENetworkDevice* dev = dynamic_cast<TDENetworkDevice*>(hwdevices->findByUniqueID(m_device));
TDENetworkConnectionManager* deviceConnMan = dev->connectionManager();
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)));
if (deviceConnMan)
{
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)));
}
m_pixmaps[TDENetworkConnectionStatus::Invalid] = "nm_no_connection";
m_pixmaps[TDENetworkConnectionStatus::UnManaged] = "nm_no_connection";
@ -129,10 +132,14 @@ TQStringList DeviceTrayComponent::getToolTipText()
TQStringList list;
TDENetworkConnectionManager* deviceConnMan = dev->connectionManager();
TDENetworkConnectionStatus::TDENetworkConnectionStatus state = deviceConnMan->deviceStatus().statusFlags;
if (tooltipForConnState(state) != "") {
list.append(i18n("Device: %1").arg(dev->deviceNode()));
list.append(i18n("State: %1").arg(tooltipForConnState(state)));
if (deviceConnMan)
{
TDENetworkConnectionStatus::TDENetworkConnectionStatus state = deviceConnMan->deviceStatus().statusFlags;
if (tooltipForConnState(state) != "")
{
list.append(i18n("Device: %1").arg(dev->deviceNode()));
list.append(i18n("State: %1").arg(tooltipForConnState(state)));
}
}
return list;
}
@ -219,7 +226,8 @@ void DeviceTrayComponent::deviceStateChanged(TDENetworkConnectionStatus::TDENetw
TQTimer::singleShot(0, this, TQT_SLOT(sendGetCenterStage()));
}
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()));
}
}

@ -51,11 +51,20 @@ class CellularDeviceTrayPrivate
void CellularDeviceTray::newConnection()
{
TDEGlobalNetworkManager* nm = TDEGlobal::networkManager();
if (!nm)
{
return;
}
TDENetworkDevice* dev = dynamic_cast<TDENetworkDevice*>(hwdevices->findByUniqueID(d->dev));
// create an appropriate connection
TDENetworkConnection* conn = 0;
TDENetworkConnectionManager* deviceConnMan = dev->connectionManager();
if (!deviceConnMan)
{
return;
}
switch (deviceConnMan->deviceType()) {
case TDENetworkDeviceType::Modem:
conn = new TDEModemConnection();
@ -80,14 +89,15 @@ void CellularDeviceTray::addMenuItems(TDEPopupMenu* menu)
Subhead* subhead = new Subhead (menu, "subhead", dev->deviceNode(), SmallIcon("nm_device_wwan", TQIconSet::Automatic));
menu->insertItem (subhead, -1, -1);
TDEGlobalNetworkManager* nm = TDEGlobal::networkManager();
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
subhead = new Subhead(menu, "subhead2", i18n("Not managed"), SmallIcon("no", TQIconSet::Automatic));
menu->insertItem(subhead, -1, -1);
}
else {
TDEGlobalNetworkManager* nm = TDEGlobal::networkManager();
TDENetworkConnection* active_conn = NULL;
if ((!(deviceConnMan->deviceInformation().statusFlags & TDENetworkConnectionStatus::Disconnected))
&& (!(deviceConnMan->deviceInformation().statusFlags & TDENetworkConnectionStatus::Invalid))) {

@ -73,7 +73,7 @@ void NetworkMenuItem::slotActivate()
TDEGlobalNetworkManager* nm = TDEGlobal::networkManager();
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)
{

@ -220,12 +220,16 @@ void Tray::contextMenuAboutToShow (TDEPopupMenu* menu)
{
TDEGlobalNetworkManager* nm = TDEGlobal::networkManager();
if (tdenetworkmanager_editor_dialog_count == 0) nm->loadConnectionInformation();
// clear menu
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
for (TQValueList<TrayComponent*>::Iterator it = d->trayComponents.begin(); it != d->trayComponents.end(); ++it) {
(*it)->addMenuItems(menu);
@ -277,8 +281,9 @@ void Tray::contextMenuAboutToShow (TDEPopupMenu* menu)
TQString actionName = TQString("new_connection_%1").arg("vpn");
deviceNewConnAction = new TDEAction (menuCaption, 0, TQT_TQOBJECT(this), TQT_SLOT(slotNewVPNConnection()), actionCollection(), actionName.utf8());
newConnActionMenu->insert(deviceNewConnAction);
}
else if ( devices == 1 ) {
}
else if ( devices == 1 )
{
newConnAction = actionCollection ()->action ("new_connection");
TQT_BASE_OBJECT_NAME::disconnect( newConnAction, TQT_SIGNAL(activated()) );
TQT_BASE_OBJECT_NAME::connect( newConnAction, TQT_SIGNAL(activated()), d->trayComponents[0], TQT_SLOT(newConnection()));
@ -492,19 +497,22 @@ void Tray::createDeviceTrayComponent(TQString dev)
TDENetworkDevice* new_tray_dev = dynamic_cast<TDENetworkDevice*>(hwdevices->findByUniqueID(dev));
TDENetworkConnectionManager* deviceConnMan = new_tray_dev->connectionManager();
// different tray icons for different device types!
switch (deviceConnMan->deviceType())
if (deviceConnMan)
{
case TDENetworkDeviceType::WiredEthernet:
devTray = new WiredDeviceTray(dev, this, "wired_device_tray");
break;
case TDENetworkDeviceType::WiFi:
devTray = new WirelessDeviceTray(dev, this, "wireless_device_tray");
break;
case TDENetworkDeviceType::Modem:
devTray = new CellularDeviceTray(dev, this, "cellular_device_tray");
break;
default:
kdWarning() << k_funcinfo << "UDI: " << dev << " has unknown devicetype: " << deviceConnMan->deviceType() << endl;
switch (deviceConnMan->deviceType())
{
case TDENetworkDeviceType::WiredEthernet:
devTray = new WiredDeviceTray(dev, this, "wired_device_tray");
break;
case TDENetworkDeviceType::WiFi:
devTray = new WirelessDeviceTray(dev, this, "wireless_device_tray");
break;
case TDENetworkDeviceType::Modem:
devTray = new CellularDeviceTray(dev, this, "cellular_device_tray");
break;
default:
kdWarning() << k_funcinfo << "UDI: " << dev << " has unknown devicetype: " << deviceConnMan->deviceType() << endl;
}
}
if(devTray)
{
@ -637,7 +645,8 @@ void Tray::trayComponentNeedsCenterStage(TrayComponent *component, bool needsIt)
TDEGlobalNetworkManager* nm = TDEGlobal::networkManager();
DeviceTrayComponent * dtc = dynamic_cast<DeviceTrayComponent*>(component);
if (dtc) {
if (nm && dtc)
{
TDENetworkDevice* dtc_comp_dev = dynamic_cast<TDENetworkDevice*>(hwdevices->findByUniqueID(dtc->device()));
kdDebug() << k_funcinfo << dtc_comp_dev->deviceNode() << " : " << needsIt << endl;
TDENetworkDevice * device = dtc_comp_dev;
@ -703,25 +712,30 @@ void Tray::trayUiChanged()
if (dtc) {
TDENetworkDevice* dtc_comp_dev = dynamic_cast<TDENetworkDevice*>(hwdevices->findByUniqueID(dtc->device()));
TDENetworkConnectionManager* deviceConnMan = dtc_comp_dev->connectionManager();
updateTrayIcon(deviceConnMan->deviceStatus().statusFlags);
if (deviceConnMan)
{
updateTrayIcon(deviceConnMan->deviceStatus().statusFlags);
}
}
}
void Tray::showActiveDeviceTray() {
// If the current foreground tray device is deactivated, find the first active device and use it instead
bool needsNewDeviceTrayComponent = true;
if (d->foregroundTrayComponent) {
if (d->foregroundTrayComponent)
{
needsNewDeviceTrayComponent = false;
TDENetworkDevice* dtc_comp_dev = dynamic_cast<TDENetworkDevice*>(hwdevices->findByUniqueID(d->foregroundTrayComponent->device()));
TDENetworkConnectionManager* deviceConnMan = dtc_comp_dev->connectionManager();
TDENetworkConnectionStatus::TDENetworkConnectionStatus statusFlags = deviceConnMan->deviceStatus().statusFlags;
if ((statusFlags == TDENetworkConnectionStatus::Disconnected)
|| (statusFlags == (TDENetworkConnectionStatus::Disconnected | TDENetworkConnectionStatus::LinkUnavailable))
|| (statusFlags & TDENetworkConnectionStatus::Invalid)
) {
needsNewDeviceTrayComponent = true;
}
else {
needsNewDeviceTrayComponent = false;
if (deviceConnMan)
{
TDENetworkConnectionStatus::TDENetworkConnectionStatus statusFlags = deviceConnMan->deviceStatus().statusFlags;
if ((statusFlags == TDENetworkConnectionStatus::Disconnected)
|| (statusFlags == (TDENetworkConnectionStatus::Disconnected | TDENetworkConnectionStatus::LinkUnavailable))
|| (statusFlags & TDENetworkConnectionStatus::Invalid))
{
needsNewDeviceTrayComponent = true;
}
}
}
@ -735,16 +749,21 @@ void Tray::showActiveDeviceTray() {
if (newDtc) {
TDENetworkDevice* dtc_comp_dev = dynamic_cast<TDENetworkDevice*>(hwdevices->findByUniqueID(newDtc->device()));
TDENetworkConnectionManager* deviceConnMan = dtc_comp_dev->connectionManager();
TDENetworkConnectionStatus::TDENetworkConnectionStatus statusFlags = deviceConnMan->deviceStatus().statusFlags;
if ((statusFlags == TDENetworkConnectionStatus::Disconnected)
|| (statusFlags == (TDENetworkConnectionStatus::Disconnected | TDENetworkConnectionStatus::LinkUnavailable))
|| (statusFlags & TDENetworkConnectionStatus::Invalid)
) {
continue;
}
else {
d->foregroundTrayComponent = newDtc;
break;
if (deviceConnMan)
{
TDENetworkConnectionStatus::TDENetworkConnectionStatus statusFlags = deviceConnMan->deviceStatus().statusFlags;
if ((statusFlags == TDENetworkConnectionStatus::Disconnected)
|| (statusFlags == (TDENetworkConnectionStatus::Disconnected | TDENetworkConnectionStatus::LinkUnavailable))
|| (statusFlags & TDENetworkConnectionStatus::Invalid)
)
{
continue;
}
else
{
d->foregroundTrayComponent = newDtc;
break;
}
}
}
}
@ -777,7 +796,7 @@ void Tray::updateTrayIcon(TDENetworkConnectionStatus::TDENetworkConnectionStatus
}
}
TDENetworkGlobalManagerFlags::TDENetworkGlobalManagerFlags globalState = nm->backendStatus();
TDENetworkGlobalManagerFlags::TDENetworkGlobalManagerFlags globalState = (nm ? nm->backendStatus() : TDENetworkGlobalManagerFlags::Unknown);
// get all available VPN Connections
active_vpn = 0;
@ -796,7 +815,7 @@ void Tray::updateTrayIcon(TDENetworkConnectionStatus::TDENetworkConnectionStatus
// }
#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)) {
active_vpn = 0;
}
@ -840,11 +859,11 @@ void Tray::updateTrayIcon(TDENetworkConnectionStatus::TDENetworkConnectionStatus
}
}
else {
setBaseStateIcon(nm->backendStatus());
setBaseStateIcon(globalState);
}
}
else {
TDENetworkGlobalManagerFlags::TDENetworkGlobalManagerFlags current_vpn_state = (TDEGlobal::networkManager()->backendStatus() & TDENetworkGlobalManagerFlags::VPNMask);
TDENetworkGlobalManagerFlags::TDENetworkGlobalManagerFlags current_vpn_state = (globalState & TDENetworkGlobalManagerFlags::VPNMask);
#ifdef DEBUG_STATE
printf("VPN state: 0x%08x\n", current_vpn_state);
//printf("Activated is: %d\n", TDENetworkConnectionStatus::Connected);
@ -1100,7 +1119,7 @@ Tray::Tray() : KSystemTray()
// initial setup of the device-trays
updateDeviceTrays();
slotStateChanged(TDEGlobal::networkManager()->backendStatus(), TDENetworkGlobalManagerFlags::Unknown);
slotStateChanged(nm ? nm->backendStatus() : TDENetworkGlobalManagerFlags::Unknown, TDENetworkGlobalManagerFlags::Unknown);
}
Tray::~Tray ()
@ -1109,4 +1128,3 @@ Tray::~Tray ()
}
#include "tdenetman-tray.moc"

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

@ -61,6 +61,10 @@ class WiredDeviceTrayPrivate
void WiredDeviceTray::newConnection()
{
TDEGlobalNetworkManager* nm = TDEGlobal::networkManager();
if (!nm)
{
return;
}
// create a new wired connection
TDENetworkConnection* conn = new TDEWiredEthernetConnection();
@ -81,7 +85,9 @@ void WiredDeviceTray::addMenuItems(TDEPopupMenu* menu)
menu->insertItem (subhead, -1, -1);
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
subhead = new Subhead(menu, "subhead2", i18n("Not managed"), SmallIcon("no", TQIconSet::Automatic));
menu->insertItem(subhead, -1, -1);
@ -92,7 +98,6 @@ void WiredDeviceTray::addMenuItems(TDEPopupMenu* menu)
menu->insertItem(subhead, -1, -1);
}
else {
TDEGlobalNetworkManager* nm = TDEGlobal::networkManager();
TDENetworkConnection* active_conn = NULL;
if ((!(deviceConnMan->deviceInformation().statusFlags & TDENetworkConnectionStatus::Disconnected))
&& (!(deviceConnMan->deviceInformation().statusFlags & TDENetworkConnectionStatus::Invalid))) {

@ -70,11 +70,15 @@ TQStringList WirelessDeviceTray::getToolTipText()
TQStringList tooltip = DeviceTrayComponent::getToolTipText();
TDENetworkConnectionManager* deviceConnMan = dev->connectionManager();
TDENetworkWiFiAPInfo * ap = deviceConnMan->findAccessPointByBSSID(deviceConnMan->deviceInformation().wiFiInfo.activeAccessPointBSSID);
if (ap) {
tooltip.append(i18n("Network: %1").arg(ap->friendlySSID()));
int strength = (ap->signalQuality*100.0);
tooltip.append(i18n("Signal Strength: %1%").arg(strength));
if (deviceConnMan)
{
TDENetworkWiFiAPInfo * ap = deviceConnMan->findAccessPointByBSSID(deviceConnMan->deviceInformation().wiFiInfo.activeAccessPointBSSID);
if (ap)
{
tooltip.append(i18n("Network: %1").arg(ap->friendlySSID()));
int strength = (ap->signalQuality*100.0);
tooltip.append(i18n("Signal Strength: %1%").arg(strength));
}
}
return tooltip;
@ -88,6 +92,10 @@ void WirelessDeviceTray::newConnection()
void WirelessDeviceTray::newConnection(int id)
{
TDEGlobalNetworkManager* nm = TDEGlobal::networkManager();
if (!nm)
{
return;
}
// create a new wireless connection
TDENetworkConnection* conn = new TDEWiFiConnection();
@ -156,10 +164,14 @@ void WirelessDeviceTray::addWirelessNetworks(TDEPopupMenu* menu)
// get the currently active connection
TDENetworkConnectionManager* deviceConnMan = dev->connectionManager();
TDENetworkConnection* active_conn = NULL;
TDENetworkDeviceInformation devInfo = deviceConnMan->deviceStatus();
if ((!(devInfo.statusFlags & TDENetworkConnectionStatus::Disconnected))
&& (!(devInfo.statusFlags & TDENetworkConnectionStatus::Invalid))) {
active_conn = nm->findConnectionByUUID(devInfo.activeConnectionUUID);
if (nm && deviceConnMan)
{
TDENetworkDeviceInformation devInfo = deviceConnMan->deviceStatus();
if ((!(devInfo.statusFlags & TDENetworkConnectionStatus::Disconnected))
&& (!(devInfo.statusFlags & TDENetworkConnectionStatus::Invalid)))
{
active_conn = nm->findConnectionByUUID(devInfo.activeConnectionUUID);
}
}
// add all wireless connections in range
@ -267,7 +279,8 @@ void WirelessDeviceTray::addMenuItems(TDEPopupMenu* menu)
menu->insertItem (subhead, -1, -1);
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
subhead = new Subhead(menu, "subhead2", i18n("Not managed"), SmallIcon("no", TQIconSet::Automatic));
menu->insertItem(subhead, -1, -1);
@ -326,24 +339,33 @@ void WirelessDeviceTray::slotUpdateDeviceState(TDENetworkConnectionStatus::TDENe
if (newState == TDENetworkConnectionStatus::Connected) {
// trigger an update of the connections seen bssids property
TDENetworkConnectionManager* deviceConnMan = dev->connectionManager();
TDENetworkWiFiAPInfo * ap = deviceConnMan->findAccessPointByBSSID(deviceConnMan->deviceInformation().wiFiInfo.activeAccessPointBSSID);
if (ap) {
int strength = (ap->signalQuality*100.0);
if (strength > 80) {
setPixmapForStates(newState, "nm_signal_100");
}
else if (strength > 55) {
setPixmapForStates(newState, "nm_signal_75");
}
else if (strength > 30) {
setPixmapForStates(newState, "nm_signal_50");
}
else if (strength > 5) {
setPixmapForStates(newState, "nm_signal_25");
}
else {
setPixmapForStates(newState, "nm_signal_00");
if (deviceConnMan)
{
TDENetworkWiFiAPInfo * ap = deviceConnMan->findAccessPointByBSSID(deviceConnMan->deviceInformation().wiFiInfo.activeAccessPointBSSID);
if (ap)
{
int strength = (ap->signalQuality*100.0);
if (strength > 80)
{
setPixmapForStates(newState, "nm_signal_100");
}
else if (strength > 55)
{
setPixmapForStates(newState, "nm_signal_75");
}
else if (strength > 30)
{
setPixmapForStates(newState, "nm_signal_50");
}
else if (strength > 5)
{
setPixmapForStates(newState, "nm_signal_25");
}
else
{
setPixmapForStates(newState, "nm_signal_00");
}
}
}
}
@ -364,22 +386,31 @@ void WirelessDeviceTray::slotCheckActiveAccessPoint()
TDENetworkConnectionManager* deviceConnMan = dev->connectionManager();
TDENetworkConnection* active_conn = NULL;
TDENetworkDeviceInformation devInfo = deviceConnMan->deviceStatus();
if ((!(devInfo.statusFlags & TDENetworkConnectionStatus::Disconnected))
&& (!(devInfo.statusFlags & TDENetworkConnectionStatus::Invalid))) {
active_conn = nm->findConnectionByUUID(devInfo.activeConnectionUUID);
}
if (nm && deviceConnMan)
{
TDENetworkDeviceInformation devInfo = deviceConnMan->deviceStatus();
if ((!(devInfo.statusFlags & TDENetworkConnectionStatus::Disconnected))
&& (!(devInfo.statusFlags & TDENetworkConnectionStatus::Invalid)))
{
active_conn = nm->findConnectionByUUID(devInfo.activeConnectionUUID);
}
if (active_conn && devInfo.statusFlags == TDENetworkConnectionStatus::Connected) {
TDENetworkDeviceInformation devInfo = deviceConnMan->deviceInformation();
TDENetworkWiFiAPInfo * activeap = deviceConnMan->findAccessPointByBSSID(devInfo.wiFiInfo.activeAccessPointBSSID);
if ( activeap != d->activeAccessPoint) {
d->activeAccessPoint = activeap;
if ( d->activeAccessPoint ) {
TDEWiFiConnection* wireless = dynamic_cast<TDEWiFiConnection*>(active_conn);
if (wireless) {
if (!(wireless->heardBSSIDs.contains(d->activeAccessPoint->BSSID))) {
wireless->heardBSSIDs.append(d->activeAccessPoint->BSSID);
if (active_conn && devInfo.statusFlags == TDENetworkConnectionStatus::Connected)
{
TDENetworkDeviceInformation devInfo = deviceConnMan->deviceInformation();
TDENetworkWiFiAPInfo * activeap = deviceConnMan->findAccessPointByBSSID(devInfo.wiFiInfo.activeAccessPointBSSID);
if ( activeap != d->activeAccessPoint)
{
d->activeAccessPoint = activeap;
if ( d->activeAccessPoint )
{
TDEWiFiConnection* wireless = dynamic_cast<TDEWiFiConnection*>(active_conn);
if (wireless)
{
if (!(wireless->heardBSSIDs.contains(d->activeAccessPoint->BSSID)))
{
wireless->heardBSSIDs.append(d->activeAccessPoint->BSSID);
}
}
}
}
@ -393,27 +424,36 @@ void WirelessDeviceTray::apPropertyChanged(TDEMACAddress BSSID, TDENetworkAPEven
if (event == TDENetworkAPEventType::SignalStrengthChanged) {
TDENetworkConnectionManager* deviceConnMan = dev->connectionManager();
TDENetworkWiFiAPInfo * ap = deviceConnMan->findAccessPointByBSSID(BSSID);
if (ap) {
TQ_UINT32 strength = (ap->signalQuality*100.0);
kdDebug() << k_funcinfo << strength << endl;
TDENetworkConnectionStatus::TDENetworkConnectionStatus state = deviceConnMan->deviceInformation().statusFlags;
if (strength > 80) {
setPixmapForStates(state, "nm_signal_100");
}
else if (strength > 55) {
setPixmapForStates(state, "nm_signal_75");
}
else if (strength > 30) {
setPixmapForStates(state, "nm_signal_50");
}
else if (strength > 5) {
setPixmapForStates(state, "nm_signal_25");
}
else {
setPixmapForStates(state, "nm_signal_00");
if (deviceConnMan)
{
TDENetworkWiFiAPInfo * ap = deviceConnMan->findAccessPointByBSSID(BSSID);
if (ap)
{
TQ_UINT32 strength = (ap->signalQuality*100.0);
kdDebug() << k_funcinfo << strength << endl;
TDENetworkConnectionStatus::TDENetworkConnectionStatus state = deviceConnMan->deviceInformation().statusFlags;
if (strength > 80)
{
setPixmapForStates(state, "nm_signal_100");
}
else if (strength > 55)
{
setPixmapForStates(state, "nm_signal_75");
}
else if (strength > 30)
{
setPixmapForStates(state, "nm_signal_50");
}
else if (strength > 5)
{
setPixmapForStates(state, "nm_signal_25");
}
else
{
setPixmapForStates(state, "nm_signal_00");
}
TQTimer::singleShot(0, this, TQT_SLOT(sendUpdateUI()));
}
TQTimer::singleShot(0, this, TQT_SLOT(sendUpdateUI()));
}
}
}
@ -433,14 +473,19 @@ void WirelessDeviceTray::tdeAccessPointStatusChangedHandler(TDEMACAddress BSSID,
TDENetworkConnectionManager* deviceConnMan = dev->connectionManager();
if (event == TDENetworkAPEventType::Discovered) {
TDENetworkWiFiAPInfo* apinfo = deviceConnMan->findAccessPointByBSSID(BSSID);
slotAccessPointAdded(apinfo);
if (deviceConnMan)
{
TDENetworkWiFiAPInfo* apinfo = deviceConnMan->findAccessPointByBSSID(BSSID);
slotAccessPointAdded(apinfo);
}
}
else if (event == TDENetworkAPEventType::Lost) {
slotAccessPointRemoved(BSSID);
}
else if (event == TDENetworkAPEventType::SignalStrengthChanged) {
if (deviceConnMan->deviceInformation().wiFiInfo.activeAccessPointBSSID == BSSID) {
if (deviceConnMan &&
deviceConnMan->deviceInformation().wiFiInfo.activeAccessPointBSSID == BSSID)
{
apPropertyChanged(BSSID, event);
}
}

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

@ -56,15 +56,13 @@ using namespace ConnectionSettings;
void WirelessNetworkItem::slotActivate()
{
TDENetworkDevice* dev = dynamic_cast<TDENetworkDevice*>(hwdevices->findByUniqueID(_dev));
TDEGlobalNetworkManager* nm = TDEGlobal::networkManager();
TDENetworkConnection* conn = nm->findConnectionByUUID(_conn);
TDENetworkConnectionManager* deviceConnMan = dev->connectionManager();
printf("slotActivate\n");
if (!_dev.isEmpty() && deviceConnMan)
if (!_dev.isEmpty() && nm && deviceConnMan)
{
TDENetworkConnection* conn = nm->findConnectionByUUID(_conn);
if ( conn )
{
kdDebug() << "Activate Connection " << _conn.ascii() << " on Device " << dev->deviceNode().ascii() << endl;
@ -87,7 +85,7 @@ void WirelessNetworkItem::slotActivate()
TQString WirelessNetworkItem::getDisplayText()
{
TDEGlobalNetworkManager* nm = TDEGlobal::networkManager();
TDENetworkConnection* conn = nm->findConnectionByUUID(_conn);
TDENetworkConnection* conn = (nm ? nm->findConnectionByUUID(_conn) : 0);
TQString security = "";
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]));
if (dev) {
TDENetworkConnectionManager* deviceConnMan = dev->connectionManager();
apInfo = deviceConnMan->findAccessPointByBSSID(ap);
if (deviceConnMan)
{
apInfo = deviceConnMan->findAccessPointByBSSID(ap);
}
}
else if (d->aps[ap] == "") {
apInfo = nm->findAccessPointByBSSID(ap);
if (nm)
{
apInfo = nm->findAccessPointByBSSID(ap);
}
}
}
else {
else if (nm)
{
apInfo = nm->findAccessPointByBSSID(ap);
}
@ -137,10 +144,16 @@ const TQByteArray WirelessNetwork::getSsid() const
TDENetworkWiFiAPInfo* apInfo = NULL;
if (dev) {
TDENetworkConnectionManager* deviceConnMan = dev->connectionManager();
apInfo = deviceConnMan->findAccessPointByBSSID(d->aps.begin().key());
if (deviceConnMan)
{
apInfo = deviceConnMan->findAccessPointByBSSID(d->aps.begin().key());
}
}
else if (d->aps.begin().data() == "") {
apInfo = nm->findAccessPointByBSSID(d->aps.begin().key());
if (nm)
{
apInfo = nm->findAccessPointByBSSID(d->aps.begin().key());
}
}
if (apInfo) {
@ -164,10 +177,16 @@ TQString WirelessNetwork::getDisplaySsid() const
TDENetworkWiFiAPInfo* apInfo = NULL;
if (dev) {
TDENetworkConnectionManager* deviceConnMan = dev->connectionManager();
apInfo = deviceConnMan->findAccessPointByBSSID(d->aps.begin().key());
if (deviceConnMan)
{
apInfo = deviceConnMan->findAccessPointByBSSID(d->aps.begin().key());
}
}
else if (d->aps.begin().data() == "") {
apInfo = nm->findAccessPointByBSSID(d->aps.begin().key());
if (nm)
{
apInfo = nm->findAccessPointByBSSID(d->aps.begin().key());
}
}
if (apInfo) {
@ -192,10 +211,16 @@ TDENetworkWiFiAPFlags::TDENetworkWiFiAPFlags WirelessNetwork::getFlags() const
TDENetworkWiFiAPInfo* apInfo = NULL;
if (dev) {
TDENetworkConnectionManager* deviceConnMan = dev->connectionManager();
apInfo = deviceConnMan->findAccessPointByBSSID(it.key());
if (deviceConnMan)
{
apInfo = deviceConnMan->findAccessPointByBSSID(it.key());
}
}
else if (it.data() == "") {
apInfo = nm->findAccessPointByBSSID(it.key());
if (nm)
{
apInfo = nm->findAccessPointByBSSID(it.key());
}
}
if (apInfo) {
@ -217,10 +242,16 @@ TDENetworkWiFiAPFlags::TDENetworkWiFiAPFlags WirelessNetwork::getWpaFlags() cons
TDENetworkWiFiAPInfo* apInfo = NULL;
if (dev) {
TDENetworkConnectionManager* deviceConnMan = dev->connectionManager();
apInfo = deviceConnMan->findAccessPointByBSSID(it.key());
if (deviceConnMan)
{
apInfo = deviceConnMan->findAccessPointByBSSID(it.key());
}
}
else if (it.data() == "") {
apInfo = nm->findAccessPointByBSSID(it.key());
if (nm)
{
apInfo = nm->findAccessPointByBSSID(it.key());
}
}
if (apInfo) {
@ -241,10 +272,16 @@ TDENetworkWiFiAPFlags::TDENetworkWiFiAPFlags WirelessNetwork::getRsnFlags() cons
TDENetworkWiFiAPInfo* apInfo = NULL;
if (dev) {
TDENetworkConnectionManager* deviceConnMan = dev->connectionManager();
apInfo = deviceConnMan->findAccessPointByBSSID(it.key());
if (deviceConnMan)
{
apInfo = deviceConnMan->findAccessPointByBSSID(it.key());
}
}
else if (it.data() == "") {
apInfo = nm->findAccessPointByBSSID(it.key());
if (nm)
{
apInfo = nm->findAccessPointByBSSID(it.key());
}
}
if (apInfo) {
@ -269,10 +306,16 @@ TQ_UINT8 WirelessNetwork::getStrength() const
TDENetworkWiFiAPInfo* apInfo = NULL;
if (dev) {
TDENetworkConnectionManager* deviceConnMan = dev->connectionManager();
apInfo = deviceConnMan->findAccessPointByBSSID(it.key());
if (deviceConnMan)
{
apInfo = deviceConnMan->findAccessPointByBSSID(it.key());
}
}
else if (it.data() == "") {
apInfo = nm->findAccessPointByBSSID(it.key());
if (nm)
{
apInfo = nm->findAccessPointByBSSID(it.key());
}
}
if (apInfo) {

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

Loading…
Cancel
Save