Files
qt5-legatus-legacy/Lts/Viewer/LtsFileDialog/lts_dialog_model_file.h
T
2026-08-13 18:33:10 +02:00

89 lines
2.3 KiB
C++
Executable File

/**
* @RDE_HEADER@
* from FileManagement - FileContent model
* $Id$
* $HeadURL$
* $Author$
* Created by Iuliana Ojog, SLSE, 2017-07-11
*/
#pragma once
#include <Services/FileManagement/flm_dtc.h>
#include <Services/OperatorManagement/opm_dtc.h>
#include <LtsWidgets/lts_abstract_table_model.h>
#include <LtsWidgets/lts_column_filter_proxy_model.h>
// --------------------------------------------------------
namespace LtsWidgets
{
// --------------------------------------------------------
enum Columns
{
NAME = 0,
ISTEMPLATE,
FILETYPE,
FILECATEGORY,
FILESTATUS,
EXERCISE,
PHASE,
OPERATOR,
USEDBY,
USES,
LASTMODIFIED,
PROPERTIES,
FOLDER,
COUNT,
};
// --------------------------------------------------------
class DialogModelFile : public LtsWidgets::LtsAbstractTableModel<FileManagement::FileContent>
{
Q_OBJECT
public:
explicit DialogModelFile(QObject *parent = nullptr);
bool initModel(const std::shared_ptr<FileManagement::Interface::Dtc> &dtc,
const std::shared_ptr<OperatorManagement::Interface::Dtc> &opmDtc,
const QString &xmlType,
const std::function<bool(const FileManagement::FileContent &, const QString &)> &predicate);
QVariant data(const QModelIndex &, int) const override final;
int findFileIdFromName(const QString &fileName) const;
QStringList mimeTypes() const override;
QMimeData *mimeData(const QModelIndexList &indexes) const override;
Qt::DropActions supportedDragActions() const override
{
return Qt::CopyAction | Qt::MoveAction;
}
Qt::ItemFlags flags(const QModelIndex &modelIndex) const override
{
return LtsWidgets::LtsAbstractTableModel<FileManagement::FileContent>::flags(modelIndex) | Qt::ItemIsDragEnabled;
}
private:
std::shared_ptr<FileManagement::Interface::Dtc> m_flmDtc;
std::shared_ptr<OperatorManagement::Interface::Dtc> m_opmDtc;
friend class DialogFileProxyModel;
};
class DialogFileProxyModel final : public LtsWidgets::LtsColumnFilterProxyModel
{
Q_OBJECT
public:
using LtsWidgets::LtsColumnFilterProxyModel::LtsColumnFilterProxyModel;
void setSourceModel(QAbstractItemModel *sourceModel) override;
protected:
bool lessThan(const QModelIndex &source_left, const QModelIndex &source_right) const override;
private:
DialogModelFile *m_sourceModel = nullptr;
};
}