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 apps/SchemaEditor/SchemaCustomTableModel.cpp).
5
8#include "dbe/SchemaStyle.hpp"
9#include <QIODevice>
10#include <QDataStream>
11
12using namespace dunedaq::oks;
13
14dbse::CustomTableModel::CustomTableModel ( QStringList Headers, QObject * parent )
15 : QAbstractTableModel ( parent ),
16 HeaderList ( Headers )
17{
18 setupModel();
19}
20
24
25int dbse::CustomTableModel::rowCount ( const QModelIndex & parent ) const
26{
27 Q_UNUSED ( parent );
28 return m_data.size();
29}
30
31int dbse::CustomTableModel::columnCount ( const QModelIndex & parent ) const
32{
33 Q_UNUSED ( parent );
34 return HeaderList.size();
35}
36
37Qt::ItemFlags dbse::CustomTableModel::flags ( const QModelIndex & index ) const
38{
39 Q_UNUSED ( index );
40 return Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsDragEnabled;
41}
42
43QVariant dbse::CustomTableModel::headerData ( int section, Qt::Orientation orientation,
44 int role ) const
45{
46 if ( role != Qt::DisplayRole )
47 {
48 return QVariant();
49 }
50
51 if ( orientation == Qt::Horizontal )
52 {
53 return HeaderList.at ( section );
54 }
55
56 return QVariant();
57}
58
59QVariant dbse::CustomTableModel::data ( const QModelIndex & index, int role ) const
60{
61 if ( role == Qt::DisplayRole )
62 {
63 return m_data.value ( index.row() ).value ( index.column() );
64 }
65 if ( role == Qt::ToolTipRole )
66 {
67 return m_tooltips.value ( index.row() ).value ( index.column() );
68 }
69 if (role == Qt::ForegroundRole) {
70 return m_brushes.at(index.row());
71 }
72 if (role == Qt::BackgroundRole) {
73 return m_backgrounds.at(index.row());
74 }
75
76 return QVariant();
77}
78
79QStringList dbse::CustomTableModel::getRowFromIndex ( QModelIndex & index )
80{
81 if ( !index.isValid() )
82 {
83 return QStringList();
84 }
85
86 return m_data.at ( index.row() );
87}
88
90{
91 std::vector<OksClass *> ClassList;
93
94 for ( unsigned int i = 0; i < ClassList.size(); ++i )
95 {
96 QList<QString> Row;
97 OksClass * Class = ClassList.at ( i );
98 Row.append ( QString ( Class->get_name().c_str() ) );
99 m_data.append ( Row );
100 m_tooltips.append (QStringList {QString ( Class->get_description().c_str() )});
101
102 auto fn = Class->get_file()->get_full_file_name();
103 if (!KernelWrapper::GetInstance().IsFileWritable (fn)) {
104 m_brushes.emplace_back(QBrush(SchemaStyle::get_color("foreground", "readonly")));
105 m_backgrounds.emplace_back(SchemaStyle::get_color("background", "readonly"));
106 }
107 else if (fn == KernelWrapper::GetInstance().GetActiveSchema()) {
108 m_brushes.emplace_back(QBrush(SchemaStyle::get_color("foreground", "active_file")));
109 m_backgrounds.emplace_back(SchemaStyle::get_color("background", "active_file"));
110 }
111 else {
112 m_brushes.emplace_back(QBrush(SchemaStyle::get_color("foreground", "default")));
113 m_backgrounds.emplace_back(SchemaStyle::get_color("background", "default"));
114 }
115 }
116}
117
119{
120 QStringList types;
121 types << "application/vnd.text.list";
122 return types;
123}
124
125QMimeData * dbse::CustomTableModel::mimeData ( const QModelIndexList & indexes ) const
126{
127 QMimeData * mimeData = new QMimeData();
128 QByteArray encodedData;
129
130 QDataStream stream ( &encodedData, QIODevice::WriteOnly );
131
132 foreach ( QModelIndex index, indexes )
133 {
134 if ( index.isValid() && index.column() == 0 )
135 {
136 QString ClassName = data ( index, Qt::DisplayRole ).toString();
137 stream << ClassName;
138 }
139 }
140
141 mimeData->setData ( "application/vnd.text.list", encodedData );
142 return mimeData;
143}
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:205
const std::string & get_name() const noexcept
Definition class.hpp:368
const std::string & get_description() const noexcept
Definition class.hpp:373
OksFile * get_file() const noexcept
Definition class.hpp:343
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)