Initial commit
This commit is contained in:
commit
b7d90b9afe
16245 files changed
+3396666
No files matched your search
+273
@@ -0,0 +1,273 @@
|
||||
/**
|
||||
* @RDE_HEADER@
|
||||
* FileManagement - FileExplorer dialog
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
* Created by Iuliana Ojog, SLSE, 2017-05-11
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <FileManagement/flm_dtc.h>
|
||||
#include <FileManagement/flm_ftc.h>
|
||||
#include <FileManagement/logger.h>
|
||||
#include <OperatorManagement/opm_dtc.h>
|
||||
#include <ExerciseManagement/exm_dtc.h>
|
||||
#include <ParticipantManagement/ppm_dtc.h>
|
||||
|
||||
#include <LtsWidgets/lts_dialog.h>
|
||||
#include <LtsWidgets/lts_frameless_dialog.h>
|
||||
#include <LtsUtilsGuiDds/request_helper.h>
|
||||
#include <LtsSession/lts_session.h>
|
||||
#include <Plugins/FileManagement/flm_combobox_gui_plugin_interface.h>
|
||||
#include <Plugins/FileManagement/flm_explorer_gui_plugin_interface.h>
|
||||
|
||||
#include "flm_get_content.h"
|
||||
|
||||
namespace Ui
|
||||
{
|
||||
class FileManagementDialogWidget;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
// FileManagementDialogWidget
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
namespace FileManagement
|
||||
{
|
||||
class DialogModelFolder;
|
||||
class DialogModelProxyFolder;
|
||||
class DialogModelFile;
|
||||
class DialogFileProxyModel;
|
||||
class ForeignGuiComboboxInterface;
|
||||
|
||||
enum class FileDialogMode
|
||||
{
|
||||
OpenFile = 0, // used as modal select file to open
|
||||
SaveFile = 1, // used as modal select folder to save file
|
||||
User = 2, // used by normal RW user to organize library
|
||||
Admin = 3 // used as admin, can export, remove files
|
||||
};
|
||||
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
class FileManagementDialogWidget final : public QWidget
|
||||
, protected FileManagement::Interface::Ftc::FolderRemoveReplyHandler
|
||||
, protected FileManagement::Interface::Ftc::FileContentRemoveReplyHandler
|
||||
, protected FileManagement::Interface::Ftc::FileContentModifyReplyHandler
|
||||
, protected FileManagement::Interface::Ftc::FileContentChangeStatusReplyHandler
|
||||
{
|
||||
Q_OBJECT
|
||||
friend class FileManagementDialogTab;
|
||||
friend class FileManagementDialog;
|
||||
public:
|
||||
explicit FileManagementDialogWidget(QWidget *parent = nullptr);
|
||||
~FileManagementDialogWidget();
|
||||
|
||||
bool init(LtsSession::LtsSession *session,
|
||||
FileDialogMode dlgMode = FileDialogMode::OpenFile,
|
||||
const QVector<FileType> &fileTypes = QVector<FileType>(),
|
||||
int folderId = 0,
|
||||
const QString &xmlType = QString());
|
||||
|
||||
Q_SIGNALS:
|
||||
void enableButtons();
|
||||
void accepted();
|
||||
void rejected();
|
||||
|
||||
private:
|
||||
void enaDisa();
|
||||
void saveFileName(const QString &name);
|
||||
|
||||
QModelIndex selectedIndexViewFolder() const;
|
||||
bool isFolderRemovable(const QModelIndex &idx) const;
|
||||
void removeCurrentRowFolder();
|
||||
|
||||
static QString getTemplateFile(const QString &fileName);
|
||||
|
||||
FileManagement::FileType getFileType(const QString &fileExt);
|
||||
|
||||
void onFolderRemoveReply(const Core::FunctionReplyObject &replyObject) override final { m_requestHelper->requestReply(replyObject); }
|
||||
void onFileContentRemoveReply(const Core::FunctionReplyObject &replyObject) override final { m_requestHelper->requestReply(replyObject); }
|
||||
void onFileContentModifyReply(const Core::FunctionReplyObject &replyObject) override final { m_requestHelper->requestReply(replyObject); }
|
||||
void onFileContentChangeStatusReply(const Core::FunctionReplyObject &replyObject) override final { m_requestHelper->requestReply(replyObject); }
|
||||
|
||||
void createNewOfficeFile(const QString &fileName);
|
||||
static QString getFileTypeStr(FileManagement::FileType fileType);
|
||||
|
||||
protected slots:
|
||||
void onReject();
|
||||
|
||||
// folders
|
||||
void onAddFolder();
|
||||
void onEditFolder();
|
||||
void onRemoveFolder();
|
||||
void onFolderSelectionChanged();
|
||||
void folderContextMenuRequested(const QPoint &position);
|
||||
void onFolderChanged(const FileManagement::Folder &data, DataModification modType);
|
||||
void onRefreshFolders();
|
||||
void onCopyFolder();
|
||||
void onCutFolder();
|
||||
void onPasteFolder();
|
||||
void selectFolder();
|
||||
|
||||
// files
|
||||
void onExportFile();
|
||||
void onImportFile();
|
||||
void onNewOfficeWord();
|
||||
void onNewOfficeExcel();
|
||||
void onNewOfficePowerPoint();
|
||||
void onNewLibreOfficeWrite();
|
||||
void onNewLibreOfficeCalc();
|
||||
void onNewLibreOfficePresent();
|
||||
void onNewFileFromTemplate();
|
||||
void onRemoveFile();
|
||||
void onDeleteFile();
|
||||
void onRestoreFile();
|
||||
void onEditFile();
|
||||
void onPreviewFile();
|
||||
void fileContextMenuRequested(const QPoint &position);
|
||||
void onCopyFile();
|
||||
void onCutFile();
|
||||
void onPasteFile();
|
||||
void onSelectFile();
|
||||
void onChooseFileName();
|
||||
void onFileChanged(const FileManagement::FileContent &data, DataModification modType);
|
||||
bool showFile(const FileManagement::FileContent &fc, const QString &xmlType);
|
||||
void reInitModelFile(bool restoreSelected = false);
|
||||
|
||||
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<FileManagement::Interface::Ftc> m_ftc;
|
||||
std::shared_ptr<OperatorManagement::Interface::Dtc> m_opmDtc;
|
||||
std::shared_ptr<ExerciseManagement::Interface::Dtc> m_exmDtc;
|
||||
std::shared_ptr<ParticipantManagement::Interface::Dtc> m_ppmDtc;
|
||||
std::shared_ptr<FileManagement::ForeignGuiComboboxInterface> m_flmGuiCbxIfc;
|
||||
std::shared_ptr<FileManagement::ForeignGuiInterface> m_flmGuiIfc;
|
||||
|
||||
Ui::FileManagementDialogWidget *m_ui{nullptr};
|
||||
LtsSession::LtsSession *m_session{nullptr};
|
||||
QString m_menuGroup;
|
||||
LtsUtils::RequestHelper *m_requestHelper{nullptr};
|
||||
GetFileContent *m_getContent{nullptr};
|
||||
|
||||
// folder actions
|
||||
QAction *m_actionAddFolder{nullptr};
|
||||
QAction *m_actionRenameFolder{nullptr};
|
||||
QAction *m_actionRemoveFolder{nullptr};
|
||||
QAction *m_actionRefreshFolders{nullptr};
|
||||
QAction *m_actionCutFolder{nullptr};
|
||||
QAction *m_actionCopyFolder{nullptr};
|
||||
QAction *m_actionPasteFolder{nullptr};
|
||||
|
||||
FileManagement::Folder m_copyFolder;
|
||||
int m_selectedFolderId{-1};
|
||||
|
||||
// file actions
|
||||
QAction *m_actionImportFile{nullptr};
|
||||
QAction *m_actionNewOfficeExcel{nullptr};
|
||||
QAction *m_actionNewOfficeWord{nullptr};
|
||||
QAction *m_actionNewOfficePowerPoint{nullptr};
|
||||
QAction *m_actionNewLibreOfficeWrite{nullptr};
|
||||
QAction *m_actionNewLibreOfficeCalc{nullptr};
|
||||
QAction *m_actionNewLibreOfficePresent{nullptr};
|
||||
QAction *m_actionNewFromTemplate{nullptr};
|
||||
QAction *m_actionEditFile{nullptr};
|
||||
QAction *m_actionDeleteFile{nullptr};
|
||||
QAction *m_actionPreviewFile{nullptr};
|
||||
|
||||
QAction *m_actionCutFile{nullptr};
|
||||
QAction *m_actionCopyFile{nullptr};
|
||||
QAction *m_actionPasteFile{nullptr};
|
||||
|
||||
// admin actions
|
||||
QAction *m_actionRemoveFile{nullptr};
|
||||
QAction *m_actionRestoreFile{nullptr};
|
||||
QAction *m_actionExportFile{nullptr};
|
||||
|
||||
FileManagement::FileContent m_copyFile;
|
||||
FileManagement::FileContent m_selectedFileContent;
|
||||
std::vector<uint8_t> m_content;
|
||||
QString m_fileName;
|
||||
QVector<FileManagement::FileType> m_fileTypes;
|
||||
QString m_xmlType;
|
||||
|
||||
FileDialogMode m_dialogMode;
|
||||
bool m_isAdminMode;
|
||||
LOGGER_T m_logger;
|
||||
};
|
||||
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
class FileManagementDialog : public LtsWidgets::LtsFramelessDialog
|
||||
{
|
||||
Q_OBJECT
|
||||
friend class FileManagementDialogWidget;
|
||||
public:
|
||||
explicit FileManagementDialog(QWidget *parent = nullptr);
|
||||
~FileManagementDialog();
|
||||
|
||||
bool init(LtsSession::LtsSession *session,
|
||||
FileDialogMode dlgMode = FileDialogMode::OpenFile,
|
||||
const QVector<FileType> &fileTypes = QVector<FileType>(),
|
||||
int folderId = 0,
|
||||
const QString &xmlType = QString());
|
||||
|
||||
FileManagement::FileContent getSelectedFile() const { return m_editItemWidget->m_selectedFileContent; }
|
||||
int getSelectedFileId() const { return m_editItemWidget->m_selectedFileContent.id(); }
|
||||
int getSelectedFolderId() const { return m_editItemWidget->m_selectedFolderId; }
|
||||
QString getFileName() const { return m_editItemWidget->m_fileName; }
|
||||
|
||||
Q_SIGNALS:
|
||||
void fileSelected(int folderId, int fileId, const QString &fileName);
|
||||
protected:
|
||||
void accept() override;
|
||||
private:
|
||||
void enaDisa();
|
||||
|
||||
private:
|
||||
FileManagementDialogWidget *m_editItemWidget{nullptr};
|
||||
LtsWidgets::LtsDialogButtonBox *m_buttonBox{nullptr};
|
||||
FileDialogMode m_dialogMode;
|
||||
LOGGER_T m_logger;
|
||||
};
|
||||
|
||||
//-------------------------------------------------------------------------------------------------
|
||||
class FileManagementDialogTab : public LtsWidgets::LtsDialog
|
||||
{
|
||||
Q_OBJECT
|
||||
friend class FileManagementDialogWidget;
|
||||
public:
|
||||
explicit FileManagementDialogTab(const QString &menuGroup, QWidget *parent = nullptr);
|
||||
~FileManagementDialogTab();
|
||||
|
||||
bool init(LtsSession::LtsSession *session,
|
||||
FileDialogMode dlgMode = FileDialogMode::OpenFile,
|
||||
const QVector<FileType> &fileTypes = QVector<FileType>(),
|
||||
const int &folderId = 0,
|
||||
const QString &buttonName = QString());
|
||||
|
||||
int getSelectedFileId() const { return m_editItemWidget->m_selectedFileContent.id(); }
|
||||
int getSelectedFolder() const { return m_editItemWidget->m_selectedFolderId; }
|
||||
QString getFileName() const { return m_editItemWidget->m_fileName; }
|
||||
FileContent getSelectedFile() const { return m_editItemWidget->m_selectedFileContent; }
|
||||
|
||||
signals:
|
||||
void accepted();
|
||||
|
||||
private:
|
||||
void retranslate() override;
|
||||
void enaDisa();
|
||||
|
||||
|
||||
private:
|
||||
FileManagementDialogWidget *m_editItemWidget{nullptr};
|
||||
FileDialogMode m_dialogMode;
|
||||
LOGGER_T m_logger;
|
||||
};
|
||||
|
||||
|
||||
} // namespace
|
||||
Reference in new issue
Block a user