private bool IsAssetInstalled(AssetViewModel asset, List <MapMetaData> mapMetaData, InstalledTexturesMetaData installedTextures) { if (asset.AssetCategory == AssetCategory.Maps.Value) { if (mapMetaData == null) { mapMetaData = MetaDataManager.GetAllMetaDataForMaps(); } return(mapMetaData.Any(m => m.AssetName == asset.Asset.ID)); } else { return(MetaDataManager.GetTextureMetaDataByName(asset.Asset.ID, installedTextures) != null); } }
public void RefreshFilteredAssetList(bool checkForFileChanges = false) { List <AssetCategory> categories = GetSelectedCategories(); List <AssetViewModel> newList = new List <AssetViewModel>(); foreach (AssetCategory cat in categories) { newList.AddRange(GetAssetsByCategory(cat)); } RefreshAuthorList(); if (AuthorToFilterBy.Author != defaultAuthorValue) { newList = newList.Where(a => a.Author == AuthorToFilterBy.Author).ToList(); } if (SelectedInstallStatus != defaultInstallStatusValue) { // read currently installed textures/map from files into memory so checking each asset is quicker InstalledTexturesMetaData installedTextures = MetaDataManager.LoadTextureMetaData(); List <MapMetaData> installedMaps = MetaDataManager.GetAllMetaDataForMaps(); switch (SelectedInstallStatus) { case "Installed": newList = newList.Where(a => IsAssetInstalled(a, installedMaps, installedTextures)).ToList(); break; case "Not Installed": newList = newList.Where(a => IsAssetInstalled(a, installedMaps, installedTextures) == false).ToList(); break; default: break; } } FilteredAssetList = newList; if (FilteredAssetList.Count == 0 && GetSelectedCategories().Count() == 0) { UserMessage = "Check categories to view the list of downloadable assets ..."; } }
/// <summary> /// Deletes the selected asset files from Session folders /// </summary> public void RemoveSelectedAsset() { AssetViewModel assetToRemove = SelectedAsset; BoolWithMessage deleteResult = BoolWithMessage.False(""); if (assetToRemove.AssetCategory == AssetCategory.Maps.Value) { MapMetaData mapToDelete = MetaDataManager.GetAllMetaDataForMaps()?.Where(m => m.AssetName == assetToRemove.Asset.ID).FirstOrDefault(); if (mapToDelete == null) { UserMessage = "Failed to find meta data to delete map files ..."; return; } deleteResult = MetaDataManager.DeleteMapFiles(mapToDelete); } else { TextureMetaData textureToDelete = MetaDataManager.GetTextureMetaDataByName(assetToRemove.Asset.ID); if (textureToDelete == null) { UserMessage = $"Failed to find meta data to delete texture files for {assetToRemove.Asset.ID}..."; return; } deleteResult = MetaDataManager.DeleteTextureFiles(textureToDelete); } UserMessage = deleteResult.Message; if (deleteResult.Result) { RefreshPreviewForSelected(); // refresh list if filtering by installed or uninstalled if (SelectedInstallStatus != defaultInstallStatusValue) { RefreshFilteredAssetList(); } } }