/* * Copyright (c) Contributors to the Open 3D Engine Project. * For complete copyright and license terms please see the LICENSE at the root of this distribution. * * SPDX-License-Identifier: Apache-2.0 OR MIT * */ #include #include #include #include #include const char QtRelativePathPrefix[] = "../"; namespace AssetBundler { AddSeedDialog::AddSeedDialog( QWidget* parent, const AzFramework::PlatformFlags& enabledPlatforms, const AZStd::string& platformSpecificCachePath) : QDialog(parent) , m_platformSpecificCachePath(platformSpecificCachePath.c_str()) { m_ui.reset(new Ui::AddSeedDialog); m_ui->setupUi(this); // Set up Browse File button m_ui->fileNameLineEdit->setReadOnly(true); connect(m_ui->browseFileButton, &QPushButton::clicked, this, &AddSeedDialog::OnBrowseFileButtonPressed); // Set up Platform selection m_ui->platformSelectionWidget->Init(enabledPlatforms); connect(m_ui->platformSelectionWidget, &PlatformSelectionWidget::PlatformsSelected, this, &AddSeedDialog::OnPlatformSelectionChanged); // Set up Cancel and Create New File buttons m_ui->addSeedButton->setEnabled(false); connect(m_ui->cancelButton, &QPushButton::clicked, this, &QDialog::reject); connect(m_ui->addSeedButton, &QPushButton::clicked, this, &QDialog::accept); } AZStd::string AddSeedDialog::GetFileName() { return m_fileName; } AzFramework::PlatformFlags AddSeedDialog::GetPlatformFlags() { return m_ui->platformSelectionWidget->GetSelectedPlatforms(); } void AddSeedDialog::OnBrowseFileButtonPressed() { QString seedAbsolutePath = QFileDialog::getOpenFileName(this, tr("Add New Seed"), m_platformSpecificCachePath); m_fileNameIsValid = !seedAbsolutePath.isEmpty(); if (!m_fileNameIsValid) { // The user canceled out of the window, do not update anything return; } // Make sure the path is relative to the platform-specific cache QDir platformSpecificCacheDir(m_platformSpecificCachePath); QString seedRelativePath = platformSpecificCacheDir.relativeFilePath(seedAbsolutePath); // trim off the "../" from the relative path FormatRelativePathString(seedRelativePath); m_fileName = seedRelativePath.toUtf8().data(); // Update the ui m_ui->fileNameLineEdit->setText(seedRelativePath); m_ui->addSeedButton->setEnabled(m_platformIsValid && m_fileNameIsValid); } void AddSeedDialog::OnPlatformSelectionChanged(const AzFramework::PlatformFlags& selectedPlatforms) { // Hide the "Create File" button if no platforms are selected m_platformIsValid = selectedPlatforms != AzFramework::PlatformFlags::Platform_NONE; m_ui->addSeedButton->setEnabled(m_platformIsValid && m_fileNameIsValid); } void AddSeedDialog::FormatRelativePathString(QString& relativePath) { if (relativePath.startsWith(QtRelativePathPrefix)) { relativePath.remove(0, static_cast(strlen(QtRelativePathPrefix))); } } } //namespace AssetBundler #include