diff --git a/AaxDecrypter/AaxcDownloadConverter.cs b/AaxDecrypter/AaxcDownloadConverter.cs index 87bb7d30..160d5ede 100644 --- a/AaxDecrypter/AaxcDownloadConverter.cs +++ b/AaxDecrypter/AaxcDownloadConverter.cs @@ -12,7 +12,6 @@ namespace AaxDecrypter { public class AaxcDownloadConverter : AudiobookDownloadBase { - const int MAX_FILENAME_LENGTH = 255; private static readonly TimeSpan minChapterLength = TimeSpan.FromSeconds(3); protected override StepSequence Steps { get; } @@ -207,9 +206,10 @@ That naming may not be desirable for everyone, but it's an easy change to instea }); } - // return. cache name for event call at end of processing private string GetMultipartFileName(int chapterCount, int chaptersTotal, string chapterTitle) { + const int MAX_FILENAME_LENGTH = 255; + // 1-9 => 1-9 // 10-99 => 01-99 // 100-999 => 001-999 diff --git a/AppScaffolding/AppScaffolding.csproj b/AppScaffolding/AppScaffolding.csproj index 1b965e50..14f95f36 100644 --- a/AppScaffolding/AppScaffolding.csproj +++ b/AppScaffolding/AppScaffolding.csproj @@ -3,7 +3,7 @@ net5.0 - 6.2.5.0 + 6.2.6.1 diff --git a/AppScaffolding/LibationScaffolding.cs b/AppScaffolding/LibationScaffolding.cs index d4b39386..c3674657 100644 --- a/AppScaffolding/LibationScaffolding.cs +++ b/AppScaffolding/LibationScaffolding.cs @@ -6,8 +6,8 @@ using System.Reflection; using Dinah.Core; using Dinah.Core.IO; using Dinah.Core.Logging; -using FileManager; using InternalUtilities; +using LibationFileManager; using Newtonsoft.Json.Linq; using Serilog; diff --git a/ApplicationServices/DbContexts.cs b/ApplicationServices/DbContexts.cs index f860fd73..eb79a34d 100644 --- a/ApplicationServices/DbContexts.cs +++ b/ApplicationServices/DbContexts.cs @@ -1,7 +1,7 @@ using System; using System.Collections.Generic; using DataLayer; -using FileManager; +using LibationFileManager; namespace ApplicationServices { diff --git a/ApplicationServices/LibraryCommands.cs b/ApplicationServices/LibraryCommands.cs index c8fc3f54..049a65ad 100644 --- a/ApplicationServices/LibraryCommands.cs +++ b/ApplicationServices/LibraryCommands.cs @@ -7,6 +7,7 @@ using DataLayer; using Dinah.Core; using DtoImporterService; using InternalUtilities; +using LibationFileManager; using Serilog; using static DtoImporterService.PerfLogger; @@ -43,7 +44,7 @@ namespace ApplicationServices } catch (AudibleApi.Authentication.LoginFailedException lfEx) { - lfEx.SaveFiles(FileManager.Configuration.Instance.LibationFiles); + lfEx.SaveFiles(Configuration.Instance.LibationFiles); // nuget Serilog.Exceptions would automatically log custom properties // However, it comes with a scary warning when used with EntityFrameworkCore which I'm not yet ready to implement: @@ -98,7 +99,7 @@ namespace ApplicationServices } catch (AudibleApi.Authentication.LoginFailedException lfEx) { - lfEx.SaveFiles(FileManager.Configuration.Instance.LibationFiles); + lfEx.SaveFiles(Configuration.Instance.LibationFiles); // nuget Serilog.Exceptions would automatically log custom properties // However, it comes with a scary warning when used with EntityFrameworkCore which I'm not yet ready to implement: @@ -155,7 +156,7 @@ namespace ApplicationServices logTime($"pre scanAccountAsync {account.AccountName}"); - var dtoItems = await apiExtended.GetLibraryValidatedAsync(libraryResponseGroups, FileManager.Configuration.Instance.ImportEpisodes); + var dtoItems = await apiExtended.GetLibraryValidatedAsync(libraryResponseGroups, Configuration.Instance.ImportEpisodes); logTime($"post scanAccountAsync {account.AccountName} qty: {dtoItems.Count}"); @@ -244,7 +245,7 @@ namespace ApplicationServices // must be here instead of in db layer due to AaxcExists public static LiberatedStatus Liberated_Status(Book book) => book.Audio_Exists ? book.UserDefinedItem.BookStatus - : FileManager.AudibleFileStorage.AaxcExists(book.AudibleProductId) ? LiberatedStatus.PartialDownload + : AudibleFileStorage.AaxcExists(book.AudibleProductId) ? LiberatedStatus.PartialDownload : LiberatedStatus.NotLiberated; // exists here for feature predictability. It makes sense for this to be where Liberated_Status is diff --git a/DataLayer/DataLayer.csproj b/DataLayer/DataLayer.csproj index fc97b069..7cb06c0b 100644 --- a/DataLayer/DataLayer.csproj +++ b/DataLayer/DataLayer.csproj @@ -25,7 +25,7 @@ - + diff --git a/DataLayer/EfClasses/UserDefinedItem.cs b/DataLayer/EfClasses/UserDefinedItem.cs index ea18e296..f1e77eee 100644 --- a/DataLayer/EfClasses/UserDefinedItem.cs +++ b/DataLayer/EfClasses/UserDefinedItem.cs @@ -33,7 +33,7 @@ namespace DataLayer // import previously saved tags ArgumentValidator.EnsureNotNullOrWhiteSpace(book.AudibleProductId, nameof(book.AudibleProductId)); - Tags = FileManager.TagsPersistence.GetTags(book.AudibleProductId); + Tags = LibationFileManager.TagsPersistence.GetTags(book.AudibleProductId); } #region Tags diff --git a/DataLayer/TagPersistenceInterceptor.cs b/DataLayer/TagPersistenceInterceptor.cs index bb6ff35d..c08d0c23 100644 --- a/DataLayer/TagPersistenceInterceptor.cs +++ b/DataLayer/TagPersistenceInterceptor.cs @@ -24,7 +24,7 @@ namespace DataLayer .Select(t => (t.Book.AudibleProductId, t.Tags)) .ToList(); - FileManager.TagsPersistence.Save(tagsCollection); + LibationFileManager.TagsPersistence.Save(tagsCollection); } } } diff --git a/FileLiberator/ConvertToMp3.cs b/FileLiberator/ConvertToMp3.cs index b10dcd7b..b4ef29de 100644 --- a/FileLiberator/ConvertToMp3.cs +++ b/FileLiberator/ConvertToMp3.cs @@ -1,14 +1,14 @@ -using AAXClean; +using System; +using System.IO; +using System.Linq; +using System.Threading.Tasks; +using AAXClean; using DataLayer; using Dinah.Core; using Dinah.Core.ErrorHandling; using Dinah.Core.IO; using Dinah.Core.Net.Http; -using FileManager; -using System; -using System.IO; -using System.Linq; -using System.Threading.Tasks; +using LibationFileManager; namespace FileLiberator { diff --git a/FileLiberator/DownloadDecryptBook.cs b/FileLiberator/DownloadDecryptBook.cs index 0bf31799..e8690b71 100644 --- a/FileLiberator/DownloadDecryptBook.cs +++ b/FileLiberator/DownloadDecryptBook.cs @@ -9,6 +9,7 @@ using DataLayer; using Dinah.Core; using Dinah.Core.ErrorHandling; using FileManager; +using LibationFileManager; namespace FileLiberator { diff --git a/FileLiberator/DownloadPdf.cs b/FileLiberator/DownloadPdf.cs index e286eff8..8461dc4b 100644 --- a/FileLiberator/DownloadPdf.cs +++ b/FileLiberator/DownloadPdf.cs @@ -8,6 +8,7 @@ using DataLayer; using Dinah.Core.ErrorHandling; using Dinah.Core.Net.Http; using FileManager; +using LibationFileManager; namespace FileLiberator { diff --git a/FileLiberator/FileLiberator.csproj b/FileLiberator/FileLiberator.csproj index feb0445a..467c460c 100644 --- a/FileLiberator/FileLiberator.csproj +++ b/FileLiberator/FileLiberator.csproj @@ -7,7 +7,6 @@ - diff --git a/FileLiberator/Processable.cs b/FileLiberator/Processable.cs index 3043b07d..0c7743e7 100644 --- a/FileLiberator/Processable.cs +++ b/FileLiberator/Processable.cs @@ -27,7 +27,7 @@ namespace FileLiberator public IEnumerable GetValidLibraryBooks(IEnumerable library) => library.Where(libraryBook => Validate(libraryBook) - && (libraryBook.Book.ContentType != ContentType.Episode || FileManager.Configuration.Instance.DownloadEpisodes) + && (libraryBook.Book.ContentType != ContentType.Episode || LibationFileManager.Configuration.Instance.DownloadEpisodes) ); public async Task ProcessSingleAsync(LibraryBook libraryBook, bool validate) diff --git a/FileLiberator/Streamable.cs b/FileLiberator/Streamable.cs index 52bf7cbf..79cd4877 100644 --- a/FileLiberator/Streamable.cs +++ b/FileLiberator/Streamable.cs @@ -37,7 +37,7 @@ namespace FileLiberator protected void OnFileCreated(string id, string path) { Serilog.Log.Logger.Information("File created {@DebugInfo}", new { Name = nameof(FileCreated), id, path }); - FileManager.FilePathCache.Insert(id, path); + LibationFileManager.FilePathCache.Insert(id, path); FileCreated?.Invoke(this, (id, path)); } } diff --git a/FileManager/BackgroundFileSystem.cs b/FileManager/BackgroundFileSystem.cs index 663c702a..2144cf80 100644 --- a/FileManager/BackgroundFileSystem.cs +++ b/FileManager/BackgroundFileSystem.cs @@ -8,13 +8,9 @@ using System.Threading.Tasks; namespace FileManager { /// - /// Tracks actual locations of files. This is especially useful for clicking button to navigate to the book's files. - /// - /// Note: this is no longer how Libation manages "Liberated" state. That is now statefully managed in the database. - /// This paradigm is what allows users to manually choose to not download books. Also allows them to manually toggle - /// this state and download again. + /// Tracks actual locations of files. /// - internal class BackgroundFileSystem + public class BackgroundFileSystem { public string RootDirectory { get; private set; } public string SearchPattern { get; private set; } diff --git a/FileManager/FileManager.csproj b/FileManager/FileManager.csproj index 737660bd..7c7d0ea4 100644 --- a/FileManager/FileManager.csproj +++ b/FileManager/FileManager.csproj @@ -1,4 +1,4 @@ - + net5.0 @@ -6,8 +6,6 @@ - - diff --git a/FileManager/FileUtility.cs b/FileManager/FileUtility.cs index 22bed934..e489bd9e 100644 --- a/FileManager/FileUtility.cs +++ b/FileManager/FileUtility.cs @@ -10,15 +10,19 @@ namespace FileManager if (string.IsNullOrWhiteSpace(dirFullPath)) throw new ArgumentException($"{nameof(dirFullPath)} may not be null or whitespace", nameof(dirFullPath)); + filename ??= ""; + // file max length = 255. dir max len = 247 - // sanitize - filename = getAsciiTag(filename); + // sanitize. omit invalid characters. exception: colon => underscore + filename = filename.Replace(':', '_'); + filename = Dinah.Core.PathLib.ToPathSafeString(filename); + // manage length if (filename.Length > 50) filename = filename.Substring(0, 50) + "[...]"; - // append id. it is 10 or 14 char in the common cases + // append metadata if (metadataSuffixes != null && metadataSuffixes.Length > 0) filename += " [" + string.Join("][", metadataSuffixes) + "]"; @@ -34,19 +38,5 @@ namespace FileManager return fullfilename; } - - private static string getAsciiTag(string property) - { - if (property == null) - return ""; - - // omit characters which are invalid. EXCEPTION: change colon to underscore - property = property.Replace(':', '_'); - - // GetInvalidFileNameChars contains everything in GetInvalidPathChars plus ':', '*', '?', '\\', '/' - foreach (var ch in Path.GetInvalidFileNameChars()) - property = property.Replace(ch.ToString(), ""); - return property; - } } } diff --git a/InternalUtilities/AudibleApiStorage.cs b/InternalUtilities/AudibleApiStorage.cs index 3de08430..b6224264 100644 --- a/InternalUtilities/AudibleApiStorage.cs +++ b/InternalUtilities/AudibleApiStorage.cs @@ -1,6 +1,6 @@ using System; using System.IO; -using FileManager; +using LibationFileManager; using Newtonsoft.Json; namespace InternalUtilities diff --git a/InternalUtilities/InternalUtilities.csproj b/InternalUtilities/InternalUtilities.csproj index 93a70a4f..fe68fb52 100644 --- a/InternalUtilities/InternalUtilities.csproj +++ b/InternalUtilities/InternalUtilities.csproj @@ -9,7 +9,7 @@ - + diff --git a/Libation.sln b/Libation.sln index 69052fd2..c926a6b1 100644 --- a/Libation.sln +++ b/Libation.sln @@ -23,7 +23,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "2 Utilities (domain ignoran EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AaxDecrypter", "AaxDecrypter\AaxDecrypter.csproj", "{8BD8E012-F44F-4EE2-A234-D66C14D5FE4B}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FileManager", "FileManager\FileManager.csproj", "{1AE65B61-9C05-4C80-ABFF-48F16E22FDF1}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LibationFileManager", "LibationFileManager\LibationFileManager.csproj", "{1AE65B61-9C05-4C80-ABFF-48F16E22FDF1}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DataLayer", "DataLayer\DataLayer.csproj", "{59A10DF3-63EC-43F1-A3BF-4000CFA118D2}" EndProject @@ -56,6 +56,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LibationCli", "LibationCli\ EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AppScaffolding", "AppScaffolding\AppScaffolding.csproj", "{595E7C4D-506D-486D-98B7-5FDDF398D033}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FileManager", "FileManager\FileManager.csproj", "{E86014F9-E4B3-4CD4-A210-2B3DB571DD86}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -118,6 +120,10 @@ Global {595E7C4D-506D-486D-98B7-5FDDF398D033}.Debug|Any CPU.Build.0 = Debug|Any CPU {595E7C4D-506D-486D-98B7-5FDDF398D033}.Release|Any CPU.ActiveCfg = Release|Any CPU {595E7C4D-506D-486D-98B7-5FDDF398D033}.Release|Any CPU.Build.0 = Release|Any CPU + {E86014F9-E4B3-4CD4-A210-2B3DB571DD86}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E86014F9-E4B3-4CD4-A210-2B3DB571DD86}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E86014F9-E4B3-4CD4-A210-2B3DB571DD86}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E86014F9-E4B3-4CD4-A210-2B3DB571DD86}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -137,6 +143,7 @@ Global {D8F56E5A-3E65-41A6-B7E7-C4515A264B1F} = {7FBBB086-0807-4998-85BF-6D1A49C8AD05} {428163C3-D558-4914-B570-A92069521877} = {8679CAC8-9164-4007-BDD2-F004810EDA14} {595E7C4D-506D-486D-98B7-5FDDF398D033} = {8679CAC8-9164-4007-BDD2-F004810EDA14} + {E86014F9-E4B3-4CD4-A210-2B3DB571DD86} = {43E3ACB3-E0BC-4370-8DBB-E3720C8C8FD1} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {615E00ED-BAEF-4E8E-A92A-9B82D87942A9} diff --git a/FileManager/AudibleFileStorage.cs b/LibationFileManager/AudibleFileStorage.cs similarity index 98% rename from FileManager/AudibleFileStorage.cs rename to LibationFileManager/AudibleFileStorage.cs index 5bbb30b5..e3aceb26 100644 --- a/FileManager/AudibleFileStorage.cs +++ b/LibationFileManager/AudibleFileStorage.cs @@ -3,8 +3,9 @@ using System.Collections.Generic; using System.IO; using System.Linq; using System.Text.RegularExpressions; +using FileManager; -namespace FileManager +namespace LibationFileManager { public abstract class AudibleFileStorage { diff --git a/FileManager/Configuration.cs b/LibationFileManager/Configuration.cs similarity index 99% rename from FileManager/Configuration.cs rename to LibationFileManager/Configuration.cs index 6d8ef9c6..3e701084 100644 --- a/FileManager/Configuration.cs +++ b/LibationFileManager/Configuration.cs @@ -5,13 +5,14 @@ using System.IO; using System.Linq; using Dinah.Core; using Dinah.Core.Logging; +using FileManager; using Microsoft.Extensions.Configuration; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using Serilog; using Serilog.Events; -namespace FileManager +namespace LibationFileManager { public class Configuration { diff --git a/FileManager/FilePathCache.cs b/LibationFileManager/FilePathCache.cs similarity index 98% rename from FileManager/FilePathCache.cs rename to LibationFileManager/FilePathCache.cs index 2d2dd5d6..6f0ffb59 100644 --- a/FileManager/FilePathCache.cs +++ b/LibationFileManager/FilePathCache.cs @@ -5,7 +5,7 @@ using System.Linq; using Dinah.Core.Collections.Immutable; using Newtonsoft.Json; -namespace FileManager +namespace LibationFileManager { public static class FilePathCache { diff --git a/FileManager/FileTypes.cs b/LibationFileManager/FileTypes.cs similarity index 96% rename from FileManager/FileTypes.cs rename to LibationFileManager/FileTypes.cs index 25609145..91c2fd25 100644 --- a/FileManager/FileTypes.cs +++ b/LibationFileManager/FileTypes.cs @@ -3,7 +3,7 @@ using System.Collections.Generic; using System.IO; using System.Linq; -namespace FileManager +namespace LibationFileManager { public enum FileType { Unknown, Audio, AAXC, PDF, Zip, Cue } diff --git a/LibationFileManager/LibationFileManager.csproj b/LibationFileManager/LibationFileManager.csproj new file mode 100644 index 00000000..af133cc4 --- /dev/null +++ b/LibationFileManager/LibationFileManager.csproj @@ -0,0 +1,16 @@ + + + + net5.0 + + + + + + + + + + + + diff --git a/FileManager/PictureStorage.cs b/LibationFileManager/PictureStorage.cs similarity index 99% rename from FileManager/PictureStorage.cs rename to LibationFileManager/PictureStorage.cs index 2e75f7db..1f1b0747 100644 --- a/FileManager/PictureStorage.cs +++ b/LibationFileManager/PictureStorage.cs @@ -6,7 +6,7 @@ using System.Linq; using System.Net.Http; using System.Threading.Tasks; -namespace FileManager +namespace LibationFileManager { public enum PictureSize { _80x80 = 80, _300x300 = 300, _500x500 = 500 } public class PictureCachedEventArgs : EventArgs diff --git a/FileManager/QuickFilters.cs b/LibationFileManager/QuickFilters.cs similarity index 99% rename from FileManager/QuickFilters.cs rename to LibationFileManager/QuickFilters.cs index d422fc28..2b65739c 100644 --- a/FileManager/QuickFilters.cs +++ b/LibationFileManager/QuickFilters.cs @@ -5,7 +5,7 @@ using System.Linq; using Dinah.Core.Collections.Generic; using Newtonsoft.Json; -namespace FileManager +namespace LibationFileManager { public static class QuickFilters { diff --git a/FileManager/SqliteStorage.cs b/LibationFileManager/SqliteStorage.cs similarity index 91% rename from FileManager/SqliteStorage.cs rename to LibationFileManager/SqliteStorage.cs index 8995c484..3871b79a 100644 --- a/FileManager/SqliteStorage.cs +++ b/LibationFileManager/SqliteStorage.cs @@ -1,6 +1,6 @@ using System.IO; -namespace FileManager +namespace LibationFileManager { public static class SqliteStorage { diff --git a/FileManager/TagsPersistence.cs b/LibationFileManager/TagsPersistence.cs similarity index 98% rename from FileManager/TagsPersistence.cs rename to LibationFileManager/TagsPersistence.cs index 5ae19e37..d04f2fcc 100644 --- a/FileManager/TagsPersistence.cs +++ b/LibationFileManager/TagsPersistence.cs @@ -6,7 +6,7 @@ using Newtonsoft.Json; using Polly; using Polly.Retry; -namespace FileManager +namespace LibationFileManager { /// /// Tags must also be stored in db for search performance. Stored in json file to survive a db reset. diff --git a/LibationSearchEngine/LibationSearchEngine.csproj b/LibationSearchEngine/LibationSearchEngine.csproj index 512d22b6..e6c86651 100644 --- a/LibationSearchEngine/LibationSearchEngine.csproj +++ b/LibationSearchEngine/LibationSearchEngine.csproj @@ -14,7 +14,6 @@ - diff --git a/LibationSearchEngine/SearchEngine.cs b/LibationSearchEngine/SearchEngine.cs index dd12ae45..aead2f18 100644 --- a/LibationSearchEngine/SearchEngine.cs +++ b/LibationSearchEngine/SearchEngine.cs @@ -5,7 +5,7 @@ using System.Linq; using System.Text.RegularExpressions; using DataLayer; using Dinah.Core; -using FileManager; +using LibationFileManager; using Lucene.Net.Analysis.Standard; using Lucene.Net.Documents; using Lucene.Net.Index; diff --git a/LibationWinForms/Dialogs/DirectoryOrCustomSelectControl.cs b/LibationWinForms/Dialogs/DirectoryOrCustomSelectControl.cs index e30f44c2..41f914a5 100644 --- a/LibationWinForms/Dialogs/DirectoryOrCustomSelectControl.cs +++ b/LibationWinForms/Dialogs/DirectoryOrCustomSelectControl.cs @@ -1,8 +1,8 @@ -using FileManager; -using System; +using System; using System.Linq; using System.Collections.Generic; using System.Windows.Forms; +using LibationFileManager; namespace LibationWinForms.Dialogs { diff --git a/LibationWinForms/Dialogs/DirectorySelectControl.cs b/LibationWinForms/Dialogs/DirectorySelectControl.cs index 639886ba..ca3f6483 100644 --- a/LibationWinForms/Dialogs/DirectorySelectControl.cs +++ b/LibationWinForms/Dialogs/DirectorySelectControl.cs @@ -1,9 +1,9 @@ -using Dinah.Core; -using FileManager; -using System; +using System; using System.Collections.Generic; using System.Linq; using System.Windows.Forms; +using Dinah.Core; +using LibationFileManager; namespace LibationWinForms.Dialogs { diff --git a/LibationWinForms/Dialogs/SettingsDialog.cs b/LibationWinForms/Dialogs/SettingsDialog.cs index c96e1664..acb28901 100644 --- a/LibationWinForms/Dialogs/SettingsDialog.cs +++ b/LibationWinForms/Dialogs/SettingsDialog.cs @@ -1,9 +1,9 @@ -using Dinah.Core; -using FileManager; -using System; +using System; using System.Linq; using System.IO; using System.Windows.Forms; +using Dinah.Core; +using LibationFileManager; namespace LibationWinForms.Dialogs { diff --git a/LibationWinForms/FormSaveExtension.cs b/LibationWinForms/FormSaveExtension.cs index 3acf13b2..cca421b7 100644 --- a/LibationWinForms/FormSaveExtension.cs +++ b/LibationWinForms/FormSaveExtension.cs @@ -1,7 +1,7 @@ -using FileManager; -using System.Drawing; +using System.Drawing; using System.Linq; using System.Windows.Forms; +using LibationFileManager; namespace LibationWinForms { diff --git a/LibationWinForms/GridEntry.cs b/LibationWinForms/GridEntry.cs index 54f4d488..ca183e11 100644 --- a/LibationWinForms/GridEntry.cs +++ b/LibationWinForms/GridEntry.cs @@ -9,6 +9,7 @@ using DataLayer; using Dinah.Core.DataBinding; using Dinah.Core; using Dinah.Core.Drawing; +using LibationFileManager; namespace LibationWinForms { @@ -39,10 +40,10 @@ namespace LibationWinForms //Get cover art. If it's default, subscribe to PictureCached { - (bool isDefault, byte[] picture) = FileManager.PictureStorage.GetPicture(new FileManager.PictureDefinition(Book.PictureId, FileManager.PictureSize._80x80)); + (bool isDefault, byte[] picture) = PictureStorage.GetPicture(new PictureDefinition(Book.PictureId, PictureSize._80x80)); if (isDefault) - FileManager.PictureStorage.PictureCached += PictureStorage_PictureCached; + PictureStorage.PictureCached += PictureStorage_PictureCached; //Mutable property. Set the field so PropertyChanged isn't fired. _cover = ImageReader.ToImage(picture); @@ -66,12 +67,12 @@ namespace LibationWinForms UserDefinedItem.ItemChanged += UserDefinedItem_ItemChanged; } - private void PictureStorage_PictureCached(object sender, FileManager.PictureCachedEventArgs e) + private void PictureStorage_PictureCached(object sender, PictureCachedEventArgs e) { if (e.Definition.PictureId == Book.PictureId) { Cover = ImageReader.ToImage(e.Picture); - FileManager.PictureStorage.PictureCached -= PictureStorage_PictureCached; + PictureStorage.PictureCached -= PictureStorage_PictureCached; } } @@ -294,7 +295,7 @@ namespace LibationWinForms ~GridEntry() { UserDefinedItem.ItemChanged -= UserDefinedItem_ItemChanged; - FileManager.PictureStorage.PictureCached -= PictureStorage_PictureCached; + PictureStorage.PictureCached -= PictureStorage_PictureCached; } } } diff --git a/LibationWinForms/Program.cs b/LibationWinForms/Program.cs index 749a10f1..d37b39ff 100644 --- a/LibationWinForms/Program.cs +++ b/LibationWinForms/Program.cs @@ -6,8 +6,8 @@ using System.Windows.Forms; using AudibleApi.Authorization; using DataLayer; using Dinah.Core; -using FileManager; using InternalUtilities; +using LibationFileManager; using LibationWinForms.Dialogs; using Microsoft.EntityFrameworkCore; using Newtonsoft.Json.Linq;