QuiltingHMI/sharedviews/debuginfodialog.cpp
2024-02-06 15:10:48 +08:00

247 lines
7.3 KiB
C++

#include "debuginfodialog.h"
#include "ui_debuginfodialog.h"
DebugInfoDialog::DebugInfoDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::DebugInfoDialog),
m_itemPerPage(25)
{
ui->setupUi(this);
setWindowFlags (Qt::Window | Qt::FramelessWindowHint);
setAttribute(Qt::WA_TranslucentBackground, true);//设置窗体背景透明
setWindowModality(Qt::ApplicationModal);
connect(g_pMachine, SIGNAL(siDebugInfo()), this, SLOT(slotDebugInfo()));
initDialog();
initControl();
}
DebugInfoDialog::~DebugInfoDialog()
{
delete ui;
}
void DebugInfoDialog::initDialog()
{
m_curPages = 1;//当前页数
m_pageNums = 1;//总页数
m_infoList.clear();
}
void DebugInfoDialog::initControl()
{
m_DebugInfoBtnList.append(ui->button1);
m_DebugInfoBtnList.append(ui->button2);
m_DebugInfoBtnList.append(ui->button3);
m_DebugInfoBtnList.append(ui->button4);
m_DebugInfoBtnList.append(ui->button5);
m_DebugInfoBtnList.append(ui->button6);
m_DebugInfoBtnList.append(ui->button7);
m_DebugInfoBtnList.append(ui->button8);
m_DebugInfoBtnList.append(ui->button9);
m_DebugInfoBtnList.append(ui->button10);
m_DebugInfoBtnList.append(ui->button11);
m_DebugInfoBtnList.append(ui->button12);
m_DebugInfoBtnList.append(ui->button13);
m_DebugInfoBtnList.append(ui->button14);
m_DebugInfoBtnList.append(ui->button15);
m_DebugInfoBtnList.append(ui->button16);
m_DebugInfoBtnList.append(ui->button17);
m_DebugInfoBtnList.append(ui->button18);
m_DebugInfoBtnList.append(ui->button19);
m_DebugInfoBtnList.append(ui->button20);
m_DebugInfoBtnList.append(ui->button21);
m_DebugInfoBtnList.append(ui->button22);
m_DebugInfoBtnList.append(ui->button23);
m_DebugInfoBtnList.append(ui->button24);
m_DebugInfoBtnList.append(ui->button25);
//根据不同分辨率设置控件的位置和尺寸
switch (g_emResolut)
{
case resolution1910:
initResolution1910();
break;
case resolution1006:
initResolution1006();
break;
default:
this->resize(1920,1080);
break;
}
initControlStyle();//初始化窗体控件样式
//refreshUi();
}
void DebugInfoDialog::initResolution1910()
{
//上状态栏
this->resize(1322,935);
this->move(192,65);
ui->frameBack->setGeometry(0,0,1322,935);
ui->labelMainTitle->setGeometry(12,8,300,40);
for(int i = 0; i < m_itemPerPage; i++)
{
m_DebugInfoBtnList[i]->setGeometry(30,52 + i * 34,800,30);
}
ui->labelPage->setGeometry(12,890,400,40);
ui->buttonPgUp->setGeometry(1040,40,118,40);
ui->buttonPgDn->setGeometry(1178,40,118,40);
ui->buttonCancel->setGeometry(1040,100,118,40);
}
void DebugInfoDialog::initResolution1006()
{
m_itemPerPage = m_itemPerPage -8;
this->resize(707,513);
this->move(101,36);
ui->frameBack->setGeometry(0,0,710,513);
ui->labelMainTitle->setGeometry(10,6,300,28);
for(int i = 0; i < m_itemPerPage; i++)
{
m_DebugInfoBtnList[i]->setGeometry(10,30 + i * 27,500,24);
}
ui->labelPage->setGeometry(10,485,150,30);
ui->buttonPgUp->setGeometry(520,40,82,30);
ui->buttonPgDn->setGeometry(610,40,82,30);
ui->buttonCancel->setGeometry(520,80,82,30);
}
//初始化窗体控件样式
void DebugInfoDialog::initControlStyle()
{
SetControlStyle setControlStyle;
setControlStyle.setUiName(this->objectName());
//背景图
//QString style1 = "background-color: rgb(62, 62, 62);outline:none;border:0px;border-radius:10px;";
QString style1 = "background-color: rgb(246, 242, 239);outline:none;border:0px;border-radius:10px;";
ui->frameBack->setStyleSheet(style1);
ui->labelMainTitle->setFont(fontNormal_3);
ui->labelMainTitle->setStyleSheet(LABELGREYSTYLE);
QString style2 = "border:0px;text-align:left;background-color:rgba(255, 255, 255, 0);color: rgb(78, 78, 78);";//0, 183, 13
for(int i = 0; i < m_DebugInfoBtnList.size(); i++)
{
m_DebugInfoBtnList[i]->setStyleSheet(style2);//文本左对齐
m_DebugInfoBtnList[i]->setFont(fontNormal_4);
}
ui->labelPage->setFont(fontNormal_4);
ui->labelPage->setStyleSheet(LABELGREYSTYLE);
ui->buttonPgUp->setOrangeGradientBottomStyle(BORDER_RADIUS2);
ui->buttonPgUp->setTopImage(setControlStyle.getSharedTopStyleSheet(ui->buttonPgUp->objectName()),12);
ui->buttonPgDn->setOrangeGradientBottomStyle(BORDER_RADIUS2);
ui->buttonPgDn->setTopImage(setControlStyle.getSharedTopStyleSheet(ui->buttonPgDn->objectName()),12);
ui->buttonCancel->setOrangeGradientBottomStyle(BORDER_RADIUS2);
ui->buttonCancel->setTopImage(setControlStyle.getSharedTopStyleSheet(ui->buttonCancel->objectName()),12);
}
void DebugInfoDialog::addListInfo()
{
m_infoList = g_pSettings->readToCsv(TYPE_DEBUGINFO);//读取 QStringList
refreshUi();
}
void DebugInfoDialog::refreshUi()
{
int itemNum;
if (m_infoList.size() <= 0)
{
itemNum = 0;
for (int i = 0; i < m_itemPerPage; i++)
{
m_DebugInfoBtnList.at(i)->hide();
}
ui->labelPage->setText(tr("pageNum: 0/0"));//页数: 0/0
ui->buttonPgUp->setEnabled(false);
ui->buttonPgDn->setEnabled(false);
//ui->buttonOk->setEnabled(false);
return;
}
else
{
itemNum = m_infoList.size();
}
m_pageNums = (itemNum + m_itemPerPage - 1)/m_itemPerPage;// 计算页数
if (m_curPages > m_pageNums)// 当前页
{
m_curPages = m_pageNums;
}
if (m_curPages <= 1 && itemNum != 0)
{
m_curPages = 1;
}
int itemidx = (m_curPages - 1) * m_itemPerPage;
for (int i = 0; i < m_itemPerPage; i++)
{
if (itemidx < itemNum)
{
//设置图标和文件夹名称
m_DebugInfoBtnList[i]->setText(m_infoList.at(itemidx));
m_DebugInfoBtnList.at(i)->show();
itemidx++;
}
else
{
m_DebugInfoBtnList.at(i)->hide();
}
}
// 翻页按钮
if (m_curPages <= 1)
{
ui->buttonPgUp->setEnabled(false);
}
else
{
ui->buttonPgUp->setEnabled(true);
}
if (m_curPages >= m_pageNums)
{
ui->buttonPgDn->setEnabled(false);
}
else
{
ui->buttonPgDn->setEnabled(true);
}
// 页信息
if(m_pageNums == 0)
{
m_curPages = 0;
}
QString str = tr("pageNum: ") + QString("%1/%2").arg(m_curPages).arg(m_pageNums);//页数:
ui->labelPage->setText(str);
}
void DebugInfoDialog::slotDebugInfo()
{
DebugInfo info;//调试信息
char mDebugInfoStr[1024+1];
info = g_pMachine->getDebugInfo();
memcpy(mDebugInfoStr, info.debugInfoStr, 1024);
mDebugInfoStr[1024] = 0;
QString strDebugInfoStr;
strDebugInfoStr.sprintf("%s", mDebugInfoStr);
QString strCurTime = QDateTime::currentDateTime().toString("yyyy/MM/dd/hh:mm:ss");//时间
QString strMessage;
strMessage = QString("%1//%2").arg(strCurTime).arg(strDebugInfoStr);//时间,内容
m_infoList.insert(0,strMessage);
//m_infoList = g_pSettings->readToCsv(TYPE_DEBUGINFO);//读取 QStringList
refreshUi();
}
void DebugInfoDialog::on_buttonCancel_clicked()
{
done(0);
}
void DebugInfoDialog::on_buttonPgUp_clicked()
{
m_curPages--;
refreshUi();
}
void DebugInfoDialog::on_buttonPgDn_clicked()
{
m_curPages++;
refreshUi();
}