Ejemplo n.º 1
0
        internal void RefreshRow(int index, PackageManifest package)
        {
            if (index < 0 || index >= _packageList.Rows.Count)
            {
                return;
            }

            var row = _packageList.Rows[index];

            var textCells = new DataGridViewCell[] { row.Cells[0], row.Cells[1], row.Cells[2] };

            var enabledBtn = row.Cells[4] as DataGridViewButtonCell;

            enabledBtn.Value     = package.IsDisabled ? "No" : "Yes";
            enabledBtn.FlatStyle = FlatStyle.Popup;
            var enableColor = package.IsDisabled ? Color.Tomato : Color.LightGreen;

            enabledBtn.Style.ForeColor          = enableColor;
            enabledBtn.Style.SelectionForeColor = enableColor;

            // set the base text colors
            Color textColor;

            if (package.IsDisabled)
            {
                textColor = Color.FromArgb(125, 125, 125);
            }
            else
            {
                textColor = Color.White;
            }
            foreach (var cell in textCells)
            {
                cell.Style.ForeColor          = textColor;
                cell.Style.SelectionForeColor = textColor;
            }

            // set the status color
            var statusCell = row.Cells[3];
            var style      = statusCell.Style;

            if (package.IsDisabled)
            {
                // set the status message
                statusCell.Value = "Disabled";

                style.ForeColor          = textColor;
                style.SelectionForeColor = textColor;
            }
            else
            {
                // set the status message
                statusCell.Value = package.InstallStateToString();
                Color warningCol = Color.FromArgb(230, 141, 46);
                switch (package.m_installState)
                {
                case InstallState.HasConflict:
                case InstallState.MissingDependency:
                case InstallState.Outdated:
                    style.ForeColor          = warningCol;
                    style.SelectionForeColor = warningCol;
                    break;

                case InstallState.OptionalUpdate:
                    style.ForeColor          = Color.YellowGreen;
                    style.SelectionForeColor = Color.YellowGreen;
                    break;

                case InstallState.Installed:
                    style.ForeColor          = Color.LightGreen;
                    style.SelectionForeColor = Color.LightGreen;
                    break;
                }
            }

            _packageList.Sort(_listColName, ListSortDirection.Ascending);

            if (CurrentInspectedPackage == package)
            {
                SetInfoboxPackage(package);
            }
        }