private void PasteCrew(IDVDInfo profile, CrewInformation crewInformation) { profile.ClearCrew(); for (var crewIndex = 0; crewIndex < (crewInformation.CrewList?.Length ?? 0); crewIndex++) { var item = crewInformation.CrewList[crewIndex]; if (item is CrewDivider divider) { var apiDividerType = ApiConstantsToText.GetApiDividerType(divider.Type); var apiCreditType = ApiConstantsToText.GetApiCreditType(divider.CreditType); profile.AddCrewDivider(divider.Caption.NotNull(), apiDividerType, apiCreditType); } else if (item is CrewMember crew) { var apiCreditType = ApiConstantsToText.GetApiCreditType(crew.CreditType); var apiCreditSubtype = ApiConstantsToText.GetApiCreditSubType(crew.CreditSubtype); profile.AddCrew(crew.FirstName.NotNull(), crew.MiddleName.NotNull(), crew.LastName.NotNull(), crew.BirthYear, apiCreditType, apiCreditSubtype, crew.CreditedAs.NotNull()); if (crew.CustomRoleSpecified) { profile.SetCrewCustomRoleByIndex(crewIndex, crew.CustomRole.NotNull()); } } else { throw new NotImplementedException($"Unknown crew item {item}"); } } this.Api.SaveDVDToCollection(profile); this.Api.ReloadCurrentDVD(); this.Api.UpdateProfileInListDisplay(profile.GetProfileID()); }
private void CopyCrew(IDVDInfo profile) { var crewCount = profile.GetCrewCount(); var crewList = new List <object>(crewCount); for (var crewIndex = 0; crewIndex < crewCount; crewIndex++) { profile.GetCrewByIndex(crewIndex, out var firstName, out var middleName, out var lastName, out var birthYear, out var apiCreditType, out var apiCreditSubtype, out var creditedAs); if (firstName != null) { var customRole = profile.GetCrewCustomRoleByIndex(crewIndex); var creditType = ApiConstantsToText.GetCreditType(apiCreditType); var creditSubtype = ApiConstantsToText.GetCreditSubType(apiCreditType, apiCreditSubtype); crewList.Add(new CrewMember() { FirstName = firstName.NotNull(), MiddleName = middleName.NotNull(), LastName = lastName.NotNull(), BirthYear = birthYear, CreditType = creditType, CreditSubtype = creditSubtype, CustomRole = customRole, CustomRoleSpecified = !string.IsNullOrWhiteSpace(customRole), CreditedAs = creditedAs.NotNull(), }); } else { profile.GetCrewDividerByIndex(crewIndex, out var caption, out var apiDividerType, out apiCreditType); var dividerType = ApiConstantsToText.GetDividerType(apiDividerType); var creditType = ApiConstantsToText.GetCreditType(apiCreditType); crewList.Add(new CrewDivider() { Caption = caption.NotNull(), Type = dividerType, CreditType = creditType, }); } } var crewInformation = new CrewInformation() { Title = profile.GetTitle().NotNull(), CrewList = crewList.ToArray(), }; var xml = DVDProfilerSerializer <CrewInformation> .ToString(crewInformation, CrewInformation.DefaultEncoding); try { Clipboard.SetDataObject(xml, true, 4, 250); } catch (Exception ex) //clipboard in use { MessageBox.Show(ex.Message, MessageBoxTexts.CriticalErrorHeader, MessageBoxButtons.OK, MessageBoxIcon.Error); } }