#include "dialog_log.h" #include "ui_dialog_log.h" #include #include "app_cfg.h" dialog_log::dialog_log(QWidget *parent) : QDialog(parent) , ui(new Ui::dialog_log) { ui->setupUi(this); QHBoxLayout *bottom = new QHBoxLayout(); pbtn_clear = new QPushButton(this); cBox_autoScroll = new QCheckBox(this); pbtn_stop = 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_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_continueScan); bottom->addWidget(pbtn_finishScan); ui->verticalLayout->addItem(bottom); cBox_autoScroll->setChecked(getCfgValue("log", "autoScroll", false)); 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_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) { 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 (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_continueScan->hide(); pbtn_finishScan->hide(); } else { if (isScanning) { pbtn_stop->show(); pbtn_continueScan->hide(); pbtn_finishScan->hide(); } else { pbtn_stop->hide(); pbtn_continueScan->show(); pbtn_finishScan->show(); } } } void dialog_log::closeEvent(QCloseEvent *event) { (void)event; on_pbtn_stop_clicked(); } void dialog_log::on_pbtn_continuScan_cliked() { 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(); }