#include "DirecTelefonico.hpp"
#include "CatalogoCDs.hpp"
#include "Utilerias.hpp"
#include <stdio.h>
#include <stdlib.h>


const char *Archivo[]= {"DirTelefonico.txt", "CatalogoCDs.txt"};

void limpiar(void)
{
   for (int i = 0; i < 20; i++) printf("\n");
}


void visualizaManu(void)
{
   printf("\nMenu");

   printf("\n1) Agregar");
   printf("\n2) Modificar");
   printf("\n3) Borrar");
   printf("\n4) Visualizar todos");
   printf("\n8) Leer");
   printf("\n9) Grabar");
   printf("\n10) Cambiar entre DirecTelefonico o CatalogoCDs");
   printf("\n0) Salir");

}


int main(int argc, char *argv[])
{
   int act = 0;
   Utilerias ut;
   EstructuraABC **man= new EstructuraABC*[2];
   
   // Manipulacion del directorio telefonico
   man[0] = new DirecTelefonico();
   man[1] = new CatalogoCDs();

   limpiar();
   int op = 1, reg;
   do
   {
      printf("\nNumero de registros %d en %s\n\n", man[act]->regresaNRegs(), Archivo[act]);
      visualizaManu();
      printf("\nOpcion: ");
      ut.leerNumero(op);

      switch(op)
      {
      case 1:
         man[act]->adicionar();
         break;
      case 2:
         printf("\nRegistro: ");
         ut.leerNumero(reg);
         man[act]->modificar(reg);
         break;
      case 3:
         printf("\nRegistro: ");
         ut.leerNumero(reg);
         man[act]->borrar(reg);
         break;
      case 4:
         man[act]->visualizaTodos();
         break;
      case 8:
         man[act]->leer(Archivo[act]);
         break;
      case 9: 
         man[act]->grabar(Archivo[act]);
         break;
      case 10:
         if (act == 0) act = 1;
          else act = 0;
         break;
      default:
         printf("\nOpcion no reconocidad");
      }
   }
   while(op);

   delete man[0];
   delete man[1];
   delete []man;
   
   return 0;
}