Esempio n. 1
0
        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;
        }
Esempio n. 2
0
        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);
            }
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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;
            }
        }
Esempio n. 5
0
        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();
        }