KEY (by Lubos)
==============
* = not done, will be either done by WS, or should be at least discussed first with WS
+ = not done, I don't plan on doing it that soon
    - in other words, these should be the best ones for you if you want to help
! = like +, but they should be relatively simple
    - in other words, these should be the best if you want to get started with the code
/ = work in progress
? = should it be done?
% = should be probably done later, during cleanups and preparations for being stable
. = done, remove when DESIGN is updated


TODO CB:
- Create a network scanning view - In Progress
    - Create Scrolling View
    - Scan Actual APs
- Create a profile class which describes network settings
- Create a profile creation view/wizard
- Create a profile editing view

TODO WS:
- SERVICE: Complete settings service
  * per-setting group helper class for complex settings, where needed for ipv4 config write
    * take out hacks in Connection to hash WPA keys there
    * take out hacks in KConfigToService to add groups needed by NM
  . Signal updated connections on the bus when ours are edited
  . Implement RemoveConnection
  * wireless security
    / WEP
    / WPA-PSK (needs extending with specific crypto alg options, and anything WPA2 requires)
    * LEAP
    * WPA-EAP
  + also for 802.1x
  . Create Connection.Secrets objects and do lazy secret loading. Change configxml classes to not read wallet on start
    . Show connection UI to get secrets on demand if the wallet does not contain them or if the
      daemon requested new secrets
    . Add helper binary (like a mini-kcmshell) that InterfaceGroup can start if the kcm is not already running.
      This should accept the same args as InterfaceGroup currently sends to kcmshell via dbus on the comand line,
      show the appropriate connectionpreferences subclass and write the result out like connectioneditor does.
  . write LastUsed to knetworkmanagerrc on successful connection activation
    * Don't also write a Unix timestamp to the individual connection's file - read this from the main config file
    * Watch the active connections in the connection editor and update its UI contents

- CONFIG: Implement control module
  + Write a nice class to turn a QDateTime into "3 minutes ago", "5 hours ago" instead of using KLocale::formatDate(), or extend KLocale with formatDateRelative(QDateTime in, QDateTime relativeTo)
  . Add UI for selecting cellular connection type,
    * detect and disable for existing connections
  ! Replace Ok button with Close in main connectioneditor, or implement storage of changed/added connection settings in temp files until the Ok button is clicked, and enable deleting temp files if Cancel is clicked
  ! Edit on double click existing entry
  . Show header in connection list, people don't understand "Auto eth0 never"
  / Complete most settings widgets' complex (non-KConfigSkeleton-managed) UI plumbing and reimplemented save routines
  + Option to display system-provided connections and import them so they can be edited (probably depends on PolicyKit)
  . Show the ScanWidget from widgets developed by CB
  * Clean out wireless security settings when editing a connection and changing the wireless security type.
  * Figure out why autoconnect is not working - it should be

- APPLET: Make sure system tray+engine does what we need
  * Popup menu
    / Connection List
       / Two possible connection list display styles
         / List connections appropriate to currently active hardware
           / Update based on hardware and AP changes
           + Extend to profiles
         + a list of all currently seen APs (like trad applet)
       / Group connections by device (or by device type if connection could be activated on >1 device)
         / Item contents
           . Name
           . Type
           / Extended information (System/user connection; IP config; pppStats bytes up/down stats (FEATURE) etc)
           . Activate button
         / Wireless connection item
           . Signal strength
         * Cellular connection item
           * Signal strength
           * UMTS/GPRS
           * Network name
         / VPN connections - group without interface.  Can be activated on single active connection
           or on the connection owning the default route.  Drag and drop to activate on another
           connection
         / Remove connections that are active from the connection list, they are shown on the
           InterfaceItem
         . Wireless interface groups should maintain a merged WirelessEnvironment for all interfaces' environments,
           for maintaining its appropriate connection list.
         / Wireless network items for unconfigured networks that launch the connection editor
           * Show correct wireless security for the AP
        / Disconnect button
    . Connection editor
    / Flight mode toggle
    * Disconnected toggle
    * Hardware wifi switch indicator
    + Adhoc network button
  . Tooltips
  / Show network status in tray icon
    % Option to have one icon per device, (like in Windows, hschaa's request)
    / Show network interface's status that is most important to the
      user when showing single icon
    + Animation during connection state
  * Remember wireless/networking state between sessions
   
- Update Solid
  * Pass the reason arg in org.freedesktop.NetworkManager.Device.StateChanged through, so the applet can use it for error reporting
  % Implement ModemManager (after NM 0.7.0 is released) and new VPNManager, if appropriate, in Solid, else in applet
