Esempio n. 1
0
        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);
        }
Esempio n. 2
0
 private bool IsSupportedItem(ref ShellColumnData columnData)
 {
     // Check file mask and file extension.
     return(!columnData.FileAttributes.HasFlag(GetFileAttributeMask()) &&
            extensions.Contains(columnData.FileNameExtension.ToLowerInvariant()));
 }