The GUI Layer
Overview
LPUIController is our central controller which also happens to be the NSApplication delegate. It holds references to all the main GUI controllers of the application.
Window controllers don't follow any naming convention, but it's fairly straightforward to spot the class that controls some window in the GUI. For example, LPTermsOfUseController controls — you got it — the "Terms Of Use" window, LPRosterController controls the main roster window, LPChatController controls a single chat window, and so on.
Most of the classes in the GUI (be it controllers or views) are directly tied to objects in our Objective-C Model Layer through one or several of the following methods: cocoa bindings, key-value observing and/or coding, cocoa notifications or some delegation pattern as traditionally employed in cocoa.
Since high-level overviews are better conveyed through diagrams, and since the details that are omitted in those diagrams are easily clarified by consulting the source code for the involved classes, the remainder of this document will be mostly filled with diagrams and only short discussions of the subjects where deemed absolutely necessary.
Accounts
Documentation forthcoming.
Roster
Documentation forthcoming.
Chats
Documentation forthcoming.
File Transfers
Documentation forthcoming.
Message Center
Documentation forthcoming.