1 /**************************************************************************** 2 ** $Id: qt/qwidgetresizehandler_p.h 3.3.8 edited Jan 11 14:39 $ 3 ** 4 ** Definition of the QWidgetResizeHandler class 5 ** 6 ** Created : 001010 7 ** 8 ** Copyright (C) 1992-2007 Trolltech ASA. All rights reserved. 9 ** 10 ** This file is part of the workspace module of the Qt GUI Toolkit. 11 ** 12 ** This file may be distributed under the terms of the Q Public License 13 ** as defined by Trolltech ASA of Norway and appearing in the file 14 ** LICENSE.QPL included in the packaging of this file. 15 ** 16 ** This file may be distributed and/or modified under the terms of the 17 ** GNU General Public License version 2 as published by the Free Software 18 ** Foundation and appearing in the file LICENSE.GPL included in the 19 ** packaging of this file. 20 ** 21 ** Licensees holding valid Qt Enterprise Edition licenses may use this 22 ** file in accordance with the Qt Commercial License Agreement provided 23 ** with the Software. 24 ** 25 ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 26 ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 27 ** 28 ** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for 29 ** information about Qt Commercial License Agreements. 30 ** See http://www.trolltech.com/qpl/ for QPL licensing information. 31 ** See http://www.trolltech.com/gpl/ for GPL licensing information. 32 ** 33 ** Contact info@trolltech.com if any conditions of this licensing are 34 ** not clear to you. 35 ** 36 **********************************************************************/ 37 38 #ifndef QWIDGETRESIZEHANDLER_P_H 39 #define QWIDGETRESIZEHANDLER_P_H 40 41 // 42 // W A R N I N G 43 // ------------- 44 // 45 // This file is not part of the Qt API. This header file may 46 // change from version to version without notice, or even be 47 // removed. 48 // 49 // We mean it. 50 // 51 // 52 53 #ifndef QT_H 54 #include "qobject.h" 55 #endif // QT_H 56 #ifndef QT_NO_RESIZEHANDLER 57 class QMouseEvent; 58 class QKeyEvent; 59 60 class Q_EXPORT QWidgetResizeHandler : public QObject 61 { 62 Q_OBJECT 63 64 public: 65 enum Action { 66 Move = 0x01, 67 Resize = 0x02, 68 Any = Move|Resize 69 }; 70 71 QWidgetResizeHandler( QWidget *parent, QWidget *cw = 0, const char *name = 0 ); setActive(bool b)72 void setActive( bool b ) { setActive( Any, b ); } 73 void setActive( Action ac, bool b ); isActive()74 bool isActive() const { return isActive( Any ); } 75 bool isActive( Action ac ) const; setMovingEnabled(bool b)76 void setMovingEnabled( bool b ) { moving = b; } isMovingEnabled()77 bool isMovingEnabled() const { return moving; } 78 isButtonDown()79 bool isButtonDown() const { return buttonDown; } 80 setExtraHeight(int h)81 void setExtraHeight( int h ) { extrahei = h; } setSizeProtection(bool b)82 void setSizeProtection( bool b ) { sizeprotect = b; } 83 84 void doResize(); 85 void doMove(); 86 87 signals: 88 void activate(); 89 90 protected: 91 bool eventFilter( QObject *o, QEvent *e ); 92 void mouseMoveEvent( QMouseEvent *e ); 93 void keyPressEvent( QKeyEvent *e ); 94 95 private: 96 enum MousePosition { 97 Nowhere, 98 TopLeft, BottomRight, BottomLeft, TopRight, 99 Top, Bottom, Left, Right, 100 Center 101 }; 102 103 QWidget *widget; 104 QWidget *childWidget; 105 QPoint moveOffset; 106 QPoint invertedMoveOffset; 107 MousePosition mode; 108 int extrahei; 109 int range; 110 uint buttonDown :1; 111 uint moveResizeMode :1; 112 uint activeForResize :1; 113 uint sizeprotect :1; 114 uint moving :1; 115 uint activeForMove :1; 116 117 void setMouseCursor( MousePosition m ); isMove()118 bool isMove() const { 119 return moveResizeMode && mode == Center; 120 } isResize()121 bool isResize() const { 122 return moveResizeMode && !isMove(); 123 } 124 125 private: // Disabled copy constructor and operator= 126 #if defined(Q_DISABLE_COPY) 127 QWidgetResizeHandler( const QWidgetResizeHandler & ); 128 QWidgetResizeHandler& operator=( const QWidgetResizeHandler & ); 129 #endif 130 131 }; 132 133 #endif //QT_NO_RESIZEHANDLER 134 #endif 135