Added Menu to Gem Catalog with Action to Navigate to Gem Repo Screen (#4829)
* Added menu to Gem Catalog that with option to navigate to Gem Repo screen Signed-off-by: nggieber <nggieber@amazon.com> * Changed Goto to GoTo and added a tr Signed-off-by: nggieber <nggieber@amazon.com> * Gem repo button works from new project creation workflow as well and users are warned if they have pending changes in the gem catalog before changing screens. Signed-off-by: nggieber <nggieber@amazon.com>
This commit is contained in:
@@ -83,11 +83,28 @@ namespace O3DE::ProjectManager
|
||||
|
||||
bool ScreensCtrl::ForceChangeToScreen(ProjectManagerScreen screen, bool addVisit)
|
||||
{
|
||||
ScreenWidget* newScreen = nullptr;
|
||||
|
||||
const auto iterator = m_screenMap.find(screen);
|
||||
if (iterator != m_screenMap.end())
|
||||
{
|
||||
newScreen = iterator.value();
|
||||
}
|
||||
else
|
||||
{
|
||||
// Check if screen is contained by another screen
|
||||
for (ScreenWidget* checkingScreen : m_screenMap)
|
||||
{
|
||||
if (checkingScreen->ContainsScreen(screen))
|
||||
{
|
||||
newScreen = checkingScreen;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (newScreen)
|
||||
{
|
||||
ScreenWidget* currentScreen = GetCurrentScreen();
|
||||
ScreenWidget* newScreen = iterator.value();
|
||||
|
||||
if (currentScreen != newScreen)
|
||||
{
|
||||
@@ -109,6 +126,11 @@ namespace O3DE::ProjectManager
|
||||
|
||||
newScreen->NotifyCurrentScreen();
|
||||
|
||||
if (iterator == m_screenMap.end())
|
||||
{
|
||||
newScreen->GoToScreen(screen);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -116,7 +138,7 @@ namespace O3DE::ProjectManager
|
||||
return false;
|
||||
}
|
||||
|
||||
bool ScreensCtrl::GotoPreviousScreen()
|
||||
bool ScreensCtrl::GoToPreviousScreen()
|
||||
{
|
||||
if (!m_screenVisitOrder.isEmpty())
|
||||
{
|
||||
@@ -171,7 +193,7 @@ namespace O3DE::ProjectManager
|
||||
m_screenMap.insert(screen, newScreen);
|
||||
|
||||
connect(newScreen, &ScreenWidget::ChangeScreenRequest, this, &ScreensCtrl::ChangeToScreen);
|
||||
connect(newScreen, &ScreenWidget::GotoPreviousScreenRequest, this, &ScreensCtrl::GotoPreviousScreen);
|
||||
connect(newScreen, &ScreenWidget::GoToPreviousScreenRequest, this, &ScreensCtrl::GoToPreviousScreen);
|
||||
connect(newScreen, &ScreenWidget::ResetScreenRequest, this, &ScreensCtrl::ResetScreen);
|
||||
connect(newScreen, &ScreenWidget::NotifyCurrentProject, this, &ScreensCtrl::NotifyCurrentProject);
|
||||
connect(newScreen, &ScreenWidget::NotifyBuildProject, this, &ScreensCtrl::NotifyBuildProject);
|
||||
|
||||
Reference in New Issue
Block a user