Added 'sessionid' to the FSession and FChannelPanel classes. This is a stepping stone towards getting rid of 'charName' in the monolithic flist_messenger class and supporting multiple characters being simultaneously logged in.
Added the command '/debugsend'.
bugfix: If the client was made to leave the channel by the server (kick or ban) it wouldn't switch tabs correctly when the channel panel was closed.
Sending LCH and LRP commands is now handled by FSession.
Removed dead code.
Added the class FMessage. This class is not yet used, but it will hold the message text, type, timestamp, where it's going to on the UI and where it has come from.
Changed FAccount::getSession() to get a session by its ID. Added FAccount::addSession() to create (or retrieve) a session for a character name, and FAccount::getSessionByCharacter() to retrieve a session by a character's name.
Added FServer::getSession() to find a session by its ID from any account in the server class.
Added the class FLogTextBrowser, an extension of Qt's QTextBrowser class. This enabled the creation of custom context menus for hyperlinks and will allow for further customisation in the future.
bugfix: Web URLs are no longer prefixed with '#LNK-' or '#USR-'. (Technically that was the intended behaviour but making it invisible under the hood was not a simple matter and this approach has been dropped.)
bugfix: The [url] BBCode is now a little more strict in what constitutes a valid URL link. 'file:' and relative links are no longer allowed. This should be revisted and made more strict.
Added iUserInterface::getSession() and iUserInterface::openCharacterProfile().
Renamed flist_messenger::textEdit to flist_messenger::chatview, it was a misnomer.
Sending SFC commands is now handled by the FSession class.
Set the keep alive option on the TCP socket in an effort to avoid connection losses that are only detected after the client sends something.