453 lines
14 KiB
C++
453 lines
14 KiB
C++
#include "mainwindow.h"
|
|
#include "ui_mainwindow.h"
|
|
|
|
#include <QFileDialog>
|
|
#include <QFile>
|
|
#include <QJsonObject>
|
|
#include <QJsonArray>
|
|
#include <QJsonDocument>
|
|
#include <QMessageBox>
|
|
#include "base/HGUtility.h"
|
|
#include "analysisjson.h"
|
|
#include "dialog_mymessagebox.h"
|
|
|
|
MainWindow::MainWindow(QWidget *parent)
|
|
: QMainWindow(parent)
|
|
, ui(new Ui::MainWindow)
|
|
{
|
|
ui->setupUi(this);
|
|
|
|
initDeviceInfo();
|
|
initTableWidgetUi();
|
|
}
|
|
|
|
MainWindow::~MainWindow()
|
|
{
|
|
delete ui;
|
|
}
|
|
|
|
void MainWindow::initDeviceInfo()
|
|
{
|
|
QStringList oemName{ tr("huagao"), tr("microtek"), tr("hanvon"), tr("lanxum"), tr("deli"), tr("unis"), tr("cumtenn") };
|
|
ui->comboBox_OEM->addItems(oemName);
|
|
|
|
QStringList deviceType{ tr("G100-3399"), tr("G200-3399"), tr("G300-3288"), tr("G306"), tr("G400-3399") };
|
|
ui->comboBox_deviceType->addItems(deviceType);
|
|
|
|
int speedTime = 40;
|
|
while (speedTime <= 130)
|
|
{
|
|
ui->comboBox_speedMode->addItem(QString::number(speedTime));
|
|
speedTime += 10;
|
|
}
|
|
|
|
QStringList sleepTime{ tr("Not dormant"), tr("5 min"), tr("10 min"), tr("20 min"), tr("30 min"), tr("1 hour"), tr("2 hours"), tr("4 hours") };
|
|
ui->comboBox_sleepTime->addItems(sleepTime);
|
|
ui->comboBox_lockDevice->addItem(tr("Not locked"));
|
|
ui->comboBox_lockDevice->addItem(tr("Lock"));
|
|
ui->lineEdit_vid->setReadOnly(true);
|
|
ui->lineEdit_pid->setReadOnly(true);
|
|
}
|
|
|
|
void MainWindow::initTableWidgetUi()
|
|
{
|
|
ui->tableWidget->resizeRowsToContents();
|
|
ui->tableWidget->setColumnCount(6);
|
|
ui->tableWidget->horizontalHeader()->setDefaultSectionSize(200);
|
|
ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);
|
|
ui->tableWidget->horizontalHeader()->setSectionResizeMode(0, QHeaderView::ResizeToContents);
|
|
|
|
QStringList header;
|
|
header << tr("selected") << tr("Test ID") << tr("Test items") << tr("Test station") << tr("Test type") << tr("Test content");
|
|
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();
|
|
ui->tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);
|
|
ui->tableWidget->setStyleSheet("selection-background-color:rgb(193,210,240)");
|
|
}
|
|
|
|
bool MainWindow::loadDefaultItems(DeviceType deviceType)
|
|
{
|
|
QString processPath = QCoreApplication::applicationDirPath();
|
|
|
|
QString baseName;
|
|
if (deviceType == DeviceType_G100)
|
|
baseName = "G100";
|
|
else if (deviceType == DeviceType_G200)
|
|
baseName = "G200";
|
|
else if (deviceType == DeviceType_G300)
|
|
baseName = "G300";
|
|
else if (deviceType == DeviceType_G306)
|
|
baseName = "G306";
|
|
else if (deviceType == DeviceType_G400)
|
|
baseName = "G400";
|
|
|
|
processPath.append("/" + baseName + ".json");
|
|
|
|
QString filePath = getStdFileName(processPath);
|
|
|
|
QFile file(filePath);
|
|
if (!file.exists())
|
|
return false;
|
|
|
|
AnalysisJson analysisJson(filePath);
|
|
std::vector<AnalysisJson::json_node> list_jsonNode = analysisJson.GetNode();
|
|
int count = list_jsonNode.size();
|
|
ui->tableWidget->setRowCount(count);
|
|
for(int i = 0; i < count; ++i)
|
|
{
|
|
QTableWidgetItem *check = new QTableWidgetItem();
|
|
check->setCheckState(Qt::Unchecked);
|
|
ui->tableWidget->setItem(i, 0, check);
|
|
ui->tableWidget->item(i, 0)->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
|
|
|
|
AnalysisJson::json_node node = list_jsonNode[i];
|
|
ui->tableWidget->setItem(i, 1, new QTableWidgetItem(QString::number(i+1)));
|
|
ui->tableWidget->item(i, 1)->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
|
|
|
|
ui->tableWidget->setItem(i, 2, new QTableWidgetItem(node.title));
|
|
ui->tableWidget->item(i, 2)->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
|
|
|
|
ui->tableWidget->setItem(i, 3, new QTableWidgetItem(node.station));
|
|
ui->tableWidget->item(i, 3)->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
|
|
|
|
ui->tableWidget->setItem(i, 4, new QTableWidgetItem(node.is_man ? tr("Manual testing") : tr("automatic testing")));
|
|
ui->tableWidget->item(i, 4)->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
|
|
|
|
ui->tableWidget->setItem(i, 5, new QTableWidgetItem(node.desc));
|
|
ui->tableWidget->item(i, 5)->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
|
|
|
|
QTableWidgetItem *item = ui->tableWidget->item(i, 2);
|
|
QVariant var = QVariant::fromValue(node.name);
|
|
item->setData(Qt::UserRole, var);
|
|
}
|
|
ui->checkBox_selectAll->setChecked(false);
|
|
ui->checkBox_selectAll->setChecked(true);
|
|
ui->tableWidget->selectRow(0);
|
|
|
|
return true;
|
|
}
|
|
|
|
QPair<QString, QString> MainWindow::getVidPid(QString oem, QString deviceType)
|
|
{
|
|
QString vid;
|
|
QString pid;
|
|
if (oem == tr("huagao"))
|
|
{
|
|
vid = "0x3072";
|
|
if (deviceType == "G100-3399")
|
|
{
|
|
pid = "0x0139";
|
|
}
|
|
else if (deviceType == "G200-3399")
|
|
{
|
|
pid = "0x0239";
|
|
}
|
|
else if (deviceType == "G300-3288")
|
|
{
|
|
pid = "0x0300";
|
|
}
|
|
else if (deviceType == "G306")
|
|
{
|
|
pid = "0x0306";
|
|
}
|
|
else if (deviceType == "G400-3399")
|
|
{
|
|
pid = "0x0439";
|
|
}
|
|
}
|
|
else if (oem == tr("microtek"))
|
|
{
|
|
vid = "0x05da";
|
|
if (deviceType == "G100-3399")
|
|
{
|
|
pid = "0x9222";
|
|
}
|
|
else if (deviceType == "G200-3399")
|
|
{
|
|
pid = "0x9223";
|
|
}
|
|
else if (deviceType == "G300-3288")
|
|
{
|
|
pid = "0";
|
|
}
|
|
else if (deviceType == "G400-3399")
|
|
{
|
|
pid = "9220";
|
|
}
|
|
}
|
|
else if (oem == tr("hanvon"))
|
|
{
|
|
vid = "0x2903";
|
|
if (deviceType == "G100-3399")
|
|
{
|
|
pid = "0x8000";
|
|
}
|
|
else if (deviceType == "G200-3399")
|
|
{
|
|
pid = "0x9000";
|
|
}
|
|
else if (deviceType == "G300-3288")
|
|
{
|
|
pid = "0x1000";
|
|
}
|
|
else if (deviceType == "G400-3399")
|
|
{
|
|
pid = "0x7039";
|
|
}
|
|
}
|
|
else if (oem == tr("lanxum"))
|
|
{
|
|
vid = "0x31c9";
|
|
if (deviceType == "G100-3399")
|
|
{
|
|
pid = "0x8620";
|
|
}
|
|
else if (deviceType == "G200-3399")
|
|
{
|
|
pid = "0x8630";
|
|
}
|
|
else if (deviceType == "G300-3288")
|
|
{
|
|
pid = "0x8200";
|
|
}
|
|
else if (deviceType == "G400-3399")
|
|
{
|
|
pid = "0x8529";
|
|
}
|
|
}
|
|
else if (oem == tr("deli"))
|
|
{
|
|
vid = "0x300e";
|
|
if (deviceType == "G100-3399" || deviceType == "G200-3399")
|
|
{
|
|
pid = "0x401c";
|
|
}
|
|
else if (deviceType == "G300-3288")
|
|
{
|
|
pid = "0x4015";
|
|
}
|
|
else if (deviceType == "G400-3399")
|
|
{
|
|
pid = "0x4019";
|
|
}
|
|
}
|
|
else if (oem == tr("unis"))
|
|
{
|
|
vid = "0x3308";
|
|
if (deviceType == "G100-3399" || deviceType == "G200-3399")
|
|
{
|
|
pid = "0x0200";
|
|
}
|
|
else if (deviceType == "G300-3288" || deviceType == "G400-3399")
|
|
{
|
|
pid = "0";
|
|
}
|
|
}
|
|
else if (oem == tr("cumtenn"))
|
|
{
|
|
vid = "0x3308";
|
|
if (deviceType == "G100-3399" || deviceType == "G200-3399")
|
|
{
|
|
pid = "0x6006";
|
|
}
|
|
else if (deviceType == "G300-3288")
|
|
{
|
|
pid = "0x6005";
|
|
}
|
|
else if (deviceType == "G400-3399")
|
|
{
|
|
pid = "0";
|
|
}
|
|
}
|
|
|
|
QPair<QString, QString> vidPid;
|
|
vidPid.first = vid;
|
|
vidPid.second = pid;
|
|
|
|
return vidPid;
|
|
}
|
|
|
|
void MainWindow::on_pushButton_generate_clicked()
|
|
{
|
|
if (ui->tableWidget->rowCount() == 0)
|
|
{
|
|
QMessageBox::information(this, tr("Prompt"), tr("Please add test item"));
|
|
return;
|
|
}
|
|
|
|
if (ui->lineEdit_vid->text().isEmpty() || ui->lineEdit_pid->text().isEmpty() || ui->lineEdit_cpuSize->text().isEmpty() ||
|
|
ui->lineEdit_diskSize->text().isEmpty())
|
|
{
|
|
QMessageBox::information(this, tr("Prompt"), tr("Incomplete information, please check"));
|
|
return;
|
|
}
|
|
|
|
bool ok = false;
|
|
if (ui->lineEdit_pid->text().toInt(&ok, 16) == 0)
|
|
{
|
|
QMessageBox::information(this, tr("Prompt"), tr("Pid is empty, device not supported"));
|
|
return;
|
|
}
|
|
|
|
DeviceInfo deviceInfo;
|
|
deviceInfo.oem = ui->comboBox_OEM->currentText();
|
|
deviceInfo.deviceType = ui->comboBox_deviceType->currentText();
|
|
deviceInfo.deviceModel = ui->lineEdit_deviceModel->text();
|
|
deviceInfo.fwVersion = ui->lineEdit_fwVersion->text();
|
|
deviceInfo.vid = ui->lineEdit_vid->text();
|
|
deviceInfo.pid = ui->lineEdit_pid->text();
|
|
deviceInfo.sleepTime = ui->comboBox_sleepTime->currentText();
|
|
deviceInfo.speedMode = ui->comboBox_speedMode->currentText();
|
|
deviceInfo.cpuSize = ui->lineEdit_cpuSize->text();
|
|
deviceInfo.diskSize = ui->lineEdit_diskSize->text();
|
|
deviceInfo.lockDevice = ui->comboBox_lockDevice->currentText();
|
|
|
|
Dialog_myMessageBox dlg(deviceInfo, this);
|
|
if (!dlg.exec())
|
|
return;
|
|
|
|
int sleepTime[8] = { 0, 5, 10, 20, 30, 60, 120, 240 };
|
|
|
|
QJsonObject globalObject;
|
|
globalObject.insert("vid-to", ui->lineEdit_vid->text().toInt(&ok, 16));
|
|
globalObject.insert("pid-to", ui->lineEdit_pid->text().toInt(&ok, 16));
|
|
globalObject.insert("sleep-time", sleepTime[ui->comboBox_sleepTime->currentIndex()]);
|
|
globalObject.insert("speed-mode", ui->comboBox_speedMode->currentText().toInt());
|
|
globalObject.insert("cpu-size", ui->lineEdit_cpuSize->text().toInt());
|
|
globalObject.insert("disk-size", ui->lineEdit_diskSize->text().toInt());
|
|
globalObject.insert("lock-device", ui->comboBox_lockDevice->currentIndex() == 0 ? false : true);
|
|
if (!ui->lineEdit_deviceModel->text().isEmpty())
|
|
globalObject.insert("device-model", ui->lineEdit_deviceModel->text());
|
|
if (!ui->lineEdit_fwVersion->text().isEmpty())
|
|
globalObject.insert("firmware-version", ui->lineEdit_fwVersion->text());
|
|
|
|
QJsonObject json;
|
|
json.insert("global", QJsonValue(globalObject));
|
|
|
|
QJsonObject testItemObject;
|
|
int count = ui->tableWidget->rowCount();
|
|
for (int i = 0; i < count; i++)
|
|
{
|
|
QTableWidgetItem *item = ui->tableWidget->item(i, 0);
|
|
if (item->checkState() == Qt::Unchecked)
|
|
continue;
|
|
|
|
QString name = ui->tableWidget->item(i, 2)->data(Qt::UserRole).value<QString>();
|
|
testItemObject.insert("name", name);
|
|
|
|
testItemObject.insert("title", ui->tableWidget->item(i, 2)->text());
|
|
testItemObject.insert("station", ui->tableWidget->item(i, 3)->text());
|
|
testItemObject.insert("man", ui->tableWidget->item(i, 4)->text() == tr("automatic testing") ? false : true);
|
|
testItemObject.insert("desc", ui->tableWidget->item(i, 5)->text());
|
|
json.insert(QString::number(i + 1), QJsonValue(testItemObject));
|
|
}
|
|
|
|
QJsonDocument doc;
|
|
doc.setObject(json);
|
|
|
|
QString fileName = QFileDialog::getSaveFileName(this, tr("Select profile path"), "", tr("Json(*.json)"));
|
|
if (fileName.isEmpty())
|
|
return;
|
|
|
|
if (!fileName.endsWith(".json"))
|
|
fileName.append(".json");
|
|
|
|
QFile file(fileName);
|
|
if (file.open(QIODevice::WriteOnly))
|
|
{
|
|
file.write(doc.toJson());
|
|
file.close();
|
|
|
|
QMessageBox::information(this, tr("Prompt"), tr("Successfully generated"));
|
|
}
|
|
else
|
|
{
|
|
QMessageBox::information(this, tr("Prompt"), tr("Generate filed"));
|
|
}
|
|
}
|
|
|
|
void MainWindow::on_tableWidget_itemClicked(QTableWidgetItem *item)
|
|
{
|
|
int row = item->row();
|
|
QTableWidgetItem *item2 = ui->tableWidget->item(row, 0);
|
|
if (item2->checkState() == Qt::Checked)
|
|
{
|
|
ui->tableWidget->selectRow(row);
|
|
}
|
|
|
|
ui->textBrowser_testContent->setText(ui->tableWidget->item(row, 5)->text());
|
|
}
|
|
|
|
void MainWindow::on_checkBox_selectAll_stateChanged(int arg1)
|
|
{
|
|
(void)arg1;
|
|
bool check = ui->checkBox_selectAll->isChecked();
|
|
|
|
for(int i = 0; i < ui->tableWidget->rowCount(); i++)
|
|
{
|
|
QTableWidgetItem *item = ui->tableWidget->item(i, 0);
|
|
if (item != nullptr)
|
|
{
|
|
if (check)
|
|
item->setCheckState(Qt::Checked);
|
|
else
|
|
item->setCheckState(Qt::Unchecked);
|
|
}
|
|
}
|
|
}
|
|
|
|
void MainWindow::on_comboBox_OEM_currentIndexChanged(const QString &arg1)
|
|
{
|
|
QPair<QString, QString> vidPid = getVidPid(arg1, ui->comboBox_deviceType->currentText());
|
|
QString vid = vidPid.first;
|
|
QString pid = vidPid.second;
|
|
|
|
ui->lineEdit_vid->setText(vid);
|
|
ui->lineEdit_pid->setText(pid);
|
|
}
|
|
|
|
void MainWindow::on_comboBox_deviceType_currentIndexChanged(const QString &arg1)
|
|
{
|
|
DeviceType deviceType = DeviceType_G100;
|
|
if (arg1 == "G100-3399")
|
|
deviceType = DeviceType_G100;
|
|
else if (arg1 == "G200-3399")
|
|
deviceType = DeviceType_G200;
|
|
else if (arg1 == "G300-3288")
|
|
deviceType = DeviceType_G300;
|
|
else if (arg1 == "G306")
|
|
deviceType = DeviceType_G306;
|
|
else if (arg1 == "G400-3399")
|
|
deviceType = DeviceType_G400;
|
|
|
|
loadDefaultItems(deviceType);
|
|
|
|
QPair<QString, QString> vidPid = getVidPid(ui->comboBox_OEM->currentText(), arg1);
|
|
QString vid = vidPid.first;
|
|
QString pid = vidPid.second;
|
|
|
|
ui->lineEdit_vid->setText(vid);
|
|
ui->lineEdit_pid->setText(pid);
|
|
}
|
|
|
|
QString MainWindow::getStdFileName(const QString &fileName)
|
|
{
|
|
char result[512] = {0};
|
|
HGBase_StandardiseFileName(fileName.toStdString().c_str(), result, 512);
|
|
return result;
|
|
}
|