private void cmdOK_Click(object sender, RoutedEventArgs e) { try { ContactGroupChangedEventArgs ce; if (m_Mode == AddEditMode.Add) { var cg = new PNContactGroup { Name = txtGroupName.Text.Trim(), ID = m_NewId }; ce = new ContactGroupChangedEventArgs(cg, m_Mode); } else { m_Group.Name = txtGroupName.Text.Trim(); ce = new ContactGroupChangedEventArgs(m_Group, m_Mode); } if (ContactGroupChanged != null) { ContactGroupChanged(this, ce); } if (!ce.Accepted) { txtGroupName.SelectAll(); txtGroupName.Focus(); return; } DialogResult = true; } catch (Exception ex) { PNStatic.LogException(ex); } }
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; } }
internal bool ContactGroupAction(PNContactGroup cg, AddEditMode mode) { try { if (mode == AddEditMode.Add) { if (_Groups.Any(g => g.Name == cg.Name)) { var message = PNLang.Instance.GetMessageText("group_exists", "Contacts group with this name already exists"); PNMessageBox.Show(message, PNStrings.PROG_NAME, MessageBoxButton.OK, MessageBoxImage.Information); return false; } _Groups.Add(cg); } else { var g = _Groups.FirstOrDefault(gr => gr.ID == cg.ID); if (g != null) { g.Name = cg.Name; } } fillGroups(false); return true; } catch (Exception ex) { PNStatic.LogException(ex); return false; } }
internal ContactGroupChangedEventArgs(PNContactGroup cg, AddEditMode mode) { _Group = cg; _Mode = mode; Accepted = true; }
internal WndGroups(PNContactGroup cg):this() { m_Mode = AddEditMode.Edit; m_Group = cg; }