private void OnClipboardUpdate(object sender, EventArgs args) //TODO: Either remove entries with the same data or don't add on paste { object data = null; ClipboardObjectType type = ClipboardObjectType.NoData; if (ClipboardHelper.ContainsText(OPEN_CLIPBOARD_TRIES)) { data = ClipboardHelper.GetText(OPEN_CLIPBOARD_TRIES); type = ClipboardObjectType.String; } else if (ClipboardHelper.ContainsImage(OPEN_CLIPBOARD_TRIES)) { data = ClipboardHelper.GetImage(OPEN_CLIPBOARD_TRIES); type = ClipboardObjectType.Image; } if (data == null) { return; } if (SavedClipboardObjects.Any(i => i.Data.Equals(data))) { return; } var sameObjects = ClipboardObjects.Where(i => i.Data.Equals(data)).ToList(); foreach (var sameObject in sameObjects) { ClipboardObjects.Remove(sameObject); } ClipboardObjectViewModel noDataItem = ClipboardObjects.FirstOrDefault(i => i.ClipboardObjectType == ClipboardObjectType.NoData); if (noDataItem != null) { ClipboardObjects.Remove(noDataItem); } ClipboardObjects.Insert(0, new ClipboardObjectViewModel(data, type)); if (ClipboardObjects.Count <= ((ClipboardManagerSettings)Settings).MaxEntries) { return; } ClipboardObjectViewModel lastObject = ClipboardObjects.LastOrDefault(); if (lastObject == null) { return; } ClipboardObjects.Remove(lastObject); }
private void OnClipboardObjectPinStateChanged(object sender, bool isPinned) { if (isPinned) { ClipboardObjectViewModel clipboardObject = ClipboardObjects.FirstOrDefault(i => i.Equals(sender)); ClipboardObjects.Remove(clipboardObject); SavedClipboardObjects.Add(clipboardObject); SavePinnedItem(clipboardObject); } else { ClipboardObjectViewModel savedClipboardObject = SavedClipboardObjects.FirstOrDefault(i => i.Equals(sender)); int index = SavedClipboardObjects.IndexOf(savedClipboardObject); SavedClipboardObjects.Remove(savedClipboardObject); ClipboardObjects.Add(savedClipboardObject); DeletePinnedItem(index); } }