00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039 #ifndef _OSGQFIELDVIEW_H_
00040 #define _OSGQFIELDVIEW_H_
00041 #ifdef __sgi
00042 #pragma once
00043 #endif
00044
00045 #include "OSGWindowQTDef.h"
00046
00047 #include <OSGField.h>
00048 #include <OSGFieldContainerPtr.h>
00049
00050 #include <qwidget.h>
00051 #include <qevent.h>
00052 #include <qsizepolicy.h>
00053
00054 #include <map>
00055
00056 class QScrollBar;
00057
00058 OSG_BEGIN_NAMESPACE
00059
00060 class QFieldValueLabelBase;
00061 class QFieldEditorBase;
00062
00066 class OSG_WINDOWQTLIB_DLLMAPPING QFieldViewBase : public QWidget
00067 {
00068 Q_OBJECT
00069
00070 public:
00071 QFieldViewBase(FieldContainerPtr pFC,
00072 UInt32 uiFieldId,
00073 UInt32 uiAspect,
00074 QWidget *parent, const char *name=NULL);
00075
00076 virtual ~QFieldViewBase(void) = 0;
00077
00078 virtual void setAll (FieldContainerPtr pFC,
00079 UInt32 uiFieldId,
00080 UInt32 uiAspect );
00081
00082 virtual void setFieldContainer(FieldContainerPtr pFC);
00083 FieldContainerPtr &getFieldContainer(void );
00084 const FieldContainerPtr &getFieldContainer(void ) const;
00085
00086 virtual void setFieldId (UInt32 uiFieldId);
00087 UInt32 getFieldId (void ) const;
00088
00089 virtual void setAspect (UInt32 uiAspect );
00090 UInt32 getAspect (void ) const;
00091
00092 Field *getFieldPtr (void );
00093 const Field *getFieldPtr (void ) const;
00094
00095 virtual QSize sizeHint (void ) const = 0;
00096 virtual QSize minimumSizeHint (void ) const = 0;
00097 virtual QSizePolicy sizePolicy (void ) const = 0;
00098
00099 public slots:
00100 virtual void beginEdit (UInt32 uiIndex) = 0;
00101 virtual void endEdit (void ) = 0;
00102
00103 signals:
00104 void clicked (FieldContainerPtr pFC, UInt32 uiFieldId,
00105 UInt32 uiIndex, ButtonState button);
00106 void doubleClicked(FieldContainerPtr pFC, UInt32 uiFieldId,
00107 UInt32 uiIndex, ButtonState button);
00108
00109 protected:
00110 virtual void paintEvent (QPaintEvent *pEvent ) = 0;
00111
00112 protected slots:
00113 virtual void onEditorDone (void ) = 0;
00114 virtual void onFieldUpdated (UInt32 uiIndex) = 0;
00115
00116 private:
00117 typedef QWidget Inherited;
00118
00119 FieldContainerPtr _pFieldCon;
00120 UInt32 _uiFieldId;
00121 UInt32 _uiAspect;
00122 };
00123
00127 class OSG_WINDOWQTLIB_DLLMAPPING QSFieldView : public QFieldViewBase
00128 {
00129 Q_OBJECT
00130
00131 public:
00132 QSFieldView(FieldContainerPtr pFC,
00133 UInt32 uiFieldId,
00134 UInt32 uiAspect,
00135 QWidget *parent, const char *name=NULL);
00136
00137 virtual ~QSFieldView(void);
00138
00139 virtual void setAll (FieldContainerPtr pFC,
00140 UInt32 uiFieldId,
00141 UInt32 uiAspect );
00142 virtual void setFieldContainer(FieldContainerPtr pFC );
00143 virtual void setFieldId (UInt32 uiFieldId);
00144 virtual void setAspect (UInt32 uiAspect );
00145
00146 virtual QSize sizeHint (void ) const;
00147 virtual QSize minimumSizeHint (void ) const;
00148 virtual QSizePolicy sizePolicy (void ) const;
00149
00150 public slots:
00151 virtual void beginEdit(UInt32 uiIndex);
00152 virtual void endEdit (void );
00153
00154 protected:
00155 virtual void mousePressEvent (QMouseEvent *pEvent);
00156 virtual void mouseDoubleClickEvent(QMouseEvent *pEvent);
00157 virtual void paintEvent (QPaintEvent *pEvent);
00158 virtual void resizeEvent (QResizeEvent *pEvent);
00159
00160 protected slots:
00161 virtual void onEditorDone (void );
00162 virtual void onFieldUpdated (UInt32 uiIndex);
00163
00164 private:
00165 typedef QFieldViewBase Inherited;
00166
00167 void initSelf(void);
00168
00169 QFieldValueLabelBase *_pLabel;
00170 QFieldEditorBase *_pEditor;
00171 };
00172
00173
00174
00178 class OSG_WINDOWQTLIB_DLLMAPPING QMFieldView : public QFieldViewBase
00179 {
00180 Q_OBJECT
00181
00182 public:
00183 QMFieldView(FieldContainerPtr pFC,
00184 UInt32 uiFieldId,
00185 UInt32 uiAspect,
00186 QWidget *parent, const char *name=NULL);
00187
00188 virtual ~QMFieldView(void);
00189
00190 virtual void setAll (FieldContainerPtr pFC,
00191 UInt32 uiFieldId,
00192 UInt32 uiAspect );
00193 virtual void setFieldContainer(FieldContainerPtr pFC );
00194 virtual void setFieldId (UInt32 uiFieldId );
00195 virtual void setAspect (UInt32 uiAspect );
00196
00197 virtual QSize sizeHint (void ) const;
00198 virtual QSize minimumSizeHint (void ) const;
00199
00200 virtual QSizePolicy sizePolicy (void ) const;
00201
00202 public slots:
00203 virtual void beginEdit (UInt32 uiIndex );
00204 virtual void endEdit (void );
00205
00206 protected:
00207 virtual void paintEvent (QPaintEvent *pEvent );
00208 virtual void resizeEvent (QResizeEvent *pEvent );
00209 virtual void wheelEvent (QWheelEvent *pEvent );
00210 virtual void mousePressEvent (QMouseEvent *pEvent );
00211 virtual void mouseDoubleClickEvent (QMouseEvent *pEvent );
00212
00213 protected slots:
00214 virtual void onEditorDone (void );
00215 virtual void onFieldUpdated (UInt32 uiIndex);
00216
00217 void onSBValueChanged (int value );
00218
00219 private:
00220 typedef QFieldViewBase Inherited;
00221
00222 class LabelInfo
00223 {
00224 public:
00225 LabelInfo(void);
00226 LabelInfo(QFieldValueLabelBase *pLabel, const QRect &rectPos);
00227
00228 void setLabel(QFieldValueLabelBase *pLabel );
00229 QFieldValueLabelBase *getLabel(void ) const;
00230
00231 UInt32 getIndex(void ) const;
00232
00233 void setRect (const QRect &rectPos);
00234 QRect &getRect (void );
00235 const QRect &getRect (void ) const;
00236
00237 private:
00238 QFieldValueLabelBase *_pLabel;
00239 QRect _rectPos;
00240 };
00241
00242 typedef std::list<QFieldValueLabelBase *> PoolLabelList;
00243 typedef std::list<QFieldValueLabelBase *>::iterator PoolLabelListIt;
00244
00245 typedef std::map<UInt32, LabelInfo> IndexLabelMap;
00246 typedef std::map<UInt32, LabelInfo>::iterator IndexLabelMapIt;
00247 typedef std::map<UInt32, LabelInfo>::const_iterator IndexLabelMapConstIt;
00248
00249 void initSelf (void );
00250 void initScrollbar (void );
00251
00252 UInt32 pointToIndex (const QPoint &pos,
00253 bool &bValid );
00254
00255 QFieldValueLabelBase *acquireLabel (UInt32 uiIndex );
00256 void releaseLabel (QFieldValueLabelBase *pLabel );
00257 void releaseAllLabels(void );
00258 void deleteAllLabels (void );
00259
00260 void redrawUnchanged (QPaintEvent *pEvent,
00261 QPainter *pPainter);
00262 void redrawChanged (QPaintEvent *pEvent,
00263 QPainter *pPainter);
00264
00265 QScrollBar *_pScrollbar;
00266 QFieldEditorBase *_pEditor;
00267
00268 PoolLabelList _poolLabels;
00269 IndexLabelMap _usedLabels;
00270
00271 bool _bContentsChanged;
00272 UInt32 _uiBeginIndex;
00273 UInt32 _uiEndIndex;
00274 };
00275
00276
00277 OSG_END_NAMESPACE
00278
00279 #define OSGQFIELDVIEWBASE_HEADER_CVSID "@(#)$Id: OSGQFieldView_qt.h,v 1.2 2003/05/16 13:54:29 neumannc Exp $"
00280
00281 #include "OSGQFieldView_qt.inl"
00282
00283 #endif