Пример #1
0
        /// <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;
            }
        }
Пример #2
0
        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;
                }
            }
        }
Пример #3
0
        private Phonebook.PhoneGroup oldGroup; // редактируемая группа телефонных номеров

        /// <summary>
        /// Конструктор, ограничивающий создание формы без параметров
        /// </summary>
        private FrmPhoneGroup()
        {
            InitializeComponent();

            newGroup = null;
            oldGroup = null;
        }
Пример #4
0
        /// <summary>
        /// Удалить группу телефонных номеров из справочника и из дерева
        /// </summary>
        private void RemoveGroup(Phonebook.PhoneGroup group)
        {
            int ind = phonebook.PhoneGroups.IndexOfKey(group.Name);

            phonebook.PhoneGroups.RemoveAt(ind);
            nodePhonebook.Nodes.RemoveAt(ind);
        }
Пример #5
0
 private void btnChange_Click(object sender, EventArgs e)
 {
     // создание группы телефонных номеров и копирование в неё телефонов
     newGroup = new Phonebook.PhoneGroup(txtName.Text.Trim());
     newGroup.PhoneNumbers.AddRange(oldGroup.PhoneNumbers);
     DialogResult = DialogResult.OK;
 }
Пример #6
0
        /// <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);
            }
        }
Пример #7
0
 /// <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";
     }
 }
Пример #8
0
        /// <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;
        }
Пример #9
0
        /// <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;
        }
Пример #10
0
        /// <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);
        }
Пример #11
0
 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;
         }
     }
 }
Пример #12
0
        /// <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);
        }
Пример #13
0
 /// <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;
         }
     }
 }
Пример #14
0
        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;
                    }
                }
            }
        }
Пример #15
0
 private void btnCreate_Click(object sender, EventArgs e)
 {
     // создание группы телефонных номеров
     newGroup     = new Phonebook.PhoneGroup(txtName.Text.Trim());
     DialogResult = DialogResult.OK;
 }