diff --git a/Library/Provider/LibraryProvider.cs b/Library/Provider/LibraryProvider.cs index 7a35039a1..c6d37af68 100644 --- a/Library/Provider/LibraryProvider.cs +++ b/Library/Provider/LibraryProvider.cs @@ -44,12 +44,15 @@ namespace MatterHackers.MatterControl.PrintLibrary.Provider { public abstract class LibraryProvider : IDisposable { + protected Action SetCurrentLibraryProvider { get; private set; } + protected Dictionary itemReportProgressHandlers = new Dictionary(); private LibraryProvider parentLibraryProvider = null; - public LibraryProvider(LibraryProvider parentLibraryProvider) + public LibraryProvider(LibraryProvider parentLibraryProvider, Action setCurrentLibraryProvider) { + this.SetCurrentLibraryProvider = setCurrentLibraryProvider; this.parentLibraryProvider = parentLibraryProvider; } diff --git a/Library/Provider/LibraryProviderFileSystem.cs b/Library/Provider/LibraryProviderFileSystem.cs index a0e379541..cb0418a6d 100644 --- a/Library/Provider/LibraryProviderFileSystem.cs +++ b/Library/Provider/LibraryProviderFileSystem.cs @@ -61,7 +61,7 @@ namespace MatterHackers.MatterControl.PrintLibrary.Provider public virtual LibraryProvider CreateLibraryProvider(LibraryProvider parentLibraryProvider, Action setCurrentLibraryProvider) { - return new LibraryProviderFileSystem(rootPath, Description, parentLibraryProvider); + return new LibraryProviderFileSystem(rootPath, Description, parentLibraryProvider, setCurrentLibraryProvider); } } @@ -74,8 +74,8 @@ namespace MatterHackers.MatterControl.PrintLibrary.Provider private string keywordFilter = string.Empty; private string rootPath; - public LibraryProviderFileSystem(string rootPath, string name, LibraryProvider parentLibraryProvider) - : base(parentLibraryProvider) + public LibraryProviderFileSystem(string rootPath, string name, LibraryProvider parentLibraryProvider, Action setCurrentLibraryProvider) + : base(parentLibraryProvider, setCurrentLibraryProvider) { this.Name = name; this.rootPath = rootPath; @@ -208,7 +208,7 @@ namespace MatterHackers.MatterControl.PrintLibrary.Provider public override LibraryProvider GetProviderForCollection(PrintItemCollection collection) { - return new LibraryProviderFileSystem(Path.Combine(rootPath, collection.Key), collection.Name, this); + return new LibraryProviderFileSystem(Path.Combine(rootPath, collection.Key), collection.Name, this, SetCurrentLibraryProvider); } public override void RenameCollection(int collectionIndexToRename, string newName) diff --git a/Library/Provider/LibraryProviderHistory.cs b/Library/Provider/LibraryProviderHistory.cs index 0524cf3a6..807876d3f 100644 --- a/Library/Provider/LibraryProviderHistory.cs +++ b/Library/Provider/LibraryProviderHistory.cs @@ -51,7 +51,7 @@ namespace MatterHackers.MatterControl.PrintLibrary.Provider { public virtual LibraryProvider CreateLibraryProvider(LibraryProvider parentLibraryProvider, Action setCurrentLibraryProvider) { - return new LibraryProviderHistory(null, parentLibraryProvider); + return new LibraryProviderHistory(null, parentLibraryProvider, setCurrentLibraryProvider); } public string ProviderKey @@ -67,8 +67,8 @@ namespace MatterHackers.MatterControl.PrintLibrary.Provider { private static LibraryProviderHistory instance = null; - public LibraryProviderHistory(PrintItemCollection baseLibraryCollection, LibraryProvider parentLibraryProvider) - : base(parentLibraryProvider) + public LibraryProviderHistory(PrintItemCollection baseLibraryCollection, LibraryProvider parentLibraryProvider, Action setCurrentLibraryProvider) + : base(parentLibraryProvider, setCurrentLibraryProvider) { //PrintHistoryData.Instance.ItemAdded.RegisterEvent((sender, e) => OnDataReloaded(null), ref unregisterEvent); this.Name = "Print History"; @@ -80,7 +80,7 @@ namespace MatterHackers.MatterControl.PrintLibrary.Provider { if (instance == null) { - instance = new LibraryProviderHistory(null, null); + instance = new LibraryProviderHistory(null, null, null); } return instance; @@ -165,7 +165,7 @@ namespace MatterHackers.MatterControl.PrintLibrary.Provider public override LibraryProvider GetProviderForCollection(PrintItemCollection collection) { - return new LibraryProviderHistory(collection, this); + return new LibraryProviderHistory(collection, this, SetCurrentLibraryProvider); } public override void RemoveCollection(int collectionIndexToRemove) diff --git a/Library/Provider/LibraryProviderQueue.cs b/Library/Provider/LibraryProviderQueue.cs index 45032bedf..f1a062729 100644 --- a/Library/Provider/LibraryProviderQueue.cs +++ b/Library/Provider/LibraryProviderQueue.cs @@ -50,7 +50,7 @@ namespace MatterHackers.MatterControl.PrintLibrary.Provider { public virtual LibraryProvider CreateLibraryProvider(LibraryProvider parentLibraryProvider, Action setCurrentLibraryProvider) { - return new LibraryProviderQueue(null, parentLibraryProvider); + return new LibraryProviderQueue(null, setCurrentLibraryProvider, parentLibraryProvider); } public string ProviderKey @@ -68,8 +68,8 @@ namespace MatterHackers.MatterControl.PrintLibrary.Provider EventHandler unregisterEvent; - public LibraryProviderQueue(PrintItemCollection baseLibraryCollection, LibraryProvider parentLibraryProvider) - : base(parentLibraryProvider) + public LibraryProviderQueue(PrintItemCollection baseLibraryCollection, Action setCurrentLibraryProvider, LibraryProvider parentLibraryProvider) + : base(parentLibraryProvider, setCurrentLibraryProvider) { QueueData.Instance.ItemAdded.RegisterEvent((sender, e) => OnDataReloaded(null), ref unregisterEvent); this.Name = "Print Queue"; @@ -81,7 +81,7 @@ namespace MatterHackers.MatterControl.PrintLibrary.Provider { if (instance == null) { - instance = new LibraryProviderQueue(null, null); + instance = new LibraryProviderQueue(null, null, null); } return instance; @@ -166,7 +166,7 @@ namespace MatterHackers.MatterControl.PrintLibrary.Provider public override LibraryProvider GetProviderForCollection(PrintItemCollection collection) { - return new LibraryProviderQueue(collection, this); + return new LibraryProviderQueue(collection, SetCurrentLibraryProvider, this); } public override void RemoveCollection(int collectionIndexToRemove) diff --git a/Library/Provider/LibraryProviderSelector.cs b/Library/Provider/LibraryProviderSelector.cs index 4f77168a0..31c4315bb 100644 --- a/Library/Provider/LibraryProviderSelector.cs +++ b/Library/Provider/LibraryProviderSelector.cs @@ -46,7 +46,6 @@ namespace MatterHackers.MatterControl.PrintLibrary.Provider { public class LibraryProviderSelector : LibraryProvider { - Action setCurrentLibraryProvider; private List libraryCreators = new List(); private ILibraryCreator PurchasedLibraryCreator { get; set; } @@ -58,12 +57,10 @@ namespace MatterHackers.MatterControl.PrintLibrary.Provider int firstAddedDirectoryIndex; public LibraryProviderSelector(Action setCurrentLibraryProvider, bool includeQueueLibraryProvider) - : base(null) + : base(null, setCurrentLibraryProvider) { this.Name = "Home".Localize(); - this.setCurrentLibraryProvider = setCurrentLibraryProvider; - ApplicationController.Instance.CloudSyncStatusChanged.RegisterEvent(CloudSyncStatusChanged, ref unregisterEvents); if (includeQueueLibraryProvider) @@ -163,7 +160,7 @@ namespace MatterHackers.MatterControl.PrintLibrary.Provider if(e != null && !e.IsAuthenticated) { // Switch to the selector - setCurrentLibraryProvider(this); + SetCurrentLibraryProvider(this); } // Refresh state @@ -235,7 +232,7 @@ namespace MatterHackers.MatterControl.PrintLibrary.Provider public override PrintItemCollection GetCollectionItem(int collectionIndex) { - LibraryProvider provider = libraryCreators[collectionIndex].CreateLibraryProvider(this, setCurrentLibraryProvider); + LibraryProvider provider = libraryCreators[collectionIndex].CreateLibraryProvider(this, SetCurrentLibraryProvider); return new PrintItemCollection(provider.Name, provider.ProviderKey); } @@ -250,7 +247,7 @@ namespace MatterHackers.MatterControl.PrintLibrary.Provider { if (collection.Key == libraryCreator.ProviderKey) { - return libraryCreator.CreateLibraryProvider(this, setCurrentLibraryProvider); + return libraryCreator.CreateLibraryProvider(this, SetCurrentLibraryProvider); } } @@ -273,7 +270,7 @@ namespace MatterHackers.MatterControl.PrintLibrary.Provider public LibraryProvider GetPurchasedLibrary() { - return PurchasedLibraryCreator.CreateLibraryProvider(this, setCurrentLibraryProvider); + return PurchasedLibraryCreator.CreateLibraryProvider(this, SetCurrentLibraryProvider); } } } \ No newline at end of file diff --git a/Library/Provider/LibraryProviderSqlite.cs b/Library/Provider/LibraryProviderSqlite.cs index 1c49f4858..a92ba9eda 100644 --- a/Library/Provider/LibraryProviderSqlite.cs +++ b/Library/Provider/LibraryProviderSqlite.cs @@ -52,12 +52,10 @@ namespace MatterHackers.MatterControl.PrintLibrary.Provider private bool ignoreNextKeywordFilter = false; private string keywordFilter = string.Empty; private List printItems = new List(); - private Action setCurrentLibraryProvider; public LibraryProviderSQLite(PrintItemCollection baseLibraryCollection, Action setCurrentLibraryProvider, LibraryProvider parentLibraryProvider, string visibleName) - : base(parentLibraryProvider) + : base(parentLibraryProvider, setCurrentLibraryProvider) { - this.setCurrentLibraryProvider = setCurrentLibraryProvider; this.Name = visibleName; if (baseLibraryCollection == null) @@ -136,7 +134,7 @@ namespace MatterHackers.MatterControl.PrintLibrary.Provider { currentProvider.KeywordFilter = value; currentProvider.ignoreNextKeywordFilter = true; - UiThread.RunOnIdle(() => setCurrentLibraryProvider(currentProvider)); + UiThread.RunOnIdle(() => SetCurrentLibraryProvider(currentProvider)); } } else // the search only shows for the cloud library root @@ -271,7 +269,7 @@ namespace MatterHackers.MatterControl.PrintLibrary.Provider public override LibraryProvider GetProviderForCollection(PrintItemCollection collection) { - return new LibraryProviderSQLite(collection, setCurrentLibraryProvider, this, collection.Name); + return new LibraryProviderSQLite(collection, SetCurrentLibraryProvider, this, collection.Name); } public override void RemoveCollection(int collectionIndexToRemove) diff --git a/Tests/MatterControl.Tests/MatterControl/LibraryProviderTests.cs b/Tests/MatterControl.Tests/MatterControl/LibraryProviderTests.cs index 8b99041ee..5c939c8f7 100644 --- a/Tests/MatterControl.Tests/MatterControl/LibraryProviderTests.cs +++ b/Tests/MatterControl.Tests/MatterControl/LibraryProviderTests.cs @@ -70,7 +70,7 @@ namespace MatterControl.Tests Directory.CreateDirectory(testLibraryDirectory); - LibraryProviderFileSystem testProvider = new LibraryProviderFileSystem(testLibraryDirectory, "TestPath", null); + LibraryProviderFileSystem testProvider = new LibraryProviderFileSystem(testLibraryDirectory, "TestPath", null, null); testProvider.DataReloaded += (sender, e) => { dataReloaded = true; }; Assert.IsTrue(testProvider.CollectionCount == 0, "Start with a new database for these tests.");