Skip to main content

Ejercicio I02 - Cartelera


Consigna

Tenemos una aplicación que diseña una cartelera con un título y un mensaje. Se deberá persistir la configuración de la cartelera (colores de panel, título y mensaje) en formato JSON para que no se pierda al cerrar la aplicación.

FrmCartelera

Descargar la cáscara del proyecto y seguir los siguientes pasos:

  1. Crear un constructor estático en el FrmCartelera que cargue en el atributo rutaConfiguracion la ruta al archivo configuracion.json ubicado en la carpeta que contiene los datos de aplicaciones (Environment.SpecialFolder.ApplicationData).

  2. Agregar un control de tipo ColorDialog llamado colorDialog.

  3. El manejador del evento Click de btnColorPanel deberá cargar la propiedad BackColor del control pnlCartel con el color elegido por el usuario.

    • Usar colorDialog que deberá iniciar con el color actual de pnlCartel como color seleccionado.
  4. El manejador del evento Click de btnColorTitulo deberá cargar la propiedad ForeColor del control lblTitulo con el color elegido por el usuario.

    • Usar colorDialog que deberá iniciar con el color actual de lblTitulo como color seleccionado.
  5. El manejador del evento Click de btnColorMensaje deberá cargar la propiedad ForeColor del control lblMensaje con el color elegido por el usuario.

    • Usar colorDialog que deberá iniciar con el color actual de lblMensaje como color seleccionado.
  6. El manejador del evento Load del formulario deberá recuperar la configuración almacenada de la siguiente forma:

    1. Leer el archivo referenciado por rutaConfiguracion. Si no existe, no hacer nada.

    2. Deserializar el contenido del archivo desde formato JSON a un objeto de tipo Cartel.

    3. Ejecutar el siguiente código:

      pnlCartel.BackColor = Color.FromArgb(cartel.ColorARGB);

      txtTitulo.Text = cartel.Titulo.Contenido;
      lblTitulo.ForeColor = Color.FromArgb(cartel.Titulo.ColorARGB);

      rtxtMensaje.Text = cartel.Mensaje.Contenido;
      lblMensaje.ForeColor = Color.FromArgb(cartel.Mensaje.ColorARGB);
    4. Manejar las excepciones de tipo JsonException con una ventana de alerta como la siguiente:

      Error FrmCartelera

  7. El manejador del evento Click de btnGuardarConfiguracion deberá:

    1. Instanciar y configurar un objeto de tipo Cartel de la siguiente forma:

      Texto titulo = new Texto(lblTitulo.Text, lblTitulo.ForeColor.ToArgb());
      Texto mensaje = new Texto(lblMensaje.Text, lblMensaje.ForeColor.ToArgb());
      Cartel cartel = new Cartel(pnlCartel.BackColor.ToArgb(), titulo, mensaje);
    2. Serializar dicho objeto a formato JSON.

    3. Almacenar el objeto serializado en la ubicación indicada por el atributo rutaConfiguracion.

  1. El manejador del evento Click de btnImportarConfiguracion deberá:

    1. Pedirle al usuario que seleccione el archivo a importar usando OpenFileDialog. La propiedad Filter deberá estar configurada como "Json files(.json)|.json" antes de abrir la ventana de diálogo.
    2. Para importar la configuración desde el archivo, seguir la misma lógica usada en el manejador del evento Load.
    3. Probar la funcionalidad con el siguiente archivo: configuracion-cartelera.json
  2. El manejador del evento Click de btnEliminarConfiguracion deberá:

    1. Mostrar un cartel de confirmación preguntando al usuario si está seguro de que desea eliminar la configuración. Si la respuesta es afirmativa seguir con los siguientes puntos, caso contrario no hacer nada.

    2. Eliminar el archivo de configuración, si existe.

    3. Ejecutar el siguiente código:

      txtTitulo.Text = "Título";
      lblTitulo.ForeColor = Control.DefaultForeColor;

      rtxtMensaje.Text = "Mensaje";
      lblMensaje.ForeColor = Control.DefaultForeColor;

      pnlCartel.BackColor = Control.DefaultBackColor;
IMPORTANTE

Cualquier excepción deberá ser manejada mostrando un MessageBox con el mensaje y el stack trace.

Reutilizar código en todo el proyecto siguiendo el principio DRY.

Resolución

imgVideoimgCódigo