Added Project Preview to Project Settings and Fixed Issues with Moving Projects (#1380)
* Updated Project Settings Screen with preview and fixed moving projects * Tests for some Project Utils * Remove old defined consts * Update UX to use display name when avaliable where appropriate * Use newPreviewImagePath for temp changing preview.png otherwise use iconPath for preview in UX * Removed use of newPreviewImagePath in ProjectButton
This commit is contained in:
@@ -11,17 +11,43 @@
|
||||
*/
|
||||
|
||||
#include <UpdateProjectSettingsScreen.h>
|
||||
#include <FormBrowseEditWidget.h>
|
||||
#include <ProjectManagerDefs.h>
|
||||
#include <FormImageBrowseEditWidget.h>
|
||||
#include <FormLineEditWidget.h>
|
||||
|
||||
#include <QVBoxLayout>
|
||||
#include <QLineEdit>
|
||||
#include <QDir>
|
||||
#include <QLabel>
|
||||
#include <QFileInfo>
|
||||
|
||||
namespace O3DE::ProjectManager
|
||||
{
|
||||
UpdateProjectSettingsScreen::UpdateProjectSettingsScreen(QWidget* parent)
|
||||
: ProjectSettingsScreen(parent)
|
||||
, m_userChangedPreview(false)
|
||||
{
|
||||
m_projectPreview = new FormImageBrowseEditWidget(tr("Project Preview"), "", this);
|
||||
m_projectPreview->lineEdit()->setReadOnly(true);
|
||||
connect(m_projectPreview->lineEdit(), &QLineEdit::textChanged, this, &ProjectSettingsScreen::Validate);
|
||||
connect(m_projectPreview->lineEdit(), &QLineEdit::textChanged, this, &UpdateProjectSettingsScreen::PreviewPathChanged);
|
||||
connect(m_projectPath->lineEdit(), &QLineEdit::textChanged, this, &UpdateProjectSettingsScreen::UpdateProjectPreviewPath);
|
||||
m_verticalLayout->addWidget(m_projectPreview);
|
||||
|
||||
QVBoxLayout* previewExtrasLayout = new QVBoxLayout(this);
|
||||
previewExtrasLayout->setAlignment(Qt::AlignLeft);
|
||||
previewExtrasLayout->setContentsMargins(50, 0, 0, 0);
|
||||
|
||||
QLabel* projectPreviewLabel = new QLabel(tr("Select an image (PNG). Minimum %1 x %2 pixels.")
|
||||
.arg(QString::number(ProjectPreviewImageWidth), QString::number(ProjectPreviewImageHeight)));
|
||||
previewExtrasLayout->addWidget(projectPreviewLabel);
|
||||
|
||||
m_projectPreviewImage = new QLabel(this);
|
||||
m_projectPreviewImage->setFixedSize(ProjectPreviewImageWidth, ProjectPreviewImageHeight);
|
||||
m_projectPreviewImage->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
|
||||
previewExtrasLayout->addWidget(m_projectPreviewImage);
|
||||
|
||||
m_verticalLayout->addLayout(previewExtrasLayout);
|
||||
}
|
||||
|
||||
ProjectManagerScreen UpdateProjectSettingsScreen::GetScreenEnum()
|
||||
@@ -29,10 +55,58 @@ namespace O3DE::ProjectManager
|
||||
return ProjectManagerScreen::UpdateProjectSettings;
|
||||
}
|
||||
|
||||
ProjectInfo UpdateProjectSettingsScreen::GetProjectInfo()
|
||||
{
|
||||
m_projectInfo.m_displayName = m_projectName->lineEdit()->text();
|
||||
m_projectInfo.m_path = m_projectPath->lineEdit()->text();
|
||||
|
||||
if (m_userChangedPreview)
|
||||
{
|
||||
m_projectInfo.m_iconPath = ProjectPreviewImagePath;
|
||||
m_projectInfo.m_newPreviewImagePath = m_projectPreview->lineEdit()->text();
|
||||
}
|
||||
return m_projectInfo;
|
||||
}
|
||||
|
||||
void UpdateProjectSettingsScreen::SetProjectInfo(const ProjectInfo& projectInfo)
|
||||
{
|
||||
m_projectName->lineEdit()->setText(projectInfo.m_projectName);
|
||||
m_projectInfo = projectInfo;
|
||||
|
||||
m_projectName->lineEdit()->setText(projectInfo.GetProjectDisplayName());
|
||||
|
||||
m_projectPath->lineEdit()->setText(projectInfo.m_path);
|
||||
UpdateProjectPreviewPath();
|
||||
}
|
||||
|
||||
void UpdateProjectSettingsScreen::UpdateProjectPreviewPath()
|
||||
{
|
||||
if (!m_userChangedPreview)
|
||||
{
|
||||
m_projectPreview->lineEdit()->setText(QDir(m_projectPath->lineEdit()->text()).filePath(m_projectInfo.m_iconPath));
|
||||
// Setting the text sets m_userChangedPreview to true
|
||||
// Set it back to false because it should only be true when changed by user
|
||||
m_userChangedPreview = false;
|
||||
}
|
||||
}
|
||||
|
||||
bool UpdateProjectSettingsScreen::Validate()
|
||||
{
|
||||
return ProjectSettingsScreen::Validate() && ValidateProjectPreview();
|
||||
}
|
||||
|
||||
void UpdateProjectSettingsScreen::ResetProjectPreviewPath()
|
||||
{
|
||||
m_userChangedPreview = false;
|
||||
UpdateProjectPreviewPath();
|
||||
}
|
||||
|
||||
void UpdateProjectSettingsScreen::PreviewPathChanged()
|
||||
{
|
||||
m_userChangedPreview = true;
|
||||
|
||||
// Update with latest image
|
||||
m_projectPreviewImage->setPixmap(
|
||||
QPixmap(m_projectPreview->lineEdit()->text()).scaled(m_projectPreviewImage->size(), Qt::KeepAspectRatioByExpanding));
|
||||
}
|
||||
|
||||
bool UpdateProjectSettingsScreen::ValidateProjectPath()
|
||||
@@ -48,4 +122,39 @@ namespace O3DE::ProjectManager
|
||||
return projectPathIsValid;
|
||||
}
|
||||
|
||||
bool UpdateProjectSettingsScreen::ValidateProjectPreview()
|
||||
{
|
||||
bool projectPreviewIsValid = true;
|
||||
|
||||
if (m_projectPreview->lineEdit()->text().isEmpty())
|
||||
{
|
||||
projectPreviewIsValid = false;
|
||||
m_projectPreview->setErrorLabelText(tr("Please select a file."));
|
||||
}
|
||||
else
|
||||
{
|
||||
if (m_userChangedPreview)
|
||||
{
|
||||
QFileInfo previewFile(m_projectPreview->lineEdit()->text());
|
||||
if (!previewFile.exists() || !previewFile.isFile())
|
||||
{
|
||||
projectPreviewIsValid = false;
|
||||
m_projectPreview->setErrorLabelText(tr("Please select a valid png file."));
|
||||
}
|
||||
else
|
||||
{
|
||||
QString fileType = previewFile.completeSuffix().toLower();
|
||||
if (fileType != "png")
|
||||
{
|
||||
projectPreviewIsValid = false;
|
||||
m_projectPreview->setErrorLabelText(tr("Please select a png image."));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
m_projectPreview->setErrorLabelVisible(!projectPreviewIsValid);
|
||||
return projectPreviewIsValid;
|
||||
}
|
||||
|
||||
} // namespace O3DE::ProjectManager
|
||||
|
||||
Reference in New Issue
Block a user