You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdeartwork/kwin-styles/cde/cdeclient.h

119 lines
2.8 KiB

/*
* 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<EFBFBD>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