File failed to load: https://isis.astrogeology.usgs.gov/7.1.0/Object/assets/jax/output/NativeMML/config.js
Isis Developer Reference
AbstractTableModel.h
Go to the documentation of this file.
1#ifndef AbstractTableModel_H
2#define AbstractTableModel_H
3
10/* SPDX-License-Identifier: CC0-1.0 */
11
12
13#include <QException>
14#include <QExplicitlySharedDataPointer>
15#include <QObject>
16#include <QtConcurrent>
17
18// can't forward declare the InternalPointerType or InterestingItems enums
19#include "AbstractTreeItem.h"
20#include "AbstractTreeModel.h"
21
22
23class QAtomicInt;
24template< typename T > class QFutureWatcher;
25class QTimer;
26template< typename T > class QList;
27
28
29namespace Isis {
30 class AbstractTableDelegate;
31 class AbstractTreeModel;
32 class BusyLeafItem;
33 class TableColumn;
34 class TableColumnList;
35
48 class AbstractTableModel : public QObject {
49 class LessThanFunctor;
50
51 Q_OBJECT
52
53 public:
54 enum Warning {
55 None = 0,
58 };
59
61 virtual ~AbstractTableModel();
62
65 AbstractTreeItem *) = 0;
67 virtual int getVisibleRowCount() const = 0;
68 virtual QString getWarningMessage(AbstractTreeItem const *,
69 TableColumn const *, QString valueToSave) const = 0;
70 virtual int indexOfVisibleItem(AbstractTreeItem const *item) const = 0;
71
72 virtual bool isSorting() const;
73 virtual bool isFiltering() const;
74 virtual bool sortingIsEnabled() const;
75 virtual void setSortingEnabled(bool);
76 virtual int sortLimit() const;
77 virtual void setSortLimit(int);
78 virtual bool sortingOn() const;
79 virtual TableColumnList *getColumns();
80 virtual const AbstractTableDelegate *getDelegate() const;
81
82
83 public slots:
84 virtual void setGlobalSelection(bool selected) = 0;
85 virtual void applyFilter();
86 virtual void sort();
87 virtual void reverseOrder(TableColumn *);
88 virtual void updateSort();
89 virtual void rebuildSort();
90
91
92 signals:
100 void filterCountsChanged(int visibleRows, int totalRows);
103
105
106 protected:
109 const AbstractTreeModel *getDataModel() const;
116 QList< AbstractTreeItem * > newlySelectedItems,
118
119
120 private: // disable copying of this class (these are not implemented)
122 AbstractTableModel &operator=(AbstractTableModel const &);
123
124
125 private slots:
126 void cancelSort();
127 void itemsLost();
128 void sortStatusUpdated();
129 void sortFinished();
130
131
132 private:
134 void nullify();
135 void setSorting(bool sorting);
136
137
138 private:
139 AbstractTreeModel *m_dataModel;
140 AbstractTableDelegate *m_delegate;
141 QList< AbstractTreeItem * > * m_sortedItems;
142 BusyLeafItem *m_busyItem;
143 TableColumnList *m_columns;
144 QTimer *m_sortStatusPoller;
145 LessThanFunctor *m_lessThanFunctor;
146
147 bool m_sortingEnabled;
148 int m_sortLimit;
149 bool m_sorting;
151
152 static const int SORT_UPDATE_FREQUENCY = 50; // in milliseconds
153
154
155 private:
156 class LessThanFunctorData;
157
163 class LessThanFunctor : public std::binary_function <
164 AbstractTreeItem *const &, AbstractTreeItem *const &, bool > {
165 public:
166 LessThanFunctor(TableColumn const *someColumn);
167 LessThanFunctor(LessThanFunctor const &);
168 ~LessThanFunctor();
169
170 int getCompareCount() const;
171 void interrupt();
172 bool interrupted();
173 void reset();
174
175 bool operator()(AbstractTreeItem *const &,
176 AbstractTreeItem *const &);
177 LessThanFunctor &operator=(LessThanFunctor const &);
178
179
180 private:
181 TableColumn const *m_column;
182 QExplicitlySharedDataPointer<LessThanFunctorData> m_sharedData;
183 };
184
194 class LessThanFunctorData : public QSharedData {
195 public:
196 LessThanFunctorData();
197 LessThanFunctorData(LessThanFunctorData const &);
198 ~LessThanFunctorData();
199
200 int getCompareCount() const;
201 void incrementCompareCount();
202
203 void setInterrupted(bool);
204 bool interrupted();
205
206
207 private:
208 QAtomicInt m_compareCount;
209 QAtomicInt m_interruptFlag;
210 };
211
212
224 class SortingCanceledException : public QException {
225 public:
226 void raise() const { throw *this; }
227 QException *clone() const {
228 return new SortingCanceledException(*this);
229 }
230 };
231 };
232}
233
234#endif
Base class for delegates which create, read, and save data in the tables.
Definition: AbstractTableDelegate.h:33
Translates the tree model into a table model.
Definition: AbstractTableModel.h:48
void filterProgressRangeChanged(int, int)
virtual const AbstractTableDelegate * getDelegate() const
Definition: AbstractTableModel.cpp:164
virtual void updateSort()
Definition: AbstractTableModel.cpp:203
virtual int getVisibleRowCount() const =0
void rebuildProgressRangeChanged(int, int)
virtual bool isFiltering() const
Definition: AbstractTableModel.cpp:118
virtual bool sortingOn() const
Definition: AbstractTableModel.cpp:149
virtual QList< AbstractTreeItem * > getSelectedItems()=0
virtual QList< AbstractTreeItem * > getItems(AbstractTreeItem *, AbstractTreeItem *)=0
virtual void rebuildSort()
Definition: AbstractTableModel.cpp:424
virtual QString getWarningMessage(AbstractTreeItem const *, TableColumn const *, QString valueToSave) const =0
virtual void applyFilter()
Definition: AbstractTableModel.cpp:169
AbstractTreeModel * getDataModel()
Definition: AbstractTableModel.cpp:207
virtual void setSortLimit(int)
Definition: AbstractTableModel.cpp:141
void userWarning(AbstractTableModel::Warning)
virtual void setGlobalSelection(bool selected)=0
Warning
Definition: AbstractTableModel.h:54
@ None
Definition: AbstractTableModel.h:55
@ SortingDisabled
Definition: AbstractTableModel.h:56
@ SortingTableSizeLimitReached
Definition: AbstractTableModel.h:57
virtual ~AbstractTableModel()
Definition: AbstractTableModel.cpp:80
virtual void sort()
Definition: AbstractTableModel.cpp:174
virtual void reverseOrder(TableColumn *)
Definition: AbstractTableModel.cpp:199
virtual TableColumnList * createColumns()=0
virtual QList< AbstractTreeItem * > getSortedItems(int, int, AbstractTreeModel::InterestingItems)
Definition: AbstractTableModel.cpp:219
virtual void setSortingEnabled(bool)
Definition: AbstractTableModel.cpp:128
virtual QList< AbstractTreeItem * > getItems(int, int)=0
virtual TableColumnList * getColumns()
Definition: AbstractTableModel.cpp:154
virtual int indexOfVisibleItem(AbstractTreeItem const *item) const =0
void sortProgressRangeChanged(int, int)
void treeSelectionChanged(QList< AbstractTreeItem * >)
void tableSelectionChanged(QList< AbstractTreeItem * >)
void handleTreeSelectionChanged(QList< AbstractTreeItem * > newlySelectedItems, AbstractTreeItem::InternalPointerType)
Definition: AbstractTableModel.cpp:303
virtual bool isSorting() const
Definition: AbstractTableModel.cpp:113
virtual int sortLimit() const
Definition: AbstractTableModel.cpp:136
AbstractTableModel(AbstractTreeModel *, AbstractTableDelegate *)
Definition: AbstractTableModel.cpp:35
virtual bool sortingIsEnabled() const
Definition: AbstractTableModel.cpp:123
void filterCountsChanged(int visibleRows, int totalRows)
void rebuildProgressChanged(int)
Base class for an item in the tree.
Definition: AbstractTreeItem.h:39
InternalPointerType
Definition: AbstractTreeItem.h:44
Base class for tree models.
Definition: AbstractTreeModel.h:47
InterestingItems
Definition: AbstractTreeModel.h:51
A leaf item that is not ready for user interaction.
Definition: BusyLeafItem.h:33
Definition: TableColumn.h:26
Definition: TableColumnList.h:30
This is free and unencumbered software released into the public domain.
Definition: AbstractTableModel.h:24
This is free and unencumbered software released into the public domain.
Definition: BoxcarCachingAlgorithm.h:13
This is free and unencumbered software released into the public domain.
Definition: Apollo.h:16

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: 02/21/2025 21:56:15