#include "import_comics_info_dialog.h"

#include <QHBoxLayout>
#include <QVBoxLayout>
#include <QFileDialog>
#include <QProgressBar>

#include "data_base_management.h"

ImportComicsInfoDialog::ImportComicsInfoDialog(QWidget *parent)
    : QDialog(parent)
{
    setModal(true);
    setWindowTitle(tr("Import comics info"));

    textLabel = new QLabel(tr("Info database location : "));
    path = new QLineEdit;
    textLabel->setBuddy(path);

    accept = new QPushButton(tr("Import"));
    accept->setDisabled(true);
    connect(accept, &QAbstractButton::clicked, this, &ImportComicsInfoDialog::import);

    cancel = new QPushButton(tr("Cancel"));
    connect(cancel, &QAbstractButton::clicked, this, &ImportComicsInfoDialog::close);
    // connect(cancel,SIGNAL(clicked()),this,SIGNAL(rejected()));

    find = new QPushButton(QIcon(":/images/find_folder.png"), "");
    connect(find, &QAbstractButton::clicked, this, &ImportComicsInfoDialog::findPath);

    auto libraryLayout = new QHBoxLayout;

    libraryLayout->addWidget(textLabel);
    libraryLayout->addWidget(path);
    libraryLayout->addWidget(find);
    libraryLayout->setStretchFactor(find, 0); // TODO

    progressBar = new QProgressBar(this);
    progressBar->setMinimum(0);
    progressBar->setMaximum(0);
    progressBar->setTextVisible(false);
    progressBar->hide();
    connect(accept, &QAbstractButton::clicked, progressBar, &QWidget::show);

    auto bottomLayout = new QHBoxLayout;
    bottomLayout->addStretch();
    bottomLayout->addWidget(accept);
    bottomLayout->addWidget(cancel);

    auto mainLayout = new QVBoxLayout;
    mainLayout->addLayout(libraryLayout);
    mainLayout->addStretch();
    mainLayout->addWidget(progressBar);
    mainLayout->addLayout(bottomLayout);

    auto imgMainLayout = new QHBoxLayout;
    QLabel *imgLabel = new QLabel(this);
    QPixmap p(":/images/importComicsInfo.png");
    imgLabel->setPixmap(p);
    imgMainLayout->addWidget(imgLabel);
    imgMainLayout->addLayout(mainLayout);

    setLayout(imgMainLayout);

    setModal(true);
}

ImportComicsInfoDialog::~ImportComicsInfoDialog()
{
}

void ImportComicsInfoDialog::findPath()
{
    QString s = QFileDialog::getOpenFileName(0, "Comics Info", ".", tr("Comics info file (*.ydb)"));
    if (!s.isEmpty()) {
        path->setText(s);
        accept->setEnabled(true);
    }
}

void ImportComicsInfoDialog::import()
{
    progressBar->show();

    auto importer = new Importer();
    importer->source = path->text();
    importer->dest = dest;
    connect(importer, &QThread::finished, this, &ImportComicsInfoDialog::close);
    connect(importer, &QThread::finished, this, &QWidget::hide);
    importer->start();
}

void ImportComicsInfoDialog::close()
{
    path->clear();
    progressBar->hide();
    accept->setDisabled(true);
    QDialog::close();
    emit finished(0);
}

void Importer::run()
{
    DataBaseManagement::importComicsInfo(source, dest);
}