/// <summary> /// Получить группу телефонных номеров, соответствующую выбранному в дереве узлу /// </summary> private void GetCurrentGroup(out Phonebook.PhoneGroup group, out TreeNode groupNode) { TreeNode node = tvPhonebook.SelectedNode; while (node != null && !(node.Tag is Phonebook.PhoneGroup)) { node = node.Parent; } if (node != null && node.Tag is Phonebook.PhoneGroup) { groupNode = node; group = (Phonebook.PhoneGroup)groupNode.Tag; } else if (nodePhonebook.Nodes.Count > 0) { groupNode = nodePhonebook.Nodes[0]; group = (Phonebook.PhoneGroup)groupNode.Tag; } else { groupNode = null; group = null; } }
private void btnDelete_Click(object sender, EventArgs e) { // удаление выбранного объекта object selObj = GetSelectedObject(); Phonebook.PhoneGroup group = selObj as Phonebook.PhoneGroup; Phonebook.PhoneNumber number = selObj as Phonebook.PhoneNumber; if (group != null) { // удаление группы телефонных номеров RemoveGroup(group); Modified = true; } else if (number != null) { // удаление телефонного номера TreeNode phoneGroupNode; GetCurrentGroup(out group, out phoneGroupNode); if (group != null) { RemoveNumber(group, phoneGroupNode, number); Modified = true; } } }
private Phonebook.PhoneGroup oldGroup; // редактируемая группа телефонных номеров /// <summary> /// Конструктор, ограничивающий создание формы без параметров /// </summary> private FrmPhoneGroup() { InitializeComponent(); newGroup = null; oldGroup = null; }
/// <summary> /// Удалить группу телефонных номеров из справочника и из дерева /// </summary> private void RemoveGroup(Phonebook.PhoneGroup group) { int ind = phonebook.PhoneGroups.IndexOfKey(group.Name); phonebook.PhoneGroups.RemoveAt(ind); nodePhonebook.Nodes.RemoveAt(ind); }
private void btnChange_Click(object sender, EventArgs e) { // создание группы телефонных номеров и копирование в неё телефонов newGroup = new Phonebook.PhoneGroup(txtName.Text.Trim()); newGroup.PhoneNumbers.AddRange(oldGroup.PhoneNumbers); DialogResult = DialogResult.OK; }
/// <summary> /// Удалить телефонный номер из справочника и из дерева /// </summary> private void RemoveNumber(Phonebook.PhoneGroup group, TreeNode groupNode, Phonebook.PhoneNumber number) { int ind = group.FindPhoneNumberIndex(number.Number); if (ind >= 0) { RemoveNumber(group, groupNode, ind); } }
/// <summary> /// Удалить телефонный номер из справочника и из дерева /// </summary> private void RemoveNumber(Phonebook.PhoneGroup group, TreeNode groupNode, int numberInd) { group.PhoneNumbers.RemoveAt(numberInd); groupNode.Nodes.RemoveAt(numberInd); if (groupNode.Nodes.Count == 0) { groupNode.ImageKey = groupNode.SelectedImageKey = "folder_closed.png"; } }
/// <summary> /// Вставить группу телефонных номеров в справочник и в дерево /// </summary> private void InsertGroup(Phonebook.PhoneGroup group) { phonebook.PhoneGroups.Add(group.Name, group); int ind = phonebook.PhoneGroups.IndexOfKey(group.Name); TreeNode node = CreateGroupNode(group); nodePhonebook.Nodes.Insert(ind, node); tvPhonebook.SelectedNode = node; }
/// <summary> /// Вставить телефонный номер в справочник и в дерево, проверив уникальность номера /// </summary> private void InsertNumber(Phonebook.PhoneGroup group, TreeNode groupNode, Phonebook.PhoneNumber number) { int ind = group.FindPhoneNumberInsertIndex(number); group.PhoneNumbers.Insert(ind, number); TreeNode node = CreateNumberNode(number); groupNode.Nodes.Insert(ind, node); groupNode.ImageKey = groupNode.SelectedImageKey = "folder_open.png"; tvPhonebook.SelectedNode = node; }
/// <summary> /// Редактировать группу телефонных номеров /// </summary> /// <returns>Возвращает новую группу телефонных номеров, созданную на основе заданной, /// или null в случае отмены</returns> public static Phonebook.PhoneGroup EditPhoneGroup(Phonebook.PhoneGroup phoneGroup) { if (phoneGroup == null) { throw new ArgumentNullException("phoneGroup"); } FrmPhoneGroup frmPhoneGroup = new FrmPhoneGroup(); frmPhoneGroup.oldGroup = phoneGroup; frmPhoneGroup.ShowDialog(); return(frmPhoneGroup.newGroup); }
private void btnCreateGroup_Click(object sender, EventArgs e) { // создание группы телефонных номеров Phonebook.PhoneGroup newGroup = FrmPhoneGroup.CreatePhoneGroup(); if (newGroup != null) { if (phonebook.PhoneGroups.ContainsKey(newGroup.Name)) { ScadaUtils.ShowWarning(KpPhrases.PhoneGroupExists); } else { InsertGroup(newGroup); Modified = true; } } }
/// <summary> /// Создать узел дерева для группы телефонных номеров /// </summary> private TreeNode CreateGroupNode(Phonebook.PhoneGroup group) { string imageKey = group.PhoneNumbers.Count > 0 ? "folder_open.png" : "folder_closed.png"; TreeNode nodeGroup = new TreeNode(group.Name) { ImageKey = imageKey, SelectedImageKey = imageKey, Tag = group }; foreach (Phonebook.PhoneNumber number in group.PhoneNumbers) { nodeGroup.Nodes.Add(CreateNumberNode(number)); } nodeGroup.Expand(); return(nodeGroup); }
/// <summary> /// Вставить телефонный номер в справочник и в дерево или обновить существующий номер /// </summary> private void InsertOrUpdateNumber(Phonebook.PhoneGroup group, TreeNode groupNode, Phonebook.PhoneNumber number) { if (number != null) { int ind = group.FindPhoneNumberIndex(number.Number); if (ind < 0) { InsertNumber(group, groupNode, number); Modified = true; } else if (MessageBox.Show(KpPhrases.UpdatePhoneNumberConfirm, CommonPhrases.QuestionCaption, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { RemoveNumber(group, groupNode, ind); InsertNumber(group, groupNode, number); Modified = true; } } }
private void btnEdit_Click(object sender, EventArgs e) { // редактирование выбранного объекта object selObj = GetSelectedObject(); Phonebook.PhoneGroup group = selObj as Phonebook.PhoneGroup; Phonebook.PhoneNumber number = selObj as Phonebook.PhoneNumber; if (group != null) { // редактирование группы телефонных номеров Phonebook.PhoneGroup newGroup = FrmPhoneGroup.EditPhoneGroup(group); if (newGroup != null && !group.Equals(newGroup)) { RemoveGroup(group); InsertGroup(newGroup); Modified = true; } } else if (number != null) { // редактирование телефонного номера TreeNode groupNode; GetCurrentGroup(out group, out groupNode); if (group != null) { Phonebook.PhoneNumber newNumber = FrmPhoneNumber.EditPhoneNumber(number); if (newNumber != null && !number.Equals(newNumber)) { RemoveNumber(group, groupNode, number); InsertNumber(group, groupNode, newNumber); Modified = true; } } } }
private void btnCreate_Click(object sender, EventArgs e) { // создание группы телефонных номеров newGroup = new Phonebook.PhoneGroup(txtName.Text.Trim()); DialogResult = DialogResult.OK; }