GitScc.SccProviderService.GetSccGlyph C# (CSharp) Method

GetSccGlyph() public method

Provide source control icons for the specified files and returns scc status of files
public GetSccGlyph ( [ cFiles, [ rgpszFullPaths, [ rgsiGlyphs, [ rgdwSccStatus ) : int
cFiles [
rgpszFullPaths [
rgsiGlyphs [
rgdwSccStatus [
return int
        public int GetSccGlyph([InAttribute] int cFiles, [InAttribute] string[] rgpszFullPaths, [OutAttribute] VsStateIcon[] rgsiGlyphs, [OutAttribute] uint[] rgdwSccStatus)
        {
            for (int i = 0; i < cFiles; i++)
            {
                GitFileStatus status = _active ? GetFileStatus(rgpszFullPaths[i]) : GitFileStatus.NotControlled;
                __SccStatus sccStatus;

                switch (status)
                {
                    case GitFileStatus.Tracked:
                        rgsiGlyphs[i] = SccGlyphsHelper.Tracked;
                        sccStatus = __SccStatus.SCC_STATUS_CONTROLLED;
                        break;

                    case GitFileStatus.Modified:
                        rgsiGlyphs[i] = SccGlyphsHelper.Modified;
                        sccStatus = __SccStatus.SCC_STATUS_CONTROLLED | __SccStatus.SCC_STATUS_CHECKEDOUT | __SccStatus.SCC_STATUS_OUTBYUSER;
                        break;

                    case GitFileStatus.Added:
                        rgsiGlyphs[i] = SccGlyphsHelper.New;
                        sccStatus = __SccStatus.SCC_STATUS_CONTROLLED | __SccStatus.SCC_STATUS_CHECKEDOUT | __SccStatus.SCC_STATUS_OUTBYUSER;
                        break;

                    case GitFileStatus.Staged:
                        rgsiGlyphs[i] = status == GitFileStatus.Added ? SccGlyphsHelper.Added : SccGlyphsHelper.Staged;
                        sccStatus = __SccStatus.SCC_STATUS_CONTROLLED | __SccStatus.SCC_STATUS_CHECKEDOUT | __SccStatus.SCC_STATUS_OUTBYUSER;
                        break;

                    case GitFileStatus.New:
                    case GitFileStatus.NotControlled:
                        rgsiGlyphs[i] =  SccGlyphsHelper.NotControlled;
                        sccStatus = __SccStatus.SCC_STATUS_NOTCONTROLLED;
                        break;

                    case GitFileStatus.Ignored:
                        rgsiGlyphs[i] = SccGlyphsHelper.Ignored;
                        sccStatus = __SccStatus.SCC_STATUS_NOTCONTROLLED;
                        break;

                    case GitFileStatus.Conflict:
                        rgsiGlyphs[i] = SccGlyphsHelper.Conflict;
                        sccStatus = __SccStatus.SCC_STATUS_CONTROLLED | __SccStatus.SCC_STATUS_CHECKEDOUT | __SccStatus.SCC_STATUS_OUTBYUSER | __SccStatus.SCC_STATUS_MERGED;
                        break;

                    case GitFileStatus.Merged:
                        rgsiGlyphs[i] = SccGlyphsHelper.Merged;
                        sccStatus = __SccStatus.SCC_STATUS_CONTROLLED | __SccStatus.SCC_STATUS_CHECKEDOUT | __SccStatus.SCC_STATUS_OUTBYUSER;
                        break;

                    default:
                        sccStatus = __SccStatus.SCC_STATUS_INVALID;
                        break;
                }

                if (rgdwSccStatus != null)
                    rgdwSccStatus[i] = (uint)sccStatus;
            }
            return VSConstants.S_OK;
        }
SccProviderService