Beispiel #1
0
        /// <summary>
        /// The formatted field value at index.
        /// </summary>
        /// <param name="index">
        /// The index.
        /// </param>
        /// <param name="offset">
        /// The offset.
        /// </param>
        /// <param name="fieldControl">
        /// The field control.
        /// </param>
        /// <returns>
        /// The <see cref="string"/>.
        /// </returns>
        public string FormattedFieldValueAtIndex(int index, int?offset, FieldControl fieldControl)
        {
            UPConfigFieldControlField configField     = fieldControl.FieldAtIndex(index);
            FieldAttributes           fieldAttributes = configField.Attributes;
            string result = null;
            int    innerOffset;

            innerOffset = offset ?? 0;

            if (fieldAttributes.FieldCount > 1)
            {
                List <string> values = !string.IsNullOrEmpty(fieldAttributes.ExtendedOptionForKey("GPS"))
                    ? new List <string> {
                    this.RawValueAtIndex(configField.TabIndependentFieldIndex)
                }
                    : new List <string> {
                    this.ValueAtIndex(configField.TabIndependentFieldIndex)
                };

                int k;
                for (k = 1; k < fieldAttributes.FieldCount; k++)
                {
                    UPConfigFieldControlField childfieldConfig = fieldControl.FieldAtIndex(index + ++innerOffset);
                    if (childfieldConfig != null)
                    {
                        string value = (!string.IsNullOrEmpty(fieldAttributes.ExtendedOptionForKey("GPS"))
                            ? this.RawValueAtIndex(childfieldConfig.TabIndependentFieldIndex)
                            : this.ValueAtIndex(childfieldConfig.TabIndependentFieldIndex)) ?? string.Empty;

                        values.Add(value);
                    }
                }

                if (!string.IsNullOrEmpty(fieldAttributes.ExtendedOptionForKey("GPS")))
                {
                    bool firstFieldLongtitude = fieldAttributes.ExtendedOptionForKey("GPS") == "X";
                    if (values.Count >= 2)
                    {
#if PORTING
                        int longtitudeNumberValue;
                        int latitudeNumberValue;
                        if (firstFieldLongtitude)
                        {
                            longtitudeNumberValue = values[0].GpsLongtitudeNumberValue();
                            latitudeNumberValue   = values[1].GpsLatitudeNumberValue();
                        }
                        else
                        {
                            longtitudeNumberValue = values[1].GpsLongtitudeNumberValue();
                            latitudeNumberValue   = values[0].GpsLatitudeNumberValue();
                        }

                        string longtitudeString = longtitudeNumberValue.FormatedLongtitudeValue();
                        string lattitudeString  = latitudeNumberValue.FormatedLatitudeValue();
                        result = $"{lattitudeString} / {longtitudeString}";
#endif
                    }
                }
                else
                {
                    result = fieldAttributes.FormatValues(values);
                }
            }
            else
            {
                result = this.ValueAtIndex(configField.TabIndependentFieldIndex);
            }

            return(result);
        }