Mini Kabibi Habibi

Current Path : C:/Users/Public/Documents/DXperience 13.1 Demos/WPF/CS/GaugesDemo.Wpf/Modules/
Upload File :
Current File : C:/Users/Public/Documents/DXperience 13.1 Demos/WPF/CS/GaugesDemo.Wpf/Modules/LinearRanges.xaml.cs

using System;
using System.Windows;
using System.Windows.Threading;
using System.Windows.Media.Imaging;
using DevExpress.Xpf.DemoBase;
using DevExpress.Xpf.Gauges;

namespace GaugesDemo {
    public partial class LinearRanges : GaugesDemoModule {
        const int cloudyIndex = 0;
        const int snowyIndex = 1;
        const int rainyIndex = 2;
        const int sunnyIndex = 3;

        PressureState pressure;
        TemperatureState temperature = TemperatureState.High;

        public LinearRanges() {
            InitializeComponent();
        }
        void LowRangeIndicatorEnter(object sender, IndicatorEnterEventArgs e) {
            pressure = PressureState.Low;
            UpdateWeatherState();
        }
        void LowRangeIndicatorLeave(object sender, IndicatorLeaveEventArgs e) {
            LinearScaleRange range = sender as LinearScaleRange;
            if(range != null && e.NewValue < range.StartValueAbsolute) {
                pressure = PressureState.Undefined;
                UpdateWeatherState();
            }
        }
        void NormalRangeIndicatorEnter(object sender, IndicatorEnterEventArgs e) {
            pressure = PressureState.Normal;
            UpdateWeatherState();
        }
        void NormalRangeIndicatorLeave(object sender, IndicatorLeaveEventArgs e) {
            LinearScaleRange range = sender as LinearScaleRange;
            if(range != null) {
                pressure = e.NewValue < range.StartValueAbsolute ? PressureState.Low : PressureState.High;
                UpdateWeatherState();
            }
        }
        void HighRangeIndicatorEnter(object sender, IndicatorEnterEventArgs e) {
            pressure = PressureState.High;
            UpdateWeatherState();
        }
        void HighRangeIndicatorLeave(object sender, IndicatorLeaveEventArgs e) {
            LinearScaleRange range = sender as LinearScaleRange;
            if(range != null) {
                pressure = e.NewValue < range.StartValueAbsolute ? PressureState.Normal : PressureState.Undefined;
                UpdateWeatherState();
            }
        }
        void HighTemperatureIndicatorEnter(object sender, IndicatorEnterEventArgs e) {
            temperature = TemperatureState.High;
            UpdateWeatherState();
        }
        void HighTemperatureIndicatorLeave(object sender, IndicatorLeaveEventArgs e) {
            temperature = TemperatureState.Low;
            UpdateWeatherState();
        }
        void UpdateWeatherState() {
            switch(pressure) {
                case PressureState.Low:
                    stateIndicator.StateIndex = temperature == TemperatureState.Low ? snowyIndex : rainyIndex;
                    break;
                case PressureState.Normal:
                    stateIndicator.StateIndex = cloudyIndex;
                    break;
                case PressureState.High:
                    stateIndicator.StateIndex = sunnyIndex;
                    break;
                default:
                    stateIndicator.StateIndex = -1;
                    break;
            }
        }
    }
}