protected void RegisterColumn(Guid formatId, int propertyId, string title, uint defaultWidthInCharacters, ListViewAlignment format = ListViewAlignment.Left, ShellColumnState state = ShellColumnState.TypeString) { var columnId = new ShellColumnId { FormatId = formatId, PropertyId = propertyId }; // Note: description field is not used by the shell. var columnInfo = new ShellColumnInfo { ColumnId = columnId, Title = title, DefaultWidthInCharacters = defaultWidthInCharacters, Format = format, State = state | ShellColumnState.Extended | ShellColumnState.SecondaryUI, variantType = 0 }; // Note: VT_LPSTR/VT_BSTR works ok. Other types seems to have issues with sorting. // TODO = VT_BSTR columnInfos.Add(columnInfo); }
int IColumnProvider.GetItemData(ref ShellColumnId columnId, ref ShellColumnData columnData, object data) { Debug.WriteLine("[{0}] ColumnProviderBase.IColumnProvider.GetItemData, columnId.FormatId={1}, columnId.PropertyId={2}", Id, columnId.FormatId, columnId.PropertyId); if (!initialized) { throw new COMException("Initialize was not called"); } if (!IsSupportedItem(ref columnData)) { ////VariantInit(pvarData); // must initialise out args as we return a success code. return(HResults.False); } bool flushCache = columnData.Flags.HasFlag(ShellColumnDataOptions.UpdateItem); var fileName = Path.GetFileName(columnData.File); object info = null; if (!flushCache) { // User of this interface (explorer.exe) are expected to ask // all active item data per file. info = FindInLastUsedCache(fileName); } if (info == null) { info = GetAndCacheFileInfo(fileName, columnData.File, flushCache); } ////pvarData->bstrVal = (*pCachedInfo)[GetIndex(*pscid)].AllocSysString(); ////pvarData->vt = VT_BSTR; return(HResults.Ok); }
protected void RegisterColumn(Guid formatId, int propertyId, string title, uint defaultWidthInCharacters, ListViewAlignment format = ListViewAlignment.Left, ShellColumnState state = ShellColumnState.TypeString) { Contract.Requires(title != null); Contract.Requires(title.Length < ShellColumnInfo.MaxTitleLength); var columnId = new ShellColumnId { FormatId = formatId, PropertyId = propertyId }; // Note: description field is not used by the shell. var columnInfo = new ShellColumnInfo(); columnInfo.ColumnId = columnId; columnInfo.Title = title; columnInfo.DefaultWidthInCharacters = defaultWidthInCharacters; columnInfo.Format = format; columnInfo.State = state | ShellColumnState.Extended | ShellColumnState.SecondaryUI; // Note: VT_LPSTR/VT_BSTR works ok. Other types seems to have issues with sorting. columnInfo.variantType = 0; // TODO = VT_BSTR columnInfos.Add(columnInfo); }