redmond.h
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
This file is part of the documentation for kwin Library Version 3.2.2.