File indexing completed on 2024-05-12 09:37:34
0001 #ifndef ItemModel_h 0002 #define ItemModel_h 0003 0004 ////////////////////////////////////////////////////////////////////////////// 0005 // itemmodel.h 0006 // ------------------- 0007 // 0008 // SPDX-FileCopyrightText: 2009-2010 Hugo Pereira Da Costa <hugo.pereira@free.fr> 0009 // 0010 // SPDX-License-Identifier: MIT 0011 ////////////////////////////////////////////////////////////////////////////// 0012 0013 #include "oxygen_export.h" 0014 0015 #include <QAbstractItemModel> 0016 0017 namespace Oxygen 0018 { 0019 0020 //* Job model. Stores job information for display in lists 0021 class OXYGEN_EXPORT ItemModel : public QAbstractItemModel 0022 { 0023 public: 0024 //* constructor 0025 explicit ItemModel(QObject * = nullptr); 0026 0027 //* return all indexes in model starting from parent [recursive] 0028 QModelIndexList indexes(int column = 0, const QModelIndex &parent = QModelIndex()) const; 0029 0030 //*@name sorting 0031 //@{ 0032 0033 //* sort 0034 void sort(void) 0035 { 0036 sort(sortColumn(), sortOrder()); 0037 } 0038 0039 //* sort 0040 void sort(int column, Qt::SortOrder order = Qt::AscendingOrder) override; 0041 0042 //* current sorting column 0043 int sortColumn(void) const 0044 { 0045 return _sortColumn; 0046 } 0047 0048 //* current sort order 0049 Qt::SortOrder sortOrder(void) const 0050 { 0051 return _sortOrder; 0052 } 0053 0054 //@} 0055 0056 protected: 0057 //* this sort columns without calling the layout changed callbacks 0058 void privateSort(void) 0059 { 0060 privateSort(sortColumn(), sortOrder()); 0061 } 0062 0063 //* private sort, with no signals emmitted 0064 virtual void privateSort(int column, Qt::SortOrder order) = 0; 0065 0066 //* used to sort items in list 0067 class SortFTor 0068 { 0069 public: 0070 //* constructor 0071 explicit SortFTor(const int &type, Qt::SortOrder order = Qt::AscendingOrder) 0072 : _type(type) 0073 , _order(order) 0074 { 0075 } 0076 0077 protected: 0078 //* column 0079 int _type = 0; 0080 0081 //* order 0082 Qt::SortOrder _order = Qt::AscendingOrder; 0083 }; 0084 0085 private: 0086 //* sorting column 0087 int _sortColumn = 0; 0088 0089 //* sorting order 0090 Qt::SortOrder _sortOrder = Qt::AscendingOrder; 0091 }; 0092 } 0093 0094 #endif