diff options
Diffstat (limited to 'twin-styles/kstep/nextclient.h')
-rw-r--r-- | twin-styles/kstep/nextclient.h | 126 |
1 files changed, 126 insertions, 0 deletions
diff --git a/twin-styles/kstep/nextclient.h b/twin-styles/kstep/nextclient.h new file mode 100644 index 00000000..b24da66d --- /dev/null +++ b/twin-styles/kstep/nextclient.h @@ -0,0 +1,126 @@ +#ifndef __NEXTCLIENT_H +#define __NEXTCLIENT_H + +#include <tqvariant.h> +#include <tqbitmap.h> +#include <kpixmap.h> +#include <tqlayout.h> +#include <tqbutton.h> +#include <kdecoration.h> +#include <kdecorationfactory.h> + +class TQLabel; +class TQSpacerItem; + +namespace KStep { + +class NextClient; + +class NextButton : public TQButton +{ +public: + NextButton(NextClient *parent=0, const char *name=0, + const unsigned char *bitmap=NULL, int bw=0, int bh=0, + const TQString& tip=NULL, const int realizeBtns = Qt::LeftButton); + void setBitmap(const unsigned char *bitmap, int bw, int bh); + void reset(); + ButtonState lastButton() { return last_button; } + +protected: + void mousePressEvent( TQMouseEvent* e ); + void mouseReleaseEvent( TQMouseEvent* e ); + virtual void drawButton(TQPainter *p); + void drawButtonLabel(TQPainter *){;} + + KPixmap aBackground, iBackground; + TQBitmap* deco; + NextClient *client; + ButtonState last_button; + int realizeButtons; +}; + +class NextClient : public KDecoration +{ + Q_OBJECT + TQ_OBJECT +public: + NextClient(KDecorationBridge *b, KDecorationFactory *f); + ~NextClient() {;} + void init(); + virtual bool drawbound(const TQRect& geom, bool clear); +protected: + bool eventFilter(TQObject *o, TQEvent *e); + void resizeEvent( TQResizeEvent* ); + void paintEvent( TQPaintEvent* ); + void showEvent( TQShowEvent* ); + + void mouseDoubleClickEvent( TQMouseEvent * ); + void wheelEvent( TQWheelEvent * ); + void captionChange(); + void desktopChange(); + void activeChange(); + void shadeChange(); + void iconChange(); + TQSize tqminimumSize() const; + void resize(const TQSize &size); + void borders(int &left, int &right, int &top, int &bottom) const; + void reset(unsigned long changed); + void calcHiddenButtons(); + void updateActiveBuffer(); + + Position mousePosition(const TQPoint &) const; + void maximizeChange(); + +protected slots: + void slotReset(); + void menuButtonPressed(); + void maximizeButtonClicked(); + void shadeClicked(); + void aboveClicked(); + void belowClicked(); + void resizePressed(); + + void keepAboveChange(bool above); + void keepBelowChange(bool below); + +private: + void initializeButtonsAndTitlebar(TQBoxLayout* titleLayout); + void addButtons(TQBoxLayout* titleLayout, const TQString& buttons); + bool mustDrawHandle() const; + + TQSpacerItem* titlebar; + + // Helpful constants for buttons in array + enum { CLOSE_IDX = 0, + HELP_IDX, + ICONIFY_IDX, + MAXIMIZE_IDX, + MENU_IDX, + SHADE_IDX, + ABOVE_IDX, + BELOW_IDX, + RESIZE_IDX, + STICKY_IDX, + MAX_NUM_BUTTONS = STICKY_IDX + 1 }; + + // WARNING: button[i] may be null for any given i. Make sure you + // always check for null before doing button[i]->foo(). + NextButton* button[MAX_NUM_BUTTONS]; +}; + +class NextClientFactory: public TQObject, public KDecorationFactory +{ +public: + NextClientFactory(); + virtual ~NextClientFactory(); + virtual KDecoration *createDecoration(KDecorationBridge *); + virtual bool reset(unsigned long changed); + virtual bool supports( Ability ability ); + + TQValueList< NextClientFactory::BorderSize > borderSizes() const; + +}; + +} + +#endif |