// -*- coding: utf-8 -*-
#ifndef __MIEMPRESAIU_H__
#define __MIEMPRESAIU_H__

#include <QMainWindow>
#include <QTableWidget>
#include <QMenuBar>
#include <QMenu>
#include "MiEmpresaBD.hpp"

/** \brief Crea la interfaz de usuario.
 *
 * Esta clase crea la interfaz de usuario y es el punto de entrada hacia el
 * programa */
class MiEmpresaIU: public QMainWindow {
Q_OBJECT;
public:
	/** Constructor por defecto */
	MiEmpresaIU(QWidget* parent = 0);
	/** Destructor por defecto */
	~MiEmpresaIU();

private:
	/// Controla la comunicación con la base de datos
	MiEmpresaBD m_bd;
	/// Muestra la lista de los clientes en la base de datos
	QTableWidget m_tablaClientes;
	/// Menu principal de la aplicaci&oacute;n
	QMenuBar m_menu;
	/// Menu Archivo
	QMenu m_menuArchivo;
	/// Menu Archivo => Agregar Cliente
	QAction * m_agregarCliente;
	/// Menu Archivo => Salir
	QAction * m_salir;

	/** Crea la interfaz de usuario */
	void crearIU();
	/** Agrega las columnas a la tabla de clientes */
	void agregaColumnas();
	/** Agrega el menu principal de la aplicacici&oacute;n */
	void agregaMenu();
	/** Agrega los clientes de la base de datos a la tabla en IU */
	void llenarTablaClientes();
	/** Conecta signal y slots */
	void conectaSignalSlots();

public slots:
	/** Agrega un cliente a la base de datos
	 * @param c Datos del cliente que ser&aacute; insertado en la base de datos*/
	void agregarCliente(Cliente const & c);

private slots:
	/** Muestra el dialogo para agregar un cliente */
	void menuAgregarCliente();
};

#endif
