File indexing completed on 2024-05-05 05:35:33
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 //* Job model. Stores job information for display in lists 0020 class OXYGEN_EXPORT ItemModel : public QAbstractItemModel 0021 { 0022 public: 0023 //* constructor 0024 explicit ItemModel(QObject * = nullptr); 0025 0026 //* return all indexes in model starting from parent [recursive] 0027 QModelIndexList indexes(int column = 0, const QModelIndex &parent = QModelIndex()) const; 0028 0029 //*@name sorting 0030 //@{ 0031 0032 //* sort 0033 void sort(void) 0034 { 0035 sort(sortColumn(), sortOrder()); 0036 } 0037 0038 //* sort 0039 void sort(int column, Qt::SortOrder order = Qt::AscendingOrder) override; 0040 0041 //* current sorting column 0042 int sortColumn(void) const 0043 { 0044 return _sortColumn; 0045 } 0046 0047 //* current sort order 0048 Qt::SortOrder sortOrder(void) const 0049 { 0050 return _sortOrder; 0051 } 0052 0053 //@} 0054 0055 protected: 0056 //* this sort columns without calling the layout changed callbacks 0057 void privateSort(void) 0058 { 0059 privateSort(sortColumn(), sortOrder()); 0060 } 0061 0062 //* private sort, with no signals emmitted 0063 virtual void privateSort(int column, Qt::SortOrder order) = 0; 0064 0065 //* used to sort items in list 0066 class SortFTor 0067 { 0068 public: 0069 //* constructor 0070 explicit SortFTor(const int &type, Qt::SortOrder order = Qt::AscendingOrder) 0071 : _type(type) 0072 , _order(order) 0073 { 0074 } 0075 0076 protected: 0077 //* column 0078 int _type = 0; 0079 0080 //* order 0081 Qt::SortOrder _order = Qt::AscendingOrder; 0082 }; 0083 0084 private: 0085 //* sorting column 0086 int _sortColumn = 0; 0087 0088 //* sorting order 0089 Qt::SortOrder _sortOrder = Qt::AscendingOrder; 0090 }; 0091 } 0092 0093 #endif