Changeset View
Changeset View
Standalone View
Standalone View
libs/models/networkmodel.cpp
Show First 20 Lines • Show All 447 Lines • ▼ Show 20 Line(s) | 446 | { | |||
---|---|---|---|---|---|
448 | 448 | | |||
449 | // BUG: 386342 | 449 | // BUG: 386342 | ||
450 | // When creating a new hidden wireless network and attempting to connect to it, NM then later reports that AccessPoint appeared, but | 450 | // When creating a new hidden wireless network and attempting to connect to it, NM then later reports that AccessPoint appeared, but | ||
451 | // it doesn't know its SSID from some reason, this also makes Wireless device to advertise a new available connection, which we later | 451 | // it doesn't know its SSID from some reason, this also makes Wireless device to advertise a new available connection, which we later | ||
452 | // attempt to merge with an AP, based on its SSID, but it doesn't find any, because we have AP with empty SSID. After this we get another | 452 | // attempt to merge with an AP, based on its SSID, but it doesn't find any, because we have AP with empty SSID. After this we get another | ||
453 | // AccessPoint appeared signal, this time we know SSID, but we don't attempt any merging, because it's usually the other way around, thus | 453 | // AccessPoint appeared signal, this time we know SSID, but we don't attempt any merging, because it's usually the other way around, thus | ||
454 | // we need to attempt to merge it here with a connection we guess it's related to this new AP | 454 | // we need to attempt to merge it here with a connection we guess it's related to this new AP | ||
455 | for (NetworkModelItem *item : m_list.returnItems(NetworkItemsList::Type, NetworkManager::ConnectionSettings::Wireless)) { | 455 | for (NetworkModelItem *item : m_list.returnItems(NetworkItemsList::Type, NetworkManager::ConnectionSettings::Wireless)) { | ||
456 | if (item->itemType() == NetworkModelItem::AvailableConnection) { | 456 | if (item->itemType() != NetworkModelItem::AvailableConnection) | ||
457 | continue; | ||||
broulik: Shouldn't this be a `continue`? | |||||
458 | | ||||
457 | NetworkManager::ConnectionSettings::Ptr connectionSettings = NetworkManager::findConnection(item->connectionPath())->settings(); | 459 | NetworkManager::ConnectionSettings::Ptr connectionSettings = NetworkManager::findConnection(item->connectionPath())->settings(); | ||
458 | if (connectionSettings && connectionSettings->connectionType() == NetworkManager::ConnectionSettings::Wireless) { | 460 | if (connectionSettings && connectionSettings->connectionType() == NetworkManager::ConnectionSettings::Wireless) { | ||
459 | NetworkManager::WirelessSetting::Ptr wirelessSetting = connectionSettings->setting(NetworkManager::Setting::Wireless).dynamicCast<NetworkManager::WirelessSetting>(); | 461 | NetworkManager::WirelessSetting::Ptr wirelessSetting = connectionSettings->setting(NetworkManager::Setting::Wireless).dynamicCast<NetworkManager::WirelessSetting>(); | ||
460 | if (QString::fromUtf8(wirelessSetting->ssid()) == network->ssid()) { | 462 | if (QString::fromUtf8(wirelessSetting->ssid()) == network->ssid()) { | ||
461 | const QString bssid = NetworkManager::macAddressAsString(wirelessSetting->bssid()); | 463 | const QString bssid = NetworkManager::macAddressAsString(wirelessSetting->bssid()); | ||
462 | const QString restrictedHw = NetworkManager::macAddressAsString(wirelessSetting->macAddress()); | 464 | const QString restrictedHw = NetworkManager::macAddressAsString(wirelessSetting->macAddress()); | ||
463 | if ((bssid.isEmpty() || bssid == network->referenceAccessPoint()->hardwareAddress()) && | 465 | if ((bssid.isEmpty() || bssid == network->referenceAccessPoint()->hardwareAddress()) && | ||
464 | (restrictedHw.isEmpty() || restrictedHw == device->hardwareAddress())) { | 466 | (restrictedHw.isEmpty() || restrictedHw == device->hardwareAddress())) { | ||
465 | updateFromWirelessNetwork(item, network, device); | 467 | updateFromWirelessNetwork(item, network, device); | ||
466 | return; | 468 | return; | ||
467 | } | 469 | } | ||
468 | } | 470 | } | ||
469 | } | 471 | } | ||
470 | } | 472 | } | ||
471 | } | | |||
472 | 473 | | |||
473 | NetworkManager::WirelessSetting::NetworkMode mode = NetworkManager::WirelessSetting::Infrastructure; | 474 | NetworkManager::WirelessSetting::NetworkMode mode = NetworkManager::WirelessSetting::Infrastructure; | ||
474 | NetworkManager::WirelessSecurityType securityType = NetworkManager::UnknownSecurity; | 475 | NetworkManager::WirelessSecurityType securityType = NetworkManager::UnknownSecurity; | ||
475 | NetworkManager::AccessPoint::Ptr ap = network->referenceAccessPoint(); | 476 | NetworkManager::AccessPoint::Ptr ap = network->referenceAccessPoint(); | ||
476 | if (ap && ap->capabilities().testFlag(NetworkManager::AccessPoint::Privacy)) { | 477 | if (ap && ap->capabilities().testFlag(NetworkManager::AccessPoint::Privacy)) { | ||
477 | securityType = NetworkManager::findBestWirelessSecurity(device->wirelessCapabilities(), true, (device->mode() == NetworkManager::WirelessDevice::Adhoc), | 478 | securityType = NetworkManager::findBestWirelessSecurity(device->wirelessCapabilities(), true, (device->mode() == NetworkManager::WirelessDevice::Adhoc), | ||
478 | ap->capabilities(), ap->wpaFlags(), ap->rsnFlags()); | 479 | ap->capabilities(), ap->wpaFlags(), ap->rsnFlags()); | ||
479 | if (network->referenceAccessPoint()->mode() == NetworkManager::AccessPoint::Infra) { | 480 | if (network->referenceAccessPoint()->mode() == NetworkManager::AccessPoint::Infra) { | ||
▲ Show 20 Lines • Show All 81 Lines • ▼ Show 20 Line(s) | 559 | if (row >= 0) { | |||
561 | Q_EMIT dataChanged(index, index, item->changedRoles()); | 562 | Q_EMIT dataChanged(index, index, item->changedRoles()); | ||
562 | item->clearChangedRoles(); | 563 | item->clearChangedRoles(); | ||
563 | } | 564 | } | ||
564 | } | 565 | } | ||
565 | 566 | | |||
566 | void NetworkModel::accessPointSignalStrengthChanged(int signal) | 567 | void NetworkModel::accessPointSignalStrengthChanged(int signal) | ||
567 | { | 568 | { | ||
568 | NetworkManager::AccessPoint *apPtr = qobject_cast<NetworkManager::AccessPoint*>(sender()); | 569 | NetworkManager::AccessPoint *apPtr = qobject_cast<NetworkManager::AccessPoint*>(sender()); | ||
569 | if (apPtr) { | 570 | if (!apPtr) | ||
571 | return; | ||||
572 | | ||||
570 | for (NetworkModelItem *item : m_list.returnItems(NetworkItemsList::Ssid, apPtr->ssid())) { | 573 | for (NetworkModelItem *item : m_list.returnItems(NetworkItemsList::Ssid, apPtr->ssid())) { | ||
571 | if (item->specificPath() == apPtr->uni()) { | 574 | if (item->specificPath() == apPtr->uni()) { | ||
572 | item->setSignal(signal); | 575 | item->setSignal(signal); | ||
573 | updateItem(item); | 576 | updateItem(item); | ||
574 | qCDebug(PLASMA_NM) << "AccessPoint " << item->name() << ": signal changed to " << item->signal(); | 577 | qCDebug(PLASMA_NM) << "AccessPoint " << item->name() << ": signal changed to " << item->signal(); | ||
575 | } | 578 | } | ||
576 | } | 579 | } | ||
577 | } | 580 | } | ||
578 | } | | |||
579 | 581 | | |||
580 | void NetworkModel::activeConnectionAdded(const QString &activeConnection) | 582 | void NetworkModel::activeConnectionAdded(const QString &activeConnection) | ||
581 | { | 583 | { | ||
582 | NetworkManager::ActiveConnection::Ptr activeCon = NetworkManager::findActiveConnection(activeConnection); | 584 | NetworkManager::ActiveConnection::Ptr activeCon = NetworkManager::findActiveConnection(activeConnection); | ||
583 | 585 | | |||
584 | if (activeCon) { | 586 | if (activeCon) { | ||
585 | addActiveConnection(activeCon); | 587 | addActiveConnection(activeCon); | ||
586 | } | 588 | } | ||
587 | } | 589 | } | ||
588 | 590 | | |||
589 | void NetworkModel::activeConnectionRemoved(const QString &activeConnection) | 591 | void NetworkModel::activeConnectionRemoved(const QString &activeConnection) | ||
590 | { | 592 | { | ||
591 | for (NetworkModelItem *item : m_list.returnItems(NetworkItemsList::ActiveConnection, activeConnection)) { | 593 | for (NetworkModelItem *item : m_list.returnItems(NetworkItemsList::ActiveConnection, activeConnection)) { | ||
592 | item->setActiveConnectionPath(QString()); | 594 | item->setActiveConnectionPath(QString()); | ||
593 | item->setConnectionState(NetworkManager::ActiveConnection::Deactivated); | 595 | item->setConnectionState(NetworkManager::ActiveConnection::Deactivated); | ||
594 | item->setVpnState(NetworkManager::VpnConnection::Disconnected); | 596 | item->setVpnState(NetworkManager::VpnConnection::Disconnected); | ||
595 | updateItem(item); | 597 | updateItem(item); | ||
596 | qCDebug(PLASMA_NM) << "Item " << item->name() << ": active connection removed"; | 598 | qCDebug(PLASMA_NM) << "Item " << item->name() << ": active connection removed"; | ||
597 | } | 599 | } | ||
598 | } | 600 | } | ||
599 | 601 | | |||
600 | void NetworkModel::activeConnectionStateChanged(NetworkManager::ActiveConnection::State state) | 602 | void NetworkModel::activeConnectionStateChanged(NetworkManager::ActiveConnection::State state) | ||
601 | { | 603 | { | ||
602 | NetworkManager::ActiveConnection *activePtr = qobject_cast<NetworkManager::ActiveConnection*>(sender()); | 604 | NetworkManager::ActiveConnection *activePtr = qobject_cast<NetworkManager::ActiveConnection*>(sender()); | ||
603 | if (activePtr) { | 605 | | ||
606 | if (!activePtr) | ||||
607 | return; | ||||
608 | | ||||
604 | for (NetworkModelItem *item : m_list.returnItems(NetworkItemsList::ActiveConnection, activePtr->path())) { | 609 | for (NetworkModelItem *item : m_list.returnItems(NetworkItemsList::ActiveConnection, activePtr->path())) { | ||
605 | item->setConnectionState(state); | 610 | item->setConnectionState(state); | ||
606 | item->invalidateDetails(); | 611 | item->invalidateDetails(); | ||
607 | int row = m_list.indexOf(item); | 612 | int row = m_list.indexOf(item); | ||
608 | Q_EMIT dataChanged(index(row, 0), index(row, 0)); | 613 | Q_EMIT dataChanged(index(row, 0), index(row, 0)); | ||
609 | 614 | | |||
610 | qCDebug(PLASMA_NM) << "Item " << item->name() << ": active connection changed to " << item->connectionState(); | 615 | qCDebug(PLASMA_NM) << "Item " << item->name() << ": active connection changed to " << item->connectionState(); | ||
611 | } | 616 | } | ||
612 | } | 617 | } | ||
613 | } | 618 | } | ||
614 | 619 | | |||
615 | void NetworkModel::activeVpnConnectionStateChanged(NetworkManager::VpnConnection::State state, NetworkManager::VpnConnection::StateChangeReason reason) | 620 | void NetworkModel::activeVpnConnectionStateChanged(NetworkManager::VpnConnection::State state, NetworkManager::VpnConnection::StateChangeReason reason) | ||
616 | { | 621 | { | ||
617 | Q_UNUSED(reason) | 622 | Q_UNUSED(reason) | ||
618 | NetworkManager::ActiveConnection *activePtr = qobject_cast<NetworkManager::ActiveConnection*>(sender()); | 623 | NetworkManager::ActiveConnection *activePtr = qobject_cast<NetworkManager::ActiveConnection*>(sender()); | ||
619 | 624 | | |||
620 | if (activePtr) { | 625 | if (!activePtr) | ||
626 | return; | ||||
627 | | ||||
621 | for (NetworkModelItem *item : m_list.returnItems(NetworkItemsList::ActiveConnection, activePtr->path())) { | 628 | for (NetworkModelItem *item : m_list.returnItems(NetworkItemsList::ActiveConnection, activePtr->path())) { | ||
622 | if (state == NetworkManager::VpnConnection::Prepare || | 629 | if (state == NetworkManager::VpnConnection::Prepare || | ||
623 | state == NetworkManager::VpnConnection::NeedAuth || | 630 | state == NetworkManager::VpnConnection::NeedAuth || | ||
624 | state == NetworkManager::VpnConnection::Connecting || | 631 | state == NetworkManager::VpnConnection::Connecting || | ||
625 | state == NetworkManager::VpnConnection::GettingIpConfig) { | 632 | state == NetworkManager::VpnConnection::GettingIpConfig) { | ||
626 | item->setConnectionState(NetworkManager::ActiveConnection::Activating); | 633 | item->setConnectionState(NetworkManager::ActiveConnection::Activating); | ||
627 | } else if (state == NetworkManager::VpnConnection::Activated) { | 634 | } else if (state == NetworkManager::VpnConnection::Activated) { | ||
628 | item->setConnectionState(NetworkManager::ActiveConnection::Activated); | 635 | item->setConnectionState(NetworkManager::ActiveConnection::Activated); | ||
629 | } else { | 636 | } else { | ||
630 | item->setConnectionState(NetworkManager::ActiveConnection::Deactivated); | 637 | item->setConnectionState(NetworkManager::ActiveConnection::Deactivated); | ||
631 | } | 638 | } | ||
632 | item->setVpnState(state); | 639 | item->setVpnState(state); | ||
633 | updateItem(item); | 640 | updateItem(item); | ||
634 | qCDebug(PLASMA_NM) << "Item " << item->name() << ": active connection changed to " << item->connectionState(); | 641 | qCDebug(PLASMA_NM) << "Item " << item->name() << ": active connection changed to " << item->connectionState(); | ||
635 | } | 642 | } | ||
636 | } | 643 | } | ||
637 | } | | |||
638 | 644 | | |||
639 | void NetworkModel::availableConnectionAppeared(const QString &connection) | 645 | void NetworkModel::availableConnectionAppeared(const QString &connection) | ||
640 | { | 646 | { | ||
641 | NetworkManager::Device::Ptr device = NetworkManager::findNetworkInterface(qobject_cast<NetworkManager::Device*>(sender())->uni()); | 647 | NetworkManager::Device::Ptr device = NetworkManager::findNetworkInterface(qobject_cast<NetworkManager::Device*>(sender())->uni()); | ||
642 | if (device) { | 648 | if (device) { | ||
643 | beginResetModel(); | 649 | beginResetModel(); | ||
644 | addAvailableConnection(connection, device); | 650 | addAvailableConnection(connection, device); | ||
645 | endResetModel(); | 651 | endResetModel(); | ||
▲ Show 20 Lines • Show All 116 Lines • ▼ Show 20 Line(s) | 729 | for (NetworkModelItem *item : m_list.returnItems(NetworkItemsList::Connection, connection)) { | |||
762 | } | 768 | } | ||
763 | remove = false; | 769 | remove = false; | ||
764 | } | 770 | } | ||
765 | } | 771 | } | ||
766 | 772 | | |||
767 | void NetworkModel::connectionUpdated() | 773 | void NetworkModel::connectionUpdated() | ||
768 | { | 774 | { | ||
769 | NetworkManager::Connection *connectionPtr = qobject_cast<NetworkManager::Connection*>(sender()); | 775 | NetworkManager::Connection *connectionPtr = qobject_cast<NetworkManager::Connection*>(sender()); | ||
770 | if (connectionPtr) { | 776 | if (!connectionPtr) | ||
777 | return; | ||||
778 | | ||||
771 | NetworkManager::ConnectionSettings::Ptr settings = connectionPtr->settings(); | 779 | NetworkManager::ConnectionSettings::Ptr settings = connectionPtr->settings(); | ||
772 | for (NetworkModelItem *item : m_list.returnItems(NetworkItemsList::Connection, connectionPtr->path())) { | 780 | for (NetworkModelItem *item : m_list.returnItems(NetworkItemsList::Connection, connectionPtr->path())) { | ||
773 | item->setConnectionPath(connectionPtr->path()); | 781 | item->setConnectionPath(connectionPtr->path()); | ||
774 | item->setName(settings->id()); | 782 | item->setName(settings->id()); | ||
775 | item->setTimestamp(settings->timestamp()); | 783 | item->setTimestamp(settings->timestamp()); | ||
776 | item->setType(settings->connectionType()); | 784 | item->setType(settings->connectionType()); | ||
777 | item->setUuid(settings->uuid()); | 785 | item->setUuid(settings->uuid()); | ||
778 | 786 | | |||
779 | if (item->type() == NetworkManager::ConnectionSettings::Wireless) { | 787 | if (item->type() == NetworkManager::ConnectionSettings::Wireless) { | ||
780 | NetworkManager::WirelessSetting::Ptr wirelessSetting; | 788 | NetworkManager::WirelessSetting::Ptr wirelessSetting; | ||
781 | wirelessSetting = settings->setting(NetworkManager::Setting::Wireless).dynamicCast<NetworkManager::WirelessSetting>(); | 789 | wirelessSetting = settings->setting(NetworkManager::Setting::Wireless).dynamicCast<NetworkManager::WirelessSetting>(); | ||
782 | item->setMode(wirelessSetting->mode()); | 790 | item->setMode(wirelessSetting->mode()); | ||
783 | item->setSecurityType(NetworkManager::securityTypeFromConnectionSetting(settings)); | 791 | item->setSecurityType(NetworkManager::securityTypeFromConnectionSetting(settings)); | ||
784 | item->setSsid(QString::fromUtf8(wirelessSetting->ssid())); | 792 | item->setSsid(QString::fromUtf8(wirelessSetting->ssid())); | ||
785 | // TODO check whether BSSID has changed and update the wireless info | 793 | // TODO check whether BSSID has changed and update the wireless info | ||
786 | } | 794 | } | ||
787 | 795 | | |||
788 | updateItem(item); | 796 | updateItem(item); | ||
789 | qCDebug(PLASMA_NM) << "Item " << item->name() << ": connection updated"; | 797 | qCDebug(PLASMA_NM) << "Item " << item->name() << ": connection updated"; | ||
790 | } | 798 | } | ||
791 | } | 799 | } | ||
792 | } | | |||
793 | 800 | | |||
794 | void NetworkModel::deviceAdded(const QString &device) | 801 | void NetworkModel::deviceAdded(const QString &device) | ||
795 | { | 802 | { | ||
796 | NetworkManager::Device::Ptr dev = NetworkManager::findNetworkInterface(device); | 803 | NetworkManager::Device::Ptr dev = NetworkManager::findNetworkInterface(device); | ||
797 | if (dev) { | 804 | if (dev) { | ||
798 | addDevice(dev); | 805 | addDevice(dev); | ||
799 | } | 806 | } | ||
800 | } | 807 | } | ||
801 | 808 | | |||
802 | void NetworkModel::deviceRemoved(const QString &device) | 809 | void NetworkModel::deviceRemoved(const QString &device) | ||
803 | { | 810 | { | ||
804 | // Make all items unavailable | 811 | // Make all items unavailable | ||
805 | for (NetworkModelItem *item : m_list.returnItems(NetworkItemsList::Device, device)) { | 812 | for (NetworkModelItem *item : m_list.returnItems(NetworkItemsList::Device, device)) { | ||
806 | availableConnectionDisappeared(item->connectionPath()); | 813 | availableConnectionDisappeared(item->connectionPath()); | ||
807 | } | 814 | } | ||
808 | } | 815 | } | ||
809 | 816 | | |||
810 | void NetworkModel::deviceStateChanged(NetworkManager::Device::State state, NetworkManager::Device::State oldState, NetworkManager::Device::StateChangeReason reason) | 817 | void NetworkModel::deviceStateChanged(NetworkManager::Device::State state, NetworkManager::Device::State oldState, NetworkManager::Device::StateChangeReason reason) | ||
811 | { | 818 | { | ||
812 | Q_UNUSED(oldState); | 819 | Q_UNUSED(oldState); | ||
813 | Q_UNUSED(reason); | 820 | Q_UNUSED(reason); | ||
814 | 821 | | |||
815 | NetworkManager::Device::Ptr device = NetworkManager::findNetworkInterface(qobject_cast<NetworkManager::Device*>(sender())->uni()); | 822 | NetworkManager::Device::Ptr device = NetworkManager::findNetworkInterface(qobject_cast<NetworkManager::Device*>(sender())->uni()); | ||
816 | 823 | | |||
817 | if (device) { | 824 | if (!device) | ||
825 | return; | ||||
826 | | ||||
818 | beginResetModel(); | 827 | beginResetModel(); | ||
819 | for (NetworkModelItem *item : m_list.returnItems(NetworkItemsList::Device, device->uni())) { | 828 | for (NetworkModelItem *item : m_list.returnItems(NetworkItemsList::Device, device->uni())) { | ||
820 | item->setDeviceState(state); | 829 | item->setDeviceState(state); | ||
821 | item->invalidateDetails(); | 830 | item->invalidateDetails(); | ||
822 | // qCDebug(PLASMA_NM) << "Item " << item->name() << ": device state changed to " << item->deviceState(); | 831 | // qCDebug(PLASMA_NM) << "Item " << item->name() << ": device state changed to " << item->deviceState(); | ||
823 | } | 832 | } | ||
824 | endResetModel(); | 833 | endResetModel(); | ||
825 | } | 834 | } | ||
826 | } | | |||
827 | 835 | | |||
828 | #if WITH_MODEMMANAGER_SUPPORT | 836 | #if WITH_MODEMMANAGER_SUPPORT | ||
829 | void NetworkModel::gsmNetworkAccessTechnologiesChanged(QFlags<MMModemAccessTechnology> accessTechnologies) | 837 | void NetworkModel::gsmNetworkAccessTechnologiesChanged(QFlags<MMModemAccessTechnology> accessTechnologies) | ||
830 | { | 838 | { | ||
831 | Q_UNUSED(accessTechnologies); | 839 | Q_UNUSED(accessTechnologies); | ||
832 | ModemManager::Modem *gsmNetwork = qobject_cast<ModemManager::Modem*>(sender()); | 840 | ModemManager::Modem *gsmNetwork = qobject_cast<ModemManager::Modem*>(sender()); | ||
833 | if (gsmNetwork) { | 841 | if (!gsmNetwork) | ||
842 | return; | ||||
843 | | ||||
834 | for (const NetworkManager::Device::Ptr &dev : NetworkManager::networkInterfaces()) { | 844 | for (const NetworkManager::Device::Ptr &dev : NetworkManager::networkInterfaces()) { | ||
835 | if (dev->type() == NetworkManager::Device::Modem) { | 845 | if (dev->type() != NetworkManager::Device::Modem) | ||
846 | continue; | ||||
broulik: `continue`? | |||||
847 | | ||||
836 | ModemManager::ModemDevice::Ptr modem = ModemManager::findModemDevice(dev->udi()); | 848 | ModemManager::ModemDevice::Ptr modem = ModemManager::findModemDevice(dev->udi()); | ||
837 | if (modem) { | 849 | if (!modem) | ||
838 | if (modem->hasInterface(ModemManager::ModemDevice::ModemInterface)) { | 850 | continue; | ||
851 | | ||||
852 | if (!modem->hasInterface(ModemManager::ModemDevice::ModemInterface)) | ||||
853 | continue; | ||||
854 | | ||||
839 | ModemManager::Modem::Ptr modemNetwork = modem->interface(ModemManager::ModemDevice::ModemInterface).objectCast<ModemManager::Modem>(); | 855 | ModemManager::Modem::Ptr modemNetwork = modem->interface(ModemManager::ModemDevice::ModemInterface).objectCast<ModemManager::Modem>(); | ||
840 | if (modemNetwork && modemNetwork->device() == gsmNetwork->device()) { | 856 | if (!modemNetwork || modemNetwork->device() != gsmNetwork->device()) | ||
857 | continue; | ||||
858 | | ||||
841 | // TODO store access technology internally? | 859 | // TODO store access technology internally? | ||
842 | for (NetworkModelItem *item : m_list.returnItems(NetworkItemsList::Device, dev->uni())) { | 860 | for (NetworkModelItem *item : m_list.returnItems(NetworkItemsList::Device, dev->uni())) { | ||
843 | updateItem(item); | 861 | updateItem(item); | ||
844 | } | 862 | } | ||
845 | } | 863 | } | ||
846 | } | 864 | } | ||
847 | } | | |||
848 | } | | |||
849 | } | | |||
850 | } | | |||
851 | } | | |||
852 | 865 | | |||
853 | void NetworkModel::gsmNetworkCurrentModesChanged() | 866 | void NetworkModel::gsmNetworkCurrentModesChanged() | ||
854 | { | 867 | { | ||
855 | ModemManager::Modem *gsmNetwork = qobject_cast<ModemManager::Modem*>(sender()); | 868 | ModemManager::Modem *gsmNetwork = qobject_cast<ModemManager::Modem*>(sender()); | ||
856 | if (gsmNetwork) { | 869 | if (!gsmNetwork) | ||
870 | return; | ||||
871 | | ||||
857 | for (const NetworkManager::Device::Ptr &dev : NetworkManager::networkInterfaces()) { | 872 | for (const NetworkManager::Device::Ptr &dev : NetworkManager::networkInterfaces()) { | ||
858 | if (dev->type() == NetworkManager::Device::Modem) { | 873 | if (dev->type() != NetworkManager::Device::Modem) | ||
874 | continue; | ||||
875 | | ||||
859 | ModemManager::ModemDevice::Ptr modem = ModemManager::findModemDevice(dev->udi()); | 876 | ModemManager::ModemDevice::Ptr modem = ModemManager::findModemDevice(dev->udi()); | ||
860 | if (modem) { | 877 | if (!modem) | ||
861 | if (modem->hasInterface(ModemManager::ModemDevice::ModemInterface)) { | 878 | continue; | ||
879 | | ||||
880 | if (!modem->hasInterface(ModemManager::ModemDevice::ModemInterface)) | ||||
881 | continue; | ||||
882 | | ||||
862 | ModemManager::Modem::Ptr modemNetwork = modem->interface(ModemManager::ModemDevice::ModemInterface).objectCast<ModemManager::Modem>(); | 883 | ModemManager::Modem::Ptr modemNetwork = modem->interface(ModemManager::ModemDevice::ModemInterface).objectCast<ModemManager::Modem>(); | ||
863 | if (modemNetwork && modemNetwork->device() == gsmNetwork->device()) { | 884 | if (!modemNetwork || modemNetwork->device() != gsmNetwork->device()) | ||
885 | continue; | ||||
886 | | ||||
864 | for (NetworkModelItem *item : m_list.returnItems(NetworkItemsList::Device, dev->uni())) { | 887 | for (NetworkModelItem *item : m_list.returnItems(NetworkItemsList::Device, dev->uni())) { | ||
865 | updateItem(item); | 888 | updateItem(item); | ||
866 | } | 889 | } | ||
867 | } | 890 | } | ||
868 | } | 891 | } | ||
869 | } | | |||
870 | } | | |||
871 | } | | |||
872 | } | | |||
873 | } | | |||
874 | 892 | | |||
875 | void NetworkModel::gsmNetworkSignalQualityChanged(const ModemManager::SignalQualityPair &signalQuality) | 893 | void NetworkModel::gsmNetworkSignalQualityChanged(const ModemManager::SignalQualityPair &signalQuality) | ||
876 | { | 894 | { | ||
877 | ModemManager::Modem *gsmNetwork = qobject_cast<ModemManager::Modem*>(sender()); | 895 | ModemManager::Modem *gsmNetwork = qobject_cast<ModemManager::Modem*>(sender()); | ||
878 | if (gsmNetwork) { | 896 | if (!gsmNetwork) | ||
897 | return; | ||||
898 | | ||||
879 | for (const NetworkManager::Device::Ptr &dev : NetworkManager::networkInterfaces()) { | 899 | for (const NetworkManager::Device::Ptr &dev : NetworkManager::networkInterfaces()) { | ||
880 | if (dev->type() == NetworkManager::Device::Modem) { | 900 | if (dev->type() != NetworkManager::Device::Modem) | ||
901 | continue; | ||||
902 | | ||||
881 | ModemManager::ModemDevice::Ptr modem = ModemManager::findModemDevice(dev->udi()); | 903 | ModemManager::ModemDevice::Ptr modem = ModemManager::findModemDevice(dev->udi()); | ||
882 | if (modem) { | 904 | if (!modem) | ||
883 | if (modem->hasInterface(ModemManager::ModemDevice::ModemInterface)) { | 905 | continue; | ||
906 | | ||||
907 | if (!modem->hasInterface(ModemManager::ModemDevice::ModemInterface)) | ||||
908 | continue; | ||||
909 | | ||||
884 | ModemManager::Modem::Ptr modemNetwork = modem->interface(ModemManager::ModemDevice::ModemInterface).objectCast<ModemManager::Modem>(); | 910 | ModemManager::Modem::Ptr modemNetwork = modem->interface(ModemManager::ModemDevice::ModemInterface).objectCast<ModemManager::Modem>(); | ||
885 | if (modemNetwork && modemNetwork->device() == gsmNetwork->device()) { | 911 | if (!modemNetwork || modemNetwork->device() != gsmNetwork->device()) | ||
912 | continue; | ||||
913 | | ||||
886 | for (NetworkModelItem *item : m_list.returnItems(NetworkItemsList::Device, dev->uni())) { | 914 | for (NetworkModelItem *item : m_list.returnItems(NetworkItemsList::Device, dev->uni())) { | ||
887 | item->setSignal(signalQuality.signal); | 915 | item->setSignal(signalQuality.signal); | ||
888 | updateItem(item); | 916 | updateItem(item); | ||
889 | } | 917 | } | ||
890 | } | 918 | } | ||
891 | } | 919 | } | ||
892 | } | | |||
893 | } | | |||
894 | } | | |||
895 | } | | |||
896 | } | | |||
897 | 920 | | |||
898 | #endif | 921 | #endif | ||
899 | 922 | | |||
900 | void NetworkModel::ipConfigChanged() | 923 | void NetworkModel::ipConfigChanged() | ||
901 | { | 924 | { | ||
902 | NetworkManager::Device::Ptr device = NetworkManager::findNetworkInterface(qobject_cast<NetworkManager::Device*>(sender())->uni()); | 925 | NetworkManager::Device::Ptr device = NetworkManager::findNetworkInterface(qobject_cast<NetworkManager::Device*>(sender())->uni()); | ||
903 | 926 | | |||
904 | if (device) { | 927 | if (!device) | ||
928 | return; | ||||
929 | | ||||
905 | for (NetworkModelItem *item : m_list.returnItems(NetworkItemsList::Device, device->uni())) { | 930 | for (NetworkModelItem *item : m_list.returnItems(NetworkItemsList::Device, device->uni())) { | ||
906 | updateItem(item); | 931 | updateItem(item); | ||
907 | // qCDebug(PLASMA_NM) << "Item " << item->name() << ": device ipconfig changed"; | 932 | // qCDebug(PLASMA_NM) << "Item " << item->name() << ": device ipconfig changed"; | ||
908 | } | 933 | } | ||
909 | } | 934 | } | ||
910 | } | | |||
911 | 935 | | |||
912 | void NetworkModel::ipInterfaceChanged() | 936 | void NetworkModel::ipInterfaceChanged() | ||
913 | { | 937 | { | ||
914 | NetworkManager::Device *device = qobject_cast<NetworkManager::Device*>(sender()); | 938 | NetworkManager::Device *device = qobject_cast<NetworkManager::Device*>(sender()); | ||
915 | if (device) { | 939 | if (!device) | ||
940 | return; | ||||
941 | | ||||
916 | for (NetworkModelItem *item : m_list.returnItems(NetworkItemsList::Device, device->uni())) { | 942 | for (NetworkModelItem *item : m_list.returnItems(NetworkItemsList::Device, device->uni())) { | ||
917 | if (device->ipInterfaceName().isEmpty()) { | 943 | if (device->ipInterfaceName().isEmpty()) { | ||
918 | item->setDeviceName(device->interfaceName()); | 944 | item->setDeviceName(device->interfaceName()); | ||
919 | } else { | 945 | } else { | ||
920 | item->setDeviceName(device->ipInterfaceName()); | 946 | item->setDeviceName(device->ipInterfaceName()); | ||
921 | } | 947 | } | ||
922 | } | 948 | } | ||
923 | } | 949 | } | ||
924 | } | | |||
925 | 950 | | |||
926 | void NetworkModel::statusChanged(NetworkManager::Status status) | 951 | void NetworkModel::statusChanged(NetworkManager::Status status) | ||
927 | { | 952 | { | ||
928 | Q_UNUSED(status); | 953 | Q_UNUSED(status); | ||
929 | 954 | | |||
930 | qCDebug(PLASMA_NM) << "NetworkManager state changed to " << status; | 955 | qCDebug(PLASMA_NM) << "NetworkManager state changed to " << status; | ||
931 | // This has probably effect only for VPN connections | 956 | // This has probably effect only for VPN connections | ||
932 | for (NetworkModelItem *item : m_list.returnItems(NetworkItemsList::Type, NetworkManager::ConnectionSettings::Vpn)) { | 957 | for (NetworkModelItem *item : m_list.returnItems(NetworkItemsList::Type, NetworkManager::ConnectionSettings::Vpn)) { | ||
Show All 9 Lines | 965 | if (device && device->type() == NetworkManager::Device::Wifi) { | |||
942 | NetworkManager::WirelessNetwork::Ptr network = wirelessDevice->findNetwork(ssid); | 967 | NetworkManager::WirelessNetwork::Ptr network = wirelessDevice->findNetwork(ssid); | ||
943 | addWirelessNetwork(network, wirelessDevice); | 968 | addWirelessNetwork(network, wirelessDevice); | ||
944 | } | 969 | } | ||
945 | } | 970 | } | ||
946 | 971 | | |||
947 | void NetworkModel::wirelessNetworkDisappeared(const QString &ssid) | 972 | void NetworkModel::wirelessNetworkDisappeared(const QString &ssid) | ||
948 | { | 973 | { | ||
949 | NetworkManager::Device::Ptr device = NetworkManager::findNetworkInterface(qobject_cast<NetworkManager::Device*>(sender())->uni()); | 974 | NetworkManager::Device::Ptr device = NetworkManager::findNetworkInterface(qobject_cast<NetworkManager::Device*>(sender())->uni()); | ||
950 | if (device) { | 975 | if (!device) | ||
976 | return; | ||||
977 | | ||||
951 | for (NetworkModelItem *item : m_list.returnItems(NetworkItemsList::Ssid, ssid, device->uni())) { | 978 | for (NetworkModelItem *item : m_list.returnItems(NetworkItemsList::Ssid, ssid, device->uni())) { | ||
952 | // Remove the entire item, because it's only AP or it's a duplicated available connection | 979 | // Remove the entire item, because it's only AP or it's a duplicated available connection | ||
953 | if (item->itemType() == NetworkModelItem::AvailableAccessPoint || item->duplicate()) { | 980 | if (item->itemType() == NetworkModelItem::AvailableAccessPoint || item->duplicate()) { | ||
954 | const int row = m_list.indexOf(item); | 981 | const int row = m_list.indexOf(item); | ||
955 | if (row >= 0) { | 982 | if (row >= 0) { | ||
956 | qCDebug(PLASMA_NM) << "Wireless network " << item->name() << " removed completely"; | 983 | qCDebug(PLASMA_NM) << "Wireless network " << item->name() << " removed completely"; | ||
957 | beginRemoveRows(QModelIndex(), row, row); | 984 | beginRemoveRows(QModelIndex(), row, row); | ||
958 | m_list.removeItem(item); | 985 | m_list.removeItem(item); | ||
959 | item->deleteLater(); | 986 | item->deleteLater(); | ||
960 | endRemoveRows(); | 987 | endRemoveRows(); | ||
961 | } | 988 | } | ||
962 | // Remove only AP and device from the item and leave it as an unavailable connection | 989 | // Remove only AP and device from the item and leave it as an unavailable connection | ||
963 | } else { | 990 | } else { | ||
964 | if (item->mode() == NetworkManager::WirelessSetting::Infrastructure) { | 991 | if (item->mode() == NetworkManager::WirelessSetting::Infrastructure) { | ||
965 | item->setDeviceName(QString()); | 992 | item->setDeviceName(QString()); | ||
966 | item->setDevicePath(QString()); | 993 | item->setDevicePath(QString()); | ||
967 | item->setSpecificPath(QString()); | 994 | item->setSpecificPath(QString()); | ||
968 | } | 995 | } | ||
969 | item->setSignal(0); | 996 | item->setSignal(0); | ||
970 | updateItem(item); | 997 | updateItem(item); | ||
971 | qCDebug(PLASMA_NM) << "Item " << item->name() << ": wireless network removed"; | 998 | qCDebug(PLASMA_NM) << "Item " << item->name() << ": wireless network removed"; | ||
972 | } | 999 | } | ||
973 | } | 1000 | } | ||
974 | } | 1001 | } | ||
975 | } | | |||
976 | 1002 | | |||
977 | void NetworkModel::wirelessNetworkReferenceApChanged(const QString &accessPoint) | 1003 | void NetworkModel::wirelessNetworkReferenceApChanged(const QString &accessPoint) | ||
978 | { | 1004 | { | ||
979 | NetworkManager::WirelessNetwork *networkPtr = qobject_cast<NetworkManager::WirelessNetwork*>(sender()); | 1005 | NetworkManager::WirelessNetwork *networkPtr = qobject_cast<NetworkManager::WirelessNetwork*>(sender()); | ||
980 | 1006 | | |||
981 | if (networkPtr) { | 1007 | if (!networkPtr) | ||
1008 | return; | ||||
1009 | | ||||
982 | for (NetworkModelItem *item : m_list.returnItems(NetworkItemsList::Ssid, networkPtr->ssid(), networkPtr->device())) { | 1010 | for (NetworkModelItem *item : m_list.returnItems(NetworkItemsList::Ssid, networkPtr->ssid(), networkPtr->device())) { | ||
983 | NetworkManager::Connection::Ptr connection = NetworkManager::findConnection(item->connectionPath()); | 1011 | NetworkManager::Connection::Ptr connection = NetworkManager::findConnection(item->connectionPath()); | ||
984 | if (connection) { | 1012 | if (!connection) | ||
1013 | continue; | ||||
985 | NetworkManager::WirelessSetting::Ptr wirelessSetting = connection->settings()->setting(NetworkManager::Setting::Wireless).staticCast<NetworkManager::WirelessSetting>(); | 1014 | NetworkManager::WirelessSetting::Ptr wirelessSetting = connection->settings()->setting(NetworkManager::Setting::Wireless).staticCast<NetworkManager::WirelessSetting>(); | ||
986 | if (wirelessSetting) { | 1015 | if (!wirelessSetting) | ||
1016 | continue; | ||||
1017 | | ||||
987 | if (wirelessSetting->bssid().isEmpty()) { | 1018 | if (wirelessSetting->bssid().isEmpty()) { | ||
988 | item->setSpecificPath(accessPoint); | 1019 | item->setSpecificPath(accessPoint); | ||
989 | updateItem(item); | 1020 | updateItem(item); | ||
990 | } | 1021 | } | ||
991 | } | 1022 | } | ||
992 | } | 1023 | } | ||
993 | } | | |||
994 | } | | |||
995 | } | | |||
996 | 1024 | | |||
997 | void NetworkModel::wirelessNetworkSignalChanged(int signal) | 1025 | void NetworkModel::wirelessNetworkSignalChanged(int signal) | ||
998 | { | 1026 | { | ||
999 | NetworkManager::WirelessNetwork *networkPtr = qobject_cast<NetworkManager::WirelessNetwork*>(sender()); | 1027 | NetworkManager::WirelessNetwork *networkPtr = qobject_cast<NetworkManager::WirelessNetwork*>(sender()); | ||
1000 | if (networkPtr) { | 1028 | if (!networkPtr) | ||
1029 | return; | ||||
1001 | for (NetworkModelItem *item : m_list.returnItems(NetworkItemsList::Ssid, networkPtr->ssid(), networkPtr->device())) { | 1030 | for (NetworkModelItem *item : m_list.returnItems(NetworkItemsList::Ssid, networkPtr->ssid(), networkPtr->device())) { | ||
1002 | if (item->specificPath() == networkPtr->referenceAccessPoint()->uni()) { | 1031 | if (item->specificPath() == networkPtr->referenceAccessPoint()->uni()) { | ||
1003 | item->setSignal(signal); | 1032 | item->setSignal(signal); | ||
1004 | updateItem(item); | 1033 | updateItem(item); | ||
1005 | // qCDebug(PLASMA_NM) << "Wireless network " << item->name() << ": signal changed to " << item->signal(); | 1034 | // qCDebug(PLASMA_NM) << "Wireless network " << item->name() << ": signal changed to " << item->signal(); | ||
1006 | } | 1035 | } | ||
1007 | } | 1036 | } | ||
1008 | } | 1037 | } | ||
1009 | } | | |||
1010 | 1038 | | |||
1011 | NetworkManager::WirelessSecurityType NetworkModel::alternativeWirelessSecurity(const NetworkManager::WirelessSecurityType type) | 1039 | NetworkManager::WirelessSecurityType NetworkModel::alternativeWirelessSecurity(const NetworkManager::WirelessSecurityType type) | ||
1012 | { | 1040 | { | ||
1013 | if (type == NetworkManager::WpaPsk) { | 1041 | if (type == NetworkManager::WpaPsk) { | ||
1014 | return NetworkManager::Wpa2Psk; | 1042 | return NetworkManager::Wpa2Psk; | ||
1015 | } else if (type == NetworkManager::WpaEap) { | 1043 | } else if (type == NetworkManager::WpaEap) { | ||
1016 | return NetworkManager::Wpa2Eap; | 1044 | return NetworkManager::Wpa2Eap; | ||
1017 | } else if (type == NetworkManager::Wpa2Psk) { | 1045 | } else if (type == NetworkManager::Wpa2Psk) { | ||
Show All 39 Lines |
Shouldn't this be a continue?