public ToxyBusinessCards Parse() { string path = Context.Path; ToxyBusinessCards tbcs = new ToxyBusinessCards(); using (StreamReader sr = new StreamReader(path)) { while (!sr.EndOfStream) { var card = new vCard(sr); ToxyBusinessCard tbc = new ToxyBusinessCard(); tbc.Name = new ToxyName(); if (!string.IsNullOrEmpty(card.FormattedName)) tbc.Name.FullName = card.FormattedName; tbc.Name.FirstName = card.GivenName; tbc.Name.MiddleName = card.AdditionalNames; tbc.Name.LastName = card.FamilyName; tbc.ProductID = card.ProductId; foreach(var vSource in card.Sources) { tbc.Sources.Add(vSource.Uri.OriginalString); } tbc.Orgnization = card.Organization; tbc.Title = card.Title; tbc.Gender = card.Gender == vCardGender.Male ? GenderType.Male : GenderType.Female; if (card.Nicknames.Count > 0) { tbc.NickName = new ToxyName(); tbc.NickName.FullName = card.Nicknames[0]; } foreach (var dAddr in card.DeliveryAddresses) { var tAddr= new ToxyAddress(); tAddr.City = dAddr.City; tAddr.Street = dAddr.Street; tAddr.Country = dAddr.Country; tAddr.Region = dAddr.Region; tAddr.PostalCode = dAddr.PostalCode; tbc.Addresses.Add(tAddr); } foreach (var vphone in card.Phones) { tbc.Contacts.Add(new ToxyContact(vphone.PhoneType.ToString(), vphone.FullNumber)); } foreach (var vEmail in card.EmailAddresses) { tbc.Contacts.Add(new ToxyContact(vEmail.EmailType.ToString(), vEmail.Address)); } foreach (var vWebsite in card.Websites) { tbc.Contacts.Add(new ToxyContact("Url-"+ vWebsite.WebsiteType.ToString(), vWebsite.Url)); } tbcs.Cards.Add(tbc); } } return tbcs; }
private void openToolStripMenuItem_Click(object sender, EventArgs e) { OpenFileDialog dialog = new OpenFileDialog(); dialog.Multiselect = false; dialog.Filter = "Business Card Files (*.vcf)|*.vcf"; if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) { string path = dialog.FileName; ParserContext context = new ParserContext(path); VCardDocumentParser vparser = ParserFactory.CreateVCard(context); bcs = vparser.Parse(); FillListView(bcs, checkBox1.Checked, checkBox2.Checked); } }
public ToxyBusinessCards Parse() { if (!File.Exists(Context.Path)) { throw new FileNotFoundException("File " + Context.Path + " is not found"); } string path = Context.Path; ToxyBusinessCards tbcs = new ToxyBusinessCards(); using (StreamReader sr = new StreamReader(path)) { while (!sr.EndOfStream) { var card = new vCard(sr); ToxyBusinessCard tbc = new ToxyBusinessCard(); tbc.Name = new ToxyName(); if (!string.IsNullOrEmpty(card.FormattedName)) { tbc.Name.FullName = card.FormattedName; } tbc.Name.FirstName = card.GivenName; tbc.Name.MiddleName = card.AdditionalNames; tbc.Name.LastName = card.FamilyName; tbc.ProductID = card.ProductId; foreach (var vSource in card.Sources) { tbc.Sources.Add(vSource.Uri.OriginalString); } tbc.Orgnization = card.Organization; tbc.Title = card.Title; tbc.Gender = card.Gender == vCardGender.Male ? GenderType.Male : GenderType.Female; if (card.Nicknames.Count > 0) { tbc.NickName = new ToxyName(); tbc.NickName.FullName = card.Nicknames[0]; } foreach (var dAddr in card.DeliveryAddresses) { var tAddr = new ToxyAddress(); tAddr.City = dAddr.City; tAddr.Street = dAddr.Street; tAddr.Country = dAddr.Country; tAddr.Region = dAddr.Region; tAddr.PostalCode = dAddr.PostalCode; tbc.Addresses.Add(tAddr); } foreach (var vphone in card.Phones) { tbc.Contacts.Add(new ToxyContact(vphone.PhoneType.ToString(), vphone.FullNumber)); } foreach (var vEmail in card.EmailAddresses) { tbc.Contacts.Add(new ToxyContact(vEmail.EmailType.ToString(), vEmail.Address)); } foreach (var vWebsite in card.Websites) { tbc.Contacts.Add(new ToxyContact("Url-" + vWebsite.WebsiteType.ToString(), vWebsite.Url)); } tbcs.Cards.Add(tbc); } } return(tbcs); }
private void ShowDocument(string filepath, string encoding, string extension) { ParserContext context = new ParserContext(filepath); context.Encoding = Encoding.GetEncoding(encoding); if (Mode == ViewMode.Text) { AppendRichTextBox(); var tparser = ParserFactory.CreateText(context); rtbPanel.Text = tparser.Parse(); tbParserType.Text = tparser.GetType().Name; } else if (Mode == ViewMode.Structured) { switch (extension) { case ".csv": AppendSpreadsheetGrid(); context.Properties.Add("HasHeader", "1"); ISpreadsheetParser csvparser = ParserFactory.CreateSpreadsheet(context); ss = csvparser.Parse(); tbParserType.Text = csvparser.GetType().Name; var table1 = ss.Tables[0]; ShowToGrid(table1); cbSheets.Items.Clear(); foreach (var table in ss.Tables) { cbSheets.Items.Add(table.Name); } cbSheets.SelectedIndex = 0; panel1.Visible = true; break; case ".xlsx": case ".xls": AppendSpreadsheetGrid(); ISpreadsheetParser ssparser = ParserFactory.CreateSpreadsheet(context); ss = ssparser.Parse(); tbParserType.Text = ssparser.GetType().Name; var table0 = ss.Tables[0]; ShowToGrid(table0); cbSheets.Items.Clear(); foreach (var table in ss.Tables) { cbSheets.Items.Add(table.Name); } cbSheets.SelectedIndex = 0; panel1.Visible = true; break; case ".vcf": AppendDataGridView(); var vparser = ParserFactory.CreateVCard(context); ToxyBusinessCards vcards = vparser.Parse(); tbParserType.Text = vparser.GetType().Name; gridPanel.GridView.DataSource = vcards.ToDataTable().DefaultView; break; case ".pptx": //TODO: show slides break; case ".xml": case ".htm": case ".html": AppendTreePanel(); var domparser = ParserFactory.CreateDom(context); ToxyDom htmlDom = domparser.Parse(); TreeNode rootNode = treePanel.Tree.Nodes.Add(htmlDom.Root.NodeString); treePanel.Tree.BeginUpdate(); AppendTree(rootNode, htmlDom.Root); treePanel.Tree.EndUpdate(); //rootNode.ExpandAll(); break; } } else { AppendPropertyListPanel(); var tparser = ParserFactory.CreateMetadata(context); ToxyMetadata metadatas = tparser.Parse(); plPanel.Clear(); foreach (var data in metadatas) { plPanel.AddItem(data.Name, data.Value.ToString()); } tbParserType.Text = tparser.GetType().Name; } }
void FillListView(ToxyBusinessCards bcs, bool includeEmptyContacts, bool includeDuplicateName) { listView1.Items.Clear(); int total = 0; bcs.IncludeEmptyContact = includeEmptyContacts; Dictionary <string, ToxyBusinessCard> tbcs = new Dictionary <string, ToxyBusinessCard>(); foreach (var card in bcs.Cards) { ListViewItem item = new ListViewItem(); item.Text = card.Name.FullName; string fax = null; int phoneCount = 0; bool isEmpty = true; if (!includeDuplicateName) { if (!tbcs.ContainsKey(card.Name.FullName)) { tbcs.Add(card.Name.FullName, card); } else { continue; } } foreach (var contact in card.Contacts) { if (contact.Name == "Cellular" || contact.Name == "Home" || contact.Name == "Work" || contact.Name == "Voice") { phoneCount++; item.SubItems.Add(contact.Value); isEmpty = false; } else if (contact.Name == "Internet" || contact.Name == "Url-Default") { //item.SubItems.Add(contact.Value); } else if (contact.Name.StartsWith("Fax,")) { fax = contact.Value; isEmpty = false; } else { string x = contact.Name; } } if (!string.IsNullOrEmpty(fax)) { while (3 - phoneCount > 0) { item.SubItems.Add(""); phoneCount++; } item.SubItems.Add(fax); } if (includeEmptyContacts) { listView1.Items.Add(item); total++; } else if (!isEmpty) { total++; listView1.Items.Add(item); } } label2.Text = total.ToString(); }