private void CopyToClipboardButton_Click(object sender, RoutedEventArgs e)
        {
            ClipboardHelper.CopyToClipboard(ColorTextRepresentationTextBlock.Text);
            if (!_copyIndicatorVisible)
            {
                AppearCopiedIndicator();
            }

            _actionInvoker.ScheduleAction(() => HideCopiedIndicator(), CopyIndicatorStayTimeInMs);
        }
Exemple #2
0
        private void ShowZoomWindow(int x, int y)
        {
            if (_zoomWindow == null)
            {
                _zoomWindow                   = new ZoomWindow();
                _zoomWindow.Content           = _zoomViewModel;
                _zoomWindow.Loaded           += ZoomWindow_Loaded;
                _zoomWindow.IsVisibleChanged += ZoomWindow_IsVisibleChanged;
            }

            // we just started zooming, remember where we opened zoom window
            if (_currentZoomLevel == 1 && _previousZoomLevel == 0)
            {
                var dpi = MonitorResolutionHelper.GetCurrentMonitorDpi();
                _previousScaledX = x / dpi.DpiScaleX;
                _previousScaledY = y / dpi.DpiScaleY;
            }

            _lastLeft = Math.Floor(_previousScaledX - (BaseZoomImageSize * Math.Pow(ZoomFactor, _currentZoomLevel - 1) / 2));
            _lastTop  = Math.Floor(_previousScaledY - (BaseZoomImageSize * Math.Pow(ZoomFactor, _currentZoomLevel - 1) / 2));

            var justShown = false;

            if (!_zoomWindow.IsVisible)
            {
                _zoomWindow.Left      = _lastLeft;
                _zoomWindow.Top       = _lastTop;
                _zoomViewModel.Height = BaseZoomImageSize;
                _zoomViewModel.Width  = BaseZoomImageSize;
                _zoomWindow.Show();
                justShown = true;

                // make sure color picker window is on top of just opened zoom window
                AppStateHandler.SetTopMost();
            }

            // dirty hack - sometimes when we just show a window on a second monitor with different DPI,
            // window position is not set correctly on a first time, we need to "ping" it again to make it appear on the proper location
            if (justShown)
            {
                _zoomWindow.Left = _lastLeft + 1;
                _zoomWindow.Top  = _lastTop + 1;
                SessionEventHelper.Event.ZoomUsed = true;
            }

            _throttledActionInvoker.ScheduleAction(
                () =>
            {
                _zoomWindow.DesiredLeft      = _lastLeft;
                _zoomWindow.DesiredTop       = _lastTop;
                _zoomViewModel.DesiredHeight = BaseZoomImageSize * _zoomViewModel.ZoomFactor;
                _zoomViewModel.DesiredWidth  = BaseZoomImageSize * _zoomViewModel.ZoomFactor;
            },
                ZoomWindowChangeDelayInMS);
        }
        private void SetSelectedImage(IImagePreviewItemViewModel image)
        {
            if (_inSlideshowMode)
            {
                NextImageButtonVisible     = false;
                PreviousImageButtonVisible = false;
                SelectedImage        = image;
                _selectedImageInList = image;

                OnPropertyChanged(nameof(SelectedImageInList));

                if (Images.IndexOf(image) < Images.Count - 1)
                {
                    _slideshowScheduledActionInvoker.ScheduleAction(() =>
                    {
                        var currentIndex = Images.IndexOf(SelectedImage);
                        if (Images.Count > currentIndex + 1)
                        {
                            SetSelectedImage(Images[currentIndex + 1]);
                        }
                    }, _slideshowDelayInSeconds * MsPerSecond);
                }
            }
        }