Made the library provider much more robust can handle sql data and local file data.

Made a top level Library Provider Selector
This commit is contained in:
Lars Brubaker 2015-06-15 18:31:43 -07:00
parent c38b4de0ba
commit 0626981766
10 changed files with 439 additions and 75 deletions

View file

@ -39,46 +39,58 @@ namespace MatterHackers.MatterControl.PrintLibrary.Provider
{
public class LibraryProviderFileSystem : LibraryProvider
{
public string key;
private static int keyCount = 0;
private string currentDirectory = ".";
private List<string> currentDirectoryFiles = new List<string>();
private List<string> currentDirectoryDirectories = new List<string>();
private List<string> currentDirectoryFiles = new List<string>();
private string description;
private string keywordFilter = string.Empty;
private string parentKey = null;
private string rootPath;
public LibraryProviderFileSystem(string rootPath)
public LibraryProviderFileSystem(string rootPath, string description)
{
this.description = description;
this.rootPath = rootPath;
key = keyCount.ToString();
keyCount++;
GetFilesInCurrentDirectory();
}
public LibraryProviderFileSystem(PrintItemCollection collectionBase)
public LibraryProviderFileSystem(PrintItemCollection collectionBase, string description, string parentKey)
{
this.parentKey = parentKey;
this.description = description;
this.rootPath = collectionBase.Key;
GetFilesInCurrentDirectory();
}
public override void SetCollectionBase(PrintItemCollection collectionBase)
{
string collectionPath = collectionBase.Key;
int startOfCurrentDir = collectionPath.IndexOf('.');
if (startOfCurrentDir != -1)
{
this.currentDirectory = collectionPath.Substring(startOfCurrentDir);
}
key = keyCount.ToString();
keyCount++;
GetFilesInCurrentDirectory();
}
public override int CollectionCount
{
get
get
{
return currentDirectoryDirectories.Count;
}
}
public override bool HasParent
{
get
{
if (parentKey != null)
{
return true;
}
return false;
}
}
public override int ItemCount
{
get
@ -87,6 +99,14 @@ namespace MatterHackers.MatterControl.PrintLibrary.Provider
}
}
public override string Key
{
get
{
return "LibraryProvider_" + key.ToString();
}
}
public override string KeywordFilter
{
get
@ -105,6 +125,8 @@ namespace MatterHackers.MatterControl.PrintLibrary.Provider
}
}
public override string Name { get { return description; } }
public override void AddCollectionToLibrary(string collectionName)
{
throw new NotImplementedException();
@ -115,23 +137,32 @@ namespace MatterHackers.MatterControl.PrintLibrary.Provider
throw new NotImplementedException();
}
public override PrintItemCollection GetParentCollectionItem()
{
if (currentDirectory != ".")
{
string parentDirectory = Path.GetDirectoryName(currentDirectory);
return new PrintItemCollection("..", parentDirectory);
}
return null;
}
public override PrintItemCollection GetCollectionItem(int collectionIndex)
{
string directoryName = currentDirectoryDirectories[collectionIndex];
return new PrintItemCollection(Path.GetFileNameWithoutExtension(directoryName), directoryName);
}
public override PrintItemCollection GetParentCollectionItem()
{
if (currentDirectory == ".")
{
if (parentKey != null)
{
return new PrintItemCollection("..", parentKey);
}
else
{
return null;
}
}
else
{
string parentDirectory = Path.GetDirectoryName(currentDirectory);
return new PrintItemCollection("..", parentDirectory);
}
}
public override PrintItemWrapper GetPrintItemWrapper(int itemIndex)
{
string fileName = currentDirectoryFiles[itemIndex];
@ -148,6 +179,18 @@ namespace MatterHackers.MatterControl.PrintLibrary.Provider
throw new NotImplementedException();
}
public override void SetCollectionBase(PrintItemCollection collectionBase)
{
string collectionPath = collectionBase.Key;
int startOfCurrentDir = collectionPath.IndexOf('.');
if (startOfCurrentDir != -1)
{
this.currentDirectory = collectionPath.Substring(startOfCurrentDir);
}
GetFilesInCurrentDirectory();
}
private void GetFilesInCurrentDirectory()
{
currentDirectoryDirectories.Clear();