IssuedCertificateListViewModel
Class in Oadm.Sdk.Client.Controls · Oadm.Sdk.Client.dll
The list of certificates (SDK 0.4.0; the PKI Certificates tab: its CA list and its certificate list): newest first, read from the server one page at a time with the filters (state, use, issued by) and the search (it waits for the typing to stop), the grid’s selection in one step, View certificate. Shown by IssuedCertificateList; the first read shows the overlay, later ones the progress row.
public class IssuedCertificateListViewModel : ObservableObjectInherits ObservableObject
Constructors
Section titled “Constructors”IssuedCertificateListViewModel
Section titled “IssuedCertificateListViewModel”IssuedCertificateListViewModel(IIssuedCertificateSource source, TimeProvider? time = null)A list that reads from source; time for the search delay (tests).
Properties
Section titled “Properties”CanGroup
Section titled “CanGroup”bool CanGroup { get; init; }Whether the list offers Group by (a source that groups on the server, the PKI page); false: the select is hidden and the rows have no group headers.
Dialogs
Section titled “Dialogs”IIssuedCertificateListDialogs? Dialogs { get; set; }The certificate window (the view).
EmptyText
Section titled “EmptyText”string? EmptyText { get; }One line when the list is empty: what to do first, or that nothing matches.
string? Error { get; set; }“Cannot read the certificates: …” directly below the table; null after a good read.
GroupBy
Section titled “GroupBy”IssuedCertificateGroupChoice GroupBy { get; set; }The chosen grouping; a change reads the first page again.
GroupChoices
Section titled “GroupChoices”IReadOnlyList<IssuedCertificateGroupChoice> GroupChoices { get; }“Group by type” (the default), “Group by issuer”, “No groups”.
GroupTitles
Section titled “GroupTitles”IReadOnlyList<string> GroupTitles { get; private set; }The group headers of the shown page in their order (the view rebuilds its groups when they change).
HasError
Section titled “HasError”bool HasError { get; }IssuedCertificateListViewModel.Error is set.
HasPages
Section titled “HasPages”bool HasPages { get; }More rows than one page: Previous and Next show.
IsGrouped
Section titled “IsGrouped”bool IsGrouped { get; private set; }The rows have group headers (IssuedCertificateRow.GroupTitle).
IsLoading
Section titled “IsLoading”bool IsLoading { get; set; }The first read (the overlay over the grid).
IsReloading
Section titled “IsReloading”bool IsReloading { get; set; }A later read (filter, page, change on the server): the progress row above the grid.
IsWorking
Section titled “IsWorking”bool IsWorking { get; }A write of the page runs (IssuedCertificateListViewModel.WorkText): its buttons stay off.
NextPageCommand
Section titled “NextPageCommand”IAsyncRelayCommand NextPageCommand { get; }Gets an IAsyncRelayCommand instance wrapping IssuedCertificateListViewModel.NextPageAsync.
NextText
Section titled “NextText”string NextText { get; }“Next 500”.
NoRowsText
Section titled “NoRowsText”string NoRowsText { get; init; }The empty list without filters: what to do first (default IssuedCertificateTexts.NoCertificates).
Offset
Section titled “Offset”int Offset { get; set; }The first row of the shown page.
PageSize
Section titled “PageSize”int PageSize { get; init; }Rows of one page.
PageText
Section titled “PageText”string PageText { get; }“1-500 of 12,345”; empty without rows.
PreviousPageCommand
Section titled “PreviousPageCommand”IAsyncRelayCommand PreviousPageCommand { get; }Gets an IAsyncRelayCommand instance wrapping IssuedCertificateListViewModel.PreviousPageAsync.
PreviousText
Section titled “PreviousText”string PreviousText { get; }“Previous 500”.
ProgressText
Section titled “ProgressText”string ProgressText { get; }The text of the progress row: the write while one runs, else “Reading the certificates”.
RangeObservableCollection<IssuedCertificateRow> Rows { get; }The rows of the shown page, newest first (bound to the grid).
Search
Section titled “Search”string? Search { get; set; }Text in any column, the device’s host name or serial, or the certificate’s serial; read 300 ms after the last key.
SearchDelay
Section titled “SearchDelay”TimeSpan SearchDelay { get; init; }Wait after typing in the search before the server is asked.
Selected
Section titled “Selected”IReadOnlyList<IssuedCertificateRow> Selected { get; }The chosen rows (the grid’s selection).
ShowsFilters
Section titled “ShowsFilters”bool ShowsFilters { get; init; }The filters show (default); false for a short list such as the PKI page’s CAs (the search always shows).
ShowsProgress
Section titled “ShowsProgress”bool ShowsProgress { get; }The progress row above the grid shows: a later read or a write of the page.
ShowsUsedIn
Section titled “ShowsUsedIn”bool ShowsUsedIn { get; init; }A CA list (the PKI page’s): the Used in column shows (the policies that use each CA) and the Type column is wider (the OADM CA’s badges); false by default.
SourceChoices
Section titled “SourceChoices”RangeObservableCollection<IssuedCertificateFilter> SourceChoices { get; }“Issued by any” and the CAs the server lists, or Task and EST when it lists none.
SourceFilter
Section titled “SourceFilter”IssuedCertificateFilter SourceFilter { get; set; }The chosen source; a change reads the first page again.
StateChoices
Section titled “StateChoices”IReadOnlyList<IssuedCertificateFilter> StateChoices { get; }“All states” and every state a row can have: Valid, Expires soon, Expired (decision 2026-10-25: no Replaced, the list holds only each camera’s current certificates; decision 2026-10-26: no Revoked, a certificate no longer accepted is not listed).
StateFilter
Section titled “StateFilter”IssuedCertificateFilter StateFilter { get; set; }The chosen state; a change reads the first page again.
TimeProvider Time { get; }Protected: for classes that derive from it
The clock of the search delay and the certificate window.
int Total { get; set; }How many certificates match the filters and the search.
UseChoices
Section titled “UseChoices”IReadOnlyList<IssuedCertificateFilter> UseChoices { get; }“All uses” and every use.
UseFilter
Section titled “UseFilter”IssuedCertificateFilter UseFilter { get; set; }The chosen use; a change reads the first page again.
ViewCertificateCommand
Section titled “ViewCertificateCommand”IAsyncRelayCommand ViewCertificateCommand { get; }Gets an IAsyncRelayCommand instance wrapping IssuedCertificateListViewModel.ViewCertificateAsync.
ViewRowCommand
Section titled “ViewRowCommand”IAsyncRelayCommand<IssuedCertificateRow?> ViewRowCommand { get; }Gets an IAsyncRelayCommand<T> instance wrapping IssuedCertificateListViewModel.ViewRowAsync.
WorkText
Section titled “WorkText”string? WorkText { get; protected set; }The text of a write the page runs on the list (“Deleting the certificates”); null while none runs. The progress row shows it above the grid.
Methods
Section titled “Methods”ActionsOf
Section titled “ActionsOf”virtual IReadOnlyList<IssuedCertificateAction> ActionsOf(IssuedCertificateRow row)Protected: for classes that derive from it
The actions of one row: View by default; a page adds its own (everyday ones first, a separator, the red ones last).
LoadAsync
Section titled “LoadAsync”Task LoadAsync(CancellationToken ct = default)Reads the page at IssuedCertificateListViewModel.Offset with the filters (the first time with the overlay).
MenuOf
Section titled “MenuOf”IReadOnlyList<IssuedCertificateAction> MenuOf(IssuedCertificateRow row)The actions menu of a row (its ⋯ button and its right-click menu): the row’s own actions, or, when the row is one of several chosen rows, what the page does with all of them (IssuedCertificateListViewModel.SelectionActions) when it offers something.
MoreStatesOf
Section titled “MoreStatesOf”virtual IReadOnlyList<IssuedCertificateStatus> MoreStatesOf(IssuedCertificateInfo row)Protected: for classes that derive from it
Statuses the page adds below the type of a row (the OADM CA’s trust); none by default.
OnGroupingChanged
Section titled “OnGroupingChanged”virtual void OnGroupingChanged(IssuedCertificateGrouping grouping)Protected: for classes that derive from it
After the user chose another grouping (a page keeps the choice).
OnSelectionChanged
Section titled “OnSelectionChanged”virtual void OnSelectionChanged()Protected: for classes that derive from it
After every change of IssuedCertificateListViewModel.Selected (commands of a derived list).
OnWorkChanged
Section titled “OnWorkChanged”virtual void OnWorkChanged()Protected: for classes that derive from it
After every change of IssuedCertificateListViewModel.WorkText (commands of a derived list stay off while a write runs).
RefreshRows
Section titled “RefreshRows”void RefreshRows()Protected: for classes that derive from it
Builds the rows of the shown page again (the page’s IssuedCertificateListViewModel.MoreStatesOf changed); the selection stays.
SelectionActions
Section titled “SelectionActions”virtual IReadOnlyList<IssuedCertificateAction> SelectionActions()Protected: for classes that derive from it
The actions for several chosen rows; none by default (the menu then shows the row’s own).
SetSelection
Section titled “SetSelection”void SetSelection(IEnumerable<IssuedCertificateRow> rows)The grid’s selection changed (one step for many rows).
ShowMessageAsync
Section titled “ShowMessageAsync”virtual Task ShowMessageAsync(string title, string message)Protected: for classes that derive from it
A message to the user (the page’s message window).
ViewAsync
Section titled “ViewAsync”Task ViewAsync(IssuedCertificateRow row)Protected: for classes that derive from it
Shows row in the shared certificate window (or why it cannot be shown).
WarningDaysFor
Section titled “WarningDaysFor”int WarningDaysFor(IssuedCertificateRow row, DateTime nowUtc)The warning days of the certificate window: the server’s (PKI’s setting) when the page said, else what makes the window agree with the row’s state (Expires soon or Valid), else the default.
Events
Section titled “Events”GroupsChanged
Section titled “GroupsChanged”event EventHandler? GroupsChangedThe groups of the shown page changed (another grouping, other counts): the view groups the rows again.
SelectionRestored
Section titled “SelectionRestored”event EventHandler? SelectionRestoredThe rows were replaced and the selection kept: the view selects them again in the grid.