2025-05-10 21:58:58 +08:00

200 lines
6.4 KiB
C++

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <fcntl.h>
#include <sys/ioctl.h>
#include <linux/types.h>
#include <linux/spi/spidev.h>
#include <QMessageBox>
#include <unistd.h>
#include <QDir>
#include <QDebug>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
setWindowState(Qt::WindowMaximized);
setWindowFlags(Qt::FramelessWindowHint | Qt::WindowTitleHint | Qt::WindowCloseButtonHint);
qExec.start("/usr/sbin/fw_printenv video_mipi_edp");
qExec.waitForFinished();
QString result = qExec.readAllStandardOutput();
char *p = result.toLatin1().data();
QString checkCrc = qExec.readAllStandardError();
char *q = checkCrc.toLatin1().data();
if(strstr(q, "Bad CRC") != NULL){
ui->video_mipi->setText(tr("error:environment variable is empty, please write a valid environment variable to flash, you can only click the exit button"));
ui->video_edp->setText(tr("error:environment variable is empty, please write a valid environment variable to flash, you can only click the exit button"));
ui->video_hdmi->setText(tr("error:environment variable is empty, please write a valid environment variable to flash, you can only click the exit button"));
ui->video_lvds->setText(tr("error:environment variable is empty, please write a valid environment variable to flash, you can only click the exit button"));
ui->video_mipi->setEnabled(false);
ui->video_edp->setEnabled(false);
ui->video_hdmi->setEnabled(false);
ui->video_lvds->setEnabled(false);
QPalette pal;
pal.setColor(QPalette::Button, Qt::red);
ui->video_mipi->setPalette(pal);
ui->video_edp->setPalette(pal);
ui->video_hdmi->setPalette(pal);
ui->video_lvds->setPalette(pal);
pal.setColor(QPalette::Button, Qt::blue);
ui->exitBtn->setPalette(pal);
}else{
if (strstr(p + strlen("video_mipi_edp"), "mipi") != NULL) {
ui->video_mipi->setText(tr("video-mipi:on"));
QPalette pal;
pal.setColor(QPalette::Button, Qt::green);
ui->video_mipi->setPalette(pal);
ui->video_edp->setText(tr("video-edp:off"));
pal.setColor(QPalette::Button, Qt::red);
ui->video_edp->setPalette(pal);
} else if (strstr(p + strlen("video_mipi_edp"), "edp") != NULL) {
ui->video_edp->setText(tr("video-edp:on"));
QPalette pal;
pal.setColor(QPalette::Button, Qt::green);
ui->video_edp->setPalette(pal);
ui->video_mipi->setText(tr("video-mipi:off"));
pal.setColor(QPalette::Button, Qt::red);
ui->video_mipi->setPalette(pal);
} else {
QPalette pal;
ui->video_edp->setText(tr("video-edp:off"));
pal.setColor(QPalette::Button, Qt::red);
ui->video_edp->setPalette(pal);
ui->video_mipi->setText(tr("video-mipi:off"));
pal.setColor(QPalette::Button, Qt::red);
ui->video_mipi->setPalette(pal);
}
qExec.start("/usr/sbin/fw_printenv video_hdmi");
qExec.waitForFinished();
result = qExec.readAllStandardOutput();
p = result.toLatin1().data();
if (strstr(p + strlen("video_hdmi"), "hdmi") != NULL) {
ui->video_hdmi->setText(tr("video-hdmi:on"));
QPalette pal;
pal.setColor(QPalette::Button, Qt::green);
ui->video_hdmi->setPalette(pal);
} else {
ui->video_hdmi->setText(tr("video-hdmi:off"));
QPalette pal;
pal.setColor(QPalette::Button, Qt::red);
ui->video_hdmi->setPalette(pal);
}
qExec.start("/usr/sbin/fw_printenv video_lvds_rgb");
qExec.waitForFinished();
result = qExec.readAllStandardOutput();
p = result.toLatin1().data();
if (strstr(p + strlen("video_lvds_rgb"), "lvds") != NULL) {
ui->video_lvds->setText(tr("video-lvds:on"));
QPalette pal;
pal.setColor(QPalette::Button, Qt::green);
ui->video_lvds->setPalette(pal);
} else {
ui->video_lvds->setText(tr("video-lvds:off"));
QPalette pal;
pal.setColor(QPalette::Button, Qt::red);
ui->video_lvds->setPalette(pal);
}
}
connect(ui->video_mipi, &QPushButton::clicked, this, &MainWindow::video_mipi_clicked);
connect(ui->video_hdmi, &QPushButton::clicked, this, &MainWindow::video_hdmi_clicked);
connect(ui->video_lvds, &QPushButton::clicked, this, &MainWindow::video_lvds_clicked);
connect(ui->video_edp, &QPushButton::clicked, this, &MainWindow::video_edp_clicked);
connect(ui->exitBtn, &QPushButton::clicked, this, [=](){
close();
});
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::video_mipi_clicked()
{
if (ui->video_mipi->text() == "video-mipi:on") {
ui->video_mipi->setText(tr("video-mipi:off"));
QPalette pal;
pal.setColor(QPalette::Button, Qt::red);
ui->video_mipi->setPalette(pal);
system("fw_setenv video_mipi_edp none");
} else {
ui->video_mipi->setText(tr("video-mipi:on"));
QPalette pal;
pal.setColor(QPalette::Button, Qt::green);
ui->video_mipi->setPalette(pal);
system("fw_setenv video_mipi_edp mipi");
ui->video_edp->setText(tr("video-edp:off"));
pal.setColor(QPalette::Button, Qt::red);
ui->video_edp->setPalette(pal);
}
}
void MainWindow::video_lvds_clicked()
{
if (ui->video_lvds->text() == "video-lvds:on") {
ui->video_lvds->setText(tr("video-lvds:off"));
QPalette pal;
pal.setColor(QPalette::Button, Qt::red);
ui->video_lvds->setPalette(pal);
system("fw_setenv video_lvds_rgb none");
} else {
ui->video_lvds->setText(tr("video-lvds:on"));
QPalette pal;
pal.setColor(QPalette::Button, Qt::green);
ui->video_lvds->setPalette(pal);
system("fw_setenv video_lvds_rgb lvds");
}
}
void MainWindow::video_edp_clicked()
{
if (ui->video_edp->text() == "video-edp:on") {
ui->video_edp->setText(tr("video-edp:off"));
QPalette pal;
pal.setColor(QPalette::Button, Qt::red);
ui->video_edp->setPalette(pal);
system("fw_setenv video_mipi_edp none");
} else {
ui->video_edp->setText(tr("video-edp:on"));
QPalette pal;
pal.setColor(QPalette::Button, Qt::green);
ui->video_edp->setPalette(pal);
system("fw_setenv video_mipi_edp edp");
ui->video_mipi->setText(tr("video-mipi:off"));
pal.setColor(QPalette::Button, Qt::red);
ui->video_mipi->setPalette(pal);
}
}
void MainWindow::video_hdmi_clicked()
{
if (ui->video_hdmi->text() == "video-hdmi:on") {
ui->video_hdmi->setText(tr("video-hdmi:off"));
QPalette pal;
pal.setColor(QPalette::Button, Qt::red);
ui->video_hdmi->setPalette(pal);
system("fw_setenv video_hdmi off");
} else {
ui->video_hdmi->setText(tr("video-hdmi:on"));
QPalette pal;
pal.setColor(QPalette::Button, Qt::green);
ui->video_hdmi->setPalette(pal);
system("fw_setenv video_hdmi hdmi");
}
}