private static CataloguesIndex InitializeNoCatalogues(MoviestormPaths pMoviestormPaths, out string pErrorText) { CataloguesIndex cataloguesIndex = new CataloguesIndex(); cataloguesIndex.Catalogues = new List <CatalogueInfo>(); AddonPackageSet packageSet = new AddonPackageSet(pMoviestormPaths, null) { Description = "Default catalogue" }; packageSet.Save(out pErrorText, cataloguesIndex.DefaultAddonDatabaseFilename); CatalogueInfo catalogue = new CatalogueInfo() { Name = cataloguesIndex.DefaultAddonDatabase, Description = "Default catalogue", AddonCount = 0, LastUpdateDateTime = packageSet.LastUpdate, Version = packageSet.CatalogueVersion }; cataloguesIndex.Catalogues.Add(catalogue); cataloguesIndex.Save(CataloguesIndexFilePath, out pErrorText); return(cataloguesIndex); }
// ----------------------------------------------------------------------------------------------- /// <summary> /// Loads catalogues info from file /// </summary> /// <param name="pErrorText">Text of error, if any</param> /// <returns>Catalogues info loaded (or null, if failed)</returns> public static CataloguesIndex Load(out string pErrorText) { pErrorText = null; if (!File.Exists(CataloguesIndexFilePath)) { return(null); } CataloguesIndex cataloguesIndex = new CataloguesIndex(); try { XmlSerializer serializer = new XmlSerializer(cataloguesIndex.GetType()); using (StreamReader reader = new StreamReader(CataloguesIndexFilePath)) { cataloguesIndex = (CataloguesIndex)serializer.Deserialize(reader); reader.Close(); } } catch (Exception exception) { pErrorText = exception.Message; if (exception.InnerException != null) { pErrorText += $" ({exception.InnerException.Message})"; } cataloguesIndex = null; } return(cataloguesIndex); }
// ------------------------------------------------------------------------------------------------- public static CataloguesIndex Initialize(MoviestormPaths pMoviestormPaths, out string pErrorText) { pErrorText = null; List <string> catalogueFiles = Directory.EnumerateFiles(Utils.GetExecutableDirectory(), "*.scat").ToList(); if ((catalogueFiles == null) || (catalogueFiles.Count == 0)) { return(InitializeNoCatalogues(pMoviestormPaths, out pErrorText)); } int defaultIndex = -1; int index = 0; List <CatalogueInfo> catalogues = new List <CatalogueInfo>(); foreach (string file in catalogueFiles) { CatalogueInfo catalogue = new CatalogueInfo() { Name = Path.GetFileNameWithoutExtension(file) }; string errorText; AddonPackageSet packageSet = AddonPackageSet.Load(out errorText, file); catalogue.Description = packageSet?.Description; if ((catalogue.FilePath.ToLower() == AddonPackageSet.DefaultAddonPackageSetFileName.ToLower()) || (catalogueFiles.Count == 1)) { if (catalogue.Description == null) { catalogue.Description = "Default catalogue"; } defaultIndex = index; } catalogue.LastUpdateDateTime = packageSet.LastUpdate; catalogue.AddonCount = packageSet?.Addons.Count ?? 0; catalogue.Version = packageSet.CatalogueVersion; catalogues.Add(catalogue); index++; } CataloguesIndex cataloguesIndex = new CataloguesIndex(); cataloguesIndex.Catalogues = catalogues.OrderBy(o => o.FilePath).ToList(); cataloguesIndex.DefaultAddonDatabase = (defaultIndex < 0) ? cataloguesIndex.Catalogues[0].Name : cataloguesIndex.Catalogues[defaultIndex].Name; cataloguesIndex.Save(CataloguesIndexFilePath, out pErrorText); return(cataloguesIndex); }