// In the doc dir run make docs and then you have a complete api in html format for you :)

Hi there.  This file discribes how the Kinkatta source works.  It is for anyone who is looking to either learn a little bit about the workings of Kinkatta.  Maybe to fix an anoying bug or to add that wanted feature or maybe because you like Kinkatta so much that you are interested in joining the team.  Almost everyfile is listed here.  I did not list the makefile etc for it is asumed that you understand what they are already.  Lets get started.

Kinkatta is organized in clear cut folders.  They are as follows:

kinkatta
| Root dir, TODO, Changelog, AUTHORS, etc are located here
+kinkatta
 | Main files, Chat widow, main.cpp, main window etc are located here
 +sounds
  | All of kinkatta's sound files
 +icons
  | All of kinkatta's icon (png's) files
 +network
  | All of the network related code is here
 +options
  | When you open the options dialog all the code in this folder creates it.
 +chat
  | The base chat widget
 +chatroom
  | The chatroom componants.

----
kinkatta - The root dir
----
-TODO - The current todo list.  If in feature freeze only things from this file can be added to Kinkatta.
-ChangeLog - Every change no matter how small should be added to this file under the correct date.
-AUTHORS - Any authors of kinkatta will get credit here.
-kinkatta.spec - file used to create kinkatta rpms

----
kinkatta - src sub dir
----
The first two are the basic application.
-main.cpp
-kinkattaapplication[h,cpp]

The main widget is then the kinkatta widget.  Within that widget on the screen the login screen, signon and main window reside. (the prefs widget is also stored here)
-kinkatta[h,cpp]
-login[h,cpp] The login window, not much special here


The main window buddylist is made up of three files, first "buddylistwindow" ecompessaes everything.  "Kinkattaviewlist" is the tree with an "editbox" inside it.
-buddylistwindow[h,cpp]
-kinkattaviewlist[h,cpp]

The following are used in the  the buddylist window
-info[h,cpp] - Shows info on a user
-newpounce[h,cpp (and .ui file)] - pounce base class
-newpounceimp[h,cpp] - pounce class with kinkatta logic
-newawaymessage[h,cpp] - I want to add an away message.
-kitchangepassword[h,cpp] - change password class
-awaymessage[h,cpp] - When you go away this shows up on the bottom.
-chatwindow[h,cpp] - The "im" implimentation of the chat (see chat dir).

The Buddylist link list file (yah qt now has one, but hey who cares)
-tbuddylist[h,cpp]

These two files are in charge of saving/restoring/setting to default settings.
-setup[h,cpp] - I set up the stuff!
-preferences[h,cpp] - I save/retrieve the stuff!

When you do anything with sound or urls it goes to these class to be delt with.
-browser[h,cpp]
-sound[h,cpp]

----
chat
----
The base chat window is made up of these files.  Both chatwindow and chatroom use this to create its objects.
-chat[h,cpp] - The Magic
-kinkattatextbrowser[h,cpp] - The chat log output window with right click
-resource.h - Defines for the chat window
-smiliespopup[h,cpp] - The little square box that pops up when you use smilies

And uses these two
-linkdialog[h,cpp] - Add a link dialog

----
chatroom
----
In the chatroom folder is the chatroom implimentation of the chat class.  There are several added things to help in doing this.  imp files are used when a ui is also used.
-chatroom[h,cpp] - The chatroom class
-chatroominvite[h,cpp,ui] - The widget used to invite people to your chatroom.
-control[h,cpp,ui] - The upper right hand side of the chatroom with the buddy list and buttons to ignore etc.

----
sounds
----
Not much here.  In this directory are the sounds that get installed and can be used in kinkatta.

----
icons
----
Same as sounds, but with images

----
network
----
All of this code was written by Neil so I am not fully sure what it all does, but here goes.

-kitsocket[h,cpp] - sock class
-taim[h,cpp] - The class that actually sends/recieves out the aim commands to the server.
-tsfbuffer[h,cpp] - hmmm.. not sure
-aim[h,cpp] - The aim complicated function such as tocprossess and creating and reading buddylists
-tdebug.h - To print debug stuff...

----
options
----
I used QT designer in all of the options dialog box.  It is pretty much broken up into 8 widgets (The pages in the options box) and the options dialog itself.
There may seem like a lot of files, but they all break down like this:

awayoptions[h,cpp] - base class
awayoptionsimp[h,cpp] - With logic
awayoptions.ui - ui file for widget

The actual code is in the imp files.  For the most part it come down to two slots that are in each class getData() and updateData()  Both called from the options class when either opened, updated or ok/apply is clicked.

The different classes are as follows:
-networkoptions
-chatoptions
-mainwindowoptions
-soundoptions
-permitdenyoptions
-awayoptions
-profileoptions
-textoptions

And of course
-options[h,cpp] - The primary dialog that has all of the above inside of it.
