async Task AddLocalFolder() { var path = await _dialogManager.BrowseForFolder(); if (string.IsNullOrWhiteSpace(path)) { return; } await Task.Run(async() => { bool hasAny; lock (LibrarySetup.LocalGroup.Children) hasAny = LibrarySetup.GetLocalMissions() .Any(x => Tools.FileUtil.ComparePathsOsCaseSensitive(x.Model.Path, path)); if (hasAny) { await _dialogManager.MessageBox(new MessageBoxDialogParams("You've already added this folder")).ConfigureAwait(false); return; } if (!GetMissionSubfolders(path).Any(Directory.Exists)) { await _dialogManager.MessageBox( new MessageBoxDialogParams( "Please select a folder that contains a Missions and/or MPMissions subfolder", "Invalid folder, aborting")).ConfigureAwait(false); return; } var item = LibrarySetup.CreateLocalItem(Path.GetFileName(path), false, path); _missionList.LocalMissionsContainers.AddLocked(item.Model); DomainEvilGlobal.Settings.RaiseChanged(); }); }
public override void Setup() { lock (_setupLock) { IsLoading = true; ItemsView = null; if (LibrarySetup != null) { LibrarySetup.Dispose(); } LibrarySetup = new MissionLibrarySetup(this, Game, _missionList, _settings, _eventBus); SetupGroups(); InitialSelectedItem(); IsLoading = false; } }