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

99 lines
3.1 KiB
C++
Executable File

/**
* @RDE_HEADER@
* LtsFileDialogWidget and LtsFileDialog - custom widgets
* $Id$
* $HeadURL$
* $Author$
*
* Created by Iuliana Ojog & Mike Wille, SLSE, 2017-09-15
*/
#pragma once
#include "lts_file_dialog.h"
#include <LtsFileDialog/ltsfiledialog_export.h>
#include <Plugins/FileManagement/flm_data_plugin_interface.h>
#include <Plugins/OperatorManagement/opm_data_plugin_interface.h>
#include <Plugins/ExerciseManagement/exm_data_plugin_interface.h>
#include <QWidget>
namespace LtsWidgets
{
class DialogModelFile;
class DialogModelFolder;
class DialogModelProxyFolder;
class DialogFileProxyModel;
class LTSFILEDIALOG_EXPORT LtsFileDialogWidget : public QWidget
{
friend class LtsFileDialog;
Q_OBJECT
public:
explicit LtsFileDialogWidget(QWidget *parent = nullptr);
~LtsFileDialogWidget();
bool init(LtsSession::LtsSession *session,
const std::shared_ptr<FileManagement::Interface::Dtc> &dtc,
const std::shared_ptr<OperatorManagement::Interface::Dtc> &opmDtc,
const std::shared_ptr<ExerciseManagement::Interface::Dtc> &exmDtc,
const FileDialogMode &dlgMode = FileDialogMode::modeOpenFile,
const QVector<FileManagement::MainFolder> &mainFolders = {},
const QVector<FileManagement::FileType> &fileTypes = {FileManagement::FileType::Unknown},
const int &folderId = 0,
const QString &xmlType = QString());
void requestReadingSelectedFile();
QString dragMimeType() const;
signals:
void enableButtons();
void accepted();
void readSelectedFile(int fileId);
private:
void enaDisa();
void saveFileName(const QString &name);
QModelIndex selectedIndexViewFolder();
void selectFolder();
protected slots:
// folders
void onFolderSelectionChanged(const QItemSelection & /*selected*/,
const QItemSelection& /*deselected*/);
void onFolderChanged(const FileManagement::Folder &data, DataModification modType);
// files
FileManagement::FileContent onSelectFile();
void onChooseFileName();
void onFileChanged(const FileManagement::FileContent &data, DataModification modType);
bool showFile(const FileManagement::FileContent &fc, const QString &xmlType);
private:
DialogModelFolder *m_modelFolder{nullptr};
DialogModelProxyFolder *m_proxyModelFolder{nullptr};
DialogModelFile *m_modelFile{nullptr};
DialogFileProxyModel *m_proxyModelFile{nullptr};
std::shared_ptr<FileManagement::Interface::Dtc> m_dtc;
std::shared_ptr<OperatorManagement::Interface::Dtc> m_opmDtc;
std::shared_ptr<ExerciseManagement::Interface::Dtc> m_exmDtc;
Ui::LtsFileDialogWidget *m_ui{nullptr};
LtsSession::LtsSession *m_session{nullptr};
int m_selectedFolderId{-1};
FileManagement::FileContent m_selectedFileContent;
QString m_fileName;
QVector<FileManagement::FileType> m_fileTypes;
QString m_xmlType;
FileDialogMode m_dialogMode;
QVector<FileManagement::MainFolder> m_mainFolders;
};
} // namespace LtsWidgets