예제 #1
0
        void SetClose(PrimaryPlayerDisplayMode currentMode)
        {
            if (_view.ViewMode == ApplicationViewMode.CompactOverlay)
            {
                _ = _view.TryEnterViewModeAsync(ApplicationViewMode.Default);
            }

            if (_view.IsFullScreenMode &&
                ApplicationView.PreferredLaunchWindowingMode != ApplicationViewWindowingMode.FullScreen)
            {
                //_view.ExitFullScreenMode();
            }

            _navigationService.NavigateAsync(nameof(BlankPage));
        }
예제 #2
0
        private async void EnterMiniMode_Button_Click(object sender, RoutedEventArgs e)
        {
            ViewModePreferences preferences = ViewModePreferences.CreateDefault(ApplicationViewMode.CompactOverlay);

            preferences.CustomSize         = new Size(500, 500);
            preferences.ViewSizePreference = ViewSizePreference.Custom;
            bool modeSwitched = await _currentView.TryEnterViewModeAsync(ApplicationViewMode.CompactOverlay, preferences);

            if (!modeSwitched)
            {
                throw new Exception("Can not enter Mini Mode");
            }

            _viewModel.IsMiniMode = true;
        }
예제 #3
0
        private async void CompactOverlayButton_Click(object sender, RoutedEventArgs e)
        {
            ApplicationView applicationView = ApplicationView.GetForCurrentView();

            if (await applicationView.TryEnterViewModeAsync(ApplicationViewMode.CompactOverlay))
            {
                SetControlVisibility(Visibility.Collapsed); MyCanvas.Margin = new Thickness(32);
            }
        }
예제 #4
0
        private async void ShowCompactButton_Click(object sender, RoutedEventArgs e)
        {
            if (LyricsView != null)
            {
                return;
            }

            var mainWindow = CoreWindow.GetForCurrentThread();
            var mainViewId = ApplicationView.GetApplicationViewIdForWindow(mainWindow);

            #region Create a new View ,named LyricsView
            var currentView = CoreApplication.CreateNewView();
            await currentView.Dispatcher.TryRunAsync(CoreDispatcherPriority.Normal, async() =>
            {
                LyricsView = ApplicationView.GetForCurrentView();
                LyricsView.Consolidated += LyricsView_Consolidated;

                #region Set the content of Window in LyricsView
                var rootContainer = new Grid()
                {
                    Background = new SolidColorBrush()
                    {
                        Color = Colors.Black
                    }
                };
                var lyricTextBlock = new TextBlock()
                {
                    Foreground = new SolidColorBrush()
                    {
                        Color = Colors.White
                    },
                    Text = "I'm lyrics window.",
                    HorizontalAlignment = HorizontalAlignment.Center,
                    VerticalAlignment   = VerticalAlignment.Center,
                    FontSize            = 20
                };
                rootContainer.Children.Add(lyricTextBlock);
                Window.Current.Content = rootContainer;
                Window.Current.Activate();
                #endregion

                #region Show the LyricsView as standalone
                var currentWindow = CoreWindow.GetForCurrentThread();
                var viewId        = ApplicationView.GetApplicationViewIdForWindow(currentWindow);
                var viewShown     = await ApplicationViewSwitcher.TryShowAsStandaloneAsync(viewId, ViewSizePreference.Default, mainViewId, ViewSizePreference.Default);
                #endregion

                #region Set the LyricsView as CompactOverlay mode
                await LyricsView.TryEnterViewModeAsync(ApplicationViewMode.CompactOverlay);
                #endregion
            });

            #endregion
        }
예제 #5
0
        private void ToggleFullScreenWhenApplicationViewShowWithStandalone()
        {
            CurrentViewScheduler.Schedule(() =>
            {
                ApplicationView currentView = Windows.UI.ViewManagement.ApplicationView.GetForCurrentView();

                if (Services.Helpers.DeviceTypeHelper.IsMobile || Services.Helpers.DeviceTypeHelper.IsDesktop)
                {
                    if (NowPlaying)
                    {
                        if (IsPlayerSmallWindowModeEnabled)
                        {
                            if (currentView.IsFullScreenMode)
                            {
                                currentView.ExitFullScreenMode();
                            }
                        }
                        else if (currentView.AdjacentToLeftDisplayEdge && currentView.AdjacentToRightDisplayEdge)
                        {
                            currentView.TryEnterFullScreenMode();
                        }
                    }
                    else
                    {
                        // プレイヤーを閉じた時にCompactOverlayも解除する
                        if (ApiInformation.IsApiContractPresent("Windows.Foundation.UniversalApiContract", 4))
                        {
                            if (currentView.IsViewModeSupported(ApplicationViewMode.CompactOverlay) &&
                                currentView.ViewMode == ApplicationViewMode.CompactOverlay)
                            {
                                _ = currentView.TryEnterViewModeAsync(ApplicationViewMode.Default);
                            }
                        }

                        if (!IsPlayerSmallWindowModeEnabled)
                        {
                            if (IsPlayerShowWithPrimaryView && IsMainView)
                            {
                                if (ApplicationView.PreferredLaunchWindowingMode != ApplicationViewWindowingMode.FullScreen)
                                {
                                    currentView.ExitFullScreenMode();
                                }
                            }
                        }
                    }
                }
            });
        }
예제 #6
0
        private async void OnKeyDown(object sender, KeyRoutedEventArgs e)
        {
            ApplicationView applicationView = ApplicationView.GetForCurrentView();

            if (e.Key == Windows.System.VirtualKey.Escape && applicationView.IsFullScreenMode)
            {
                applicationView.ExitFullScreenMode();
            }
            else if (e.Key == Windows.System.VirtualKey.Escape && applicationView.ViewMode == ApplicationViewMode.CompactOverlay)
            {
                MyCanvas.Margin = new Thickness(-16, -8, -16, -8);
                await applicationView.TryEnterViewModeAsync(ApplicationViewMode.Default);
            }
            else if (e.Key == Windows.System.VirtualKey.Space)
            {
                TogglePlaying();
            }
        }
예제 #7
0
        public WindowService(IScheduler scheduler)
        {
            _scheduler = scheduler;

            _applicationView = ApplicationView.GetForCurrentView();

            IsFullScreen = new ReactiveProperty <bool>(_scheduler, _applicationView.IsFullScreenMode, ReactivePropertyMode.DistinctUntilChanged);
            IsFullScreen
            .Subscribe(isFullScreen =>
            {
                IsCompactOverlay.Value = false;

                if (isFullScreen)
                {
                    if (!_applicationView.TryEnterFullScreenMode())
                    {
                        IsFullScreen.Value = false;
                    }
                }
                else
                {
                    _applicationView.ExitFullScreenMode();
                }
            })
            .AddTo(_disposables);


            if (ApiInformation.IsApiContractPresent("Windows.Foundation.UniversalApiContract", 4))
            {
                IsCompactOverlay = new ReactiveProperty <bool>(_scheduler,
                                                               _applicationView.ViewMode == ApplicationViewMode.CompactOverlay
                                                               );

                // This device supports all APIs in UniversalApiContract version 2.0
                IsCompactOverlay
                .Subscribe(async isCompactOverlay =>
                {
                    if (_applicationView.IsViewModeSupported(ApplicationViewMode.CompactOverlay))
                    {
                        if (isCompactOverlay)
                        {
                            ViewModePreferences compactOptions = ViewModePreferences.CreateDefault(ApplicationViewMode.CompactOverlay);
                            compactOptions.CustomSize          = new Windows.Foundation.Size(500, 280);

                            var result = await _applicationView.TryEnterViewModeAsync(ApplicationViewMode.CompactOverlay, compactOptions);
                            if (result)
                            {
                                _applicationView.TitleBar.ButtonBackgroundColor         = Colors.Transparent;
                                _applicationView.TitleBar.ButtonInactiveBackgroundColor = Colors.Transparent;
                            }
                        }
                        else
                        {
                            var result = await _applicationView.TryEnterViewModeAsync(ApplicationViewMode.Default);
                        }
                    }
                })
                .AddTo(_disposables);
            }
            else
            {
                IsCompactOverlay = new ReactiveProperty <bool>(_scheduler, false);
            }
        }