180 lines
4.9 KiB
C++
180 lines
4.9 KiB
C++
#include "dialog_log.h"
|
|
#include "ui_dialog_log.h"
|
|
#include <QDateTime>
|
|
#include "app_cfg.h"
|
|
|
|
dialog_log::dialog_log(QWidget *parent)
|
|
: QDialog(parent)
|
|
, ui(new Ui::dialog_log), ind_scanning_(-1), img_received_(0), msg_fixed_scanning_("")
|
|
{
|
|
ui->setupUi(this);
|
|
setWindowFlags(Qt::Dialog | Qt::WindowCloseButtonHint);
|
|
|
|
QHBoxLayout *bottom = new QHBoxLayout();
|
|
|
|
pbtn_clear = new QPushButton(this);
|
|
cBox_autoScroll = new QCheckBox(this);
|
|
pbtn_stop = new QPushButton(this);
|
|
pbtn_export = new QPushButton(this);
|
|
pbtn_continueScan = new QPushButton(this);
|
|
pbtn_finishScan = new QPushButton(this);
|
|
|
|
pbtn_stop->setVisible(false);
|
|
pbtn_continueScan->setVisible(false);
|
|
pbtn_finishScan->setVisible(false);
|
|
|
|
pbtn_stop->setText(tr("cancel scan"));
|
|
cBox_autoScroll->setText(tr("auto scroll"));
|
|
pbtn_clear->setText(tr("clear"));
|
|
pbtn_export->setText(tr("export images"));
|
|
pbtn_continueScan->setText(tr("continue scan"));
|
|
pbtn_finishScan->setText(tr("finish scan"));
|
|
|
|
bottom->addWidget(pbtn_clear);
|
|
bottom->addWidget(cBox_autoScroll);
|
|
bottom->addStretch();
|
|
bottom->addWidget(pbtn_stop);
|
|
bottom->addWidget(pbtn_export);
|
|
bottom->addWidget(pbtn_continueScan);
|
|
bottom->addWidget(pbtn_finishScan);
|
|
|
|
ui->verticalLayout->addItem(bottom);
|
|
|
|
cBox_autoScroll->setChecked(getCfgValue("log", "autoScroll", true));
|
|
|
|
connect(cBox_autoScroll, SIGNAL(stateChanged(int)), this, SLOT(on_cbox_autoScroll_stateChanged(int)));
|
|
connect(pbtn_stop, SIGNAL(clicked(bool)), this, SLOT(on_pbtn_stop_clicked()));
|
|
connect(pbtn_clear, SIGNAL(clicked(bool)), this, SLOT(on_pbtn_clear_clicked()));
|
|
connect(pbtn_export, SIGNAL(clicked(bool)), this, SLOT(on_pbtn_export_clicked()));
|
|
connect(pbtn_continueScan, SIGNAL(clicked(bool)), this, SLOT(on_pbtn_continuScan_cliked()));
|
|
connect(pbtn_finishScan, SIGNAL(clicked(bool)), this, SLOT(on_pbtn_finishScan_cliked()));
|
|
}
|
|
|
|
dialog_log::~dialog_log()
|
|
{
|
|
delete ui;
|
|
}
|
|
|
|
void dialog_log::addLog(const QString &log, bool err, int log_event)
|
|
{
|
|
if (ui->listWidget->count() > 1000)
|
|
{
|
|
for(int i = 0; i < 100; ++i)
|
|
{
|
|
QListWidgetItem *item = ui->listWidget->takeItem(0);
|
|
delete item;
|
|
}
|
|
}
|
|
|
|
QDateTime timeCurrent = QDateTime::currentDateTime();
|
|
QString time = timeCurrent.toString("[yy-MM-dd hh:mm:ss]");
|
|
ui->listWidget->addItem(time + " " + log);
|
|
|
|
int idx = ui->listWidget->count() - 1;
|
|
if(log_event == LOG_EVENT_SCAN_BEGINNING)
|
|
{
|
|
msg_fixed_scanning_ = (time + " " + log).toStdString();
|
|
ind_scanning_ = idx;
|
|
img_received_ = 0;
|
|
}
|
|
else if(log_event == LOG_EVENT_SCAN_STOPPED)
|
|
{
|
|
char utf8[128] = {0};
|
|
sprintf(utf8, tr("(epicycle scanning images %u picture)").toStdString().c_str(), img_received_);
|
|
if(ind_scanning_ >= 0 && ind_scanning_ < idx)
|
|
ui->listWidget->item(ind_scanning_)->setText(QString::fromStdString(msg_fixed_scanning_));
|
|
if (idx >= 0)
|
|
ui->listWidget->item(idx)->setText(time + " " + log + QString::fromStdString(utf8));
|
|
ind_scanning_ = -1;
|
|
msg_fixed_scanning_ = "";
|
|
}
|
|
if (idx >= 0)
|
|
ui->listWidget->item(idx)->setTextColor(err ? Qt::red : Qt::black);
|
|
|
|
if (cBox_autoScroll->isChecked())
|
|
{
|
|
ui->listWidget->scrollToItem(ui->listWidget->item(idx));
|
|
}
|
|
}
|
|
|
|
void dialog_log::updateStatus(bool online, bool isScanning)
|
|
{
|
|
if (!online)
|
|
{
|
|
pbtn_stop->hide();
|
|
pbtn_export->hide();
|
|
pbtn_continueScan->hide();
|
|
pbtn_finishScan->hide();
|
|
}
|
|
else
|
|
{
|
|
if (isScanning)
|
|
{
|
|
pbtn_stop->show();
|
|
pbtn_export->hide();
|
|
pbtn_continueScan->hide();
|
|
pbtn_finishScan->hide();
|
|
}
|
|
else
|
|
{
|
|
pbtn_stop->hide();
|
|
if(img_received_)
|
|
pbtn_export->show();
|
|
pbtn_continueScan->show();
|
|
pbtn_finishScan->show();
|
|
}
|
|
}
|
|
}
|
|
|
|
void dialog_log::image_received_from_scanner(void)
|
|
{
|
|
img_received_++;
|
|
if(ind_scanning_ >= 0 && ind_scanning_ < ui->listWidget->count())
|
|
{
|
|
char count[20];
|
|
sprintf(count, "(%d)", img_received_);
|
|
ui->listWidget->item(ind_scanning_)->setText(QString::fromStdString(msg_fixed_scanning_ + count));
|
|
}
|
|
}
|
|
|
|
void dialog_log::closeEvent(QCloseEvent *event)
|
|
{
|
|
(void)event;
|
|
on_pbtn_stop_clicked();
|
|
}
|
|
|
|
void dialog_log::on_pbtn_export_clicked()
|
|
{
|
|
emit exportScanned();
|
|
}
|
|
|
|
void dialog_log::on_pbtn_continuScan_cliked()
|
|
{
|
|
img_received_ = 0;
|
|
emit continueScan();
|
|
}
|
|
|
|
void dialog_log::on_pbtn_finishScan_cliked()
|
|
{
|
|
close();
|
|
}
|
|
|
|
void dialog_log::on_cbox_autoScroll_stateChanged(int state)
|
|
{
|
|
(void)state;
|
|
saveCfgValue("log", "autoScroll", cBox_autoScroll->isChecked());
|
|
}
|
|
|
|
void dialog_log::on_pbtn_stop_clicked(void)
|
|
{
|
|
emit stopScan();
|
|
}
|
|
|
|
void dialog_log::on_pbtn_clear_clicked()
|
|
{
|
|
ui->listWidget->clear();
|
|
ind_scanning_ = -1;
|
|
}
|
|
|
|
|