private void tvDatabaseView_MouseDoubleClick(object sender, MouseButtonEventArgs e) { TreeViewItem selectedNode = tvDatabaseView.SelectedItem as TreeViewItem; if (connected && selectedNode != null && selectedNode.Parent as TreeViewItem != null) { try { String _customerName = (selectedNode.Parent as TreeViewItem).Header.ToString(); String _carName; DateTime _version; SplitNameVersion(selectedNode, out _carName, out _version); customer = db.GetCustomer(_customerName); car = db.GetCar(customer.customerId, _carName, _version); var p = db.GetParamList(car.carId); param = p; dgvDatabaseParam.ItemsSource = param; signal = db.GetSignalList(car.carId); dgcDatabaseSignal.ItemsSource = signal; databaseCarSelected = true; } catch (Exception ex) { NoConnection("tvDatabaseView_MouseDoubleClick(object sender, MouseEventArgs e)", ex); } } }
public static void SaveToXml(CustomerDC customer, CarDC car, List <ParamDC> param, List <SignalDC> signal) { XmlNode node = GetRootNode(); XmlNode customerNode = null; foreach (XmlNode customerChechNode in node) { if (customerChechNode.Name == customer.name) { customerNode = customerChechNode; break; } } if (customerNode == null) { customerNode = node.AppendChild(XD.CreateElement(customer.name)); } // Checking if car version already exists foreach (XmlNode carNode in customerNode) { if (carNode.Name == car.name) { if (carNode.Attributes["version"] != null && ToDateTime(carNode.Attributes["version"].Value) == car.version) { if (MessageBox.Show("Car already exists.\nOverride existing car?", "Conflict", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes) { customerNode.RemoveChild(carNode); } else { return; } } } } XmlNode newCar = customerNode.AppendChild(XD.CreateElement(car.name)); XmlAttribute newVersion = newCar.Attributes.Append(XD.CreateAttribute("version")); newVersion.InnerText = car.version.ToString(VERSION_FORMAT); XmlNode newParameters = newCar.AppendChild(XD.CreateElement("Parameters")); String _subPath = param[0].subPath; XmlNode subPathNode = newParameters.AppendChild(XD.CreateElement(_subPath)); foreach (var p in param) { if (p.subPath != _subPath) { _subPath = p.subPath; subPathNode = newParameters.AppendChild(XD.CreateElement(_subPath)); } XmlNode paramAtt = subPathNode.AppendChild(XD.CreateElement(p.path)); paramAtt.InnerText = p.value.ToString(); } XmlNode newSignals = newCar.AppendChild(XD.CreateElement("Signals")); foreach (var p in signal) { XmlNode newSignal = newSignals.AppendChild(XD.CreateElement(p.type)); XmlNode typeAtt = newSignal.AppendChild(XD.CreateElement("type")); typeAtt.InnerText = p.type; XmlNode idAtt = newSignal.AppendChild(XD.CreateElement("id")); idAtt.InnerText = p.id.ToString(); XmlNode startbitAtt = newSignal.AppendChild(XD.CreateElement("startbit")); startbitAtt.InnerText = p.startbit.ToString(); XmlNode sizeAtt = newSignal.AppendChild(XD.CreateElement("size")); sizeAtt.InnerText = p.size.ToString(); XmlNode formatAtt = newSignal.AppendChild(XD.CreateElement("format")); formatAtt.InnerText = p.format == "I" ? "intel" : "motorola"; XmlNode signedAtt = newSignal.AppendChild(XD.CreateElement("signed")); signedAtt.InnerText = p.signed == "S" ? "1" : "0"; XmlNode factorAtt = newSignal.AppendChild(XD.CreateElement("factor")); factorAtt.InnerText = p.factor.ToString(); XmlNode offsetAtt = newSignal.AppendChild(XD.CreateElement("offset")); offsetAtt.InnerText = p.offset.ToString(); XmlNode minAtt = newSignal.AppendChild(XD.CreateElement("min")); minAtt.InnerText = p.min.ToString(); XmlNode maxAtt = newSignal.AppendChild(XD.CreateElement("max")); maxAtt.InnerText = p.max.ToString(); XmlNode matchAtt = newSignal.AppendChild(XD.CreateElement("match")); matchAtt.InnerText = p.match.ToString(); } XD.Save(FILE_PATH); }