Salome HOME
IPAL9182: linking to libSPlot2d.so added
[modules/gui.git] / src / Qtx / QtxListView.h
1
2 #ifndef QTXLISTVIEW_H
3 #define QTXLISTVIEW_H
4
5 #include "Qtx.h"
6
7 #ifdef WIN32
8 #pragma warning( disable:4251 )
9 #endif
10
11 #include <qlistview.h>
12 #include <qiconset.h>
13
14 class QButton;
15 class QPopupMenu;
16
17 class QTX_EXPORT QtxListView : public QListView
18 {
19   Q_OBJECT
20
21 public:
22   enum { HeaderAuto, HeaderButton, NoHeaderButton };
23
24 public:
25   QtxListView( QWidget* = 0, const char* = 0, WFlags = 0 );
26   QtxListView( const int, QWidget* = 0, const char* = 0, WFlags = 0 );
27   virtual ~QtxListView();
28
29   virtual int   addColumn( const QString&, int = -1 );
30   virtual int   addColumn( const QIconSet&, const QString&, int width = -1 );
31
32   virtual void  removeColumn( int );
33
34   virtual void  resize( int, int );
35
36   void          show( int );
37   void          hide( int );
38
39   bool          isShown( int ) const;
40   void          setShown( int, bool );
41
42   bool          appropriate( const int ) const;
43   virtual void  setAppropriate( const int, const bool );
44
45   virtual void  setColumnWidth( int, int );
46
47   virtual QSize sizeHint() const;
48   virtual QSize minimumSizeHint() const;
49
50 public slots:
51   virtual void  show();
52   virtual void  resizeContents( int, int );
53
54 protected slots:
55   void          onHeaderResized();
56   void          onButtonClicked();
57   void          onShowHide( int );
58
59 protected:
60   virtual void  viewportResizeEvent( QResizeEvent* );
61
62 private:
63   typedef struct { int width; bool resizeable; } ColumnData;
64   typedef QMap<int, ColumnData>                  ColumnsMap;
65
66 private:
67   void          initialize();
68
69 private:
70   QPopupMenu*   myPopup;
71   QButton*      myButton;
72   ColumnsMap    myColumns;
73   QIntList      myAppropriate;
74   int           myHeaderState;
75 };
76
77 #ifdef WIN32
78 #pragma warning( default:4251 )
79 #endif
80
81 #endif