Make hidden wireless networks usable.
author Will Stephenson
()
committer Will Stephenson
()
commit 5f18f9e67243dcbfa81679aa61d55202e9cd0113
tree 758880a8fe9439aed1151d0aef9d4b3939a9d7d1
parent 9edccb70ddaafc4a069b3dd9be01ffe3afa4f7d4
Make hidden wireless networks usable.

The problem was that the logic controlling which InterfaceConnections to
show in the main menu excluded all connections where the network was not
found, and NetworkManager does not actively probe for networks given the
ssids for the connections it knows about. Therefore we need a way to
activate wireless connections with arbitrary network visibility. This
cannot happen in the main menu because it would have to contain all
wireless connections for each wireless device. Instead all wireless
connections, and all unconfigured wireless networks, are put in a
listwidget in a separate dialog. After connecting, the network becomes
available and the WirelessInterfaceConnectionItem appears as normal.

The mechanism chosen to inform the UIs about all
WirelessInterfaceConnections was to add a new WIC subtype,
HiddenWirelessInterfaceConnection, that is added to the ActivatableList.
This breaks the previous design that there is only one IC per connection
in the list; the internal hashes become QMultiHashes. However in
implementing this change I found several logic errors in the
implementation of the previous design.

There may be more code that still works on this assumption, so anything
breaking regarding IC updating should be checked with this change in
mind.
20 files changed:
backends/NetworkManager/nmdbusactiveconnectionmonitor.cpp
backends/NetworkManager/nmdbussettingsservice.cpp
libs/internals/CMakeLists.txt
libs/internals/activatable.h
libs/internals/hiddenwirelessinterfaceconnection.cpp [ new file with mode 0644 ]
libs/internals/hiddenwirelessinterfaceconnection.h [ new file with mode 0644 ]
libs/internals/wirelessinterfaceconnectionhelpers.cpp
libs/internals/wirelessinterfaceconnectionhelpers.h
libs/internals/wirelessinterfaceconnectionhelpers_p.h
libs/service/activatabledebug.cpp
libs/service/networkinterfaceactivatableprovider.cpp
libs/service/networkinterfaceactivatableprovider_p.h
libs/service/wirelessnetworkinterfaceactivatableprovider.cpp
monolithic/CMakeLists.txt
monolithic/knetworkmanagertrayicon.cpp
monolithic/knetworkmanagertrayicon.h
monolithic/otherwirelessnetworkdialog.cpp [ new file with mode 0644 ]
monolithic/otherwirelessnetworkdialog.h [ new file with mode 0644 ]
monolithic/otherwirelessnetworkwidget.ui [ new file with mode 0644 ]
monolithic/wirelessstatus.cpp