Salome HOME
Join modifications from branch BR_DEBUG_3_2_0b1
[modules/gui.git] / src / Qtx / QtxListView.h
1 // Copyright (C) 2005  OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D
2 // 
3 // This library is free software; you can redistribute it and/or
4 // modify it under the terms of the GNU Lesser General Public
5 // License as published by the Free Software Foundation; either 
6 // version 2.1 of the License.
7 // 
8 // This library is distributed in the hope that it will be useful 
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of 
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
11 // Lesser General Public License for more details.
12 //
13 // You should have received a copy of the GNU Lesser General Public  
14 // License along with this library; if not, write to the Free Software 
15 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
16 //
17 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
18 //
19
20 #ifndef QTXLISTVIEW_H
21 #define QTXLISTVIEW_H
22
23 #include "Qtx.h"
24
25 #ifdef WIN32
26 #pragma warning( disable:4251 )
27 #endif
28
29 #include <qlistview.h>
30 #include <qiconset.h>
31
32 class QButton;
33 class QPopupMenu;
34
35 class QTX_EXPORT QtxListView : public QListView
36 {
37   Q_OBJECT
38
39 public:
40   enum { HeaderAuto, HeaderButton, NoHeaderButton };
41
42 public:
43   QtxListView( QWidget* = 0, const char* = 0, WFlags = 0 );
44   QtxListView( const int, QWidget* = 0, const char* = 0, WFlags = 0 );
45   virtual ~QtxListView();
46
47   virtual int   addColumn( const QString&, int = -1 );
48   virtual int   addColumn( const QIconSet&, const QString&, int width = -1 );
49
50   virtual void  removeColumn( int );
51
52   virtual void  resize( int, int );
53
54   void          show( int );
55   void          hide( int );
56
57   bool          isShown( int ) const;
58   void          setShown( int, bool );
59
60   bool          appropriate( const int ) const;
61   virtual void  setAppropriate( const int, const bool );
62
63   virtual void  setColumnWidth( int, int );
64
65   virtual QSize sizeHint() const;
66   virtual QSize minimumSizeHint() const;
67
68 public slots:
69   virtual void  show();
70   virtual void  resizeContents( int, int );
71
72 protected slots:
73   void          onHeaderResized();
74   void          onButtonClicked();
75   void          onShowHide( int );
76
77 protected:
78   virtual void  viewportResizeEvent( QResizeEvent* );
79   virtual bool  eventFilter( QObject*, QEvent* );
80   virtual void  showPopup( const int x, const int y );
81
82 private:
83   typedef struct { int width; bool resizeable; } ColumnData;
84   typedef QMap<int, ColumnData>                  ColumnsMap;
85
86 private:
87   void          initialize();
88
89 private:
90   QPopupMenu*   myPopup;
91   QButton*      myButton;
92   ColumnsMap    myColumns;
93   QIntList      myAppropriate;
94   int           myHeaderState;
95 };
96
97 #ifdef WIN32
98 #pragma warning( default:4251 )
99 #endif
100
101 #endif