Пример #1
0
        protected virtual ElementFieldFlags UpdateElement(
            ElementBase elem,
            InfContentsElem17 cttElem,
            InfElementsElemContainer17 elElem)
        {
#if DEBUG && !DEBUG_IN_PROD
            LogTo.Debug("[{0} {1}] Updating",
                        elem.GetType().Name,
                        elem.Id);
#endif

            ElementFieldFlags flags = ElementFieldFlags.None;

            void UpdateFlag(object sender, PropertyChangedEventArgs e)
            {
                var fieldFlag = ElementBase.FieldFlagMapping.SafeGet(e.PropertyName);

                flags |= fieldFlag;
            }

            elem.PropertyChanged += UpdateFlag;

            if (elElem != null)
            {
                elem.TitleTextId = elElem._elem.titleTextId;

                elem.TemplateId = elElem._elem.templateId;
                elem.ConceptId  = elElem._elem.conceptId;

                elem.ComponentPos = elElem._elem.componPos;
                // elem.AFactor = elElem._elem.AFactor
            }

            if (cttElem != null)
            {
                elem.Deleted = cttElem.deleted != 0;

                elem.ParentId      = cttElem.parentId;
                elem.FirstChildId  = cttElem.firstChildId;
                elem.LastChildId   = cttElem.lastChildId;
                elem.NextSiblingId = cttElem.nextSiblingId;
                elem.PrevSiblingId = cttElem.prevSiblingId;

                elem.DescendantCount = cttElem.descendantCount;
                elem.ChildrenCount   = cttElem.childrenCount;
            }

            elem.PropertyChanged -= UpdateFlag;

            elem.OnUpdated(flags);

            return(flags);
        }