#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 "dialog_excepdesc.h" #include #include #include Form_BurnMode::Form_BurnMode(class MainWindow *mainwnd, QWidget *parent) : QWidget(parent), m_curIndex(0), m_mainwnd(mainwnd), m_hg(nullptr), ui(new Ui::Form_BurnMode) { ui->setupUi(this); 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(); } DeviceManager *Form_BurnMode::getDevManager() { 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(); return devManager; } } return nullptr; } 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_enterBurnMode_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 &profileName, const QString & devName, const QString &serialNum) { m_mainwnd = mainwnd; m_burnMode = burnMode; m_handle = handle; m_profileName = profileName; m_devName = devName; m_serialNum = serialNum; 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; } QString DeviceManager::getSerialNum() { return m_serialNum; } void DeviceManager::setBurnMode() { const wchar_t *p = L"1"; // m_mainwnd->addTestingRef(); func_test_go(HGPDTTOOLDB_NAME_REBOOT_DEVICE, p, m_hg); } void DeviceManager::setSpeedMode() { AnalysisJson analysisJson(m_profileName); AnalysisJson::json_global jsonGlobal = analysisJson.GetGlobal(); LPWRITECFG lp = new WRITECFG; int speedMode = jsonGlobal.speed_mode; lp->cat = WRITE_CAT_SPEED; lp->val = (void*)&speedMode; func_test_go(WRITE_CFG_NAME, (const wchar_t*)lp, m_hg); delete lp; } void DeviceManager::setSleepTime() { AnalysisJson analysisJson(m_profileName); AnalysisJson::json_global jsonGlobal = analysisJson.GetGlobal(); LPWRITECFG lp = new WRITECFG; int sleepTime = jsonGlobal.sleep_time; lp->cat = WRITE_CAT_SLEEP; lp->val = (void*)&sleepTime; func_test_go(WRITE_CFG_NAME, (const wchar_t*)lp, m_hg); delete lp; } void DeviceManager::setVidPid() { AnalysisJson analysisJson(m_profileName); AnalysisJson::json_global jsonGlobal = analysisJson.GetGlobal(); LPWRITECFG lp = new WRITECFG; VIDPID vidpid; vidpid.VID = jsonGlobal.vid_to; vidpid.PID = jsonGlobal.pid_to; int vidpidValue = vidpid.Value; lp->cat = WRITE_CAT_VID_PID; lp->val = (void*)&vidpidValue; func_test_go(WRITE_CFG_NAME, (const wchar_t*)lp, m_hg); delete lp; } void DeviceManager::rebootDevice() { const wchar_t *p = L"0"; func_test_go(HGPDTTOOLDB_NAME_REBOOT_DEVICE, p, m_hg); } QString DeviceManager::getDevType() { std::string firmWareNum; unsigned int firmWareNumLen = 0; if(SANE_STATUS_NO_MEM == sane_io_control(m_handle, IO_CTRL_CODE_GET_HARDWARE_VERSION, nullptr, &firmWareNumLen) && firmWareNumLen) { firmWareNum.resize(firmWareNumLen); sane_io_control(m_handle, IO_CTRL_CODE_GET_HARDWARE_VERSION, &firmWareNum[0], &firmWareNumLen); } QString str = QString::fromStdString(firmWareNum.c_str()); return str.left(2) + "00"; } int DeviceManager::getSpeedMode() { SANE_Int speedMode = 0; unsigned int len = sizeof(SANE_Int); sane_io_control(m_handle, IO_CTRL_CODE_GET_SPEED_MODE, &speedMode, &len); const wchar_t G100[6] = { 70,80,90,110 }; const wchar_t G200[6] = { 100,110,120,130 }; const wchar_t G300[6] = { 40,50,60,70 }; const wchar_t G400[6] = { 40,50,60,70,80 }; QString devType = getDevType(); int speed = 0; if ((int)speedMode >= 40) speed = (int)speedMode; else { if (devType == "G100") speed = G100[(int)speedMode - 1]; else if (devType == "G200") speed = G200[(int)speedMode - 1]; else if (devType == "G300") speed = G300[(int)speedMode - 1]; else if (devType == "G400") speed = G400[(int)speedMode - 1]; } return speed; } int DeviceManager::getSleepTime() { int sleepTime = SANE_POWER_FIRST; unsigned int len2 = sizeof(int); sane_io_control(m_handle, IO_CTRL_CODE_GET_POWER_LEVEL, &sleepTime, &len2); if (sleepTime > 99999 || sleepTime == -1) return 0; return (sleepTime / 60); } int DeviceManager::getDevVid() { VIDPID vidpid; int vidpid_val; unsigned int len = sizeof(int); sane_io_control(m_handle, IO_CTRL_CODE_GET_VIDPID, &vidpid_val, &len); vidpid.Value = vidpid_val; int vid = vidpid.VID; return vid; } int DeviceManager::getDevPid() { VIDPID vidpid; int vidpid_val; unsigned int len = sizeof(int); sane_io_control(m_handle, IO_CTRL_CODE_GET_VIDPID, &vidpid_val, &len); vidpid.Value = vidpid_val; int pid = vidpid.PID; return pid; } 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(); //}