Search items are returned by the search provider to show to the user after a search is performed. The search item holds all the data that is used to sort and present the search results. Some members of a SearchItem can be specified in an asynchronous callback (see SearchItem.fetchThumbnail, SearchItem.fetchDescription, etc).
SearchItems are generally created using the SearchProvider.CreateItem function. This example shows how to create a SearchItem with all the members.
[SearchItemProvider] internal static SearchProvider CreateProvider() { return new SearchProvider(id, name) { active = false, filterId = "hex:", priority = 99999, // put example provider at a low priority showDetailsOptions = ShowDetailsOptions.Description | ShowDetailsOptions.Preview, fetchItems = (context, items, provider) => { var expression = context.searchQuery; if (expression.Length == 6 && IsHex(expression)) { expression = "#" + expression; items.Add(provider.CreateItem(context, expression, GetColorName(expression), "Look at this " + GetColorName(expression) + " color!", CreateTextureFromColor(expression, 64, 64), null)); } return null; }, fetchPreview = (item, context, size, options) => { return CreateTextureFromColor(item.id, (int)size.x, (int)size.y); }, }; }
This examples shows how to create SearchItem where most members will be "fetched" when needed (generally on first display):
private static IEnumerable<SearchItem> FetchItems(SearchContext context, SearchProvider provider) { var sw = new System.Diagnostics.Stopwatch(); sw.Start(); while (index == null || !index.IsReady()) yield return null; foreach (var e in index.Search(context.searchQuery.ToLowerInvariant(), context, provider)) { var item = provider.CreateItem(context, e.id, e.score, null, null, null, e.index); item.options &= ~SearchItemOptions.Ellipsis; yield return item; } }
Provide fetch functions when defining the SearchProvider:
[SearchItemProvider] internal static SearchProvider CreateProvider() { return new SearchProvider(providerId, "Dependencies") { active = false, filterId = $"dep:", isExplicitProvider = true, showDetails = true, showDetailsOptions = ShowDetailsOptions.Inspector | ShowDetailsOptions.Actions, onEnable = OnEnable, fetchItems = (context, items, provider) => FetchItems(context, provider), fetchLabel = FetchLabel, fetchDescription = FetchDescription, fetchThumbnail = FetchThumbnail, trackSelection = TrackSelection, toObject = ToObject }; }
none | A search item representing none, usually used to clear the selection. |
context | Context used to create that item. |
data | Search provider defined content. It can be used to transport any data to custom search provider handlers (i.e. `fetchDescription`). |
description | If no description is provided, SearchProvider.fetchDescription will be called when the item is first displayed. |
id | Unique ID of the search item for the search provider. |
label | Display name of the search item. |
options | Flags that dictate how the search item is displayed and used. |
preview | Large preview of the search item. Usually cached by fetchPreview. |
provider | Back pointer to the search provider. |
score | The item relevance score will affect how the item gets sorted by the search provider. Lower scored items have more relevance and are prioritzed. |
thumbnail | If no thumbnail is provided, SearchProvider.fetchThumbnail is called when the item is first displayed. |
SearchItem | Construct a search item. A search item needs to have at least a unique ID for a given search query. |
CompareTo | Check if two SearchItems have the same ID. |
Equals | Check if two SearchItems have the same ID. |
GetDescription | Fetch and format description. |
GetHashCode | Default Hash of a SearchItem. |
GetLabel | Fetch and format label. |
GetPreview | Gets the search item preview if available, otherwise the preview is fetched at this time. |
GetThumbnail | Gets the search item thumbnail if available, otherwise the thumbnail is fetched at this time. The thumbnail is usually used in list view compared to the grid view. |
ToObject | Returns any valid Unity Object held by the search item. |