示例#1
0
 /// <summary>
 /// Считывание через SAX
 /// </summary>
 /// <param name="sFileName"></param>
 /// <param name="pPhone"></param>
 public static void LoadSAX(string sFileName, CPhone pPhone)
 {
     // SAX - simple API XML
     pPhone.ContactList.Clear();
     using (Stream pStream = File.OpenRead(
                sFileName))
     {
         using (XmlReader pReader = XmlReader.Create(pStream))
         {
             pReader.Read();
             if (!pReader.ReadToFollowing("phone"))
             {
                 return;
             }
             if (!pReader.ReadToFollowing("contact"))
             {
                 return;
             }
             //while (pReader.NodeType != XmlNodeType.Element)
             //{
             //  pReader.Read();
             //}
             // pReader.ReadStartElement();
             while ((pReader.NodeType == XmlNodeType.Element) &&
                    pReader.Name == "contact")
             {
                 CContact pC = h_ReadContact(pReader);
                 pPhone.ContactList.Add(pC);
             }
             // pRea
         }
     }
 }
示例#2
0
 /// <summary>
 /// .ctor
 /// </summary>
 public ContactForm(CContact pContact) :
     this()
 {
     InitializeComponent();
     Text = String.Format("Контакт телефона: {0}",
                          String.IsNullOrEmpty(pContact.Title)
 ? "новая запись"
 : pContact.Title);
     m_pContact = pContact;
     h_FillForm();
 }
示例#3
0
        private void btnAdd_Click(object sender, EventArgs e)
        {
            CContact pContact = new CContact("", "", new DateTime(1980, 1, 1));

            using (ContactForm pContactForm = new ContactForm(pContact)) {
                DialogResult pResult = pContactForm.ShowDialog();
                if (pResult == DialogResult.OK)
                {
                    // ссылку на объект передавали в форму, которая его дозаполнила
                    m_pPhone.ContactList.Add(pContact);
                }
            }
        }
示例#4
0
        private bool h_IsFilterFits(CContact pContact)
        {
            bool bPassed = true;

            if (pContact.BirthDate.Month == 1 && !chFilterJan.Checked)
            {
                bPassed = false;
            }
            if (pContact.BirthDate.Month == 2 && !chFilterFeb.Checked)
            {
                bPassed = false;
            }
            return(bPassed);
        }
示例#5
0
        private static CContact h_ReadContact(XmlReader pReader)
        {
            string sDate = pReader.GetAttribute("date");

            pReader.ReadToFollowing("phone");
            string sPhone = pReader.ReadElementString();

            pReader.ReadToFollowing("title");
            string sTitle = pReader.ReadElementString();
            var    pC     = new CContact(sTitle, sPhone, DateTime.Parse(sDate));

            while (pReader.NodeType != XmlNodeType.Element)
            {
                pReader.Read();
                if (pReader.NodeType == XmlNodeType.None)
                {
                    break;
                }
            }
            return(pC);
        }
示例#6
0
        private void h_RefreshListview()
        {
            lvList.Items.Clear();

            bool bFormFilter = false;

            List <CContact> ar = bFormFilter
                                 // запрос отфильтрованных данных от самой бизнес-модели
        ? m_pPhone.ContactList
                                 // фильтрация данных осуществляется формой
        : m_pPhone.GetContactList(
                chFilterJan.Checked,
                chFilterFeb.Checked
                );;

            for (int ii = 0; ii < ar.Count; ii++)
            {
                CContact pContact = ar[ii];
                // фильтрация формой
                if (bFormFilter && !h_IsFilterFits(pContact))
                {
                    continue;
                }

                // #1+
                ListViewItem pItem =
                    lvList.Items.Add((ii + 1).ToString(CultureInfo.InvariantCulture));
                pItem.ForeColor = Color.Peru;
                pItem.Tag       = pContact.Id;

                // #2
                var pSubItem = new
                               ListViewItem.ListViewSubItem();
                pSubItem.ForeColor = Color.Red;
                pSubItem.Text      = pContact.Title;
                pItem.SubItems.Add(pSubItem);
                // #3
                pItem.SubItems.Add(pContact.Phone);
            }
        }
示例#7
0
        private void btnEdit_Click(object sender, EventArgs e)
        {
            // найти выбранную строку, взять идентификатор
            if (lvList.SelectedItems.Count == 0)
            {
                return;
            }
            ListViewItem pItem = lvList.SelectedItems[0];
            string       sGuid = pItem.Tag as string;
            // получить объект по идентификатору для редактирования
            CContact pContact = m_pPhone.GetContact(sGuid);

            // передать его в форму-бланк
            using (ContactForm pContactForm =
                       new ContactForm(pContact)) {
                DialogResult pResult =
                    pContactForm.ShowDialog();
                if (pResult == DialogResult.OK)
                {
                    m_pPhone.UpdateContact(pContact);
                }
            }
        }
示例#8
0
 /// <summary>
 /// Обновление данных
 /// </summary>
 /// <param name="pContact"></param>
 public void UpdateContact(CContact pContact)
 {
     // обновление данных в источнике по pContact.Id
 }