public string getInitialFoldersJSON(bool dumdum)
{
List<jsonFolder> folders = new List<jsonFolder>();
//MessageBox.Show("getInitialFoldersJSON()");
// folders.Add(new jsonFolder());
// folders.Add(new jsonFolder(Environment.GetFolderPath(Environment.SpecialFolder.MyVideos)));
/*
jsonFolder network = new jsonFolder("Network");
network.key = "\\";
folders.Add(network);
DirectoryEntry root = new DirectoryEntry("WinNT:");
foreach (DirectoryEntry networkComputers in root.Children) {
foreach (DirectoryEntry networkComputer in networkComputers.Children) {
if (networkComputer.Name != "Schema") {
jsonFolder networked = new jsonFolder(networkComputer.Name);
networked.lazy = true;
network.children.Add(networked);
try {
ManagementObjectSearcher searcher =
new ManagementObjectSearcher("root\\CIMV2",
"SELECT * FROM Win32_Share");
foreach (ManagementObject queryObj in searcher.Get()) {
Debug.WriteLine("-----------------------------------");
Debug.WriteLine("Win32_Share instance");
Debug.WriteLine("-----------------------------------");
Debug.WriteLine("Name: {0}", queryObj["Name"]);
}
} catch (ManagementException e) {
MessageBox.Show("An error occurred while querying for WMI data: " + e.Message);
}
//textBox1.Text += computer.Name + "\r\n";
}
}
}
*/
jsonFolder computer = new jsonFolder("Computer");
computer.expanded = true;
folders.Add(computer);
DriveInfo[] info = DriveInfo.GetDrives();
foreach (DriveInfo di in info) {
string drive = "(" + di.Name.Replace("\\", "") + ")";
jsonFolder f = new jsonFolder(drive);
f.lazy = true;
f.key = di.Name;
string extraInfo = "";
if (di.IsReady) {
extraInfo += di.VolumeLabel + " ";
} else {
f.unselectable = true;
f.extraClasses = "dim";
}
switch (di.DriveType) {
case DriveType.Removable:
if (extraInfo == "") extraInfo += "Removable Disk ";
break;
}
if (extraInfo != "") f.title = extraInfo + f.title;
computer.children.Add(f);
}
if (this.persistant == null || this.getPersistant("folders") == null) {
this.loadPersistantConfig();
}
foreach (string folder in Convert.ToString(this.getPersistant("folders")).Split(new string[] { Environment.NewLine, "\r\n", "\n" }, StringSplitOptions.RemoveEmptyEntries)) {
if (folder.Substring(0, 2) == "\\\\") {
string[] parts = folder.Split(new string[] { "\\" }, StringSplitOptions.RemoveEmptyEntries);
int i = 0;
jsonFolder network = new jsonFolder("Network");
folders.Add(network);
jsonFolder node = network;
while (i < parts.Length) {
jsonFolder newNode = new jsonFolder(parts[i]);
node.children.Add(newNode);
i++;
if (i == parts.Length) {
newNode.selected = true;
jsonFolder dummy = new jsonFolder("dummy");
dummy.selected = false;
//dummy.unselectable = false;
dummy.extraClasses = "hidden";
node.children.Add(dummy);
}
node = newNode;
}
} else {
jsonFolder node = computer;
string basePath = "";
string[] parts = folder.Split(new string[] { "\\" }, StringSplitOptions.RemoveEmptyEntries);
int i = 0;
while (i < parts.Length) {
string key = parts[i].ToLower();
if (key.IndexOf(':') > -1) key = key.ToUpper() + "\\";
jsonFolder newNode = node.hasChild(key);
if (newNode == null) {
// Add children if not found
node.children.AddRange(this.getFolder(basePath));
node = node.hasChild(key);
if (node == null) break; // Escape while loop if still not found
} else {
node = newNode;
}
//node.expanded = true;
node.selected = true;
basePath += parts[i] + "\\";
i++;
}
if (node != null) node.selected = true;
}
}
return JsonConvert.SerializeObject(folders);
}