99 lines
3.1 KiB
C++
Executable File
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
|
|
|