USGS

Isis 3.0 Object Programmers' Reference

Home

TableViewHeader.h
1 #ifndef TableViewHeader_H
2 #define TableViewHeader_H
3 
4 #include <QWidget>
5 
6 class QMouseEvent;
7 class QPainter;
8 class QPaintEvent;
9 class QSize;
10 class QStringList;
11 template<typename T> class QList;
12 
13 
14 namespace Isis {
15  namespace CnetViz {
16  class AbstractTableModel;
17  class TableColumnList;
18 
25  class TableViewHeader : public QWidget {
26 
27  Q_OBJECT
28 
29  public:
30  explicit TableViewHeader(AbstractTableModel *someModel);
31  virtual ~TableViewHeader();
32  virtual void setColumns(TableColumnList *);
33  QSize minimumSizeHint() const;
34  QSize sizeHint();
35 
36  void setModel(AbstractTableModel *someModel);
37 
38 
39  signals:
40  void columnResized(bool lastColumn);
41  void requestedGlobalSelection(bool select);
42  void requestedColumnSelection(int columnNum, bool select);
43  void sortingEnabled(bool);
44 
45 
46  public slots:
47  void handleFilterCountsChanged(int visibleTopLevelItemCount,
48  int topLevelItemCount);
49  void updateHeaderOffset(int);
50  void updateFilterProgress(int newProgress);
51  void updateFilterProgressRange(int min, int max);
52  void updateRebuildProgress(int newProgress);
53  void updateRebuildProgressRange(int min, int max);
54  void updateSortProgress(int newProgress);
55  void updateSortProgressRange(int min, int max);
56 
57 
58  protected:
59  void mouseMoveEvent(QMouseEvent *event);
60  void mousePressEvent(QMouseEvent *event);
61  void mouseReleaseEvent(QMouseEvent *event);
62  void paintEvent(QPaintEvent *event);
63 
64 
65  private: // methods
66  TableViewHeader(const TableViewHeader &other);
67  TableViewHeader &operator=(TableViewHeader other);
68  void nullify();
69  QRect getColumnRect(int column) const;
70  int getMousedColumn(QPoint mousePos);
71  int getMousedColumnEdge(QPoint mousePos);
72  bool mouseAtResizableColumnEdge(QPoint mousePos);
73  void paintHeader(QPainter *painter, int rowheight);
74  void paintProgress(QPainter *painter, const QRect &rect, int min,
75  int max, int value, bool over100);
76  QRect getSortingPriorityRect(int visColIndex);
77  QRect getSortingArrowRect(int visColIndex);
78 
79 
80  private: // data
81  TableColumnList *m_columns;
82  int m_horizontalOffset;
83  int m_filterProgress;
84  int m_filterProgressMin;
85  int m_filterProgressMax;
86  int m_rebuildProgress;
87  int m_rebuildProgressMin;
88  int m_rebuildProgressMax;
89  int m_sortProgress;
90  int m_sortProgressMin;
91  int m_sortProgressMax;
92 
93  int m_visibleCount;
94  int m_totalCount;
95 
96  int m_clickedColumnEdge;
97  int m_clickedColumn;
98 
99  static int const SORT_ARROW_MARGIN = 10;
100  int ARROW_HEIGHT;
101  int ARROW_WIDTH;
102 
103  AbstractTableModel *m_model;
104  };
105  }
106 }
107 
108 
109 #endif