File indexing completed on 2024-05-12 17:06:31

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