Exemple #1
0
        public VideoPlayerControl()
        {
            InitializeComponent();

            _scrollDragger = new ScrollDragZoom(null, scrollPlayer);

            RecreateMediaElement(false);
        }
Exemple #2
0
        public MainWindow(string [] commandLine)
        {
            _commandLine = commandLine;
            Log.d("MediaPlayer.MkZ - MainWindow - c-tor");

            InitializeComponent();

            this.DataContext = Context;

            Context.PlayerVM            = _player.DataContext as VideoPlayerControlVM;
            Context.MediaPlayerCommands = _mediaPlayerCommands = new MediaPlayerCommands(this, enableKeyboardShortcuts: true);

            _cmbFilesList.Items.Clear();
            _cmbFilesList.ItemsSource = null;

            _controlsHideAndShow = new FadeAnimationHelper(this, 2, _imagesNavigation, _cursorArrow);

            _clock.Zoomable.EnableZoom(_scrollMain);
            _reiKiProgress.Zoomable.EnableZoom(_scrollMain);

            _zoomImage = new ScrollDragZoom(_imageBackground, _scrollMain);
            _zoomImage.FitWindow(0);

            Context.AppConfig.Settings.PropertyChanged          += Config_PropertyChanged;
            Context.AppConfig.MediaDatabaseInfo.PropertyChanged += MediaDatabaseInfo_PropertyChanged;

            _hideHeaderAnimationHelper = new GridLengthAnimationHelper(this, rowHeader);

            SystemEvents.PowerModeChanged += SystemEvents_PowerModeChanged;

            Context.AppConfig.Load();

            //add or select file if exists
            ProcessCommandLine();

            MediaDB.OnPlayListSelectionChangedAction = (playList) =>
            {
                SetPlayList(playList);
            };

            _player.OnFullScreenButtonClick = (vm) => FullScreenToggle();
            _player.OnFileDropAction        = (fileNames) =>
            {
                AddNewMediaFiles(fileNames, PlayerVM.Volume > 0 ? PlayerVM.Volume : 0.3);
            };

            PlayerVM.MediaEndedAction  = (vm) => OnMediaEnded(vm);
            PlayerVM.MediaFailedAction = (vm, ex) => OnMediaFailed(vm, ex);

            Context.AppConfig.Settings.MainWindowState.RestoreTo(this);
            this.WindowState = WindowState.Normal; //always normal - to position on correct screen for maximize
        }
Exemple #3
0
        /// <summary>
        /// Sometimes MediaElement crashes - black window
        /// I will replace it with the new one
        /// </summary>
        internal void RecreateMediaElement(bool flipHorizontally)
        {
            try
            {
                if (VideoPlayerElement != null)
                {
                    VideoPlayerElement.Stop();
                    VideoPlayerElement.Close();
                    VideoPlayerElement.Clock  = null;
                    VideoPlayerElement.Source = null;
                    VideoPlayerElement.Volume = 0;
                    VideoPlayerElement        = null;
                    scrollPlayer.Content      = null;

                    GC.Collect();
                    GC.WaitForPendingFinalizers();
                }

                MediaState = MediaState.Manual;

                VideoPlayerElement                = new MediaElement();
                VideoPlayerElement.Width          = 1920;
                VideoPlayerElement.Height         = 1080;
                VideoPlayerElement.LoadedBehavior = MediaState.Manual;
                VideoPlayerElement.Stretch        = Stretch.Uniform;
                VideoPlayerElement.MouseWheel    += mePlayer_MouseWheel;

                Volume = 0; //reset

                scrollPlayer.Content = VideoPlayerElement;

                double vOff = _scrollDragger.VerticalOffset;
                double zoom = _scrollDragger.Zoom;

                _scrollDragger                = new ScrollDragZoom(VideoPlayerElement, scrollPlayer);
                _scrollDragger.Zoom           = zoom;
                _scrollDragger.VerticalOffset = vOff;

                _scrollDragger.SizeChangedAction = () =>
                {
                    txtVideoResolution.Text = string.Format("{0:0}x{1:0} ({2:0.0}%)",
                                                            VideoPlayerElement.ActualWidth, VideoPlayerElement.ActualHeight, 100.0 * _scrollDragger.Zoom);
                };

                //refresh view when change position
                VideoPlayerElement.ScrubbingEnabled = true;

                AddFlipXRenderTransform(VideoPlayerElement, flipHorizontally);

                VideoPlayerElement.MediaOpened += (s, e) =>
                {
                    double zoom_save = _scrollDragger.Zoom;
                    _scrollDragger.NaturalSize = new Size(VideoPlayerElement.NaturalVideoWidth, VideoPlayerElement.NaturalVideoHeight);
                    _scrollDragger.Zoom        = zoom_save;
                    MediaState = GetMediaState(VideoPlayerElement);
                    VideoStarted(this);
                };
                VideoPlayerElement.MediaEnded  += (s, e) => { VideoEnded(); };
                VideoPlayerElement.MediaFailed += (s, e) => { e.Handled = VideoFailed(e, VideoPlayerElement); };
            }
            catch (Exception err)
            {
                MessageBox.Show(err.ToString());
            }
        }