/** * @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 #include #include #include #include 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 &dtc, const std::shared_ptr &opmDtc, const std::shared_ptr &exmDtc, const FileDialogMode &dlgMode = FileDialogMode::modeOpenFile, const QVector &mainFolders = {}, const QVector &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 m_dtc; std::shared_ptr m_opmDtc; std::shared_ptr m_exmDtc; Ui::LtsFileDialogWidget *m_ui{nullptr}; LtsSession::LtsSession *m_session{nullptr}; int m_selectedFolderId{-1}; FileManagement::FileContent m_selectedFileContent; QString m_fileName; QVector m_fileTypes; QString m_xmlType; FileDialogMode m_dialogMode; QVector m_mainFolders; }; } // namespace LtsWidgets