Skip to content

Instantly share code, notes, and snippets.

@Fhernd
Created June 8, 2014 22:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Fhernd/a88f04305421d1cc6d2d to your computer and use it in GitHub Desktop.
Save Fhernd/a88f04305421d1cc6d2d to your computer and use it in GitHub Desktop.
Formulario con la interfaz principal de la aplicación.
// ===++===
//
// OrtizOL
//
// ===--===
/*============================================================
//
// Clase: Principal.cs
//
// Propósito: Componener interfaz 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 N1_EleccionesCupi2.Modelo;
namespace N1_EleccionesCupi2.GUI
{
/// <summary>
/// Formulario con la interfaz principal de la aplicación.
/// </summary>
public partial class Principal : Form
{
#region Campos
/// <summary>
/// Urna sobre la que se hará el proceso de votación.
/// </summary>
private Urna urna;
/// <summary>
/// Medio publicitario de la votación.
/// </summary>
private MedioPublicitario medioPublicitario;
#endregion
#region Campos (Interfaz)
/// <summary>
/// Control con la información de los candidatos.
/// </summary>
private ControlCandidato[] controlCandidatos;
/// <summary>
/// Control para los métodos de extensión y el reinicio de la campaña.
/// </summary>
private ControlExtension controlExtension;
/// <summary>
/// Control con la imagen de la aplicación.
/// </summary>
private ControlImagen controlImagen;
/// <summary>
/// Control para la visualización de los datos de la urna.
/// </summary>
private ControlUrna controlUrna;
#endregion
#region Propiedades
/// <summary>
/// Establece y obtiene el medio de publicitario.
/// </summary>
public MedioPublicitario Medio
{
get
{
return medioPublicitario;
}
set
{
medioPublicitario = value;
}
}
#endregion
#region Constructores
/// <summary>
/// Crea una instancia del formulario principal.
/// </summary>
public Principal()
{
InitializeComponent();
urna = new Urna();
ConfiguracionComponentes();
Actualizar();
}
#endregion
#region Métodos
/// <summary>
/// Actualización la información de los candidatos y de la urna.
/// </summary>
private void Actualizar()
{
controlCandidatos[0].Actualizar(urna.ObtenerCandidato(1));
controlCandidatos[1].Actualizar(urna.ObtenerCandidato(2));
controlCandidatos[2].Actualizar(urna.ObtenerCandidato(3));
controlUrna.Actualizar(urna);
}
/// <summary>
/// Calcula los votos totales hasta el momento.
/// </summary>
/// <returns></returns>
public int CalcularVotosUrna()
{
return urna.CalcularTotalVotos();
}
/// <summary>
/// Configura los componentes integrales de la interfaz.
/// </summary>
private void ConfiguracionComponentes()
{
controlCandidatos = new ControlCandidato[3];
// Agrega tres candidatos a `controlCandidatos`:
controlCandidatos[0] = new ControlCandidato(1, this);
controlCandidatos[0].Location = new Point(2,119);
controlCandidatos[1] = new ControlCandidato(2, this);
controlCandidatos[1].Location = new Point(267,119);
controlCandidatos[2] = new ControlCandidato(3, this);
controlCandidatos[2].Location = new Point(532, 119);
// Instancia de `ControlExtension`:
controlExtension = new ControlExtension(this);
controlExtension.Location = new Point(2, 546);
// Instancia de `ControlUrna`:
controlUrna = new ControlUrna();
controlUrna.Location = new Point(2, 452);
controlImagen = new ControlImagen();
this.Icon = Properties.Resources.elecciones;
this.Controls.Add(controlCandidatos[0]);
this.Controls.Add(controlCandidatos[1]);
this.Controls.Add(controlCandidatos[2]);
this.Controls.Add(controlExtension);
this.Controls.Add(controlImagen);
this.Controls.Add(controlUrna);
}
/// <summary>
/// Ingresa un voto para un determinado candidato.
/// </summary>
/// <param name="numeroCandidato">ID (1, 2, o 3) del candidato.</param>
public void IngresarVotoCandidato(int numeroCandidato)
{
DialogoMedioPublicitario dmp = new DialogoMedioPublicitario(this);
dmp.ShowDialog(this);
if (Medio != 0)
{
urna.IngresarVoto(numeroCandidato, Medio);
Actualizar();
}
}
/// <summary>
/// Muestra el porcentaje de votos de un determiando candidato.
/// </summary>
/// <param name="numeroCandidato">ID (1, 2, o 3) del candidato.</param>
internal void MostrarPorcentajeVotos(int numeroCandidato)
{
MessageBox.Show(this, String.Format("Porcentaje de votos: {0:N2}%",urna.CalcularPorcentajeVotos(numeroCandidato)), String.Format("Candidato {0}", numeroCandidato.ToString()), MessageBoxButtons.OK, MessageBoxIcon.Information);
}
/// <summary>
/// Vacia la urna.
/// </summary>
internal void VaciarUrna()
{
urna.VaciarUrna();
Actualizar();
}
#endregion
#region Métodos de extensión
/// <summary>
/// Método de extensión no. 1.
/// </summary>
public void MetodoExtension1()
{
MessageBox.Show(this, urna.MetodoExtension1(), "Método Extensión 1", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
/// <summary>
/// Método de extensión no. 2.
/// </summary>
public void MetodoExtension2()
{
MessageBox.Show(this, urna.MetodoExtension2(), "Método Extensión 2", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
#endregion
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment