/* * 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 * */ #pragma once #if !defined(Q_MOC_RUN) #include #include #include #endif QT_FORWARD_DECLARE_CLASS(QStackedWidget) QT_FORWARD_DECLARE_CLASS(QTabWidget) QT_FORWARD_DECLARE_CLASS(QPushButton) QT_FORWARD_DECLARE_CLASS(QFrame) namespace O3DE::ProjectManager { QT_FORWARD_DECLARE_CLASS(ScreenHeader) QT_FORWARD_DECLARE_CLASS(UpdateProjectSettingsScreen) QT_FORWARD_DECLARE_CLASS(ProjectGemCatalogScreen) QT_FORWARD_DECLARE_CLASS(GemRepoScreen) QT_FORWARD_DECLARE_CLASS(DownloadController) QT_FORWARD_DECLARE_CLASS(CreateGem) class UpdateProjectCtrl : public ScreenWidget { Q_OBJECT public: explicit UpdateProjectCtrl(DownloadController* downloadController, QWidget* parent = nullptr); ~UpdateProjectCtrl() = default; ProjectManagerScreen GetScreenEnum() override; bool ContainsScreen(ProjectManagerScreen screen) override; void GoToScreen(ProjectManagerScreen screen) override; void NotifyCurrentScreen() override; protected slots: void HandleBackButton(); void HandleNextButton(); void HandleGemsButton(); void OnChangeScreenRequest(ProjectManagerScreen screen); void UpdateCurrentProject(const QString& projectPath); private: void Update(); void UpdateSettingsScreen(); bool UpdateProjectSettings(bool shouldConfirm = false); enum ScreenOrder { Settings, Gems, GemRepos }; ScreenHeader* m_header = nullptr; QStackedWidget* m_stack = nullptr; UpdateProjectSettingsScreen* m_updateSettingsScreen = nullptr; ProjectGemCatalogScreen* m_projectGemCatalogScreen = nullptr; GemRepoScreen* m_gemRepoScreen = nullptr; QPushButton* m_backButton = nullptr; QPushButton* m_nextButton = nullptr; QVector m_screensOrder; ProjectInfo m_projectInfo; }; } // namespace O3DE::ProjectManager