Merge feature/lts-viewer-validation-testing-phase into feature/qt6-migration-basis-modules-merge
Resolves 1 conflict (new_docker_build.sh, union of viewer-only + codification options); folds in fixes for pre-existing defects surfaced by the validation runs (KDReports-qt6 wiring, LtsSession RTI linking, LtsFileDialog/WLS/BSM Qt6/RTI API migration, GROUP4 target list, new --cmake_build_flags option); validated with BUILD_RTI=ON BUILD_GRANTLEE=ON in 3 Docker runs (run 3: build green, 6 base-state first-run CTest failures documented).
This commit is contained in:
30 files changed
+376
-247
No files matched your search
@@ -83,4 +83,5 @@ endif()
|
||||
# Register test with CTest
|
||||
if(BUILD_TESTING)
|
||||
add_test(NAME LtsFileDialogTest COMMAND $<TARGET_FILE:LtsFileDialogTest>)
|
||||
set_tests_properties(LtsFileDialogTest PROPERTIES ENVIRONMENT "QT_QPA_PLATFORM=offscreen" TIMEOUT 30)
|
||||
endif()
|
||||
@@ -53,14 +53,13 @@ bool DialogModelFile::initModel(const std::shared_ptr<FileManagement::Interface:
|
||||
clear();
|
||||
|
||||
// insert Model
|
||||
auto files = [this, xmlType, predicate](const std::vector<FileManagement::FileContent> & fcs, const std::vector<int> &, FileManagement::Interface::DataModification)
|
||||
// Dtc per-item callback: return true to stop iteration (iterateUntil), so collect with false.
|
||||
// Explicit std::function type disambiguates the void/bool overloads.
|
||||
std::function<bool(const FileManagement::FileContent &)> files = [this, xmlType, predicate](const FileManagement::FileContent &fc)
|
||||
{
|
||||
for (const auto& fc : fcs)
|
||||
{
|
||||
if (!predicate(fc, xmlType))
|
||||
continue;
|
||||
if (predicate(fc, xmlType))
|
||||
insertRow(fc);
|
||||
}
|
||||
return false;
|
||||
};
|
||||
m_flmDtc->fileContents(files);
|
||||
|
||||
@@ -79,7 +78,7 @@ QVariant DialogModelFile::data(const QModelIndex &index, int role) const
|
||||
{
|
||||
case Qt::BackgroundRole:
|
||||
{
|
||||
if (fl.fileStatus() == FileManagement::FileStatus::Deleted)
|
||||
if (fl.fileStatus == FileManagement::FileStatus::Deleted)
|
||||
return QGuiApplication::palette().color(QPalette::Disabled, QPalette::AlternateBase);
|
||||
return QGuiApplication::palette().color(QPalette::Active, QPalette::Base);
|
||||
}
|
||||
@@ -88,38 +87,38 @@ QVariant DialogModelFile::data(const QModelIndex &index, int role) const
|
||||
switch (index.column())
|
||||
{
|
||||
case NAME:
|
||||
return fl.name();
|
||||
return QString::fromStdString(fl.name);
|
||||
case ISTEMPLATE:
|
||||
return fl.isTemplate() ? tr("Yes") : tr("No");
|
||||
return fl.isTemplate ? tr("Yes") : tr("No");
|
||||
case FOLDER:
|
||||
return fl.folderId();
|
||||
return fl.folderId;
|
||||
case FILETYPE:
|
||||
return FileManagement::toString(fl.fileType());
|
||||
return FileManagement::toString(fl.fileType);
|
||||
case FILECATEGORY:
|
||||
return FileManagement::toString(fl.fileCategory());
|
||||
return FileManagement::toString(fl.fileCategory);
|
||||
case FILESTATUS:
|
||||
return FileManagement::toString(fl.fileStatus());
|
||||
return FileManagement::toString(fl.fileStatus);
|
||||
case OPERATOR:
|
||||
return QString::fromStdString(m_opmDtc->user(fl.operatorId()).name());
|
||||
return QString::fromStdString(m_opmDtc->user(fl.operatorId).name);
|
||||
case EXERCISE:
|
||||
return fl.exerciseId().has_value() ? fl.exerciseId().value() : QVariant();
|
||||
return fl.exerciseId.has_value() ? fl.exerciseId.value() : QVariant();
|
||||
case PHASE:
|
||||
return fl.phaseId().has_value() ? fl.phaseId().value() : QVariant();
|
||||
return fl.phaseId.has_value() ? fl.phaseId.value() : QVariant();
|
||||
case USEDBY:
|
||||
return fl.isUsedBy() ? tr("Yes") : tr("No");
|
||||
return fl.isUsedBy ? tr("Yes") : tr("No");
|
||||
case USES:
|
||||
return QString::fromStdString(fl.usedBy());
|
||||
return QString::number(fl.usedBy);
|
||||
case LASTMODIFIED:
|
||||
return DTG::toStringMSec(fl.lastModified().toMSecsSinceEpoch());
|
||||
return DTG::toStringMSec(fl.lastModified);
|
||||
case PROPERTIES:
|
||||
return QString::fromStdString(fl.properties());
|
||||
return QString::fromStdString(fl.properties);
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
case Qt::DecorationRole:
|
||||
{
|
||||
if (index.column() == NAME && fl.isHidden())
|
||||
if (index.column() == NAME && fl.isHidden)
|
||||
return QIcon(QLatin1String(":/style/lock.svg"));
|
||||
break;
|
||||
}
|
||||
@@ -136,9 +135,9 @@ int DialogModelFile::findFileIdFromName(const QString &fileName) const
|
||||
for (int row = 0; row < rc; ++row)
|
||||
{
|
||||
const FileManagement::FileContent &fl = this->getRowData(row);
|
||||
if (fl.name() == fileName)
|
||||
if (fl.name == fileName)
|
||||
{
|
||||
return fl.id();
|
||||
return fl.id;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
@@ -158,7 +157,7 @@ QMimeData * DialogModelFile::mimeData(const QModelIndexList &indexes) const
|
||||
|
||||
const QModelIndex & index = indexes.first();
|
||||
const FileManagement::FileContent & fl = this->getRowData(index.row());
|
||||
int id = fl.id();
|
||||
int id = fl.id;
|
||||
|
||||
if (id <= 0) return nullptr;
|
||||
|
||||
@@ -188,7 +187,7 @@ bool DialogFileProxyModel::lessThan(const QModelIndex &source_left, const QModel
|
||||
switch (source_left.column())
|
||||
{
|
||||
case LASTMODIFIED:
|
||||
return dataLeft.lastModified() < dataRight.lastModified();
|
||||
return dataLeft.lastModified < dataRight.lastModified;
|
||||
case NAME:
|
||||
case ISTEMPLATE:
|
||||
case FILETYPE:
|
||||
|
||||
+47
-44
@@ -12,6 +12,8 @@
|
||||
|
||||
#include <FileManagement/flm_translation.h>
|
||||
|
||||
#include <functional>
|
||||
|
||||
//#include <QtCore/QDebug>
|
||||
|
||||
namespace LtsWidgets
|
||||
@@ -68,16 +70,16 @@ QVariant DialogModelFolder::data(const QModelIndex &index, int role) const
|
||||
case NAME:
|
||||
return getFolderName(folderData);
|
||||
case ID:
|
||||
return folderData.id();
|
||||
return folderData.id;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
case Qt::UserRole:
|
||||
return folderData.id();
|
||||
return folderData.id;
|
||||
case Qt::DecorationRole:
|
||||
{
|
||||
if (folderData.isHidden())
|
||||
if (folderData.isHidden)
|
||||
return item->icon();
|
||||
break;
|
||||
}
|
||||
@@ -97,22 +99,22 @@ FileManagement::Folder DialogModelFolder::getFolder(const QModelIndex &idx) cons
|
||||
//-----------------------------------------------------------------------------------------------------------
|
||||
QString DialogModelFolder::getFolderName(const FileManagement::Folder &folderData) const
|
||||
{
|
||||
QString folderName = QString::fromStdString(folderData.name());
|
||||
QString folderName = QString::fromStdString(folderData.name);
|
||||
if (folderName.startsWith(QStringLiteral("$")))
|
||||
{
|
||||
folderName.remove(0,1);
|
||||
if (folderName.startsWith(QStringLiteral("EX_")))
|
||||
{
|
||||
int exId = folderName.remove(0,3).toInt();
|
||||
return QString::fromStdString(m_exmDtc->exercise(exId).name());
|
||||
return QString::fromStdString(m_exmDtc->exercise(exId).name);
|
||||
}
|
||||
if (folderName.startsWith(QStringLiteral("PH_")))
|
||||
{
|
||||
int phId = folderName.remove(0,3).toInt();
|
||||
return QString::fromStdString(m_exmDtc->exercisePhase(phId).name());
|
||||
return QString::fromStdString(m_exmDtc->exercisePhase(phId).name);
|
||||
}
|
||||
}
|
||||
return FileManagement::trFolderName(folderName);
|
||||
return FileManagement::trFolderName(folderName.toStdString());
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------------------------------------
|
||||
@@ -121,7 +123,7 @@ bool DialogModelFolder::isRowRemovable(NGLTreeItem *parentItem) const
|
||||
if (!parentItem)
|
||||
return false;
|
||||
FileManagement::Folder folderData = parentItem->data().value<FileManagement::Folder>();
|
||||
return folderData.isEditable();
|
||||
return folderData.isEditable;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------------------------------------
|
||||
@@ -133,34 +135,32 @@ bool DialogModelFolder::initModel(int exerciseId, const QVector<FileManagement::
|
||||
QHash<int, QModelIndex> parentItemIndexCache;
|
||||
QVector<int> idsToExclude;
|
||||
|
||||
auto cbFolders = [this, exerciseId, &tmap, &idsToExclude, &mainFolders, &parentItemIndexCache] (const std::vector<FileManagement::Folder> &folders, const std::vector<int32_t> &ids, FileManagement::Interface::DataModification mod)
|
||||
// Dtc per-item callback: return true to stop iteration (iterateUntil), so collect with false.
|
||||
// Explicit std::function type disambiguates the void/bool overloads.
|
||||
std::function<bool(const FileManagement::Folder &)> cbFolders = [this, exerciseId, &tmap, &idsToExclude, &mainFolders] (const FileManagement::Folder &data)
|
||||
{
|
||||
Q_UNUSED(ids);
|
||||
Q_UNUSED(mod);
|
||||
for (const auto &data : folders)
|
||||
if (data.isDeleted)
|
||||
return false;
|
||||
if (exerciseId > 0)
|
||||
{
|
||||
if (data.isDeleted())
|
||||
continue;
|
||||
if (exerciseId > 0)
|
||||
QString folderName = QString::fromStdString(data.name);
|
||||
if (folderName.startsWith(QStringLiteral("$EX_")))
|
||||
{
|
||||
QString folderName = QString::fromStdString(data.name());
|
||||
if (folderName.startsWith(QStringLiteral("$EX_")))
|
||||
{
|
||||
int exId = folderName.remove(0, 4).toInt();
|
||||
if (exId != exerciseId)
|
||||
idsToExclude.append(data.id());
|
||||
}
|
||||
int exId = folderName.remove(0, 4).toInt();
|
||||
if (exId != exerciseId)
|
||||
idsToExclude.append(data.id);
|
||||
}
|
||||
FileManagement::MainFolder mainFolder = static_cast<FileManagement::MainFolder>(data.path()[0]);
|
||||
//qCritical() << "Folder = " << data.name() << ", mainFolder = " << mainFolder.underlying();
|
||||
}
|
||||
FileManagement::MainFolder mainFolder = static_cast<FileManagement::MainFolder>(data.path[0]);
|
||||
//qCritical() << "Folder = " << data.name << ", mainFolder = " << static_cast<int>(mainFolder);
|
||||
if (!mainFolders.contains(mainFolder))
|
||||
{
|
||||
// qCritical() << "Excluded id = " << data.id();
|
||||
idsToExclude.append(data.id());
|
||||
// qCritical() << "Excluded id = " << data.id;
|
||||
idsToExclude.append(data.id);
|
||||
}
|
||||
|
||||
tmap.insert(data.id(), data);
|
||||
}
|
||||
tmap.insert(data.id, data);
|
||||
return false;
|
||||
};
|
||||
m_flmDtc->folders(cbFolders);
|
||||
|
||||
@@ -173,16 +173,16 @@ bool DialogModelFolder::initModel(int exerciseId, const QVector<FileManagement::
|
||||
int parentId = 0;
|
||||
FileManagement::Folder fld = iter.value();
|
||||
|
||||
if (fld.path().size() > 1)
|
||||
if (fld.path.size() > 1)
|
||||
{
|
||||
parentId = fld.path().at(fld.path().size() - 2);
|
||||
int idPos2 = fld.path().at(1);
|
||||
parentId = fld.path.at(fld.path.size() - 2);
|
||||
int idPos2 = fld.path.at(1);
|
||||
if (idsToExclude.contains(idPos2))
|
||||
continue;
|
||||
}
|
||||
else // main Folders
|
||||
{
|
||||
if (idsToExclude.contains(fld.id()))
|
||||
if (idsToExclude.contains(fld.id))
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -212,7 +212,7 @@ bool DialogModelFolder::onInsertRow(int &row, const QModelIndex &parent, const F
|
||||
QVariant data;
|
||||
data.setValue(folderData);
|
||||
QIcon icon;
|
||||
if (folderData.isHidden())
|
||||
if (folderData.isHidden)
|
||||
icon = QIcon(QLatin1String(":/style/lock.svg"));
|
||||
NGLTreeItem *item = new NGLTreeItem(data, icon);
|
||||
item->setModified(true);
|
||||
@@ -227,7 +227,7 @@ bool DialogModelFolder::onUpdateRow(const QModelIndex &index, const FileManageme
|
||||
data.setValue(folderData);
|
||||
|
||||
QIcon icon;
|
||||
if (folderData.isHidden())
|
||||
if (folderData.isHidden)
|
||||
icon = QIcon(QLatin1String(":/style/lock.svg"));
|
||||
return setItemData(index, data, icon);
|
||||
}
|
||||
@@ -243,7 +243,7 @@ bool DialogModelFolder::onDeleteRow(const QModelIndex &idx, bool isFirstItem)
|
||||
{
|
||||
NGLTreeItem *item = privateData(idx);
|
||||
FileManagement::Folder data = item->data().value<FileManagement::Folder>();
|
||||
data.setDeleted(true);
|
||||
data.isDeleted = true;
|
||||
}
|
||||
removeRow(idx.row(), idx.parent());
|
||||
|
||||
@@ -282,19 +282,22 @@ bool DialogModelProxyFolder::lessThan(const QModelIndex &source_left, const QMod
|
||||
const FileManagement::Folder folderLeft = itemLeft->data().value<FileManagement::Folder>();
|
||||
const FileManagement::Folder folderRight = itemRight->data().value<FileManagement::Folder>();
|
||||
|
||||
if (folderLeft.mainFolder() == FileManagement::MainFolder::GlobalDocuments || folderRight.mainFolder() == FileManagement::MainFolder::GlobalDocuments ||
|
||||
folderLeft.mainFolder() == FileManagement::MainFolder::UserDocuments || folderRight.mainFolder() == FileManagement::MainFolder::UserDocuments ||
|
||||
folderLeft.mainFolder() == FileManagement::MainFolder::ExerciseDocuments || folderRight.mainFolder() == FileManagement::MainFolder::ExerciseDocuments)
|
||||
// mainFolder() was part of the legacy Folder API; the generated Folder carries it in path[0]
|
||||
const int leftMain = folderLeft.path.empty() ? 0 : static_cast<int>(folderLeft.path[0]);
|
||||
const int rightMain = folderRight.path.empty() ? 0 : static_cast<int>(folderRight.path[0]);
|
||||
if (leftMain == static_cast<int>(FileManagement::MainFolder::GlobalDocuments) || rightMain == static_cast<int>(FileManagement::MainFolder::GlobalDocuments) ||
|
||||
leftMain == static_cast<int>(FileManagement::MainFolder::UserDocuments) || rightMain == static_cast<int>(FileManagement::MainFolder::UserDocuments) ||
|
||||
leftMain == static_cast<int>(FileManagement::MainFolder::ExerciseDocuments) || rightMain == static_cast<int>(FileManagement::MainFolder::ExerciseDocuments))
|
||||
{
|
||||
return FileManagement::toInt(folderLeft.mainFolder()) < FileManagement::toInt(folderRight.mainFolder());
|
||||
return leftMain < rightMain;
|
||||
}
|
||||
|
||||
if (folderLeft.name() != folderRight.name())
|
||||
if (folderLeft.name != folderRight.name)
|
||||
{
|
||||
return (folderLeft.name() < folderRight.name());
|
||||
return (folderLeft.name < folderRight.name);
|
||||
}
|
||||
|
||||
return folderLeft.id() < folderRight.id();
|
||||
return folderLeft.id < folderRight.id;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
@@ -324,10 +327,10 @@ bool DialogModelProxyFolder::filterAcceptsRow(int source_row, const QModelIndex
|
||||
return QSortFilterProxyModel::filterAcceptsRow(source_row, source_parent);
|
||||
|
||||
const FileManagement::Folder data = child->data().value<FileManagement::Folder>();
|
||||
if (data.operatorId() != m_operatorId)
|
||||
if (data.operatorId != m_operatorId)
|
||||
{
|
||||
// it's user folder -> check if it's in user documents and hide if it's not for the current operator
|
||||
for (int p : data.path())
|
||||
for (int p : data.path)
|
||||
{
|
||||
if (static_cast<FileManagement::MainFolder>(p) == FileManagement::MainFolder::UserDocuments)
|
||||
return false;
|
||||
|
||||
@@ -92,7 +92,7 @@ bool LtsFileDialog::init(LtsSession::LtsSession *session,
|
||||
//-----------------------------------------------------------------------------------------------------------
|
||||
int LtsFileDialog::getSelectedFileId() const
|
||||
{
|
||||
return m_editItemWidget->m_selectedFileContent.id();
|
||||
return m_editItemWidget->m_selectedFileContent.id;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------------------------------------
|
||||
|
||||
+22
-22
@@ -114,8 +114,8 @@ bool LtsFileDialogWidget::init(LtsSession::LtsSession *session,
|
||||
// initial all valid, not-deleted files
|
||||
auto predicate = [](const FileManagement::FileContent &fc, const QString &xmlType)
|
||||
{
|
||||
return (!fc.isDeleted() && fc.fileStatus() == FileManagement::FileStatus::Valid &&
|
||||
(xmlType.isEmpty() || fc.properties().find(xmlType.toStdString()) != std::string::npos));
|
||||
return (!fc.isDeleted && fc.fileStatus == FileManagement::FileStatus::Valid &&
|
||||
(xmlType.isEmpty() || fc.properties.find(xmlType.toStdString()) != std::string::npos));
|
||||
};
|
||||
m_modelFile->initModel(m_dtc, m_opmDtc, xmlType, predicate);
|
||||
|
||||
@@ -200,7 +200,7 @@ void LtsFileDialogWidget::onFolderSelectionChanged(const QItemSelection& /*selec
|
||||
//-----------------------------------------------------------------------------------------------------------
|
||||
void LtsFileDialogWidget::requestReadingSelectedFile()
|
||||
{
|
||||
emit readSelectedFile(m_selectedFileContent.id());
|
||||
emit readSelectedFile(m_selectedFileContent.id);
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------------------------------------
|
||||
@@ -228,7 +228,7 @@ void LtsFileDialogWidget::onChooseFileName()
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
void LtsFileDialogWidget::onFolderChanged(const FileManagement::Folder &data, FileManagement::Interface::DataModification modType)
|
||||
void LtsFileDialogWidget::onFolderChanged(const FileManagement::Folder &data, DataModification modType)
|
||||
{
|
||||
Q_UNUSED(data);
|
||||
Q_UNUSED(modType);
|
||||
@@ -240,7 +240,7 @@ void LtsFileDialogWidget::onFolderChanged(const FileManagement::Folder &data, Fi
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
void LtsFileDialogWidget::onFileChanged(const FileManagement::FileContent &data, FileManagement::Interface::DataModification modType)
|
||||
void LtsFileDialogWidget::onFileChanged(const FileManagement::FileContent &data, DataModification modType)
|
||||
{
|
||||
bool condition = showFile(data, m_xmlType);
|
||||
|
||||
@@ -250,17 +250,17 @@ void LtsFileDialogWidget::onFileChanged(const FileManagement::FileContent &data,
|
||||
if (selIndex.isValid())
|
||||
row = selIndex.row();
|
||||
|
||||
if (modType == FileManagement::Interface::DataModification::eRemoved)
|
||||
if (modType == DataModification::eRemoved)
|
||||
{
|
||||
m_modelFile->removeRow(row);
|
||||
return;
|
||||
}
|
||||
if (modType == FileManagement::Interface::DataModification::eAdded && condition)
|
||||
if (modType == DataModification::eAdded && condition)
|
||||
{
|
||||
m_modelFile->insertRow(data);
|
||||
return;
|
||||
}
|
||||
if (modType == FileManagement::Interface::DataModification::eModified && condition)
|
||||
if (modType == DataModification::eModified && condition)
|
||||
{
|
||||
m_modelFile->setRowData(row, data);
|
||||
return;
|
||||
@@ -301,7 +301,7 @@ void LtsFileDialogWidget::enaDisa()
|
||||
{
|
||||
QString folderName = m_modelFolder->getFolderName(m_modelFolder->getFolder(idxFolder));
|
||||
m_ui->lblSelectedFolder->setText(folderName);
|
||||
m_selectedFolderId = m_modelFolder->getFolder(idxFolder).id();
|
||||
m_selectedFolderId = m_modelFolder->getFolder(idxFolder).id;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -314,7 +314,7 @@ void LtsFileDialogWidget::enaDisa()
|
||||
if (idxFile.isValid())
|
||||
{
|
||||
m_selectedFileContent = m_modelFile->getRowData(m_ui->widgetFiles->currentIndex().row());
|
||||
m_fileName = m_selectedFileContent.name();
|
||||
m_fileName = QString::fromStdString(m_selectedFileContent.name);
|
||||
m_ui->leFile->setText(m_fileName);
|
||||
}
|
||||
else
|
||||
@@ -333,31 +333,31 @@ void LtsFileDialogWidget::enaDisa()
|
||||
//--------------------------------------------------------------------------
|
||||
bool LtsFileDialogWidget::showFile(const FileManagement::FileContent &fc, const QString &xmlType)
|
||||
{
|
||||
if (fc.isDeleted())
|
||||
if (fc.isDeleted)
|
||||
return false;
|
||||
|
||||
if (fc.folderId() != m_selectedFolderId)
|
||||
if (fc.folderId != m_selectedFolderId)
|
||||
return false;
|
||||
|
||||
if (!m_fileTypes.isEmpty() && !m_fileTypes.contains(fc.fileType()))
|
||||
if (!m_fileTypes.isEmpty() && !m_fileTypes.contains(fc.fileType))
|
||||
return false;
|
||||
|
||||
if (fc.fileStatus() != FileManagement::FileStatus::Valid)
|
||||
if (fc.fileStatus != FileManagement::FileStatus::Valid)
|
||||
return false;
|
||||
|
||||
// get folder selected
|
||||
const QModelIndex selIndex = selectedIndexViewFolder();
|
||||
const NGLTreeItem *item = m_modelFolder->privateData(selIndex);
|
||||
const FileManagement::Folder fld = item->data().value<FileManagement::Folder>();
|
||||
const auto &fldPath = fld.path();
|
||||
const auto &fldPath = fld.path;
|
||||
|
||||
// filter in USER DOCUMENTS folder and subfolders
|
||||
if (LtsUtils::isInVector(fldPath, static_cast<int>(FileManagement::MainFolder::UserDocuments)))
|
||||
{
|
||||
const int operatorId = LtsSessionData::LtsSessionData::getInstance()->getOperatorId();
|
||||
// filter on User Category and OperatorId
|
||||
if (fc.fileCategory() == FileManagement::FileCategory::User &&
|
||||
fc.operatorId() != operatorId)
|
||||
if (fc.fileCategory == FileManagement::FileCategory::User &&
|
||||
fc.operatorId != operatorId)
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -365,20 +365,20 @@ bool LtsFileDialogWidget::showFile(const FileManagement::FileContent &fc, const
|
||||
if (LtsUtils::isInVector(fldPath, static_cast<int>(FileManagement::MainFolder::ExerciseDocuments)))
|
||||
{
|
||||
// filter on Category = Exercise
|
||||
if (fc.fileCategory() != FileManagement::FileCategory::Exercise)
|
||||
if (fc.fileCategory != FileManagement::FileCategory::Exercise)
|
||||
return false;
|
||||
if (m_session->exerciseId() > 0)
|
||||
{
|
||||
// filter on exact exerciseId
|
||||
if (fc.exerciseId() != m_session->exerciseId())
|
||||
// filter on exact exerciseId (optional member, no comparison operator)
|
||||
if (!fc.exerciseId.has_value() || fc.exerciseId.value() != m_session->exerciseId())
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// filter on XmlType
|
||||
if (fc.fileType() == FileManagement::FileType::Xml && !xmlType.isEmpty() && fc.properties().size() > 0)
|
||||
if (fc.fileType == FileManagement::FileType::Xml && !xmlType.isEmpty() && fc.properties.size() > 0)
|
||||
{
|
||||
const QString &prop = QString::fromStdString(fc.properties());
|
||||
const QString &prop = QString::fromStdString(fc.properties);
|
||||
if (!prop.contains(xmlType, Qt::CaseSensitive))
|
||||
{
|
||||
return false;
|
||||
|
||||
@@ -65,12 +65,12 @@ protected slots:
|
||||
// folders
|
||||
void onFolderSelectionChanged(const QItemSelection & /*selected*/,
|
||||
const QItemSelection& /*deselected*/);
|
||||
void onFolderChanged(const FileManagement::Folder &data, FileManagement::Interface::DataModification modType);
|
||||
void onFolderChanged(const FileManagement::Folder &data, DataModification modType);
|
||||
|
||||
// files
|
||||
FileManagement::FileContent onSelectFile();
|
||||
void onChooseFileName();
|
||||
void onFileChanged(const FileManagement::FileContent &data, FileManagement::Interface::DataModification modType);
|
||||
void onFileChanged(const FileManagement::FileContent &data, DataModification modType);
|
||||
bool showFile(const FileManagement::FileContent &fc, const QString &xmlType);
|
||||
|
||||
private:
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
|
||||
#include "lts_file_dialog.h"
|
||||
#include <QtWidgets/QApplication>
|
||||
#include <QTimer>
|
||||
#include <NGLLogger/NGLLoggerBootstrap.h>
|
||||
#include <DDS/DDSConnector/dds_connector.h>
|
||||
|
||||
@@ -61,6 +62,9 @@ int main(int argc, char **argv)
|
||||
|
||||
view->show();
|
||||
|
||||
// Auto-exit for CI/headless testing
|
||||
QTimer::singleShot(1000, &app, &QApplication::quit);
|
||||
|
||||
int ret = app.exec();
|
||||
|
||||
view->deleteLater();
|
||||
|
||||
Reference in new issue
Block a user