/// <summary> /// Clipboard has changed - event /// </summary> /// <param name="format">Data format</param> /// <param name="data">Data object</param> private void ClipboardMonitor_OnClipboardChange(ClipboardFormat format, object data) { var clipboardObject = new ClipboardObject(format, data); if (LastClipboardObject != null && LastClipboardObject.Equals(clipboardObject)) { return; // Same clipboard as the last one, ignoring! } CurrentIndex = 0; var item = Find(clipboardObject); if (item != null) { ClipboardObjects.Remove(clipboardObject); ClipboardObjects.Enqueue(clipboardObject); } else { ClipboardObjects.Enqueue(clipboardObject); } OnPropertyChanged(nameof(ClipboardObjects)); LastClipboardObject = clipboardObject; SessionClips++; }
/// <summary> /// Find an clip matching a checksum /// </summary> /// <param name="clipitem">Checksum to find</param> /// <returns><see cref="ClipboardObject"/> or null</returns> public ClipboardObject Find(ClipboardObject clipitem) { var result = ClipboardObjects.AsParallel().FirstOrDefault(clip => clip.Checksum.SequenceEqual(clipitem.Checksum)); return(result); }
private bool Equals(ClipboardObject other) { if (Format == other.Format && Equals(Data, other.Data)) { return true; } if (Data.GetType() != other.Data.GetType() || !Equals(Key, other.Key)) return false; if (Checksum != null && other.Checksum != null) { if (Checksum.LongLength != other.Checksum.LongLength) return false; if (Checksum.SequenceEqual(other.Checksum)) return true; } var strings = other.Data as string[]; if (strings != null) { var thisData = (string[])Data; var otherData = strings; if (thisData.LongLength != otherData.LongLength) return false; for (var i = 0; i < thisData.LongLength; i++) { if (!Equals(thisData[i], otherData[i])) return false; } return true; } var bitmaps = other.Data as Bitmap; if (bitmaps != null) { var thisData = (Bitmap)Data; var otherData = bitmaps; try { if (thisData.Size != otherData.Size || thisData.PixelFormat != otherData.PixelFormat) return false; } catch (Exception) { return false; } return false; } return false; }
private bool Equals(ClipboardObject other) { if (Format == other.Format && Equals(Data, other.Data)) { return(true); } if (Data.GetType() != other.Data.GetType() || !Equals(Key, other.Key)) { return(false); } if (Checksum != null && other.Checksum != null) { if (Checksum.LongLength != other.Checksum.LongLength) { return(false); } if (Checksum.SequenceEqual(other.Checksum)) { return(true); } } var strings = other.Data as string[]; if (strings != null) { var thisData = (string[])Data; var otherData = strings; if (thisData.LongLength != otherData.LongLength) { return(false); } for (var i = 0; i < thisData.LongLength; i++) { if (!Equals(thisData[i], otherData[i])) { return(false); } } return(true); } var bitmaps = other.Data as Bitmap; if (bitmaps != null) { var thisData = (Bitmap)Data; var otherData = bitmaps; try { if (thisData.Size != otherData.Size || thisData.PixelFormat != otherData.PixelFormat) { return(false); } } catch (Exception) { return(false); } return(false); } return(false); }
/// <summary> /// Find an clip matching a checksum /// </summary> /// <param name="clipitem">Checksum to find</param> /// <returns><see cref="ClipboardObject"/> or null</returns> public ClipboardObject Find(ClipboardObject clipitem) { var result = ClipboardObjects.AsParallel().FirstOrDefault(clip => clip.Checksum.SequenceEqual(clipitem.Checksum)); return result; }
/// <summary> /// Clipboard has changed - event /// </summary> /// <param name="format">Data format</param> /// <param name="data">Data object</param> private void ClipboardMonitor_OnClipboardChange(ClipboardFormat format, object data) { var clipboardObject = new ClipboardObject(format, data); if (LastClipboardObject != null && LastClipboardObject.Equals(clipboardObject)) return; // Same clipboard as the last one, ignoring! CurrentIndex = 0; var item = Find(clipboardObject); if (item != null) { ClipboardObjects.Remove(clipboardObject); ClipboardObjects.Enqueue(clipboardObject); } else { ClipboardObjects.Enqueue(clipboardObject); } OnPropertyChanged(nameof(ClipboardObjects)); LastClipboardObject = clipboardObject; SessionClips++; }