// ===++===
//
// OrtizOL
//
// ===--===
/*============================================================
//
// Clase: Principal.
//
// Original en: http://goo.gl/rjMjUp
//
// Propósito: Formulario principal de la aplicación.
//
============================================================*/
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 Alcancia.Modelo;
namespace Alcancia.GUI
{
/// <summary>
/// Formulario principal de la apolicación.
/// </summary>
public partial class Principal : Form
{
#region Campos (instancia)
/// <summary>
/// Representacion de la alcancía.
/// </summary>
private Alcancia.Modelo.Alcancia alcancia;
#endregion
#region Campos (componentes de interfaz gráfica)
/// <summary>
/// Control con las monedas.
/// </summary>
private ControlMonedas controlMonedas;
/// <summary>
/// Control para dibujar la alcancía.
/// </summary>
private ControlAlcancia controlAlcancia;
/// <summary>
/// Control para los botones de acciones sobre la alcancía.
/// </summary>
private ControlBotones controlBotones;
#endregion
#region Constructores
/// <summary>
/// Crea una instancia del formulario principal.
/// </summary>
public Principal()
{
InitializeComponent();
ConfiguracionComponentes();
alcancia = new Modelo.Alcancia();
}
#endregion
#region Métodos
/// <summary>
/// Agrega una nueva moneda a la alcancía.
/// </summary>
/// <param name="denominacion">Denominación (20, 50, 100, 200, 500) de la moneda.</param>
public void AgregarMoneda(Moneda denominacion)
{
if (!alcancia.EstadoAlcancia)
{
alcancia.AgregarMoneda(denominacion);
controlMonedas.CambiarCantidad(denominacion, alcancia.ContarMonedas(denominacion));
controlAlcancia.CambiarMensaje(String.Format("Se agregaron {0} pesos a la alcancía.\nEn la alcancía hay {1} pesos",
((int)denominacion).ToString(), alcancia.CalcularTotalDinero().ToString("C")));
}
else
{
MessageBox.Show(this, "No se puede agregar monedas a una alcancía rota.", "Alcancía Rota", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
}
/// <summary>
/// Crea la configuración para los controles integrales de la interfaz.
/// </summary>
private void ConfiguracionComponentes()
{
this.Icon = Properties.Resources.alcancia_icono;
controlMonedas = new ControlMonedas(this);
controlAlcancia = new ControlAlcancia();
controlAlcancia.Location = new Point(0, 105);
controlBotones = new ControlBotones(this);
controlBotones.Location = new Point(401, 146);
this.Controls.Add(controlBotones);
this.Controls.Add(controlMonedas);
this.Controls.Add(controlAlcancia);
}
/// <summary>
/// Crea una nueva alcancía.
/// </summary>
public void CrearAlcancia()
{
controlAlcancia.CambiarEstadoAlcancia(false, alcancia.CalcularTotalDinero());
controlAlcancia.CambiarMensaje("Alcancía Vacía");
alcancia = new Modelo.Alcancia();
controlMonedas.CambiarCantidad(0);
}
/// <summary>
/// Rompe la alcancía.
/// </summary>
public void RomperAlcancia()
{
alcancia.RomperAlcancia();
String mensaje = String.Format("La alcancía tenía {0} moneda{1} de 20, {2} moneda{3} de 50, {4} moneda{5} de 100, {6} moneda{7} de 200, y {8} moneda{9} de 500.",
alcancia.ContarMonedas(Moneda.Veinte), (alcancia.ContarMonedas(Moneda.Veinte) == 1 ? String.Empty : "s"),
alcancia.ContarMonedas(Moneda.Cincuenta), (alcancia.ContarMonedas(Moneda.Cincuenta) == 1 ? String.Empty : "s"),
alcancia.ContarMonedas(Moneda.Cien), (alcancia.ContarMonedas(Moneda.Cien) == 1 ? String.Empty : "s"),
alcancia.ContarMonedas(Moneda.Doscientos), (alcancia.ContarMonedas(Moneda.Doscientos) == 1 ? String.Empty : "s"),
alcancia.ContarMonedas(Moneda.Quinientos), (alcancia.ContarMonedas(Moneda.Quinientos) == 1 ? String.Empty : "s"));
controlAlcancia.CambiarMensaje(mensaje);
controlAlcancia.CambiarEstadoAlcancia(true, alcancia.CalcularTotalDinero());
}
#endregion
#region Métodos de extensión
/// <summary>
/// Método de extensión no. 1.
/// </summary>
public void MetodoExtension1()
{
MessageBox.Show(this, alcancia.MetodoExtension1(), "Método de Extensión", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
/// <summary>
/// Método de extensión no. 2.
/// </summary>
public void MetodoExtension2()
{
MessageBox.Show(this, alcancia.MetodoExtension2(), "Método de Extensión", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
#endregion
}
}