Eneboo - Documentación para desarrolladores
|
00001 /**************************************************************************** 00002 ** $Id: qt/qwidgetresizehandler_p.h 3.3.8 edited Jan 11 14:39 $ 00003 ** 00004 ** Definition of the QWidgetResizeHandler class 00005 ** 00006 ** Created : 001010 00007 ** 00008 ** Copyright (C) 1992-2007 Trolltech ASA. All rights reserved. 00009 ** 00010 ** This file is part of the workspace module of the Qt GUI Toolkit. 00011 ** 00012 ** This file may be distributed under the terms of the Q Public License 00013 ** as defined by Trolltech ASA of Norway and appearing in the file 00014 ** LICENSE.QPL included in the packaging of this file. 00015 ** 00016 ** This file may be distributed and/or modified under the terms of the 00017 ** GNU General Public License version 2 as published by the Free Software 00018 ** Foundation and appearing in the file LICENSE.GPL included in the 00019 ** packaging of this file. 00020 ** 00021 ** Licensees holding valid Qt Enterprise Edition licenses may use this 00022 ** file in accordance with the Qt Commercial License Agreement provided 00023 ** with the Software. 00024 ** 00025 ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 00026 ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 00027 ** 00028 ** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for 00029 ** information about Qt Commercial License Agreements. 00030 ** See http://www.trolltech.com/qpl/ for QPL licensing information. 00031 ** See http://www.trolltech.com/gpl/ for GPL licensing information. 00032 ** 00033 ** Contact info@trolltech.com if any conditions of this licensing are 00034 ** not clear to you. 00035 ** 00036 **********************************************************************/ 00037 00038 #ifndef QWIDGETRESIZEHANDLER_P_H 00039 #define QWIDGETRESIZEHANDLER_P_H 00040 00041 // 00042 // W A R N I N G 00043 // ------------- 00044 // 00045 // This file is not part of the Qt API. This header file may 00046 // change from version to version without notice, or even be 00047 // removed. 00048 // 00049 // We mean it. 00050 // 00051 // 00052 00053 #ifndef QT_H 00054 #include "qobject.h" 00055 #endif // QT_H 00056 #ifndef QT_NO_RESIZEHANDLER 00057 class QMouseEvent; 00058 class QKeyEvent; 00059 00060 class Q_EXPORT QWidgetResizeHandler : public QObject 00061 { 00062 Q_OBJECT 00063 00064 public: 00065 enum Action { 00066 Move = 0x01, 00067 Resize = 0x02, 00068 Any = Move|Resize 00069 }; 00070 00071 QWidgetResizeHandler( QWidget *parent, QWidget *cw = 0, const char *name = 0 ); 00072 void setActive( bool b ) { setActive( Any, b ); } 00073 void setActive( Action ac, bool b ); 00074 bool isActive() const { return isActive( Any ); } 00075 bool isActive( Action ac ) const; 00076 void setMovingEnabled( bool b ) { moving = b; } 00077 bool isMovingEnabled() const { return moving; } 00078 00079 bool isButtonDown() const { return buttonDown; } 00080 00081 void setExtraHeight( int h ) { extrahei = h; } 00082 void setSizeProtection( bool b ) { sizeprotect = b; } 00083 00084 void doResize(); 00085 void doMove(); 00086 00087 signals: 00088 void activate(); 00089 00090 protected: 00091 bool eventFilter( QObject *o, QEvent *e ); 00092 void mouseMoveEvent( QMouseEvent *e ); 00093 void keyPressEvent( QKeyEvent *e ); 00094 00095 private: 00096 enum MousePosition { 00097 Nowhere, 00098 TopLeft, BottomRight, BottomLeft, TopRight, 00099 Top, Bottom, Left, Right, 00100 Center 00101 }; 00102 00103 QWidget *widget; 00104 QWidget *childWidget; 00105 QPoint moveOffset; 00106 QPoint invertedMoveOffset; 00107 MousePosition mode; 00108 int extrahei; 00109 int range; 00110 uint buttonDown :1; 00111 uint moveResizeMode :1; 00112 uint activeForResize :1; 00113 uint sizeprotect :1; 00114 uint moving :1; 00115 uint activeForMove :1; 00116 00117 void setMouseCursor( MousePosition m ); 00118 bool isMove() const { 00119 return moveResizeMode && mode == Center; 00120 } 00121 bool isResize() const { 00122 return moveResizeMode && !isMove(); 00123 } 00124 00125 private: // Disabled copy constructor and operator= 00126 #if defined(Q_DISABLE_COPY) 00127 QWidgetResizeHandler( const QWidgetResizeHandler & ); 00128 QWidgetResizeHandler& operator=( const QWidgetResizeHandler & ); 00129 #endif 00130 00131 }; 00132 00133 #endif //QT_NO_RESIZEHANDLER 00134 #endif