ApiSettings.cs 4.55 KB
using MoyaAdminLib;
using MoyaAdminUI.MoyaAPI;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.IO.Ports;
using System.Linq;
using System.Management;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Touchless.Vision.Camera;

namespace MoyaSignup
{
    public partial class ApiSettings : Form
    {
        public ApiSettings()
        {
            InitializeComponent();
        }

        private void SaveButton_Click(object sender, EventArgs e)
        {
            Properties.Settings.Default.ApiURL = apiURLTextBox.Text;
            Properties.Settings.Default.ApiApplicationKey = ApiKeyTextBox.Text;
            Properties.Settings.Default.ApiUser = ApiUserTextBox.Text;
            Properties.Settings.Default.ApiPass = ApiPassTextBox.Text;

            if(printerModelComboBox.SelectedItem != null)
            {
                Properties.Settings.Default.ThermoPrinter = (int) printerModelComboBox.SelectedItem;
            }

            if(printerPortComboBox.SelectedItem != null)
            {
                string comPort = (string)this.printerPortComboBox.SelectedItem;
                Debug.WriteLine("[ApiSettings] Selected modemport is '" + comPort + "'");
                foreach (string p in SerialPort.GetPortNames())
                {
                    if (comPort == p || comPort.Contains("(" + p + ")"))
                    {
                        Debug.WriteLine("[ApiSettings] Setting modemport to '" + p + "'");
                        Properties.Settings.Default.printerPort = p;
                        break;
                    }
                }
            }

            if(webCamComboBox.SelectedItem != null)
            {
                Properties.Settings.Default.Camera = (string)webCamComboBox.SelectedItem;
            }

            Properties.Settings.Default.Save();
            
            RestClient.ApiApplicationKey = Properties.Settings.Default.ApiApplicationKey;
            RestClient.ApiPass = Properties.Settings.Default.ApiPass;
            RestClient.ApiUser = Properties.Settings.Default.ApiUser;
            RestClient.ApiURL = Properties.Settings.Default.ApiURL;
            this.DialogResult = System.Windows.Forms.DialogResult.OK;
        }

        private void ApiSettings_Load(object sender, EventArgs e)
        {
            apiURLTextBox.Text = Properties.Settings.Default.ApiURL;
            ApiKeyTextBox.Text = Properties.Settings.Default.ApiApplicationKey;
            ApiUserTextBox.Text = Properties.Settings.Default.ApiUser;
            ApiPassTextBox.Text = Properties.Settings.Default.ApiPass;
            
            printerModelComboBox.Items.Add(ThermoPrinterLibrary.ThermoPrinter.Models.IDP3210);
            printerModelComboBox.Items.Add(ThermoPrinterLibrary.ThermoPrinter.Models.TMT188II);

            printerPortComboBox.Items.Clear();

            try
            {
                using (var searcher = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_PnPEntity"))
                {
                    string[] portnames = SerialPort.GetPortNames();
                    foreach (ManagementObject queryObj in searcher.Get())
                    {
                        if (queryObj["Caption"] != null)
                        {
                            string port = queryObj["Caption"].ToString();
                            if (port.Contains("(COM"))
                            {
                                printerPortComboBox.Items.Add(port);
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine("Failed to get serial ports. Trying with the old way..");
                if (printerPortComboBox.Items.Count == 0)
                {
                    foreach (string p in SerialPort.GetPortNames())
                    {
                        SerialPort port = new SerialPort(p);

                        try
                        {
                            port.Open();
                            port.Close();

                        }
                        catch
                        {
                            continue;
                        }

                        printerPortComboBox.Items.Add(p);
                    }
                }
            }

            foreach(Camera cam in CameraService.AvailableCameras)
            {
                webCamComboBox.Items.Add(cam.Name);
            }
        }
    }
}