00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
#ifndef __KDE_REDMOND_H
00020
#define __KDE_REDMOND_H
00021
00022
#include <qvariant.h>
00023
#include <qbutton.h>
00024
#include <qbitmap.h>
00025
#include <kpixmap.h>
00026
#include <kdecoration.h>
00027
#include <kdecorationfactory.h>
00028
00029
class QLabel;
00030
class QSpacerItem;
00031
class QBoxLayout;
00032
00033
namespace Redmond {
00034
00035
class RedmondDeco;
00036
00037
class RedmondButton :
public QButton
00038 {
00039 Q_OBJECT
00040
public:
00041 RedmondButton(RedmondDeco *parent=0,
const char *name=0,
00042
const unsigned char *bitmap=NULL,
00043
bool menuButton=
false,
bool isMini=
false,
int size = 16,
00044
const QString& tip=NULL,
const int realizeBtns = LeftButton);
00045
void setBitmap(
const unsigned char *bitmap);
00046
void setPixmap(
const QPixmap &p);
00047
void reset();
00048
00049 QSize sizeHint() const;
00050
int last_button;
00051
00052 protected:
00053
void mousePressEvent(QMouseEvent* e);
00054
void mouseReleaseEvent(QMouseEvent* e);
00055 virtual
void drawButton(QPainter *p);
00056
void drawButtonLabel(QPainter *){;}
00057
00058 QBitmap deco;
00059 QPixmap pix;
00060
bool menuBtn;
00061
bool miniBtn;
00062 RedmondDeco *client;
00063
int size;
00064
00065
int realizeButtons;
00066 };
00067
00068
00069
class RedmondDeco :
public KDecoration
00070 {
00071 Q_OBJECT
00072
00073
public:
00074 RedmondDeco(KDecorationBridge *, KDecorationFactory *);
00075 ~RedmondDeco() {;}
00076
void init();
00077
00078
protected:
00079
void resizeEvent(QResizeEvent*);
00080
void paintEvent(QPaintEvent*);
00081
void showEvent(QShowEvent*);
00082
void mouseDoubleClickEvent(QMouseEvent *);
00083
void captionChange(
const QString& name);
00084
void maximizeChange(
bool m);
00085
void activeChange(
bool);
00086
void iconChange();
00087
void calcHiddenButtons();
00088
00089
00090
Position mousePosition(
const QPoint &) const;
00091
void borders(
int &,
int &,
int &,
int &) const;
00092
void resize(const QSize &);
00093 QSize minimumSize() const;
00094
void activeChange();
00095
void captionChange();
00096
void maximizeChange();
00097
void desktopChange();
00098
void shadeChange();
00099
bool eventFilter(QObject *, QEvent *);
00100
00101 protected slots:
00102
void slotReset();
00103
void slotMaximize();
00104
void menuButtonPressed();
00105
00106 private:
00107 enum Buttons{ BtnHelp=0, BtnMax, BtnMin, BtnClose, BtnMenu, BtnCount };
00108
00109 RedmondButton* button[RedmondDeco::BtnCount];
00110
int lastButtonWidth;
00111
int titleHeight;
00112 QSpacerItem* titlebar;
00113
bool hiddenItems;
00114 QBoxLayout* hb;
00115
bool smallButtons;
00116 };
00117
00118
class RedmondDecoFactory :
public QObject,
public KDecorationFactory
00119 {
00120 Q_OBJECT
00121
public:
00122 RedmondDecoFactory();
00123
virtual ~RedmondDecoFactory();
00124
virtual KDecoration *createDecoration(KDecorationBridge *);
00125
virtual bool reset(
unsigned long);
00126
virtual QValueList< BorderSize > borderSizes() const;
00127 private:
00128
void readConfig();
00129 };
00130
00131 }
00132
00133 #endif
00134