private void CopyToClipboardButton_Click(object sender, RoutedEventArgs e) { ClipboardHelper.CopyToClipboard(ColorTextRepresentationTextBlock.Text); if (!_copyIndicatorVisible) { AppearCopiedIndicator(); } _actionInvoker.ScheduleAction(() => HideCopiedIndicator(), CopyIndicatorStayTimeInMs); }
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); } } }