/// <summary> /// Called to handle the "edit" action. /// </summary> /// <param name="items">A list of items to edit.</param> /// <param name="editedItems">The list of items that were edited.</param> /// <returns>True if items were edited, false otherwise.</returns> protected override bool EditItems(IList <TelephoneDetail> items, out IList <TelephoneDetail> editedItems) { editedItems = new List <TelephoneDetail>(); TelephoneDetail oldItem = CollectionUtils.FirstElement(items); TelephoneDetail newItem = (TelephoneDetail)oldItem.Clone(); PhoneNumberEditorComponent editor = new PhoneNumberEditorComponent(newItem, _phoneTypeChoices); ApplicationComponentExitCode exitCode = LaunchAsDialog(this.Host.DesktopWindow, editor, SR.TitleUpdatePhoneNumber); if (exitCode == ApplicationComponentExitCode.Accepted) { editedItems.Add(newItem); // Since there is no way to use IsSameItem to identify the address before and after are the same // We must manually remove the old and add the new item this.Table.Items.Replace( delegate(TelephoneDetail x) { return(IsSameItem(oldItem, x)); }, newItem); // Preserve the order of the items int index = _phoneNumberList.IndexOf(oldItem); _phoneNumberList.Insert(index, newItem); _phoneNumberList.Remove(oldItem); return(true); } return(false); }
/// <summary> /// Called to handle the "add" action. /// </summary> /// <param name="addedItems"></param> /// <returns>True if items were added, false otherwise.</returns> protected override bool AddItems(out IList <TelephoneDetail> addedItems) { addedItems = new List <TelephoneDetail>(); TelephoneDetail phoneNumber = new TelephoneDetail(); phoneNumber.Type = _phoneTypeChoices[0]; PhoneNumberEditorComponent editor = new PhoneNumberEditorComponent(phoneNumber, _phoneTypeChoices); ApplicationComponentExitCode exitCode = LaunchAsDialog(this.Host.DesktopWindow, editor, SR.TitleAddPhoneNumber); if (exitCode == ApplicationComponentExitCode.Accepted) { addedItems.Add(phoneNumber); _phoneNumberList.Add(phoneNumber); return(true); } return(false); }