#include "importtemplate.h"
#include "ui_importtemplate.h"

#include <QDebug>
#include <QPoint>
#include <QTableWidgetItem>
#include <QFile>

#include "warning/warning.h"
#include "lhstylemanager.h"

ImportTemplate::ImportTemplate(QStringList& tabList,QWidget *parent) :
    QDialog(parent),
    ui(new Ui::ImportTemplate)
{
    ui->setupUi(this);

    /* 设置隐藏边框 */
    this->setWindowFlags(Qt::Dialog | Qt::FramelessWindowHint);
    /* 设置底层样式表 */
    this->setAttribute(Qt::WA_TranslucentBackground);
    /* 加载QSS文件 */
    // QFile file(":/QSS/QSS/importtemplate_light.qss");
    // if(file.open(QFile::ReadOnly))
    // {
    //     QString styleSheet = file.readAll();
    //     this->setStyleSheet(styleSheet);
    //     file.close();
    // }
    LHStyleManager::Instance()->AddWidget(this);


    m_templateName.clear();

    /* 设置列数,列宽、列高、不可编辑、选择一行 */
    ui->tableWidget->setColumnCount(3);
    //设置行高
    ui->tableWidget->verticalHeader()->setDefaultSectionSize(48);
    /* 设置最小列宽 */
    ui->tableWidget->horizontalHeader()->setMinimumSectionSize(10);
    /* 设置列宽间距 */
    ui->tableWidget->setColumnWidth(0,46);
    ui->tableWidget->setColumnWidth(1,272);
    ui->tableWidget->setColumnWidth(2,60);
    
    //设置不可编辑
    ui->tableWidget->setEditTriggers(QTableWidget::NoEditTriggers);
    //设置选中一行
    ui->tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);
    //设置只能选中一行
    ui->tableWidget->setSelectionMode(QAbstractItemView::SingleSelection);
    //隐藏竖滚动条
    ui->tableWidget->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
    //隐藏横滚动条
    ui->tableWidget->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
    //隐藏网格线
    ui->tableWidget->setShowGrid(false);
    //隐藏行号
    ui->tableWidget->verticalHeader()->setVisible(false);
    //隐藏列表头
    ui->tableWidget->horizontalHeader()->setVisible(false);
    //设置不显示选中后的虚线
    ui->tableWidget->setFocusPolicy(Qt::NoFocus);
    //开启排序功能
//    ui->tableWidget->setSortingEnabled(true);

    ui->label_warning->hide();

    connect(ui->pBtn_close,SIGNAL(clicked()),this,SLOT(close()));
    connect(ui->pBtn_cancel,SIGNAL(clicked()),this,SLOT(close()));
    connect(ui->pBtn_ok,SIGNAL(clicked()),this,SLOT(do_ok()));
    connect(ui->tableWidget,SIGNAL(cellClicked(int,int)),this,SLOT(do_seletctRow(int,int)));


    /* 先设置表格的行数 */
    ui->tableWidget->setRowCount(tabList.count());
    for(int i = 0;i < tabList.count();i++)
    {
        createRow(i,i + 1,tabList.at(i));
    }

}

ImportTemplate::~ImportTemplate()
{
    delete ui;
}

void ImportTemplate::do_ok()
{
    ui->label_warning->hide();
    if(m_templateName.isEmpty())
    {
        ui->label_warning->setText("请选择模版");
        ui->label_warning->show();
        return;
    }
    m_isOk = true;
    emit signal_templateName(m_templateName);
    this->close();
}

/* 选中一行 */
void ImportTemplate::do_seletctRow(int row, int col)
{
    if(col == 2)
    {
        /* 弹出框提示确定要删除 */
        Warning w(this);
        w.setText("是否删除模板?");
        bool flag = false;
        connect(&w,&Warning::signal_ok,this,[&](){
            flag = true;
        });

        w.exec();
        if(!flag)
        {
            return;
        }
        emit signal_deleteTemplate(ui->tableWidget->item(row,1)->text());
        ui->tableWidget->removeRow(row);
        /* 对模版重新编号 */
        for(int i = 0 ;i < ui->tableWidget->rowCount();i++)
        {
            ui->tableWidget->item(i,0)->setData(Qt::DisplayRole,i+1);
        }
    }else
    {
        m_templateName = ui->tableWidget->item(row,1)->text();
    }
}

/* 创建一行数据 */
void ImportTemplate::createRow(int row,int num,const QString &text)
{
    QTableWidgetItem* item = new QTableWidgetItem;
    item->setData(Qt::DisplayRole,num);
    // item->setTextAlignment(Qt::AlignVCenter);
    ui->tableWidget->setItem(row,0,item);

    item = new QTableWidgetItem(text);
    // item->setTextAlignment(Qt::AlignVCenter | Qt::AlignLeft);
    ui->tableWidget->setItem(row,1,item);

    item = new QTableWidgetItem("删除");
    // item->setTextAlignment(Qt::AlignVCenter | Qt::AlignHCenter);
    item->setForeground(Qt::blue);
    ui->tableWidget->setItem(row,2,item);
}