BTool.AttributesForm.UpdateData C# (CSharp) Method

UpdateData() private method

private UpdateData ( ) : void
return void
        private void UpdateData()
        {
            dataUpdating = true;
            formDataAccess.WaitOne();
            devForm.attrData.attrDictAccess.WaitOne();
            lvAttributes.BeginUpdate();
            try
            {
                if (devForm.attrData.attrDict != null && devForm.attrData.attrDict.Count > 0)
                {
                    Dictionary<string, DataAttr> tmpAttrDict = new Dictionary<string, DataAttr>();
                    foreach (KeyValuePair<string, DataAttr> keyValuePair in devForm.attrData.attrDict)
                    {
                        DataAttr dataAttr1 = keyValuePair.Value;
                        if (dataAttr1.DataUpdate)
                        {
                            DataAttr dataAttr3 = dataAttr1;
                            dataAttr3.DataUpdate = false;
                            tmpAttrDict.Add(dataAttr1.Key, dataAttr3);
                            int nodeIndex = 0;
                            string str1 = string.Empty;
                            if (lvAttributes.Items.Count >= 1500)
                            {
                                string msg = string.Format("Attribute Data List At Maximum {0} Elements\nClear List Data\nAttributesForm\n", (object)1500);
                                msgBox.UserMsgBox(SharedObjects.MainWin, MsgBox.MsgTypes.Warning, msg);
                                break;
                            }
                            else
                            {
                                Color fore = AttrData.defaultForeground;
                                Color back = AttrData.defaultBackground;
                                if (dataAttr1.ForeColor != Color.Empty && dataAttr1.ForeColor.ToKnownColor() != (KnownColor)0)
                                    fore = dataAttr1.ForeColor;
                                if (dataAttr1.BackColor != Color.Empty && dataAttr1.BackColor.ToKnownColor() != (KnownColor)0)
                                    back = dataAttr1.BackColor;
                                if (FindAttr(dataAttr1.Key, ref nodeIndex))
                                {
                                    try
                                    {
                                        AttributesForm.ListSubItem listSubItem2 = AttributesForm.ListSubItem.Key;
                                        UpdateItemColor(nodeIndex, (int)listSubItem2, fore, back);

                                        AttributesForm.ListSubItem listSubItem3 = AttributesForm.ListSubItem.ConnectionHandle;
                                        if ((int)dataAttr1.ConnHandle != (int)ushort.MaxValue)
                                            UpdateSubItem(nodeIndex, (int)listSubItem3, "0x" + dataAttr1.ConnHandle.ToString("X4"), fore, back);

                                        UpdateItemColor(nodeIndex, (int)listSubItem3, fore, back);
                                        AttributesForm.ListSubItem listSubItem4 = AttributesForm.ListSubItem.Handle;
                                        if (dataAttr1.Handle != 0)
                                        {
                                            UpdateSubItem(nodeIndex, (int)listSubItem4, "0x" + dataAttr1.Handle.ToString("X4"), fore, back);
                                        }

                                        UpdateItemColor(nodeIndex, (int)listSubItem4, fore, back);
                                        AttributesForm.ListSubItem listSubItem5 = AttributesForm.ListSubItem.Uuid;
                                        if (CheckForStringData(dataAttr1.UuidHex))
                                        {
                                            UpdateSubItem(nodeIndex, (int)listSubItem5, "0x" + dataAttr1.UuidHex, fore, back);
                                        }
                                        UpdateItemColor(nodeIndex, (int)listSubItem5, fore, back);
                                        AttributesForm.ListSubItem listSubItem6 = AttributesForm.ListSubItem.UuidDesc;
                                        if (CheckForStringData(dataAttr1.UuidDesc))
                                        {
                                            int num = (int)dataAttr1.IndentLevel;
                                            string str2 = "";
                                            for (int index = 0; index < num; ++index)
                                                str2 = str2 + " ";
                                            UpdateSubItem(nodeIndex, (int)listSubItem6, str2 + dataAttr1.UuidDesc, fore, back);
                                        }
                                        UpdateItemColor(nodeIndex, (int)listSubItem6, fore, back);
                                        AttributesForm.ListSubItem listSubItem7 = AttributesForm.ListSubItem.Value;
                                        if (CheckForStringData(dataAttr1.Value))
                                        {
                                            string outStr = string.Empty;
                                            devUtils.ConvertDisplayTypes(ValueDisplay.Hex, dataAttr1.Value, ref dataAttr1.ValueDisplay, ref outStr, false);
                                            UpdateSubItem(nodeIndex, (int)listSubItem7, outStr, fore, back);
                                        }
                                        UpdateItemColor(nodeIndex, (int)listSubItem7, fore, back);
                                        AttributesForm.ListSubItem listSubItem8 = AttributesForm.ListSubItem.ValueDesc;
                                        if (CheckForStringData(dataAttr1.ValueDesc))
                                            UpdateSubItem(nodeIndex, (int)listSubItem8, dataAttr1.ValueDesc, fore, back);

                                        UpdateItemColor(nodeIndex, (int)listSubItem8, fore, back);
                                        AttributesForm.ListSubItem listSubItem9 = AttributesForm.ListSubItem.Properties;
                                        if (CheckForStringData(dataAttr1.PropertiesStr))
                                            UpdateSubItem(nodeIndex, (int)listSubItem9, dataAttr1.PropertiesStr, fore, back);
                                        UpdateItemColor(nodeIndex, (int)listSubItem9, fore, back);
                                    }
                                    catch (Exception ex)
                                    {
                                        msgBox.UserMsgBox((Form)this, MsgBox.MsgTypes.Error, "Cannot Update BLE Attributes\n" + ex.Message + "\n");
                                        break;
                                    }
                                }
                                else
                                {
                                    try
                                    {
                                        ListViewItem lvItem = new ListViewItem();
                                        lvItem.UseItemStyleForSubItems = false;
                                        lvItem.Text = dataAttr1.Key;
                                        lvItem.Tag = (object)dataAttr1;
                                        lvItem.ForeColor = fore;
                                        lvItem.BackColor = back;
                                        lvAttributes.Items.Insert(lvAttributes.Items.Count, lvItem);
                                        str1 = string.Empty;
                                        string data;
                                        if ((int)dataAttr1.ConnHandle != (int)ushort.MaxValue)
                                            data = "0x" + dataAttr1.ConnHandle.ToString("X4");
                                        else
                                            data = "";
                                        InsertSubItem(lvItem, data, fore, back);

                                        if ((int)dataAttr1.Handle != 0)
                                        {
                                            data = "0x" + dataAttr1.Handle.ToString("X4");
                                        }
                                        else
                                            data = "";
                                        InsertSubItem(lvItem, data, fore, back);

                                        data = !CheckForStringData(dataAttr1.UuidHex) ? "" : "0x" + dataAttr1.UuidHex;
                                        InsertSubItem(lvItem, data, fore, back);

                                        int num = (int)dataAttr1.IndentLevel;
                                        string str2 = "";
                                        for (int index = 0; index < num; ++index)
                                            str2 = str2 + " ";
                                        data = !CheckForStringData(dataAttr1.UuidDesc) ? "" : str2 + dataAttr1.UuidDesc;
                                        InsertSubItem(lvItem, data, fore, back);

                                        string inStr = !CheckForStringData(dataAttr1.Value) ? "" : dataAttr1.Value;
                                        string outStr = string.Empty;
                                        devUtils.ConvertDisplayTypes(ValueDisplay.Hex, inStr, ref dataAttr1.ValueDisplay, ref outStr, false);
                                        InsertSubItem(lvItem, outStr, fore, back);

                                        data = !CheckForStringData(dataAttr1.ValueDesc) ? "" : dataAttr1.ValueDesc;
                                        InsertSubItem(lvItem, data, fore, back);

                                        data = !CheckForStringData(dataAttr1.PropertiesStr) ? "" : dataAttr1.PropertiesStr;
                                        InsertSubItem(lvItem, data, fore, back);
                                    }
                                    catch (Exception ex)
                                    {
                                        msgBox.UserMsgBox((Form)this, MsgBox.MsgTypes.Error, "Cannot Add BLE Attributes\n" + ex.Message + "\n");
                                        break;
                                    }
                                }
                            }
                        }
                    }
                    attrDataUtils.UpdateAttrDict(tmpAttrDict);
                }
                if (tsmiAutoScroll.Checked)
                {
                    if (lvAttributes.Items.Count > 0)
                        lvAttributes.EnsureVisible(lvAttributes.Items.Count - 1);
                }
            }
            catch (Exception ex)
            {
                msgBox.UserMsgBox((Form)this, MsgBox.MsgTypes.Error, "Cannot Process BLE Attributes\n" + ex.Message + "\n");
            }
            lvAttributes.EndUpdate();
            devForm.attrData.attrDictAccess.ReleaseMutex();
            formDataAccess.ReleaseMutex();
            dataUpdating = false;
        }