diff --git a/dev/estructura.md b/dev/estructura.md index aa80e024..f6a7fcd7 100644 --- a/dev/estructura.md +++ b/dev/estructura.md @@ -73,6 +73,7 @@ - modelo/modelo.h: - modelo/dominio.h + - modelo/modelo_shared.h - modelo/modelo_interno.cpp: - modelo/modelo_interno.h @@ -204,6 +205,7 @@ - vista/barras_progreso.h: - vista/componentes/barra_progreso.h + - vista/presentador.h - vista/basicos_vista.cpp: - vista/basicos_vista.h @@ -333,14 +335,16 @@ - vista/barras_progreso.h - vista/componentes/varios.h -- vista/presentacion_vista.h: - - vista/etiquetas/visibilidad_etiquetas_info.h - - vista/presentador.cpp: - vista/presentador.h - modelo/dominio.h - - modelo/modelo.h - templates/helpers.h + - vista/vista_shared.h + +- vista/presentador.h: + - modelo/modelo.h + - modelo/modelo_shared.h + - vista/vista_shared.h - vista/vista.cpp: - vista/vista.h @@ -348,6 +352,7 @@ - templates/helpers.h - vista/basicos_vista.h - vista/grid.h + - vista/presentador.h - vista/vista_data.h - vista/vista.h: @@ -358,6 +363,3 @@ - vista/paneles.h - vista/presentacion_vista.h -- vista/vista_shared.h: - - modelo/dominio.h - diff --git a/src/modelo/modelo_shared.h b/src/modelo/modelo_shared.h index 9cac4360..c7d4a73f 100644 --- a/src/modelo/modelo_shared.h +++ b/src/modelo/modelo_shared.h @@ -3,6 +3,8 @@ #include struct Contadores; +struct EstadoPreparacionPizzas; +struct Pedido; namespace dominio { enum class TipoPizza; diff --git a/src/vista/barras_progreso.cpp b/src/vista/barras_progreso.cpp index fb10089a..26ed9956 100644 --- a/src/vista/barras_progreso.cpp +++ b/src/vista/barras_progreso.cpp @@ -12,6 +12,9 @@ std::vector crear_barras_progreso( const EstadoPreparacionPizzas &preparacion, const sf::Vector2f &pos_panel, const sf::Font &font ) { + const auto vista_preparaciones_pizzas = + presentador::estado_preparacion_pizzas_to_vista(preparacion); + std::vector vect{}; const int pos_x = pos_panel.x + medidas::MARGEN_IZQ_ETIQUETAS; const int pos_y_inicial = pos_panel.y + medidas::FILA_CONTENIDO_PANEL; @@ -19,25 +22,24 @@ std::vector crear_barras_progreso( const int largo = 40; const auto dimensiones = sf::Vector2f(ancho, largo); int i = 0; - for (auto &preparacion_pizza : preparacion.datos) { + for (auto &vista_preparacion_pizza : vista_preparaciones_pizzas) { const int offset_y = i * medidas::DIFERENCIA_VERTICAL_ENTRE_BARRAS_PROGRESO; const int pos_y = pos_y_inicial + offset_y; const auto posicion = sf::Vector2f(pos_x, pos_y); - const auto texto = tipo_pizza_to_string.at(preparacion_pizza.tipo); const BPNColors bpn_colors = { colores::barra_progreso::FONDO, colores::barra_progreso::RELLENO, colores::barra_progreso::TEXTO, }; BarraProgresoConNombre bpn( - dimensiones, // - texto, // - posicion, // - bpn_colors, // - font // + dimensiones, // + vista_preparacion_pizza.nombre_pizza, // + posicion, // + bpn_colors, // + font // ); - bpn.actualizar_porcentaje(preparacion_pizza.porcentaje); + bpn.actualizar_porcentaje(vista_preparacion_pizza.porcentaje); vect.push_back(bpn); i++; } diff --git a/src/vista/barras_progreso.h b/src/vista/barras_progreso.h index c6d51809..c8f07399 100644 --- a/src/vista/barras_progreso.h +++ b/src/vista/barras_progreso.h @@ -1,10 +1,13 @@ #pragma once #include "componentes/barra_progreso.h" +#include "presentador.h" +#include struct EstadoPreparacionPizzas; -std::vector crear_barras_progreso( - const EstadoPreparacionPizzas &preparacion, const sf::Vector2f &pos_panel, - const sf::Font &font +std::vector crear_barras_progreso( // + const EstadoPreparacionPizzas &, // + const sf::Vector2f &pos_panel, // + const sf::Font & // ); diff --git a/src/vista/presentador.cpp b/src/vista/presentador.cpp index 0a65bec0..36fea043 100644 --- a/src/vista/presentador.cpp +++ b/src/vista/presentador.cpp @@ -1,8 +1,11 @@ #include "presentador.h" #include "../modelo/dominio.h" -#include "../modelo/modelo.h" #include "../templates/helpers.h" #include "vista_shared.h" +#include +#include +#include +#include namespace presentador { std::string crea_linea_completitud_pizza( @@ -52,4 +55,23 @@ namespace presentador { return textos_preparadas; } + VistaPreparacionPizza to_vista(EstadoPreparacionPizzaIndividual preparacion + ) { + VistaPreparacionPizza vista; + vista.nombre_pizza = tipo_pizza_to_string.at(preparacion.tipo); + vista.porcentaje = preparacion.porcentaje; + return vista; + } + + std::vector estado_preparacion_pizzas_to_vista( // + const EstadoPreparacionPizzas &preparacion + ) { + std::vector vista_preparaciones_pizzas; + std::transform( + preparacion.datos.begin(), preparacion.datos.end(), + std::back_inserter(vista_preparaciones_pizzas), + presentador::to_vista + ); + return vista_preparaciones_pizzas; + } } // namespace presentador diff --git a/src/vista/presentador.h b/src/vista/presentador.h index 4b5bdc13..5d703f1f 100644 --- a/src/vista/presentador.h +++ b/src/vista/presentador.h @@ -1,9 +1,15 @@ #pragma once +#include "../modelo/modelo.h" #include "../modelo/modelo_shared.h" #include "vista_shared.h" +#include +#include -class Pedido; +struct VistaPreparacionPizza { + std::string nombre_pizza; + int porcentaje; +}; namespace presentador { @@ -16,4 +22,8 @@ namespace presentador { VistaPizzasToStrings contadores_to_preparadas( // const modelo::PizzasAContadores & ); + std::vector estado_preparacion_pizzas_to_vista( // + const EstadoPreparacionPizzas & // + ); + } // namespace presentador