/// <summary> /// Creates a new MSB3 with all sections empty. /// </summary> public MSB3() { Models = new ModelSection(); Events = new EventSection(); Regions = new PointSection(); Routes = new RouteSection(); Layers = new LayerSection(); Parts = new PartsSection(); PartsPoses = new PartsPoseSection(); BoneNames = new BoneNameSection(); }
public JobDeliveryViewController(RootElement root, WorkflowNavigationController nav, UsedPartsNavigationController upnav, bool pushing) : base(root, pushing) { NavUsedParts = upnav; NavWorkflow = nav; DBParts = new List <Part>(); DBAssemblies = new List <Assembly> (); DeactivateEditingMode(); Section WarrantySection = new Section(""); StyledStringElement warrantyElement = new StyledStringElement("", "Guaranteed delivery :-)"); WarrantySection.Add(warrantyElement); Root.Add(WarrantySection); Section StandardPartsSection = new Section(""); StandardPartsSection.Add(new StyledStringElement("Use standard parts", "", UITableViewCellStyle.Value1)); Root.Add(StandardPartsSection); // Root.Add (new Section("") ); PartsSection PartsUsedSection = new PartsSection("Parts used", this); PartsUsedSection.Add(new StyledStringElement("Tap here to add a part")); Root.Add(PartsUsedSection); using (var image = UIImage.FromBundle("Images/19-gear")) this.TabBarItem.Image = image; this.Title = "Uninstallation"; ToolbarItems = new UIBarButtonItem[] { new UIBarButtonItem(UIBarButtonSystemItem.Reply), new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace), new UIBarButtonItem("Clear parts list", UIBarButtonItemStyle.Plain, delegate { ClearPartsList(); }), new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace), new UIBarButtonItem(UIBarButtonSystemItem.Action) }; ToolbarItems[0].Clicked += delegate { if (NavUsedParts.Tabs._jobRunTable.CurrentJob.HasParent()) // for child jobs, we jump to payment screen { NavUsedParts.Tabs.SelectedViewController = NavUsedParts.Tabs.ViewControllers[3]; } else // for main jobs we jump to pre-plumbing check { NavUsedParts.Tabs.SelectedViewController = NavUsedParts.Tabs.ViewControllers[0]; } }; ToolbarItems[4].Clicked += delegate { NavUsedParts.Tabs.LastSelectedTab = NavUsedParts.Tabs.SelectedIndex; NavUsedParts.Tabs.SelectedViewController = NavUsedParts.Tabs.ViewControllers[3]; // jump to payment }; }
public override List <IRow> CombineRows() { DocumentsSection docs = new DocumentsSection(); PartsSection parts = new PartsSection(); List <IRow> rows = new List <IRow>(); rows.AddRange(docs.GetDocuments()); rows.Add(new RowSpec()); rows.Add(new RowSpec()); rows.AddRange(parts.GetDocuments()); rows.Add(new RowSpec()); rows.Add(new RowSpec()); rows.AddRange(Others); rows.Add(new RowSpec()); rows.Add(new RowSpec()); rows.AddRange(NotesRows); return(rows); }
public JobReinstallViewController(RootElement root, WorkflowNavigationController nav, UsedPartsNavigationController upnav, bool pushing) : base(root, pushing) { NavUsedParts = upnav; NavWorkflow = nav; DBParts = new List <Part>(); DBAssemblies = new List <Assembly> (); dvcSO = new SaleOptionsDVC(null, false, true, this.NavUsedParts.Tabs._jobRunTable, this); DeactivateEditingMode(); Section OptionsSection = new Section(""); EntryElement pressureElement = new EntryElement("Pressure", "Value", "", false); pressureElement.KeyboardType = UIKeyboardType.NumbersAndPunctuation; OptionsSection.Add(pressureElement); OptionsSection.EntryAlignment = new CGSize(565, 20); Root.Add(OptionsSection); Section InstallationTypeSection = new Section("Installation information"); var img = UIImage.FromBundle("Images/181-hammer"); InstallationTypeSection.Add(new BadgeElement(img, "Enter info", delegate { GoChooseProduct(); })); img.Dispose(); Root.Add(InstallationTypeSection); PartsSection UsedPartsSection = new PartsSection("Parts used", this); UsedPartsSection.Add(new StyledStringElement("Tap here to add a part")); Root.Add(UsedPartsSection); this.Title = "Re-installation"; using (var image = UIImage.FromBundle("Images/181-hammer")) this.TabBarItem.Image = image; ToolbarItems = new UIBarButtonItem[] { new UIBarButtonItem(UIBarButtonSystemItem.Reply), new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace), new UIBarButtonItem("Clear parts list", UIBarButtonItemStyle.Bordered, delegate { ClearPartsList(); }), new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace), new UIBarButtonItem(UIBarButtonSystemItem.Action) }; ToolbarItems[0].Clicked += delegate { if (NavUsedParts.Tabs._jobRunTable.CurrentJob.HasParent()) // for child jobs, we jump to payment screen { NavUsedParts.Tabs.SelectedViewController = NavUsedParts.Tabs.ViewControllers[3]; } else // for main jobs we jump to pre-plumbing check { NavUsedParts.Tabs.SelectedViewController = NavUsedParts.Tabs.ViewControllers[0]; } }; ToolbarItems[4].Clicked += delegate { // pressure has to be entered and correct, check if parts list is empty if (PressureValueOK()) { SavePressureValueToDatabase(); if (PartsListNotEmpty()) { // all good, jump to payment NavUsedParts.Tabs.LastSelectedTab = NavUsedParts.Tabs.SelectedIndex; NavUsedParts.Tabs.SelectedViewController = NavUsedParts.Tabs.ViewControllers[3]; } else { // alert the user that parts list is empty var partsEmpty = new UIAlertView("", "Parts list is empty, are you sure?", null, "No", "Yes"); partsEmpty.Dismissed += delegate(object sender, UIButtonEventArgs e) { if (e.ButtonIndex != partsEmpty.CancelButtonIndex) { // jump to payment NavUsedParts.Tabs.LastSelectedTab = NavUsedParts.Tabs.SelectedIndex; NavUsedParts.Tabs.SelectedViewController = NavUsedParts.Tabs.ViewControllers[3]; } }; partsEmpty.Show(); } } else { // alert the user that pressure value must be entered var pressureNotEntered = new UIAlertView("", "Cannot parse pressure value. Please enter a number.", null, "OK"); pressureNotEntered.Show(); this.Root[0].Elements[0].Selected(this, this.TableView, NSIndexPath.FromRowSection(0, 0)); } }; }
public JobUnitUpgrade(RootElement root, WorkflowNavigationController nav, UsedPartsNavigationController upnav, bool pushing) : base(root, pushing) { NavUsedParts = upnav; NavWorkflow = nav; DBParts = new List <Part>(); DBAssemblies = new List <Assembly> (); DeactivateEditingMode(); Section WarrantySection = new Section(" "); BooleanElement warrantyElement = new BooleanElement("Warranty", false); warrantyElement.ValueChanged += delegate { // this.NavWorkflow._tabs._jobRunTable.CurrentJob.Warranty = warrantyElement.Value; ThisJob.Warranty = warrantyElement.Value; if (this.NavWorkflow._tabs._jobRunTable.CurrentJob.Warranty) { this.AddJobReport(true); } }; WarrantySection.Add(warrantyElement); Root.Add(WarrantySection); Section UnitUpgradeTypeSection = new Section(""); UnitUpgradeTypeSection.Add(new StyledStringElement("Use standard parts", "", UITableViewCellStyle.Value1)); Root.Add(UnitUpgradeTypeSection); PartsSection AdditionalPartsSection = new PartsSection("Parts used", this); AdditionalPartsSection.Add(new StyledStringElement("Tap here to add a part")); Root.Add(AdditionalPartsSection); using (var image = UIImage.FromBundle("Images/19-gear")) this.TabBarItem.Image = image; this.Title = "Unit upgrade"; ToolbarItems = new UIBarButtonItem[] { new UIBarButtonItem(UIBarButtonSystemItem.Reply), new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace), new UIBarButtonItem("Clear parts list", UIBarButtonItemStyle.Bordered, delegate { ClearPartsList(); }), new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace), new UIBarButtonItem(UIBarButtonSystemItem.Action) }; ToolbarItems[0].Clicked += delegate { if (NavUsedParts.Tabs._jobRunTable.CurrentJob.HasParent()) // for child jobs, we jump to payment screen { NavUsedParts.Tabs.SelectedViewController = NavUsedParts.Tabs.ViewControllers[3]; } else // for main jobs we jump to pre-plumbing check { NavUsedParts.Tabs.SelectedViewController = NavUsedParts.Tabs.ViewControllers[0]; } }; ToolbarItems[4].Clicked += delegate { if (ThisJob.JobReportAttached) { if (JobReportDataValid()) // check that pressure and comment fields have been filled { foreach (Section section in Root) { if (section is JobReportSection) { (section as JobReportSection).jrd.Pressure = Convert.ToInt32((section.Elements[1] as EntryElement).Value); (section as JobReportSection).jrd.Comment = (section.Elements[4] as MultilineEntryElement).Value; SaveJobReport((section as JobReportSection).jrd); // save the service report nav._tabs._jobService.PdfListOfIssues = (UIView)this.TableView; nav._tabs._jobService.GenerateServicePDFPreview(); nav._tabs._jobService.RedrawServiceCallPDF(false); } } NavUsedParts.Tabs.LastSelectedTab = NavUsedParts.Tabs.SelectedIndex; NavUsedParts.Tabs.SelectedViewController = NavUsedParts.Tabs.ViewControllers[3]; } } else { NavUsedParts.Tabs.LastSelectedTab = NavUsedParts.Tabs.SelectedIndex; NavUsedParts.Tabs.SelectedViewController = NavUsedParts.Tabs.ViewControllers[3]; } /* * // save the job report (if there is one) * if (ThisJob.JobReportAttached) * foreach(Section section in Root) * if (section is JobReportSection) * SaveJobReport ( (section as JobReportSection).jrd ); * * NavUsedParts.Tabs.LastSelectedTab = NavUsedParts.Tabs.SelectedIndex; * NavUsedParts.Tabs.SelectedViewController = NavUsedParts.Tabs.ViewControllers[3]; // jump to payment */ }; }
/// <summary> /// Deserializes file data from a stream. /// </summary> protected override void Read(BinaryReaderEx br) { br.BigEndian = false; Entries entries = default; int nextSectionOffset = (int)br.Position; do { br.Position = nextSectionOffset; int unk1 = br.ReadInt32(); int typeOffset = br.ReadInt32(); int offsets = br.ReadInt32() - 1; string type = br.GetASCII(typeOffset); switch (type) { case "MODEL_PARAM_ST": Models = new ModelSection(br, unk1); entries.Models = Models.Read(br, offsets); break; //case "EVENT_PARAM_ST": // Events = new EventSection(br, unk1); // entries.Events = Events.Read(br, offsets); // break; //case "POINT_PARAM_ST": // Regions = new PointSection(br, unk1); // entries.Regions = Regions.Read(br, offsets); // break; case "PARTS_PARAM_ST": Parts = new PartsSection(br, unk1); entries.Parts = Parts.Read(br, offsets); break; //case "MAPSTUDIO_TREE_ST": // Trees = new TreeSection(br, unk1); // entries.Trees = Trees.Read(br, offsets); // break; default: //throw new NotImplementedException($"Unimplemented section: {type}"); br.Skip(offsets * 4); break; } nextSectionOffset = br.ReadInt32(); } while (nextSectionOffset != 0); //DisambiguateNames(entries.Events); MSB.DisambiguateNames(entries.Models); MSB.DisambiguateNames(entries.Parts); //DisambiguateNames(entries.Regions); //Events.GetNames(this, entries); Parts.GetNames(this, entries); //Regions.GetNames(this, entries); }
public override void Selected(Foundation.NSIndexPath indexPath) { if (indexPath.Section == 1 && indexPath.Row == 0) { List <SaleOption> saleOptions = new List <SaleOption>(); saleOptions = SaleOptionsDVC.ReadSaleOptions(); var ac = new UIActionSheet("Please choose a tap"); foreach (SaleOption so in saleOptions) { if (so.Type == "Taps") { ac.AddButton(so.Name); } } ac.Style = UIActionSheetStyle.BlackTranslucent; ac.Dismissed += delegate(object sender, UIButtonEventArgs e) { this.TableView.DeselectRow(indexPath, true); if (e.ButtonIndex != ac.CancelButtonIndex) { ClearPartsList(); PartsSection.ReadPartsFromDatabase(ServerClientViewController.dbFilePath); string chosenButton = ac.ButtonTitle(e.ButtonIndex); foreach (SaleOption so in saleOptions) { if (so.Name == chosenButton) { // putting the appropriate part into the list of stock used foreach (Part prt in DBParts) { if (prt.PartNo == so.PartLink) { PartChosen(prt, false); break; } } // adjusting the fee if the chosen tap model attracts something on top of the standard fee if (so.ExtraFee > 0) { ThisJob.EmployeeFee = so.ExtraFee; } else { ThisJob.EmployeeFee = ThisJob.Type.EmployeeFee; } break; } } } }; ac.ShowInView(this.View); } else { base.Selected(indexPath); } }
internal override void Read(BinaryReaderEx br) { br.BigEndian = false; br.AssertASCII("MSB "); br.AssertInt32(1); // Header size/data start br.AssertInt32(0x10); // Probably bytes, just guessing br.AssertByte(0); br.AssertByte(0); br.AssertByte(1); br.AssertByte(0xFF); Entries entries = default; long nextSectionOffset = br.Position; while (nextSectionOffset != 0) { br.Position = nextSectionOffset; int unk1 = br.ReadInt32(); int offsets = br.ReadInt32() - 1; long typeOffset = br.ReadInt64(); string type = br.GetUTF16(typeOffset); switch (type) { case "MODEL_PARAM_ST": Models = new ModelSection(br, unk1); entries.Models = Models.Read(br, offsets); break; case "EVENT_PARAM_ST": Events = new EventSection(br, unk1); entries.Events = Events.Read(br, offsets); break; case "POINT_PARAM_ST": Regions = new PointSection(br, unk1); entries.Regions = Regions.Read(br, offsets); break; case "ROUTE_PARAM_ST": Routes = new RouteSection(br, unk1); entries.Routes = Routes.Read(br, offsets); break; case "LAYER_PARAM_ST": Layers = new LayerSection(br, unk1); entries.Layers = Layers.Read(br, offsets); break; case "PARTS_PARAM_ST": Parts = new PartsSection(br, unk1); entries.Parts = Parts.Read(br, offsets); break; case "MAPSTUDIO_PARTS_POSE_ST": PartsPoses = new PartsPoseSection(br, unk1, offsets); break; case "MAPSTUDIO_BONE_NAME_STRING": BoneNames = new BoneNameSection(br, unk1); entries.BoneNames = BoneNames.Read(br, offsets); break; default: throw new NotImplementedException($"Unimplemented section: {type}"); } nextSectionOffset = br.ReadInt64(); } DisambiguateNames(entries.Events); DisambiguateNames(entries.Models); DisambiguateNames(entries.Parts); DisambiguateNames(entries.Regions); Events.GetNames(this, entries); Parts.GetNames(this, entries); Regions.GetNames(this, entries); }
public JobInstallationViewController(RootElement root, WorkflowNavigationController nav, UsedPartsNavigationController upnav, bool pushing) : base(root, pushing) { NavUsedParts = upnav; NavWorkflow = nav; DBParts = new List <Part>(); DBAssemblies = new List <Assembly> (); dvcSO = new SaleOptionsDVC(null, false, true, this.NavUsedParts.Tabs._jobRunTable, this); DeactivateEditingMode(); Section OptionsSection = new Section(""); EntryElement pressureElement = new EntryElement("Pressure", "Value", "", false); pressureElement.KeyboardType = UIKeyboardType.NumbersAndPunctuation; OptionsSection.Add(pressureElement); OptionsSection.EntryAlignment = new CGSize(565, 20); /* * CheckboxElement drillElement = new CheckboxElement("Drilling", false); * drillElement.Tapped += delegate { * Job currentJob = NavWorkflow._tabs._jobRunTable.CurrentJob; * if (drillElement.Value == true) * { * // increase the job price by 40 * currentJob.MoneyToCollect += 40; * Console.WriteLine (String.Format ("CurrentJob.TotalToCollect = {0}", currentJob.TotalToCollect ())); * NavWorkflow._tabs._customersView.UpdateCustomerInfo (CustomerDetailsUpdatableField.JobPriceTotal, * (currentJob.MoneyToCollect-40).ToString (), currentJob.MoneyToCollect.ToString (), currentJob.CustomerNumber, currentJob.JobBookingNumber); * * // if current fee value is 0, set it to standard fee for the job type * if (currentJob.EmployeeFee < 1 || * currentJob.EmployeeFee > currentJob.Type.EmployeeFee) * { * currentJob.EmployeeFee = currentJob.Type.EmployeeFee; * } * // increase the fee by 49.5 * currentJob.EmployeeFee += 49.5; * * Console.WriteLine (String.Format ("Job fee: {0}, job type (standard fee): {1}", NavWorkflow._tabs._jobRunTable.CurrentJob.EmployeeFee, NavWorkflow._tabs._jobRunTable.CurrentJob.Type.EmployeeFee)); * } * else * { * // decrease the fee if it's exceeding the standard fee for the job by 49.5 * * if (currentJob.EmployeeFee - currentJob.Type.EmployeeFee > 49) * currentJob.EmployeeFee -= 49.5; * * Console.WriteLine (String.Format ("Job fee: {0}, job type (standard fee): {1}", currentJob.EmployeeFee, currentJob.Type.EmployeeFee)); * } * }; */ // OptionsSection.Add (drillElement); Root.Add(OptionsSection); Section InstallationTypeSection = new Section("Installation information"); var img = UIImage.FromBundle("Images/181-hammer"); InstallationTypeSection.Add(new BadgeElement(img, "Enter info", delegate { GoChooseProduct(); })); img.Dispose(); Root.Add(InstallationTypeSection); PartsSection UsedPartsSection = new PartsSection("Parts used", this); UsedPartsSection.Add(new StyledStringElement("Tap here to add a part")); Root.Add(UsedPartsSection); this.Title = "Installation"; using (var image = UIImage.FromBundle("Images/181-hammer")) this.TabBarItem.Image = image; ToolbarItems = new UIBarButtonItem[] { new UIBarButtonItem(UIBarButtonSystemItem.Reply), new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace), new UIBarButtonItem("Clear parts list", UIBarButtonItemStyle.Bordered, delegate { ClearPartsList(); }), new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace), new UIBarButtonItem(UIBarButtonSystemItem.Action) }; ToolbarItems[0].Clicked += delegate { if (NavUsedParts.Tabs._jobRunTable.CurrentJob.HasParent()) // for child jobs, we jump to payment screen { NavUsedParts.Tabs.SelectedViewController = NavUsedParts.Tabs.ViewControllers[3]; } else // for main jobs we jump to pre-plumbing check { NavUsedParts.Tabs.SelectedViewController = NavUsedParts.Tabs.ViewControllers[0]; } }; ToolbarItems[4].Clicked += delegate { // various checks here: pressure has to be entered and correct, parts list must not be empty if (PressureValueOK()) { SavePressureValueToDatabase(); if (PartsListNotEmpty()) { // all good, jump to payment NavUsedParts.Tabs.LastSelectedTab = NavUsedParts.Tabs.SelectedIndex; NavUsedParts.Tabs.SelectedViewController = NavUsedParts.Tabs.ViewControllers[3]; // jump to payment } else { // alert the user that install data must be entered var enterInstallData = new UIAlertView("", "Parts list is empty, how come?", null, "OK"); enterInstallData.Show(); } } else { // alert the user that pressure value must be entered var pressureNotEntered = new UIAlertView("", "Cannot parse pressure value. Please enter a number.", null, "OK"); pressureNotEntered.Show(); this.Root[0].Elements[0].Selected(this, this.TableView, NSIndexPath.FromRowSection(0, 0)); } }; }