9c2fd4530e
svn path=/trunk/kdebase/kwin/; revision=35049
118 lines
3.4 KiB
C++
118 lines
3.4 KiB
C++
#ifndef OPTIONS_H
|
|
#define OPTIONS_H
|
|
|
|
#include <qobject.h>
|
|
#include <qfont.h>
|
|
#include <qpalette.h>
|
|
|
|
// increment this when you add a color type (mosfet)
|
|
#define KWINCOLORS 8
|
|
|
|
class Options : public QObject {
|
|
Q_OBJECT
|
|
public:
|
|
|
|
Options();
|
|
~Options();
|
|
|
|
|
|
/*!
|
|
Different focus policies:
|
|
<ul>
|
|
|
|
<li>ClickToFocus - Clicking into a window activates it. This is
|
|
also the default.
|
|
|
|
<li>FocusFollowsMouse - Moving the mouse pointer actively onto a
|
|
window activates it.
|
|
|
|
<li>FocusUnderMouse - The window that happens to be under the
|
|
mouse pointer becomes active.
|
|
|
|
<li>FocusStricklyUnderMouse - Only the window under the mouse
|
|
pointer is active. If the mouse points nowhere, nothing has the
|
|
focus. In practice, this is the same as FocusUnderMouse, since
|
|
kdesktop can take the focus.
|
|
|
|
Note that FocusUnderMouse and FocusStricklyUnderMouse are not
|
|
particulary useful. They are only provided for old-fashined
|
|
die-hard UNIX people ;-)
|
|
|
|
</ul>
|
|
*/
|
|
enum FocusPolicy { ClickToFocus, FocusFollowsMouse, FocusUnderMouse, FocusStricklyUnderMouse };
|
|
FocusPolicy focusPolicy;
|
|
|
|
enum MoveResizeMode { Transparent, Opaque };
|
|
|
|
/**
|
|
* Basic color types that should be recognized by all decoration styles.
|
|
* Not all styles have to implement all the colors, but for the ones that
|
|
* are implemented you should retrieve them here.
|
|
*/
|
|
// increment KWINCOLORS if you add something (mosfet)
|
|
enum ColorType{TitleBar=0, TitleBlend, Font, ButtonFg, ButtonBg,
|
|
ButtonBlend, Frame, Handle};
|
|
|
|
MoveResizeMode resizeMode;
|
|
MoveResizeMode moveMode;
|
|
|
|
/**
|
|
* Placement policies. How workspace decides the way windows get positioned
|
|
* on the screen. The better the policy, the heavier the resource use.
|
|
* Normally you don't have to worry. What the WM adds to the startup time
|
|
* is nil compared to the creation of the window itself in the memory
|
|
*/
|
|
enum PlacementPolicy { Random, Smart, Cascade };
|
|
PlacementPolicy placement;
|
|
|
|
bool focusPolicyIsReasonable() {
|
|
return focusPolicy == ClickToFocus || focusPolicy == FocusFollowsMouse;
|
|
}
|
|
|
|
/**
|
|
* Return the color for the given decoration.
|
|
*/
|
|
const QColor& color(ColorType type, bool active=true);
|
|
/**
|
|
* Return a colorgroup using the given decoration color as the background
|
|
*/
|
|
const QColorGroup& colorGroup(ColorType type, bool active=true);
|
|
/**
|
|
* Return the active or inactive decoration font.
|
|
*/
|
|
const QFont& font(bool active=true);
|
|
/**
|
|
* Return whether we animate the shading of windows to titlebar or not
|
|
*/
|
|
const bool animateShade() { return animate_shade; };
|
|
/**
|
|
* Return the number of animation steps (would this be general?)
|
|
*/
|
|
const int animSteps() { return anim_steps; };
|
|
/**
|
|
* Return the size of the zone that triggers snapping on desktop borders
|
|
*/
|
|
const int borderSnapZone() { return border_snap_zone; };
|
|
/**
|
|
* Return the number of animation steps (would this be general?)
|
|
*/
|
|
const int windowSnapZone() { return window_snap_zone; };
|
|
|
|
public slots:
|
|
void reload();
|
|
|
|
protected:
|
|
QFont activeFont, inactiveFont;
|
|
QColor colors[KWINCOLORS*2];
|
|
QColorGroup *cg[KWINCOLORS*2];
|
|
|
|
private:
|
|
bool animate_shade;
|
|
int anim_steps;
|
|
int border_snap_zone, window_snap_zone;
|
|
};
|
|
|
|
extern Options* options;
|
|
|
|
#endif
|