public void Clear()
 {
     clipboard.Clear();
     parents.Clear();
     this.numPaste = 0;
     this.state    = ClipboardState.clear;
 }
Ejemplo n.º 2
0
            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;
                }
            }
Ejemplo n.º 3
0
        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,
                });
            }
        }
Ejemplo n.º 4
0
 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));
 }
Ejemplo n.º 5
0
        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();
            }
        }
Ejemplo n.º 6
0
 public ImageViewModel(ClipboardState state, DateTime dateTime,
                       Action <ClipboardViewModel> onPaste, Action <ClipboardViewModel> onDelete)
     : base(state, dateTime, onPaste, onDelete)
 {
 }
Ejemplo n.º 7
0
        public void SwitchState(ClipboardState state)
        {
            StartStateTime = Time.time;

            CurrentState = state;
        }
Ejemplo n.º 8
0
        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));
            }
        }
Ejemplo n.º 9
0
 void timer_Elapsed(object sender, ElapsedEventArgs e)
 {
     timer.Stop();
     clipState = ClipboardState.Ready;
 }