File: oxygenitemmodel.h

package info (click to toggle)
oxygen 4%3A6.3.4-1
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 26,896 kB
  • sloc: cpp: 23,036; python: 39; sh: 14; makefile: 5
file content (93 lines) | stat: -rw-r--r-- 2,043 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#ifndef ItemModel_h
#define ItemModel_h

//////////////////////////////////////////////////////////////////////////////
// itemmodel.h
// -------------------
//
// SPDX-FileCopyrightText: 2009-2010 Hugo Pereira Da Costa <hugo.pereira@free.fr>
//
// SPDX-License-Identifier: MIT
//////////////////////////////////////////////////////////////////////////////

#include "oxygen_export.h"

#include <QAbstractItemModel>

namespace Oxygen
{
//* Job model. Stores job information for display in lists
class OXYGEN_EXPORT ItemModel : public QAbstractItemModel
{
public:
    //* constructor
    explicit ItemModel(QObject * = nullptr);

    //* return all indexes in model starting from parent [recursive]
    QModelIndexList indexes(int column = 0, const QModelIndex &parent = QModelIndex()) const;

    //*@name sorting
    //@{

    //* sort
    void sort(void)
    {
        sort(sortColumn(), sortOrder());
    }

    //* sort
    void sort(int column, Qt::SortOrder order = Qt::AscendingOrder) override;

    //* current sorting column
    int sortColumn(void) const
    {
        return _sortColumn;
    }

    //* current sort order
    Qt::SortOrder sortOrder(void) const
    {
        return _sortOrder;
    }

    //@}

protected:
    //* this sort columns without calling the layout changed callbacks
    void privateSort(void)
    {
        privateSort(sortColumn(), sortOrder());
    }

    //* private sort, with no signals emmitted
    virtual void privateSort(int column, Qt::SortOrder order) = 0;

    //* used to sort items in list
    class SortFTor
    {
    public:
        //* constructor
        explicit SortFTor(const int &type, Qt::SortOrder order = Qt::AscendingOrder)
            : _type(type)
            , _order(order)
        {
        }

    protected:
        //* column
        int _type = 0;

        //* order
        Qt::SortOrder _order = Qt::AscendingOrder;
    };

private:
    //* sorting column
    int _sortColumn = 0;

    //* sorting order
    Qt::SortOrder _sortOrder = Qt::AscendingOrder;
};
}

#endif