File: JobModel.h

package info (click to toggle)
qtop 2.3.3-1
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 3,840 kB
  • ctags: 5,775
  • sloc: cpp: 38,795; makefile: 9
file content (130 lines) | stat: -rw-r--r-- 3,017 bytes parent folder | download
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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
#ifndef JobModel_h
#define JobModel_h

/******************************************************************************
*
* Copyright (C) 2002 Hugo PEREIRA <mailto: hugo.pereira@free.fr>
*
* This is free software; you can redistribute it and/or modify it under the
* terms of the GNU General Public License as published by the Free Software
* Foundation; either version 2 of the License, or (at your option) any later
* version.
*
* This software is distributed in the hope that it will be useful, but WITHOUT
* Any WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
* for more details.
*
* You should have received a copy of the GNU General Public License along with
* this program.  If not, see <http://www.gnu.org/licenses/>.
*
*******************************************************************************/

#include "Counter.h"
#include "Job.h"
#include "TreeModel.h"

#include <QColor>

//* Job model. Stores job information for display in lists
class JobModel : public TreeModel<Job>, public Counter
{

    //* Qt meta object declaration
    Q_OBJECT

    public:

    //* constructor
    JobModel(QObject *parent = nullptr);

    //* column type enumeration
    enum ColumnType
    {
        Name,
        User,
        Id,
        ParentId,
        Cpu,
        Memory,
        CpuTime,
        Priority,
        Nice,
        VirtualMemory,
        ResidentMemory,
        SharedMemory,
        Threads,
        StartTime,
        Command,
        Empty,
        nColumns
    };

    //*@name methods reimplemented from base class
    //@{

    // return job for a given index
    virtual QVariant data( const QModelIndex&, int ) const;

    //* header data
    virtual QVariant headerData( int, Qt::Orientation, int = Qt::DisplayRole ) const;

    //* number of columns for a given index
    virtual int columnCount(const QModelIndex& = QModelIndex()) const
    { return nColumns; }

    //@}

    //* today
    void setToday( const TimeStamp& today )
    { today_ = today; }

    protected:

    //* sorting
    virtual void _sort( int column, Qt::SortOrder order = Qt::AscendingOrder )
    { _root().sort( SortFTor( column, order ) ); }

    private Q_SLOTS:

    //* configuration
    void _updateConfiguration(void);

    private:


    //* used to sort IconCaches
    class SortFTor: public ItemModel::SortFTor
    {

        public:

        //* constructor
        SortFTor( const int& type, Qt::SortOrder order = Qt::AscendingOrder ):
            ItemModel::SortFTor( type, order )
        {}

        //* prediction
        bool operator() ( const Item& first, const Item& second ) const
        { return (*this)( first.get(), second.get() ); }

        //* prediction
        bool operator() ( Job, Job ) const;

    };

    //* today
    TimeStamp today_;

    //* true if icons must be shown
    bool showIcons_;

    //* icon size
    QSize iconSize_;

    //* empty icon
    QIcon emptyIcon_;

};

#endif