DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
SchemaCustomTableModel.cpp
Go to the documentation of this file.
1// DUNE DAQ modification notice:
2// This file has been modified from the original ATLAS dbe source for the DUNE DAQ project.
3// Fork baseline commit: dbe-02-12-17 (2022-05-12).
4// Renamed since fork: yes (from src/SchemaEditor/SchemaCustomTableModel.cpp to
5// apps/SchemaEditor/SchemaCustomTableModel.cpp).
6
9#include "dbe/SchemaStyle.hpp"
10#include <QDataStream>
11#include <QIODevice>
12
13using namespace dunedaq::oks;
14
15dbse::CustomTableModel::CustomTableModel(QStringList Headers, QObject* parent)
16 : QAbstractTableModel(parent)
17 , HeaderList(Headers)
18{
19 setupModel();
20}
21
23
24int
25dbse::CustomTableModel::rowCount(const QModelIndex& parent) const
26{
27 Q_UNUSED(parent);
28 return m_data.size();
29}
30
31int
32dbse::CustomTableModel::columnCount(const QModelIndex& parent) const
33{
34 Q_UNUSED(parent);
35 return HeaderList.size();
36}
37
38Qt::ItemFlags
39dbse::CustomTableModel::flags(const QModelIndex& index) const
40{
41 Q_UNUSED(index);
42 return Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsDragEnabled;
43}
44
45QVariant
46dbse::CustomTableModel::headerData(int section, Qt::Orientation orientation, int role) const
47{
48 if (role != Qt::DisplayRole) {
49 return QVariant();
50 }
51
52 if (orientation == Qt::Horizontal) {
53 return HeaderList.at(section);
54 }
55
56 return QVariant();
57}
58
59QVariant
60dbse::CustomTableModel::data(const QModelIndex& index, int role) const
61{
62 if (role == Qt::DisplayRole) {
63 return m_data.value(index.row()).value(index.column());
64 }
65 if (role == Qt::ToolTipRole) {
66 return m_tooltips.value(index.row()).value(index.column());
67 }
68 if (role == Qt::ForegroundRole) {
69 return m_brushes.at(index.row());
70 }
71 if (role == Qt::BackgroundRole) {
72 return m_backgrounds.at(index.row());
73 }
74
75 return QVariant();
76}
77
78QStringList
80{
81 if (!index.isValid()) {
82 return QStringList();
83 }
84
85 return m_data.at(index.row());
86}
87
88void
90{
91 std::vector<OksClass*> ClassList;
93
94 for (unsigned int i = 0; i < ClassList.size(); ++i) {
95 QList<QString> Row;
96 OksClass* Class = ClassList.at(i);
97 Row.append(QString(Class->get_name().c_str()));
98 m_data.append(Row);
99 m_tooltips.append(QStringList{ QString(Class->get_description().c_str()) });
100
101 auto fn = Class->get_file()->get_full_file_name();
102 if (!KernelWrapper::GetInstance().IsFileWritable(fn)) {
103 m_brushes.emplace_back(QBrush(SchemaStyle::get_color("foreground", "readonly")));
104 m_backgrounds.emplace_back(SchemaStyle::get_color("background", "readonly"));
105 } else if (fn == KernelWrapper::GetInstance().GetActiveSchema()) {
106 m_brushes.emplace_back(QBrush(SchemaStyle::get_color("foreground", "active_file")));
107 m_backgrounds.emplace_back(SchemaStyle::get_color("background", "active_file"));
108 } else {
109 m_brushes.emplace_back(QBrush(SchemaStyle::get_color("foreground", "default")));
110 m_backgrounds.emplace_back(SchemaStyle::get_color("background", "default"));
111 }
112 }
113}
114
115QStringList
117{
118 QStringList types;
119 types << "application/vnd.text.list";
120 return types;
121}
122
123QMimeData*
124dbse::CustomTableModel::mimeData(const QModelIndexList& indexes) const
125{
126 QMimeData* mimeData = new QMimeData();
127 QByteArray encodedData;
128
129 QDataStream stream(&encodedData, QIODevice::WriteOnly);
130
131 foreach (QModelIndex index, indexes) {
132 if (index.isValid() && index.column() == 0) {
133 QString ClassName = data(index, Qt::DisplayRole).toString();
134 stream << ClassName;
135 }
136 }
137
138 mimeData->setData("application/vnd.text.list", encodedData);
139 return mimeData;
140}
int rowCount(const QModelIndex &parent) const
QMimeData * mimeData(const QModelIndexList &indexes) const
QVariant data(const QModelIndex &index, int role) const
QVariant headerData(int section, Qt::Orientation orientation, int role) const
CustomTableModel(QStringList Headers, QObject *parent=nullptr)
QList< QList< QString > > m_tooltips
int columnCount(const QModelIndex &parent) const
QStringList mimeTypes() const
Drag/Drop Handlers.
QList< QList< QString > > m_data
std::vector< QColor > m_backgrounds
Qt::ItemFlags flags(const QModelIndex &index) const
std::vector< QBrush > m_brushes
QStringList getRowFromIndex(QModelIndex &index)
static KernelWrapper & GetInstance()
void GetClassList(std::vector< dunedaq::oks::OksClass * > &ClassList) const
The OKS class.
Definition class.hpp:223
const std::string & get_name() const noexcept
Definition class.hpp:374
const std::string & get_description() const noexcept
Definition class.hpp:378
OksFile * get_file() const noexcept
Definition class.hpp:352
const std::string & get_full_file_name() const
Definition file.hpp:528
Missing configuration section
Message.
static QColor get_color(const QString &item, const QString &group)