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 | break; | ||||
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 | if (!activePtr) | ||
606 | return; | ||||
607 | | ||||
604 | beginResetModel(); | 608 | beginResetModel(); | ||
605 | for (NetworkModelItem *item : m_list.returnItems(NetworkItemsList::ActiveConnection, activePtr->path())) { | 609 | for (NetworkModelItem *item : m_list.returnItems(NetworkItemsList::ActiveConnection, activePtr->path())) { | ||
606 | item->setConnectionState(state); | 610 | item->setConnectionState(state); | ||
607 | item->invalidateDetails(); | 611 | item->invalidateDetails(); | ||
608 | qCDebug(PLASMA_NM) << "Item " << item->name() << ": active connection changed to " << item->connectionState(); | 612 | qCDebug(PLASMA_NM) << "Item " << item->name() << ": active connection changed to " << item->connectionState(); | ||
609 | } | 613 | } | ||
610 | endResetModel(); | 614 | endResetModel(); | ||
611 | } | 615 | } | ||
612 | } | | |||
613 | 616 | | |||
614 | void NetworkModel::activeVpnConnectionStateChanged(NetworkManager::VpnConnection::State state, NetworkManager::VpnConnection::StateChangeReason reason) | 617 | void NetworkModel::activeVpnConnectionStateChanged(NetworkManager::VpnConnection::State state, NetworkManager::VpnConnection::StateChangeReason reason) | ||
615 | { | 618 | { | ||
616 | Q_UNUSED(reason) | 619 | Q_UNUSED(reason) | ||
617 | NetworkManager::ActiveConnection *activePtr = qobject_cast<NetworkManager::ActiveConnection*>(sender()); | 620 | NetworkManager::ActiveConnection *activePtr = qobject_cast<NetworkManager::ActiveConnection*>(sender()); | ||
618 | 621 | | |||
619 | if (activePtr) { | 622 | if (!activePtr) | ||
623 | return; | ||||
624 | | ||||
620 | for (NetworkModelItem *item : m_list.returnItems(NetworkItemsList::ActiveConnection, activePtr->path())) { | 625 | for (NetworkModelItem *item : m_list.returnItems(NetworkItemsList::ActiveConnection, activePtr->path())) { | ||
621 | if (state == NetworkManager::VpnConnection::Prepare || | 626 | if (state == NetworkManager::VpnConnection::Prepare || | ||
622 | state == NetworkManager::VpnConnection::NeedAuth || | 627 | state == NetworkManager::VpnConnection::NeedAuth || | ||
623 | state == NetworkManager::VpnConnection::Connecting || | 628 | state == NetworkManager::VpnConnection::Connecting || | ||
624 | state == NetworkManager::VpnConnection::GettingIpConfig) { | 629 | state == NetworkManager::VpnConnection::GettingIpConfig) { | ||
625 | item->setConnectionState(NetworkManager::ActiveConnection::Activating); | 630 | item->setConnectionState(NetworkManager::ActiveConnection::Activating); | ||
626 | } else if (state == NetworkManager::VpnConnection::Activated) { | 631 | } else if (state == NetworkManager::VpnConnection::Activated) { | ||
627 | item->setConnectionState(NetworkManager::ActiveConnection::Activated); | 632 | item->setConnectionState(NetworkManager::ActiveConnection::Activated); | ||
628 | } else { | 633 | } else { | ||
629 | item->setConnectionState(NetworkManager::ActiveConnection::Deactivated); | 634 | item->setConnectionState(NetworkManager::ActiveConnection::Deactivated); | ||
630 | } | 635 | } | ||
631 | item->setVpnState(state); | 636 | item->setVpnState(state); | ||
632 | updateItem(item); | 637 | updateItem(item); | ||
633 | qCDebug(PLASMA_NM) << "Item " << item->name() << ": active connection changed to " << item->connectionState(); | 638 | qCDebug(PLASMA_NM) << "Item " << item->name() << ": active connection changed to " << item->connectionState(); | ||
634 | } | 639 | } | ||
635 | } | 640 | } | ||
636 | } | | |||
637 | 641 | | |||
638 | void NetworkModel::availableConnectionAppeared(const QString &connection) | 642 | void NetworkModel::availableConnectionAppeared(const QString &connection) | ||
639 | { | 643 | { | ||
640 | NetworkManager::Device::Ptr device = NetworkManager::findNetworkInterface(qobject_cast<NetworkManager::Device*>(sender())->uni()); | 644 | NetworkManager::Device::Ptr device = NetworkManager::findNetworkInterface(qobject_cast<NetworkManager::Device*>(sender())->uni()); | ||
641 | if (device) { | 645 | if (device) { | ||
642 | beginResetModel(); | 646 | beginResetModel(); | ||
643 | addAvailableConnection(connection, device); | 647 | addAvailableConnection(connection, device); | ||
644 | endResetModel(); | 648 | endResetModel(); | ||
▲ Show 20 Lines • Show All 116 Lines • ▼ Show 20 Line(s) | 726 | for (NetworkModelItem *item : m_list.returnItems(NetworkItemsList::Connection, connection)) { | |||
761 | } | 765 | } | ||
762 | remove = false; | 766 | remove = false; | ||
763 | } | 767 | } | ||
764 | } | 768 | } | ||
765 | 769 | | |||
766 | void NetworkModel::connectionUpdated() | 770 | void NetworkModel::connectionUpdated() | ||
767 | { | 771 | { | ||
768 | NetworkManager::Connection *connectionPtr = qobject_cast<NetworkManager::Connection*>(sender()); | 772 | NetworkManager::Connection *connectionPtr = qobject_cast<NetworkManager::Connection*>(sender()); | ||
769 | if (connectionPtr) { | 773 | if (!connectionPtr) | ||
774 | return; | ||||
775 | | ||||
770 | NetworkManager::ConnectionSettings::Ptr settings = connectionPtr->settings(); | 776 | NetworkManager::ConnectionSettings::Ptr settings = connectionPtr->settings(); | ||
771 | for (NetworkModelItem *item : m_list.returnItems(NetworkItemsList::Connection, connectionPtr->path())) { | 777 | for (NetworkModelItem *item : m_list.returnItems(NetworkItemsList::Connection, connectionPtr->path())) { | ||
772 | item->setConnectionPath(connectionPtr->path()); | 778 | item->setConnectionPath(connectionPtr->path()); | ||
773 | item->setName(settings->id()); | 779 | item->setName(settings->id()); | ||
774 | item->setTimestamp(settings->timestamp()); | 780 | item->setTimestamp(settings->timestamp()); | ||
775 | item->setType(settings->connectionType()); | 781 | item->setType(settings->connectionType()); | ||
776 | item->setUuid(settings->uuid()); | 782 | item->setUuid(settings->uuid()); | ||
777 | 783 | | |||
778 | if (item->type() == NetworkManager::ConnectionSettings::Wireless) { | 784 | if (item->type() == NetworkManager::ConnectionSettings::Wireless) { | ||
779 | NetworkManager::WirelessSetting::Ptr wirelessSetting; | 785 | NetworkManager::WirelessSetting::Ptr wirelessSetting; | ||
780 | wirelessSetting = settings->setting(NetworkManager::Setting::Wireless).dynamicCast<NetworkManager::WirelessSetting>(); | 786 | wirelessSetting = settings->setting(NetworkManager::Setting::Wireless).dynamicCast<NetworkManager::WirelessSetting>(); | ||
781 | item->setMode(wirelessSetting->mode()); | 787 | item->setMode(wirelessSetting->mode()); | ||
782 | item->setSecurityType(NetworkManager::securityTypeFromConnectionSetting(settings)); | 788 | item->setSecurityType(NetworkManager::securityTypeFromConnectionSetting(settings)); | ||
783 | item->setSsid(QString::fromUtf8(wirelessSetting->ssid())); | 789 | item->setSsid(QString::fromUtf8(wirelessSetting->ssid())); | ||
784 | // TODO check whether BSSID has changed and update the wireless info | 790 | // TODO check whether BSSID has changed and update the wireless info | ||
785 | } | 791 | } | ||
786 | 792 | | |||
787 | updateItem(item); | 793 | updateItem(item); | ||
788 | qCDebug(PLASMA_NM) << "Item " << item->name() << ": connection updated"; | 794 | qCDebug(PLASMA_NM) << "Item " << item->name() << ": connection updated"; | ||
789 | } | 795 | } | ||
790 | } | 796 | } | ||
791 | } | | |||
792 | 797 | | |||
793 | void NetworkModel::deviceAdded(const QString &device) | 798 | void NetworkModel::deviceAdded(const QString &device) | ||
794 | { | 799 | { | ||
795 | NetworkManager::Device::Ptr dev = NetworkManager::findNetworkInterface(device); | 800 | NetworkManager::Device::Ptr dev = NetworkManager::findNetworkInterface(device); | ||
796 | if (dev) { | 801 | if (dev) { | ||
797 | addDevice(dev); | 802 | addDevice(dev); | ||
798 | } | 803 | } | ||
799 | } | 804 | } | ||
800 | 805 | | |||
801 | void NetworkModel::deviceRemoved(const QString &device) | 806 | void NetworkModel::deviceRemoved(const QString &device) | ||
802 | { | 807 | { | ||
803 | // Make all items unavailable | 808 | // Make all items unavailable | ||
804 | for (NetworkModelItem *item : m_list.returnItems(NetworkItemsList::Device, device)) { | 809 | for (NetworkModelItem *item : m_list.returnItems(NetworkItemsList::Device, device)) { | ||
805 | availableConnectionDisappeared(item->connectionPath()); | 810 | availableConnectionDisappeared(item->connectionPath()); | ||
806 | } | 811 | } | ||
807 | } | 812 | } | ||
808 | 813 | | |||
809 | void NetworkModel::deviceStateChanged(NetworkManager::Device::State state, NetworkManager::Device::State oldState, NetworkManager::Device::StateChangeReason reason) | 814 | void NetworkModel::deviceStateChanged(NetworkManager::Device::State state, NetworkManager::Device::State oldState, NetworkManager::Device::StateChangeReason reason) | ||
810 | { | 815 | { | ||
811 | Q_UNUSED(oldState); | 816 | Q_UNUSED(oldState); | ||
812 | Q_UNUSED(reason); | 817 | Q_UNUSED(reason); | ||
813 | 818 | | |||
814 | NetworkManager::Device::Ptr device = NetworkManager::findNetworkInterface(qobject_cast<NetworkManager::Device*>(sender())->uni()); | 819 | NetworkManager::Device::Ptr device = NetworkManager::findNetworkInterface(qobject_cast<NetworkManager::Device*>(sender())->uni()); | ||
815 | 820 | | |||
816 | if (device) { | 821 | if (!device) | ||
822 | return; | ||||
823 | | ||||
817 | beginResetModel(); | 824 | beginResetModel(); | ||
818 | for (NetworkModelItem *item : m_list.returnItems(NetworkItemsList::Device, device->uni())) { | 825 | for (NetworkModelItem *item : m_list.returnItems(NetworkItemsList::Device, device->uni())) { | ||
819 | item->setDeviceState(state); | 826 | item->setDeviceState(state); | ||
820 | item->invalidateDetails(); | 827 | item->invalidateDetails(); | ||
821 | // qCDebug(PLASMA_NM) << "Item " << item->name() << ": device state changed to " << item->deviceState(); | 828 | // qCDebug(PLASMA_NM) << "Item " << item->name() << ": device state changed to " << item->deviceState(); | ||
822 | } | 829 | } | ||
823 | endResetModel(); | 830 | endResetModel(); | ||
824 | } | 831 | } | ||
825 | } | | |||
826 | 832 | | |||
827 | #if WITH_MODEMMANAGER_SUPPORT | 833 | #if WITH_MODEMMANAGER_SUPPORT | ||
828 | void NetworkModel::gsmNetworkAccessTechnologiesChanged(QFlags<MMModemAccessTechnology> accessTechnologies) | 834 | void NetworkModel::gsmNetworkAccessTechnologiesChanged(QFlags<MMModemAccessTechnology> accessTechnologies) | ||
829 | { | 835 | { | ||
830 | Q_UNUSED(accessTechnologies); | 836 | Q_UNUSED(accessTechnologies); | ||
831 | ModemManager::Modem *gsmNetwork = qobject_cast<ModemManager::Modem*>(sender()); | 837 | ModemManager::Modem *gsmNetwork = qobject_cast<ModemManager::Modem*>(sender()); | ||
832 | if (gsmNetwork) { | 838 | if (!gsmNetwork) | ||
839 | return; | ||||
840 | | ||||
833 | for (const NetworkManager::Device::Ptr &dev : NetworkManager::networkInterfaces()) { | 841 | for (const NetworkManager::Device::Ptr &dev : NetworkManager::networkInterfaces()) { | ||
834 | if (dev->type() == NetworkManager::Device::Modem) { | 842 | if (dev->type() != NetworkManager::Device::Modem) | ||
843 | break; | ||||
broulik: `continue`? | |||||
844 | | ||||
835 | ModemManager::ModemDevice::Ptr modem = ModemManager::findModemDevice(dev->udi()); | 845 | ModemManager::ModemDevice::Ptr modem = ModemManager::findModemDevice(dev->udi()); | ||
836 | if (modem) { | 846 | if (!modem) | ||
837 | if (modem->hasInterface(ModemManager::ModemDevice::ModemInterface)) { | 847 | break; | ||
848 | | ||||
849 | if (!modem->hasInterface(ModemManager::ModemDevice::ModemInterface)) | ||||
850 | break; | ||||
851 | | ||||
838 | ModemManager::Modem::Ptr modemNetwork = modem->interface(ModemManager::ModemDevice::ModemInterface).objectCast<ModemManager::Modem>(); | 852 | ModemManager::Modem::Ptr modemNetwork = modem->interface(ModemManager::ModemDevice::ModemInterface).objectCast<ModemManager::Modem>(); | ||
839 | if (modemNetwork && modemNetwork->device() == gsmNetwork->device()) { | 853 | if (!modemNetwork || modemNetwork->device() != gsmNetwork->device()) | ||
854 | break; | ||||
855 | | ||||
840 | // TODO store access technology internally? | 856 | // TODO store access technology internally? | ||
841 | for (NetworkModelItem *item : m_list.returnItems(NetworkItemsList::Device, dev->uni())) { | 857 | for (NetworkModelItem *item : m_list.returnItems(NetworkItemsList::Device, dev->uni())) { | ||
842 | updateItem(item); | 858 | updateItem(item); | ||
843 | } | 859 | } | ||
844 | } | 860 | } | ||
845 | } | 861 | } | ||
846 | } | | |||
847 | } | | |||
848 | } | | |||
849 | } | | |||
850 | } | | |||
851 | 862 | | |||
852 | void NetworkModel::gsmNetworkCurrentModesChanged() | 863 | void NetworkModel::gsmNetworkCurrentModesChanged() | ||
853 | { | 864 | { | ||
854 | ModemManager::Modem *gsmNetwork = qobject_cast<ModemManager::Modem*>(sender()); | 865 | ModemManager::Modem *gsmNetwork = qobject_cast<ModemManager::Modem*>(sender()); | ||
855 | if (gsmNetwork) { | 866 | if (!gsmNetwork) | ||
867 | return; | ||||
868 | | ||||
856 | for (const NetworkManager::Device::Ptr &dev : NetworkManager::networkInterfaces()) { | 869 | for (const NetworkManager::Device::Ptr &dev : NetworkManager::networkInterfaces()) { | ||
857 | if (dev->type() == NetworkManager::Device::Modem) { | 870 | if (dev->type() != NetworkManager::Device::Modem) | ||
871 | break; | ||||
872 | | ||||
858 | ModemManager::ModemDevice::Ptr modem = ModemManager::findModemDevice(dev->udi()); | 873 | ModemManager::ModemDevice::Ptr modem = ModemManager::findModemDevice(dev->udi()); | ||
859 | if (modem) { | 874 | if (!modem) | ||
860 | if (modem->hasInterface(ModemManager::ModemDevice::ModemInterface)) { | 875 | break; | ||
876 | | ||||
877 | if (!modem->hasInterface(ModemManager::ModemDevice::ModemInterface)) | ||||
878 | break; | ||||
879 | | ||||
861 | ModemManager::Modem::Ptr modemNetwork = modem->interface(ModemManager::ModemDevice::ModemInterface).objectCast<ModemManager::Modem>(); | 880 | ModemManager::Modem::Ptr modemNetwork = modem->interface(ModemManager::ModemDevice::ModemInterface).objectCast<ModemManager::Modem>(); | ||
862 | if (modemNetwork && modemNetwork->device() == gsmNetwork->device()) { | 881 | if (!modemNetwork || modemNetwork->device() != gsmNetwork->device()) | ||
882 | break; | ||||
883 | | ||||
863 | for (NetworkModelItem *item : m_list.returnItems(NetworkItemsList::Device, dev->uni())) { | 884 | for (NetworkModelItem *item : m_list.returnItems(NetworkItemsList::Device, dev->uni())) { | ||
864 | updateItem(item); | 885 | updateItem(item); | ||
865 | } | 886 | } | ||
866 | } | 887 | } | ||
867 | } | 888 | } | ||
868 | } | | |||
869 | } | | |||
870 | } | | |||
871 | } | | |||
872 | } | | |||
873 | 889 | | |||
874 | void NetworkModel::gsmNetworkSignalQualityChanged(const ModemManager::SignalQualityPair &signalQuality) | 890 | void NetworkModel::gsmNetworkSignalQualityChanged(const ModemManager::SignalQualityPair &signalQuality) | ||
875 | { | 891 | { | ||
876 | ModemManager::Modem *gsmNetwork = qobject_cast<ModemManager::Modem*>(sender()); | 892 | ModemManager::Modem *gsmNetwork = qobject_cast<ModemManager::Modem*>(sender()); | ||
877 | if (gsmNetwork) { | 893 | if (!gsmNetwork) | ||
894 | return; | ||||
895 | | ||||
878 | for (const NetworkManager::Device::Ptr &dev : NetworkManager::networkInterfaces()) { | 896 | for (const NetworkManager::Device::Ptr &dev : NetworkManager::networkInterfaces()) { | ||
879 | if (dev->type() == NetworkManager::Device::Modem) { | 897 | if (dev->type() != NetworkManager::Device::Modem) | ||
898 | break; | ||||
899 | | ||||
880 | ModemManager::ModemDevice::Ptr modem = ModemManager::findModemDevice(dev->udi()); | 900 | ModemManager::ModemDevice::Ptr modem = ModemManager::findModemDevice(dev->udi()); | ||
881 | if (modem) { | 901 | if (!modem) | ||
882 | if (modem->hasInterface(ModemManager::ModemDevice::ModemInterface)) { | 902 | break; | ||
903 | | ||||
904 | if (!modem->hasInterface(ModemManager::ModemDevice::ModemInterface)) | ||||
905 | break; | ||||
906 | | ||||
883 | ModemManager::Modem::Ptr modemNetwork = modem->interface(ModemManager::ModemDevice::ModemInterface).objectCast<ModemManager::Modem>(); | 907 | ModemManager::Modem::Ptr modemNetwork = modem->interface(ModemManager::ModemDevice::ModemInterface).objectCast<ModemManager::Modem>(); | ||
884 | if (modemNetwork && modemNetwork->device() == gsmNetwork->device()) { | 908 | if (!modemNetwork || modemNetwork->device() != gsmNetwork->device()) | ||
909 | break; | ||||
910 | | ||||
885 | for (NetworkModelItem *item : m_list.returnItems(NetworkItemsList::Device, dev->uni())) { | 911 | for (NetworkModelItem *item : m_list.returnItems(NetworkItemsList::Device, dev->uni())) { | ||
886 | item->setSignal(signalQuality.signal); | 912 | item->setSignal(signalQuality.signal); | ||
887 | updateItem(item); | 913 | updateItem(item); | ||
888 | } | 914 | } | ||
889 | } | 915 | } | ||
890 | } | 916 | } | ||
891 | } | | |||
892 | } | | |||
893 | } | | |||
894 | } | | |||
895 | } | | |||
896 | 917 | | |||
897 | #endif | 918 | #endif | ||
898 | 919 | | |||
899 | void NetworkModel::ipConfigChanged() | 920 | void NetworkModel::ipConfigChanged() | ||
900 | { | 921 | { | ||
901 | NetworkManager::Device::Ptr device = NetworkManager::findNetworkInterface(qobject_cast<NetworkManager::Device*>(sender())->uni()); | 922 | NetworkManager::Device::Ptr device = NetworkManager::findNetworkInterface(qobject_cast<NetworkManager::Device*>(sender())->uni()); | ||
902 | 923 | | |||
903 | if (device) { | 924 | if (!device) | ||
925 | return; | ||||
926 | | ||||
904 | for (NetworkModelItem *item : m_list.returnItems(NetworkItemsList::Device, device->uni())) { | 927 | for (NetworkModelItem *item : m_list.returnItems(NetworkItemsList::Device, device->uni())) { | ||
905 | updateItem(item); | 928 | updateItem(item); | ||
906 | // qCDebug(PLASMA_NM) << "Item " << item->name() << ": device ipconfig changed"; | 929 | // qCDebug(PLASMA_NM) << "Item " << item->name() << ": device ipconfig changed"; | ||
907 | } | 930 | } | ||
908 | } | 931 | } | ||
909 | } | | |||
910 | 932 | | |||
911 | void NetworkModel::ipInterfaceChanged() | 933 | void NetworkModel::ipInterfaceChanged() | ||
912 | { | 934 | { | ||
913 | NetworkManager::Device *device = qobject_cast<NetworkManager::Device*>(sender()); | 935 | NetworkManager::Device *device = qobject_cast<NetworkManager::Device*>(sender()); | ||
914 | if (device) { | 936 | if (!device) | ||
937 | return; | ||||
938 | | ||||
915 | for (NetworkModelItem *item : m_list.returnItems(NetworkItemsList::Device, device->uni())) { | 939 | for (NetworkModelItem *item : m_list.returnItems(NetworkItemsList::Device, device->uni())) { | ||
916 | if (device->ipInterfaceName().isEmpty()) { | 940 | if (device->ipInterfaceName().isEmpty()) { | ||
917 | item->setDeviceName(device->interfaceName()); | 941 | item->setDeviceName(device->interfaceName()); | ||
918 | } else { | 942 | } else { | ||
919 | item->setDeviceName(device->ipInterfaceName()); | 943 | item->setDeviceName(device->ipInterfaceName()); | ||
920 | } | 944 | } | ||
921 | } | 945 | } | ||
922 | } | 946 | } | ||
923 | } | | |||
924 | 947 | | |||
925 | void NetworkModel::statusChanged(NetworkManager::Status status) | 948 | void NetworkModel::statusChanged(NetworkManager::Status status) | ||
926 | { | 949 | { | ||
927 | Q_UNUSED(status); | 950 | Q_UNUSED(status); | ||
928 | 951 | | |||
929 | qCDebug(PLASMA_NM) << "NetworkManager state changed to " << status; | 952 | qCDebug(PLASMA_NM) << "NetworkManager state changed to " << status; | ||
930 | // This has probably effect only for VPN connections | 953 | // This has probably effect only for VPN connections | ||
931 | for (NetworkModelItem *item : m_list.returnItems(NetworkItemsList::Type, NetworkManager::ConnectionSettings::Vpn)) { | 954 | for (NetworkModelItem *item : m_list.returnItems(NetworkItemsList::Type, NetworkManager::ConnectionSettings::Vpn)) { | ||
Show All 9 Lines | 962 | if (device && device->type() == NetworkManager::Device::Wifi) { | |||
941 | NetworkManager::WirelessNetwork::Ptr network = wirelessDevice->findNetwork(ssid); | 964 | NetworkManager::WirelessNetwork::Ptr network = wirelessDevice->findNetwork(ssid); | ||
942 | addWirelessNetwork(network, wirelessDevice); | 965 | addWirelessNetwork(network, wirelessDevice); | ||
943 | } | 966 | } | ||
944 | } | 967 | } | ||
945 | 968 | | |||
946 | void NetworkModel::wirelessNetworkDisappeared(const QString &ssid) | 969 | void NetworkModel::wirelessNetworkDisappeared(const QString &ssid) | ||
947 | { | 970 | { | ||
948 | NetworkManager::Device::Ptr device = NetworkManager::findNetworkInterface(qobject_cast<NetworkManager::Device*>(sender())->uni()); | 971 | NetworkManager::Device::Ptr device = NetworkManager::findNetworkInterface(qobject_cast<NetworkManager::Device*>(sender())->uni()); | ||
949 | if (device) { | 972 | if (!device) | ||
973 | return; | ||||
974 | | ||||
950 | for (NetworkModelItem *item : m_list.returnItems(NetworkItemsList::Ssid, ssid, device->uni())) { | 975 | for (NetworkModelItem *item : m_list.returnItems(NetworkItemsList::Ssid, ssid, device->uni())) { | ||
951 | // Remove the entire item, because it's only AP or it's a duplicated available connection | 976 | // Remove the entire item, because it's only AP or it's a duplicated available connection | ||
952 | if (item->itemType() == NetworkModelItem::AvailableAccessPoint || item->duplicate()) { | 977 | if (item->itemType() == NetworkModelItem::AvailableAccessPoint || item->duplicate()) { | ||
953 | const int row = m_list.indexOf(item); | 978 | const int row = m_list.indexOf(item); | ||
954 | if (row >= 0) { | 979 | if (row >= 0) { | ||
955 | qCDebug(PLASMA_NM) << "Wireless network " << item->name() << " removed completely"; | 980 | qCDebug(PLASMA_NM) << "Wireless network " << item->name() << " removed completely"; | ||
956 | beginRemoveRows(QModelIndex(), row, row); | 981 | beginRemoveRows(QModelIndex(), row, row); | ||
957 | m_list.removeItem(item); | 982 | m_list.removeItem(item); | ||
958 | item->deleteLater(); | 983 | item->deleteLater(); | ||
959 | endRemoveRows(); | 984 | endRemoveRows(); | ||
960 | } | 985 | } | ||
961 | // Remove only AP and device from the item and leave it as an unavailable connection | 986 | // Remove only AP and device from the item and leave it as an unavailable connection | ||
962 | } else { | 987 | } else { | ||
963 | if (item->mode() == NetworkManager::WirelessSetting::Infrastructure) { | 988 | if (item->mode() == NetworkManager::WirelessSetting::Infrastructure) { | ||
964 | item->setDeviceName(QString()); | 989 | item->setDeviceName(QString()); | ||
965 | item->setDevicePath(QString()); | 990 | item->setDevicePath(QString()); | ||
966 | item->setSpecificPath(QString()); | 991 | item->setSpecificPath(QString()); | ||
967 | } | 992 | } | ||
968 | item->setSignal(0); | 993 | item->setSignal(0); | ||
969 | updateItem(item); | 994 | updateItem(item); | ||
970 | qCDebug(PLASMA_NM) << "Item " << item->name() << ": wireless network removed"; | 995 | qCDebug(PLASMA_NM) << "Item " << item->name() << ": wireless network removed"; | ||
971 | } | 996 | } | ||
972 | } | 997 | } | ||
973 | } | 998 | } | ||
974 | } | | |||
975 | 999 | | |||
976 | void NetworkModel::wirelessNetworkReferenceApChanged(const QString &accessPoint) | 1000 | void NetworkModel::wirelessNetworkReferenceApChanged(const QString &accessPoint) | ||
977 | { | 1001 | { | ||
978 | NetworkManager::WirelessNetwork *networkPtr = qobject_cast<NetworkManager::WirelessNetwork*>(sender()); | 1002 | NetworkManager::WirelessNetwork *networkPtr = qobject_cast<NetworkManager::WirelessNetwork*>(sender()); | ||
979 | 1003 | | |||
980 | if (networkPtr) { | 1004 | if (!networkPtr) | ||
1005 | return; | ||||
1006 | | ||||
981 | for (NetworkModelItem *item : m_list.returnItems(NetworkItemsList::Ssid, networkPtr->ssid(), networkPtr->device())) { | 1007 | for (NetworkModelItem *item : m_list.returnItems(NetworkItemsList::Ssid, networkPtr->ssid(), networkPtr->device())) { | ||
982 | NetworkManager::Connection::Ptr connection = NetworkManager::findConnection(item->connectionPath()); | 1008 | NetworkManager::Connection::Ptr connection = NetworkManager::findConnection(item->connectionPath()); | ||
983 | if (connection) { | 1009 | if (!connection) | ||
1010 | break; | ||||
984 | NetworkManager::WirelessSetting::Ptr wirelessSetting = connection->settings()->setting(NetworkManager::Setting::Wireless).staticCast<NetworkManager::WirelessSetting>(); | 1011 | NetworkManager::WirelessSetting::Ptr wirelessSetting = connection->settings()->setting(NetworkManager::Setting::Wireless).staticCast<NetworkManager::WirelessSetting>(); | ||
985 | if (wirelessSetting) { | 1012 | if (!wirelessSetting) | ||
1013 | break; | ||||
1014 | | ||||
986 | if (wirelessSetting->bssid().isEmpty()) { | 1015 | if (wirelessSetting->bssid().isEmpty()) { | ||
987 | item->setSpecificPath(accessPoint); | 1016 | item->setSpecificPath(accessPoint); | ||
988 | updateItem(item); | 1017 | updateItem(item); | ||
989 | } | 1018 | } | ||
990 | } | 1019 | } | ||
991 | } | 1020 | } | ||
992 | } | | |||
993 | } | | |||
994 | } | | |||
995 | 1021 | | |||
996 | void NetworkModel::wirelessNetworkSignalChanged(int signal) | 1022 | void NetworkModel::wirelessNetworkSignalChanged(int signal) | ||
997 | { | 1023 | { | ||
998 | NetworkManager::WirelessNetwork *networkPtr = qobject_cast<NetworkManager::WirelessNetwork*>(sender()); | 1024 | NetworkManager::WirelessNetwork *networkPtr = qobject_cast<NetworkManager::WirelessNetwork*>(sender()); | ||
999 | if (networkPtr) { | 1025 | if (!networkPtr) | ||
1026 | return; | ||||
1000 | for (NetworkModelItem *item : m_list.returnItems(NetworkItemsList::Ssid, networkPtr->ssid(), networkPtr->device())) { | 1027 | for (NetworkModelItem *item : m_list.returnItems(NetworkItemsList::Ssid, networkPtr->ssid(), networkPtr->device())) { | ||
1001 | if (item->specificPath() == networkPtr->referenceAccessPoint()->uni()) { | 1028 | if (item->specificPath() == networkPtr->referenceAccessPoint()->uni()) { | ||
1002 | item->setSignal(signal); | 1029 | item->setSignal(signal); | ||
1003 | updateItem(item); | 1030 | updateItem(item); | ||
1004 | // qCDebug(PLASMA_NM) << "Wireless network " << item->name() << ": signal changed to " << item->signal(); | 1031 | // qCDebug(PLASMA_NM) << "Wireless network " << item->name() << ": signal changed to " << item->signal(); | ||
1005 | } | 1032 | } | ||
1006 | } | 1033 | } | ||
1007 | } | 1034 | } | ||
1008 | } | | |||
1009 | 1035 | | |||
1010 | NetworkManager::WirelessSecurityType NetworkModel::alternativeWirelessSecurity(const NetworkManager::WirelessSecurityType type) | 1036 | NetworkManager::WirelessSecurityType NetworkModel::alternativeWirelessSecurity(const NetworkManager::WirelessSecurityType type) | ||
1011 | { | 1037 | { | ||
1012 | if (type == NetworkManager::WpaPsk) { | 1038 | if (type == NetworkManager::WpaPsk) { | ||
1013 | return NetworkManager::Wpa2Psk; | 1039 | return NetworkManager::Wpa2Psk; | ||
1014 | } else if (type == NetworkManager::WpaEap) { | 1040 | } else if (type == NetworkManager::WpaEap) { | ||
1015 | return NetworkManager::Wpa2Eap; | 1041 | return NetworkManager::Wpa2Eap; | ||
1016 | } else if (type == NetworkManager::Wpa2Psk) { | 1042 | } else if (type == NetworkManager::Wpa2Psk) { | ||
Show All 39 Lines |
Shouldn't this be a continue?