DUNE-DAQ
DUNE Trigger and Data Acquisition software
Toggle main menu visibility
Loading...
Searching...
No Matches
dunedaq
sourcecode
dbe
src
structure
FileModel.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: no.
5
7
#include "
dbe/StyleUtility.hpp
"
8
#include "
dbe/confaccessor.hpp
"
9
#include "
dbe/ui_constants.hpp
"
10
11
#include <QDir>
12
#include <QFileInfo>
14
#include "
dbe/FileModel.hpp
"
15
#include "
dbe/MainWindow.hpp
"
16
#include "
dbe/config_api_get.hpp
"
17
18
dbe::FileModel::FileModel
(QObject* parent)
19
: QAbstractTableModel(parent)
20
,
Headers
{ tr(
"Name"
), tr(
"Folder"
), tr(
"Access"
), tr(
"Status"
) }
21
{
22
initpaths
();
23
initconnections
();
24
initmodel
();
25
}
26
27
dbe::FileModel::FileModel
(QList<QStringList>
const
& FileList, QObject* parent)
28
: QAbstractTableModel(parent)
29
,
IncludedFiles
(FileList)
30
,
Headers
{ tr(
"Name"
), tr(
"Folder"
), tr(
"Access"
), tr(
"Status"
) }
31
{
32
initconnections
();
33
}
34
35
dbe::FileModel::~FileModel
() {}
36
37
int
38
dbe::FileModel::rowCount
(
const
QModelIndex& parent)
const
39
{
40
if
(!parent.isValid()) {
41
return
IncludedFiles
.size();
42
}
43
44
return
0;
45
}
46
47
int
48
dbe::FileModel::columnCount
(
const
QModelIndex& parent)
const
49
{
50
Q_UNUSED(parent)
51
return
Headers
.size();
52
}
53
54
QVariant
55
dbe::FileModel::data
(
const
QModelIndex& index,
int
role)
const
56
{
57
if
(index.isValid()) {
58
if
(role == Qt::DisplayRole) {
59
return
QVariant(
IncludedFiles
.at(index.row()).at(index.column()));
60
}
61
if
(role == Qt::ForegroundRole) {
62
if
(
IncludedFiles
.at(index.row()).at(
static_cast<
int
>
(
tablepositions::filepermission
)) ==
"RO"
) {
63
return
QBrush(
StyleUtility::FileReadOnlyForeground
);
64
}
65
}
66
if
(role == Qt::BackgroundRole) {
67
if
(
IncludedFiles
.at(index.row()).at(
static_cast<
int
>
(
tablepositions::filepermission
)) ==
"RO"
) {
68
return
QBrush(
StyleUtility::FileReadOnlyBackground
);
69
}
70
}
71
}
72
73
return
QVariant();
74
}
75
76
QVariant
77
dbe::FileModel::headerData
(
int
section, Qt::Orientation orientation,
int
role)
const
78
{
79
if
(role == Qt::DisplayRole) {
80
if
(orientation == Qt::Horizontal) {
81
return
Headers
.at(section);
82
}
83
84
if
(orientation == Qt::Vertical) {
85
return
section + 1;
86
}
87
}
88
89
return
QVariant();
90
}
91
92
Qt::ItemFlags
93
dbe::FileModel::flags
(
const
QModelIndex&
/*index*/
)
const
94
{
95
// if ( IncludedFiles.at ( index.row() ).at ( static_cast<int>
96
// ( tablepositions::filepermission ) ) == "RW" )
97
// {
98
return
Qt::ItemIsEnabled | Qt::ItemIsSelectable;
99
// }
100
101
// return Qt::ItemIsSelectable;
102
}
103
104
void
105
dbe::FileModel::initpaths
()
106
{
107
QString TDAQ_DB_REPOSITORY = getenv(
"TDAQ_DB_REPOSITORY"
);
108
if
(TDAQ_DB_REPOSITORY.isEmpty() ==
false
) {
109
QString TDAQ_DB_USER_REPOSITORY = getenv(
"TDAQ_DB_USER_REPOSITORY"
);
110
FolderPathList
= TDAQ_DB_USER_REPOSITORY.split(
":"
, Qt::SkipEmptyParts);
111
112
FolderPathList
<<
dbe::MainWindow::findthis
()->
find_db_repository_dir
();
113
}
else
{
114
QString DUNEDAQ_DB_PATH = getenv(
"DUNEDAQ_DB_PATH"
);
115
FolderPathList
= DUNEDAQ_DB_PATH.split(
":"
, Qt::SkipEmptyParts);
116
}
117
118
for
(QString& PathName :
FolderPathList
) {
119
if
(!PathName.endsWith(
"/"
)) {
120
PathName.append(
"/"
);
121
}
122
}
123
}
124
125
void
126
dbe::FileModel::initconnections
()
127
{
128
connect(
129
this
, SIGNAL(
FileCacheReady
(QList<QStringList>&)), &
confaccessor::ref
(), SLOT(GetFileCache(QList<QStringList>&)));
130
}
131
132
QString
133
dbe::FileModel::GetFullFileName
(QString& FileName)
134
{
135
QFileInfo
FileInfo
(FileName);
136
137
if
(
FileInfo
.isRelative()) {
138
bool
found =
false
;
139
for
(
const
QString& Folder :
FolderPathList
) {
140
QDir TdaqFolder(Folder);
141
142
if
(TdaqFolder.exists(FileName)) {
143
FileName = TdaqFolder.path() +
"/"
+ FileName;
144
char
* rpath = realpath(FileName.toStdString().c_str(), NULL);
145
FileName = QString(rpath);
146
free(rpath);
147
found =
true
;
148
break
;
149
}
150
}
151
if
(!found) {
152
FileName =
FileInfo
.absoluteFilePath();
153
}
154
}
155
156
return
FileName;
157
}
158
159
QList<QStringList>
160
dbe::FileModel::GetFilesInfo
()
const
161
{
162
return
IncludedFiles
;
163
}
164
165
void
166
dbe::FileModel::initmodel
()
167
{
168
QStringList sources =
dbe::config::api::get::file::inclusions
({
confaccessor::dbfullname
() });
169
170
std::list<std::string> updated =
confaccessor::uncommitted_files
();
171
for
(QString
const
& source : sources) {
172
QFileInfo srcinfo(source);
173
QString fn = srcinfo.filePath();
174
QString dn =
GetFullFileName
(fn).remove(QRegularExpression(
"/[a-zA-Z0-9_-]*.data.xml"
));
175
176
QString modified{};
177
auto
file =
GetFullFileName
(fn).toStdString();
178
for
(
auto
ufile : updated) {
179
if
(file == ufile) {
180
modified =
"Modified"
;
181
break
;
182
}
183
}
184
185
IncludedFiles
.append(
186
QStringList{ srcinfo.fileName(), dn,
confaccessor::check_file_rw
(source) ?
"RW"
:
"RO"
, modified });
187
}
188
189
if
(
IncludedFiles
.size()) {
190
emit
FileCacheReady
(
IncludedFiles
);
191
}
192
}
FileModel.hpp
MainWindow.hpp
StyleUtility.hpp
dbe::FileInfo
Definition
FileInfo.hpp:23
dbe::FileInfo::FileInfo
FileInfo(QString filename, QWidget *parent=0)
Definition
FileInfo.cpp:196
dbe::FileModel::columnCount
int columnCount(const QModelIndex &parent) const
Definition
FileModel.cpp:48
dbe::FileModel::IncludedFiles
QList< QStringList > IncludedFiles
Definition
FileModel.hpp:44
dbe::FileModel::FolderPathList
QStringList FolderPathList
Definition
FileModel.hpp:45
dbe::FileModel::headerData
QVariant headerData(int section, Qt::Orientation orientation, int role=Qt::DisplayRole) const
Definition
FileModel.cpp:77
dbe::FileModel::initconnections
void initconnections()
Definition
FileModel.cpp:126
dbe::FileModel::Headers
QStringList Headers
Definition
FileModel.hpp:46
dbe::FileModel::initmodel
void initmodel()
Definition
FileModel.cpp:166
dbe::FileModel::flags
Qt::ItemFlags flags(const QModelIndex &index) const
Definition
FileModel.cpp:93
dbe::FileModel::FileModel
FileModel(QObject *parent=nullptr)
Including QT Headers.
Definition
FileModel.cpp:18
dbe::FileModel::rowCount
int rowCount(const QModelIndex &parent) const
Definition
FileModel.cpp:38
dbe::FileModel::GetFilesInfo
QList< QStringList > GetFilesInfo() const
Definition
FileModel.cpp:160
dbe::FileModel::data
QVariant data(const QModelIndex &index, int role=Qt::DisplayRole) const
Definition
FileModel.cpp:55
dbe::FileModel::~FileModel
~FileModel()
Definition
FileModel.cpp:35
dbe::FileModel::initpaths
void initpaths()
Definition
FileModel.cpp:105
dbe::FileModel::FileCacheReady
void FileCacheReady(QList< QStringList > &Files)
dbe::FileModel::GetFullFileName
QString GetFullFileName(QString &FileName)
Definition
FileModel.cpp:133
dbe::MainWindow::find_db_repository_dir
QString find_db_repository_dir()
Definition
MainWindow.cpp:619
dbe::MainWindow::findthis
static MainWindow * findthis()
Definition
MainWindow.cpp:1562
dbe::StyleUtility::FileReadOnlyForeground
static QColor FileReadOnlyForeground
Definition
StyleUtility.hpp:29
dbe::StyleUtility::FileReadOnlyBackground
static QColor FileReadOnlyBackground
Definition
StyleUtility.hpp:30
dbe::confaccessor::uncommitted_files
static std::list< std::string > uncommitted_files()
Definition
confaccessor.cpp:302
dbe::confaccessor::check_file_rw
static bool check_file_rw(const QString &FileName)
Definition
confaccessor.cpp:268
dbe::confaccessor::dbfullname
static QString dbfullname()
Definition
confaccessor.cpp:135
dbe::confaccessor::ref
static confaccessor & ref()
Definition
confaccessor.cpp:37
dbe::config::api::get::file::inclusions
static QStringList inclusions(QStringList const &candidates, QStringList files={})
Definition
config_api_get.cpp:233
confaccessor.hpp
config_api_get.hpp
ui_constants.hpp
tablepositions::filepermission
@ filepermission
Definition
ui_constants.hpp:14
Generated on
for DUNE-DAQ by
1.18.0