public TagInfo(TableResultItem info) { Info = info; }
private void UpdateCodingInfo() { UpdateCodingText(); bool shortCoding = IsShortCoding(); StringBuilder sbCodingComment = new StringBuilder(); _layoutVagCodingAssitantAdapter.Items.Clear(); if (_instanceData.CurrentCoding != null && _instanceData.CurrentDataFileName != null) { UdsFileReader.UdsReader udsReader = ActivityCommon.GetUdsReader(_instanceData.CurrentDataFileName); // ReSharper disable once UseNullPropagation if (udsReader != null) { if (shortCoding) { List <UdsFileReader.DataReader.DataInfo> dataInfoCodingList = udsReader.DataReader.ExtractDataType(_instanceData.CurrentDataFileName, UdsFileReader.DataReader.DataType.Coding); if (dataInfoCodingList != null) { foreach (UdsFileReader.DataReader.DataInfo dataInfo in dataInfoCodingList) { if (dataInfo.TextArray.Length > 0) { if (sbCodingComment.Length > 0) { sbCodingComment.Append("\r\n"); } sbCodingComment.Append(dataInfo.TextArray[0]); } } } } List <UdsFileReader.DataReader.DataInfo> dataInfoLcList = udsReader.DataReader.ExtractDataType(_instanceData.CurrentDataFileName, UdsFileReader.DataReader.DataType.LongCoding); if (dataInfoLcList != null) { string lastCommentLine = null; TableResultItem lastGroupResultItem = null; long lastGroupId = -1; StringBuilder sbComment = new StringBuilder(); foreach (UdsFileReader.DataReader.DataInfo dataInfo in dataInfoLcList) { if (dataInfo is UdsFileReader.DataReader.DataInfoLongCoding dataInfoLongCoding) { if (!string.IsNullOrEmpty(dataInfoLongCoding.Text)) { bool textLine = dataInfoLongCoding.LineNumber != null; if (textLine) { if (lastCommentLine == null || (lastCommentLine != dataInfoLongCoding.Text)) { if (sbComment.Length > 0) { sbComment.Append("\r\n"); } sbComment.Append(dataInfoLongCoding.Text); } lastCommentLine = dataInfoLongCoding.Text; } else { lastCommentLine = null; if (sbComment.Length > 0) { _layoutVagCodingAssitantAdapter.Items.Add(new TableResultItem(sbComment.ToString(), null, null, false, false)); sbComment.Clear(); } if (dataInfoLongCoding.Byte != null) { bool selected = false; bool enabled = false; long groupId = -1; byte? dataByte = null; StringBuilder sb = new StringBuilder(); if (dataInfoLongCoding.Byte.Value < _instanceData.CurrentCoding.Length) { dataByte = _instanceData.CurrentCoding[dataInfoLongCoding.Byte.Value]; } sb.Append(string.Format("{0}", dataInfoLongCoding.Byte.Value)); if (dataInfoLongCoding.Bit != null) { if (dataByte.HasValue) { selected = (dataByte.Value & (1 << dataInfoLongCoding.Bit)) != 0; enabled = true; } sb.Append(string.Format("/{0}", dataInfoLongCoding.Bit.Value)); } else if (dataInfoLongCoding.BitMin != null && dataInfoLongCoding.BitMax != null && dataInfoLongCoding.BitValue != null) { if (dataByte.HasValue) { byte mask = 0x00; for (int i = dataInfoLongCoding.BitMin.Value; i <= dataInfoLongCoding.BitMax.Value; i++) { mask |= (byte)(1 << i); } selected = (dataByte.Value & mask) == dataInfoLongCoding.BitValue; enabled = !selected; groupId = (dataInfoLongCoding.Byte.Value << 16) + (dataInfoLongCoding.BitMin.Value << 8) + dataInfoLongCoding.BitMax.Value; } sb.Append(string.Format("/{0}-{1}={2:X02}", dataInfoLongCoding.BitMin.Value, dataInfoLongCoding.BitMax.Value, dataInfoLongCoding.BitValue.Value)); } sb.Append(" "); sb.Append(dataInfoLongCoding.Text); TableResultItem resultItem = new TableResultItem(sb.ToString(), null, dataInfoLongCoding, true, selected) { CheckEnable = enabled }; resultItem.CheckChangeEvent += item => { UpdateCodingSelected(item.Tag as UdsFileReader.DataReader.DataInfoLongCoding, item.Selected); }; _layoutVagCodingAssitantAdapter.Items.Add(resultItem); if (groupId >= 0) { if (lastGroupResultItem != null && lastGroupId >= 0 && lastGroupId == groupId) { lastGroupResultItem.SeparatorVisible = false; } lastGroupResultItem = resultItem; lastGroupId = groupId; } else { lastGroupResultItem = null; lastGroupId = -1; } } } } } } if (sbComment.Length > 0) { _layoutVagCodingAssitantAdapter.Items.Add(new TableResultItem(sbComment.ToString(), null, null, false, false)); sbComment.Clear(); } } } } _layoutVagCodingShort.Visibility = shortCoding ? ViewStates.Visible : ViewStates.Gone; _editTextVagCodingShort.Enabled = shortCoding; _editTextVagCodingRaw.Enabled = !shortCoding; _textViewCodingComments.Text = sbCodingComment.ToString(); _layoutVagCodingComments.Visibility = sbCodingComment.Length > 0 ? ViewStates.Visible : ViewStates.Gone; _layoutVagCodingAssitantAdapter.NotifyDataSetChanged(); _layoutVagCodingAssitant.Visibility = _layoutVagCodingAssitantAdapter.Items.Count > 0 ? ViewStates.Visible : ViewStates.Gone; }