Files
Scanbox/ScanBox/Configuracion.cs
2026-02-09 15:37:45 -06:00

200 lines
6.3 KiB
C#

using ScaBox30.Model;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Text.Json;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace ScaBox30
{
public partial class Configuracion : Form
{
List<string> printers = new List<string>();
public Configuracion()
{
InitializeComponent();
InitializeItems();
InitializeButtons();
}
private void Configuracion_Load(object sender, EventArgs e)
{
ListPrinters();
LoadConfigJson(Globals.config_json);
switch (Globals.cfg.printertype)
{
case "usb":
radioButtonUsb.Checked = true;
break;
case "eth":
radioButtonEthernet.Checked = true;
break;
}
switch (Globals.cfg.resultado)
{
case "label":
radioButton1.Checked = true;
break;
case "number":
radioButton2.Checked = true;
break;
case "numberlabel":
radioButton3.Checked = true;
break;
}
}
private void ListPrinters()
{
foreach (string printer in System.Drawing.Printing.PrinterSettings.InstalledPrinters)
{
printers.Add(printer);
}
comboPrinters.Items.AddRange(printers.ToArray());
}
private void radioButton1_CheckedChanged(object sender, EventArgs e)
{
Globals.cfg.resultado = "label";
}
private void radioButton2_CheckedChanged(object sender, EventArgs e)
{
Globals.cfg.resultado = "number";
}
private void radioButton3_CheckedChanged(object sender, EventArgs e)
{
Globals.cfg.resultado = "numberlabel";
}
private void pictureBox1_Click(object sender, EventArgs e)
{
Ayuda help = new Ayuda();
help.ShowDialog();
}
private void radioButtonUsb_CheckedChanged(object sender, EventArgs e)
{
Globals.cfg.printertype = "usb";
comboPrinters.Enabled = true;
TextBoxImpresoraIp.Enabled = false;
}
private void radioButtonEthernet_CheckedChanged(object sender, EventArgs e)
{
Globals.cfg.printertype = "eth";
comboPrinters.Enabled = false;
TextBoxImpresoraIp.Enabled = true;
}
private void LoadConfigJson(string jsonfile)
{
if (File.Exists(jsonfile))
{
string jsoncontent = File.ReadAllText(jsonfile);
Globals.config = JsonSerializer.Deserialize<List<Config>>(jsoncontent);
numericLimpieza.Value = Globals.config[0].cleardelay;
numericRespuesta.Value = Globals.config[0].interval;
TextBoxScannerIp.Text = Globals.config[0].ipscanner;
comboPrinters.SelectedItem = Globals.config[0].usbprinter;
TextBoxImpresoraIp.Text = Globals.config[0].ipprinter;
textBoxHostIp.Text = Globals.config[0].iphost;
}
}
private void button1_Click(object sender, EventArgs e)
{
Globals.cfg.cleardelay = (int)numericLimpieza.Value;
Globals.cfg.interval = (int)numericRespuesta.Value;
Globals.cfg.ipscanner = TextBoxScannerIp.Text;
Globals.cfg.usbprinter = comboPrinters.SelectedItem == null?"none":comboPrinters.SelectedItem.ToString();
Globals.cfg.ipprinter = TextBoxImpresoraIp.Text;
Globals.cfg.iphost = textBoxHostIp.Text;
Globals.config.Clear();
Globals.config.Add(Globals.cfg);
var json = JsonSerializer.Serialize<List<Config>>(Globals.config);
File.WriteAllText(Globals.config_json, json);
RJMessageBox.Show("Configuración actualizada correctamente", "ScanBox", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
private void button2_Click(object sender, EventArgs e)
{
this.Close();
}
private void Configuracion_FormClosing(object sender, FormClosingEventArgs e)
{
Globals.valid_user = false;
}
private void InitializeItems()
{
this.FormBorderStyle = FormBorderStyle.None;
this.Padding = new Padding(Globals.borderSize);//Set border size
this.btnClose.DialogResult = DialogResult.Cancel;
this.labelCaption.Text = this.Text;
this.panelTitleBar.BackColor = Globals.primaryColor;
this.panelTitleBar.Padding = new Padding(0, 0, 0, Globals.borderSize);
this.BackColor = Globals.primaryColor;
}
private void InitializeButtons()
{
int xCenter = (this.panelButtons.Width - button1.Width) / 2;
int yCenter = (this.panelButtons.Height - button1.Height) / 2;
//OK Button
button1.Visible = true;
//button1.Location = new Point(xCenter - (button1.Width / 2) - 5, yCenter);
button1.Text = "Guardar";
//button1.DialogResult = DialogResult.OK;//Set DialogResult
//Cancel Button
button2.Visible = true;
//button2.Location = new Point(xCenter + (button2.Width / 2) + 5, yCenter);
button2.Text = "Salir";
button2.DialogResult = DialogResult.Cancel;//Set DialogResult
button2.BackColor = Globals.colors.retry_cancell;
}
#region -> Drag Form
[DllImport("user32.DLL", EntryPoint = "SendMessage")]
private extern static void SendMessage(System.IntPtr hWnd, int wMsg, int wParam, int lParam);
[DllImport("user32.DLL", EntryPoint = "ReleaseCapture")]
private extern static void ReleaseCapture();
private void panelTitleBar_MouseDown(object sender, MouseEventArgs e)
{
ReleaseCapture();
SendMessage(this.Handle, 0x112, 0xf012, 0);
}
#endregion
}
}