Exemplo n.º 1
0
        public override void PrepareFilter()
        {
            IndividualListFilter iFilter = (IndividualListFilter)fFilter;

            filter_abd = GEDCOMDate.GetUDNByFormattedStr(iFilter.AliveBeforeDate, GEDCOMCalendar.dcGregorian);

            if (iFilter.GroupRef == "")
            {
                filter_grp = null;
            }
            else
            {
                filter_grp = fBaseContext.Tree.XRefIndex_Find(iFilter.GroupRef) as GEDCOMGroupRecord;
            }

            if (iFilter.SourceRef == "")
            {
                filter_source = null;
            }
            else
            {
                filter_source = fBaseContext.Tree.XRefIndex_Find(iFilter.SourceRef) as GEDCOMSourceRecord;
            }
        }
Exemplo n.º 2
0
        private bool CheckSpecificFilter()
        {
            bool result = false;

            IndividualListFilter iFilter = (IndividualListFilter)fFilter;

            if ((iFilter.Sex == GEDCOMSex.svNone || fRec.Sex == iFilter.Sex) &&
                (iFilter.Name == "*" || IsMatchesMask(buf_fullname, iFilter.Name)) &&
                (iFilter.Residence == "*" || HasPlace()) &&
                (iFilter.EventVal == "*" || HasEventVal()) &&
                (!iFilter.PatriarchOnly || fRec.Patriarch))
            {
                bool isLive = (buf_dd == null);

                switch (iFilter.FilterLifeMode)
                {
                case FilterLifeMode.lmOnlyAlive:
                    if (!isLive)
                    {
                        return(false);
                    }
                    break;

                case FilterLifeMode.lmOnlyDead:
                    if (isLive)
                    {
                        return(false);
                    }
                    break;

                case FilterLifeMode.lmAliveBefore:
                    UDN bdt = (buf_bd == null) ? UDN.CreateEmpty() : buf_bd.Date.GetUDN();
                    UDN ddt = (buf_dd == null) ? UDN.CreateEmpty() : buf_dd.Date.GetUDN();
                    if ((bdt.CompareTo(filter_abd) > 0) || (ddt.CompareTo(filter_abd) < 0))
                    {
                        return(false);
                    }
                    break;

                case FilterLifeMode.lmTimeLocked:
                    break;
                }

                switch (iFilter.FilterGroupMode)
                {
                case FilterGroupMode.All:
                    break;

                case FilterGroupMode.None:
                    if (fRec.Groups.Count != 0)
                    {
                        return(false);
                    }
                    break;

                case FilterGroupMode.Any:
                    if (fRec.Groups.Count == 0)
                    {
                        return(false);
                    }
                    break;

                case FilterGroupMode.Selected:
                    if (fRec.IndexOfGroup(filter_grp) < 0)
                    {
                        return(false);
                    }
                    break;
                }

                switch (iFilter.SourceMode)
                {
                case FilterGroupMode.All:
                    break;

                case FilterGroupMode.None:
                    if (fRec.SourceCitations.Count != 0)
                    {
                        return(false);
                    }
                    break;

                case FilterGroupMode.Any:
                    if (fRec.SourceCitations.Count == 0)
                    {
                        return(false);
                    }
                    break;

                case FilterGroupMode.Selected:
                    if (fRec.IndexOfSource(filter_source) < 0)
                    {
                        return(false);
                    }
                    break;
                }

                result = true;
            }

            return(result);
        }
Exemplo n.º 3
0
 protected override void CreateFilter()
 {
     fFilter = new IndividualListFilter();
 }