public void Clear() { clipboard.Clear(); parents.Clear(); this.numPaste = 0; this.state = ClipboardState.clear; }
protected override void WndProc(ref Message m) { switch (m.Msg) { case WM_DRAWCLIPBOARD: if (ClipState == ClipboardState.Ready) { ClipChanged(); ClipState = ClipboardState.Busy; } SendMessage(nextClipboardViewer, m.Msg, m.WParam, m.LParam); break; case WM_CHANGECBCHAIN: if (m.WParam == nextClipboardViewer) { nextClipboardViewer = m.LParam; } else { SendMessage(nextClipboardViewer, m.Msg, m.WParam, m.LParam); } break; default: base.WndProc(ref m); break; } }
public static ClipboardStateResponse GetResponse(Guid stateId) { ClipboardState state = AppState.Current.ClipboardStates.FirstOrDefault(x => x.Id == stateId); ClipboardItem item = state?.Items.FirstOrDefault( x => ClipboardParser.CanSerialize(ClipboardParser.GetAbstractFormat(x.Format))); if (state != null && item != null) { return(new ClipboardStateResponse { StateGuid = stateId, Buffer = item.GetDataBuffer(), Format = item.Format, DateTime = state.DateTime, IsError = false, }); } else { return(new ClipboardStateResponse { StateGuid = stateId, Buffer = null, Format = (DataFormat)0, DateTime = state.DateTime, IsError = true, }); } }
public ClipboardViewModel(ClipboardState state, DateTime dateTime, Action <ClipboardViewModel> onPaste, Action <ClipboardViewModel> onDelete) { _state = state ?? throw new ArgumentNullException(nameof(state)); _dateTime = dateTime; _isCurrent = false; _onPaste = onPaste ?? throw new ArgumentNullException(nameof(onPaste)); _onDelete = onDelete ?? throw new ArgumentNullException(nameof(onDelete)); }
private void OnClipboardStateChanged(ClipboardState newState) { try { CollectStates(); var viewModel = CreateClipboardViewModel(newState); AppState.Current.ClipboardStates.Insert(0, newState); _viewModel.ClipboardItems.Insert(0, viewModel); MarkCurrentViewModel(viewModel); //var content = new ClipboardItemControl { ContentSource = viewModel }; //Task quickInfoTask = _quickInfoWindow.ShowContentAsync( // content, // TimeSpan.FromSeconds(2)); } catch (Exception e) { _logger.LogWarn(LogEvents.FatalErr, e); e.NotifyCritical(); } }
public ImageViewModel(ClipboardState state, DateTime dateTime, Action <ClipboardViewModel> onPaste, Action <ClipboardViewModel> onDelete) : base(state, dateTime, onPaste, onDelete) { }
public void SwitchState(ClipboardState state) { StartStateTime = Time.time; CurrentState = state; }
private ClipboardViewModel CreateClipboardViewModel(ClipboardState state) { ClipboardItem item = ClipboardParser.GetPreferredItem(state.Items, serializable: false); if (item == null) { _logger.LogInfo(LogEvents.UnknClipbdFmt, state.Items.Select(x => new { x.Format, x.FormatName })); return(new UnknownViewModel( state, DateTime.Now, onPaste: OnPasteStateClicked, onDelete: OnDeleteStateClicked)); } switch (ClipboardParser.GetAbstractFormat(item.Format)) { case AbstractDataFormat.Image: return(new ImageViewModel( state, DateTime.Now, onPaste: OnPasteStateClicked, onDelete: OnDeleteStateClicked) { Image = ClipboardParser.ParseImage(item), }); case AbstractDataFormat.Text: var text = ClipboardParser.ParseText(item); string source = text.Trim(); if (source.Length < 50 && ColorParser.TryParse(source, out Color color)) { Color textColor = (color.R + color.G + color.B) * (float)color.A / 255 / 3 >= 127 ? System.Windows.Media.Colors.Black : System.Windows.Media.Colors.White; return(new ColorViewModel( state, DateTime.Now, onPaste: OnPasteStateClicked, onDelete: OnDeleteStateClicked) { BackgroundColor = new SolidColorBrush(color), TextColor = new SolidColorBrush(textColor), Text = text.Trim(), }); } else { string textContent = PostProcessText(ClipboardParser.ParseText(item)); return(new TextViewModel( state, DateTime.Now, onPaste: OnPasteStateClicked, onDelete: OnDeleteStateClicked) { Text = textContent, }); } case AbstractDataFormat.FileDrop: string[] items = ClipboardParser.ParseFileDrop(item) .Where(x => File.Exists(x) || Directory.Exists(x)) .ToArray(); return(new FileDropViewModel( state, DateTime.Now, onPaste: OnPasteStateClicked, onDelete: OnDeleteStateClicked) { Items = items, }); default: _logger.LogInfo(LogEvents.UnknClipbdFmt, state.Items.Select(x => new { x.Format, x.FormatName })); return(new UnknownViewModel( state, DateTime.Now, onPaste: OnPasteStateClicked, onDelete: OnDeleteStateClicked)); } }
void timer_Elapsed(object sender, ElapsedEventArgs e) { timer.Stop(); clipState = ClipboardState.Ready; }