public async Task <Box> FindBox(QRCodeWrapper oQRCode) { CurrentBox = Boxes.FirstOrDefault(oBox => oBox.QRCode == oQRCode); if (CurrentBox == null) { CurrentBox = new Box(this, oQRCode); await MoveFolder.CreateFolderAsync(CurrentBox.ImageFolder); Boxes.Add(CurrentBox); } return(CurrentBox); }
public static SetupTask CreateFrom(XElement taskElement) { SetupTask result; switch (taskElement.Name.LocalName) { case "Group": result = new Composite(taskElement); break; case "ExtractArchive": result = new ExtractArchive(taskElement); break; case "TweakINI": result = new TweakINI(taskElement); break; case "CopyFile": result = new CopyFile(taskElement); break; case "Embedded": result = new Embedded(taskElement); break; case "Clean": result = new Clean(taskElement); break; case "CreateEmptyFolder": result = new CreateEmptyFolder(taskElement); break; case "RunProcess": result = new RunProcess(taskElement); break; case "DeleteFolder": result = new DeleteFolder(taskElement); break; case "DeleteFile": result = new DeleteFile(taskElement); break; case "MoveFolder": result = new MoveFolder(taskElement); break; case "EditFile": result = new EditFile(taskElement); break; case "Dummy": result = new Composite(); break; default: throw new NotSupportedException("Task type " + taskElement.Name.LocalName + " is not supported."); } result.xml = taskElement.ToString(); result.Id = taskElement.Attribute("Id")?.Value ?? Guid.NewGuid().ToString(); // this feels clunky, but that's fine I guess... result.WaitFor = result.WaitFor.Union(Program.Tokenize(taskElement.Attribute("WaitFor")?.Value)).ToImmutableArray(); return(result); }