summaryrefslogtreecommitdiffstats
path: root/kwin-styles/system/systemclient.h
blob: 3ab4df8df0a81ad5a82964ba657e1b469bc59445 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
#ifndef __SYSTEMCLIENT_H
#define __SYSTEMCLIENT_H

#include <tqvariant.h>
#include <tqbitmap.h>
#include <tqbutton.h>

#include <kpixmap.h>
#include <kdecoration.h>
#include <kdecorationfactory.h>


class QLabel;
class QSpacerItem;
class QBoxLayout;

namespace System {

class SystemButton;

enum ButtonType {
    ButtonClose=0,
    ButtonSticky,
    ButtonMinimize,
    ButtonMaximize,
    ButtonHelp,
    ButtonTypeCount
};

class SystemClient : public KDecoration
{
   Q_OBJECT
   public:
      SystemClient(KDecorationBridge* bridge, KDecorationFactory* factory);
      ~SystemClient();
      virtual Position mousePosition(const TQPoint& p) const;
      virtual void resize(const TQSize&);
      virtual bool eventFilter(TQObject* o, TQEvent* e);
      virtual void init();
   protected:
      virtual void maximizeChange();
      virtual void captionChange();
      virtual void shadeChange() {};
      virtual void iconChange();
      virtual void desktopChange();
      virtual void activeChange();
      virtual TQSize minimumSize() const;
      virtual void borders(int&, int&, int&, int&) const;
      virtual void reset( unsigned long changed );
      void drawRoundFrame(TQPainter &p, int x, int y, int w, int h);
      void resizeEvent( TQResizeEvent* );
      void paintEvent( TQPaintEvent* );
      void showEvent( TQShowEvent* );
      void mouseDoubleClickEvent( TQMouseEvent * );
      void wheelEvent(TQWheelEvent *e);
      void doShape();
      void recalcTitleBuffer();
   private:
      void addButtons(TQBoxLayout* hb, const TQString& buttons);
   private slots:
      void maxButtonClicked();

   private:
      SystemButton* button[ButtonTypeCount];
      TQSpacerItem* titlebar;
      TQPixmap titleBuffer;
      TQString oldTitle;
};

class SystemButton : public QButton
{
   public:
      SystemButton(SystemClient *parent=0, const char *name=0,
                   const unsigned char *bitmap=NULL, const TQString& tip=NULL);
      void setBitmap(const unsigned char *bitmap);
      void reset();
      TQSize sizeHint() const;
      void setTipText(const TQString &tip);
      ButtonState last_button;
   protected:
      virtual void drawButton(TQPainter *p);
      void drawButtonLabel(TQPainter *){}
      TQBitmap deco;

      void mousePressEvent( TQMouseEvent* e );
      void mouseReleaseEvent( TQMouseEvent* e );

   private:
      SystemClient* client;
};


class SystemDecoFactory : public TQObject, public KDecorationFactory
{
   Q_OBJECT
   public:
      SystemDecoFactory();
      virtual ~SystemDecoFactory();
      virtual KDecoration *createDecoration(KDecorationBridge *);
      virtual bool reset(unsigned long);
      virtual bool supports( Ability ability );
      virtual TQValueList< BorderSize > borderSizes() const;
   private:
      void readConfig();
};



}

#endif