diff options
Diffstat (limited to 'kwin-styles/cde/cdeclient.h')
-rw-r--r-- | kwin-styles/cde/cdeclient.h | 118 |
1 files changed, 118 insertions, 0 deletions
diff --git a/kwin-styles/cde/cdeclient.h b/kwin-styles/cde/cdeclient.h new file mode 100644 index 00000000..40e8f2eb --- /dev/null +++ b/kwin-styles/cde/cdeclient.h @@ -0,0 +1,118 @@ +/* + * CDE KWin client - emulates the look and feel + * of dtwm, the CDE window manager. + * + * Copyright (c) 2000-2001, 2002 + * Chris Lee <lee@azsites.com> + * Lennart Kudling <kudling@kde.org> + * Fredrik Höglund <fredrik@kde.org> + * + * Copyright (c) 2003 + * Luciano Montanaro <mikelima@cirulla.net> + * + * Originally based on the KStep client. + * + * Distributed under the terms of the BSD license. + */ + +#ifndef __CDECLIENT_H +#define __CDECLIENT_H + +#include <qbutton.h> +#include <qbitmap.h> +#include <kpixmap.h> +#include <kdecoration.h> +#include <kdecorationfactory.h> + +class QLabel; +class QBoxLayout; +class QVBoxLayout; +class QSpacerItem; + +namespace CDE { + +class CdeClient; + +enum Buttons { BtnMenu=0, BtnHelp, BtnIconify, BtnMax, BtnClose, BtnCount }; + +class CdeButton : public QButton +{ +public: + CdeButton( CdeClient* parent=0, const char* name=0, int btnType=0, + const QString& tip=NULL, int realize_btns = LeftButton ); + void reset(); + ButtonState lastButton() { return last_button; } + +protected: + void mousePressEvent(QMouseEvent *e); + void mouseReleaseEvent(QMouseEvent *e); + virtual void drawButton(QPainter *p); + +private: + CdeClient *m_parent; + int m_btnType; + int m_realize_buttons; + ButtonState last_button; +}; + +class CdeClient : public KDecoration +{ + Q_OBJECT +public: + CdeClient(KDecorationBridge *b, KDecorationFactory *f); + ~CdeClient() {}; + void init(); + +protected: + bool eventFilter(QObject *o, QEvent *e); + void resizeEvent( QResizeEvent* ); + void paintEvent( QPaintEvent* ); + + void showEvent(QShowEvent *); + void addClientButtons( const QString& ); + void mouseDoubleClickEvent( QMouseEvent* ); + void wheelEvent( QWheelEvent * ); + void captionChange(); + void desktopChange(); + void activeChange(); + void shadeChange(); + void iconChange(); + QSize minimumSize() const; + void resize(const QSize &size); + void borders(int &left, int &right, int &top, int &bottom) const; + void mousePressEvent( QMouseEvent* ); + void mouseReleaseEvent( QMouseEvent* ); + void maximizeChange(); + Position mousePosition( const QPoint& p ) const; + +protected slots: + void menuButtonPressed(); + void menuButtonReleased(); + void maximizeButtonClicked(); + +private: + CdeButton* button[BtnCount]; + QVBoxLayout* mainLayout; + QBoxLayout* titleLayout; + QSpacerItem* titlebar; + bool titlebarPressed; + bool closing; +}; + +class CdeClientFactory: public QObject, public KDecorationFactory +{ +public: + CdeClientFactory(); + virtual ~CdeClientFactory(); + virtual KDecoration *createDecoration(KDecorationBridge *); + virtual bool supports( Ability ability ); + virtual bool reset(unsigned long changed); + + QValueList< CdeClientFactory::BorderSize > borderSizes() const; + +}; + +} + +#endif + |