Moved PrefabSavePreference settings registry code from PrefabEditorEntityOwnershipInterface to PrefabLoaderInterface

Signed-off-by: srikappa-amzn <srikappa@amazon.com>
This commit is contained in:
srikappa-amzn
2021-08-24 18:34:51 -07:00
parent 79dd041d02
commit 1ca67cad80
13 changed files with 95 additions and 69 deletions
+6 -4
View File
@@ -3182,6 +3182,8 @@ bool CCryEditApp::CreateLevel(bool& wasCreateLevelOperationCancelled)
}
else
{
using namespace AzToolsFramework::Prefab;
auto prefabSystemComponentInterface = AZ::Interface<AzToolsFramework::Prefab::PrefabSystemComponentInterface>::Get();
auto prefabSaveSelectionDialog = GetIEditor()->GetDocument()->ConstructSaveLevelDialog();
@@ -3189,9 +3191,9 @@ bool CCryEditApp::CreateLevel(bool& wasCreateLevelOperationCancelled)
QCheckBox* saveAllPrefabsPreferenceCheckBox =
prefabSaveSelectionDialog->findChild<QCheckBox*>("SaveAllPrefabsPreferenceCheckBox");
QCheckBox* saveAllPrefabsCheckBox = prefabSaveSelectionDialog->findChild<QCheckBox*>("SaveAllPrefabsCheckbox");
AzToolsFramework::SavePrefabsPreference savePrefabsPreference = saveAllPrefabsCheckBox->isChecked()
? AzToolsFramework::SavePrefabsPreference::SaveAll
: AzToolsFramework::SavePrefabsPreference::SaveNone;
SavePrefabsPreference savePrefabsPreference = saveAllPrefabsCheckBox->isChecked()
? SavePrefabsPreference::SaveAll
: SavePrefabsPreference::SaveNone;
switch (1 - prefabSaveSelection)
{
@@ -3208,7 +3210,7 @@ bool CCryEditApp::CreateLevel(bool& wasCreateLevelOperationCancelled)
gSettings.SetSavePrefabsPreference(savePrefabsPreference);
gSettings.Save();
}
if (savePrefabsPreference == AzToolsFramework::SavePrefabsPreference::SaveAll)
if (savePrefabsPreference == SavePrefabsPreference::SaveAll)
{
prefabSystemComponentInterface->SaveAllDirtyTemplates();
}
+21 -17
View File
@@ -35,6 +35,7 @@
#include <AzToolsFramework/UI/Layer/NameConflictWarning.hxx>
#include <AzToolsFramework/API/EditorLevelNotificationBus.h>
#include <AzToolsFramework/Entity/PrefabEditorEntityOwnershipInterface.h>
#include <AzToolsFramework/Prefab/PrefabLoaderInterface.h>
#include <AzToolsFramework/Prefab/PrefabSystemComponentInterface.h>
// Editor
@@ -696,15 +697,16 @@ bool CCryEditDoc::SaveModified()
}
else
{
using namespace AzToolsFramework::Prefab;
auto prefabSystemComponentInterface = AZ::Interface<AzToolsFramework::Prefab::PrefabSystemComponentInterface>::Get();
auto prefabSaveSelectionDialog = ConstructSaveLevelDialog();
int prefabSaveSelection = prefabSaveSelectionDialog->exec();
QCheckBox* saveAllPrefabsPreferenceCheckBox = prefabSaveSelectionDialog->findChild<QCheckBox*>("SaveAllPrefabsPreferenceCheckBox");
QCheckBox* saveAllPrefabsCheckBox = prefabSaveSelectionDialog->findChild<QCheckBox*>("SaveAllPrefabsCheckbox");
AzToolsFramework::SavePrefabsPreference savePrefabsPreference = saveAllPrefabsCheckBox->isChecked()
? AzToolsFramework::SavePrefabsPreference::SaveAll
: AzToolsFramework::SavePrefabsPreference::SaveNone;
SavePrefabsPreference savePrefabsPreference =
saveAllPrefabsCheckBox->isChecked() ? SavePrefabsPreference::SaveAll : SavePrefabsPreference::SaveNone;
switch (1 - prefabSaveSelection)
{
@@ -715,7 +717,7 @@ bool CCryEditDoc::SaveModified()
gSettings.SetSavePrefabsPreference(savePrefabsPreference);
gSettings.Save();
}
if (savePrefabsPreference == AzToolsFramework::SavePrefabsPreference::SaveAll)
if (savePrefabsPreference == SavePrefabsPreference::SaveAll)
{
prefabSystemComponentInterface->SaveAllDirtyTemplates();
}
@@ -2263,8 +2265,9 @@ void CCryEditDoc::OnSliceInstantiationFailed(const AZ::Data::AssetId& sliceAsset
AZStd::shared_ptr<QDialog> CCryEditDoc::ConstructSaveLevelDialog()
{
auto prefabEditorEntityOwnershipInterface = AZ::Interface<AzToolsFramework::PrefabEditorEntityOwnershipInterface>::Get();
AzToolsFramework::SavePrefabsPreference savePrefabsPreference = prefabEditorEntityOwnershipInterface->GetSavePrefabsPreference();
using namespace AzToolsFramework::Prefab;
auto prefabLoaderInterface = AZ::Interface<PrefabLoaderInterface>::Get();
SavePrefabsPreference savePrefabsPreference = prefabLoaderInterface->GetSavePrefabsPreference();
AZStd::shared_ptr<QDialog> saveModifiedMessageBox = AZStd::make_shared<QDialog>(AzToolsFramework::GetActiveWindow());
AZStd::weak_ptr<QDialog> saveModifiedMessageBoxWeakPtr(saveModifiedMessageBox);
@@ -2294,7 +2297,7 @@ AZStd::shared_ptr<QDialog> CCryEditDoc::ConstructSaveLevelDialog()
QCheckBox* saveAllPrefabsCheckbox = new QCheckBox("Save all unsaved prefabs in the level too.");
AzQtComponents::CheckBox::applyToggleSwitchStyle(saveAllPrefabsCheckbox);
saveAllPrefabsCheckbox->setObjectName("SaveAllPrefabsCheckbox");
if (savePrefabsPreference == AzToolsFramework::SavePrefabsPreference::SaveAll)
if (savePrefabsPreference == SavePrefabsPreference::SaveAll)
{
saveAllPrefabsCheckbox->setCheckState(Qt::CheckState::Checked);
}
@@ -2302,9 +2305,8 @@ AZStd::shared_ptr<QDialog> CCryEditDoc::ConstructSaveLevelDialog()
saveAllPrefabsCheckbox, &QCheckBox::stateChanged,
[&savePrefabsPreference](int state)
{
savePrefabsPreference = static_cast<Qt::CheckState>(state) == Qt::CheckState::Checked
? AzToolsFramework::SavePrefabsPreference::SaveAll
: AzToolsFramework::SavePrefabsPreference::SaveNone;
savePrefabsPreference = static_cast<Qt::CheckState>(state) == Qt::CheckState::Checked ? SavePrefabsPreference::SaveAll
: SavePrefabsPreference::SaveNone;
});
contentLayout->addWidget(saveAllPrefabsCheckbox);
@@ -2319,7 +2321,7 @@ AZStd::shared_ptr<QDialog> CCryEditDoc::ConstructSaveLevelDialog()
QCheckBox* saveAllPrefabsPreferenceCheckBox = new QCheckBox("Remember my preference.");
saveAllPrefabsPreferenceCheckBox->setObjectName("SaveAllPrefabsPreferenceCheckBox");
AzQtComponents::CheckBox::applyToggleSwitchStyle(saveAllPrefabsPreferenceCheckBox);
if (savePrefabsPreference != AzToolsFramework::SavePrefabsPreference::Unspecified)
if (savePrefabsPreference != SavePrefabsPreference::Unspecified)
{
saveAllPrefabsPreferenceCheckBox->setCheckState(Qt::CheckState::Checked);
}
@@ -2348,23 +2350,25 @@ AZStd::shared_ptr<QDialog> CCryEditDoc::ConstructSaveLevelDialog()
void CCryEditDoc::ExecuteSavePrefabsDialog()
{
auto prefabSystemComponentInterface = AZ::Interface<AzToolsFramework::Prefab::PrefabSystemComponentInterface>::Get();
auto prefabEditorEntityOwnershipInterface = AZ::Interface<AzToolsFramework::PrefabEditorEntityOwnershipInterface>::Get();
AzToolsFramework::SavePrefabsPreference savePrefabsPreference = prefabEditorEntityOwnershipInterface->GetSavePrefabsPreference();
using namespace AzToolsFramework::Prefab;
if (savePrefabsPreference == AzToolsFramework::SavePrefabsPreference::SaveAll)
auto prefabSystemComponentInterface = AZ::Interface<AzToolsFramework::Prefab::PrefabSystemComponentInterface>::Get();
auto prefabLoaderInterface = AZ::Interface<PrefabLoaderInterface>::Get();
SavePrefabsPreference savePrefabsPreference = prefabLoaderInterface->GetSavePrefabsPreference();
if (savePrefabsPreference == SavePrefabsPreference::SaveAll)
{
prefabSystemComponentInterface->SaveAllDirtyTemplates();
SetModifiedFlag(false);
}
else if (savePrefabsPreference == AzToolsFramework::SavePrefabsPreference::SaveNone)
else if (savePrefabsPreference == SavePrefabsPreference::SaveNone)
{
if (prefabSystemComponentInterface->AreDirtyTemplatesPresent())
{
SetModifiedFlag(true);
}
}
else // AzToolsFramework::SavePrefabsPreference::Unspecified
else // SavePrefabsPreference::Unspecified
{
QDialog saveModifiedMessageBox(AzToolsFramework::GetActiveWindow());
+3 -3
View File
@@ -101,9 +101,9 @@ void CEditorPreferencesPage_General::Reflect(AZ::SerializeContext& serialize)
->DataElement(
AZ::Edit::UIHandlers::ComboBox, &PrefabSettings::m_savePrefabsPreference, "Save Prefabs Preference",
"When saving levels, this option controls whether and how prefabs should be saved along with the level.")
->EnumAttribute(AzToolsFramework::SavePrefabsPreference::Unspecified, "Unspecified")
->EnumAttribute(AzToolsFramework::SavePrefabsPreference::SaveAll, "Save All")
->EnumAttribute(AzToolsFramework::SavePrefabsPreference::SaveNone, "Save None");
->EnumAttribute(AzToolsFramework::Prefab::SavePrefabsPreference::Unspecified, "Unspecified")
->EnumAttribute(AzToolsFramework::Prefab::SavePrefabsPreference::SaveAll, "Save All")
->EnumAttribute(AzToolsFramework::Prefab::SavePrefabsPreference::SaveNone, "Save None");
editContext->Class<Messaging>("Messaging", "")
->DataElement(AZ::Edit::UIHandlers::CheckBox, &Messaging::m_showDashboard, "Show Welcome to Open 3D Engine at startup", "Show Welcome to Open 3D Engine at startup")
+2 -2
View File
@@ -14,7 +14,7 @@
#include <AzCore/Math/Vector3.h>
#include <AzQtComponents/Components/Widgets/ToolBar.h>
#include <AzToolsFramework/Editor/EditorSettingsAPIBus.h>
#include <AzToolsFramework/Entity/PrefabEditorEntityOwnershipService.h>
#include <AzToolsFramework/Prefab/PrefabLoaderInterface.h>
#include <QIcon>
#include "Settings.h"
@@ -61,7 +61,7 @@ private:
struct PrefabSettings
{
AZ_TYPE_INFO(PrefabSettings, "{E297DAE3-3985-4BC2-8B43-45F3B1522F6B}");
AzToolsFramework::SavePrefabsPreference m_savePrefabsPreference;
AzToolsFramework::Prefab::SavePrefabsPreference m_savePrefabsPreference;
};
struct Messaging
+8 -8
View File
@@ -255,7 +255,7 @@ SEditorSettings::SEditorSettings()
g_TemporaryLevelName = nullptr;
sliceSettings.dynamicByDefault = false;
prefabSettings.savePrefabsPreference = AzToolsFramework::SavePrefabsPreference::Unspecified;
prefabSettings.savePrefabsPreference = AzToolsFramework::Prefab::SavePrefabsPreference::Unspecified;
}
void SEditorSettings::Connect()
@@ -670,9 +670,9 @@ void SEditorSettings::Save()
AzFramework::ApplicationRequests::Bus::Broadcast(
&AzFramework::ApplicationRequests::SetPrefabSystemEnabled, prefabSystem);
AzToolsFramework::PrefabEditorEntityOwnershipInterface* prefabEditorEntityOwnershipService =
AZ::Interface<AzToolsFramework::PrefabEditorEntityOwnershipInterface>::Get();
prefabEditorEntityOwnershipService->SetSavePrefabsPreference(prefabSettings.savePrefabsPreference);
AzToolsFramework::Prefab::PrefabLoaderInterface* prefabLoaderInterface =
AZ::Interface<AzToolsFramework::Prefab::PrefabLoaderInterface>::Get();
prefabLoaderInterface->SetSavePrefabsPreference(prefabSettings.savePrefabsPreference);
SaveSettingsRegistryFile();
}
@@ -680,9 +680,9 @@ void SEditorSettings::Save()
//////////////////////////////////////////////////////////////////////////
void SEditorSettings::Load()
{
AzToolsFramework::PrefabEditorEntityOwnershipInterface* prefabEditorEntityOwnershipService =
AZ::Interface<AzToolsFramework::PrefabEditorEntityOwnershipInterface>::Get();
prefabSettings.savePrefabsPreference = prefabEditorEntityOwnershipService->GetSavePrefabsPreference();
AzToolsFramework::Prefab::PrefabLoaderInterface* prefabLoaderInterface =
AZ::Interface<AzToolsFramework::Prefab::PrefabLoaderInterface>::Get();
prefabSettings.savePrefabsPreference = prefabLoaderInterface->GetSavePrefabsPreference();
// Load from Settings Registry
AzFramework::ApplicationRequests::Bus::BroadcastResult(
@@ -1082,7 +1082,7 @@ void SEditorSettings::ConvertPath(const AZStd::string_view sourcePath, AZStd::st
AZStd::replace(category.begin(), category.end(), '|', '\\');
}
void SEditorSettings::SetSavePrefabsPreference(AzToolsFramework::SavePrefabsPreference savePrefabsPreference)
void SEditorSettings::SetSavePrefabsPreference(AzToolsFramework::Prefab::SavePrefabsPreference savePrefabsPreference)
{
prefabSettings.savePrefabsPreference = savePrefabsPreference;
}
+3 -3
View File
@@ -18,7 +18,7 @@
#include <QSettings>
#include <AzToolsFramework/Editor/EditorSettingsAPIBus.h>
#include <AzToolsFramework/Entity/PrefabEditorEntityOwnershipInterface.h>
#include <AzToolsFramework/Prefab/PrefabLoaderInterface.h>
#include <AzCore/JSON/document.h>
#include <AzQtComponents/Components/Widgets/ToolBar.h>
@@ -233,7 +233,7 @@ struct SSliceSettings
struct SPrefabSettings
{
AzToolsFramework::SavePrefabsPreference savePrefabsPreference;
AzToolsFramework::Prefab::SavePrefabsPreference savePrefabsPreference;
};
//////////////////////////////////////////////////////////////////////////
@@ -476,7 +476,7 @@ AZ_POP_DISABLE_DLL_EXPORT_BASECLASS_WARNING
bool prefabSystem = true; ///< Toggle to enable/disable the Prefab system for level entities.
void SetSavePrefabsPreference(AzToolsFramework::SavePrefabsPreference savePrefabsPreference);
void SetSavePrefabsPreference(AzToolsFramework::Prefab::SavePrefabsPreference savePrefabsPreference);
private:
void SaveValue(const char* sSection, const char* sKey, int value);