//-*- coding: utf-8 -*-
#include <QApplication>
#include <QTextStream>
#include <QTableWidgetItem>
#include <QDesktopWidget>
#include "MiEmpresaIU.hpp"
#include "ClienteNuevo.hpp"

MiEmpresaIU::MiEmpresaIU(QWidget* parent): QMainWindow(parent){
	this->crearIU();
}
////////////////////////////////////////////////////////////////////////////////
MiEmpresaIU::~MiEmpresaIU(){
}
////////////////////////////////////////////////////////////////////////////////
void MiEmpresaIU::crearIU(){
	this->agregaMenu();
	this->agregaColumnas();
	m_tablaClientes.setEditTriggers(QAbstractItemView::NoEditTriggers);
	this->setCentralWidget(&m_tablaClientes);
	this->conectaSignalSlots();
	setGeometry((int)(QApplication::desktop()->width() - (QApplication::desktop()->width() - (QApplication::desktop()->width() / 2)) * 1.7) / 2,
	            (int)(QApplication::desktop()->height() - (QApplication::desktop()->height() - (QApplication::desktop()->height() / 2)) * 1.7) / 2,
	            (int)((QApplication::desktop()->width() - (QApplication::desktop()->width() / 2)) * 1.7),
	            (int)((QApplication::desktop()->height() - (QApplication::desktop()->height() / 2)) * 1.7));
}
////////////////////////////////////////////////////////////////////////////////
void MiEmpresaIU::agregaColumnas(){
	m_tablaClientes.setColumnCount(12);
	m_tablaClientes.setHorizontalHeaderLabels(
		QStringList() << "Id" << "Nombre" << "Paterno" << "Materno" << "Correo"
			<< QString::fromUtf8("Teléfono") << "Calle" << "Colonia"
			<< "Ciudad" << "Estado" << "CP" << QString::fromUtf8("País (姓名)"));
	this->llenarTablaClientes();
}
////////////////////////////////////////////////////////////////////////////////
void MiEmpresaIU::llenarTablaClientes(){
	QList<Cliente>* clientes = m_bd.obtenerTodosLosClientes();

	m_tablaClientes.clearContents();
	for (int i = 0; i < clientes->size(); i++){
		if (i >= m_tablaClientes.rowCount())
			m_tablaClientes.insertRow(i);
		m_tablaClientes.setItem(i, 0, (new QTableWidgetItem(QString::number(clientes->at(i).id()))));
		m_tablaClientes.setItem(i, 1, (new QTableWidgetItem(clientes->at(i).nombre().nombre())));
		m_tablaClientes.setItem(i, 2, (new QTableWidgetItem(clientes->at(i).nombre().apellidop())));
		m_tablaClientes.setItem(i, 3, (new QTableWidgetItem(clientes->at(i).nombre().apellidom())));
		m_tablaClientes.setItem(i, 4, (new QTableWidgetItem(clientes->at(i).correo())));
		m_tablaClientes.setItem(i, 5, (new QTableWidgetItem(clientes->at(i).tel())));
		m_tablaClientes.setItem(i, 6, (new QTableWidgetItem(clientes->at(i).direccion().calle())));
		m_tablaClientes.setItem(i, 7, (new QTableWidgetItem(clientes->at(i).direccion().colonia())));
		m_tablaClientes.setItem(i, 8, (new QTableWidgetItem(clientes->at(i).direccion().ciudad())));
		m_tablaClientes.setItem(i, 9, (new QTableWidgetItem(clientes->at(i).direccion().estado())));
		m_tablaClientes.setItem(i, 10, (new QTableWidgetItem(clientes->at(i).direccion().cp())));
		m_tablaClientes.setItem(i, 11, (new QTableWidgetItem(clientes->at(i).direccion().pais())));
	}
}
////////////////////////////////////////////////////////////////////////////////
void MiEmpresaIU::agregaMenu(){
	m_menu.addMenu(&m_menuArchivo);
	m_menuArchivo.setTitle("&Archivo");
	m_agregarCliente = m_menuArchivo.addAction("&Agregar Cliente");
	m_menuArchivo.addSeparator();
	m_salir = m_menuArchivo.addAction("&Salir");

	this->setMenuBar(&m_menu);
}
////////////////////////////////////////////////////////////////////////////////
void MiEmpresaIU::conectaSignalSlots(){
	connect(m_salir, SIGNAL(triggered()), qApp, SLOT(quit()));
	connect(m_agregarCliente, SIGNAL(triggered()),
	        this, SLOT(menuAgregarCliente()));
}
////////////////////////////////////////////////////////////////////////////////
void MiEmpresaIU::menuAgregarCliente(){
	ClienteNuevo cn;// = new ClienteNuevo;

	connect(&cn, SIGNAL(agregarCliente(Cliente const &)),
	        this, SLOT(agregarCliente(Cliente const &)));

	cn.exec();
	//cn->deleteLater();
}
////////////////////////////////////////////////////////////////////////////////
void MiEmpresaIU::agregarCliente(Cliente const & c){
	m_bd.insertarCliente(c);

	this->llenarTablaClientes();
}
