using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Zebra.Sdk.Printer.Discovery;

namespace PrintLabel_Test
{
    public partial class Form2 : Form
    {
        private Asa.PrintLabel print;
        public Form2()
        {
            InitializeComponent();
        }

        private void Form2_Load(object sender, EventArgs e)
        {
            print = new Asa.PrintLabel(Application.StartupPath + "\\Label");
            reloadlabel();
            ConfigHelper.Config.PropertyBind("IP", textBox1, "Text", "TextChanged");
            ConfigHelper.Config.PropertyBind<int>("labelindex", comboBox1, "SelectedIndex", "SelectedIndexChanged");
        }

        private void button1_Click(object sender, EventArgs e)
        {
            print.EditLabel();
            reloadlabel();
        }
        void reloadlabel() {
            comboBox1.DropDownStyle = ComboBoxStyle.DropDownList;
            comboBox1.Items.Clear();
            comboBox1.Items.AddRange(print.GetLabelName());
            comboBox1.SelectedIndex = 0;
        }

        private void button3_Click(object sender, EventArgs e)
        {
            print.LoadLabel(comboBox1.Text);
            Dictionary<string, string> text = new Dictionary<string, string>();
            text.Add("aa", "123");
            text.Add("bb", "yumtrj");
            text.Add("cc", DateTime.Now.ToString());
            var bmp = print.PrintPreview(text);
            if (!zebraManger.PrintImage(bmp, out string msg)) {
                MessageBox.Show(msg);
            }
            bmp.Dispose();
        }
        ZebraPrinterHelper.ZebraManger zebraManger;
        private void button2_Click(object sender, EventArgs e)
        {
            zebraManger = new ZebraPrinterHelper.ZebraManger(textBox1.Text, ZebraPrinterHelper.ConnectionType.Network);
            if (!zebraManger.Connection(out string msg)) {
                MessageBox.Show(msg);
            }else
                MessageBox.Show("连接成功");
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            if (zebraManger == null)
                return;
            Task.Run(() =>
            {
                if (zebraManger.IsLabelOnPeeler)
                    this.Invoke((EventHandler)delegate
                    {
                        label3.Text = "剥纸器上检测到有标签";
                    });
                else
                    this.Invoke((EventHandler)delegate
                    {
                        label3.Text = "剥纸器上没有检测到标签";
                    });
            });
        }

        private void button4_Click(object sender, EventArgs e)
        {
            var dl = ZebraPrinterHelper.ZebraManger.GetUsbDirectAddress();
            textBox1.Text = dl.First().Key;
            zebraManger = new ZebraPrinterHelper.ZebraManger(textBox1.Text, ZebraPrinterHelper.ConnectionType.UsbDirect);
            if (!zebraManger.Connection(out string msg))
            {
                MessageBox.Show(msg);
            }
            else
                MessageBox.Show("连接成功");
        }

        private void button5_Click(object sender, EventArgs e)
        {

            string cmd = @"^XA
^ND2,P,192.168.3.4,255.255.255.0,0.0.0.0
^NBC
^NC1
^NPP
^XZ
^XA
^JUS
^XZ
~PP
";

            var cmd2 = "! U1 setvar \"media.printmode\" \"P\"";//p=剥纸,T=撕纸


            var cmd3 = "~TA048";//剥纸距离调整 value=cm*80,  048=0.6cm
        }
    }
}