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