Beispiel #1
0
        private async void OnVisibilityChanged(DependencyObject sender, DependencyProperty dp)
        {
            if (Visibility == Visibility.Visible)
            {
                await Task.Delay(100);

                CaptionInput.Focus(FocusState.Keyboard);
            }
        }
Beispiel #2
0
        private void OnLoaded(object sender, RoutedEventArgs e)
        {
            InputPane.GetForCurrentView().Showing += InputPane_Showing;
            InputPane.GetForCurrentView().Hiding  += InputPane_Hiding;

            if (UIViewSettings.GetForCurrentView().UserInteractionMode == UserInteractionMode.Mouse)
            {
                CaptionInput.Focus(FocusState.Keyboard);
            }
        }
        private void Accept_Click(object sender, RoutedEventArgs e)
        {
            if ((CropToolbar != null && CropToolbar.Visibility == Visibility.Visible) ||
                (!_hasMessageContext && _media.IsVideo))
            {
                var rect = Cropper.CropRectangle;

                TimeSpan trimStartTime;
                TimeSpan trimStopTime;

                if (TrimRange != null)
                {
                    trimStartTime = TimeSpan.FromMilliseconds(TrimRange.Minimum * TrimRange.OriginalDuration.TotalMilliseconds);
                    trimStopTime  = TimeSpan.FromMilliseconds(TrimRange.Maximum * TrimRange.OriginalDuration.TotalMilliseconds);
                }

                if (_media?.EditState is BitmapEditState es)
                {
                    es.Rectangle     = rect;
                    es.Proportions   = Cropper.Proportions;
                    es.Strokes       = Canvas.Strokes;
                    es.Flip          = _flip;
                    es.Rotation      = _rotation;
                    es.TrimStartTime = trimStartTime;
                    es.TrimStopTime  = trimStopTime;
                }
                Crop.IsChecked = IsCropped(rect);
                ResetUiVisibility();
                if (!_hasMessageContext && _media.IsVideo)
                {
                    Hide(ContentDialogResult.Primary);
                }
            }
            else if (DrawToolbar != null && DrawToolbar.Visibility == Visibility.Visible)
            {
                Canvas.SaveState();
                _media.EditState.Strokes = Canvas.Strokes;

                Draw.IsChecked = Canvas.Strokes?.Count > 0;
                ResetUiVisibility();

                SettingsService.Current.Pencil = DrawSlider.GetDefault();
            }
            else
            {
                if (_hasMessageContext)
                {
                    ResetUiVisibility();
                    _media.Caption = CaptionInput.GetFormattedText();
                }
                Hide(ContentDialogResult.Primary);
            }
        }
Beispiel #4
0
        private void OnLoaded(object sender, RoutedEventArgs e)
        {
            InputPane.GetForCurrentView().Showing += InputPane_Showing;
            InputPane.GetForCurrentView().Hiding  += InputPane_Hiding;

            if (UIViewSettings.GetForCurrentView().UserInteractionMode == UserInteractionMode.Mouse)
            {
                CaptionInput.Focus(FocusState.Keyboard);
            }

            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("SelectedItem"));
        }
        private void Accept_Click(object sender, RoutedEventArgs e)
        {
            if (Items == null)
            {
                Hide(ContentDialogResult.Secondary);
                return;
            }

            if (IsEditingCompression && SelectedItem is StorageVideo video)
            {
                video.Compression = (int)CompressionValue.Value;

                IsEditingCompression = false;
                return;
            }

            if (IsEditingCropping && SelectedItem is StorageMedia media)
            {
                media.CropRectangle = Cropper.CropRectangle;
                media.Refresh();

                Select_Click(null, null);

                IsEditingCropping = false;
                PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("SelectedItem"));
                return;
            }

            if (SelectedItem != null && SelectedItems.IsEmpty())
            {
                SelectedItems.Add(SelectedItem);
            }

            if (IsGroupingEnabled)
            {
                ViewModel.Settings.IsSendGrouped = IsGrouped;
            }

            SelectedItem.Caption = CaptionInput.GetFormattedText()
                                   .Substring(0, ViewModel.CacheService.Options.MessageCaptionLengthMax);

            Hide(ContentDialogResult.Primary);
        }
        private void OnLoaded(object sender, RoutedEventArgs e)
        {
            InputPane.GetForCurrentView().Showing += InputPane_Showing;
            InputPane.GetForCurrentView().Hiding  += InputPane_Hiding;

            IsGrouped = ViewModel.Settings.IsSendGrouped;

            if (ApiInformation.IsPropertyPresent("Windows.UI.Xaml.Controls.RichEditBox", "MaxLength"))
            {
                CaptionInput.MaxLength = ViewModel.CacheService.Options.MessageCaptionLengthMax;
            }

            if (UIViewSettings.GetForCurrentView().UserInteractionMode == UserInteractionMode.Mouse)
            {
                CaptionInput.Focus(FocusState.Keyboard);
            }

            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("SelectedItem"));
        }
        public EditMediaPopup(StorageMedia media, ImageCropperMask mask = ImageCropperMask.Rectangle, bool ttl = false)
        {
            InitializeComponent();

            Canvas.Strokes = media.EditState.Strokes;
            Cropper.SetMask(mask);
            if (mask == ImageCropperMask.Ellipse)
            {
                _hasMessageContext          = false;
                media.EditState.Proportions = BitmapProportions.Square;
            }
            Cropper.SetProportions(media.EditState.Proportions);

            _file  = media.File;
            _media = media;
            _originalMediaEditState = CopyBitmapEditState(media.EditState);

            Loaded += async(s, args) =>
            {
                await Cropper.SetSourceAsync(media.File, media.EditState.Rotation, media.EditState.Flip, media.EditState.Proportions, media.EditState.Rectangle);

                if (!_hasMessageContext) //TODO: Fix mask bug, remove hack (#2017 references mask position)
                {
                    await Cropper.SetSourceAsync(_media.File, _media.EditState.Rotation, _media.EditState.Flip, _media.EditState.Proportions, _media.EditState.Rectangle);

                    Cropper.SetProportions(_media.EditState.Proportions);
                }
                Cropper.IsCropEnabled = !_hasMessageContext && _media.IsVideo;
            };
            Unloaded += (s, args) =>
            {
                Media.Source = null;
            };

            #region Init UI
            if (mask == ImageCropperMask.Ellipse && string.Equals(media.File.FileType, ".mp4", StringComparison.OrdinalIgnoreCase))
            {
                FindName(nameof(TrimToolbar));
                TrimToolbar.Visibility    = Visibility.Visible;
                BasicToolbar.Visibility   = Visibility.Collapsed;
                SeparatorLeft.Visibility  = Visibility.Collapsed;
                SeparatorRight.Visibility = Visibility.Collapsed;

                InitializeVideo(media.File);
            }

            if (_media is StorageVideo video)
            {
                _originalVideoCompression = video.Compression;
                _originalVideoIsMuted     = video.IsMuted;
                Mute.IsChecked            = video.IsMuted;
                Mute.Visibility           = Visibility.Visible;
                Compress.IsChecked        = video.Compression != video.MaxCompression;
                Compress.Visibility       = video.CanCompress ? Visibility.Visible : Visibility.Collapsed;

                if (video.CanCompress)
                {
                    Compress.Glyph        = new CompressionToGlyphConverter().Convert(video.Compression, typeof(string), null, video.MaxCompression.ToString()).ToString();
                    Compress.CheckedGlyph = Compress.Glyph;
                    Compress.IsChecked    = video.Compression != video.MaxCompression;
                }
            }
            else
            {
                Mute.Visibility     = Visibility.Collapsed;
                Compress.Visibility = Visibility.Collapsed;
            }

            Crop.Visibility = _media is StoragePhoto ? Visibility.Visible : Visibility.Collapsed;
            Draw.Visibility = Crop.Visibility;
            Ttl.Visibility  = ttl ? Visibility.Visible : Visibility.Collapsed;
            Ttl.IsChecked   = _media.Ttl > 0;

            if (_media.EditState is BitmapEditState editSate)
            {
                Crop.IsChecked = editSate.Proportions != BitmapProportions.Custom ||
                                 editSate.Flip != BitmapFlip.None ||
                                 editSate.Rotation != BitmapRotation.None ||
                                 (!editSate.Rectangle.IsEmpty &&
                                  (editSate.Rectangle.X > 0 || editSate.Rectangle.Y > 0 ||
                                   Math.Abs(editSate.Rectangle.Width - 1) > 0.1f || Math.Abs(editSate.Rectangle.Height - 1) > 0.1f));

                Draw.IsChecked = editSate.Strokes != null && editSate.Strokes.Count > 0;
            }
            else
            {
                Crop.IsChecked = false;
                Draw.IsChecked = false;
            }

            if (_hasMessageContext)
            {
                if (!string.IsNullOrWhiteSpace(media.Caption?.Text))
                {
                    CaptionInput.SetText(media.Caption);
                }
            }
            else
            {
                CaptionInput.Visibility = Visibility.Collapsed;
            }
            #endregion
        }
 private void ContentDialog_PrimaryButtonClick(ContentDialog sender, ContentDialogButtonClickEventArgs args)
 {
     Caption = CaptionInput.GetFormattedText();
 }