internal WndContacts(PNContact cn, List <PNContactGroup> groups) : this() { _Groups = groups.PNClone(); _Mode = AddEditMode.Edit; _Contact = cn; }
internal ContactChangedEventArgs(PNContact contact, AddEditMode mode) { _Contact = contact; _Mode = mode; Accepted = true; }
private bool importContacts(string iniPath) { try { var result = false; var size = 1024; var buffer = new string(' ', size); while (PNInterop.GetPrivateProfileString("contacts", null, null, buffer, size, iniPath) == size - 2) { // loop until sufficient buffer size size *= 2; buffer = new string(' ', size); } var names = buffer.Split('\0'); var keys = names.Where(n => n.Trim().Length > 0); var sqlList = new List <string>(); var contacts = new List <PNContact>(); int tempID = 0; if (PNStatic.Contacts.Count > 0) { tempID = PNStatic.Contacts.Max(c => c.ID) + 1; } foreach (var key in keys) { var cont = new PCONTPROP(); cont = PNInterop.ReadINIStructure(iniPath, "contacts", key, cont); if (cont.name != null && cont.name.Trim().Length > 0) { var pnc = new PNContact { ComputerName = cont.host, GroupID = cont.group, Name = cont.name, UseComputerName = cont.usename }; if (cont.address != 0) { pnc.IpAddress = buildAddressString(cont.address); } var temp = PNStatic.Contacts.FirstOrDefault(c => c.Name == pnc.Name); pnc.ID = temp != null ? temp.ID : tempID++; contacts.Add(pnc); } } // get contact froups size = 1024; buffer = new string(' ', size); while (PNInterop.GetPrivateProfileString("cont_groups", null, null, buffer, size, iniPath) == size - 2) { // loop until sufficient buffer size size *= 2; buffer = new string(' ', size); } names = buffer.Split('\0'); keys = names.Where(n => n.Trim().Length > 0); var groups = new List <PNContactGroup>(); tempID = 0; if (PNStatic.ContactGroups.Count > 0) { tempID = PNStatic.ContactGroups.Max(g => g.ID) + 1; } foreach (var key in keys) { var grp = new PCONTGROUP(); grp = PNInterop.ReadINIStructure(iniPath, "cont_groups", key, grp); if (grp.name == null || grp.name.Trim().Length <= 0) { continue; } var pg = new PNContactGroup { Name = grp.name }; var temp = PNStatic.ContactGroups.FirstOrDefault(g => g.Name == grp.name); pg.ID = temp != null ? temp.ID : tempID++; groups.Add(pg); } // build sql foreach (var pg in groups) { var sb = new StringBuilder(); sb.Append("INSERT OR REPLACE INTO CONTACT_GROUPS (ID, GROUP_NAME) VALUES("); sb.Append(pg.ID); sb.Append(", '"); sb.Append(pg.Name); sb.Append("')"); sqlList.Add(sb.ToString()); } foreach (var pc in contacts) { var sb = new StringBuilder(); sb.Append( "INSERT OR REPLACE INTO CONTACTS (ID, GROUP_ID, CONTACT_NAME, COMP_NAME, IP_ADDRESS, USE_COMP_NAME) VALUES("); sb.Append(pc.ID); sb.Append(", "); sb.Append(pc.GroupID); sb.Append(", '"); sb.Append(pc.Name); sb.Append("', '"); sb.Append(pc.ComputerName); sb.Append("', '"); sb.Append(pc.IpAddress); sb.Append("', "); sb.Append(Convert.ToInt32(pc.UseComputerName)); sb.Append(")"); sqlList.Add(sb.ToString()); } if (sqlList.Count > 0 && PNData.ExecuteTransactionForList(sqlList, PNData.ConnectionString)) { result = true; foreach (PNContactGroup pg in groups) { PNStatic.ContactGroups.RemoveAll(g => g.Name == pg.Name); PNStatic.ContactGroups.Add(pg); } foreach (PNContact pc in contacts) { PNStatic.Contacts.RemoveAll(c => c.Name == pc.Name); PNStatic.Contacts.Add(pc); } } return(result); } catch (Exception ex) { PNStatic.LogException(ex); return(false); } }
private void cmdOK_Click(object sender, RoutedEventArgs e) { try { if (_Mode == AddEditMode.Add) { _Contact = new PNContact { ID = _Id }; } _Contact.Name = txtContactName.Text.Trim(); if (optUseCompName.IsChecked != null) { _Contact.UseComputerName = optUseCompName.IsChecked.Value; } _Contact.ComputerName = txtCompName.Text.Trim(); if (optUseAddress.IsChecked != null && optUseAddress.IsChecked.Value) { _Contact.IpAddress = ipaAddress.Text; } if (_Contact.UseComputerName && string.IsNullOrEmpty(_Contact.IpAddress)) { try { Mouse.OverrideCursor = Cursors.Wait; if (!PNStatic.SetContactIpAddress(_Contact)) { //var msg = PNLang.Instance.GetMessageText("host_unknown", "No such host is known"); //msg = msg.Replace(PNStrings.PLACEHOLDER1, txtCompName.Text.Trim()); //PNMessageBox.Show(msg, PNStrings.PROG_NAME, MessageBoxButton.OK, MessageBoxImage.Error); //return; } } finally { Mouse.OverrideCursor = null; } } if (cboGroups.SelectedIndex > 0) { var group = (string)cboGroups.SelectedItem; var g = _Groups.FirstOrDefault(gr => gr.Name == group); if (g != null) { _Contact.GroupID = g.ID; } } else { _Contact.GroupID = -1; } if (ContactChanged != null) { var ce = new ContactChangedEventArgs(_Contact, _Mode); ContactChanged(this, ce); if (!ce.Accepted) { txtContactName.SelectAll(); txtContactName.Focus(); return; } } DialogResult = true; } catch (Exception ex) { PNStatic.LogException(ex); } }