using CyberX8_Themes.CustomControls;
using MECF.Framework.Common.CommonData.Metal;
using MECF.Framework.Common.Equipment;
using MECF.Framework.Common.OperationCenter;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace CyberX8_Themes.UserControls
{
    /// <summary>
    /// AnolyteMetalControl.xaml 的交互逻辑
    /// </summary>
    public partial class AnolyteMetalControl : UserControl
    {
        public AnolyteMetalControl()
        {
            InitializeComponent();
        }

        public static readonly DependencyProperty MetalNameProperty = DependencyProperty.Register(
           "MetalName", typeof(string), typeof(AnolyteMetalControl),
           new FrameworkPropertyMetadata("", FrameworkPropertyMetadataOptions.AffectsRender));
        public string MetalName
        {
            get { return (string)this.GetValue(MetalNameProperty);}
            set { this.SetValue(MetalNameProperty, value); }
        }

        public static readonly DependencyProperty IsEnableProperty = DependencyProperty.Register(
            "IsEnable", typeof(bool), typeof(AnolyteMetalControl), new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.AffectsRender));
        public bool IsEnable
        {
            get { return (bool)this.GetValue(IsEnableProperty); }
            set { this.SetValue(IsEnableProperty, value); }
        }

        public static readonly DependencyProperty IsFolwDeltaUnBlanceProperty = DependencyProperty.Register(
            "IsFolwDeltaUnBlance", typeof(bool), typeof(AnolyteMetalControl), new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.AffectsRender));
        public bool IsFolwDeltaUnBlance
        {
            get { return (bool)this.GetValue(IsFolwDeltaUnBlanceProperty); }
            set { this.SetValue(IsFolwDeltaUnBlanceProperty, value); }
        }
        public static readonly DependencyProperty IsMetalCellSideAHighProperty = DependencyProperty.Register(
            "IsMetalCellSideAHigh", typeof(bool), typeof(AnolyteMetalControl), new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.AffectsRender));
        public bool IsMetalCellSideAHigh
        {
            get { return (bool)this.GetValue(IsMetalCellSideAHighProperty); }
            set { this.SetValue(IsMetalCellSideAHighProperty, value); }
        }

        public static readonly DependencyProperty IsMetalCellSideALowProperty = DependencyProperty.Register(
            "IsMetalCellSideALow", typeof(bool), typeof(AnolyteMetalControl), new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.AffectsRender));
        public bool IsMetalCellSideALow
        {
            get { return (bool)this.GetValue(IsMetalCellSideALowProperty); }
            set { this.SetValue(IsMetalCellSideALowProperty, value); }
        }

        public static readonly DependencyProperty IsMetalCellSideBHighProperty = DependencyProperty.Register(
            "IsMetalCellSideBHigh", typeof(bool), typeof(AnolyteMetalControl), new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.AffectsRender));
        public bool IsMetalCellSideBHigh
        {
            get { return (bool)this.GetValue(IsMetalCellSideBHighProperty); }
            set { this.SetValue(IsMetalCellSideBHighProperty, value); }
        }

        public static readonly DependencyProperty IsMetalCellSideBLowProperty = DependencyProperty.Register(
            "IsMetalCellSideBLow", typeof(bool), typeof(AnolyteMetalControl), new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.AffectsRender));
        public bool IsMetalCellSideBLow
        {
            get { return (bool)this.GetValue(IsMetalCellSideBLowProperty); }
            set { this.SetValue(IsMetalCellSideBLowProperty, value); }
        }


        public static readonly DependencyProperty ANPumpEnableProperty = DependencyProperty.Register(
           "ANPumpEnable", typeof(bool), typeof(AnolyteMetalControl), new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.AffectsRender));
        public bool ANPumpEnable
        {
            get { return (bool)this.GetValue(ANPumpEnableProperty); }
            set { this.SetValue(ANPumpEnableProperty, value); }
        }

        public static readonly DependencyProperty IsManualModeProperty = DependencyProperty.Register(
           "IsManualMode", typeof(bool), typeof(AnolyteMetalControl), new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.AffectsRender));
        public bool IsManualMode
        {
            get { return (bool)this.GetValue(IsManualModeProperty); }
            set { this.SetValue(IsManualModeProperty, value); }
        }


        public static readonly DependencyProperty SideAFlowProperty = DependencyProperty.Register(
           "SideAFlow", typeof(double), typeof(AnolyteMetalControl), new FrameworkPropertyMetadata(0.0, FrameworkPropertyMetadataOptions.AffectsRender));
        public double SideAFlow
        {
            get { return (double)this.GetValue(SideAFlowProperty); }
            set { this.SetValue(SideAFlowProperty, value); }
        }

        public static readonly DependencyProperty SideBFlowProperty = DependencyProperty.Register(
        "SideBFlow", typeof(double), typeof(AnolyteMetalControl), new FrameworkPropertyMetadata(0.0, FrameworkPropertyMetadataOptions.AffectsRender));
        public double SideBFlow
        {
            get { return (double)this.GetValue(SideBFlowProperty); }
            set { this.SetValue(SideBFlowProperty, value); }
        }

        public static readonly DependencyProperty SideAStatusProperty = DependencyProperty.Register(
            "SideAStatus", typeof(string), typeof(AnolyteMetalControl),
        new FrameworkPropertyMetadata("", FrameworkPropertyMetadataOptions.AffectsRender));
        public string SideAStatus
        {
            get { return (string)this.GetValue(SideAStatusProperty); }
            set { this.SetValue(SideAStatusProperty, value); }
        }

        public static readonly DependencyProperty SideBStatusProperty = DependencyProperty.Register(
            "SideBStatus", typeof(string), typeof(AnolyteMetalControl),
        new FrameworkPropertyMetadata("", FrameworkPropertyMetadataOptions.AffectsRender));
        public string SideBStatus
        {
            get { return (string)this.GetValue(SideBStatusProperty); }
            set { this.SetValue(SideBStatusProperty, value); }
        }

        public static readonly DependencyProperty MetalDatasProperty = DependencyProperty.Register(
                "MetalDatas", typeof(CompactMembranMetalDeviceData), typeof(AnolyteMetalControl),
                new FrameworkPropertyMetadata(null, FrameworkPropertyMetadataOptions.AffectsRender));
        
        public CompactMembranMetalDeviceData MetalDatas
        {
            get { return (CompactMembranMetalDeviceData)this.GetValue(MetalDatasProperty); }
            set { this.SetValue(MetalDatasProperty, value); }
        }

        public static readonly DependencyProperty IsSideAFullProperty = DependencyProperty.Register(
           "IsSideAFull", typeof(bool), typeof(AnolyteMetalControl), new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.AffectsRender));
        public bool IsSideAFull
        {
            get { return (bool)this.GetValue(IsSideAFullProperty); }
            set { this.SetValue(IsSideAFullProperty, value); }
        }

        public static readonly DependencyProperty IsSideBFullProperty = DependencyProperty.Register(
            "IsSideBFull", typeof(bool), typeof(AnolyteMetalControl), new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.AffectsRender));
        public bool IsSideBFull
        {
            get { return (bool)this.GetValue(IsSideBFullProperty); }
            set { this.SetValue(IsSideBFullProperty, value); }
        }

        #region  click命令

        private void ANADrain_Click(object sender, RoutedEventArgs e)
        {
            CommonValveControl commonValveControl = (CommonValveControl)sender;
            if (!commonValveControl.Status)
            {
                InvokeClient.Instance.Service.DoOperation($"{MetalName}.ANADrainOn");
            }
            else
            {
                InvokeClient.Instance.Service.DoOperation($"{MetalName}.ANADrainOff");
            }
        }

        private void ANBDrain_Click(object sender, RoutedEventArgs e)
        {
            CommonValveControl commonValveControl = (CommonValveControl)sender;
            if (!commonValveControl.Status)
            {
                InvokeClient.Instance.Service.DoOperation($"{MetalName}.ANBDrainOn");
            }
            else
            {
                InvokeClient.Instance.Service.DoOperation($"{MetalName}.ANBDrainOff");
            }
        }

        private void ANAFill_Click(object sender, RoutedEventArgs e)
        {
            CommonValveControl commonValveControl = (CommonValveControl)sender;
            if (!commonValveControl.Status)
            {
                InvokeClient.Instance.Service.DoOperation($"{MetalName}.ANAFillOn");
            }
            else
            {
                InvokeClient.Instance.Service.DoOperation($"{MetalName}.ANAFillOff");
            }
        }

        private void ANBFill_Click(object sender, RoutedEventArgs e)
        {
            CommonValveControl commonValveControl = (CommonValveControl)sender;
            if (!commonValveControl.Status)
            {
                InvokeClient.Instance.Service.DoOperation($"{MetalName}.ANBFillOn");
            }
            else
            {
                InvokeClient.Instance.Service.DoOperation($"{MetalName}.ANBFillOff");
            }
        }

        #endregion
    }


}