void addTags(SelectableMediaItem item, List <TagItem> tags) { if (item.Item.Metadata == null) { return; } item.Item.EnterReadLock(); try { foreach (Tag tag in item.Item.Metadata.Tags) { TagItem tagItem = new TagItem(tag, mediaCollectionView); int index = tags.IndexOf(tagItem); if (index == -1) { tags.Add(tagItem); } else { tags[index].Count += 1; } } } finally { item.Item.ExitReadLock(); } }
public override object getExtraInfo(SelectableMediaItem selectableItem) { String info = null; ImageResultItem item = (ImageResultItem)selectableItem.Item; SortItem sortItem = (SortItem)SortModes.CurrentItem; switch (sortItem.SortMode) { case SortMode.Width: case SortMode.Height: info = item.ImageInfo.Width + " x " + item.ImageInfo.Height; break; case SortMode.Size: info = MiscUtils.formatSizeBytes(item.ImageInfo.FileSize.Value); break; case SortMode.MimeType: info = item.ImageInfo.ContentType; break; case SortMode.Location: info = item.ImageInfo.SourceUrl; break; default: break; } return(info); }
static int onEquals(int result, SelectableMediaItem a, SelectableMediaItem b) { if (result == 0) { return(System.IO.Path.GetFileName(a.Item.Location).CompareTo(System.IO.Path.GetFileName(b.Item.Location))); } else { return(result); } }
private void MediaCollectionView_ItemPropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) { SelectableMediaItem item = (SelectableMediaItem)sender; if (e.PropertyName.Equals("Metadata")) { App.Current.Dispatcher.BeginInvoke(new Action(() => { mapRemoveItem(item); mapAddItem(item); })); } }
void mapRemoveItem(SelectableMediaItem media) { for (int i = 0; i < pinLayer.Children.Count; i++) { if ((pinLayer.Children[i] as FrameworkElement).Tag.Equals(media.Item)) { pinLayer.Children.RemoveAt(i); imageLayer.Children.RemoveAt(i); return; } } }
static int hasMediaTest(SelectableMediaItem a, SelectableMediaItem b) { if (a.Item.Metadata != null && b.Item.Metadata != null) { return(0); } if (a.Item.Metadata == null) { return(1); } else { return(-1); } }
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); } }
bool filterFunc(SelectableMediaItem item) { item.Item.EnterReadLock(); try { switch (MediaFilter) { case MediaFilterMode.None: break; case MediaFilterMode.Video: if (!(item.Item.Metadata is VideoMetadata)) { return(false); } break; case MediaFilterMode.Images: if (!(item.Item.Metadata is ImageMetadata)) { return(false); } break; case MediaFilterMode.Audio: if (!(item.Item.Metadata is AudioMetadata)) { return(false); } break; default: break; } bool result = tagFilter(item); return(result); } finally { item.Item.ExitReadLock(); } }
bool filterFunc(SelectableMediaItem selectableItem) { YoutubeItem item = (YoutubeItem)selectableItem.Item; switch ((FilterMode)FilterModes.CurrentItem) { case FilterMode.None: break; case FilterMode.Videos: if (!(item is YoutubeVideoItem)) { return(false); } break; case FilterMode.Channels: if (!(item is YoutubeChannelItem)) { return(false); } break; case FilterMode.Playlists: if (!(item is YoutubePlaylistItem)) { return(false); } break; default: break; } bool result = tagFilter(selectableItem); return(result); }
public override object getExtraInfo(SelectableMediaItem selectableItem) { String info = null; //string dateFormat = "MMM d, yyyy"; YoutubeItemMetadata metadata = (YoutubeItemMetadata)selectableItem.Item.Metadata; if (metadata == null) { return(info); } SortItem item = (SortItem)SortModes.CurrentItem; switch (item.SortMode) { case SortMode.Width: case SortMode.Height: if (metadata.Width.HasValue && metadata.Height.HasValue) { info = metadata.Width + " x " + metadata.Height; } break; case SortMode.MimeType: info = metadata.MimeType; break; case SortMode.Duration: if (metadata.DurationSeconds != null) { info = MiscUtils.formatTimeSeconds(metadata.DurationSeconds.Value); } break; case SortMode.Author: info = metadata.Author; break; case SortMode.PublishedAt: info = MiscUtils.formatTimeAgo(metadata.CreationDate.Value) + " ago"; break; case SortMode.ViewCount: if (metadata.ViewCount != null) { info = metadata.ViewCount.Value.ToString("#,##0", new CultureInfo("en-US")); } break; case SortMode.Rating: if (metadata.Rating != null) { return(RatingCache.RatingBitmap[(int)(metadata.Rating.Value + 0.5)]); } break; case SortMode.FramesPerSecond: if (metadata.FramesPerSecond != null) { return(metadata.FramesPerSecond.Value.ToString() + "fps"); } break; default: break; } return(info); }
void mapRemoveItem(SelectableMediaItem media) { for (int i = 0; i < pinLayer.Children.Count; i++) { if ((pinLayer.Children[i] as FrameworkElement).Tag.Equals(media.Item)) { pinLayer.Children.RemoveAt(i); imageLayer.Children.RemoveAt(i); return; } } }
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(); } }
void addTags(SelectableMediaItem item, List<TagItem> tags) { if (item.Item.Metadata == null) return; item.Item.EnterReadLock(); try { foreach (Tag tag in item.Item.Metadata.Tags) { TagItem tagItem = new TagItem(tag, mediaCollectionView); int index = tags.IndexOf(tagItem); if (index == -1) { tags.Add(tagItem); } else { tags[index].Count += 1; } } } finally { item.Item.ExitReadLock(); } }
public override object getExtraInfo(SelectableMediaItem selectableItem) { string dateFormat = "MMM d, yyyy"; MediaItem item = selectableItem.Item; Object info = null; if (item.Metadata != null) { VideoMetadata videoMetadata = item.Metadata is VideoMetadata ? item.Metadata as VideoMetadata : null; ImageMetadata imageMetadata = item.Metadata is ImageMetadata ? item.Metadata as ImageMetadata : null; AudioMetadata audioMetadata = item.Metadata is AudioMetadata ? item.Metadata as AudioMetadata : null; switch (SortMode) { case MediaFileSortMode.Name: break; case MediaFileSortMode.Size: info = MediaViewer.Model.Utils.MiscUtils.formatSizeBytes(item.Metadata.SizeBytes); break; case MediaFileSortMode.Rating: if (item.Metadata.Rating.HasValue) { int nrStars = (int)item.Metadata.Rating.Value; info = RatingCache.RatingBitmap[nrStars]; } break; case MediaFileSortMode.Imported: break; case MediaFileSortMode.Tags: if (item.Metadata.Tags.Count > 0) { info = item.Metadata.Tags.Count.ToString() + " tag"; if (item.Metadata.Tags.Count > 1) { info += "s"; } } break; case MediaFileSortMode.MimeType: info = item.Metadata.MimeType; break; case MediaFileSortMode.FileDate: info = item.Metadata.FileDate.ToString(dateFormat); break; case MediaFileSortMode.LastModified: info = item.Metadata.LastModifiedDate.ToString(dateFormat); break; case MediaFileSortMode.CreationDate: if (item.Metadata.CreationDate.HasValue) { info = item.Metadata.CreationDate.Value.ToString(dateFormat); } break; case MediaFileSortMode.SoftWare: if (item.Metadata.Software != null) { info = item.Metadata.Software; } break; case MediaFileSortMode.Width: if (imageMetadata != null) { info = imageMetadata.Width.ToString() + " x " + imageMetadata.Height.ToString(); } else { info = videoMetadata.Width.ToString() + " x " + videoMetadata.Height.ToString(); } break; case MediaFileSortMode.Height: if (imageMetadata != null) { info = imageMetadata.Width.ToString() + " x " + imageMetadata.Height.ToString(); } else { info = videoMetadata.Width.ToString() + " x " + videoMetadata.Height.ToString(); } break; case MediaFileSortMode.Duration: if (videoMetadata != null) { info = MiscUtils.formatTimeSeconds(videoMetadata.DurationSeconds); } else if (audioMetadata != null) { info = MiscUtils.formatTimeSeconds(audioMetadata.DurationSeconds); } break; case MediaFileSortMode.FramesPerSecond: if (videoMetadata != null) { info = videoMetadata.FramesPerSecond.ToString("0.00") + " FPS"; } break; case MediaFileSortMode.VideoRate: if (videoMetadata != null) { info = videoMetadata.VideoBitRate.HasValue ? MiscUtils.formatSizeBytes(videoMetadata.VideoBitRate.Value / 8) + "/s" : ""; } break; case MediaFileSortMode.AudioRate: if (videoMetadata != null) { info = videoMetadata.AudioBitRate.HasValue ? MiscUtils.formatSizeBytes(videoMetadata.AudioBitRate.Value / 8) + "/s" : ""; } break; case MediaFileSortMode.VideoCodec: if (videoMetadata != null) { info = videoMetadata.VideoCodec; } break; case MediaFileSortMode.AudioCodec: if (videoMetadata != null) { info = videoMetadata.AudioCodec; } else if (audioMetadata != null) { info = audioMetadata.AudioCodec; } break; case MediaFileSortMode.PixelFormat: if (videoMetadata != null) { info = videoMetadata.PixelFormat; } break; case MediaFileSortMode.BitsPerSample: if (videoMetadata != null) { info = videoMetadata.BitsPerSample.HasValue ? videoMetadata.BitsPerSample + "bit" : ""; } else if (audioMetadata != null) { info = audioMetadata.BitsPerSample + "bit"; } break; case MediaFileSortMode.SamplesPerSecond: if (videoMetadata != null) { info = videoMetadata.SamplesPerSecond.HasValue ? videoMetadata.SamplesPerSecond + "hz" : ""; } else if (audioMetadata != null) { info = audioMetadata.SamplesPerSecond + "hz"; } break; case MediaFileSortMode.NrChannels: if (videoMetadata != null) { info = videoMetadata.NrChannels.HasValue ? videoMetadata.NrChannels.Value.ToString() + " chan" : ""; } else if (audioMetadata != null) { info = audioMetadata.NrChannels.ToString(); } break; case MediaFileSortMode.CameraMake: if (imageMetadata != null) { info = imageMetadata.CameraMake != null ? imageMetadata.CameraMake : ""; } break; case MediaFileSortMode.CameraModel: if (imageMetadata != null) { info = imageMetadata.CameraModel != null ? imageMetadata.CameraModel : ""; } break; case MediaFileSortMode.Lens: if (imageMetadata != null) { info = imageMetadata.Lens != null ? imageMetadata.Lens : ""; } break; case MediaFileSortMode.ISOSpeedRating: if (imageMetadata != null) { info = imageMetadata.ISOSpeedRating.HasValue ? "ISO: " + imageMetadata.ISOSpeedRating.Value : ""; } break; case MediaFileSortMode.FNumber: if (imageMetadata != null) { info = imageMetadata.FNumber.HasValue ? "f/" + imageMetadata.FNumber.Value : ""; } break; case MediaFileSortMode.ExposureTime: if (imageMetadata != null) { info = imageMetadata.ExposureTime.HasValue ? "1/" + 1 / imageMetadata.ExposureTime.Value + "s" : ""; } break; case MediaFileSortMode.FocalLength: if (imageMetadata != null) { info = imageMetadata.FocalLength.HasValue ? imageMetadata.FocalLength.Value + "mm" : ""; } break; case MediaFileSortMode.Genre: if (audioMetadata != null) { info = audioMetadata.Genre == null ? "" : audioMetadata.Genre; } break; case MediaFileSortMode.Album: if (audioMetadata != null) { info = audioMetadata.Album == null ? "" : audioMetadata.Album; } break; case MediaFileSortMode.Track: if (audioMetadata != null) { info = audioMetadata.TrackNr == null ? "" : audioMetadata.TrackNr.Value.ToString(); } break; case MediaFileSortMode.TotalTracks: if (audioMetadata != null) { info = audioMetadata.TotalTracks == null ? "" : audioMetadata.TotalTracks.Value.ToString(); } break; case MediaFileSortMode.Disc: if (audioMetadata != null) { info = audioMetadata.DiscNr == null ? "" : audioMetadata.TrackNr.Value.ToString(); } break; case MediaFileSortMode.TotalDiscs: if (audioMetadata != null) { info = audioMetadata.TotalDiscs == null ? "" : audioMetadata.TotalTracks.Value.ToString(); } break; case MediaFileSortMode.Rate: if (audioMetadata != null) { info = audioMetadata.BitRate.HasValue ? MiscUtils.formatSizeBytes(audioMetadata.BitRate.Value / 8) + "/s" : ""; } break; default: break; } } return(info); }
public override object getExtraInfo(SelectableMediaItem selectableItem) { string dateFormat = "MMM d, yyyy"; MediaItem item = selectableItem.Item; Object info = null; if (item.Metadata != null) { VideoMetadata videoMetadata = item.Metadata is VideoMetadata ? item.Metadata as VideoMetadata : null; ImageMetadata imageMetadata = item.Metadata is ImageMetadata ? item.Metadata as ImageMetadata : null; AudioMetadata audioMetadata = item.Metadata is AudioMetadata ? item.Metadata as AudioMetadata : null; switch (SortMode) { case MediaFileSortMode.Name: break; case MediaFileSortMode.Size: info = MediaViewer.Model.Utils.MiscUtils.formatSizeBytes(item.Metadata.SizeBytes); break; case MediaFileSortMode.Rating: if(item.Metadata.Rating.HasValue) { int nrStars = (int)item.Metadata.Rating.Value; info = RatingCache.RatingBitmap[nrStars]; } break; case MediaFileSortMode.Imported: break; case MediaFileSortMode.Tags: if (item.Metadata.Tags.Count > 0) { info = item.Metadata.Tags.Count.ToString() + " tag"; if (item.Metadata.Tags.Count > 1) { info += "s"; } } break; case MediaFileSortMode.MimeType: info = item.Metadata.MimeType; break; case MediaFileSortMode.FileDate: info = item.Metadata.FileDate.ToString(dateFormat); break; case MediaFileSortMode.LastModified: info = item.Metadata.LastModifiedDate.ToString(dateFormat); break; case MediaFileSortMode.CreationDate: if (item.Metadata.CreationDate.HasValue) { info = item.Metadata.CreationDate.Value.ToString(dateFormat); } break; case MediaFileSortMode.SoftWare: if (item.Metadata.Software != null) { info = item.Metadata.Software; } break; case MediaFileSortMode.Width: if (imageMetadata != null) { info = imageMetadata.Width.ToString() + " x " + imageMetadata.Height.ToString(); } else { info = videoMetadata.Width.ToString() + " x " + videoMetadata.Height.ToString(); } break; case MediaFileSortMode.Height: if (imageMetadata != null) { info = imageMetadata.Width.ToString() + " x " + imageMetadata.Height.ToString(); } else { info = videoMetadata.Width.ToString() + " x " + videoMetadata.Height.ToString(); } break; case MediaFileSortMode.Duration: if (videoMetadata != null) { info = MiscUtils.formatTimeSeconds(videoMetadata.DurationSeconds); } else if (audioMetadata != null) { info = MiscUtils.formatTimeSeconds(audioMetadata.DurationSeconds); } break; case MediaFileSortMode.FramesPerSecond: if (videoMetadata != null) { info = videoMetadata.FramesPerSecond.ToString("0.00") + " FPS"; } break; case MediaFileSortMode.VideoRate: if (videoMetadata != null) { info = videoMetadata.VideoBitRate.HasValue ? MiscUtils.formatSizeBytes(videoMetadata.VideoBitRate.Value / 8) + "/s" : ""; } break; case MediaFileSortMode.AudioRate: if (videoMetadata != null) { info = videoMetadata.AudioBitRate.HasValue ? MiscUtils.formatSizeBytes(videoMetadata.AudioBitRate.Value / 8) + "/s" : ""; } break; case MediaFileSortMode.VideoCodec: if (videoMetadata != null) { info = videoMetadata.VideoCodec; } break; case MediaFileSortMode.AudioCodec: if (videoMetadata != null) { info = videoMetadata.AudioCodec; } else if (audioMetadata != null) { info = audioMetadata.AudioCodec; } break; case MediaFileSortMode.PixelFormat: if (videoMetadata != null) { info = videoMetadata.PixelFormat; } break; case MediaFileSortMode.BitsPerSample: if (videoMetadata != null) { info = videoMetadata.BitsPerSample.HasValue ? videoMetadata.BitsPerSample + "bit" : ""; } else if (audioMetadata != null) { info = audioMetadata.BitsPerSample + "bit"; } break; case MediaFileSortMode.SamplesPerSecond: if (videoMetadata != null) { info = videoMetadata.SamplesPerSecond.HasValue ? videoMetadata.SamplesPerSecond + "hz" : ""; } else if (audioMetadata != null) { info = audioMetadata.SamplesPerSecond + "hz"; } break; case MediaFileSortMode.NrChannels: if (videoMetadata != null) { info = videoMetadata.NrChannels.HasValue ? videoMetadata.NrChannels.Value.ToString() + " chan" : ""; } else if (audioMetadata != null) { info = audioMetadata.NrChannels.ToString(); } break; case MediaFileSortMode.CameraMake: if (imageMetadata != null) { info = imageMetadata.CameraMake != null ? imageMetadata.CameraMake : ""; } break; case MediaFileSortMode.CameraModel: if (imageMetadata != null) { info = imageMetadata.CameraModel != null ? imageMetadata.CameraModel : ""; } break; case MediaFileSortMode.Lens: if (imageMetadata != null) { info = imageMetadata.Lens != null ? imageMetadata.Lens : ""; } break; case MediaFileSortMode.ISOSpeedRating: if (imageMetadata != null) { info = imageMetadata.ISOSpeedRating.HasValue ? "ISO: " + imageMetadata.ISOSpeedRating.Value : ""; } break; case MediaFileSortMode.FNumber: if (imageMetadata != null) { info = imageMetadata.FNumber.HasValue ? "f/" + imageMetadata.FNumber.Value : ""; } break; case MediaFileSortMode.ExposureTime: if (imageMetadata != null) { info = imageMetadata.ExposureTime.HasValue ? "1/" + 1/imageMetadata.ExposureTime.Value + "s" : ""; } break; case MediaFileSortMode.FocalLength: if (imageMetadata != null) { info = imageMetadata.FocalLength.HasValue ? imageMetadata.FocalLength.Value + "mm" : ""; } break; case MediaFileSortMode.Genre: if (audioMetadata != null) { info = audioMetadata.Genre == null ? "" : audioMetadata.Genre; } break; case MediaFileSortMode.Album: if (audioMetadata != null) { info = audioMetadata.Album == null ? "" : audioMetadata.Album; } break; case MediaFileSortMode.Track: if (audioMetadata != null) { info = audioMetadata.TrackNr == null ? "" : audioMetadata.TrackNr.Value.ToString(); } break; case MediaFileSortMode.TotalTracks: if (audioMetadata != null) { info = audioMetadata.TotalTracks == null ? "" : audioMetadata.TotalTracks.Value.ToString(); } break; case MediaFileSortMode.Disc: if (audioMetadata != null) { info = audioMetadata.DiscNr == null ? "" : audioMetadata.TrackNr.Value.ToString(); } break; case MediaFileSortMode.TotalDiscs: if (audioMetadata != null) { info = audioMetadata.TotalDiscs == null ? "" : audioMetadata.TotalTracks.Value.ToString(); } break; case MediaFileSortMode.Rate: if (audioMetadata != null) { info = audioMetadata.BitRate.HasValue ? MiscUtils.formatSizeBytes(audioMetadata.BitRate.Value / 8) + "/s" : ""; } break; default: break; } } return (info); }
bool filterFunc(SelectableMediaItem item) { item.Item.EnterReadLock(); try { switch (MediaFilter) { case MediaFilterMode.None: break; case MediaFilterMode.Video: if (!(item.Item.Metadata is VideoMetadata)) { return (false); } break; case MediaFilterMode.Images: if (!(item.Item.Metadata is ImageMetadata)) { return (false); } break; case MediaFilterMode.Audio: if (!(item.Item.Metadata is AudioMetadata)) { return (false); } break; default: break; } bool result = tagFilter(item); return (result); } finally { item.Item.ExitReadLock(); } }
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); } }
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(); } }