diff options
author | Michele Calgaro <[email protected]> | 2021-02-12 12:11:09 +0900 |
---|---|---|
committer | Michele Calgaro <[email protected]> | 2021-02-12 12:11:09 +0900 |
commit | a600e78779e6499a53663be60524ca21144e6ca9 (patch) | |
tree | 66029e3fe8185dedc6904baf27ed487de4ccbe82 /deco/baghiraclient.cc | |
parent | b591c43190556a9c93e9af9dca9c03d09527c040 (diff) | |
download | tde-style-baghira-a600e78779e6499a53663be60524ca21144e6ca9.tar.gz tde-style-baghira-a600e78779e6499a53663be60524ca21144e6ca9.zip |
Renaming of files in preparation for code style tools.
Signed-off-by: Michele Calgaro <[email protected]>
Diffstat (limited to 'deco/baghiraclient.cc')
-rw-r--r-- | deco/baghiraclient.cc | 2643 |
1 files changed, 0 insertions, 2643 deletions
diff --git a/deco/baghiraclient.cc b/deco/baghiraclient.cc deleted file mode 100644 index 471e440..0000000 --- a/deco/baghiraclient.cc +++ /dev/null @@ -1,2643 +0,0 @@ -////////////////////////////////////////////////////////////////////////////// -// baghiraclient.h -// ------------------- -// Baghira window decoration for KDE -// ------------------- -// Copyright (c) 2004, 2005 Thomas Lübking -// Please see the header file for copyright and license information. -////////////////////////////////////////////////////////////////////////////// - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -// #include <tdeconfig.h> -#include <tdeglobal.h> -#include <tdeglobalsettings.h> -#include <kimageeffect.h> -#include <tdelocale.h> -#include <kpixmapeffect.h> -#include <twin.h> -#include <twinmodule.h> -#include <tqapplication.h> -#include <tqbitmap.h> -#include <tqcursor.h> -#include <tqdir.h> -#include <tqlabel.h> -#include <tqlayout.h> -#include <tqpainter.h> -#include <tqtimer.h> -#include <tqtooltip.h> -#include <tqsettings.h> -#include <stdio.h> - -#include <X11/Xatom.h> -#include <X11/Xlib.h> -#include <X11/Xutil.h> -#include <X11/extensions/shape.h> -#include "baghiraclient.h" -#include "pixmaps.h" -#include "masks.h" - -#define COLOR_SPACE(R,G,B) \ - if ( R < 0 ) R = 0; else if ( R > 255 ) R = 255; \ - if ( G < 0 ) G = 0; else if ( G > 255 ) G = 255; \ - if ( B < 0 ) B = 0; else if ( B > 255 ) B = 255; - -#define SATURATION_COLOR(R,G,B) \ - grey = (299 * R + 587 * G + 114 * B) / 1000; \ - delta = 255 - grey; \ - grey = (grey *(10 - 5)) / 10; \ - iGrey = 255 - grey;\ - destR = (iGrey * (srcR - delta) + grey * R) / 255; \ - destG = (iGrey * (srcG - delta) + grey * G) / 255; \ - destB = (iGrey * (srcB - delta) + grey * B) / 255; - -#define CLAMP(x,l,u) x < l ? l :\ - x > u ? u :\ - x - -#define SATURATION_COLOR2(S,R,G,B,cR,cG,cB) \ - int max = 255+0.65*(100-S); \ - destR = CLAMP((cR + R - 128), 0, max); \ - destG = CLAMP((cG + G - 128), 0, max); \ - destB = CLAMP((cB + B - 128), 0, max); \ - destR = (S*destR + (100-S)*R)/100; \ - destG = (S*destG + (100-S)*G)/100; \ - destB = (S*destB + (100-S)*B)/100; - -using namespace Baghira; - -static const int BUTTONSIZE = 15; -static const int MENUBUTTONWIDTH = 20; -static const int DECOSIZE = 8; -int TITLESIZE;// = 26; -static const int TITLESIZESMALL = 18; -static const int MARGIN = 6; - -////////////////////////////////////////////////////////////////////////////// -// BaghiraFactory Class // -////////////////////////////////////////////////////////////////////////////// - -bool BaghiraFactory::initialized_ = false; -Baghira::TitlebarType BaghiraFactory::effect_[5][2]; -TQt::AlignmentFlags BaghiraFactory::titlealign_; -TQColor BaghiraFactory::colors_[5][ ColorTypeCount ][ 2 ]; -KPixmap BaghiraFactory::pix_[5][ PixmapTypeCount ][ 2 ][ 2 ]; -int BaghiraFactory::bordersize_[5] = {0,0,6,0,0};//{BorderTiny, BorderTiny, BorderVeryHuge}; -TQPixmap BaghiraFactory::ButtonPixmap_[5][WindowStateAmount][ButtonTypeAmount][ButtonStateAmount][2]; -TQColor BaghiraFactory::brushedMetalColor; -TQColor BaghiraFactory::ButtonColor_[ButtonTypeAmount+1]; -TQPixmap BaghiraFactory::nostalgia_[5][3][2]; -int BaghiraFactory::contrast_; -int BaghiraFactory::_3DImpact_[5]; -int BaghiraFactory::LineImpact_[5]; -bool BaghiraFactory::bgStipple_; -bool BaghiraFactory::comicFrame_; -bool BaghiraFactory::addAutoSpacing_; -bool BaghiraFactory::maxResizable_; -bool BaghiraFactory::shape_ul[5]; -bool BaghiraFactory::shape_ur[5]; -bool BaghiraFactory::shape_ll[5]; -bool BaghiraFactory::shape_lr[5]; -bool BaghiraFactory::allowEasyClosing_; -bool BaghiraFactory::resizeGrip_; -uint BaghiraFactory::defaultMode_; -bool BaghiraFactory::drawIcon_[5]; -bool BaghiraFactory::tintBrush_; -bool BaghiraFactory::showTitle_; -TQColor BaghiraFactory::brushTint; -int BaghiraFactory::minimumTitleHeight_; -ButtonStyle BaghiraFactory::buttonStyle_[5]; - -TQBitmap BaghiraFactory::helpMask; -TQBitmap BaghiraFactory::jaguarDownMask; -TQBitmap BaghiraFactory::jaguarMenuDownMask; -TQBitmap BaghiraFactory::jaguarMenuMask; -TQBitmap BaghiraFactory::jaguarMask; -TQBitmap BaghiraFactory::milkMenuDownMask; -TQBitmap BaghiraFactory::milkMenuMask; -TQBitmap BaghiraFactory::milkMask; -TQBitmap BaghiraFactory::pantherMenuMask; -TQBitmap BaghiraFactory::pantherMask; -TQBitmap BaghiraFactory::milkDownMask; -TQBitmap BaghiraFactory::arrowUp; -TQBitmap BaghiraFactory::arrowDown; -DeMaximizer BaghiraFactory::deMaximizer_; -bool BaghiraFactory::fullSpec_; -bool BaghiraFactory::noModalDeco_; -bool BaghiraFactory::delAppname_; - -Atom baghira_deco_design = XInternAtom(tqt_xdisplay(), "BAGHIRA_DECO_DESIGN", False); - -extern "C" -{ - KDE_EXPORT KDecorationFactory* create_factory() - { - return new Baghira::BaghiraFactory(); - } -} - -DeMaximizer::DeMaximizer() : TQWidget(0, "deMaximizer", TQt::WType_TopLevel | TQt::WStyle_NoBorder | TQt::WX11BypassWM ) -{ - client_ = 0L; - setFixedSize(16,16); - setMouseTracking(TRUE); - setAutoMask(TRUE); - move(TQApplication::desktop()->availableGeometry().right()-17,TQApplication::desktop()->availableGeometry().top()+2); - setBackgroundMode( NoBackground ); -// setBackgroundMode (TQt::X11ParentRelative); -// setPaletteBackgroundColor(TQt::green); -} - -void DeMaximizer::mouseReleaseEvent( TQMouseEvent *) -{ - hasMouse()?setState(1):setState(0); - if (client_) client_->demaxButtonPressed(); -} - -void DeMaximizer::mousePressEvent ( TQMouseEvent *) -{ - setState(2); -} - -void DeMaximizer::enterEvent ( TQEvent *) -{ - setState(1); -} - -void DeMaximizer::leaveEvent ( TQEvent *) -{ - setState(0); -} - -void DeMaximizer::setState(int i) -{ - erase(); - TQPainter p(this); - p.drawPixmap(0,0,pixmap[i]); - p.end(); -} - -void DeMaximizer::setPixmap(int i, TQImage &image ) -{ - pixmap[i] = TQPixmap(image); -} - - -void DeMaximizer::setClient(BaghiraClient *client) -{ - if (client_) - { - TQObject::disconnect ( client_, SIGNAL(hide()), this, SLOT(hide()) ); - client_ = 0L; - } - if (client) - { - client_ = client; - connect ( client_, SIGNAL(hide()), SLOT(hide()) ); - setState(0); - } -// repaint(); -} - -#if KDE_IS_VERSION(3,3,91) -////////////////////////////////////////////////////////////////////////////// -// ResizeHandle() -// --------------- -// Constructor -ResizeHandle::ResizeHandle(BaghiraClient * parent) : TQWidget(parent->widget(), 0, 0) -{ - if (!parent->widget()) - return; - client = parent; - setCursor(TQCursor(TQt::SizeFDiagCursor)); - setFixedSize(16,16); - updateLook(FALSE); - WId root, daddy = 0; - WId *kids = 0L; - uint numKids = 0; - XQueryTree(tqt_xdisplay(), parent->windowId(), &root, &daddy, &kids, &numKids); - if (daddy) - XReparentWindow( tqt_xdisplay(), winId(), daddy, 0, 0 ); - else return; - move(client->width()-2*BaghiraFactory::borderSize(parent->currentStyle)-16,client->height()-client->titleheight_-16); - shape(); - parent->widget()->installEventFilter(this); - raise(); - show(); -} - -void ResizeHandle::updateLook(bool rp) -{ - pix = TQPixmap(16,16); - TQPainter p(&pix); - p.fillRect(pix.rect(), BaghiraFactory::effect(client->currentStyle, client->isActive()) == Baghira::Brushed ? BaghiraFactory::BrushedMetalColor().light(110):paletteBackgroundColor()); - p.setPen( BaghiraFactory::effect(client->currentStyle, client->isActive()) == Baghira::Brushed ? TQt::black:paletteForegroundColor() ); - p.drawLine(0,16,16,0); - p.drawLine(4,16,16,4); - p.drawLine(8,16,16,8); - p.drawLine(12,16,16,12); - p.end(); - setPaletteBackgroundPixmap(pix); - if (rp) repaint(); -} - -void ResizeHandle::shape() -{ - XRectangle* xrects = new XRectangle[16]; - for (int i = 0; i < 16; i++) - { - xrects[ i ].x = 15-i; - xrects[ i ].y = i; - xrects[ i ].width = i+1; - xrects[ i ].height = 1; - } - XShapeCombineRectangles( tqt_xdisplay(), winId(), ShapeBounding, 0, 0, - xrects, 16, ShapeSet, 0 ); - delete[] xrects; -} - -bool ResizeHandle::eventFilter(TQObject *obj, TQEvent *e) -{ - if ( obj != parent() ) - return false; - if ( e->type() == TQEvent::Resize) - { - if (client->maximizeMode() == BaghiraClient::MaximizeFull) - move(client->width() - 16, client->height() - client->titleheight_ - 16); - else - move(client->width() - 2*BaghiraFactory::borderSize(client->currentStyle) - 16, client->height() - client->titleheight_ - BaghiraFactory::borderSize(client->currentStyle) - 16); -// shape(); - return FALSE; - } - return FALSE; -} - -void ResizeHandle::mousePressEvent ( TQMouseEvent * ) -{ - client->performWindowOperation(/*Unrestricted*/KDecoration::ResizeOp); -} -void ResizeHandle::mouseReleaseEvent ( TQMouseEvent * ) -{ - client->performWindowOperation(KDecoration::NoOp); - repaint(TRUE); -} -void ResizeHandle::paintEvent ( TQPaintEvent * ) -{ - TQPainter p(this); - p.drawPixmap(0,0,pix); -} - -#endif - -////////////////////////////////////////////////////////////////////////////// -// BaghiraFactory() -// --------------- -// Constructor - -BaghiraFactory::BaghiraFactory() { - helpMask = TQBitmap( 14, 15, help_bits, true ); - jaguarDownMask = TQBitmap( 14, 15, jaguar2_bits, true ); - jaguarMenuDownMask = TQBitmap( 20, 15, jaguar_menu_down_bits, true ); - jaguarMenuMask = TQBitmap( 20, 15, jaguar_menu_bits, true ); - jaguarMask = TQBitmap( 14, 15, jaguar_bits, true ); - milkMenuDownMask = TQBitmap( 20, 15, milk_menu_down_bits, true ); - milkMenuMask = TQBitmap( 20, 15, milk_menu_bits, true ); - milkMask = TQBitmap( 14, 15, milk_bits, true ); - pantherMenuMask = TQBitmap( 20, 15, panther_menu_bits, true ); - pantherMask = TQBitmap( 14, 15, panther_bits, true ); - milkDownMask = TQBitmap( 14, 15, milk_pressed_bits, true ); - arrowUp = TQBitmap( 8, 4, arrowUp_bits, true ); - arrowUp.setMask( arrowUp ); - arrowDown = TQBitmap( 8, 4, arrowDown_bits, true ); - arrowDown.setMask( arrowDown ); - readConfig(); - createPixmaps(); - initialized_ = true; -} - -////////////////////////////////////////////////////////////////////////////// -// ~BaghiraFactory() -// ---------------- -// Destructor - -BaghiraFactory::~BaghiraFactory() -{ - deMaximizer_.setClient(NULL); - initialized_ = false; -} - -////////////////////////////////////////////////////////////////////////////// -// createDecoration() -// ------------------ -// Create the decoration - -KDecoration* BaghiraFactory::createDecoration( KDecorationBridge* b ) { - return new BaghiraClient( b, this ); -} - -////////////////////////////////////////////////////////////////////////////// -// reset() -// ------- -// Reset the handler. Returns true if decorations need to be remade - -TQString BaghiraFactory::indexedString(TQString s, int i){ - TQString result; - result.setNum(i+1); - result.prepend("_"); - result.prepend(s); -// tqWarning("%s",result.ascii()); - return result; -} - -bool BaghiraFactory::reset( unsigned long changed ) { - initialized_ = false; - changed |= readConfig(); - if ( changed & ( SettingColors | SettingDecoration | SettingBorder ) ) { - createPixmaps(); - } - initialized_ = true; - - if ( changed & ( SettingColors | SettingDecoration | SettingFont | - SettingButtons | SettingBorder ) ) { - return true; - } else { - resetDecorations( changed ); - return false; - } -} - -////////////////////////////////////////////////////////////////////////////// -// readConfig() -// ------------ -// Read in the configuration file - -unsigned long BaghiraFactory::readConfig() { - - TQSettings config; - config.beginGroup("/baghira/Style"); -// TDEConfig config( "baghirarc" ); -// config.setGroup( "Style" ); - bgStipple_ = config.readBoolEntry( "Design_StippleBackground", false); - contrast_ = config.readNumEntry( "Design_StippleContrast", 30 ); - tintBrush_ = config.readBoolEntry( "Colors_TintBrushedMetal", false ); - if (tintBrush_) - brushTint.setRgb( config.readNumEntry( "Colors_BrushTint")); - - TQColor oldcolor; - unsigned long changed = 0; - oldcolor = colors_[3][ Baghira::ColorTitleBar ][ false ]; - colors_[3][ Baghira::ColorTitleBar ][ false ] = tqApp->palette().active().background(); - if ( oldcolor != colors_[3][ Baghira::ColorTitleBar ][ false ] ) - changed |= SettingColors; - - oldcolor = colors_[3][ Baghira::ColorTitleBlend ][ false ]; - colors_[3][ Baghira::ColorTitleBlend ][ false ] = colors_[3][ Baghira::ColorTitleBar ][ false ].dark(100 + config.readNumEntry( "Design_StippleContrast", 3)); - if ( oldcolor != colors_[3][ Baghira::ColorTitleBlend ][ false ] ) - changed |= SettingColors; - - config.endGroup(); - config.beginGroup( "/baghira/Deco" ); - - - // common settings - - bool oldNoModalDeco = noModalDeco_; - noModalDeco_ = config.readBoolEntry( "NoModalDeco", false ); - if (oldNoModalDeco != noModalDeco_) - changed |= SettingDecoration; - - bool oldDelAppname = delAppname_; - delAppname_ = config.readBoolEntry( "RemoveAppname", true ); - if (oldDelAppname != delAppname_) - changed |= SettingDecoration; - - int oldMinTH = minimumTitleHeight_; - minimumTitleHeight_ = (ButtonStyle) config.readNumEntry( "minimumTitleHeight", 18 ); - if ( oldMinTH != minimumTitleHeight_ ) - { - TQFontMetrics fm(options()->font(true, false)); - TITLESIZE = TQMAX(minimumTitleHeight_, fm.height()); - changed |= SettingFont; - changed |= SettingDecoration; - } - - bool allowEasyClosing__ = allowEasyClosing_; - allowEasyClosing_ = config.readBoolEntry( "allowEasyClosing", false ); - if ( allowEasyClosing__ != allowEasyClosing_ ) - changed |= SettingDecoration; - - bool resizeGrip__ = resizeGrip_; - resizeGrip_ = config.readBoolEntry( "ResizeGrip", false ); - if ( resizeGrip__ != resizeGrip_ ) - changed |= SettingDecoration; - - bool defaultMode__ = defaultMode_; - defaultMode_ = config.readNumEntry( "defaultMode", 1 ); - if ( defaultMode__ != defaultMode_ ) - changed |= SettingDecoration; - - TQt::AlignmentFlags oldalign = titlealign_; - TQString value = config.readEntry( "TitleAlignment", "AlignHCenter" ); - showTitle_ = TRUE; - if ( value == "AlignLeft" ) - titlealign_ = TQt::AlignLeft; - else if ( value == "AlignHCenter" ) - titlealign_ = TQt::AlignHCenter; - else if ( value == "AlignRight" ) - titlealign_ = TQt::AlignRight; - else if ( value == "noTitle" ) - { - showTitle_ = FALSE; - titlealign_ = TQt::AlignAuto; - } - if ( oldalign != titlealign_ ) - changed |= SettingFont; - - bool oldComic = comicFrame_; - comicFrame_ = config.readBoolEntry( "DrawComicFrame", false ); - if ( oldComic != comicFrame_ ) - changed |= SettingBorder; changed |= SettingDecoration; - - bool oldAutoSpacing = addAutoSpacing_; - addAutoSpacing_ = config.readBoolEntry( "AddAutoSpacing", true ); - if ( oldAutoSpacing != addAutoSpacing_ ) - changed |= SettingDecoration; - - bool oldMaxResizable = maxResizable_; - maxResizable_ = config.readBoolEntry( "MaxResizable", true ); - if ( oldMaxResizable != maxResizable_ ) - changed |= SettingDecoration; - - bool oldSpec = fullSpec_; - fullSpec_ = config.readBoolEntry( "FullSpec", false ); - if ( oldSpec != fullSpec_ ) - changed |= SettingDecoration; - - // custom settings - - for (int i = 0; i < 5; i++){ - - int oldbordersize = bordersize_[i]; - bordersize_[i] = config.readNumEntry( indexedString("BorderSize",i), i == 2 ? 6 : 0 ); - if ( oldbordersize != bordersize_[i] ) - changed |= SettingBorder; - - ButtonStyle oldButtons = buttonStyle_[i]; - buttonStyle_[i] = (ButtonStyle) config.readNumEntry( indexedString("ButtonStyle",i), i == 0 ? 1 : 0 ); - if ( oldButtons != buttonStyle_[i] ) - changed |= SettingDecoration; - - - bool oldShUL = shape_ul[i]; - shape_ul[i] = config.readBoolEntry( indexedString("ShapeUL",i), true ); - if ( oldShUL != shape_ul[i] ){ - changed |= SettingBorder; changed |= SettingDecoration; - } - - bool oldShUR = shape_ur[i]; - shape_ur[i] = config.readBoolEntry( indexedString("ShapeUR",i), true ); - if ( oldShUR != shape_ur[i] ){ - changed |= SettingBorder; changed |= SettingDecoration; - } - - bool oldShLL = shape_ll[i]; - shape_ll[i] = config.readBoolEntry( indexedString("ShapeLL",i), i == 2 ); - if ( oldShLL != shape_ll[i] ){ - changed |= SettingBorder; changed |= SettingDecoration; - } - - bool oldShLR = shape_lr[i]; - shape_lr[i] = config.readBoolEntry( indexedString("ShapeLR",i), i == 2 ); - if ( oldShLR != shape_lr[i] ){ - changed |= SettingBorder; changed |= SettingDecoration; - } - - - bool oldDrawIcon_ = drawIcon_[i]; - drawIcon_[i] = config.readBoolEntry( indexedString("drawIcon",i), true ); - if ( oldDrawIcon_ = drawIcon_[i] ) - changed |= SettingFont; - changed |= SettingDecoration; - - if (i != 3) - { - Baghira::TitlebarType oldeffect = effect_[i][1]; - effect_[i][1] = ( Baghira::TitlebarType ) config.readNumEntry( indexedString("TitleEffect",i), i == 0 ? Baghira::Stipples : (i == 1 || i == 4) ? Baghira::Gradient : Baghira::Brushed); - // tqWarning("%d",effect_[i]); - if ( oldeffect != effect_[i][1] ) - changed |= SettingDecoration; - - oldeffect = effect_[i][0]; - effect_[i][0] = ( Baghira::TitlebarType ) config.readNumEntry( indexedString("inactiveTitleEffect",i), i == 0 ? Baghira::Stipples : (i == 1 || i == 4) ? Baghira::Gradient : Baghira::Brushed); - // tqWarning("%d",effect_[i]); - if ( oldeffect != effect_[i][0] ) - changed |= SettingDecoration; - - int oldLineImpact = LineImpact_[i]; - LineImpact_[i] = config.readNumEntry( indexedString("LineImpact",i), i == 2 ? 0 : 40 ); - if ( oldLineImpact != LineImpact_[i] ) - changed |= SettingDecoration; - - oldcolor = colors_[i][ Baghira::ColorTitleBar ][ false ]; - colors_[i][ Baghira::ColorTitleBar ][ false ].setRgb((unsigned int)config.readNumEntry( indexedString("inactiveColor1",i), i == 0 ? TQColor(204,214,230).rgb() : i == 1 ? TQColor(246,242,246).rgb() : i == 3 ? TQColor(200,200,200).rgb() : TQColor(230,230,230).rgb())); - if ( oldcolor != colors_[i][ Baghira::ColorTitleBar ][ false ] ) - changed |= SettingColors; - - oldcolor = colors_[i][ Baghira::ColorTitleBlend ][ false ]; - colors_[i][ Baghira::ColorTitleBlend ][ false ].setRgb((unsigned int)config.readNumEntry( indexedString("inactiveColor2",i), i == 0 ? TQColor(194,196,211).rgb() : i == 1 ? TQColor(238,238,238).rgb() : i == 3 ? TQColor(150,150,150).rgb() : TQColor(250,250,250).rgb())); - if ( oldcolor != colors_[i][ Baghira::ColorTitleBlend ][ false ] ) - changed |= SettingColors; - } - else - { - effect_[3][1] = Baghira::Gradient; - effect_[3][0] = Baghira::FlatStipples; - LineImpact_[3] = 0; - } - - int old3DImpact = _3DImpact_[i]; - _3DImpact_[i] = config.readNumEntry( indexedString("3DImpact",i), 20 ); - if ( old3DImpact != _3DImpact_[i] ) - changed |= SettingDecoration; - - oldcolor = colors_[i][ Baghira::ColorTitleBar ][ true ]; - colors_[i][ Baghira::ColorTitleBar ][ true ].setRgb((unsigned int)config.readNumEntry( indexedString("activeColor1",i), i == 0 ? TQColor(255,255,255).rgb() : i == 1 ? TQColor(238,238,238).rgb() : i == 2 ? TQColor(202,202,202).rgb() : i == 3 ? TQColor(238,238,238).rgb() : TQColor(250,250,250).rgb())); - if ( oldcolor != colors_[i][ Baghira::ColorTitleBar ][ true ] ) - changed |= SettingColors; - - oldcolor = colors_[i][ Baghira::ColorTitleBlend ][ true ]; - colors_[i][ Baghira::ColorTitleBlend ][ true ].setRgb((unsigned int)config.readNumEntry( indexedString("activeColor2",i), i == 0 ? TQColor(238,234,238).rgb() : i == 1 ? TQColor(205,202,205).rgb() : i == 2 ? TQColor(150,150,150).rgb() : i == 3 ? TQColor(211,208,211).rgb() : TQColor(230,230,230).rgb())); - if ( oldcolor != colors_[i][ Baghira::ColorTitleBlend ][ true ] ) - changed |= SettingColors; - - } - - oldcolor = ButtonColor_[MinButton]; - ButtonColor_[MinButton].setRgb((unsigned int)config.readNumEntry( "MinButtonColor", TQColor(230,155,40).rgb() )); - if ( oldcolor != ButtonColor_[MinButton] ) - changed |= SettingColors; - - oldcolor = ButtonColor_[MaxButton]; - ButtonColor_[MaxButton].setRgb((unsigned int)config.readNumEntry( "MaxButtonColor", TQColor(121,180,54).rgb() )); - if ( oldcolor != ButtonColor_[MaxButton] ) - changed |= SettingColors; - - oldcolor = ButtonColor_[CloseButton]; - ButtonColor_[CloseButton].setRgb((unsigned int)config.readNumEntry( "CloseButtonColor", TQColor(200,85,70).rgb() )); - if ( oldcolor != ButtonColor_[CloseButton] ) - changed |= SettingColors; - - oldcolor = ButtonColor_[StickyButton]; - ButtonColor_[StickyButton].setRgb((unsigned int)config.readNumEntry( "StickyButtonColor", TQColor(74,140,242).rgb() )); - if ( oldcolor != ButtonColor_[StickyButton] ) - changed |= SettingColors; - - oldcolor = ButtonColor_[AboveBelowButton]; - ButtonColor_[AboveBelowButton].setRgb((unsigned int)config.readNumEntry( "AboveButtonColor", TQColor(74,140,242).rgb() )); - if ( oldcolor != ButtonColor_[AboveBelowButton] ) - changed |= SettingColors; - oldcolor = ButtonColor_[ShadeButton]; - ButtonColor_[ShadeButton].setRgb((unsigned int)config.readNumEntry( "ShadeButtonColor", TQColor(74,140,242).rgb() )); - if ( oldcolor != ButtonColor_[ShadeButton] ) - changed |= SettingColors; - - oldcolor = ButtonColor_[MenuButton]; - ButtonColor_[MenuButton].setRgb((unsigned int)config.readNumEntry( "MenuButtonColor", TQColor(74,140,242).rgb() )); - if ( oldcolor != ButtonColor_[MenuButton] ) - changed |= SettingColors; - - oldcolor = ButtonColor_[HelpButton]; - ButtonColor_[HelpButton].setRgb((unsigned int)config.readNumEntry( "HelpButtonColor", TQColor(0,0,0).rgb() )); - if ( oldcolor != ButtonColor_[HelpButton] ) - changed |= SettingColors; - - oldcolor = ButtonColor_[InactiveButton]; - ButtonColor_[InactiveButton].setRgb((unsigned int)config.readNumEntry( "InactiveButtonColor", TQColor(255,255,255).rgb() )); - if ( oldcolor != ButtonColor_[InactiveButton] ) - changed |= SettingColors; - - - config.endGroup(); - return changed; -} - -TQImage* BaghiraFactory::tintGlossy( const TQImage &src, const TQColor &c ) const -{ - TQImage *dest = new TQImage( src.width(), src.height(), 32); - dest->setAlphaBuffer( true ); - unsigned int *data = ( unsigned int * ) src.bits(); - unsigned int *destData = ( unsigned int* ) dest->bits(); - int total = src.width() * src.height(); - int u3rd = src.width()*4; - int red, green, blue; - int destR, destG, destB, alpha; - int srcR = c.red(); - int srcG = c.green(); - int srcB = c.blue(); - int hue, s, v; - c.getHsv( &hue, &s, &v ); - int sq = CLAMP((int)((45.0/128.0)*s+55),0,100); - // float srcPercent, destPercent; - for ( int current = 0 ; current < total ; ++current ) { - alpha = tqAlpha( data[ current ] ); - if (alpha < 230){ - destData[ current ] = data[ current ]; - continue; //do not handle translucent parts to not affect blending - } - red = tqRed( data[ current ] ); - green = tqGreen( data[ current ] ); - blue = tqBlue( data[ current ] ); - if ( current > u3rd || red < 223 ){ - SATURATION_COLOR2(sq, red, green, blue, srcR, srcG, srcB) - } else { - SATURATION_COLOR2(sq, red, green, blue, 255, 255, 255); - } - // force back to valid colorspace ! - COLOR_SPACE(destR, destG, destB); - destData[ current ] = tqRgba( destR, destG, destB, alpha ); - } - return ( dest ); -} - -TQImage* BaghiraFactory::tintBrush( const TQImage &img, const TQColor &c ) const -{ - -// if ( img.depth() != 32 ) -// img = img.convertDepth( 32 ); - TQImage *dest = new TQImage( img.width(), img.height(), 32); - unsigned int *data = ( unsigned int * ) img.bits(); - unsigned int *destData = ( unsigned int* ) dest->bits(); - int total = img.width() * img.height(); - int current; - int delta; - int red, green, blue, grey, iGrey; - int destR, destG, destB, alpha; - - int srcR = c.red(); - int srcG = c.green(); - int srcB = c.blue(); - - SATURATION_COLOR(180, 180, 180); - COLOR_SPACE(destR, destG, destB); - brushedMetalColor = TQColor(destR, destG, destB); - - // float srcPercent, destPercent; - for ( current = 0 ; current < total ; ++current ) { - alpha = tqAlpha( data[ current ] ); - blue = tqBlue( data[ current ] ); - red = tqRed( data[ current ] ); - green = tqGreen( data[ current ] ); - SATURATION_COLOR(red, green, blue); - // force back to valid colorspace ! - COLOR_SPACE(destR, destG, destB); - destData[ current ] = tqRgba( destR, destG, destB, alpha ); - } - return ( dest ); -} - -void BaghiraFactory::createOS8Buttons(int style){ - TQPainter p; - TQColor initColor; - for ( int active = 0; active <= 1; ++active ){ - for (int t = 0; t < 3; t++){ - initColor = TQColor(color(style, Baghira::ColorTitleBar, active ).dark(100 + t*15)); - nostalgia_[style][t][active] = TQPixmap(BUTTONSIZE, BUTTONSIZE); - p.begin(&nostalgia_[style][t][active]); - p.setPen(color(style, Baghira::ColorTitleBar, active )); - p.drawPoint(0,BUTTONSIZE-1); - p.drawPoint(BUTTONSIZE-1,0); - p.setPen(initColor); - // dark color - // outer relief =============================== - p.drawLine(0,0,0,BUTTONSIZE-2); - p.drawLine(0,0,BUTTONSIZE-2,0); - // ============================================= - // inner relief ================================ - if (t < 2){ - p.drawLine(3,BUTTONSIZE-3,BUTTONSIZE-3,BUTTONSIZE-3); - p.drawLine(BUTTONSIZE-3,3,BUTTONSIZE-3,BUTTONSIZE-3); - } - else{ - p.drawLine(2,2,2,BUTTONSIZE-4); - p.drawLine(2,2,BUTTONSIZE-4,2); - } - // ======================================== - for (int i = 0; i < BUTTONSIZE - 6; i++){ - if (i == BUTTONSIZE - 7){ - p.drawPoint(2, BUTTONSIZE - 3); - p.drawPoint(BUTTONSIZE - 3, 2); - } - for (int j = 0; j < i+1; j++){ - p.setPen(initColor.light(100 + (i + j)*3)); - p.drawPoint(i+3,j+3); - if (i != j) p.drawPoint(j+3,i+3); - } - } - // Color is now Bright ;-) - // inner relief =============================== - if (t < 2){ - p.drawLine(2,2,2,BUTTONSIZE-4); - p.drawLine(2,2,BUTTONSIZE-4,2); - } - else{ - p.drawLine(3,BUTTONSIZE-3,BUTTONSIZE-3,BUTTONSIZE-3); - p.drawLine(BUTTONSIZE-3,3,BUTTONSIZE-3,BUTTONSIZE-3); - } - // ================================ - // outer relief ====================================== - p.drawLine(1,BUTTONSIZE-1,BUTTONSIZE-1,BUTTONSIZE-1); - p.drawLine(BUTTONSIZE-1,1,BUTTONSIZE-1,BUTTONSIZE-1); - //================================== - // black frame - p.setPen(TQt::black); - p.drawRect(1,1,BUTTONSIZE-2,BUTTONSIZE-2); - p.end(); - } - } -} - -TQPixmap &BaghiraFactory::ButtonPixmap( Baghira::WindowState wState, - Baghira::ButtonType type, Baghira::ButtonState state, int style, bool small ) { - return ButtonPixmap_[style][ wState ][ type ][ state ][small]; -} - -TQImage* BaghiraFactory::DecoImage( TQPixmap *pix, int x, int y, int width, int height ) { - TQPixmap tmpPix( width, height ); - bitBlt ( &tmpPix, 0, 0, pix, x, y, width, height ); - TQImage *returnImage = new TQImage( tmpPix.convertToImage() ); - return returnImage; -} - -/////////////////////////////////////////////////////////////////////////// -// createGradient() -// ---------------- -// Create a gradient - -void BaghiraFactory::createGradient(KPixmap &pix, const TQColor &light, const TQColor &dark, Baghira::TitlebarType effect) -{ - if (pix.width() == 0) return; - - TQPainter p; - switch( effect ){ - case Baghira::Stipples: - KPixmapEffect::unbalancedGradient(pix, light, light.dark(110), KPixmapEffect::VerticalGradient, 0); - p.begin(&pix); - p.setPen(dark); - for( int i = 0; i < pix.height(); i+=4 ){ - p.drawLine(0,i,pix.width(),i); - p.drawLine(0,i+1,pix.width(),i+1); - } - p.end(); - break; - case Baghira::FlatStipples: - { - p.begin(&pix); - p.fillRect(pix.rect(),light); - TQColor mid; - mid.setRgb((light.red()+2*dark.red())/3,(light.green()+2*dark.green())/3,(light.blue()+2*dark.blue())/3); - p.setPen(mid); - for( int i = pix.height() - 1; i > 0; i-=4 ) - { - p.drawLine(0,i,pix.width(),i); - p.drawLine(0,i-2,pix.width(),i-2); - } - p.setPen(dark); - for( int i = pix.height() - 2; i > 0; i-=4 ) - { - p.drawLine(0,i,pix.width(),i); - } - p.end(); - break; - } - case Baghira::Nostalgia: - p.begin(&pix); - p.fillRect(pix.rect(),light); - p.setPen(light.light(120)); - for (int i = (pix.height() - 1) / 4; i < (pix.height() - 1) / 4 * 3 + 1; i +=2) - p.drawLine(0,i,pix.width()-1,i); - p.setPen(light.dark(120)); - for (int i = (pix.height() - 1) / 4; i < (pix.height() - 1) / 4 * 3 + 1; i +=2) - p.drawLine(0,i+1,pix.width()-1,i+1); - p.end(); - break; - case Baghira::Gradient: - default: - KPixmapEffect::gradient(pix, light, dark, KPixmapEffect::VerticalGradient, 0); - break; - } -} - -static bool blend( const TQImage & upper, const TQImage & lower, TQImage & output) -// adopted from kimageeffect::blend - what is not endian safe... -{ - if - ( - upper.width() > lower.width() || - upper.height() > lower.height() || - upper.depth() != 32 || - lower.depth() != 32 - ) - return false; - - output = lower.copy(); - - uchar *i, *o; - int a; - int col; - int w = upper.width(); - int row(upper.height() - 1); - - do - { - i = upper.scanLine(row); - o = output.scanLine(row); - - col = w << 2; - - --col; - - do - { -#ifdef WORDS_BIGENDIAN - while (!(a = i[col-3]) && (col != 3)) -#else - while (!(a = i[col]) && (col != 3)) -#endif - { - --col; --col; --col; --col; - } -#ifndef WORDS_BIGENDIAN - --col; -#endif - o[col] += ((i[col] - o[col]) * a) >> 8; - - --col; - o[col] += ((i[col] - o[col]) * a) >> 8; - - --col; - o[col] += ((i[col] - o[col]) * a) >> 8; - -#ifdef WORDS_BIGENDIAN - --col; -#endif - - } while (col--); - } while (row--); - return true; -} - -////////////////////////////////////////////////////////////////////////////// -// createPixmaps() -// --------------- -// Create all our pixmaps -void BaghiraFactory::createPixmaps() { -// TQPainter painter; - TQColorGroup group; - TQPainter icyAPainter; - TQImage tmpResult; - TQImage tmpResult2; - TQImage tmpDeco; - TQImage buttonImage; - TQImage btnIcons[MenuButton]; - btnIcons[AboveBelowButton] = TQImage(); - // load icon images - useless for nostalgia style, but i assume they'll be used at least once ;) - btnIcons[MinButton] = uic_findImage( "icon_minimize" ); - btnIcons[MaxButton] = uic_findImage( "icon_maximize" ); - btnIcons[CloseButton] = uic_findImage( "icon_close" ); - btnIcons[StickyButton] = uic_findImage( "icon_sticky" ); -// btnIcons[AboveBelowButton] = uic_findImage( "icon_above" ); - btnIcons[ShadeButton] = uic_findImage( "icon_shade" ); - - int B_3 = 0; - int B_6 = 0; -// int bt, bs; - int xoff = 0; - int yoff = 1; - bool brushedMode; - - for (int style = 0; style < 5; style++){ - for ( int active = 0; active <= 1; ++active ) { - for ( int small = 0; small <= 1; ++small ) { - KPixmap &tbar = pix_[style][ TitleBar ][ active ][ small ]; - KPixmap &tcenter = pix_[style][ TitleCenter ][ active ][ small ]; - brushedMode = effect_[style][active] == Baghira::Brushed; - - // create gradients and fills - // if (effect_ == Baghira::Gradient || effect_ == Baghira::Stipples /*|| effect_ == Baghira::Glossy * / - if (effect_[style][active] < Baghira::Glossy || effect_[style][active] == Baghira::FlatStipples){ - // resize pixmap - tbar.resize( 100, small ? TITLESIZESMALL : TITLESIZE ); - createGradient( tbar, color(style, Baghira::ColorTitleBar, active ), color(style, Baghira::ColorTitleBlend, active ), effect_[style][active] ); - } - else if (brushedMode){ - TQPixmap brushTile; - TQPixmap brushGradient; - if (tintBrush_){ - brushTile = TQPixmap(*tintBrush(uic_findImage( "brushed-tile" ), brushTint)); - brushGradient = TQPixmap(*tintBrush(uic_findImage( "brushed-gradient" ), brushTint)); - } - else{ - brushTile = uic_findImage( "brushed-tile" ); - brushGradient = uic_findImage( "brushed-gradient" ); - brushedMetalColor = TQColor(180,180,180); - } - // resize pixmap - tbar.resize( 256, small ? TITLESIZESMALL : TITLESIZE ); - tcenter.resize( 1024, small ? TITLESIZESMALL : TITLESIZE ); - TQPainter painter(&tbar); - painter.drawTiledPixmap( 0,0, tbar.width(), tbar.height(), brushTile ); - painter.end(); - painter.begin(&tcenter); - painter.drawTiledPixmap( 0,0, tcenter.width(), tcenter.height(), brushGradient ); - } - else{ - tbar.resize( 32, small ? TITLESIZESMALL : TITLESIZE); - KPixmap tmp = TQPixmap(*tintGlossy(uic_findImage( "deco_glossy" ), color(style, Baghira::ColorTitleBar, active ))); - if (tbar.height() > 18){ - for (int i = 8; i < tbar.height() - 10; i++){ - bitBlt(&tbar, 0, i, &tmp, 0, 8, 32, 1); - } - } - bitBlt(&tbar, 0, tbar.height() - 11, &tmp, 0, 9, 32, 10); - bitBlt(&tbar, 0, 0, &tmp, 0, 0, 32, 8); - } - - switch ( buttonStyle_[style] ) { - - // Load Jaguar Buttons ========================================================================= - - case Jaguar: - - tmpDeco = *DecoImage( &tbar, 0, ( tbar.height() - BUTTONSIZE ) / 2, BUTTONSIZE, BUTTONSIZE ); - - // unpressed buttons - buttonImage = uic_findImage( "button_jaguar"); - - for (int bt = MinButton; bt < MenuButton; bt++){ - for (int bs = ButtonInactive; bs < Pressed; bs++){ - tmpResult2 = *tintGlossy( buttonImage, bs == ButtonInactive ? - ButtonColor_[InactiveButton] : - ButtonColor_[bt] ); - /*brushedMode ? blend( tmpResult2, tmpDeco, tmpResult ) : */blend( tmpResult2, tmpDeco, tmpResult ); - if (bs > ButtonActive) blend( btnIcons[bt], tmpResult, tmpResult ); - ButtonPixmap_[style][ active ][ bt ][ bs ][small] = TQPixmap( tmpResult ); - } - } - - // pressed buttons // as jaguar buttons shift - buttonImage = uic_findImage( "button_jaguar_down"); - - for (int bt = MinButton; bt < MenuButton; bt++){ - tmpResult2 = *tintGlossy( buttonImage, ButtonColor_[bt].dark(120)); - /*brushedMode ? blend( tmpResult2, tmpDeco, tmpResult ) : */blend( tmpResult2, tmpDeco, tmpResult ); - KImageEffect::blendOnLower( xoff, yoff, btnIcons[bt], tmpResult); // must shift as well - ButtonPixmap_[style][ active ][ bt ][ Pressed ][small] = TQPixmap( tmpResult ); - } - - - // HelpButton - buttonImage = uic_findImage( "icon_help"); - for (int bs = ButtonInactive; bs < ButtonStateAmount; bs++){ - tmpResult2 = *tintGlossy( buttonImage, bs == ButtonInactive ? - ButtonColor_[InactiveButton] : - bs == Hovered ? - ButtonColor_[HelpButton].light(120) : - bs == Pressed ? - ButtonColor_[HelpButton].dark(120) : - ButtonColor_[HelpButton] ); - /*brushedMode ? blend( tmpResult2, tmpDeco, tmpResult ) : */blend( tmpResult2, tmpDeco, tmpResult ); - ButtonPixmap_[style][ active ][ HelpButton ][ bs ][small] = TQPixmap( tmpResult ); - } - - tmpDeco = *DecoImage( &tbar, 0, ( tbar.height() - BUTTONSIZE ) / 2, MENUBUTTONWIDTH, BUTTONSIZE ); - - // MenuButton - buttonImage = uic_findImage( "button_jaguar_menu"); - for (int bs = ButtonInactive; bs < Pressed; bs++){ - tmpResult2 = *tintGlossy( buttonImage, bs < Hovered ? - ButtonColor_[InactiveButton] : - ButtonColor_[MenuButton] ); - /*brushedMode ? blend( tmpResult2, tmpDeco, tmpResult ) : */blend( tmpResult2, tmpDeco, tmpResult ); - ButtonPixmap_[style][ active ][ MenuButton ][ bs ][small] = TQPixmap( tmpResult ); - } - - - - // pressed MenuButton // as jaguar buttons shift - buttonImage = uic_findImage( "button_jaguar_menu_down"); - tmpResult2 = *tintGlossy( buttonImage, ButtonColor_[MenuButton].dark(120)); - /*brushedMode ? blend( tmpResult2, tmpDeco, tmpResult ) : */blend( tmpResult2, tmpDeco, tmpResult ); - ButtonPixmap_[style][ active ][ MenuButton ][ Pressed ][small] = TQPixmap( tmpResult ); - - - break; - - // Load Milk Buttons ========================================================================= - - case Milk: - - tmpDeco = *DecoImage( &tbar, 0, ( tbar.height() - BUTTONSIZE ) / 2, BUTTONSIZE, BUTTONSIZE ); - - // unpressed buttons - buttonImage = uic_findImage( "button_milk"); - - - for (int bt = MinButton; bt < MenuButton; bt++){ - for (int bs = ButtonInactive; bs < Pressed; bs++){ - /*brushedMode ? blend( buttonImage, tmpDeco, tmpResult ) : */blend( buttonImage, tmpDeco, tmpResult ); - if (bs > ButtonActive) blend( btnIcons[bt], tmpResult, tmpResult ); - ButtonPixmap_[style][ active ][ bt ][ bs ][small] = TQPixmap( tmpResult ); - } - } - - // pressed buttons // as pressed milk buttons differ - buttonImage = uic_findImage( "button_milk_down"); - for (int bt = MinButton; bt < MenuButton; bt++){ - /*brushedMode ? blend( buttonImage, tmpDeco, tmpResult ) : */blend( buttonImage, tmpDeco, tmpResult ); - blend( btnIcons[bt], tmpResult, tmpResult ); - ButtonPixmap_[style][ active ][ bt ][ Pressed ][small] = TQPixmap( tmpResult ); - } - - // HelpButton - buttonImage = uic_findImage( "icon_help"); - for (int bs = ButtonInactive; bs < ButtonStateAmount; bs++){ - /*brushedMode ? blend( buttonImage, tmpDeco, tmpResult ) : */blend( buttonImage, tmpDeco, tmpResult ); - ButtonPixmap_[style][ active ][ HelpButton ][ bs ][small] = TQPixmap( tmpResult ); - } - - tmpDeco = *DecoImage( &tbar, 0, ( tbar.height() - BUTTONSIZE ) / 2, MENUBUTTONWIDTH, BUTTONSIZE ); - - // MenuButton - buttonImage = uic_findImage( "button_milk_menu"); - for (int bs = ButtonInactive; bs < Pressed; bs++){ - /*brushedMode ? blend( buttonImage, tmpDeco, tmpResult ) : */blend( buttonImage, tmpDeco, tmpResult ); - ButtonPixmap_[style][ active ][ MenuButton ][ bs ][small] = TQPixmap( tmpResult ); - } - - // pressed MenuButton // as pressed milk buttons differ - buttonImage = uic_findImage( "button_milk_menu_down"); - /*brushedMode ? blend( buttonImage, tmpDeco, tmpResult ) : */blend( buttonImage, tmpDeco, tmpResult ); - ButtonPixmap_[style][ active ][ MenuButton ][ Pressed ][small] = TQPixmap( tmpResult ); - - break; - - // Create Nostalgia Buttons ========================================================================= - - case NostalgiaButton: - createOS8Buttons(style); - B_3 = (int)((BUTTONSIZE -1 )/ 3); - B_6 = B_3*2; - - tmpDeco = *DecoImage( &tbar, 0, ( tbar.height() - BUTTONSIZE ) / 2, MENUBUTTONWIDTH, BUTTONSIZE ); - - for (int bt = MinButton; bt < ButtonTypeAmount; bt++){ - for (int bs = ButtonInactive; bs < ButtonStateAmount; bs++){ - if (bs < Hovered) - ButtonPixmap_[style][ active ][ bt ][ bs ][small] = TQPixmap( nostalgia_[style][1][active] ); - else if (bs == Hovered) - ButtonPixmap_[style][ active ][ bt ][ bs ][small] = TQPixmap( nostalgia_[style][0][active] ); - else - ButtonPixmap_[style][ active ][ bt ][ bs ][small] = TQPixmap( nostalgia_[style][2][active] ); - if (bs > ButtonInactive){ - icyAPainter.begin(&ButtonPixmap_[style][ active ][ bt ][ bs ][small]); - icyAPainter.setPen(TQt::black); - if (bt == MinButton){ - icyAPainter.drawLine(2,B_3,BUTTONSIZE - 3,B_3); - icyAPainter.drawLine(2,B_6,BUTTONSIZE - 3,B_6); - icyAPainter.end(); - continue; - } - if (bt == MaxButton){ - icyAPainter.drawLine(2,B_6,B_6,B_6); - icyAPainter.drawLine(B_6,2,B_6,B_6); - icyAPainter.end(); - continue; - } - if (bt == StickyButton){ - icyAPainter.fillRect(BUTTONSIZE/2-1,BUTTONSIZE/2-1,2,2,TQt::black); - icyAPainter.end(); - continue; - } - if (bt == ShadeButton){ - icyAPainter.drawLine(2,B_3,BUTTONSIZE-3,B_3); - icyAPainter.drawLine(2,B_3+3,BUTTONSIZE-3,B_3+3); - icyAPainter.drawLine(2,B_3+6,BUTTONSIZE-3,B_3+6); - icyAPainter.end(); - continue; - } - if (bt == HelpButton){ - TQFont tmpFont = TQFont(options() ->font( true, false )); - tmpFont.setPixelSize(BUTTONSIZE - 4); - icyAPainter.setFont(tmpFont); - icyAPainter.drawText( 0, 0, BUTTONSIZE, BUTTONSIZE, TQt::AlignHCenter | TQt::AlignVCenter, "?" ); - icyAPainter.end(); - continue; - } - if (bt == MenuButton){ - icyAPainter.drawLine(2,B_3,BUTTONSIZE-3,B_3); - icyAPainter.end(); - - } - icyAPainter.end(); - } - if (bt == MenuButton){ - buttonImage = ButtonPixmap_[style][ active ][ bt ][ bs ][small].convertToImage(); - blend( buttonImage , tmpDeco, tmpDeco ); - ButtonPixmap_[style][ active ][ bt ][ bs ][small] = TQPixmap(tmpDeco); - } - } - } - break; - - // Load Panther Buttons ========================================================================= - - case Panther: - default: - - tmpDeco = *DecoImage( &tbar, 0, ( tbar.height() - BUTTONSIZE ) / 2, BUTTONSIZE, BUTTONSIZE ); - - // unpressed buttons - buttonImage = uic_findImage( "button_panther"); - - for (int bt = MinButton; bt < MenuButton; bt++){ - for (int bs = ButtonInactive; bs < ButtonStateAmount; bs++){ - tmpResult2 = *tintGlossy( buttonImage, bs == ButtonInactive ? - ButtonColor_[InactiveButton] : - bs == Pressed ? - ButtonColor_[bt].dark(120) : - ButtonColor_[bt] ); - if (bs > ButtonActive) blend( btnIcons[bt], tmpResult2, tmpResult2 ); - if (bt == MaxButton && bs > ButtonInactive) deMaximizer_.setPixmap(bs - 1, tmpResult2); - blend( tmpResult2, tmpDeco, tmpResult ); - ButtonPixmap_[style][ active ][ bt ][ bs ][small] = TQPixmap( tmpResult ); - } - } - - - // HelpButton - buttonImage = uic_findImage( "icon_help"); - for (int bs = ButtonInactive; bs < ButtonStateAmount; bs++){ - tmpResult2 = *tintGlossy( buttonImage, bs == ButtonInactive ? - ButtonColor_[InactiveButton] : - bs == Hovered ? - ButtonColor_[HelpButton].light(120) : - bs == Pressed ? - ButtonColor_[HelpButton].dark(120) : - ButtonColor_[HelpButton] ); - /*brushedMode ? blend( tmpResult2, tmpDeco, tmpResult ) : */blend( tmpResult2, tmpDeco, tmpResult ); - ButtonPixmap_[style][ active ][ HelpButton ][ bs ][small] = TQPixmap( tmpResult ); - } - - tmpDeco = *DecoImage( &tbar, 0, ( tbar.height() - BUTTONSIZE ) / 2, MENUBUTTONWIDTH, BUTTONSIZE ); - - // MenuButton - buttonImage = uic_findImage( "button_panther_menu"); - for (int bs = ButtonInactive; bs < ButtonStateAmount; bs++){ - tmpResult2 = *tintGlossy( buttonImage, bs < Hovered ? - ButtonColor_[InactiveButton] : - bs == Pressed ? - ButtonColor_[MenuButton].dark(120) : - ButtonColor_[MenuButton] ); - /*brushedMode ? blend( tmpResult2, tmpDeco, tmpResult ) : */blend( tmpResult2, tmpDeco, tmpResult ); - ButtonPixmap_[style][ active ][ MenuButton ][ bs ][small] = TQPixmap( tmpResult ); - } - } - } - } - } -} - -////////////////////////////////////////////////////////////////////////////// -// borderSizes() -// ------------- -// Return list of valid border sizes - -TQValueList<BaghiraFactory::BorderSize> BaghiraFactory::borderSizes() const { - return TQValueList<BorderSize>() << BorderTiny << BorderNormal - << BorderLarge << BorderVeryLarge - << BorderHuge << BorderVeryHuge; -} - -////////////////////////////////////////////////////////////////////////////// -// BaghiraButton Class // -////////////////////////////////////////////////////////////////////////////// - -////////////////////////////////////////////////////////////////////////////// -// BaghiraButton() -// -------------- -// Constructor - -BaghiraButton::BaghiraButton( BaghiraClient *parent, const char *name, const TQString& tip, bool small, ButtonType type, int style ) -: TQButton( parent->widget(), name ), client_( parent ), type_( type ), deco_( 0 ), icon_(), small_( small ), lastmouse_( 0 ), mouseover_( false ), _blocked(false) { - setBackgroundMode( NoBackground ); - setCursor( arrowCursor ); - TQToolTip::add( this, tip ); - down_ = false; - mouseover_ = false; - mask = NULL; - maskDown = NULL; - - setFixedSize( type == Baghira::MenuButton ? MENUBUTTONWIDTH : BUTTONSIZE, BUTTONSIZE ); - for ( int bs = Baghira::ButtonInactive; bs <= Baghira::Pressed; bs++ ) { - pixmap[ Baghira::WindowInactive ][ ( Baghira::ButtonState ) bs ] = - &BaghiraFactory::ButtonPixmap( Baghira::WindowInactive, type, - ( Baghira::ButtonState ) bs, style, small ); - pixmap[ Baghira::WindowActive ][ ( Baghira::ButtonState ) bs ] = - &BaghiraFactory::ButtonPixmap( Baghira::WindowActive, type, - ( Baghira::ButtonState ) bs, style, small ); - } -} - -BaghiraButton::~BaghiraButton() -{ - if ( deco_ ) - delete deco_; -} - - -////////////////////////////////////////////////////////////////////////////// -// sizeHint() -// ---------- -// Return size hint - -TQSize BaghiraButton::sizeHint() const { - return TQSize( BUTTONSIZE, BUTTONSIZE ); -} - -////////////////////////////////////////////////////////////////////////////// -// enterEvent() -// ------------ -// Mouse has entered the button - -void BaghiraButton::enterEvent( TQEvent *e ) { -#if 0 - if (type_ == CloseButton) - { - _blocked = true; - TQTimer::singleShot(250,this,SLOT(delayedEnterEvent())); - TQButton::enterEvent( e ); - return; - } -#endif - mouseover_ = true; - repaint( false ); - TQButton::enterEvent( e ); -} - -void BaghiraButton::delayedEnterEvent() -{ - if (hasMouse()) - { - _blocked = false; - mouseover_ = true; - repaint( false ); - } -} - -////////////////////////////////////////////////////////////////////////////// -// leaveEvent() -// ------------ -// Mouse has left the button - -void BaghiraButton::leaveEvent( TQEvent *e ) -{ - mouseover_ = false; - if ( type_ == Baghira::MenuButton ) - down_ = false; - repaint( false ); - TQButton::leaveEvent( e ); -} - -////////////////////////////////////////////////////////////////////////////// -// mousePressEvent() -// ----------------- -// Button has been pressed - -void BaghiraButton::mousePressEvent( TQMouseEvent* e ) -{ - if (_blocked && !(e->state() & TQt::ControlButton)) - return; - lastmouse_ = e->button(); - - //update mask - if (maskDown) - { - clearMask(); - setMask(*maskDown); - } - // translate and pass on mouse event - int button = LeftButton; - if ( ( type_ != MaxButton ) && ( e->button() != LeftButton ) ) - { - button = NoButton; // middle & right buttons inappropriate - } - down_ = true; - TQMouseEvent me( e->type(), e->pos(), e->globalPos(), button, e->state() ); - repaint( false ); - TQButton::mousePressEvent( &me ); -} - -// void BaghiraButton::setOn(bool on) -// { -// TQButton::setOn(on); -// } - -////////////////////////////////////////////////////////////////////////////// -// mouseReleaseEvent() -// ----------------- -// Button has been released - -void BaghiraButton::mouseReleaseEvent( TQMouseEvent* e ) { - lastmouse_ = e->button(); - - if (mask){ - clearMask(); - setMask(*mask); - } - // translate and pass on mouse event - int button = LeftButton; - if ( ( type_ != MaxButton ) && ( e->button() != LeftButton ) ) { - button = NoButton; // middle & right buttons inappropriate - } - down_ = false; - TQMouseEvent me( e->type(), e->pos(), e->globalPos(), button, e->state() ); - repaint( false ); - TQButton::mouseReleaseEvent( &me ); -} - -inline ButtonState BaghiraButton::state() { - if ( down_ || isDown() ) - return Pressed; - else if ( mouseover_ ) - return Hovered; - else if ( client_->isActive() ) - return ButtonActive; - else - return ButtonInactive; -} - -////////////////////////////////////////////////////////////////////////////// -// drawButton() -// ------------ -// Draw the button - -void BaghiraButton::drawButton( TQPainter *painter ) { - if ( !BaghiraFactory::initialized() ) - return ; - - bool active = client_->isActive(); - - if ( type_ == Baghira::StickyButton && client_->isOnAllDesktops() ) - painter->drawPixmap( 0, 0, BaghiraFactory::ButtonPixmap( ( Baghira::WindowState ) active, type_, state() == Pressed ? Pressed : Hovered, client_->currentStyle, client_->isTool() )); - else - painter->drawPixmap( 0, 0, BaghiraFactory::ButtonPixmap( ( Baghira::WindowState ) active, type_, state() , client_->currentStyle, client_->isTool() )); - - if (type_ == Baghira::AboveBelowButton) - { - if (client_->keepAbove()) - { - painter->drawPixmap((width()-8)/2,height()/2-4,BaghiraFactory::arrowUp); - } - else if (client_->keepBelow()) - { - painter->drawPixmap((width()-8)/2,height()/2,BaghiraFactory::arrowDown); - } - } -} - -void BaghiraButton::setMasks(TQBitmap *bitmask, TQBitmap *bitmaskDown){ - clearMask(); - mask = bitmask; - maskDown = bitmaskDown; - if (mask) setMask(*mask); -} -////////////////////////////////////////////////////////////////////////////// -// BaghiraClient Class // -////////////////////////////////////////////////////////////////////////////// - -////////////////////////////////////////////////////////////////////////////// -// BaghiraClient() -// ------------- -// Constructor - -BaghiraClient::BaghiraClient( KDecorationBridge *b, KDecorationFactory *f ) - : KDecoration( b, f ) -{ - ; -} - -BaghiraClient::~BaghiraClient() -{ - if (noDeco_) - return; - BaghiraFactory::deMaximizer().setClient(NULL); - for ( int n = 0; n < ButtonTypeAmount; n++ ) - { - if ( button[ n ] ) - delete button[ n ]; - } -} - -////////////////////////////////////////////////////////////////////////////// -// init() -// ------ -// Real initialization - -void BaghiraClient::init() -{ - if (BaghiraFactory::noModalDeco() && isModal() && !isMinimizable() && !isResizable()) - { - noDeco_ = true; - createMainWidget( WResizeNoErase | WRepaintNoErase ); - widget() ->setBackgroundMode( NoBackground ); - return; - } - noDeco_ = false; -#if KDE_IS_VERSION(3,3,91) - //first try if there's an X setting - unsigned char *data = 0; - Atom actual; - int format, result; - unsigned long n, left; - currentStyle = BaghiraFactory::defaultMode(); - result = XGetWindowProperty(tqt_xdisplay(), windowId(), baghira_deco_design, 0L, 1L, False, XA_CARDINAL, &actual, &format, &n, &left, &data); - if (result == Success && data != None) // found set design - { - memcpy (¤tStyle, data, sizeof (unsigned int)); - currentStyle = currentStyle>4?4:currentStyle; - } - else // try if there's a definition file - { - XClassHint classHint; - FILE *file = NULL; - if ( XGetClassHint( tqt_xdisplay(), windowId(), &classHint ) ) - { - TQString tmpString; - // overwrite file from bab starter? - don't worry, if there's been one and deleted by the style we've got the X setting (much better as it will take care of all subwindows) - tmpString = TQDir::homeDirPath() + "/.baghira/.bab/" + TQString( classHint.res_class ).lower(); - if( (file = fopen(tmpString.latin1(), "r")) != NULL ) - { - fscanf(file,"%d\n%d\n", &format, ¤tStyle); - fclose(file); - remove(tmpString.latin1()); // this is only temporary - } - else - { - tmpString = TQDir::homeDirPath() + "/.baghira/" + TQString( classHint.res_class ).lower(); - if( (file = fopen(tmpString.latin1(), "r")) != NULL ) - { - fscanf(file,"%d\n%d\n", &format, ¤tStyle); - fclose(file); - } - } - XFree( classHint.res_name ); - XFree( classHint.res_class ); - } - if (file == NULL) - { - TQString tmpString = TQDir::homeDirPath() + "/.baghira/.bab/.deco"; - if( (file = fopen(tmpString.latin1(), "r")) != NULL ) - { - fscanf(file,"%d\n%d\n", &format, ¤tStyle); - fclose(file); - } - } - } - if (currentStyle > 4) - currentStyle = BaghiraFactory::defaultMode(); -#else - TQSettings config; - config.beginGroup("/baghira/Style"); - if (config.readBoolEntry( "Design_Default", 1 ) == 2) - { - currentStyle = 2; - config.endGroup(); - } - else - { - config.endGroup(); - config.beginGroup("/baghira/Deco"); - int tmp = config.readNumEntry( "defaultMode", 1 ); - currentStyle = (tmp > -1 && tmp < 5) ? tmp : 1; - config.endGroup(); - } -#endif - createMainWidget( WResizeNoErase | WRepaintNoErase ); - widget() ->installEventFilter( this ); - widget() ->setBackgroundMode( NoBackground ); - - if ( isTool() ) // tool windows have tiny titlebars - titleheight_ = TITLESIZESMALL; - else - titleheight_ = TITLESIZE; - - // setup layout - TQVBoxLayout *mainlayout = new TQVBoxLayout( widget() ); - TQHBoxLayout *titlelayout = new TQHBoxLayout(); - windowlayout = new TQHBoxLayout(); - - titlebar_ = new TQSpacerItem( 1, titleheight_, TQSizePolicy::Expanding, TQSizePolicy::Fixed ); - mainlayout->setResizeMode( TQLayout::FreeResize ); - mainlayout->addLayout( titlelayout ); - mainlayout->addLayout( windowlayout ); - - windowlayout->addSpacing( BaghiraFactory::borderSize(currentStyle) ); - if ( isPreview() ) - windowlayout->addWidget( new TQLabel( i18n( "<b><center>Baghira preview</center></b>" ), widget() ) ); - else - windowlayout->addItem( new TQSpacerItem( 0, 18 ) ); - - windowlayout->addSpacing( BaghiraFactory::borderSize(currentStyle) ); - - leftClose = false; - rightClose = false; - performEasyClose = false; - - // setup titlebar - for ( int n = 0; n < ButtonTypeAmount; n++ ) - button[ n ] = 0; - plusminus = 1; - addButtons( titlelayout, options() ->titleButtonsLeft() ); - titlelayout->addItem( titlebar_ ); - plusminus = -1; - isFaded = false; - addButtons( titlelayout, options() ->titleButtonsRight() ); -#if KDE_IS_VERSION(3,3,91) - grip = 0; -#endif - - if (BaghiraFactory::effect(currentStyle, true) >= Baghira::Brushed || BaghiraFactory::effect(currentStyle, false) >= Baghira::Brushed) - HandlePix = TQPixmap(BaghiraFactory::pix(currentStyle, TitleBar, isActive(), false )); - else if ( BaghiraFactory::bgStipple() ) - { - HandlePix = TQPixmap( 32, 32); - TQPainter painter; - TQColor c = widget()->colorGroup().background(); - HandlePix.fill(c); - painter.begin( &HandlePix ); - painter.setPen( c.dark( 100 + (BaghiraFactory::contrast()/2) ) ); - - for ( int i = 1; i < 32; i += 4 ) - { - painter.drawLine( 0, i, 31, i ); - painter.drawLine( 0, i+2, 31, i+2 ); - } - - painter.setPen( c.dark( 100 + BaghiraFactory::contrast() ) ); - - for ( int i = 2; i < 31; i += 4 ) - painter.drawLine( 0, i, 31, i ); - - painter.end(); - } -} - -TQString BaghiraClient::caption() const -{ - if (!BaghiraFactory::delAppname()) - return KDecoration::caption(); - if (caption_.isNull()) - // generate first - { - const_cast<BaghiraClient*>( this )->caption_ = KDecoration::caption(); - int pos; - if (caption_.startsWith( "tvtime" )) - { - pos = caption_.find(": "); - if (pos > -1) - const_cast<BaghiraClient*>( this )->caption_ = const_cast<BaghiraClient*>( this )->caption_.remove(0, pos+1); - } - else - { - pos = caption_.findRev(" - "); - if (pos > -1) - const_cast<BaghiraClient*>( this )->caption_ = caption_.left(pos); - } - } - return caption_; -} - -////////////////////////////////////////////////////////////////////////////// -// addButtons() -// ------------ -// Add buttons to title layout - -void BaghiraClient::addButtons( TQBoxLayout *layout, const TQString& s ) -{ - if (noDeco_) - return; - // const unsigned char *bitmap; - TQString tip; - TQBitmap *m = NULL; - TQBitmap *mn = NULL; - TQBitmap *mD = NULL; - TQBitmap *mnD = NULL; - TQBitmap *mH = NULL; - if (BaghiraFactory::effect(currentStyle, true) == Baghira::Brushed){ - m = BaghiraFactory::buttonStyle(currentStyle) == Baghira::Panther ? - &BaghiraFactory::pantherMask : - BaghiraFactory::buttonStyle(currentStyle) == Baghira::Jaguar ? - &BaghiraFactory::jaguarMask : - BaghiraFactory::buttonStyle(currentStyle) == Baghira::Milk ? - &BaghiraFactory::milkMask : - NULL; - mn = BaghiraFactory::buttonStyle(currentStyle) == Baghira::Panther ? - &BaghiraFactory::pantherMenuMask : - BaghiraFactory::buttonStyle(currentStyle) == Baghira::Jaguar ? - &BaghiraFactory::jaguarMenuMask : - BaghiraFactory::buttonStyle(currentStyle) == Baghira::Milk ? - &BaghiraFactory::milkMenuMask : - NULL; - mD = BaghiraFactory::buttonStyle(currentStyle) == Baghira::Panther ? - NULL : - BaghiraFactory::buttonStyle(currentStyle) == Baghira::Jaguar ? - &BaghiraFactory::jaguarDownMask : - BaghiraFactory::buttonStyle(currentStyle) == Baghira::Milk ? - &BaghiraFactory::milkDownMask : - NULL; - mnD = BaghiraFactory::buttonStyle(currentStyle) == Baghira::Panther ? - NULL : - BaghiraFactory::buttonStyle(currentStyle) == Baghira::Jaguar ? - &BaghiraFactory::jaguarMenuDownMask : - BaghiraFactory::buttonStyle(currentStyle) == Baghira::Milk ? - &BaghiraFactory::milkMenuDownMask : - NULL; - mH = &BaghiraFactory::helpMask; - } - if ( s.length() > 0 ) { -// tqWarning("%s",s.ascii()); - layout->addSpacing( MARGIN ); - excursion = excursion + plusminus * MARGIN; - bool buttonAdded; - for ( unsigned n = 0; n < s.length(); n++ ) { - buttonAdded = false; - switch ( s[ n ].latin1() ) { - case 'M': // Menu button - if ( !button[ MenuButton ] ) { - button[ MenuButton ] = new BaghiraButton( this, "menu", - i18n( "Menu" ), isTool(), MenuButton ); - connect( button[ MenuButton ], SIGNAL( pressed() ), this, - SLOT( menuButtonPressed() ) ); - layout->addWidget( button[ MenuButton ] ); - buttonAdded = true; - excursion = excursion + plusminus * MENUBUTTONWIDTH; - if (BaghiraFactory::effect(currentStyle, true) == Baghira::Brushed) button[ MenuButton ]->setMasks(mn, mnD); - } - break; - - case 'S': // Sticky button - if ( !button[ StickyButton ] ) { - if ( isOnAllDesktops() ) { - tip = i18n( "Un-Sticky" ); - } else { - tip = i18n( "Sticky" ); - } - button[ StickyButton ] = new BaghiraButton( this, "sticky", - tip, isTool(), StickyButton ); - connect( button[ StickyButton ], SIGNAL( clicked() ), this, - SLOT( toggleOnAllDesktops() ) ); - layout->addWidget( button[ StickyButton ] ); - buttonAdded = true; - excursion = excursion + plusminus * BUTTONSIZE; - if (BaghiraFactory::effect(currentStyle, true) == Baghira::Brushed) button[ StickyButton ]->setMasks(m, mD); - } - break; - - case 'H': // Help button - if ( ( !button[ HelpButton ] ) && providesContextHelp() ) { - button[ HelpButton ] = new BaghiraButton( this, "help", - i18n( "Help" ), isTool(), HelpButton ); - connect( button[ HelpButton ], SIGNAL( clicked() ), this, - SLOT( showContextHelp() ) ); - layout->addWidget( button[ HelpButton ] ); - buttonAdded = true; - excursion = excursion + plusminus * BUTTONSIZE; - if (BaghiraFactory::effect(currentStyle, true) == Baghira::Brushed) button[ HelpButton ]->setMasks(mH, NULL); - } - break; - - case 'I': // Minimize button - if ( ( !button[ MinButton ] ) && isMinimizable() ) { - button[ MinButton ] = new BaghiraButton( this, "iconify", - i18n( "Minimize" ), isTool(), MinButton ); - connect( button[ MinButton ], SIGNAL( clicked() ), this, - SLOT( minimize() ) ); - layout->addWidget( button[ MinButton ] ); - buttonAdded = true; - excursion = excursion + plusminus * BUTTONSIZE; - if (BaghiraFactory::effect(currentStyle, true) == Baghira::Brushed) button[ MinButton ]->setMasks(m, mD); - } - break; - - case 'A': // Maximize button - if ( ( !button[ MaxButton ] ) && isMaximizable() ) { - if ( maximizeMode() == MaximizeFull ) { - tip = i18n( "Restore" ); - } else { - tip = i18n( "Maximize" ); - } - button[ MaxButton ] = new BaghiraButton( this, "maximize", - tip, isTool(), MaxButton ); - connect( button[ MaxButton ], SIGNAL( clicked() ), this, - SLOT( maxButtonPressed() ) ); - layout->addWidget( button[ MaxButton ] ); - buttonAdded = true; - excursion = excursion + plusminus * BUTTONSIZE; - if (BaghiraFactory::effect(currentStyle, true) == Baghira::Brushed) button[ MaxButton ]->setMasks(m, mD); - } - break; - - case 'X': // Close button - if ( ( !button[ CloseButton ] ) && isCloseable() ) { - button[ CloseButton ] = new BaghiraButton( this, "close", - i18n( "Close" ), isTool(), CloseButton ); - connect( button[ CloseButton ], SIGNAL( clicked() ), this, - SLOT( closeWindow() ) ); - layout->addWidget( button[ CloseButton ] ); - buttonAdded = true; - excursion = excursion + plusminus * BUTTONSIZE; - if (plusminus == 1 && n == 0) // left Button - leftClose = true; - if (plusminus == -1 && n == s.length() - 1) // right Button - rightClose = true; - if (BaghiraFactory::effect(currentStyle, true) == Baghira::Brushed) button[ CloseButton ]->setMasks(m, mD); - } - break; - - case 'F': // Above button - case 'B': // Below button - if ((!button[AboveBelowButton])) - { - button[AboveBelowButton] = new BaghiraButton(this, "above", i18n("Keep Above/Below Others"), isTool(), AboveBelowButton); - button[AboveBelowButton]->setDown( keepAbove() || keepBelow() ); - connect(button[AboveBelowButton], SIGNAL(clicked()), this, SLOT(aboveBelowButtonPressed())); - layout->addWidget(button[AboveBelowButton]); - buttonAdded = true; - excursion = excursion + plusminus * BUTTONSIZE; - if (BaghiraFactory::effect(currentStyle, true) == Baghira::Brushed) button[ AboveBelowButton ]->setMasks(m, mD); - } - break; - case 'L': // Shade button - if ((!button[ShadeButton] && isShadeable())) { - button[ShadeButton] = new BaghiraButton(this, "shade", isSetShade() ? tip = i18n("Unshade") : tip = i18n("Shade"), isTool(), ShadeButton); - button[ShadeButton]->setDown( isShade() ); - connect(button[ShadeButton], SIGNAL(clicked()), this, SLOT(shadeButtonPressed())); - layout->addWidget(button[ShadeButton]); - buttonAdded = true; - excursion = excursion + plusminus * BUTTONSIZE; - if (BaghiraFactory::effect(currentStyle, true) == Baghira::Brushed) button[ ShadeButton ]->setMasks(m, mD); - } - break; -// case 'R': // Shade button -// if ((!button[ShadeButton] && isShadeable())) { -// button[ShadeButton] = new BaghiraButton(this, "shade", isSetShade() ? tip = i18n("Unshade") : tip = i18n("Shade"), isTool(), ShadeButton); -// button[ShadeButton]->setDown( isShade() ); -// connect(button[ShadeButton], SIGNAL(clicked()), this, SLOT(shadeButtonPressed())); -// layout->addWidget(button[ShadeButton]); -// buttonAdded = true; -// excursion = excursion + plusminus * BUTTONSIZE; -// if (BaghiraFactory::effect(currentStyle, true) == Baghira::Brushed) button[ ShadeButton ]->setMasks(m, mD); -// } -// break; - - case '_': // Spacer item - layout->addSpacing( MARGIN ); - excursion = excursion + plusminus * MARGIN; - } - if (BaghiraFactory::addAutoSpacing() && buttonAdded){ - layout->addSpacing( MARGIN ); - excursion = excursion + plusminus * MARGIN; - } - } - } -} - -////////////////////////////////////////////////////////////////////////////// -// eventFilter() -// ------------- -// Event filter - -bool BaghiraClient::eventFilter( TQObject *obj, TQEvent *e ) -{ - if ( obj != widget() ) - return false; - - switch ( e->type() ) { - case TQEvent::MouseButtonDblClick: { - mouseDoubleClickEvent( static_cast<TQMouseEvent *>( e ) ); - return true; - } - case TQEvent::MouseButtonPress: { - if (titlebar_->geometry().contains( static_cast<TQMouseEvent *>(e)->pos() ) && static_cast<TQMouseEvent *>(e)->state() == TQt::ControlButton){ - currentStyle < 4 ? currentStyle++ : currentStyle = 0; -#if KDE_IS_VERSION(3,3,91) - unsigned long wmDesign = currentStyle; - XChangeProperty(tqt_xdisplay(), windowId(), baghira_deco_design, XA_CARDINAL, 32, PropModeReplace, (unsigned char *) &wmDesign, 1L); -#endif - widget()->repaint(); - TQBitmap *m = NULL; - TQBitmap *mn = NULL; - TQBitmap *mD = NULL; - TQBitmap *mnD = NULL; - TQBitmap *mH = NULL; - if (BaghiraFactory::effect(currentStyle, true) == Baghira::Brushed){ - m = BaghiraFactory::buttonStyle(currentStyle) == Baghira::Panther ? - &BaghiraFactory::pantherMask : - BaghiraFactory::buttonStyle(currentStyle) == Baghira::Jaguar ? - &BaghiraFactory::jaguarMask : - BaghiraFactory::buttonStyle(currentStyle) == Baghira::Milk ? - &BaghiraFactory::milkMask : - NULL; - mn = BaghiraFactory::buttonStyle(currentStyle) == Baghira::Panther ? - &BaghiraFactory::pantherMenuMask : - BaghiraFactory::buttonStyle(currentStyle) == Baghira::Jaguar ? - &BaghiraFactory::jaguarMenuMask : - BaghiraFactory::buttonStyle(currentStyle) == Baghira::Milk ? - &BaghiraFactory::milkMenuMask : - NULL; - mD = BaghiraFactory::buttonStyle(currentStyle) == Baghira::Panther ? - NULL : - BaghiraFactory::buttonStyle(currentStyle) == Baghira::Jaguar ? - &BaghiraFactory::jaguarDownMask : - BaghiraFactory::buttonStyle(currentStyle) == Baghira::Milk ? - &BaghiraFactory::milkDownMask : - NULL; - mnD = BaghiraFactory::buttonStyle(currentStyle) == Baghira::Panther ? - NULL : - BaghiraFactory::buttonStyle(currentStyle) == Baghira::Jaguar ? - &BaghiraFactory::jaguarMenuDownMask : - BaghiraFactory::buttonStyle(currentStyle) == Baghira::Milk ? - &BaghiraFactory::milkMenuDownMask : - NULL; - mH = &BaghiraFactory::helpMask; - } - for (int i = 0; i < ButtonTypeAmount; i++){ - if (button[i]){ - button[i]->setMasks(i < Baghira::MenuButton ? m : - i == Baghira::MenuButton ? mn : - mH, i < Baghira::MenuButton ? mD : - i == Baghira::MenuButton ? mnD : - NULL); - button[i]->repaint(); - } - } -#if KDE_IS_VERSION(3,3,91) - if (grip) - grip->updateLook(TRUE); -#endif - doShape(); - return true; - } - if (BaghiraFactory::allowEasyClosing()){ - if (maximizeMode() == MaximizeFull && isActive() && (leftClose && static_cast<TQMouseEvent *>( e )->x() == 0 && static_cast<TQMouseEvent *>( e )->y() == 0) || (rightClose && static_cast<TQMouseEvent *>( e )->x() == ((TQWidget *)obj)->width() -1 && static_cast<TQMouseEvent *>( e )->y() == 0)) - performEasyClose = true; - else processMousePressEvent( static_cast<TQMouseEvent *>( e ) ); - } - else processMousePressEvent( static_cast<TQMouseEvent *>( e ) ); - return true; - } - case TQEvent::MouseButtonRelease:{ - if (performEasyClose && maximizeMode() == MaximizeFull && (leftClose && static_cast<TQMouseEvent *>( e )->x() == 0 && static_cast<TQMouseEvent *>( e )->y() == 0) || (rightClose && static_cast<TQMouseEvent *>( e )->x() == ((TQWidget *)obj)->width() -1 && static_cast<TQMouseEvent *>( e )->y() == 0)){ - closeWindow(); - performEasyClose = false; - return true; - } - return FALSE; - } - case TQEvent::Paint: { - paintEvent( static_cast<TQPaintEvent *>( e ) ); - return true; - } - case TQEvent::Resize: { - resizeEvent( static_cast<TQResizeEvent *>( e ) ); - return true; - } - case TQEvent::Show: { -#if KDE_IS_VERSION(3,3,91) - if (!grip && BaghiraFactory::resizeGrip() && isResizable()) grip = new ResizeHandle(this); -#endif - showEvent( static_cast<TQShowEvent *>( e ) ); - return true; - } - case TQEvent::Hide: { - emit hide(); - } - case TQEvent::Wheel: { - wheelEvent(static_cast<TQWheelEvent *>( e )); - return true; - } - default: { - return false; - } - } - - return false; -} - -////////////////////////////////////////////////////////////////////////////// -// mouseCoubleClickEvent() -// ----------------------- -// Doubleclick on title - -void BaghiraClient::mouseDoubleClickEvent( TQMouseEvent *e ) -{ - if ( titlebar_->geometry().contains( e->pos() ) ) - titlebarDblClickOperation(); -} - -void BaghiraClient::wheelEvent( TQWheelEvent *e ) -{ - if (titlebar_->geometry().contains( e->pos() ) && e->state() == TQt::ControlButton){ - // surf through the desktops :) - int target, cD; - if (e->delta() > 0){ - (cD = KWin::currentDesktop()) == KWin::numberOfDesktops() ? target = 1 : target = cD + 1; - } - else{ - (cD = KWin::currentDesktop()) == 1 ? target = KWin::numberOfDesktops() : target = cD - 1; - } - setDesktop (target); - KWin::setCurrentDesktop (target); - } -} - -////////////////////////////////////////////////////////////////////////////// -// paintEvent() -// ------------ -// Repaint the window - -void BaghiraClient::paintEvent( TQPaintEvent* ) -{ - if ( !BaghiraFactory::initialized() || noDeco_) - return ; - - TQPainter painter( widget() ); - TQColorGroup group; - - TQRect title( 0, 0, width(), titlebar_->geometry().height() ); - TQRect left( 0, title.height(), BaghiraFactory::borderSize(currentStyle), height() - - title.height() ); - TQRect right( width() - BaghiraFactory::borderSize(currentStyle), title.height(), - BaghiraFactory::borderSize(currentStyle), height() - title.height() ); - TQRect handle( 0, height() - BaghiraFactory::borderSize(currentStyle), - width(), BaghiraFactory::borderSize(currentStyle) ); - - int x, y, x2, y2, h, w; - - title.rect( &x, &y, &w, &h ); - - // draw title bar - if (BaghiraFactory::effect(currentStyle, isActive()) == Baghira::Brushed) - { - if (w > 1024) - { - int w1 = (w - 1024)/2; - int w2 = w - 1024 - w1; - painter.drawTiledPixmap( 0,0, w1, h, BaghiraFactory::pix(currentStyle, TitleBar, isActive(), isTool() ),256-w1,0 ); - painter.drawPixmap( w1, 0/*, 1024, h*/, BaghiraFactory::pix(currentStyle, TitleCenter, isActive(), isTool() ) ); - painter.drawTiledPixmap( w1 + 1024, 0, w2, h, BaghiraFactory::pix(currentStyle, TitleBar, isActive(), isTool() ) ); - } - else - painter.drawTiledPixmap( 0, 0, w, h, BaghiraFactory::pix(currentStyle, TitleCenter, isActive(), isTool() ), (1024-w)/2, 0 ); - } - else - painter.drawTiledPixmap( title, BaghiraFactory::pix(currentStyle, TitleBar, isActive(), isTool() ) ); - - x2 = title.right(); - y2 = title.bottom(); - int shapeW = w; - - const TQColor *ttbar = &(BaghiraFactory::color(currentStyle, Baghira::ColorTitleBar, isActive())); - - int tmp3Dimpact_ = 100 + BaghiraFactory::_3DImpact(currentStyle); - - painter.setPen( ttbar->light(tmp3Dimpact_)); - painter.drawLine( x+1, y+1, x2-1, y+1 ); - - if (!(BaghiraFactory::allowEasyClosing() && maximizeMode() == MaximizeFull)) - { - // draw around the corners ;-) - if (BaghiraFactory::shapeUL(currentStyle)) - { - // Draw edge of top-left corner inside the area removed by the mask. - painter.drawPoint( 3, 2 ); - painter.drawPoint( 4, 2 ); - painter.drawPoint( 2, 3 ); - painter.drawPoint( 2, 4 ); - } - if (BaghiraFactory::shapeUR(currentStyle)) - { - // Draw edge of top-right corner inside the area removed by the mask. - painter.drawPoint( shapeW - 5, 2 ); - painter.drawPoint( shapeW - 4, 2 ); - painter.drawPoint( shapeW - 3, 3 ); - painter.drawPoint( shapeW - 3, 4 ); - } - } - - - painter.setPen( ttbar->dark(tmp3Dimpact_) ); - if (BaghiraFactory::drawComicFrame() && !(BaghiraFactory::allowEasyClosing() && maximizeMode() == MaximizeFull)) - { - painter.drawLine(x,y,x, y2); - painter.drawLine(x2,y,x2, y2); - } - painter.drawLine( x, y, x2, y ); - - if (!(BaghiraFactory::allowEasyClosing() && maximizeMode() == MaximizeFull)) - { - // draw around the corners ;-) - if (BaghiraFactory::shapeUL(currentStyle)) - { - // Draw edge of top-left corner inside the area removed by the mask. - painter.drawPoint( 3, 1 ); - painter.drawPoint( 4, 1 ); - painter.drawPoint( 2, 2 ); - painter.drawPoint( 1, 3 ); - painter.drawPoint( 1, 4 ); - } - if (BaghiraFactory::shapeUR(currentStyle)) - { - // Draw edge of top-right corner inside the area removed by the mask. - painter.drawPoint( shapeW - 5, 1 ); - painter.drawPoint( shapeW - 4, 1 ); - painter.drawPoint( shapeW - 3, 2 ); - painter.drawPoint( shapeW - 2, 3 ); - painter.drawPoint( shapeW - 2, 4 ); - } - } - - const TQColor *ttblend = &(BaghiraFactory::color(currentStyle, Baghira::ColorTitleBlend, isActive())); - - if (BaghiraFactory::LineImpact(currentStyle) > 0) - { - painter.setPen( ttblend->dark(100 + BaghiraFactory::LineImpact(currentStyle)) ); - painter.drawLine( x, y2, x2, y2 ); - } - - // draw title text - titlebar_->geometry().rect( &x, &y, &w, &h ); - int iconLeft; - int iconWidth; - if (BaghiraFactory::showTitle()) - { - painter.setFont( options() ->font( isActive(), isTool() ) ); - painter.setPen( options()->color( ColorFont, isActive() ) ); - BaghiraFactory::drawIcon(currentStyle) ? iconWidth = 16 : iconWidth = 0; - if (BaghiraFactory::drawIcon(currentStyle) || BaghiraFactory::effect(currentStyle, isActive()) == Baghira::Nostalgia) - { - TQRect textBound = painter.boundingRect ( x + 2 * MARGIN + iconWidth, y, w - MARGIN * 2 - iconWidth, h, BaghiraFactory::titleAlign() | AlignVCenter, caption() ); - iconLeft = textBound.x() - MARGIN - iconWidth; - if ( iconLeft < x + MARGIN ) iconLeft = x + MARGIN; - - if (BaghiraFactory::drawIcon(currentStyle)) - { - ICONX = iconLeft; - ICONY = y + ( titleheight_ - 16 ) / 2; - painter.drawPixmap( ICONX, ICONY, icon().pixmap( TQIconSet::Small, TQIconSet::Normal ) ); - } - - if (BaghiraFactory::effect(currentStyle, isActive()) == Baghira::Nostalgia) - { - painter.fillRect( iconLeft - 5, y + 1, textBound.right() - iconLeft + 10, h - 2, BaghiraFactory::color(currentStyle, Baghira::ColorTitleBar, isActive() ) ); - painter.fillRect( title.x(), y + 1, x - title.x()+5, h - 2, *ttbar ); - painter.fillRect( x+w-5, y + 1, title.right() - w + 5, h - 2, *ttbar ); - } - } - painter.drawText( x + 2 * MARGIN + iconWidth, y, w - MARGIN * 2 - iconWidth, h, BaghiraFactory::titleAlign() | AlignVCenter, caption() ); - } - else if (BaghiraFactory::drawIcon(currentStyle)) - { - iconLeft = (width()-16)/2; - if ( iconLeft < x + MARGIN ) - iconLeft = x + MARGIN; - ICONX = iconLeft; - ICONY = y + ( titleheight_ - 16 ) / 2; - painter.drawPixmap( ICONX, ICONY, icon().pixmap( TQIconSet::Small, TQIconSet::Normal ) ); - } - - // draw outer frame - if ( !isShade() ) - { - TQColor background = widget() ->colorGroup().background(); - - // left side - left.rect( &x, &y, &w, &h ); - if (w > 0){ - if (BaghiraFactory::effect(currentStyle,isActive()) == Baghira::Brushed) - { - width() > 1024 ? - painter.drawTiledPixmap( x, y, w, h, BaghiraFactory::pix(currentStyle, TitleBar, isActive(), isTool() ) ) : - painter.drawTiledPixmap( x, y, w, h, BaghiraFactory::pix(currentStyle, TitleCenter, isActive(), isTool() ), (1024-width())/2 ); - } - else - { - BaghiraFactory::bgStipple() ? - painter.drawTiledPixmap( x, y, w, h, HandlePix ) : - painter.fillRect( x, y, w, h, background ); - } - } - - // right side - right.rect( &x, &y, &w, &h ); - if (w > 0){ - if (BaghiraFactory::effect(currentStyle,isActive()) == Baghira::Brushed) - { - width() > 1024 ? - painter.drawTiledPixmap( x, y, w, h, BaghiraFactory::pix(currentStyle, TitleBar, isActive(), isTool() ) ) : - painter.drawTiledPixmap( x, y, w, h, BaghiraFactory::pix(currentStyle, TitleCenter, isActive(), isTool() ), (1024-width())/2+width()-w ); - } - else - { - BaghiraFactory::bgStipple() ? - painter.drawTiledPixmap( x, y, w, h, HandlePix ) : - painter.fillRect( x, y, w, h, background ); - } - } - - // draw handle ===================================================== - // bottom bar - // handle middle - handle.rect( &x, &y, &w, &h ); - if (BaghiraFactory::effect(currentStyle,isActive()) == Baghira::Brushed){ - if (w > 1024){ - int w1 = (w - 1024)/2; - int w2 = w - 1024 - w1; - painter.drawTiledPixmap( 0, y, w1, h, BaghiraFactory::pix(currentStyle, TitleBar, isActive(), isTool() ) ); - painter.drawPixmap( w1, y, BaghiraFactory::pix(currentStyle, TitleCenter, isActive(), isTool() ) ); - painter.drawTiledPixmap( w1 + 1024, y, w2, h, BaghiraFactory::pix(currentStyle, TitleBar, isActive(), isTool() ) ); - } - else{ - painter.drawPixmap( x, y, BaghiraFactory::pix(currentStyle, TitleCenter, isActive(), isTool() ), (1024-w)/2, 0, w, h ); - } - - int b = handle.bottom() - 1; -// painter.setPen( ttbar->light(tmp3Dimpact_)); - painter.setPen( ttbar->dark(tmp3Dimpact_*1.1) ); - painter.drawLine( x, b, w-1, b ); - if (maximizeMode() != MaximizeFull) - { - if (BaghiraFactory::shapeLL(currentStyle)){ - // Draw edge of bottom-left corner inside the area removed by the mask. - painter.drawPoint(3, b); - painter.drawPoint(4, b); - painter.drawPoint(2, b-1); - painter.drawPoint(1, b-2); - painter.drawPoint(1, b-3); - painter.drawPoint(0, b-4); - } - if (BaghiraFactory::shapeLR(currentStyle)){ - // Draw edge of bottom-right corner inside the area removed by the mask. - painter.drawPoint(shapeW - 5, b); - painter.drawPoint(shapeW - 4, b); - painter.drawPoint(shapeW - 3, b-1); - painter.drawPoint(shapeW - 2, b-2); - painter.drawPoint(shapeW - 2, b-3); - painter.drawPoint(shapeW - 1, b-4); - } - } - painter.setPen( ttbar->dark(tmp3Dimpact_*1.3) ); - painter.drawLine( x+1, b+1, w-2, b+1 ); - if (maximizeMode() != MaximizeFull) - { - if (BaghiraFactory::shapeLL(currentStyle)){ - // Draw edge of bottom-left corner inside the area removed by the mask. - painter.drawPoint(4, b); - painter.drawPoint(5, b); - painter.drawPoint(3, b-1); - painter.drawPoint(2, b-2); -// painter.drawPoint(2, b-3); - } - if (BaghiraFactory::shapeLR(currentStyle)){ - // Draw edge of bottom-right corner inside the area removed by the mask. - painter.drawPoint(shapeW - 6, b); - painter.drawPoint(shapeW - 5, b); - painter.drawPoint(shapeW - 4, b-1); - painter.drawPoint(shapeW - 3, b-2); -// painter.drawPoint(shapeW - 3, b-3); - } - } - if (BaghiraFactory::drawComicFrame()) - { - painter.drawLine(x,title.y(),x, b); - painter.drawLine(handle.right(),title.y(),x2, b); - } - } - else{ - BaghiraFactory::bgStipple() ? painter.drawTiledPixmap( x, y, w, h, HandlePix ) : - painter.fillRect( x, y, w, h, background ); - - x2 = handle.right(); - y2 = handle.bottom(); - if (BaghiraFactory::drawComicFrame() && maximizeMode() != MaximizeFull){ - painter.setPen(ttblend->dark(tmp3Dimpact_)); - painter.drawLine( handle.x()/*+7*/, y2, x2/*-7*/, y2 ); - painter.drawLine(0,title.bottom(),0, y2); - painter.drawLine(x2,title.bottom(),x2, y2); - } - } - if (BaghiraFactory::drawComicFrame() && maximizeMode() != MaximizeFull){ - int b = handle.bottom() - 1; - if (BaghiraFactory::shapeLL(currentStyle)){ - // Draw edge of bottom-left corner inside the area removed by the mask. - painter.drawPoint(3, b); - painter.drawPoint(4, b); - painter.drawPoint(2, b-1); - painter.drawPoint(1, b-2); - painter.drawPoint(1, b-3); - } - if (BaghiraFactory::shapeLR(currentStyle)){ - // Draw edge of bottom-right corner inside the area removed by the mask. - painter.drawPoint(shapeW - 5, b); - painter.drawPoint(shapeW - 4, b); - painter.drawPoint(shapeW - 3, b-1); - painter.drawPoint(shapeW - 2, b-2); - painter.drawPoint(shapeW - 2, b-3); - } - } - } -} - -////////////////////////////////////////////////////////////////////////////// -// resizeEvent() -// ------------- -// Window is being resized - -void BaghiraClient::resizeEvent( TQResizeEvent* ) -{ - if (noDeco_) - return; - /*if ( widget() ->isShown() ) { - TQRegion region = widget() ->rect(); - region = region.subtract( titlebar_->geometry() ); - widget() ->erase( region ); - }*/ -// widget()->repaint(); - doShape(); -} - -///////////////////////////////////////////////////////////////////////////// -// shape Corners -// =) ==================================================================0 - -void BaghiraClient::doShape() -{ -// return; - TQRegion mask; - - if (!(BaghiraFactory::allowEasyClosing() && maximizeMode() == MaximizeFull)){ - int r = width(); - int b = height() - 1; - mask = TQRegion( 0, 0, r, b+1 ); - - if (BaghiraFactory::shapeUL(currentStyle)){ - // Remove top-left corner. - mask -= TQRegion( 0, 0, 5, 1 ); - mask -= TQRegion( 0, 1, 3, 1 ); - mask -= TQRegion( 0, 2, 2, 1 ); - mask -= TQRegion( 0, 3, 1, 2 ); - } - if (BaghiraFactory::shapeUR(currentStyle)){ - // Remove top-right corner. - mask -= TQRegion( r - 5, 0, 5, 1 ); - mask -= TQRegion( r - 3, 1, 3, 1 ); - mask -= TQRegion( r - 2, 2, 2, 1 ); - mask -= TQRegion( r - 1, 3, 1, 2 ); - } - - if (BaghiraFactory::shapeLL(currentStyle)){ - // Remove bottom-left corner. - mask -= TQRegion(0, b-0, 5, 1); - mask -= TQRegion(0, b-1, 3, 1); - mask -= TQRegion(0, b-2, 2, 1); - mask -= TQRegion(0, b-4, 1, 2); - } - if (BaghiraFactory::shapeLR(currentStyle)){ - // Remove bottom-right corner. - mask -= TQRegion(r - 5, b-0, 5, 1); - mask -= TQRegion(r - 3, b-1, 3, 1); - mask -= TQRegion(r - 2, b-2, 2, 1); - mask -= TQRegion(r - 1, b-4, 1, 2); - } - } - setMask( mask, 1 ); -} - - -////////////////////////////////////////////////////////////////////////////// -// showEvent() -// ----------- -// Window is being shown - -void BaghiraClient::showEvent( TQShowEvent* ) -{ - if (noDeco_) - return; - doShape(); - widget() ->repaint(); -} - -////////////////////////////////////////////////////////////////////////////// -// activeChange() -// -------------- -// window active state has changed - -void BaghiraClient::activeChange() -{ - if (noDeco_) - return; - if (BaghiraFactory::fullSpec() && maximizeMode() == MaximizeFull) - { - if (isActive()) - { - BaghiraFactory::deMaximizer().show(); - BaghiraFactory::deMaximizer().setClient(this); - } - } - else - { - BaghiraFactory::deMaximizer().hide(); - for ( int n = 0; n < ButtonTypeAmount; n++ ) - { - if ( button[ n ] ) - { - button[n]->setAutoMask( BaghiraFactory::effect(currentStyle, isActive()) == Baghira::Brushed); - button[ n ] ->reset(); - } - } - widget() ->repaint( false ); - } -} - -////////////////////////////////////////////////////////////////////////////// -// captionChange() -// --------------- -// The title has changed - -void BaghiraClient::captionChange() -{ - if (noDeco_) - return; - if (BaghiraFactory::showTitle()) - { - if (BaghiraFactory::delAppname()) - { - caption_ = KDecoration::caption(); - int pos; - if (caption_.startsWith( "tvtime" )) - { - pos = caption_.find(": "); - if (pos > -1) - caption_ = caption_.remove(0, pos+1); - } - else - { - pos = caption_.findRev(" - "); - if (pos > -1) - caption_ = caption_.left(pos); - } - } - widget() ->repaint( titlebar_->geometry(), false ); - } -} - -////////////////////////////////////////////////////////////////////////////// -// desktopChange() -// --------------- -// Sticky state has changed - -void BaghiraClient::desktopChange() -{ - if (noDeco_) - return; - bool d = isOnAllDesktops(); - if ( button[ StickyButton ] ) - { - TQToolTip::remove - ( button[ StickyButton ] ); - TQToolTip::add - ( button[ StickyButton ], d ? i18n( "Un-Sticky" ) : i18n( "Sticky" ) ); - } -} - -////////////////////////////////////////////////////////////////////////////// -// iconChange() -// ------------ -// The title has changed - -void BaghiraClient::iconChange() -{ - if (noDeco_) - return; - if (BaghiraFactory::drawIcon(currentStyle)) widget()->repaint(ICONX, ICONY, 16, 16, false); -} - -////////////////////////////////////////////////////////////////////////////// -// maximizeChange() -// ---------------- -// Maximized state has changed - -void BaghiraClient::maximizeChange() -{ - if (noDeco_) //shouldn't happen - windo's not maximizable - return; - bool m = ( maximizeMode() == MaximizeFull ); - if (BaghiraFactory::fullSpec() && m){ - if (isActive()){ - BaghiraFactory::deMaximizer().show(); - BaghiraFactory::deMaximizer().setClient(this); - } - } - else { - BaghiraFactory::deMaximizer().setClient(NULL); - BaghiraFactory::deMaximizer().hide(); - } - if ( button[ MaxButton ] ) { - TQToolTip::remove - ( button[ MaxButton ] ); - TQToolTip::add - ( button[ MaxButton ], m ? i18n( "Restore" ) : i18n( "Maximize" ) ); - } -} - -////////////////////////////////////////////////////////////////////////////// -// shadeChange() -// ------------- -// Called when window shading changes - -void BaghiraClient::shadeChange() { - ; -} - -////////////////////////////////////////////////////////////////////////////// -// borders() -// ---------- -// Get the size of the borders - -void BaghiraClient::borders( int &l, int &r, int &t, int &b ) const -{ - if (noDeco_) - { - l = r = t = b = 0; - return; - } - bool m = ( maximizeMode() == MaximizeFull); - t = (BaghiraFactory::fullSpec() && m) ? 0 : titleheight_; - if (m || maximizeMode() == MaximizeHorizontal) - l = r = BaghiraFactory::maxResizable() ? 1 : 0; - else - l = r = BaghiraFactory::borderSize(currentStyle); - if ( m || isShade() || (maximizeMode() == MaximizeVertical)) - b = BaghiraFactory::maxResizable() ? 1 : 0; - else - b = BaghiraFactory::borderSize(currentStyle); -} - -////////////////////////////////////////////////////////////////////////////// -// resize() -// -------- -// Called to resize the window - -void BaghiraClient::resize( const TQSize &size ) -{ - if (noDeco_) - return; - widget() ->resize( size ); -} - -////////////////////////////////////////////////////////////////////////////// -// minimumSize() -// ------------- -// Return the minimum allowable size for this decoration - -TQSize BaghiraClient::minimumSize() const -{ - return TQSize( 100, 60 ); -} - -////////////////////////////////////////////////////////////////////////////// -// mousePosition() -// --------------- -// Return mouse position (for resizing) - -KDecoration::Position BaghiraClient::mousePosition( const TQPoint &point ) const -{ - if (noDeco_) - return PositionCenter; - Position pos = PositionCenter; - if ( point.y() < ( height() - BaghiraFactory::borderSize(currentStyle) ) ) { // inside client - pos = KDecoration::mousePosition( point ); - } else { - if ( point.x() >= ( width() - 16 ) ) - pos = PositionBottomRight; - else if ( point.x() <= 16 ) - pos = PositionBottomLeft; - else - pos = PositionBottom; - } - return pos; -} - - -////////////////////////////////////////////////////////////////////////////// -// maxButtonPressed() -// ----------------- -// Max button was pressed - - -void BaghiraClient::demaxButtonPressed() { - maxButtonPressed(); -} - -void BaghiraClient::maxButtonPressed() { - if ( !BaghiraFactory::fullSpec() || (maximizeMode() != MaximizeFull) && button[ MaxButton ]) { - switch ( button[ MaxButton ] ->lastMousePress() ) { - case MidButton: - maximize( maximizeMode() ^ MaximizeVertical ); - break; - case RightButton: - maximize( maximizeMode() ^ MaximizeHorizontal ); - break; - default: - if ( maximizeMode() == MaximizeFull ) { - maximize( MaximizeRestore ); - } - else { - maximize( MaximizeFull ); - } - } - } - else{ - maximize( MaximizeRestore ); - } -} - -////////////////////////////////////////////////////////////////////////////// -// menuButtonPressed() -// ------------------- -// Menu button was pressed - -void BaghiraClient::menuButtonPressed() { - if ( button[ MenuButton ] ) { - TQPoint pt( button[ MenuButton ] ->rect().bottomLeft().x(), - button[ MenuButton ] ->rect().bottomLeft().y() + 4 ); - KDecorationFactory* f = factory(); - showWindowMenu( button[ MenuButton ] ->mapToGlobal( pt ) ); - if ( !f->exists( this ) ) - return ; // we have been destroyed - button[ MenuButton ] ->setDown( false ); - } -} - -////////////////////////////////////////////////////////////////////////////// -// new stuff - -void BaghiraClient::aboveBelowButtonPressed() -{ - if (keepAbove()) - { - button[ AboveBelowButton ] ->setDown(true); - setKeepAbove(false ); - setKeepBelow(true ); - button[ AboveBelowButton ] ->repaint( false ); - } - else if (keepBelow()) - { - button[ AboveBelowButton ] ->setDown(false); - setKeepBelow(false ); - setKeepAbove(false ); - button[ AboveBelowButton ] ->repaint( false ); - } - else - { - button[ AboveBelowButton ] ->setDown(true); - setKeepBelow(false ); - setKeepAbove(true ); - button[ AboveBelowButton ] ->repaint( false ); - } -} - -void BaghiraClient::shadeButtonPressed(){ - button[ ShadeButton ]->setDown(!isShade()); - setShade( !isShade() ); -} - -////////////////////////////////////////////////////////////////////////////// -// isTool() -// -------- -// Is this a tool window? - -bool BaghiraClient::isTool() const { - static const unsigned long winmask = NET::DesktopMask | NET::DialogMask | - NET::DockMask | NET::MenuMask | - NET::NormalMask | NET::OverrideMask | - NET::SplashMask | NET::ToolbarMask | - NET::TopMenuMask | NET::UtilityMask; - - NET::WindowType type = windowType( winmask ); - return ( type == NET::Menu || type == NET::Toolbar || type == NET::Utility ); -} - -#include "baghiraclient.moc" |