public void UpdateItem(IListItemEx obj1, IListItemEx obj2) {
if (!obj2.IsInCurrentFolder(this.CurrentFolder) || obj2.Equals(obj1)) return;
var items = this.Items.ToArray();
var oldItem =
items.SingleOrDefault(s =>
s.Equals(obj1) ||
(obj1.Extension.Equals(".library-ms") &&
s.ParsingName.Equals(Path.Combine(KnownFolders.Libraries.ParsingName, Path.GetFileName(obj1.ParsingName)))));
var theItem =
items.FirstOrDefault(s =>
s.ParsingName == obj2.ParsingName ||
(obj2.Extension.Equals(".library-ms") && s.ParsingName.Equals(Path.Combine(KnownFolders.Libraries.ParsingName, Path.GetFileName(obj2.ParsingName)))));
if (theItem == null) {
if (oldItem != null) {
this.Items.Remove(oldItem);
this._AddedItems.Remove(oldItem.PIDL);
}
this.Items.Add(obj2.Extension.Equals(".library-ms")
? FileSystemListItem.InitializeWithIShellItem(this.LVHandle,
ShellLibrary.Load(obj2.DisplayName, true).ComInterface)
: obj2);
var col = this.AllAvailableColumns.FirstOrDefault(w => w.Value.ID == this.LastSortedColumnId).Value;
this.SetSortCollumn(true, col, this.LastSortOrder, false);
if (this.IsGroupsEnabled) this.SetGroupOrder(false);
var obj2Real =
this.Items.FirstOrDefault(s =>
s.ParsingName == obj2.ParsingName ||
(obj2.Extension.Equals(".library-ms") && s.ParsingName.Equals(Path.Combine(KnownFolders.Libraries.ParsingName, Path.GetFileName(obj2.ParsingName)))));
if (obj2Real != null) {
this.SelectItemByIndex(obj2Real.ItemIndex, true, true);
this.RefreshItem(obj2Real.ItemIndex, true);
}
} else if (oldItem == null && obj2.Extension == String.Empty) {
//probably a temporary file
this._TemporaryFiles.Add(obj2.ParsingName);
}
this.IsFocusAllowed = true;
this.Focus();
}