diff --git a/src/Artemis.Core/Services/Storage/ProfileService.cs b/src/Artemis.Core/Services/Storage/ProfileService.cs index f31724d93..bfaadba7e 100644 --- a/src/Artemis.Core/Services/Storage/ProfileService.cs +++ b/src/Artemis.Core/Services/Storage/ProfileService.cs @@ -236,7 +236,8 @@ namespace Artemis.Core.Services var profileEntity = JsonConvert.DeserializeObject(json, ExportSettings); // Assign a new GUID to make sure it is unique in case of a previous import of the same content - profileEntity.Id = Guid.NewGuid(); + profileEntity.UpdateGuid(Guid.NewGuid()); + profileEntity.Name = $"{profileEntity.Name} - Imported"; _profileRepository.Add(profileEntity); return new ProfileDescriptor(profileModule, profileEntity); diff --git a/src/Artemis.Storage/Entities/Profile/ProfileEntity.cs b/src/Artemis.Storage/Entities/Profile/ProfileEntity.cs index 07c88923b..3b16cc67f 100644 --- a/src/Artemis.Storage/Entities/Profile/ProfileEntity.cs +++ b/src/Artemis.Storage/Entities/Profile/ProfileEntity.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Linq; namespace Artemis.Storage.Entities.Profile { @@ -19,5 +20,15 @@ namespace Artemis.Storage.Entities.Profile public List Folders { get; set; } public List Layers { get; set; } + + public void UpdateGuid(Guid guid) + { + var oldGuid = Id; + Id = guid; + + var rootFolder = Folders.FirstOrDefault(f => f.ParentId == oldGuid); + if (rootFolder != null) + rootFolder.ParentId = Id; + } } } \ No newline at end of file diff --git a/src/Artemis.UI/Screens/ProfileEditor/Dialogs/ProfileImportViewModel.cs b/src/Artemis.UI/Screens/ProfileEditor/Dialogs/ProfileImportViewModel.cs index 99ebd1f04..52e51de3c 100644 --- a/src/Artemis.UI/Screens/ProfileEditor/Dialogs/ProfileImportViewModel.cs +++ b/src/Artemis.UI/Screens/ProfileEditor/Dialogs/ProfileImportViewModel.cs @@ -32,9 +32,9 @@ namespace Artemis.UI.Screens.ProfileEditor.Dialogs public void Accept() { - _profileService.ImportProfile(Document.Text, ProfileModule); + var descriptor = _profileService.ImportProfile(Document.Text, ProfileModule); _mainMessageQueue.Enqueue("Profile imported."); - Session.Close(); + Session.Close(descriptor); } public void Cancel() diff --git a/src/Artemis.UI/Screens/ProfileEditor/ProfileEditorViewModel.cs b/src/Artemis.UI/Screens/ProfileEditor/ProfileEditorViewModel.cs index 00bb2c8a2..037f83cfa 100644 --- a/src/Artemis.UI/Screens/ProfileEditor/ProfileEditorViewModel.cs +++ b/src/Artemis.UI/Screens/ProfileEditor/ProfileEditorViewModel.cs @@ -6,6 +6,7 @@ using System.Windows; using Artemis.Core; using Artemis.Core.Modules; using Artemis.Core.Services; +using Artemis.UI.Extensions; using Artemis.UI.Screens.ProfileEditor.Dialogs; using Artemis.UI.Screens.ProfileEditor.DisplayConditions; using Artemis.UI.Screens.ProfileEditor.LayerProperties; @@ -58,7 +59,7 @@ namespace Artemis.UI.Screens.ProfileEditor DialogService = dialogService; Profiles = new BindableCollection(); - + // Populate the panels ProfileViewModel = profileViewModel; ProfileTreeViewModel = profileTreeViewModel; @@ -190,10 +191,16 @@ namespace Artemis.UI.Screens.ProfileEditor public async Task ImportProfile() { - await DialogService.ShowDialog(new Dictionary + var result = await DialogService.ShowDialog(new Dictionary { {"profileModule", Module} }); + + if (result != null && result is ProfileDescriptor descriptor) + { + Profiles.Add(descriptor); + Profiles.Sort(p => p.Name); + } } public void Undo()