File failed to load: https://isis.astrogeology.usgs.gov/3.9.0/Object/assets/jax/output/NativeMML/config.js
Isis 3 Developer Reference
AbstractTableModel.h
Go to the documentation of this file.
1 #ifndef AbstractTableModel_H
2 #define AbstractTableModel_H
3 
4 
5 #include <QException>
6 #include <QExplicitlySharedDataPointer>
7 #include <QObject>
8 #include <QtConcurrent>
9 
10 // can't forward declare the InternalPointerType or InterestingItems enums
11 #include "AbstractTreeItem.h"
12 #include "AbstractTreeModel.h"
13 
14 
15 class QAtomicInt;
16 template< typename T > class QFutureWatcher;
17 class QTimer;
18 template< typename T > class QList;
19 
20 
21 namespace Isis {
22  class AbstractTableDelegate;
23  class AbstractTreeModel;
24  class BusyLeafItem;
25  class TableColumn;
26  class TableColumnList;
27 
40  class AbstractTableModel : public QObject {
41  class LessThanFunctor;
42 
43  Q_OBJECT
44 
45  public:
46  enum Warning {
47  None = 0,
50  };
51 
53  virtual ~AbstractTableModel();
54 
55  virtual QList< AbstractTreeItem * > getItems(int, int) = 0;
57  AbstractTreeItem *) = 0;
59  virtual int getVisibleRowCount() const = 0;
60  virtual QString getWarningMessage(AbstractTreeItem const *,
61  TableColumn const *, QString valueToSave) const = 0;
62  virtual int indexOfVisibleItem(AbstractTreeItem const *item) const = 0;
63 
64  virtual bool isSorting() const;
65  virtual bool isFiltering() const;
66  virtual bool sortingIsEnabled() const;
67  virtual void setSortingEnabled(bool);
68  virtual int sortLimit() const;
69  virtual void setSortLimit(int);
70  virtual bool sortingOn() const;
71  virtual TableColumnList *getColumns();
72  virtual const AbstractTableDelegate *getDelegate() const;
73 
74 
75  public slots:
76  virtual void setGlobalSelection(bool selected) = 0;
77  virtual void applyFilter();
78  virtual void sort();
79  virtual void reverseOrder(TableColumn *);
80  virtual void updateSort();
81  virtual void rebuildSort();
82 
83 
84  signals:
85  void modelModified();
86  void filterProgressChanged(int);
87  void rebuildProgressChanged(int);
88  void sortProgressChanged(int);
89  void filterProgressRangeChanged(int, int);
90  void rebuildProgressRangeChanged(int, int);
91  void sortProgressRangeChanged(int, int);
92  void filterCountsChanged(int visibleRows, int totalRows);
95 
97 
98  protected:
99  virtual TableColumnList *createColumns() = 0;
101  const AbstractTreeModel *getDataModel() const;
108  QList< AbstractTreeItem * > newlySelectedItems,
110 
111 
112  private: // disable copying of this class (these are not implemented)
114  AbstractTableModel &operator=(AbstractTableModel const &);
115 
116 
117  private slots:
118  void cancelSort();
119  void itemsLost();
120  void sortStatusUpdated();
121  void sortFinished();
122 
123 
124  private:
126  void nullify();
127  void setSorting(bool sorting);
128 
129 
130  private:
131  AbstractTreeModel *m_dataModel;
132  AbstractTableDelegate *m_delegate;
133  QList< AbstractTreeItem * > * m_sortedItems;
134  BusyLeafItem *m_busyItem;
135  TableColumnList *m_columns;
136  QTimer *m_sortStatusPoller;
137  LessThanFunctor *m_lessThanFunctor;
138 
139  bool m_sortingEnabled;
140  int m_sortLimit;
141  bool m_sorting;
142  QFutureWatcher< QList< AbstractTreeItem * > > * m_sortingWatcher;
143 
144  static const int SORT_UPDATE_FREQUENCY = 50; // in milliseconds
145 
146 
147  private:
148  class LessThanFunctorData;
149 
155  class LessThanFunctor : public std::binary_function <
156  AbstractTreeItem *const &, AbstractTreeItem *const &, bool > {
157  public:
158  LessThanFunctor(TableColumn const *someColumn);
159  LessThanFunctor(LessThanFunctor const &);
160  ~LessThanFunctor();
161 
162  int getCompareCount() const;
163  void interrupt();
164  bool interrupted();
165  void reset();
166 
167  bool operator()(AbstractTreeItem *const &,
168  AbstractTreeItem *const &);
169  LessThanFunctor &operator=(LessThanFunctor const &);
170 
171 
172  private:
173  TableColumn const *m_column;
174  QExplicitlySharedDataPointer<LessThanFunctorData> m_sharedData;
175  };
176 
186  class LessThanFunctorData : public QSharedData {
187  public:
188  LessThanFunctorData();
189  LessThanFunctorData(LessThanFunctorData const &);
190  ~LessThanFunctorData();
191 
192  int getCompareCount() const;
193  void incrementCompareCount();
194 
195  void setInterrupted(bool);
196  bool interrupted();
197 
198 
199  private:
200  QAtomicInt m_compareCount;
201  QAtomicInt m_interruptFlag;
202  };
203 
204 
216  class SortingCanceledException : public QException {
217  public:
218  void raise() const { throw *this; }
219  QException *clone() const {
220  return new SortingCanceledException(*this);
221  }
222  };
223  };
224 }
225 
226 #endif
virtual void updateSort()
Definition: AbstractTableModel.cpp:195
virtual TableColumnList * createColumns()=0
virtual QList< AbstractTreeItem *> getSortedItems(int, int, AbstractTreeModel::InterestingItems)
Definition: AbstractTableModel.cpp:211
virtual void sort()
Definition: AbstractTableModel.cpp:166
virtual bool isSorting() const
Definition: AbstractTableModel.cpp:105
void filterCountsChanged(int visibleRows, int totalRows)
void rebuildProgressRangeChanged(int, int)
virtual void rebuildSort()
Definition: AbstractTableModel.cpp:416
virtual void setSortLimit(int)
Definition: AbstractTableModel.cpp:133
Base class for tree models.
Definition: AbstractTreeModel.h:39
InternalPointerType
Definition: AbstractTreeItem.h:36
virtual int indexOfVisibleItem(AbstractTreeItem const *item) const =0
virtual void setGlobalSelection(bool selected)=0
virtual void setSortingEnabled(bool)
Definition: AbstractTableModel.cpp:120
virtual QList< AbstractTreeItem *> getSelectedItems()=0
virtual bool sortingIsEnabled() const
Definition: AbstractTableModel.cpp:115
virtual void reverseOrder(TableColumn *)
Definition: AbstractTableModel.cpp:191
void sortProgressRangeChanged(int, int)
virtual int getVisibleRowCount() const =0
Definition: AbstractTableModel.h:16
Translates the tree model into a table model.
Definition: AbstractTableModel.h:40
virtual TableColumnList * getColumns()
Definition: AbstractTableModel.cpp:146
Definition: TableColumn.h:18
void handleTreeSelectionChanged(QList< AbstractTreeItem * > newlySelectedItems, AbstractTreeItem::InternalPointerType)
Definition: AbstractTableModel.cpp:295
AbstractTableModel(AbstractTreeModel *, AbstractTableDelegate *)
Definition: AbstractTableModel.cpp:27
Warning
Definition: AbstractTableModel.h:46
Definition: TableColumnList.h:22
void tableSelectionChanged(QList< AbstractTreeItem *>)
void userWarning(AbstractTableModel::Warning)
Definition: AbstractTableModel.h:48
Definition: AbstractTableModel.h:47
virtual bool sortingOn() const
Definition: AbstractTableModel.cpp:141
InterestingItems
Definition: AbstractTreeModel.h:43
virtual const AbstractTableDelegate * getDelegate() const
Definition: AbstractTableModel.cpp:156
virtual QString getWarningMessage(AbstractTreeItem const *, TableColumn const *, QString valueToSave) const =0
virtual void applyFilter()
Definition: AbstractTableModel.cpp:161
AbstractTreeModel * getDataModel()
Definition: AbstractTableModel.cpp:199
void filterProgressRangeChanged(int, int)
A leaf item that is not ready for user interaction.
Definition: BusyLeafItem.h:25
Base class for delegates which create, read, and save data in the tables.
Definition: AbstractTableDelegate.h:25
Definition: BoxcarCachingAlgorithm.h:29
Namespace for ISIS/Bullet specific routines.
Definition: Apollo.h:31
virtual ~AbstractTableModel()
Definition: AbstractTableModel.cpp:72
virtual bool isFiltering() const
Definition: AbstractTableModel.cpp:110
virtual int sortLimit() const
Definition: AbstractTableModel.cpp:128
Base class for an item in the tree.
Definition: AbstractTreeItem.h:31
void treeSelectionChanged(QList< AbstractTreeItem *>)
void rebuildProgressChanged(int)
virtual QList< AbstractTreeItem *> getItems(int, int)=0

U.S. Department of the Interior | U.S. Geological Survey
ISIS | Privacy & Disclaimers | Astrogeology Research Program
To contact us, please post comments and questions on the USGS Astrogeology Discussion Board
To report a bug, or suggest a feature go to: ISIS Github
File Modified: 07/12/2023 23:13:58