public void Refresh(NwdPortableDevice device) { Files.Clear(); if (device != null) { device.FillFolder(this); } }
protected void ConvertNullsToEmptyStrings(NwdPortableDevice device) { if (device.Description == null) { device.Description = ""; } if (device.Model == null) { device.Model = ""; } if (device.DeviceType == null) { device.DeviceType = ""; } if (device.FriendlyName == null) { device.FriendlyName = ""; } }
private void lvParent_SelectionChanged(object sender, SelectionChangedEventArgs e) { object selected = lvParent.SelectedItem; if (selected is NwdPortableDevice) { lvChild.Items.Clear(); NwdPortableDevice device = (NwdPortableDevice)selected; _currentDevice = device; if (device.RootFolder != null) { foreach (NwdPortableDeviceObject pdo in device.RootFolder.Files) { lvChild.Items.Add(pdo); } } } else if (selected is NwdPortableDeviceFolder) { lvChild.Items.Clear(); NwdPortableDeviceFolder folder = (NwdPortableDeviceFolder)selected; folder.Refresh(_currentDevice); if (folder.Files != null) { lvChild.Items.Clear(); foreach (NwdPortableDeviceObject pdo in folder.Files) { lvChild.Items.Add(pdo); } } else { MessageBox.Show("Files Null for Folder: " + folder.Name); } } }
private IEnumerable<NwdUriProcessEntry> GetDeviceSynergyFiles(NwdPortableDevice device) { List<NwdPortableDeviceObject> lst = FindByUri("NWD/synergy/[*]"); List<NwdUriProcessEntry> output = new List<NwdUriProcessEntry>(); if (lst.Count > 0) { foreach (NwdPortableDeviceObject pdo in lst) { if (pdo is NwdPortableDeviceFile) { NwdUri uri = new NwdUri("NWD/synergy/" + pdo.Name); NwdUriProcessEntry pe = new NwdUriProcessEntry(uri); pe.DeviceObject = pdo; output.Add(pe); } } } return output; }
private IEnumerable<NwdUriProcessEntry> GetDeviceHashedMedia(NwdPortableDevice device) { string uri = "NWD/config/FileHashIndex.txt"; NwdPortableDeviceFile hashedMediaIndex = GetFirstFileByUri(uri); if (hashedMediaIndex == null) { Display.Message("[" + uri + "] not found"); return new List<NwdUriProcessEntry>(); //empty list } else { Display.Message("found [" + uri + "]"); //copy to local file system string localFilePath = Configuration.NwdUriToLocalPath(uri); //Display.Message(localFilePath); string localDestinationFolder = Path.GetDirectoryName(localFilePath); //Display.Message(localDestinationFolder); device.DownloadFile(hashedMediaIndex, localDestinationFolder); Display.Message("copied file to [" + localFilePath + "]"); List<string> lineItems = File.ReadAllLines(localFilePath).ToList(); Display.Message("found " + lineItems.Count + " lineItems"); Parser.Parser p = new Parser.Parser(); List<NwdUri> lst = new List<NwdUri>(); List<string> invalidPaths = new List<string>(); foreach (string li in lineItems) { string path = p.Extract("path", li); string hash = p.Extract("sha1Hash", li); List<string> whitelistedFolders = new List<string>(); whitelistedFolders.Add("Pictures"); whitelistedFolders.Add("DCIM"); //NwdUri newUri = Configuration.NwdPathToNwdUri(path); NwdUri newUri = Configuration.NwdPathToNwdUri(path, whitelistedFolders); if (newUri != null) { newUri.Hash = hash; newUri.Path = path; lst.Add(newUri); } else { invalidPaths.Add(path); } } var pathList = (from li in invalidPaths select new { Path = li }).ToList(); if (pathList.Count > 0) { Display.Grid(invalidPaths.Count + " invalid paths skipped", lst, pathList); } else { Display.Grid("0 invalid paths skipped", lst); } var processEntries = (from nwdUri in lst select new NwdUriProcessEntry(nwdUri)).ToList(); return processEntries; } }
private void Retrieve(NwdPortableDevice device, NwdPortableDeviceFolder folder, ref NwdUri uri, ref MultiMap<string, NwdPortableDeviceObject> found) { folder.Refresh(device); string nodeName = uri.PopNodeName(); if (found.ContainsKey(uri.CurrentTraversalUri)) { //used cached lookup foreach (NwdPortableDeviceObject pdo in found[uri.CurrentTraversalUri]) { ProcessPdo(device, pdo, ref uri, ref found); } } else { //use standard lookup if (folder.Files != null) { foreach (NwdPortableDeviceObject pdo in folder.Files) { if (NwdUri.MatchNodeName(nodeName, pdo.Name)) { ProcessPdo(device, pdo, ref uri, ref found); } } } } }
private void Retrieve(NwdPortableDevice device, NwdPortableDeviceFolder folder, ref NwdUri uri, ref List<NwdPortableDeviceObject> found) { folder.Refresh(device); string nodeName = uri.PopNodeName(); if (folder.Files != null) { foreach (NwdPortableDeviceObject pdo in folder.Files) { if (NwdUri.MatchNodeName(nodeName, pdo.Name)) { if (uri.HasNodeKeysInStack()) { if (pdo is NwdPortableDeviceFolder) { NwdPortableDeviceFolder nextFolder = (NwdPortableDeviceFolder)pdo; //uri has one level popped, pass the modified uri and //the newly found folder to the next level of recursion Retrieve(device, nextFolder, ref uri, ref found); } else { //bad key (found name but not a folder and keystack isn't empty, so just return) //do nothing } } else { //finished found.Add(pdo); } } } } }
private void ProcessPdo(NwdPortableDevice device, NwdPortableDeviceObject pdo, ref NwdUri uri, ref MultiMap<string, NwdPortableDeviceObject> found) { if (uri.HasNodeKeysInStack()) { if (pdo is NwdPortableDeviceFolder) { NwdPortableDeviceFolder nextFolder = (NwdPortableDeviceFolder)pdo; found.Add(uri.CurrentTraversalUri, pdo); //uri has one level popped, pass the modified uri and //the newly found folder to the next level of recursion Retrieve(device, nextFolder, ref uri, ref found); } else { //bad key (found name but not a folder and keystack isn't empty, so just return) //do nothing } } else { //finished found.Add(uri.CurrentTraversalUri, pdo); } }