1 /**************************************************************************** 2 ** 3 ** Copyright (C) 2015 The Qt Company Ltd. 4 ** Contact: http://www.qt.io/licensing/ 5 ** 6 ** This file is part of the QtGui module of the Qt Toolkit. 7 ** 8 ** $QT_BEGIN_LICENSE:LGPL$ 9 ** Commercial License Usage 10 ** Licensees holding valid commercial Qt licenses may use this file in 11 ** accordance with the commercial license agreement provided with the 12 ** Software or, alternatively, in accordance with the terms contained in 13 ** a written agreement between you and The Qt Company. For licensing terms 14 ** and conditions see http://www.qt.io/terms-conditions. For further 15 ** information use the contact form at http://www.qt.io/contact-us. 16 ** 17 ** GNU Lesser General Public License Usage 18 ** Alternatively, this file may be used under the terms of the GNU Lesser 19 ** General Public License version 2.1 or version 3 as published by the Free 20 ** Software Foundation and appearing in the file LICENSE.LGPLv21 and 21 ** LICENSE.LGPLv3 included in the packaging of this file. Please review the 22 ** following information to ensure the GNU Lesser General Public License 23 ** requirements will be met: https://www.gnu.org/licenses/lgpl.html and 24 ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. 25 ** 26 ** As a special exception, The Qt Company gives you certain additional 27 ** rights. These rights are described in The Qt Company LGPL Exception 28 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. 29 ** 30 ** GNU General Public License Usage 31 ** Alternatively, this file may be used under the terms of the GNU 32 ** General Public License version 3.0 as published by the Free Software 33 ** Foundation and appearing in the file LICENSE.GPL included in the 34 ** packaging of this file. Please review the following information to 35 ** ensure the GNU General Public License version 3.0 requirements will be 36 ** met: http://www.gnu.org/copyleft/gpl.html. 37 ** 38 ** $QT_END_LICENSE$ 39 ** 40 ****************************************************************************/ 41 42 #ifndef QDECORATION_QWS_H 43 #define QDECORATION_QWS_H 44 45 #include <QtGui/qregion.h> 46 #include <QtGui/qwidget.h> 47 #include <QtGui/qaction.h> 48 49 QT_BEGIN_HEADER 50 51 QT_BEGIN_NAMESPACE 52 53 QT_MODULE(Gui) 54 55 class QPopupMenu; 56 class QMenu; 57 58 #ifndef QT_NO_ACTION 59 class QDecorationAction : public QAction 60 { 61 public: QDecorationAction(const QString & text,QObject * parent,int region)62 QDecorationAction(const QString &text, QObject* parent, int region) 63 : QAction(text, parent), reg(region) {} 64 int reg; 65 }; 66 #endif // QT_NO_ACTION 67 68 /* 69 Implements decoration styles 70 */ 71 class Q_GUI_EXPORT QDecoration 72 { 73 public: QDecoration()74 QDecoration() {} ~QDecoration()75 virtual ~QDecoration() {} 76 77 /* AABBBBBBBBBBCC Items in DecorationRegion: 78 AijjjjjjjklmnC 79 A C A = TopLeft B = Top C = TopRight 80 D E D = Left E = Right 81 D E F = BottomLeft H = Bottom G = BottomRight 82 F G i = Menu j = Title k = Help 83 FFHHHHHHHHHHGG l = Minimize m = Maximize n = Close 84 85 */ 86 87 enum DecorationRegion { 88 None = 0x0000000000, All = 0x7fffffff, 89 TopLeft = 0x0000000001, Top = 0x0000000002, TopRight = 0x0000000004, 90 Left = 0x0000000008, Right = 0x0000000010, 91 BottomLeft = 0x0000000020, Bottom = 0x0000000040, BottomRight = 0x0000000080, 92 Borders = 0x00000000ff, 93 Menu = 0x0000000100, Title = 0x0000000200, Help = 0x0000000400, 94 Minimize = 0x0000000800, Maximize = 0x0000001000, Normalize = 0x0000002000, 95 Close = 0x0000004000, Move = 0x0000008000, Resize = 0x0000010000 96 }; 97 98 enum DecorationState { Normal = 0x04, Disabled = 0x08, Hover = 0x01, Pressed = 0x02 }; 99 100 virtual QRegion region(const QWidget *w, const QRect &rect, int decorationRegion = All ) = 0; 101 QRegion region(const QWidget *w, int decorationRegion = All ) 102 { return region(w, w->rect(), decorationRegion); } 103 virtual int regionAt(const QWidget *w, const QPoint &point); 104 105 virtual void regionClicked(QWidget *widget, int region); 106 virtual void regionDoubleClicked(QWidget *widget, int region); 107 #ifndef QT_NO_MENU 108 virtual void buildSysMenu(QWidget *widget, QMenu *menu); 109 void menuTriggered(QWidget *widget, QAction *action); 110 #endif 111 112 static void startMove(QWidget *widget); 113 static void startResize(QWidget *widget); 114 115 virtual bool paint(QPainter *p, const QWidget *w, int decorationRegion = All, 116 DecorationState state = Normal) = 0; 117 118 }; 119 120 QT_END_NAMESPACE 121 122 QT_END_HEADER 123 124 #endif // QDECORATION_QWS_H 125