1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- /*
- * 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 <source/ui/AddSeedDialog.h>
- #include <source/ui/ui_AddSeedDialog.h>
- #include <source/ui/PlatformSelectionWidget.h>
- #include <QFileDialog>
- #include <QPushButton>
- 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<int>(strlen(QtRelativePathPrefix)));
- }
- }
- } //namespace AssetBundler
- #include <source/ui/moc_AddSeedDialog.cpp>
|