예제 #1
0
        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);
     }
 }
예제 #4
0
        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);
                }));
            }
        }
예제 #5
0
        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);
     }
 }
예제 #8
0
        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);
        }
예제 #10
0
        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;
                }
            }
            
        }
예제 #12
0
        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();
            }
        }
예제 #13
0
        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();
            }
        }
예제 #14
0
        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();
            }            
        }
예제 #17
0
 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();
            }
              
        }