/// <summary>Adds a key to the list.</summary> public void AddKey(Key key) { if(key == null) throw new ArgumentNullException(); PGPListViewItem item = CreateKeyItem(key); if(item != null) { SetFont(item, GetItemStatus(key)); Items.Add(item); } }
/// <include file="documentation.xml" path="/UI/ListBase/CreateKeyItem/*"/> protected virtual PGPListViewItem CreateKeyItem(Key key) { PrimaryKey primaryKey = key as PrimaryKey; PGPListViewItem item = primaryKey != null ? (PGPListViewItem)new PrimaryKeyItem(primaryKey) : new SubkeyItem((Subkey)key); item.Text = primaryKey != null ? "primary" : "subkey"; item.SubItems.Add(key.ShortKeyId); item.SubItems.Add(key.KeyType); item.SubItems.Add(key.Length.ToString()); item.SubItems.Add(key.CreationTime.ToShortDateString()); item.SubItems.Add(key.ExpirationTime.HasValue ? key.ExpirationTime.Value.ToShortDateString() : "n/a"); char[] capChars = new char[4]; int caps = 0; if((key.Capabilities & KeyCapabilities.Authenticate) != 0) capChars[caps++] = 'A'; if((key.Capabilities & KeyCapabilities.Certify) != 0) capChars[caps++] = 'C'; if((key.Capabilities & KeyCapabilities.Encrypt) != 0) capChars[caps++] = 'E'; if((key.Capabilities & KeyCapabilities.Sign) != 0) capChars[caps++] = 'S'; item.SubItems.Add(caps == 0 ? "none" : new string(capChars, 0, caps)); return item; }