oxygen-style-animated is a branch of trunk/KDE/kdebase/runtime/kstyles/oxygen that introduces smooth animations for the Oxygen widget style.

The code is organized as follow:
--------------------------------

1/ oxygenstyle.h and .cpp derive from QCommonStyle and take care of all the painting.
All 'primitives' are implemented as separate functions with identical prototypes and mapped to the corresponding QStyle primitive element at initialization style.

Some of the painting routines have been moved in oxygenstylehelper, for re-usability.
Additionaly some code that is common to the widget style and the window decoration resides at kdebase/workspace/libs/oxygen.

2/ since kde4.5 oxygen allows to drag and move windows by clicking in their empty areas. This is handled in the standalone 'oxygenwindowmanager' class.

3/ Since kde4.4, oxygen styles animates most widgets state changes. The animation code is contained in the ./animations and ./transitions subdirectories.

Each animation is structured in the following way:
For each element (e.g. QScrollBar) to be animated there are two classes:

- oxygenscrollbardata: contains the needed information, objects to animate a give QScrollBar instance. This usually consist of one or two QTimeLine, an event filter, and some needed flags + geometrical information.

- oxygenscrollbarengine: contains the list of all Data objects registered for each new instance of the widget that is animated.
This is used by the style to get the relevant data matching a given widget when painting the later.

Additionaly, two "factory" classes, oxygenanimations and oxygentransitions, keep track of all the engines and engine setup. They serve as an interface between the animations and the KStyle painting primitives.

For the animations located in the ./animations subdirectory, how the informations contained by the Data is used to animate a given widget is def in the oxygen KSTyle class.

For the animations located in the ./transitions subdirectory, handling the animation is performed using a temporary "cover" widget, namely Oxygen::TransitionWidget, and does not necessit any modification to the oxygen.cpp style itself.

Oxygen-style comes with two standalone applications:
----------------------------------------------------

- oxygen-settings, which offers an exhaustive list of configuration options for both the style and the decoration, in addition to the limited set of options available in systemsettings.

- oxygen-demo, which offers a showcase of how widgets are rendered with oxygen, and is used notably for debugging, and regression checks.

These applications are not available via kde 'start menu'. They must be typed either in a terminal (e.g. konsole) or via krunner. 

