Forráskód Böngészése

Update Update Project Settings UI to show advanced settings and move project preview to right side panel

Signed-off-by: nggieber <[email protected]>
nggieber 3 éve
szülő
commit
5641bcd5f1

+ 10 - 3
Code/Tools/ProjectManager/Resources/ProjectManager.qss

@@ -250,9 +250,6 @@ QTabBar::tab:focus {
     margin-top:30px;
 }
 
-#projectPreviewLabel {
-    margin: 10px 0 5px 0;
-}
 
 #projectTemplate {
     margin: 25px 0 0 50px;
@@ -329,6 +326,16 @@ QTabBar::tab:focus {
     border:none;
 }
 
+#projectSettingsSectionTitle
+{
+    font-size:18px;
+}
+
+#projectSmallInfoLabel
+{
+    font-size:10px;
+}
+
 #projectSettingsTab::tab-bar {
     left: 60px;
 }

+ 1 - 1
Code/Tools/ProjectManager/Source/SettingsInterface.h

@@ -23,7 +23,7 @@ namespace O3DE::ProjectManager
 
         static constexpr char ProjectManagerKeyPrefix[] = "/O3DE/ProjectManager";
         static constexpr char ExternalLinkWarningKey[] = "/O3DE/ProjectManager/SkipExternalLinkWarning";
-        static constexpr char ProjectsBuiltSuccessfullyKey[] = "/O3DE/ProjectManager/SkipExternalLinkWarning";
+        static constexpr char ProjectsBuiltSuccessfullyKey[] = "/O3DE/ProjectManager/SuccessfulBuildPaths";
 
         ISettings() = default;
         virtual ~ISettings() = default;

+ 67 - 9
Code/Tools/ProjectManager/Source/UpdateProjectSettingsScreen.cpp

@@ -16,6 +16,7 @@
 #include <QDir>
 #include <QLabel>
 #include <QFileInfo>
+#include <QPushButton>
 
 namespace O3DE::ProjectManager
 {
@@ -31,12 +32,10 @@ namespace O3DE::ProjectManager
         m_verticalLayout->addWidget(m_projectPreview);
 
         QVBoxLayout* previewExtrasLayout = new QVBoxLayout(this);
-        previewExtrasLayout->setAlignment(Qt::AlignLeft);
-        previewExtrasLayout->setContentsMargins(50, 0, 0, 0);
+        previewExtrasLayout->setAlignment(Qt::AlignTop);
+        previewExtrasLayout->setContentsMargins(30, 45, 30, 0);
 
-        QLabel* projectPreviewLabel = new QLabel(tr("Select an image (PNG). Minimum %1 x %2 pixels.")
-            .arg(QString::number(ProjectPreviewImageWidth), QString::number(ProjectPreviewImageHeight)));
-        projectPreviewLabel->setObjectName("projectPreviewLabel");
+        QLabel* projectPreviewLabel = new QLabel(tr("Project Preview"));
         previewExtrasLayout->addWidget(projectPreviewLabel);
 
         m_projectPreviewImage = new QLabel(this);
@@ -44,11 +43,56 @@ namespace O3DE::ProjectManager
         m_projectPreviewImage->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
         previewExtrasLayout->addWidget(m_projectPreviewImage);
 
-        m_verticalLayout->addLayout(previewExtrasLayout);
+        QLabel* projectPreviewInfoLabel = new QLabel(tr("Select an image (PNG). Minimum %1 x %2 pixels.")
+            .arg(QString::number(ProjectPreviewImageWidth), QString::number(ProjectPreviewImageHeight)));
+        projectPreviewInfoLabel->setObjectName("projectSmallInfoLabel");
+        projectPreviewInfoLabel->setWordWrap(true);
+        previewExtrasLayout->addWidget(projectPreviewInfoLabel);
+
+        m_horizontalLayout->addLayout(previewExtrasLayout);
+
+        m_verticalLayout->addSpacing(10);
+
+        // Collapse button
+        QHBoxLayout* advancedCollapseLayout = new QHBoxLayout();
+        advancedCollapseLayout->setContentsMargins(50, 0, 0, 0);
+
+        m_advancedSettingsCollapseButton = new QPushButton();
+        m_advancedSettingsCollapseButton->setCheckable(true);
+        m_advancedSettingsCollapseButton->setChecked(true);
+        m_advancedSettingsCollapseButton->setFlat(true);
+        m_advancedSettingsCollapseButton->setFocusPolicy(Qt::NoFocus);
+        m_advancedSettingsCollapseButton->setFixedWidth(s_collapseButtonSize);
+        connect(m_advancedSettingsCollapseButton, &QPushButton::clicked, this, [=]()
+            {
+                UpdateAdvancedSettingsCollapseState();
+            });
+        advancedCollapseLayout->addWidget(m_advancedSettingsCollapseButton);
+
+        // Category title
+        QLabel* advancedLabel = new QLabel("Advanced Settings");
+        advancedLabel->setObjectName("p");
+        advancedCollapseLayout->addWidget(advancedLabel);
+        m_verticalLayout->addLayout(advancedCollapseLayout);
+
+        m_verticalLayout->addSpacing(5);
+
+        // Everything in the advanced settings widget will be collapsed/uncollapsed
+        {
+            m_advancedSettingWidget = new QWidget();
+            m_verticalLayout->addWidget(m_advancedSettingWidget);
+
+            QVBoxLayout* advancedSettingsLayout = new QVBoxLayout();
+            advancedSettingsLayout->setMargin(0);
+            advancedSettingsLayout->setAlignment(Qt::AlignTop);
+            m_advancedSettingWidget->setLayout(advancedSettingsLayout);
+
+            m_projectId = new FormLineEditWidget(tr("Project ID"), "", this);
+            connect(m_projectId->lineEdit(), &QLineEdit::textChanged, this, &UpdateProjectSettingsScreen::OnProjectIdUpdated);
+            advancedSettingsLayout->addWidget(m_projectId);
+        }
 
-        m_projectId = new FormLineEditWidget(tr("Project ID"), "", this);
-        connect(m_projectId->lineEdit(), &QLineEdit::textChanged, this, &UpdateProjectSettingsScreen::OnProjectIdUpdated);
-        m_verticalLayout->addWidget(m_projectId);
+        UpdateAdvancedSettingsCollapseState();
     }
 
     ProjectManagerScreen UpdateProjectSettingsScreen::GetScreenEnum()
@@ -179,4 +223,18 @@ namespace O3DE::ProjectManager
         return projectIdIsValid;
     }
 
+    void UpdateProjectSettingsScreen::UpdateAdvancedSettingsCollapseState()
+    {
+        if (m_advancedSettingsCollapseButton->isChecked())
+        {
+            m_advancedSettingsCollapseButton->setIcon(QIcon(":/ArrowDownLine.svg"));
+            m_advancedSettingWidget->hide();
+        }
+        else
+        {
+            m_advancedSettingsCollapseButton->setIcon(QIcon(":/ArrowUpLine.svg"));
+            m_advancedSettingWidget->show();
+        }
+    }
+
 } // namespace O3DE::ProjectManager

+ 7 - 0
Code/Tools/ProjectManager/Source/UpdateProjectSettingsScreen.h

@@ -12,6 +12,7 @@
 #endif
 
 QT_FORWARD_DECLARE_CLASS(QLabel)
+QT_FORWARD_DECLARE_CLASS(QPushButton)
 
 namespace O3DE::ProjectManager
 {
@@ -39,11 +40,17 @@ namespace O3DE::ProjectManager
         bool ValidateProjectPath() override;
         virtual bool ValidateProjectPreview();
         bool ValidateProjectId();
+        void UpdateAdvancedSettingsCollapseState();
+
+        inline constexpr static int s_collapseButtonSize = 24;
 
         FormBrowseEditWidget* m_projectPreview;
         QLabel* m_projectPreviewImage;
         FormLineEditWidget* m_projectId;
 
+        QPushButton* m_advancedSettingsCollapseButton = nullptr;
+        QWidget* m_advancedSettingWidget = nullptr;
+
         ProjectInfo m_projectInfo;
         bool m_userChangedPreview; //! Did the user change the project preview path
     };