示例#1
0
        public static IEnumerable <MetaKey> GetByMedia(this MetaMediaType media)
        {
            HashSet <MetaKey> keys = new HashSet <MetaKey>();

            keys.Add(MetaKey.MetaType);
            keys.Add(MetaKey.OriginalName);
            keys.Add(MetaKey.FileName);
            keys.Add(MetaKey.Size);
            keys.Add(MetaKey.Timestamp);
            keys.Add(MetaKey.DateCreated);
            keys.Add(MetaKey.DateModified);
            keys.Add(MetaKey.Comment);

            switch (media)
            {
            case MetaMediaType.Image:
                keys.Add(MetaKey.Resolution);
                keys.Add(MetaKey.Width);
                keys.Add(MetaKey.Height);
                keys.Add(MetaKey.Camera);
                keys.Add(MetaKey.Tags);
                break;

            case MetaMediaType.Audio:
                keys.Add(MetaKey.Title);
                keys.Add(MetaKey.Artist);
                keys.Add(MetaKey.Album);
                keys.Add(MetaKey.Year);
                keys.Add(MetaKey.Track);
                keys.Add(MetaKey.Genre);
                break;

            case MetaMediaType.Video:
                break;

            default:
                break;
            }
            return(keys);
        }
        private static IEnumerable <GroupType> GetMediaGroupTypes(MetaMediaType type)
        {
            HashSet <GroupType> types = new HashSet <GroupType>();

            types.Add(GroupType.Index);

            foreach (MetaKey key in type.GetByMedia())
            {
                switch (key)
                {
                case MetaKey.Timestamp:
                    types.Add(GroupType.Year);
                    types.Add(GroupType.MonthName);
                    types.Add(GroupType.MonthNumber);
                    types.Add(GroupType.DayName);
                    types.Add(GroupType.DayNumber);
                    break;

                case MetaKey.OriginalName:
                    types.Add(GroupType.OriginalName);
                    break;

                case MetaKey.FileName:
                    types.Add(GroupType.FileName);
                    types.Add(GroupType.FileExtension);
                    types.Add(GroupType.FileNameWithExtension);
                    break;

                case MetaKey.Tags:
                    types.Add(GroupType.Tags);
                    break;

                case MetaKey.Camera:
                    types.Add(GroupType.Camera);
                    break;

                case MetaKey.Width:
                    types.Add(GroupType.WidthPx);
                    break;

                case MetaKey.Height:
                    types.Add(GroupType.HeightPx);
                    break;

                case MetaKey.Title:
                    types.Add(GroupType.Title);
                    break;

                case MetaKey.Artist:
                    types.Add(GroupType.Artist);
                    break;

                case MetaKey.Album:
                    types.Add(GroupType.Album);
                    break;

                case MetaKey.Track:
                    types.Add(GroupType.Track);
                    break;
                }
            }

            return(types);
        }