/** * @RDE_HEADER@ * LtsFileDialogWidget and LtsFileDialog - custom widgets * $Id$ * $HeadURL$ * $Author$ * Created by Iuliana Ojog, SLSE, 2017-07-11 */ #include "lts_file_dialog.h" #include "ui_lts_file_dialog.h" #include "lts_file_dialog_widget.h" #include "lts_dialog_model_folder.h" #include "lts_dialog_model_file.h" #include #include namespace LtsWidgets { //----------------------------------------------------------------------------------------------------------- // LtsFileDialog //----------------------------------------------------------------------------------------------------------- LtsFileDialog::LtsFileDialog(QWidget *parent) : LtsWidgets::LtsFramelessDialog(parent, LtsWidgets::Behaviour::Modal) , m_editItemWidget(new LtsFileDialogWidget(this)) , m_buttonBox (new LtsWidgets::LtsDialogButtonBox(this)) { LtsWidgets::DialogButton btnSelectFile = LtsWidgets::DialogButton::Load; m_buttonBox->setText(btnSelectFile, tr("Select File")); m_buttonBox->setToolTip(btnSelectFile, tr("Select file from library")); m_buttonBox->setButtonEnabled(btnSelectFile, false); m_buttonBox->setButtonVisible(btnSelectFile, true); connect(m_buttonBox->getButton(LtsWidgets::DialogButton::Close), &QPushButton::clicked, this, &LtsFileDialog::close); //hide ok and apply m_buttonBox->getButton(LtsWidgets::DialogButton::Apply)->hide(); m_buttonBox->getButton(LtsWidgets::DialogButton::Ok)->hide(); } //----------------------------------------------------------------------------------------------------------- LtsFileDialog::~LtsFileDialog() { delete m_editItemWidget; } //----------------------------------------------------------------------------------------------------------- bool LtsFileDialog::init(LtsSession::LtsSession *session, const std::shared_ptr &dtc, const std::shared_ptr &opmDtc, const std::shared_ptr &exmDtc, const FileDialogMode &dlgMode, const QVector &mainFolders, const QVector &fileTypes, const int &folderId, const QString &buttonName, const QString &xmlType) { if (!m_editItemWidget->init(session, dtc, opmDtc, exmDtc, dlgMode, mainFolders, fileTypes, folderId, xmlType)) return false; m_dialogMode = dlgMode; QVBoxLayout *layout = new QVBoxLayout(this); layout->addWidget(m_editItemWidget); layout->addWidget(m_buttonBox); this->setLayout(layout); if (!buttonName.isEmpty()) { m_buttonBox->setText(LtsWidgets::DialogButton::Load, buttonName); m_buttonBox->setToolTip(LtsWidgets::DialogButton::Load, buttonName); } if (m_dialogMode == FileDialogMode::modeSaveFile) m_buttonBox->connectButton(LtsWidgets::DialogButton::Load, m_editItemWidget, &LtsFileDialogWidget::onChooseFileName); else if (m_dialogMode == FileDialogMode::modeOpenFile) m_buttonBox->connectButton(LtsWidgets::DialogButton::Load, m_editItemWidget, &LtsFileDialogWidget::onSelectFile); connect(m_editItemWidget, &LtsFileDialogWidget::enableButtons, this, &LtsFileDialog::enaDisa); connect(m_editItemWidget, &LtsFileDialogWidget::accepted, this, &LtsFileDialog::accept); connect(m_buttonBox->getButton(LtsWidgets::DialogButton::Close), &QPushButton::clicked, this, &LtsFileDialog::reject); enaDisa(); return true; } //----------------------------------------------------------------------------------------------------------- int LtsFileDialog::getSelectedFileId() const { return m_editItemWidget->m_selectedFileContent.id(); } //----------------------------------------------------------------------------------------------------------- FileManagement::FileContent LtsFileDialog::getSelectedFile() const { return m_editItemWidget->m_selectedFileContent; } //----------------------------------------------------------------------------------------------------------- int LtsFileDialog::getSelectedFolder() const { return m_editItemWidget->m_selectedFolderId; } //----------------------------------------------------------------------------------------------------------- QString LtsFileDialog::getFileName() const { return m_editItemWidget->m_fileName; } //----------------------------------------------------------------------------------------------------------- void LtsFileDialog::enaDisa() { LtsWidgets::DialogButton btnSelectFile = LtsWidgets::DialogButton::Load; m_buttonBox->setButtonEnabled(btnSelectFile, false); QModelIndex idxFile = m_editItemWidget->m_ui->widgetFiles->currentIndex(); if (m_dialogMode == FileDialogMode::modeOpenFile && idxFile.isValid()) m_buttonBox->setButtonEnabled(btnSelectFile, true); if (m_dialogMode == FileDialogMode::modeSaveFile && !m_editItemWidget->m_fileName.isEmpty()) m_buttonBox->setButtonEnabled(btnSelectFile, true); } //----------------------------------------------------------------------------------------------------------- } // namespace LtsWidgets