#include "form_burnmode.h" #include "ui_form_burnmode.h" #include "dialog_setburnsn.h" #include "hgscanner.h" #include "mainwindow.h" #include "analysisjson.h" #include "base/HGBase.h" #include "HGUIGlobal.h" #include #include #include Form_BurnMode::Form_BurnMode(class MainWindow *mainwnd, QWidget *parent) : QWidget(parent), m_curIndex(0), m_mainwnd(mainwnd), ui(new Ui::Form_BurnMode) { ui->setupUi(this); ui->pbtn_close->setVisible(false); connect(this, SIGNAL(testResult(bool)), this, SLOT(on_testResult(bool)), Qt::QueuedConnection); initTableWidget(); } Form_BurnMode::~Form_BurnMode() { delete ui; } void Form_BurnMode::addDevice(DeviceManager *devManager) { ui->tableWidget->setRowCount(m_curIndex + 1); ui->tableWidget->setItem(m_curIndex, 0, new QTableWidgetItem(QString::number(m_curIndex + 1))); ui->tableWidget->item(m_curIndex, 0)->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter); QTableWidgetItem *check = new QTableWidgetItem(); check->setCheckState(Qt::Unchecked); ui->tableWidget->setItem(m_curIndex, 1, check); ui->tableWidget->item(m_curIndex, 1)->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter); ui->tableWidget->setItem(m_curIndex, 2, new QTableWidgetItem(devManager->getDevName())); ui->tableWidget->item(m_curIndex, 2)->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter); QTableWidgetItem *item = ui->tableWidget->item(m_curIndex, 1); QVariant var = QVariant::fromValue((void*)devManager); item->setData(Qt::UserRole, var); updatetablewidget(); m_curIndex++; } void Form_BurnMode::deleteDevice(QString devName) { for(int i = 0; i < ui->tableWidget->rowCount(); i++) { QTableWidgetItem *item = ui->tableWidget->item(i, 1); QTableWidgetItem *item2 = ui->tableWidget->item(i, 2); if (devName!= nullptr && item != nullptr) { if (devName == item2->text()) { DeviceManager *devManager = (DeviceManager*)item->data(Qt::UserRole).value(); delete devManager; ui->tableWidget->removeRow(i); m_curIndex--; break; } } } updatetablewidget(); } void Form_BurnMode::on_testResult(bool setStatus) { m_mainwnd->releaseTesting(); } void Form_BurnMode::initTableWidget() { ui->tableWidget->resizeRowsToContents(); ui->tableWidget->setColumnCount(3); ui->tableWidget->horizontalHeader()->setDefaultSectionSize(200); // ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents); ui->tableWidget->horizontalHeader()->setSectionResizeMode(0, QHeaderView::ResizeToContents); ui->tableWidget->horizontalHeader()->setSectionResizeMode(1, QHeaderView::ResizeToContents); QStringList header; header<< tr("ID") << tr("selected") << tr("device"); ui->tableWidget->setHorizontalHeaderLabels(header); QFont font = ui->tableWidget->horizontalHeader()->font(); font.setBold(true); ui->tableWidget->horizontalHeader()->setFont(font); ui->tableWidget->horizontalHeader()->setStretchLastSection(true); ui->tableWidget->verticalHeader()->setDefaultSectionSize(10); ui->tableWidget->setFrameShape(QFrame::NoFrame); ui->tableWidget->setShowGrid(true); ui->tableWidget->verticalHeader()->setVisible(false); // ui->tableWidget->setSelectionMode(QAbstractItemView::SingleSelection); ui->tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows); ui->tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers); ui->tableWidget->horizontalHeader()->setFixedHeight(30); ui->tableWidget->clearContents(); } void Form_BurnMode::updatetablewidget() { for(int i = 0; i < ui->tableWidget->rowCount(); i++) { ui->tableWidget->setItem(i, 0, new QTableWidgetItem(QString::number(i + 1))); } for(int i = 0; i < ui->tableWidget->rowCount(); i++) { QTableWidgetItem *item = ui->tableWidget->item(i, 1); if (item != nullptr) item->setCheckState(Qt::Checked); } ui->cbox_selectAll->setChecked(true); } void Form_BurnMode::on_cbox_selectAll_stateChanged(int arg1) { (void)arg1; bool check = ui->cbox_selectAll->isChecked(); for(int i = 0; i < ui->tableWidget->rowCount(); i++) { QTableWidgetItem *item = ui->tableWidget->item(i, 1); if (item != nullptr) { if (check) item->setCheckState(Qt::Checked); else item->setCheckState(Qt::Unchecked); } } } void Form_BurnMode::on_pbtn_burn_clicked() { int select = 0; for(int i = 0; i < ui->tableWidget->rowCount(); i++) { QTableWidgetItem *item = ui->tableWidget->item(i, 1); if (item != nullptr && Qt::Checked == item->checkState()) { select++; } } if (select == 0) { QMessageBox::information(this, tr("tips"), tr("Please check a devices at least")); return; } for(int i = 0; i < ui->tableWidget->rowCount(); i++) { QTableWidgetItem *item = ui->tableWidget->item(i, 1); if (item != nullptr && Qt::Checked == item->checkState()) { DeviceManager *devManager = (DeviceManager*)item->data(Qt::UserRole).value(); devManager->setBurnMode(); } } } DeviceManager::DeviceManager(class MainWindow *mainwnd, class Form_BurnMode *burnMode, SANE_Handle handle, const QString & devName) { m_mainwnd = mainwnd; m_burnMode = burnMode; m_handle = handle; m_devName = devName; m_hg = new hgscanner(nullptr, m_burnMode, nullptr, m_handle); } DeviceManager::~DeviceManager() { delete m_hg; m_hg = nullptr; sane_close(m_handle); } QString DeviceManager::getDevName() { return m_devName; } void DeviceManager::setBurnMode() { const wchar_t *p = L"1"; m_mainwnd->addTestingRef(); func_test_go(HGPDTTOOLDB_NAME_REBOOT_DEVICE, p, m_hg); } void Form_BurnMode::on_tableWidget_itemDoubleClicked(QTableWidgetItem *item) { int row = item->row(); QTableWidgetItem *item2 = ui->tableWidget->item(row, 1); if (item2->checkState() == Qt::Checked) { item2->setCheckState(Qt::Unchecked); } else { item2->setCheckState(Qt::Checked); } } void Form_BurnMode::on_pbtn_close_clicked() { int select = 0; for(int i = 0; i < ui->tableWidget->rowCount(); i++) { QTableWidgetItem *item = ui->tableWidget->item(i, 1); if (item != nullptr && Qt::Checked == item->checkState()) { select++; } } if (select == 0) { QMessageBox::information(this, tr("tips"), tr("Please check a devices at least")); return; } int rowCount = ui->tableWidget->rowCount(); for (int i = rowCount - 1; i >= 0; --i) { QTableWidgetItem *item = ui->tableWidget->item(i, 1); if (item != nullptr && Qt::Checked == item->checkState()) { DeviceManager *devManager = (DeviceManager*)item->data(Qt::UserRole).value(); delete devManager; ui->tableWidget->removeRow(i); m_curIndex--; } } updatetablewidget(); }