コード例 #1
0
ファイル: Form2.cs プロジェクト: BackupTheBerlios/gedmill-svn
        // Attaches sub-items to a list item (before the list item is added to the list)
        private void SetSourceSubItems(CListableBool lbItem, CSourceRecord sr, bool bFirstColumnIsCheckbox)
        {
            // Store checkbox value because SubItems.Clear() clears item.Text and item.Checked as well!
            bool bWasChecked = lbItem.Checked;
            lbItem.SubItems.Clear();
            lbItem.Checked = bWasChecked;

            if (bFirstColumnIsCheckbox)
            {
                // First nColumn (ie. item) is checkbox, so first sub-item is title.
                lbItem.SubItems.Add(new CListableSource(sr));
            }

            string sRepositories = "";
            foreach (CSourceRepositoryCitation src in sr.m_alSourceRepositoryCitations)
            {
                CRepositoryRecord rr = m_gedcom.GetRepositoryRecord(src.m_xrefRepo);
                if (rr != null)
                {
                    if (rr.m_sNameOfRepository != null && rr.m_sNameOfRepository != "")
                    {
                        if (sRepositories != "")
                        {
                            sRepositories += ", ";
                        }
                        sRepositories += rr.m_sNameOfRepository;
                    }
                }
            }
            lbItem.SubItems.Add(new ListViewItem.ListViewSubItem(lbItem, sRepositories));

            int nBirths = 0;
            int nMarriages = 0;
            int nDeaths = 0;
            int nIndis = 0;
            int nFamilies = 0;
            int nNotes = 0;
            int nOther = 0;
            int nCitations = 0;
            if (sr.m_alBackreferences.Count > 0)
            {
                foreach (CBackReference br in sr.m_alBackreferences)
                {
                    switch (br.m_sEventType)
                    {
                        case "BIRT":
                            nBirths++;
                            nCitations++;
                            break;
                        case "MARR":
                            nMarriages++;
                            nCitations++;
                            break;
                        case "DEAT":
                            nCitations++;
                            nDeaths++;
                            break;
                        default:
                            switch (br.m_ertRecordType)
                            {
                                case ERecordType.Individual:
                                    nCitations++;
                                    nIndis++;
                                    break;
                                case ERecordType.Family:
                                    // Strictly this should be plus 2 if husb & wife both known, otherwise 1 or 0.
                                    nCitations++;
                                    nFamilies++;
                                    break;
                                case ERecordType.Note:
                                    nNotes++;
                                    break;
                                default:
                                    nOther++;
                                    break;
                            }
                            break;
                    }
                }
            }

            lbItem.SubItems.Add(new ListViewItem.ListViewSubItem(lbItem, nCitations.ToString()));
            lbItem.SubItems.Add(new ListViewItem.ListViewSubItem(lbItem, nBirths.ToString()));
            lbItem.SubItems.Add(new ListViewItem.ListViewSubItem(lbItem, nMarriages.ToString()));
            lbItem.SubItems.Add(new ListViewItem.ListViewSubItem(lbItem, nDeaths.ToString()));
            lbItem.SubItems.Add(new CListableString(sr.m_xref));

            int nVisiblePics = sr.CountVisibleMFRs();
            int nTotalPics = sr.CountAllMFRs();

            if (nVisiblePics != nTotalPics)
            {
                lbItem.SubItems.Add(new CListableNumber(nVisiblePics, String.Format("{0}/{1}", nVisiblePics, nTotalPics)));
            }
            else
            {
                lbItem.SubItems.Add(new CListableNumber(nTotalPics, String.Format("{0}", nTotalPics)));
            }
            lbItem.Checked = bWasChecked;
        }