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 }