kwin Library API Documentation

kdedefault.h

00001 /*
00002  *
00003  *  KDE2 Default KWin client
00004  *
00005  *  Copyright (C) 1999, 2001 Daniel Duley <mosfet@kde.org>
00006  *  Matthias Ettrich <ettrich@kde.org>
00007  *  Karol Szwed <gallium@kde.org>
00008  *
00009  *  Draws mini titlebars for tool windows.
00010  *  Many features are now customizable.
00011  */
00012 
00013 #ifndef _KDE_DEFAULT_H
00014 #define _KDE_DEFAULT_H
00015 
00016 #include <qbutton.h>
00017 #include <qbitmap.h>
00018 #include <qdatetime.h>
00019 #include <kpixmap.h>
00020 #include <kdecoration.h>
00021 #include <kdecorationfactory.h>
00022 
00023 class QSpacerItem;
00024 class QBoxLayout;
00025 class QGridLayout;
00026 
00027 namespace Default {
00028 
00029 class KDEDefaultClient;
00030 
00031 class KDEDefaultHandler: public KDecorationFactory
00032 {
00033     public:
00034         KDEDefaultHandler();
00035         ~KDEDefaultHandler();
00036                 KDecoration* createDecoration( KDecorationBridge* b );
00037         bool reset( unsigned long changed );
00038         virtual QValueList< BorderSize > borderSizes() const;
00039 
00040     private:
00041         unsigned long readConfig( bool update );
00042         void createPixmaps();
00043         void freePixmaps();
00044         void drawButtonBackground(KPixmap *pix,
00045                 const QColorGroup &g, bool sunken);
00046 };
00047 
00048 
00049 class KDEDefaultButton : public QButton, public KDecorationDefines
00050 {
00051     public:
00052         KDEDefaultButton(KDEDefaultClient *parent=0, const char *name=0,
00053              bool largeButton=true, bool isLeftButton=true,
00054              bool isStickyButton=false, const unsigned char *bitmap=NULL,
00055              const QString& tip=NULL, const int realizeBtns = LeftButton);
00056         ~KDEDefaultButton();
00057 
00058         ButtonState last_button;
00059         void turnOn( bool isOn );
00060         void setBitmap(const unsigned char *bitmap);
00061         QSize sizeHint() const;
00062 
00063     protected:
00064         void enterEvent(QEvent *);
00065         void leaveEvent(QEvent *);
00066         void mousePressEvent( QMouseEvent* e );
00067         void mouseReleaseEvent( QMouseEvent* e );
00068         void drawButton(QPainter *p);
00069         void drawButtonLabel(QPainter*) {;}
00070 
00071         QBitmap* deco;
00072         bool    large;
00073         bool    isLeft;
00074         bool    isSticky;
00075         bool    isMouseOver;
00076         KDEDefaultClient* client;
00077 
00078         int realizeButtons;
00079 };
00080 
00081 
00082 class KDEDefaultClient : public KDecoration
00083 {
00084     Q_OBJECT
00085 
00086     public:
00087         KDEDefaultClient( KDecorationBridge* b, KDecorationFactory* f );
00088         ~KDEDefaultClient() {;}
00089                 void init();
00090                 void borders( int&, int&, int&, int& ) const;
00091                 void resize( const QSize& );
00092                 QSize minimumSize() const;
00093                 void reset( unsigned long changed );
00094 
00095     protected:
00096                 bool eventFilter( QObject*, QEvent* );
00097         void resizeEvent( QResizeEvent* );
00098         void paintEvent( QPaintEvent* );
00099         void showEvent( QShowEvent* );
00100         void mouseDoubleClickEvent( QMouseEvent * );
00101         void captionChange();
00102         void maximizeChange();
00103         void activeChange();
00104         void iconChange();
00105         void desktopChange();
00106                 void shadeChange();
00107         Position mousePosition(const QPoint &) const;
00108 
00109     protected slots:
00110         void slotMaximize();
00111                 void slotAbove();
00112                 void slotBelow();
00113                 void slotShade();
00114         void menuButtonPressed();
00115             void menuButtonReleased();
00116                 void keepAboveChange( bool );
00117                 void keepBelowChange( bool );
00118 
00119     private:
00120         void doShape();
00121         void calcHiddenButtons();
00122         bool mustDrawHandle() const;
00123         void addClientButtons( const QString& s, bool isLeft=true );
00124                 bool isTool() const;
00125 
00126         enum Buttons{ BtnHelp=0, BtnMax, BtnIconify, BtnClose,
00127             BtnMenu, BtnSticky, BtnAbove, BtnBelow, BtnShade, BtnCount };
00128         KDEDefaultButton* button[ KDEDefaultClient::BtnCount ];
00129         int           lastButtonWidth;
00130         int           titleHeight;
00131         bool          largeButtons;
00132         QGridLayout*  g;
00133         QBoxLayout*   hb;
00134         QSpacerItem*  titlebar;
00135         QSpacerItem*  spacer;
00136         bool m_closing;
00137 };
00138 
00139 }
00140 
00141 #endif
00142 // vim: ts=4
KDE Logo
This file is part of the documentation for kwin Library Version 3.3.2.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Thu Sep 8 02:43:20 2005 by doxygen 1.3.6 written by Dimitri van Heesch, © 1997-2003