/// <summary>
        /// Handles DataUpdated event from ultraviolet sensor.
        /// </summary>
        /// <param name="sender">Object which invoked the event.</param>
        /// <param name="e">Ultraviolet sensor data.</param>
        private void OnDataUpdated(object sender, UltravioletSensorDataUpdatedEventArgs e)
        {
            UvLevel level = UvLevel.None;

            if (e.UltravioletIndex < 3.0)
            {
                level = UvLevel.Low;
            }
            else if (e.UltravioletIndex < 6.0)
            {
                level = UvLevel.Moderate;
            }
            else if (e.UltravioletIndex < 8.0)
            {
                level = UvLevel.High;
            }
            else if (e.UltravioletIndex < 11.0)
            {
                level = UvLevel.VeryHigh;
            }
            else
            {
                level = UvLevel.Extreme;
            }

            UvLevelUpdated?.Invoke(this, level);
        }
        /// <summary>
        /// Gets text color associated with UvLevel enum value.
        /// </summary>
        /// <param name="value">Type of uv level.</param>
        /// <returns>Color of the text associated with UvLevel enum value.</returns>
        public static Color GetTextColor(this UvLevel value)
        {
            if (!(GetLevelDescriptionAttribute(value) is UvLevelDescriptionAttribute levelAttribute))
            {
                return(Color.Black);
            }

            return(levelAttribute.TextColor);
        }
        /// <summary>
        /// Gets uv index associated with UvLevel enum value.
        /// </summary>
        /// <param name="value">Type of uv level.</param>
        /// <returns>Uv index associated with UvLevel enum value.</returns>
        public static string GetUvIndex(this UvLevel value)
        {
            if (!(GetLevelDescriptionAttribute(value) is UvLevelDescriptionAttribute levelAttribute))
            {
                return(null);
            }

            return(levelAttribute.UvIndex);
        }
        /// <summary>
        /// Gets filename associated with UvLevel enum value.
        /// </summary>
        /// <param name="value">Type of uv level.</param>
        /// <returns>Filename associated with UvLevel enum value.</returns>
        public static string GetFilename(this UvLevel value)
        {
            if (!(GetLevelDescriptionAttribute(value) is UvLevelDescriptionAttribute levelAttribute))
            {
                return(null);
            }

            return(levelAttribute.Filename);
        }
        /// <summary>
        /// Gets UvLevelDescriptionAttribute associated with UvLevel value.
        /// </summary>
        /// <param name="value">Type of uv level.</param>
        /// <returns>Attributes associated with UvLevel enum value.</returns>
        private static UvLevelDescriptionAttribute GetLevelDescriptionAttribute(UvLevel value)
        {
            if (!(value.GetType().GetField(value.ToString()) is FieldInfo fieldInfo))
            {
                return(null);
            }

            if (!(fieldInfo.GetCustomAttribute(typeof(UvLevelDescriptionAttribute))
                  is UvLevelDescriptionAttribute levelAttribute))
            {
                return(null);
            }

            return(levelAttribute);
        }
示例#6
0
 /// <summary>
 /// Initializes class.
 /// </summary>
 /// <param name="level">Uv level.</param>
 public DetailsViewModel(UvLevel level)
 {
     Level = level;
 }