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; }
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()); } }