FixtureSizeConfigControl.cs 4.1 KB
using OnlineStore;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace DeviceLibrary
{
    public partial class FixtureSizeConfigControl : UserControl
    {
        public FixtureSizeConfigControl()
        {
            InitializeComponent();
        }

        private void FixtureSizeConfigControl_Load(object sender, EventArgs e)
        {
            RefreshList();
        }
        void RefreshList() {

            listBox1.Items.Clear();
            FixtureConfig.FixtureConfigList.ForEach(fc =>
            {
                listBox1.Items.Add(fc);
            });
        }

        private void button1_Click(object sender, EventArgs e)
        {

            if (string.IsNullOrWhiteSpace(textBox_startcode.Text))
            {
                MessageBox.Show(crc.GetString("Res0174","条码首字母不能为空"));
                return;
            }
            FixtureConfig fixtureConfig = new FixtureConfig();

            fixtureConfig.StartCode = textBox_startcode.Text.Trim();
            fixtureConfig.Width = (int)num_width.Value;
            fixtureConfig.Height = (int)num_height.Value;
            fixtureConfig.UseActualHeight = checkBox_fixtureheight.Checked;
            fixtureConfig.ActualHeight = (int)num_actualheight.Value;
            fixtureConfig.AbandonCode = checkBox_useedremove.Checked;

            FixtureConfig.Add(fixtureConfig);
            RefreshList();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            if (listBox1.SelectedIndex < 0) {
                return;
            }

            var fc = (FixtureConfig)listBox1.SelectedItem;
            FixtureConfig.Del(fc); 
            RefreshList();

        }

        private void btn_testcomp_Click(object sender, EventArgs e)
        {

        }
    }
    public class FixtureConfig {
        public string StartCode;
        public int Width;
        public int Height;
        public bool UseActualHeight;
        public int ActualHeight;
        public bool AbandonCode;

        public override string ToString()
        {
            return $"[{StartCode}]={Width}x{Height}"+ (UseActualHeight?$", "+crc.GetString("Res0175","物理厚度")+$":{ActualHeight}":"") + (AbandonCode? ", "+crc.GetString("Res0176","自动弃用") : "");
        }

        public static bool GetFixtureHeight(int poswidth,int posheight, out int FixtureHeight) {
            FixtureHeight = 0;
            var fcc = FixtureConfigList.Find(fc => fc.Width == poswidth && fc.Height == posheight);
            if (fcc == null)
                return false;
            if (!fcc.UseActualHeight)
                return false;
            FixtureHeight = fcc.ActualHeight;
            return true;
        }
        public static List<FixtureConfig> FixtureConfigList = new List<FixtureConfig>();
        static FixtureConfig() {
            if (!File.Exists("Config\\FixtureConfig.json"))
                return;

            try {
                var fx = File.ReadAllText("Config\\FixtureConfig.json");

                FixtureConfigList = JsonConvert.DeserializeObject<List<FixtureConfig>>(fx);

            } catch { }
        }
        public static void Add(FixtureConfig fixtureConfig)
        {

            var fcc = FixtureConfigList.FindIndex(fc => fc.StartCode == fixtureConfig.StartCode);
            if (fcc <0)
                FixtureConfigList.Add(fixtureConfig);
            else
                FixtureConfigList[fcc] = fixtureConfig;
            Save();
        }        
        public static void Del(FixtureConfig fixtureConfig) {

            var fcc = FixtureConfigList.FindIndex(fc => fc.StartCode == fixtureConfig.StartCode);
            if (fcc < 0)
                return;
            else
                FixtureConfigList.RemoveAt(fcc);
            Save();
        }

        public static void Save() {
            File.WriteAllText("Config\\FixtureConfig.json", JsonConvert.SerializeObject(FixtureConfigList));
        }

    }
}