Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. // ===++===
  2. //
  3. //    OrtizOL
  4. //
  5. // ===--===
  6. /*============================================================
  7. //
  8. // Clase: Principal.
  9. //
  10. // Original en: http://goo.gl/rjMjUp
  11. //
  12. // Propósito: Formulario principal de la aplicación.
  13. //
  14. ============================================================*/
  15.  
  16. using System;
  17. using System.Collections.Generic;
  18. using System.ComponentModel;
  19. using System.Data;
  20. using System.Drawing;
  21. using System.Linq;
  22. using System.Text;
  23. using System.Threading.Tasks;
  24. using System.Windows.Forms;
  25. using Alcancia.Modelo;
  26.  
  27. namespace Alcancia.GUI
  28. {
  29.     /// <summary>
  30.     ///  Formulario principal de la apolicación.
  31.     /// </summary>
  32.     public partial class Principal : Form
  33.     {
  34.         #region Campos (instancia)
  35.         /// <summary>
  36.         /// Representacion de la alcancía.
  37.         /// </summary>
  38.         private Alcancia.Modelo.Alcancia alcancia;
  39.         #endregion
  40.  
  41.         #region Campos (componentes de interfaz gráfica)
  42.         /// <summary>
  43.         /// Control con las monedas.
  44.         /// </summary>
  45.         private ControlMonedas controlMonedas;
  46.         /// <summary>
  47.         /// Control para dibujar la alcancía.
  48.         /// </summary>
  49.         private ControlAlcancia controlAlcancia;
  50.         /// <summary>
  51.         /// Control para los botones de acciones sobre la alcancía.
  52.         /// </summary>
  53.         private ControlBotones controlBotones;
  54.         #endregion
  55.  
  56.         #region Constructores
  57.         /// <summary>
  58.         /// Crea una instancia del formulario principal.
  59.         /// </summary>
  60.         public Principal()
  61.         {
  62.             InitializeComponent();
  63.             ConfiguracionComponentes();
  64.  
  65.             alcancia = new Modelo.Alcancia();
  66.         }
  67.         #endregion
  68.  
  69.         #region Métodos
  70.         /// <summary>
  71.         /// Agrega una nueva moneda a la alcancía.
  72.         /// </summary>
  73.         /// <param name="denominacion">Denominación (20, 50, 100, 200, 500) de la moneda.</param>
  74.         public void AgregarMoneda(Moneda denominacion)
  75.         {
  76.             if (!alcancia.EstadoAlcancia)
  77.             {
  78.                 alcancia.AgregarMoneda(denominacion);
  79.                 controlMonedas.CambiarCantidad(denominacion, alcancia.ContarMonedas(denominacion));
  80.  
  81.                 controlAlcancia.CambiarMensaje(String.Format("Se agregaron {0} pesos a la alcancía.\nEn la alcancía hay {1} pesos",
  82.                                                ((int)denominacion).ToString(), alcancia.CalcularTotalDinero().ToString("C")));
  83.             }
  84.             else
  85.             {
  86.                 MessageBox.Show(this, "No se puede agregar monedas a una alcancía rota.", "Alcancía Rota", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
  87.             }
  88.         }
  89.         /// <summary>
  90.         /// Crea la configuración para los controles integrales de la interfaz.
  91.         /// </summary>
  92.         private void ConfiguracionComponentes()
  93.         {
  94.             this.Icon = Properties.Resources.alcancia_icono;
  95.            
  96.             controlMonedas = new ControlMonedas(this);
  97.  
  98.             controlAlcancia = new ControlAlcancia();
  99.             controlAlcancia.Location = new Point(0, 105);
  100.  
  101.             controlBotones = new ControlBotones(this);
  102.             controlBotones.Location = new Point(401, 146);
  103.  
  104.             this.Controls.Add(controlBotones);
  105.             this.Controls.Add(controlMonedas);
  106.             this.Controls.Add(controlAlcancia);
  107.         }
  108.         /// <summary>
  109.         /// Crea una nueva alcancía.
  110.         /// </summary>
  111.         public void CrearAlcancia()
  112.         {
  113.             controlAlcancia.CambiarEstadoAlcancia(false, alcancia.CalcularTotalDinero());
  114.             controlAlcancia.CambiarMensaje("Alcancía Vacía");
  115.  
  116.             alcancia = new Modelo.Alcancia();
  117.  
  118.             controlMonedas.CambiarCantidad(0);
  119.         }
  120.         /// <summary>
  121.         /// Rompe la alcancía.
  122.         /// </summary>
  123.         public void RomperAlcancia()
  124.         {
  125.             alcancia.RomperAlcancia();
  126.  
  127.             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.",
  128.                                            alcancia.ContarMonedas(Moneda.Veinte), (alcancia.ContarMonedas(Moneda.Veinte) == 1 ? String.Empty : "s"),
  129.                                            alcancia.ContarMonedas(Moneda.Cincuenta), (alcancia.ContarMonedas(Moneda.Cincuenta) == 1 ? String.Empty : "s"),
  130.                                            alcancia.ContarMonedas(Moneda.Cien), (alcancia.ContarMonedas(Moneda.Cien) == 1 ? String.Empty : "s"),
  131.                                            alcancia.ContarMonedas(Moneda.Doscientos), (alcancia.ContarMonedas(Moneda.Doscientos) == 1 ? String.Empty : "s"),
  132.                                            alcancia.ContarMonedas(Moneda.Quinientos), (alcancia.ContarMonedas(Moneda.Quinientos) == 1 ? String.Empty : "s"));
  133.  
  134.             controlAlcancia.CambiarMensaje(mensaje);
  135.  
  136.             controlAlcancia.CambiarEstadoAlcancia(true, alcancia.CalcularTotalDinero());
  137.         }
  138.         #endregion
  139.  
  140.         #region Métodos de extensión
  141.         /// <summary>
  142.         /// Método de extensión no. 1.
  143.         /// </summary>
  144.         public void MetodoExtension1()
  145.         {
  146.             MessageBox.Show(this, alcancia.MetodoExtension1(), "Método de Extensión", MessageBoxButtons.OK, MessageBoxIcon.Information);
  147.         }
  148.         /// <summary>
  149.         /// Método de extensión no. 2.
  150.         /// </summary>
  151.         public void MetodoExtension2()
  152.         {
  153.             MessageBox.Show(this, alcancia.MetodoExtension2(), "Método de Extensión", MessageBoxButtons.OK, MessageBoxIcon.Information);
  154.         }
  155.         #endregion
  156.     }
  157. }