示例#1
0
        public static async Task<SettingsFlyout> CreatePropertiesFlyout(StorageFile file, StorageFolder topFolder, string fileSubPath)
        {
            if (file == null) return null;

            SettingsFlyout flyout = null;
            try
            {
                BasicProperties basicProps = null;
                try { basicProps = await file.GetBasicPropertiesAsync(); }
                catch (Exception ex) { Debug.WriteLine(ex.ToString()); }

                if (file.ContentType.StartsWith("image", StringComparison.OrdinalIgnoreCase))
                {
                    var flyoutImg = new PropertiesFlyoutImage();
                    flyout = flyoutImg;
                    ImageProperties imageProps = await file.Properties.GetImagePropertiesAsync();
                    if (imageProps != null)
                        FillImageProperties(flyoutImg, imageProps, file, basicProps);
                }
                else if (file.ContentType.ToLower().StartsWith("audio"))
                {
                    var flyoutAud = new PropertiesFlyoutAudio();
                    flyout = flyoutAud;
                    MusicProperties musicProps = await file.Properties.GetMusicPropertiesAsync();
                    if (musicProps != null)
                        await FillAudioProperties(flyoutAud, musicProps, file);
                }
                else if (file.ContentType.ToLower().StartsWith("video"))
                {
                    var flyoutVdo = new PropertiesFlyoutVideo();
                    flyout = flyoutVdo;
                    VideoProperties videoProps = await file.Properties.GetVideoPropertiesAsync();
                    if (videoProps != null)
                        FillVideoProperties(flyoutVdo, videoProps);
                }
                else
                {
                    var flyoutGen = new PropertiesFlyoutGeneral();
                    flyout = flyoutGen;
                    await FillGeneralProperties(flyoutGen, file, basicProps);
                }

                Debug.Assert(flyout != null, "Flyout object must exist.");
                if (flyout != null)
                    await FillFileProperties((IFileProperties)flyout, file, topFolder, fileSubPath, basicProps);
            }
            catch (Exception ex) { Debug.WriteLine(ex.ToString()); }
            return flyout;
        }
示例#2
0
        public async static Task FillAudioProperties(PropertiesFlyoutAudio flyout, MusicProperties musicProps, StorageFile file)
        {
            try
            {
                if (!string.IsNullOrEmpty(musicProps.AlbumArtist))
                    flyout.Artist.Text = musicProps.AlbumArtist;
                else if (!string.IsNullOrEmpty(musicProps.Artist))
                    flyout.Artist.Text = musicProps.Artist;
                else
                {
                    string authors = await GetDocAuthors(file);
                    if (!string.IsNullOrEmpty(authors))
                        flyout.Artist.Text = authors;
                    else
                        flyout.HideArtist();
                }

                if (!string.IsNullOrEmpty(musicProps.Album))
                    flyout.Album.Text = musicProps.Album;
                else
                    flyout.HideAlbum();
                
                if (!string.IsNullOrEmpty(musicProps.Title))
                {
                    string track = "";
                    if (musicProps.TrackNumber > 0)
                        track += musicProps.TrackNumber.ToString("D02") + " ";
                    if (!string.IsNullOrEmpty(musicProps.Subtitle))
                        flyout.TrackTitle.Text = track + musicProps.Title + " - " + musicProps.Subtitle;
                    else
                        flyout.TrackTitle.Text = track + musicProps.Title;
                }
                else
                {
                    string docTitle = await GetDocTitle(file);
                    if (!string.IsNullOrEmpty(docTitle))
                        flyout.TrackTitle.Text = docTitle;
                    else
                        flyout.HideTrackTitle();
                }

                if (musicProps.Duration.TotalSeconds > 0)
                    flyout.Duration.Text = TimeSpan_ToString(musicProps.Duration);
                else
                    flyout.HideDuration();

                if (musicProps.Composers.Count >= 1)
                    flyout.Composers.Text += NameCreditsStr("", musicProps.Composers);
                else
                    flyout.HideComposers();

                if (musicProps.Conductors.Count >= 1)
                    flyout.Conductors.Text += NameCreditsStr("", musicProps.Conductors);
                else
                    flyout.HideConductors();

                if (musicProps.Writers.Count >= 1)
                    flyout.Writers.Text = NameCreditsStr("", musicProps.Writers);
                else
                    flyout.HideWriters();

                if (musicProps.Producers.Count >= 1)
                    flyout.Producers.Text = NameCreditsStr("", musicProps.Producers);
                else
                    flyout.HideProducers();

                if (!string.IsNullOrEmpty(musicProps.Publisher))
                    flyout.Publisher.Text = musicProps.Publisher;
                else
                    flyout.HidePublisher();

                if (musicProps.Genre.Count >= 1)
                    flyout.Genres.Text = NameCreditsStr("", musicProps.Genre);
                else
                    flyout.HideGenres();

                if (musicProps.Year > 0)
                    flyout.Year.Text = musicProps.Year.ToString();
                else
                    flyout.HideYear();

                if (musicProps.Rating > 0)
                {
                    uint starRating = (musicProps.Rating == 0) ? 0 : (uint)Math.Round((double)musicProps.Rating / 25.0) + 1;
                    flyout.Rating.Text = starRating.ToString() + "*";
                }
                else
                    flyout.HideRating();

                if (musicProps.Bitrate > 0)
                    flyout.Bitrate.Text = Util.NumberToString(musicProps.Bitrate, "bps");
                else
                    flyout.HideBitrate();
            }
            catch (Exception ex) { Debug.WriteLine(ex.ToString()); }
        }