kwin/options.cpp
Daniel M. Duley b58843030c Final updates for the new button color implementation. The options class
now only has one button entry, "ButtonBg", instead of 3. It's up to the client
what to do with it. All the clients are updated except mwm. As the
author noted in his README, mwm isn't Motif window manager at all but KStep ;-)
I disabled it for now until there is new drawing code in there, it would
confuse users anyways since were about to release another Krash and it is
identical to KStep.

Also, I removed the Groove and GrooveText color entries. We now use the
normal TitleBar and Font entries. Hence system will probably look funny until
you adjust the colors since it draws text on the frame and not the titlebar
bg. All the rest look much better by default.

To configure button colors set the active/inactive button background color
in KControl. I'll remove the other entries ASAP. You'll also note that the
active/inactive colors are now actually what you would expect.

svn path=/trunk/kdebase/kwin/; revision=47753
2000-04-28 15:53:00 +00:00

212 lines
7.6 KiB
C++

/*****************************************************************
kwin - the KDE window manager
Copyright (C) 1999, 2000 Matthias Ettrich <ettrich@kde.org>
******************************************************************/
#include "options.h"
#include <qpalette.h>
#include <qpixmap.h>
#include <kapp.h>
#include <kconfig.h>
#include <kglobal.h>
Options::Options()
: QObject( 0, 0)
{
int i;
for(i=0; i < KWINCOLORS*2; ++i)
cg[i] = NULL;
reload();
connect( kapp, SIGNAL( appearanceChanged() ), this, SLOT(reload() ) );
}
Options::~Options(){
int i;
for(i=0; i < KWINCOLORS*2; ++i){
if(cg[i]){
delete cg[i];
cg[i] = NULL;
}
}
}
const QColor& Options::color(ColorType type, bool active)
{
return(colors[type + (active ? 0 : KWINCOLORS)]);
}
const QFont& Options::font(bool active)
{
return(active ? activeFont : inactiveFont);
}
const QColorGroup& Options::colorGroup(ColorType type, bool active)
{
int idx = type + (active ? 0 : KWINCOLORS);
if(cg[idx])
return(*cg[idx]);
cg[idx] = new QColorGroup(Qt::black, colors[idx], colors[idx].light(150),
colors[idx].dark(), colors[idx].dark(120),
Qt::black, QApplication::palette().normal().
base());
return(*cg[idx]);
}
void Options::reload()
{
QPalette pal = QApplication::palette();
KConfig *config = KGlobal::config();
config->setGroup("WM");
// normal colors
colors[Frame] = pal.normal().background();
colors[Frame] = config->readColorEntry("frame", &colors[Frame]);
colors[Handle] = colors[Frame];
colors[Handle] = config->readColorEntry("handle", &colors[Handle]);
// full button configuration (background, blend, and foreground
if(QPixmap::defaultDepth() > 8)
colors[ButtonBg] = colors[Frame].light(130);
else
colors[ButtonBg] = colors[Frame];
colors[ButtonBg] = config->readColorEntry("activeTitleBtnBg",
&colors[Frame]);
colors[TitleBar] = pal.normal().highlight();
colors[TitleBar] = config->readColorEntry("activeBackground",
&colors[TitleBar]);
if(QPixmap::defaultDepth() > 8)
colors[TitleBlend] = colors[ TitleBar ].dark(110);
else
colors[TitleBlend] = colors[ TitleBar ];
colors[TitleBlend] = config->readColorEntry("activeBlend",
&colors[TitleBlend]);
colors[Font] = pal.normal().highlightedText();
colors[Font] = config->readColorEntry("activeForeground", &colors[Font]);
// inactive
colors[Frame+KWINCOLORS] = config->readColorEntry("inactiveFrame",
&colors[Frame]);
colors[TitleBar+KWINCOLORS] = colors[Frame];
colors[TitleBar+KWINCOLORS] = config->
readColorEntry("inactiveBackground", &colors[TitleBar+KWINCOLORS]);
if(QPixmap::defaultDepth() > 8)
colors[TitleBlend+KWINCOLORS] = colors[ TitleBar+KWINCOLORS ].dark(110);
else
colors[TitleBlend+KWINCOLORS] = colors[ TitleBar+KWINCOLORS ];
colors[TitleBlend+KWINCOLORS] =
config->readColorEntry("inactiveBlend", &colors[TitleBlend+KWINCOLORS]);
// full button configuration
if(QPixmap::defaultDepth() > 8)
colors[ButtonBg+KWINCOLORS] = colors[Frame+KWINCOLORS].light(130);
else
colors[ButtonBg+KWINCOLORS] = colors[Frame+KWINCOLORS];
colors[ButtonBg+KWINCOLORS] =
config->readColorEntry("inactiveTitleBtnBg",
&colors[ButtonBg]);
colors[Handle+KWINCOLORS] = colors[Frame];
config->readColorEntry("inactiveHandle", &colors[Handle]);
colors[Font+KWINCOLORS] = colors[Frame].dark();
colors[Font+KWINCOLORS] = config->readColorEntry("inactiveForeground",
&colors[Font+KWINCOLORS]);
activeFont = QFont("Helvetica", 12, QFont::Bold);
activeFont = config->readFontEntry("activeFont", &activeFont);
inactiveFont = config->readFontEntry("inactiveFont", &activeFont);
int i;
for(i=0; i < KWINCOLORS*2; ++i){
if(cg[i]){
delete cg[i];
cg[i] = NULL;
}
}
config->setGroup( "Windows" );
moveMode = config->readEntry("MoveMode", "Opaque" ) == "Opaque"?Opaque:Transparent;
resizeMode = config->readEntry("ResizeMode", "Opaque" ) == "Opaque"?Opaque:Transparent;
QString val;
val = config->readEntry ("focusPolicy", "ClickToFocus");
if (val == "ClickToFocus")
focusPolicy = ClickToFocus;
else
focusPolicy = FocusFollowsMouse;
val = config->readEntry("Placement","Smart");
if (val == "Smart") placement = Smart;
else if (val == "Random") placement = Random;
else if (val == "Cascade") placement = Cascade;
animate_shade = config->readBoolEntry("AnimateShade", TRUE );
anim_steps = config->readNumEntry("AnimSteps", 10);
border_snap_zone = config->readNumEntry("BorderSnapZone", 10);
window_snap_zone = config->readNumEntry("WindowSnapZone", 10);
OpTitlebarDblClick = windowOperation( config->readEntry("TitlebarDoubleClickCommand", "winShade") );
// Mouse bindings
config->setGroup( "MouseBindings");
CmdActiveTitlebar1 = mouseCommand(config->readEntry("CommandActiveTitlebar1","Raise"));
CmdActiveTitlebar2 = mouseCommand(config->readEntry("CommandActiveTitlebar2","Lower"));
CmdActiveTitlebar3 = mouseCommand(config->readEntry("CommandActiveTitlebar3","Operations menu"));
CmdInactiveTitlebar1 = mouseCommand(config->readEntry("CommandInactiveTitlebar1","Activate and raise"));
CmdInactiveTitlebar2 = mouseCommand(config->readEntry("CommandInactiveTitlebar2","Activate and lower"));
CmdInactiveTitlebar3 = mouseCommand(config->readEntry("CommandInactiveTitlebar3","Activate"));
CmdWindow1 = mouseCommand(config->readEntry("CommandWindow1","Activate, raise and pass click"));
CmdWindow2 = mouseCommand(config->readEntry("CommandWindow2","Activate and pass click"));
CmdWindow3 = mouseCommand(config->readEntry("CommandWindow3","Activate and pass click"));
CmdAll1 = mouseCommand(config->readEntry("CommandAll1","Move"));
CmdAll2 = mouseCommand(config->readEntry("CommandAll2","Toggle raise and lower"));
CmdAll3 = mouseCommand(config->readEntry("CommandAll3","Resize"));
emit resetClients();
}
Options::WindowOperation Options::windowOperation(const QString &name){
if (name == "Move")
return MoveOp;
else if (name == "Resize")
return ResizeOp;
else if (name == "Maximize")
return MaximizeOp;
else if (name == "Iconify")
return IconifyOp;
else if (name == "Close")
return CloseOp;
else if (name == "Sticky")
return StickyOp;
else if (name == "Shade")
return ShadeOp;
else if (name == "Operations")
return OperationsOp;
return NoOp;
}
Options::MouseCommand Options::mouseCommand(const QString &name)
{
if (name == "Raise") return MouseRaise;
if (name == "Lower") return MouseLower;
if (name == "Operations menu") return MouseOperationsMenu;
if (name == "Toggle raise and lower") return MouseToggleRaiseAndLower;
if (name == "Activate and raise") return MouseActivateAndRaise;
if (name == "Activate and lower") return MouseActivateAndLower;
if (name == "Activate") return MouseActivate;
if (name == "Activate, raise and pass click") return MouseActivateRaiseAndPassClick;
if (name == "Activate and pass click") return MouseActivateAndPassClick;
if (name == "Move") return MouseMove;
if (name == "Resize") return MouseResize;
if (name == "Nothing") return MouseNothing;
return MouseNothing;
}