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
20 files changed: