Ejemplo n.º 1
0
 // 												{0}  {1:D2}  | #{text}   |   @{C065F955-1FAD-40df-B2FC-285D62F14E0A}
 public static ConfigItemVersion ToConfigItemVersion(object value)
 {
     if (value == null) throw new ConfigException("Cannot convert null");
     int type;
     ConfigItemVersion ver = null;
     string name = value.GetType().FullName;
     switch (name)
     {
         case "System.String":
             type = StringWithArgs.IsMatch((string)value)
                 ? ConfigValueType.StringWithArgs
                 : ConfigValueType.StringLiteral;
             ver = new CfgText { VersionValue = value, ValueType = type };
             break;
         case "System.Boolean":
             ver = new CfgBool { VersionValue = value };
             break;
         case "System.Drawing.Color":
             ver = new CfgColor { VersionValue = value };
             break;
         case "System.Decimal":
             ver = new CfgNumber{ VersionValue = value, ValueType = ConfigValueType.Decimal };
             break;
         case "System.Double":
         case "System.Float":
             ver = new CfgNumber{ VersionValue = value, ValueType = ConfigValueType.Real };
             break;
         case "System.Uri":
             //TODO ConfigurationService: CfgURI to be implemented
             break;
         case "Imarda.Lib.Measurement":
             ver = new CfgMeasurement { VersionValue = value, ValueType = ConfigValueType.Measurement };
             break;
         default:
             if (name.StartsWith("System.Xml.Xml"))
             {
                 ver = new CfgXml { VersionValue = value };
             }
             else if (name.StartsWith("System.Int") || name.StartsWith("System.UInt"))
             {
                 ver = new CfgNumber { VersionValue = value };
             }
             break;
     }
     return ver;
 }
Ejemplo n.º 2
0
        public override ConfigItemVersion Insert(ConfigItemVersion specific)
        {
            if (specific == null) return this;

            ConfigItemVersion result;
            IMeasurement generalValue = (IMeasurement)VersionValue;
            switch (specific.ValueType)
            {
                    // Multiply by a scalar.
                case ConfigValueType.Integer:
                case ConfigValueType.Decimal:
                case ConfigValueType.Real:
                    double d = Convert.ToDouble(specific.VersionValue);
                    result = Clone(this);
                    result.VersionValue = generalValue.AsMeasurement() * d;
                    return result;

                    // If specific string is something like "Speed:kph" then convert the Measurement
                    // to a speed and then to a string using the format specifier behind ':'. This
                    // format specifier is interpreted by the MeasurementFormatInfo.Default.
                    // The resulting item is a CfgText, no longer a CfgMeasurement!
                    // You can pass a CfgText as an Application Parameter and influence the formatting
                    // using application preferences.
                case ConfigValueType.StringLiteral:
                case ConfigValueType.StringWithArgs:
                    string s = (string)specific.VersionValue;
                    int p = s.IndexOf(':');
                    string name = s.Substring(0, p);
                    string unit = s.Substring(p + 1);
                    result = new CfgText(ConfigValueType.StringLiteral)
                    {
                        Combine = this.Combine,
                        UID = specific.UID,
                        VersionValue = generalValue.AsMeasurement().ToString(name, unit)
                    };
                    return result;
            }
            return null;
        }
Ejemplo n.º 3
0
 private static ConfigItemVersion Create(int type)
 {
     ConfigItemVersion result;
     switch (type)
     {
         case ConfigValueType.StringLiteral:
         case ConfigValueType.StringWithArgs:
             result = new CfgText(type);
             break;
         case ConfigValueType.Bool:
             result = new CfgBool();
             break;
         case ConfigValueType.Integer:
         case ConfigValueType.Decimal:
         case ConfigValueType.Real:
             result = new CfgNumber(type);
             break;
         case ConfigValueType.Color:
             result = new CfgColor();
             break;
         case ConfigValueType.Parameters:
             result = new CfgParams();
             break;
         case ConfigValueType.Xml:
             result = new CfgXml();
             break;
         case ConfigValueType.Measurement:
             result = new CfgMeasurement();
             break;
         //case ConfigValueType.Uri:
         //case ConfigValueType.Font:
         //case ConfigValueType.RichText:
         default:
             throw new ConfigException(type + ": data type is not yet supported");
     }
     return result;
 }