Purpose of this document
------------------------
This document contains a list of minor features and technical stuff that should
be implemented when time permits it. The TODO list is updated frequently as new
ideas crop up during programming.

For a broader view of how the project will develop over time, you should see
the Roadmap document.


Priority 1 (important)
----------------------
- Fix @todo's in the code
- Test a server connection: While the test is in progress, the server being
  checked cannot be edited
- Split DGSMonXController and put the application delegate code into a new
  class DGSMonXApplicationDelegate


Priority 2 (nice to have)
-------------------------
- Add an indicator to the global "it's your turn" state if an error occurred
  during a game state check
- Show remaining time until next game state check
- Let the application model handle all the settings that can be changed in
  the Preferences dialog; this makes sense esp. for the monitoring time
  interval where a single accessor could be made that does the calculation
  currently located in DGSMonXThread's getCheckInterval()
- Make copy & paste shortcuts work in the Preferences window. The problem here
  is that dgsmonX is an application without a menu (in a normal application the
  items in the "Edit" menu handle copy & paste keyboard shortcuts). The
  solution I have found via googling [1] requires adding an NSApplication
  subclass that handles various keyboard events. The event handling code is
  is probably good, but instead of subclassing NSApplication a simpler solution
  might be to insert an event handler object into the first responder chain of
  the Preferences window.
  [1] http://cocoa.flyingmac.com/2010/07/cut-copy-and-paste-in-lsuielement-applications/


Priority 3 (not important)
-------------------------
- Think about redesigning dgsmonX as follows
  - Put all UI elements, esp. the preference dialog, in a preference pane
  - Allow the preference pane to have an associated status item (would probably
    be largely the same as it is now)
  - Is the status item optional? if yes, think about how to notify the user
    when it is her turn; maybe Growl?
- Currently we stop title animation in DGSMonXController's validateMenuItem:(),
  which really is a hack. It would be preferrable if we could use the NSMenu
  delegate method menuWillOpen:(), unfortunately this method is available only
  since Mac OS X 10.5. A side effect of this hack's implementation is that the
  application menu will pop up at the position that fits the status item's state
  at the time that the user clicked the status item - ***NOT*** at the time
  after the title animation has been stopped. If stopping the animation changes
  the status item's width, the menu will therefore pop up at the wrong
  position. This behaviour can be observed by using texts of differing lengths
  to represent the application's status item.

