void clear() { Filename = ""; ReplaceFilename = ""; Location = ""; Rating = 0; Title = ""; Description = ""; Author = ""; Copyright = ""; Creation = null; IsImported = false; Geotag = new GeoTagCoordinatePair(); lock (itemsLock) { DynamicProperties.Clear(); } SelectedMetaDataPreset = noPresetMetaData; lock (tagsLock) { Tags.Clear(); } lock (addTagsLock) { AddTags.Clear(); } lock (removeTagsLock) { RemoveTags.Clear(); } }
private static void coordinateChangedCallback(DependencyObject d, DependencyPropertyChangedEventArgs e) { GeoTagEditorView view = (GeoTagEditorView)d; if (e.OldValue != null) { GeoTagCoordinatePair coord = (GeoTagCoordinatePair)e.OldValue; WeakEventManager <GeoTagCoordinatePair, EventArgs> .RemoveHandler(coord, "GeoTagChanged", view.coordinateChanged); } if (e.NewValue != null) { GeoTagCoordinatePair coord = (GeoTagCoordinatePair)e.NewValue; view.showValues(true); WeakEventManager <GeoTagCoordinatePair, EventArgs> .AddHandler(coord, "GeoTagChanged", view.coordinateChanged); view.IsToolTipLocationSet = false; } }
void grabData() { if (items.Count == 1 && Items.ElementAt(0).Metadata != null) { MediaFileItem media = Items.ElementAt(0); BaseMetadata metadata = media.Metadata; if (metadata.SupportsXMPMetadata == false) { clear(); } Filename = Path.GetFileNameWithoutExtension(metadata.Name); Location = metadata.Path; DynamicProperties.Clear(); if (metadata is ImageMetadata) { getImageProperties(DynamicProperties, metadata as ImageMetadata); } if (metadata is VideoMetadata) { getVideoProperties(DynamicProperties, metadata as VideoMetadata); } else if (metadata is AudioMetadata) { getAudioProperties(DynamicProperties, metadata as AudioMetadata); } Rating = metadata.Rating == null ? null : new Nullable <double>(metadata.Rating.Value / 5); Title = metadata.Title; Description = metadata.Description; Author = metadata.Author; Copyright = metadata.Copyright; Creation = metadata.CreationDate; IsImported = metadata.IsImported; IsReadOnly = media.IsReadOnly || !metadata.SupportsXMPMetadata || metadata is UnknownMetadata; Geotag = new GeoTagCoordinatePair(metadata.Latitude, metadata.Longitude); lock (tagsLock) { Tags.Clear(); foreach (Tag tag in metadata.Tags) { Tags.Add(tag); } } getExifProperties(DynamicProperties, metadata); SelectedMetaDataPreset = noPresetMetaData; IsEnabled = true; BatchMode = false; } else if (items.Count > 1 && BatchMode == true) { } else { if (items.Count > 1) { IsEnabled = true; BatchMode = true; IsReadOnly = false; clear(); } else if (items.Count == 0) { BatchMode = false; IsEnabled = false; IsReadOnly = true; IsRegexEnabled = false; clear(); } } }
void mapAddItem(SelectableMediaItem media) { MediaItem item = media.Item; item.EnterReadLock(); try { if (item.Metadata == null || item.HasGeoTag == false || mapContainsItem(item)) { return; } GeoTagCoordinatePair coord = new GeoTagCoordinatePair(item.Metadata.Latitude, item.Metadata.Longitude); if (!coord.IsEmpty) { Location itemLocation = new Location(coord.LatDecimal.Value, coord.LonDecimal.Value); Border border = new Border(); border.BorderThickness = new Thickness(8); border.Tag = item; border.MaxWidth = 100; border.MaxHeight = 100; if (media.IsSelected) { border.Background = selectedImageBackground; } else { border.Background = defaultImageBackground; } Image image = new Image(); image.Tag = item; image.Source = item.Metadata.Thumbnail.Image; image.PreviewMouseDown += item_PreviewMouseDown; image.ToolTip = item.Metadata.DefaultFormatCaption; border.Child = image; imageLayer.AddChild(border, itemLocation, PositionOrigin.Center); Pushpin pin = new Pushpin(); pin.Tag = item; pin.ToolTip = item.Metadata.DefaultFormatCaption; pin.PreviewMouseDown += item_PreviewMouseDown; pin.Location = itemLocation; if (media.IsSelected) { pin.Background = selectedPushpinBackground; } else { pin.Background = defaultPushpinBackground; } pinLayer.AddChild(pin, itemLocation, PositionOrigin.BottomCenter); } } finally { item.ExitReadLock(); } }
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); }