/// <summary> /// Initializes a new instance of the <see cref="FieldControlTab"/> class. /// </summary> /// <param name="source"> /// The source. /// </param> /// <param name="offset"> /// The offset. /// </param> /// <param name="fieldControl"> /// The field control. /// </param> /// <param name="rootLinkId"> /// The root link identifier. /// </param> public FieldControlTab(FieldControlTab source, int offset, FieldControl fieldControl, int rootLinkId) { this.FieldControl = fieldControl; this.Label = source?.Label; this.Type = source?.Type; var count = source?.NumberOfFields ?? 0; if (count > 0) { this.AllFields = new List <UPConfigFieldControlField>(count); for (var i = 0; i < count; i++) { this.AllFields.Add( new UPConfigFieldControlField( source.FieldAtIndex(i), offset + i, this, fieldControl.InfoAreaId, rootLinkId)); } } this.attributes = source?.AttributeArray; this.attributeDictionary = source?.AttributeDictionary; }
/// <summary> /// Initializes a new instance of the <see cref="UPConfigFieldControlField"/> class. /// </summary> /// <param name="source"> /// The source. /// </param> /// <param name="mode"> /// The mode. /// </param> /// <param name="tabConfig"> /// The tab configuration. /// </param> public UPConfigFieldControlField(UPConfigFieldControlField source, int mode, FieldControlTab tabConfig) { this.Field = source.Field; this.TabIndependentFieldIndex = source.TabIndependentFieldIndex; this.Attributes = source.Attributes.AttributesForMode(mode); this.TargetFieldNumber = source.TargetFieldNumber; this.ExplicitLabel = source.ExplicitLabel; this.Function = source.Function; this.TabConfig = tabConfig; }
/// <summary> /// Initializes a new instance of the <see cref="FieldControlTab"/> class. /// </summary> /// <param name="source"> /// The source. /// </param> /// <param name="mode"> /// The mode. /// </param> /// <param name="fieldControl"> /// The field control. /// </param> public FieldControlTab(FieldControlTab source, int mode, FieldControl fieldControl) { this.FieldControl = fieldControl; this.Label = source?.Label; this.Type = source?.Type; if (source != null && source.NumberOfFields > 0) { var fieldArray = new List <UPConfigFieldControlField>(source.NumberOfFields); fieldArray.AddRange(source.Fields.Select(field => new UPConfigFieldControlField(field, mode, this))); this.AllFields = fieldArray; } else { this.AllFields = new List <UPConfigFieldControlField>(); } }
/// <summary> /// Initializes a new instance of the <see cref="UPConfigFieldControlField"/> class. /// </summary> /// <param name="source"> /// The source. /// </param> /// <param name="tabIndependentFieldIndex"> /// Index of the tab independent field. /// </param> /// <param name="tabConfig"> /// The tab configuration. /// </param> /// <param name="rootInfoAreaId"> /// The root information area identifier. /// </param> /// <param name="rootLinkId"> /// The root link identifier. /// </param> public UPConfigFieldControlField( UPConfigFieldControlField source, int tabIndependentFieldIndex, FieldControlTab tabConfig, string rootInfoAreaId, int rootLinkId) { if (rootInfoAreaId != null && rootInfoAreaId == source.Field.InfoAreaId && rootLinkId >= 0 && rootLinkId == source.Field.LinkId) { this.Field = UPCRMField.FieldWithFieldIdInfoAreaIdLinkId(source.Field.FieldId, source.Field.InfoAreaId, -1); } else { this.Field = source.Field; } this.TabIndependentFieldIndex = tabIndependentFieldIndex; this.Attributes = source.Attributes; this.TargetFieldNumber = source.TargetFieldNumber; this.ExplicitLabel = source.ExplicitLabel; this.Function = source.Function; this.TabConfig = tabConfig; }
/// <summary> /// Initializes a new instance of the <see cref="UPConfigFieldControlField"/> class. /// </summary> /// <param name="def"> /// The definition. /// </param> /// <param name="tabIndependentFieldIndex"> /// Index of the tab independent field. /// </param> /// <param name="tabConfig"> /// The tab configuration. /// </param> public UPConfigFieldControlField(List <object> def, int tabIndependentFieldIndex, FieldControlTab tabConfig) { var linkId = 0; if (def.Count > 7) { linkId = JObjectExtensions.ToInt(def[7]); } var fieldattributedef = (def[2] as JArray)?.ToObject <List <object> >(); this.Attributes = fieldattributedef != null ? new FieldAttributes(fieldattributedef) : FieldAttributes.NoAttribute; UPCRMFieldParentLink fieldParentLink = null; var parentLinkString = this.Attributes.ExtendedOptionForKey("parentLink"); if (!string.IsNullOrEmpty(parentLinkString)) { fieldParentLink = UPCRMFieldParentLink.LinkFromString(parentLinkString); } if (fieldParentLink != null) { this.Field = new UPCRMField( JObjectExtensions.ToInt(def[1]), (string)def[0], linkId > 0 ? linkId : -1, fieldParentLink); } else if (linkId > 0) { this.Field = new UPCRMField(JObjectExtensions.ToInt(def[1]), (string)def[0], linkId); } else { this.Field = new UPCRMField(JObjectExtensions.ToInt(def[1]), (string)def[0]); } if (def.Count > 3) { this.TargetFieldNumber = JObjectExtensions.ToInt(def[3]); } var val = def[4] as string; if (val != null) { this.ExplicitLabel = val; } // val = [def objectAtIndex:5]; // if (val != [NSNull null]) tooltip = (NSString *) val; if (def.Count() > 6) { val = def[6] as string; if (val != null) { this.Function = val; } } this.TabConfig = tabConfig; this.TabIndependentFieldIndex = tabIndependentFieldIndex; }
/// <summary> /// Initializes a new instance of the <see cref="FieldControl"/> class. /// </summary> /// <param name="definition"> /// The definition. /// </param> public FieldControl(List <object> definition) { if (definition == null || definition.Count < 6) { return; } this.UnitName = (string)definition[0]; this.InfoAreaId = (string)definition[1]; this.ControlName = (string)definition[2]; var tabdefs = (definition[3] as JArray)?.ToObject <List <object> >(); if (tabdefs == null) { return; } var sortFieldDef = (definition[4] as JArray)?.ToObject <List <object> >(); var attributeDef = (definition[5] as JArray)?.ToObject <List <object> >(); // empty minidetails int i, count = tabdefs.Count; if (count > 0) { var tabs = new List <FieldControlTab>(count); var fieldOffset = 0; for (i = 0; i < count; i++) { var tabDef = (tabdefs[i] as JArray)?.ToObject <List <object> >(); if (tabDef == null) { continue; } var tab = new FieldControlTab(tabDef, fieldOffset, this); tabs.Add(tab); fieldOffset += tab.NumberOfFields; } this.Tabs = tabs; } if (sortFieldDef != null) { count = sortFieldDef.Count; var sortFields = new List <FieldControlSortField>(count); for (i = 0; i < count; i++) { var sdef = (sortFieldDef[i] as JArray)?.ToObject <List <object> >(); if (sdef == null) { return; } sortFields.Add(new FieldControlSortField(sdef, this.InfoAreaId)); } this.sortFields = sortFields; } if (attributeDef != null) { var attributes = new Dictionary <string, string>(); foreach (JArray keyval in attributeDef) { attributes[keyval[0].ToObject <string>()] = keyval[1]?.ToObject <string>(); } this.Attributes = attributes; } }