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;
}