示例#1
0
        public ShellViewModel(MediaFileWatcher mediaFileWatcher, IRegionManager regionManager, IEventAggregator eventAggregator)
        {
            RegionManager   = regionManager;
            EventAggregator = eventAggregator;

            ImageViewModel = new ImagePanel.ImageViewModel(eventAggregator);
            ImageViewModel.SelectedScaleMode = UserControls.ImagePanel.ScaleMode.UNSCALED;

            imageMediaStackPanelViewModel = new MediaFileStackPanelViewModel(MediaFileWatcher.Instance.MediaFileState, EventAggregator);
            imageMediaStackPanelViewModel.MediaStateCollectionView.FilterModes.MoveCurrentTo(MediaFilterMode.Images);

            VideoViewModel = new VideoPanel.VideoViewModel(EventAggregator);

            videoMediaStackPanelViewModel = new MediaFileStackPanelViewModel(MediaFileWatcher.Instance.MediaFileState, EventAggregator);
            videoMediaStackPanelViewModel.MediaStateCollectionView.FilterModes.MoveCurrentTo(MediaFilterMode.Video);

            MediaFileBrowserViewModel = new MediaFileBrowserViewModel(mediaFileWatcher, regionManager, eventAggregator);

            VideoPlayerViewModel.setLibAVLogCallback(Logger.Log);
            VideoPlayerViewModel.enableLibAVLogging(LogMessageModel.LogLevel.INFO);

            createDatabase();

            VideoPlayer2.VideoPlayer2Test test = new VideoPlayer2.VideoPlayer2Test();
            //test.Test();

            //TestWindow window = new TestWindow();
            //window.Show();
        }
示例#2
0
        public void navigateToMediaStackPanelView(MediaFileStackPanelViewModel viewModel, String location = null)
        {
            Uri MediaFileStackPanelViewUri = new Uri(typeof(MediaFileStackPanelView).FullName, UriKind.Relative);

            NavigationParameters navigationParams = new NavigationParameters();

            navigationParams.Add("viewModel", viewModel);
            navigationParams.Add("location", location);

            RegionManager.RequestNavigate(RegionNames.MainMediaSelectionRegion, MediaFileStackPanelViewUri, navigationParams);
        }
示例#3
0
        public MediaFileBrowserViewModel(MediaFileWatcher mediaFileWatcher, IRegionManager regionManager, IEventAggregator eventAggregator)
        {
            MediaFileWatcher = mediaFileWatcher;
            RegionManager    = regionManager;
            EventAggregator  = eventAggregator;

            MediaFileGridViewModel = new MediaFileGridViewModel(mediaFileWatcher.MediaFileState, EventAggregator);

            ImageViewModel = new MediaFileBrowserImagePanelViewModel(eventAggregator);
            ImageViewModel.SelectedScaleMode = MediaViewer.UserControls.ImagePanel.ScaleMode.FIT_HEIGHT_AND_WIDTH;

            imageMediaStackPanelViewModel           = new MediaFileStackPanelViewModel(MediaFileGridViewModel.MediaStateCollectionView, EventAggregator);
            imageMediaStackPanelViewModel.IsVisible = true;

            VideoViewModel = new VideoPanel.VideoViewModel(EventAggregator);

            videoMediaStackPanelViewModel           = new MediaFileStackPanelViewModel(MediaFileGridViewModel.MediaStateCollectionView, EventAggregator);
            videoMediaStackPanelViewModel.IsVisible = true;

            GeotagFileBrowserViewModel = new GeotagFileBrowserViewModel(MediaFileGridViewModel.MediaStateCollectionView, EventAggregator);

            GeotagFileBrowserStackPanelViewModel           = new MediaFileStackPanelViewModel(MediaFileGridViewModel.MediaStateCollectionView, EventAggregator);
            GeotagFileBrowserStackPanelViewModel.IsVisible = true;

            DeleteSelectedItemsCommand = new Command(new Action(deleteSelectedItems));

            ImportSelectedItemsCommand = new Command(() =>
            {
                ImportView import  = new ImportView();
                import.DataContext = new ImportViewModel(MediaFileWatcher.Instance);
                import.ShowDialog();
            });

            ExportSelectedItemsCommand = new Command(() =>
            {
                ImportView export  = new ImportView();
                export.DataContext = new ExportViewModel(MediaFileWatcher.Instance);
                export.ShowDialog();
            });

            ExpandCommand = new Command <MediaFileItem>((item) =>
            {
                if (item == null)
                {
                    if (SelectedItems.Count == 0)
                    {
                        return;
                    }

                    item = SelectedItems.ElementAt(0) as MediaFileItem;
                }

                if (item.Metadata is ImageMetadata)
                {
                    navigateToImageView(item);
                }
                else if (item.Metadata is VideoMetadata ||
                         item.Metadata is AudioMetadata)
                {
                    navigateToVideoView(item);
                }
            });

            ContractCommand = new Command(() =>
            {
                NavigateBackCommand.Execute(null);
            });

            ContractCommand.IsExecutable = false;

            NavigateToGeotagFileBrowserCommand = new Command(() =>
            {
                navigateToGeotagFileBrowser();
            });

            CreateImageCollageCommand = new Command(() =>
            {
                if (SelectedItems.Count == 0)
                {
                    return;
                }

                ImageCollageView collage = new ImageCollageView();

                collage.ViewModel.Media = SelectedItems;
                collage.ShowDialog();
            });

            TranscodeVideoCommand = new Command(() =>
            {
                if (SelectedItems.Count == 0)
                {
                    return;
                }

                VideoTranscodeView transcode = new VideoTranscodeView();
                List <VideoAudioPair> items  = new List <VideoAudioPair>();
                foreach (MediaItem item in SelectedItems)
                {
                    items.Add(new VideoAudioPair(item));
                }

                transcode.ViewModel.Items      = items;
                transcode.ViewModel.OutputPath = MediaFileWatcher.Path;

                transcode.ShowDialog();
            });

            TranscodeImageCommand = new Command(() =>
            {
                if (SelectedItems.Count == 0)
                {
                    return;
                }

                ImageTranscodeView transcode   = new ImageTranscodeView();
                transcode.ViewModel.Items      = SelectedItems;
                transcode.ViewModel.OutputPath = MediaFileWatcher.Path;

                transcode.ShowDialog();
            });

            CreateVideoPreviewImagesCommand = new Command(() =>
            {
                if (SelectedItems.Count == 0)
                {
                    return;
                }

                VideoPreviewImageView preview = new VideoPreviewImageView();

                preview.ViewModel.Media = SelectedItems;
                preview.ShowDialog();
            });

            CreateTorrentFileCommand = new Command(() =>
            {
                //if (SelectedItems.Count == 0) return;

                try
                {
                    TorrentCreationView torrent = new TorrentCreationView();

                    torrent.ViewModel.PathRoot = mediaFileWatcher.Path;
                    torrent.ViewModel.Media    = new ObservableCollection <MediaFileItem>(SelectedItems);

                    torrent.ShowDialog();
                }
                catch (Exception e)
                {
                    MessageBox.Show(e.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error);
                }
            });



            NavigateToMediaFileGridCommand = new Command(navigateToMediaFileGrid);
            NavigateToImageViewCommand     = new Command <MediaFileItem>(navigateToImageView);
            NavigateToVideoViewCommand     = new Command <MediaFileItem>(navigateToVideoView);

            NavigateBackCommand = NavigateToMediaFileGridCommand;

            SelectedItems = new List <MediaFileItem>();

            EventAggregator.GetEvent <MediaSelectionEvent>().Subscribe(mediaFileBrowser_MediaSelectionEvent);
        }