private static void mediaCollectionViewChangedCallback(DependencyObject d, DependencyPropertyChangedEventArgs e) { MediaStateInfoView view = (MediaStateInfoView)d; if (e.OldValue != null) { MediaStateCollectionView oldState = (MediaStateCollectionView)e.OldValue; WeakEventManager <MediaViewer.Model.Media.Base.State.MediaState, PropertyChangedEventArgs> .RemoveHandler(oldState.MediaState, "PropertyChanged", view.mediaState_PropertyChanged); WeakEventManager <INotifyPropertyChanged, PropertyChangedEventArgs> .RemoveHandler(oldState.MediaState.UIMediaCollection, "PropertyChanged", view.uiMediaCollection_PropertyChanged); WeakEventManager <MediaStateCollectionView, EventArgs> .RemoveHandler(oldState, "SelectionChanged", view.selectionChanged); } if (e.NewValue != null) { MediaStateCollectionView newState = (MediaStateCollectionView)e.NewValue; WeakEventManager <MediaViewer.Model.Media.Base.State.MediaState, PropertyChangedEventArgs> .AddHandler(newState.MediaState, "PropertyChanged", view.mediaState_PropertyChanged); WeakEventManager <INotifyPropertyChanged, PropertyChangedEventArgs> .AddHandler(newState.MediaState.UIMediaCollection, "PropertyChanged", view.uiMediaCollection_PropertyChanged); WeakEventManager <MediaStateCollectionView, EventArgs> .AddHandler(newState, "SelectionChanged", view.selectionChanged); view.initialize(newState.MediaState); } }
private void selectionChanged(object sender, EventArgs e) { MediaStateCollectionView view = sender as MediaStateCollectionView; Dispatcher.BeginInvoke(new Action(() => { List <MediaItem> selectedItems = view.getSelectedItems(); long totalSizeBytes = 0; int nrSelectedItems = selectedItems.Count; foreach (MediaItem item in selectedItems) { if (item.Metadata != null) { totalSizeBytes += item.Metadata.SizeBytes; } } String info = selectedItems.Count + " selected"; if (nrSelectedItems > 0) { info += " (" + MiscUtils.formatSizeBytes(totalSizeBytes) + ")"; } nrItemsSelectedLabel.Content = info; })); }
public void OnNavigatedTo(NavigationContext navigationContext) { ICollection <MediaItem> selectedItems = MediaStateCollectionView.getSelectedItems(); MediaStateCollectionView.SelectionChanged += mediaState_SelectionChanged; EventAggregator.GetEvent <MediaSelectionEvent>().Subscribe(selectItems, ThreadOption.UIThread, false, selection => selection.SenderId.Equals(MediaStateCollectionView.Guid)); String location = (String)navigationContext.Parameters["location"]; if (!String.IsNullOrEmpty(location)) { MediaFileItem item = MediaFileItem.Factory.create(location); if (selectedItems.Count > 0 && selectedItems.ElementAt(0).Equals(item)) { // Send a selection event in the case the media is already selected // to inform other views EventAggregator.GetEvent <MediaSelectionEvent>().Publish(new MediaSelectionPayload(MediaStateCollectionView.Guid, item)); } else { selectItems(new MediaSelectionPayload(MediaStateCollectionView.Guid, item)); } } else { //MediaStateCollectionView.refresh(); } }
private void mediaState_SelectionChanged(object sender, EventArgs e) { List <MediaItem> items = new List <MediaItem>(); MediaStateCollectionView.EnterReadLock(); try { items = MediaStateCollectionView.getSelectedItems_RLock(); if (items.Count == 0) { CurrentPage = null; } else { CurrentPage = MediaStateCollectionView.IndexOf(new SelectableMediaItem(items[0])) + 1; } } finally { MediaStateCollectionView.ExitReadLock(); EventAggregator.GetEvent <MediaSelectionEvent>().Publish(new MediaSelectionPayload(MediaStateCollectionView.Guid, items)); } }
void mediaStateCollectionView_SelectionChanged(object sender, EventArgs e) { List <MediaItem> mediaItems = MediaStateCollectionView.getSelectedItems(); List <YoutubeItem> youtubeItems = new List <YoutubeItem>(); foreach (MediaItem item in mediaItems) { youtubeItems.Add(item as YoutubeItem); } EventAggregator.GetEvent <SelectionEvent>().Publish(youtubeItems); }
public TagItem(Tag tag, MediaStateCollectionView mediaCollectionView) { this.tag = tag; Name = tag.Name; Count = 1; TagItem item = mediaCollectionView.TagFilter.Find((i) => i.Name.Equals(Name)); if (item != null) { if(item.IsIncluded) IsIncluded = true; if(item.IsExcluded) IsExcluded = true; } }
private void mediaGridItem_Click(object sender, SelectableMediaItem selectableItem) { if (Keyboard.Modifiers == ModifierKeys.Control) { selectableItem.IsSelected = !selectableItem.IsSelected; } else if (Keyboard.Modifiers == ModifierKeys.Shift) { MediaStateCollectionView.selectRange(selectableItem.Item); } else { MediaStateCollectionView.selectExclusive(selectableItem.Item); } }
private static void mediaStateCollectionViewChangedCallback(DependencyObject d, DependencyPropertyChangedEventArgs e) { MediaGridView view = (MediaGridView)d; if (e.OldValue != null) { MediaStateCollectionView oldCollectionView = (MediaStateCollectionView)e.OldValue; WeakEventManager <MediaStateCollectionView, EventArgs> .RemoveHandler(oldCollectionView, "Cleared", view.mediaGridViewModel_Cleared); } if (e.NewValue != null) { MediaStateCollectionView newCollectionView = (MediaStateCollectionView)e.NewValue; WeakEventManager <MediaStateCollectionView, EventArgs> .AddHandler(newCollectionView, "Cleared", view.mediaGridViewModel_Cleared); } }
void selectItems(MediaSelectionPayload selection) { ICollection <MediaItem> selectedItems = MediaStateCollectionView.getSelectedItems(); if (Enumerable.SequenceEqual(selection.Items, selectedItems)) { return; } if (selection.Items.Count() == 0) { MediaStateCollectionView.deselectAll(); } else { MediaStateCollectionView.selectExclusive(selection.Items.ElementAt(0)); } }
private static void mediaStateCollectionViewChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { MediaStackPanelView view = (MediaStackPanelView)d; if (e.OldValue != null) { MediaStateCollectionView collectionView = (MediaStateCollectionView)e.OldValue; collectionView.SelectionChanged -= view.mediaStateCollectionView_SelectionChanged; } if (e.NewValue != null) { MediaStateCollectionView collectionView = (MediaStateCollectionView)e.NewValue; collectionView.SelectionChanged += view.mediaStateCollectionView_SelectionChanged; } }
private void mediaStateCollectionView_SelectionChanged(object sender, EventArgs e) { MediaStateCollectionView view = sender as MediaStateCollectionView; Dispatcher.BeginInvoke(new Action(() => { ICollection <MediaItem> selectedItems = view.getSelectedItems(); if (selectedItems.Count == 0) { return; } scrollToIndex = view.IndexOf(new SelectableMediaItem(selectedItems.ElementAt(0))); if (scrollViewer != null) { scrollViewer.ScrollToHorizontalOffset(scrollToIndex); } })); }
public TagItem(Tag tag, MediaStateCollectionView mediaCollectionView) { this.tag = tag; Name = tag.Name; Count = 1; TagItem item = mediaCollectionView.TagFilter.Find((i) => i.Name.Equals(Name)); if (item != null) { if (item.IsIncluded) { IsIncluded = true; } if (item.IsExcluded) { IsExcluded = true; } } }
public void OnNavigatedTo(NavigationContext navigationContext) { MediaStateCollectionView.SelectionChanged += MediaStateCollectionView_SelectionChanged; List <MediaItem> selectedItems = MediaStateCollectionView.getSelectedItems(); EventAggregator.GetEvent <MediaSelectionEvent>().Publish(new MediaSelectionPayload(MediaStateCollectionView.Guid, selectedItems)); // restore state if (MediaStateCollectionView.MediaFilter != PrevFilterMode) { MediaItem item = null; MediaStateCollectionView.getSelectedItem(out item); MediaStateCollectionView.FilterModes.MoveCurrentTo(PrevFilterMode); if (item != null) { MediaStateCollectionView.setIsSelected(item, true); } } }
private void mediaState_NrItemsInStateChanged(object sender, EventArgs e) { MediaStateCollectionView.EnterReadLock(); try { NrPages = MediaStateCollectionView.Count(); MediaItem selectedItem; int index = MediaStateCollectionView.getSelectedItem_RLock(out selectedItem); if (index != -1 && (index + 1) != CurrentPage) { CurrentPage = index + 1; } } finally { MediaStateCollectionView.ExitReadLock(); } }
public GeotagFileBrowserViewModel(MediaStateCollectionView mediaFileState, IEventAggregator eventAggregator) { Map = new Map(); Map.CredentialsProvider = new ApplicationIdCredentialsProvider(BingMapsKey.Key); Map.CredentialsProvider.GetCredentials((c) => { BingMapsKey.SessionKey = c.ApplicationId; }); //Map.PreviewMouseWheel += map_PreviewMouseWheel; Map.PreviewMouseDoubleClick += map_PreviewMouseDoubleClick; MediaCollectionView = mediaFileState; EventAggregator = eventAggregator; IsRoadMode = true; MapRoadModeCommand = new Command(() => { Map.Mode = new RoadMode(); IsRoadMode = true; IsAerialMode = false; IsAerialModeWithLabels = false; }); MapAerialModeCommand = new Command(() => { Map.Mode = new AerialMode(false); IsRoadMode = false; IsAerialMode = true; IsAerialModeWithLabels = false; }); MapAerialModeWithLabelsCommand = new Command(() => { Map.Mode = new AerialMode(true); IsRoadMode = false; IsAerialMode = false; IsAerialModeWithLabels = true; }); ResetMapViewCommand = new Command(() => { Map.ZoomLevel = 1; Map.Center = new Location((Location.MaxLatitude + Location.MinLatitude) / 2, (Location.MaxLongitude + Location.MinLongitude) / 2); }); MapViewSelectedCommand = new Command(() => { foreach(Pushpin pin in pinLayer.Children) { if (pin.Background.Equals(selectedPushpinBackground)) { Map.Center = pin.Location; Map.ZoomLevel = 12; return; } } }); MediaThumbnailModeCommand = new Command(() => { imageLayer.Visibility = Visibility.Visible; pinLayer.Visibility = Visibility.Collapsed; IsMediaThumbnailMode = true; IsMediaPinMode = false; }); MediaPinModeCommand = new Command(() => { imageLayer.Visibility = Visibility.Collapsed; pinLayer.Visibility = Visibility.Visible; IsMediaThumbnailMode = false; IsMediaPinMode = true; }); Pushpin dummy = new Pushpin(); defaultPushpinBackground = dummy.Background; selectedPushpinBackground = new SolidColorBrush(Colors.Red); defaultImageBackground = new SolidColorBrush(Colors.Black); selectedImageBackground = new SolidColorBrush(Colors.Red); imageLayer = new MapLayer(); pinLayer = new MapLayer(); Map.Children.Add(imageLayer); Map.Children.Add(pinLayer); MediaPinModeCommand.Execute(); }
public ImageSearchViewModel() { NrColumns = 4; SearchCommand = new AsyncCommand <int>(async(imageOffset) => { try { if (imageOffset == 0) { CurrentQuery = new ImageSearchQuery(this); } SearchCommand.IsExecutable = false; await doSearch(CurrentQuery, imageOffset); } catch (Exception e) { MessageBox.Show("Image search error\n\n" + e.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error); } finally { SearchCommand.IsExecutable = true; } }); ViewCommand = new Command <SelectableMediaItem>((selectableItem) => { ImageResultItem item = (ImageResultItem)selectableItem.Item; if (item.ImageInfo.ContentType.Equals("image/animatedgif")) { Shell.ShellViewModel.navigateToVideoView(item); } else { Shell.ShellViewModel.navigateToImageView(item); } }); ViewSourceCommand = new Command <SelectableMediaItem>((selectableItem) => { ImageResultItem item = (ImageResultItem)selectableItem.Item; Process.Start(item.ImageInfo.SourceUrl); }); SelectAllCommand = new Command(() => { MediaStateCollectionView.selectAll(); }, false); DeselectAllCommand = new Command(() => { MediaStateCollectionView.deselectAll(); }); CloseCommand = new Command(() => { OnClosingRequest(); }); DownloadCommand = new AsyncCommand <SelectableMediaItem>(async(selectableItem) => { List <MediaItem> items = MediaStateCollectionView.getSelectedItems(); if (items.Count == 0) { items.Add(selectableItem.Item); } String outputPath = null; switch (ImageSearchPlugin.Properties.Settings.Default.ImageSaveMode) { case MediaViewer.Infrastructure.Constants.SaveLocation.Current: { outputPath = MediaFileWatcher.Instance.Path; break; } case MediaViewer.Infrastructure.Constants.SaveLocation.Ask: { DirectoryPickerView directoryPicker = new DirectoryPickerView(); directoryPicker.DirectoryPickerViewModel.InfoString = "Select Output Directory"; directoryPicker.DirectoryPickerViewModel.SelectedPath = MediaFileWatcher.Instance.Path; if (directoryPicker.ShowDialog() == false) { return; } outputPath = directoryPicker.DirectoryPickerViewModel.SelectedPath; break; } case MediaViewer.Infrastructure.Constants.SaveLocation.Fixed: { outputPath = ImageSearchPlugin.Properties.Settings.Default.FixedDownloadPath; break; } default: break; } CancellableOperationProgressView progressView = new CancellableOperationProgressView(); DownloadProgressViewModel vm = new DownloadProgressViewModel(); progressView.DataContext = vm; progressView.Show(); vm.OkCommand.IsExecutable = false; vm.CancelCommand.IsExecutable = true; try { await Task.Factory.StartNew(() => { vm.startDownload(outputPath, items); }, vm.CancellationToken); } catch (Exception) { } vm.OkCommand.IsExecutable = true; vm.CancelCommand.IsExecutable = false; }); SettingsViewModel = (ImageSearchSettingsViewModel)ServiceLocator.Current.GetInstance(typeof(ImageSearchSettingsViewModel)); Size = new ListCollectionView(size); Size.MoveCurrentTo(Settings.Default.Size); SafeSearch = new ListCollectionView(safeSearch); SafeSearch.MoveCurrentTo(Settings.Default.SafeSearch); Layout = new ListCollectionView(layout); Layout.MoveCurrentTo(Settings.Default.Layout); Type = new ListCollectionView(type); Type.MoveCurrentTo(Settings.Default.Type); People = new ListCollectionView(people); People.MoveCurrentTo(Settings.Default.People); Color = new ListCollectionView(color); Color.MoveCurrentTo(Settings.Default.Color); GeoTag = new GeoTagCoordinatePair(); MediaState = new MediaState(); MediaStateCollectionView = new ImageResultCollectionView(MediaState); MediaStateCollectionView.MediaState.MediaStateType = MediaStateType.SearchResult; WeakEventManager <MediaLockedCollection, EventArgs> .AddHandler(MediaStateCollectionView.MediaState.UIMediaCollection, "IsLoadingChanged", mediaCollection_IsLoadingChanged); }
public GeotagFileBrowserViewModel(MediaStateCollectionView mediaFileState, IEventAggregator eventAggregator) { Map = new Map(); Map.CredentialsProvider = new ApplicationIdCredentialsProvider(BingMapsKey.Key); Map.CredentialsProvider.GetCredentials((c) => { BingMapsKey.SessionKey = c.ApplicationId; }); //Map.PreviewMouseWheel += map_PreviewMouseWheel; Map.PreviewMouseDoubleClick += map_PreviewMouseDoubleClick; MediaCollectionView = mediaFileState; EventAggregator = eventAggregator; IsRoadMode = true; MapRoadModeCommand = new Command(() => { Map.Mode = new RoadMode(); IsRoadMode = true; IsAerialMode = false; IsAerialModeWithLabels = false; }); MapAerialModeCommand = new Command(() => { Map.Mode = new AerialMode(false); IsRoadMode = false; IsAerialMode = true; IsAerialModeWithLabels = false; }); MapAerialModeWithLabelsCommand = new Command(() => { Map.Mode = new AerialMode(true); IsRoadMode = false; IsAerialMode = false; IsAerialModeWithLabels = true; }); ResetMapViewCommand = new Command(() => { Map.ZoomLevel = 1; Map.Center = new Location((Location.MaxLatitude + Location.MinLatitude) / 2, (Location.MaxLongitude + Location.MinLongitude) / 2); }); MapViewSelectedCommand = new Command(() => { foreach (Pushpin pin in pinLayer.Children) { if (pin.Background.Equals(selectedPushpinBackground)) { Map.Center = pin.Location; Map.ZoomLevel = 12; return; } } }); MediaThumbnailModeCommand = new Command(() => { imageLayer.Visibility = Visibility.Visible; pinLayer.Visibility = Visibility.Collapsed; IsMediaThumbnailMode = true; IsMediaPinMode = false; }); MediaPinModeCommand = new Command(() => { imageLayer.Visibility = Visibility.Collapsed; pinLayer.Visibility = Visibility.Visible; IsMediaThumbnailMode = false; IsMediaPinMode = true; }); Pushpin dummy = new Pushpin(); defaultPushpinBackground = dummy.Background; selectedPushpinBackground = new SolidColorBrush(Colors.Red); defaultImageBackground = new SolidColorBrush(Colors.Black); selectedImageBackground = new SolidColorBrush(Colors.Red); imageLayer = new MapLayer(); pinLayer = new MapLayer(); Map.Children.Add(imageLayer); Map.Children.Add(pinLayer); MediaPinModeCommand.Execute(); }
protected void MediaStateCollectionView_SelectionChanged(object sender, EventArgs e) { List <MediaItem> selectedItems = MediaStateCollectionView.getSelectedItems(); EventAggregator.GetEvent <MediaSelectionEvent>().Publish(new MediaSelectionPayload(MediaStateCollectionView.Guid, selectedItems)); }
void initialize(IEventAggregator eventAggregator) { IsVisible = false; IsEnabled = true; NrPages = 0; CurrentPage = null; IsPagingEnabled = false; EventAggregator = eventAggregator; NextPageCommand = new Command(() => { MediaStateCollectionView.EnterWriteLock(); try { int nrItems = MediaStateCollectionView.Count(); if (nrItems > 0) { MediaItem selectedItem; int index = MediaStateCollectionView.getSelectedItem_RLock(out selectedItem); if (selectedItem != null) { if (index + 1 < nrItems) { MediaStateCollectionView.selectExclusive_WLock(MediaStateCollectionView.ElementAt(index + 1).Item); } } } } finally { MediaStateCollectionView.ExitWriteLock(); } }); PrevPageCommand = new Command(() => { MediaStateCollectionView.EnterWriteLock(); try { int nrItems = MediaStateCollectionView.Count(); if (nrItems > 0) { MediaItem selectedItem; int index = MediaStateCollectionView.getSelectedItem_RLock(out selectedItem); if (selectedItem != null) { if (index - 1 >= 0) { MediaStateCollectionView.selectExclusive_WLock(MediaStateCollectionView.ElementAt(index - 1).Item); } } } } finally { MediaStateCollectionView.ExitWriteLock(); } }); FirstPageCommand = new Command(() => { MediaStateCollectionView.EnterWriteLock(); try { if (MediaStateCollectionView.Count() > 0) { MediaStateCollectionView.selectExclusive_WLock(MediaStateCollectionView.ElementAt(0).Item); } } finally { MediaStateCollectionView.ExitWriteLock(); } }); LastPageCommand = new Command(() => { MediaStateCollectionView.EnterWriteLock(); try { if (MediaStateCollectionView.Count() > 0) { int lastIndex = MediaStateCollectionView.Count() - 1; MediaStateCollectionView.selectExclusive_WLock(MediaStateCollectionView.ElementAt(lastIndex).Item); } } finally { MediaStateCollectionView.ExitWriteLock(); } }); BrowseLocationCommand = new Command <SelectableMediaItem>((selectableItem) => { MediaItem item = selectableItem.Item; String location = FileUtils.getPathWithoutFileName(item.Location); EventAggregator.GetEvent <MediaBrowserPathChangedEvent>().Publish(location); }); OpenLocationCommand = new Command <SelectableMediaItem>((selectableItem) => { MediaItem item = selectableItem.Item; String location = FileUtils.getPathWithoutFileName(item.Location); Process.Start(location); }); DeleteCommand = new Command <SelectableMediaItem>((selectableItem) => { if (MessageBox.Show("Delete:\n\n" + selectableItem.Item.Location, "Delete file", MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.No) == MessageBoxResult.Yes) { List <MediaFileItem> item = new List <MediaFileItem>(); item.Add(selectableItem.Item as MediaFileItem); CancellationTokenSource tokenSource = new CancellationTokenSource(); (MediaStateCollectionView.MediaState as MediaFileState).delete(item, tokenSource.Token); } }); MediaStateCollectionView.NrItemsInStateChanged += mediaState_NrItemsInStateChanged; MediaStateCollectionView.ItemResorted += mediaState_ItemResorted; }