File indexing completed on 2024-04-28 17:02:21

0001 /*
0002    This file is part of Massif Visualizer
0003 
0004    Copyright 2014 Milian Wolff <mail@milianw.de>
0005 
0006    This program is free software; you can redistribute it and/or
0007    modify it under the terms of the GNU General Public License as
0008    published by the Free Software Foundation; either version 2 of
0009    the License or (at your option) version 3 or any later version
0010    accepted by the membership of KDE e.V. (or its successor approved
0011    by the membership of KDE e.V.), which shall act as a proxy
0012    defined in Section 14 of version 3 of the license.
0013 
0014    This program is distributed in the hope that it will be useful,
0015    but WITHOUT ANY WARRANTY; without even the implied warranty of
0016    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
0017    GNU General Public License for more details.
0018 
0019    You should have received a copy of the GNU General Public License
0020    along with this program.  If not, see <http://www.gnu.org/licenses/>.
0021 */
0022 
0023 #ifndef ALLOCATORSMODEL_H
0024 #define ALLOCATORSMODEL_H
0025 
0026 #include <QAbstractItemModel>
0027 #include <QVector>
0028 
0029 #include <massifdata/util.h>
0030 
0031 #include "modelitem.h"
0032 
0033 namespace Massif {
0034 
0035 class TreeLeafItem;
0036 
0037 class FileData;
0038 
0039 class AllocatorsModel : public QAbstractItemModel
0040 {
0041     Q_OBJECT
0042 
0043 public:
0044     explicit AllocatorsModel(const FileData* data, QObject* parent = 0);
0045     virtual ~AllocatorsModel();
0046 
0047     virtual int rowCount(const QModelIndex& parent = QModelIndex()) const;
0048     virtual int columnCount(const QModelIndex& parent = QModelIndex()) const;
0049 
0050     virtual QModelIndex index(int row, int column, const QModelIndex& parent = QModelIndex()) const;
0051     virtual QModelIndex parent(const QModelIndex& child) const;
0052 
0053     virtual QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const;
0054     virtual QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const;
0055 
0056     QModelIndex indexForItem(const Massif::ModelItem& item) const;
0057     void settingsChanged();
0058 
0059     enum Columns {
0060         Function = 0,
0061         Peak,
0062         Location,
0063         NUM_COLUMNS,
0064     };
0065 
0066     enum Roles {
0067         SortRole = Qt::UserRole + 1,
0068         ItemRole,
0069     };
0070 private:
0071     struct Data
0072     {
0073         ParsedLabel label;
0074         const TreeLeafItem* peak;
0075     };
0076     QVector<Data> m_data;
0077 };
0078 
0079 }
0080 
0081 #endif // ALLOCATORSMODEL_H