/// <summary>
        /// Input unparsed string (such as "100Kb") and
        /// output number in bytes as string ("102400 bytes")
        /// </summary>
        /// <param name="value"></param>
        /// <param name="targetType"></param>
        /// <param name="parameter">Can contain an array of 2 UInt64 numbers
        /// which are interpreted as Min Max values for resulting number of bytes</param>
        /// <param name="culture"></param>
        /// <returns></returns>
        public object Convert(object value,
                              Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            if (value == null)
            {
                return(Binding.DoNothing);
            }

            string stringInput = value as string;

            if (stringInput != null)
            {
                if (!string.IsNullOrEmpty(value.ToString()))
                {
                    ulong    numberOfBytes;
                    string[] inputComponents;
                    if (FileSizeContext.ConvertUnparsedSizeToBytesInt(value, out numberOfBytes, out inputComponents) == true)
                    {
                        ulong[] iMinMax = parameter as ulong[];

                        if (iMinMax != null)
                        {
                            if (iMinMax.Length == 2)
                            {
                                ulong iMin = iMinMax[0];
                                ulong iMax = iMinMax[1];

                                if (numberOfBytes < iMin || numberOfBytes > iMax)
                                {
                                    string  sMin, sMax;
                                    MemUnit sizeUnit;
                                    double  d = NumberToBestSizeConverter.GetHumanReadableSize(iMin, out sizeUnit);
                                    sMin = string.Format("{0} {1}", Math.Round(d, 2).ToString(), sizeUnit);

                                    d    = NumberToBestSizeConverter.GetHumanReadableSize(iMax, out sizeUnit);
                                    sMax = string.Format("{0} {1}", Math.Round(d, 2).ToString(), sizeUnit);

                                    return(string.Format("(Out of range [{0}, {1}])", sMin, sMax));
                                }
                            }
                        }

                        return(string.Format("{0} bytes", numberOfBytes));
                    }
                    else
                    {
                        return(string.Format("Syntax Error: '{0}'", stringInput));
                    }
                }
            }

            return(Binding.DoNothing);
        }
Example #2
0
        /// <summary>
        /// Input unparsed string (such as "100Kb") plus an array of MinManx values
        /// of type ulong in parameter object and output whether the input can be
        /// converted OK and is within the MinMax range (true) or not (false).
        /// </summary>
        /// <param name="value"></param>
        /// <param name="targetType"></param>
        /// <param name="parameter">Can contain an array of 2 UInt64 numbers
        /// which are interpreted as Min Max values for resulting number of bytes</param>
        /// <param name="culture"></param>
        /// <returns></returns>
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            if (value == null)
            {
                return(false);
            }

            string stringInput = value as string;

            if (stringInput != null)
            {
                if (!string.IsNullOrEmpty(value.ToString()))
                {
                    ulong    numberOfBytes;
                    string[] inputComponents;
                    if (FileSizeContext.ConvertUnparsedSizeToBytesInt(value, out numberOfBytes, out inputComponents) == true)
                    {
                        ulong[] iMinMax = parameter as ulong[];

                        if (iMinMax != null)
                        {
                            if (iMinMax.Length == 2)
                            {
                                ulong iMin = iMinMax[0];
                                ulong iMax = iMinMax[1];

                                if (numberOfBytes < iMin || numberOfBytes > iMax)
                                {
                                    // Number is out of bounds (false == Visible error message)
                                    return(System.Windows.Visibility.Visible);
                                }
                            }
                        }

                        // Number should be OK (true == Invisible error message)
                        return(System.Windows.Visibility.Collapsed);
                    }
                }
            }

            // Syntax error - (false == Visible error message)
            return(System.Windows.Visibility.Visible);
        }
Example #3
0
        /// <summary>
        /// Input unparsed string (such as "100Kb") and
        /// output number in bytes as string ("102400 bytes")
        /// </summary>
        /// <param name="value"></param>
        /// <param name="targetType"></param>
        /// <param name="parameter">Can contain an array of 2 UInt64 numbers
        /// which are interpreted as Min Max values for resulting number of bytes</param>
        /// <param name="culture"></param>
        /// <returns></returns>
        public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            if (values == null)
            {
                return(Binding.DoNothing);
            }

            string stringInput = string.Empty;

            if (values.Length == 1)
            {
                if (values[0] != null)
                {
                    stringInput = string.Format("{0}", values[0]);
                }
            }
            else
            {
                if (values.Length == 2)
                {
                    if (values[0] != null && values[1] != null)
                    {
                        stringInput = string.Format("{0} {1}", values[0], values[1]);
                    }
                }
            }

            if (stringInput.Length == 0)
            {
                return(Binding.DoNothing);
                ////throw new NotImplementedException(string.Format("One or Two input values are required for conversion, but there are; {0}", values.Length));
            }

            ulong numberOfBytes;

            string[] inputComponents;
            if (FileSizeContext.ConvertUnparsedSizeToBytesInt(stringInput, out numberOfBytes, out inputComponents) == true)
            {
                ulong[] iMinMax = parameter as ulong[];

                if (iMinMax != null)
                {
                    if (iMinMax.Length == 2)
                    {
                        ulong iMin = iMinMax[0];
                        ulong iMax = iMinMax[1];

                        if (numberOfBytes < iMin || numberOfBytes > iMax)
                        {
                            return(System.Windows.Visibility.Visible); // Number is out of bounds (false == Visible error message)
                        }
                    }
                }

                // Number should be OK (true == Invisible error message)
                return(System.Windows.Visibility.Collapsed);
            }

            // Syntax error (false == Visible error message)
            return(System.Windows.Visibility.Visible);
        }
        /// <summary>
        /// Input unparsed string (such as "100Kb") and
        /// output number in bytes as string ("102400 bytes")
        /// </summary>
        /// <param name="value"></param>
        /// <param name="targetType"></param>
        /// <param name="parameter">Can contain an array of 2 UInt64 numbers
        /// which are interpreted as Min Max values for resulting number of bytes</param>
        /// <param name="culture"></param>
        /// <returns></returns>
        public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            if (values == null)
            {
                return(Binding.DoNothing);
            }

            string stringInput = string.Empty;

            if (values.Length == 1)
            {
                if (values[0] != null)
                {
                    stringInput = string.Format("{0}", values[0]);
                }
            }
            else
            {
                if (values.Length == 2)
                {
                    if (values[0] != null && values[1] != null)
                    {
                        stringInput = string.Format("{0} {1}", values[0], values[1]);
                    }
                }
            }

            if (stringInput.Length == 0)
            {
                return(Binding.DoNothing);
                ////throw new NotImplementedException(string.Format("One or Two input values are required for conversion, but there are; {0}", values.Length));
            }

            // Convert an iinput string such as, "100 Mb" into a byte string represantation, such as, "1000 bytes"
            ulong numberOfBytes;

            string[] inputComponents;
            if (FileSizeContext.ConvertUnparsedSizeToBytesInt(stringInput, out numberOfBytes, out inputComponents) == true)
            {
                ulong[] iMinMax = parameter as ulong[];

                if (iMinMax != null)
                {
                    if (iMinMax.Length == 2)
                    {
                        ulong iMin = iMinMax[0];
                        ulong iMax = iMinMax[1];

                        if (numberOfBytes < iMin || numberOfBytes > iMax)
                        {
                            string  sMin, sMax;
                            MemUnit sizeUnit;
                            double  d = NumberToBestSizeConverter.GetHumanReadableSize(iMin, out sizeUnit);
                            sMin = string.Format("{0} {1}", Math.Round(d, 2).ToString(), sizeUnit);

                            d    = NumberToBestSizeConverter.GetHumanReadableSize(iMax, out sizeUnit);
                            sMax = string.Format("{0} {1}", Math.Round(d, 2).ToString(), sizeUnit);

                            return(string.Format("(Out of range [{0}, {1}])", sMin, sMax));
                        }
                    }
                }

                return(string.Format("{0} bytes", numberOfBytes));
            }

            return(string.Format("Syntax Error: '{0}'", stringInput));
        }