PunchHMI/sharedviews/wordsinputdialog.cpp
2024-02-06 14:58:57 +08:00

400 lines
12 KiB
C++

#include "wordsinputdialog.h"
#include "ui_wordsinputdialog.h"
WordsInputDialog::WordsInputDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::WordsInputDialog)
{
ui->setupUi(this);
setWindowFlags (Qt::Window | Qt::FramelessWindowHint);
setWindowModality(Qt::ApplicationModal);
setAttribute(Qt::WA_TranslucentBackground, true);//设置窗体背景透明
m_buttonCharacterList.clear();
m_buttonCharacterList.append(ui->buttonChara1);
m_buttonCharacterList.append(ui->buttonChara2);
m_buttonCharacterList.append(ui->buttonChara3);
m_buttonCharacterList.append(ui->buttonChara4);
m_buttonCharacterList.append(ui->buttonChara5);
m_buttonCharacterList.append(ui->buttonChara6);
m_buttonCharacterList.append(ui->buttonChara7);
m_buttonCharacterList.append(ui->buttonChara8);
m_buttonCharacterList.append(ui->buttonChara9);
m_buttonCharacterList.append(ui->buttonChara10);
for(int var = 0; var < m_buttonCharacterList.size(); var++)
{
connect(m_buttonCharacterList.at(var),
SIGNAL(clicked()),
this,
SLOT(inputBtnClick())
);
}
m_buttonWordList.clear();
m_buttonWordList.append(ui->buttonLatterQ);
m_buttonWordList.append(ui->buttonLatterW);
m_buttonWordList.append(ui->buttonLatterE);
m_buttonWordList.append(ui->buttonLatterR);
m_buttonWordList.append(ui->buttonLatterT);
m_buttonWordList.append(ui->buttonLatterY);
m_buttonWordList.append(ui->buttonLatterU);
m_buttonWordList.append(ui->buttonLatterI);
m_buttonWordList.append(ui->buttonLatterO);
m_buttonWordList.append(ui->buttonLatterP);
m_buttonWordList.append(ui->buttonLatterA);
m_buttonWordList.append(ui->buttonLatterS);
m_buttonWordList.append(ui->buttonLatterD);
m_buttonWordList.append(ui->buttonLatterF);
m_buttonWordList.append(ui->buttonLatterG);
m_buttonWordList.append(ui->buttonLatterH);
m_buttonWordList.append(ui->buttonLatterJ);
m_buttonWordList.append(ui->buttonLatterK);
m_buttonWordList.append(ui->buttonLatterL);
m_buttonWordList.append(ui->buttonLatterZ);
m_buttonWordList.append(ui->buttonLatterX);
m_buttonWordList.append(ui->buttonLatterC);
m_buttonWordList.append(ui->buttonLatterV);
m_buttonWordList.append(ui->buttonLatterB);
m_buttonWordList.append(ui->buttonLatterN);
m_buttonWordList.append(ui->buttonLatterM);
for(int var = 0; var < m_buttonWordList.size(); var++)
{
connect(m_buttonWordList.at(var),
SIGNAL(clicked()),
this,
SLOT(inputBtnClick())
);
}
m_buttonNumberList.clear();
m_buttonNumberList.append(ui->buttonNum1);
m_buttonNumberList.append(ui->buttonNum2);
m_buttonNumberList.append(ui->buttonNum3);
m_buttonNumberList.append(ui->buttonNum4);
m_buttonNumberList.append(ui->buttonNum5);
m_buttonNumberList.append(ui->buttonNum6);
m_buttonNumberList.append(ui->buttonNum7);
m_buttonNumberList.append(ui->buttonNum8);
m_buttonNumberList.append(ui->buttonNum9);
m_buttonNumberList.append(ui->buttonNum0);
for(int var = 0; var < m_buttonNumberList.size(); var++)
{
connect(m_buttonNumberList.at(var),
SIGNAL(clicked()),
this,
SLOT(inputBtnClick())
);
}
m_shift = 1;
m_inputStr.clear();
ui->labelNameNewWords->clear();
ui->labelNameOldWords->clear();
ui->buttonOk->setEnabled(false);
initControl();
}
WordsInputDialog::~WordsInputDialog()
{
delete ui;
}
void WordsInputDialog::setInputStr(QString str)
{
m_inputStr = m_inputStr + str;
ui->labelNameNewWords->setText(m_inputStr);
if(m_inputStr.length() > 0)
{
ui->buttonOk->setEnabled(true);
ui->buttonOk->resize(174,70);
}
}
//初始化窗体控件,包括位置、尺寸、样式
void WordsInputDialog::initControl()
{
//根据不同分辨率设置控件的位置和尺寸
switch (g_emResolut)
{
case resolution1910:
initResolution1910();
break;
case resolution1006:
initResolution1006();
default:
this->resize(1920,1080);
break;
}
initControlStyle();//初始化窗体控件样式
}
//初始化窗体控件为1920x1080分辨率
void WordsInputDialog::initResolution1910()
{
this->resize(1454,840);
this->move((1920-this->width())/2,(1080-this->height())/2);
ui->frameBack->setGeometry(0,0,1454,840);
ui->labelTitle->setGeometry(68,46,1000,56);
ui->labelName->setGeometry(82,145,340,56);
ui->labelNameNewWords->setGeometry(452,145,554,56);
ui->labelNameOldWords->setGeometry(1040,151,340,56);
for(int i = 0; i < m_buttonCharacterList.size(); i++)
{
m_buttonCharacterList[i]->setGeometry(78+i*130,254,122,70);
}
for(int i = 0; i < m_buttonNumberList.size(); i++)
{
m_buttonNumberList[i]->setGeometry(78+i*130,334,122,70);
}
int x = 0;
int y = 0;
int idx = 0;
for(int i = 0; i < m_buttonWordList.size(); i++)
{
if(m_buttonWordList[i]->text().toUpper() == "Q")
{
x = 78;
y = 414;
idx = i;
}
if(m_buttonWordList[i]->text().toUpper() == "A")
{
x = 140;
y = 494;
idx = 0;
}
if(m_buttonWordList[i]->text().toUpper() == "Z")
{
x = 270;
y = 574;
idx = 0;
}
m_buttonWordList[i]->setGeometry(x+idx*130,y,122,70);
idx++;
}
ui->buttonShift->setGeometry(80,574,182,70);
ui->buttonBack->setGeometry(1182,574,192,70);
ui->frameTwo->setGeometry(0,680,1462,894);
ui->buttonOk->setGeometry(1014,0,174,70);
ui->buttonCancel->setGeometry(1204,0,174,70);
}
//初始化窗体控件为1024x600分辨率
void WordsInputDialog::initResolution1006()
{
this->resize(820,501);
this->move((1024-this->width())/2,(600-this->height())/2);
ui->frameBack->setGeometry(0,0,820,501);
ui->labelTitle->setGeometry(40,21,1024,48);
ui->labelName->setGeometry(50,82,181,44);
ui->labelNameNewWords->setGeometry(258,82,554,44);
ui->labelNameOldWords->setGeometry(560,82,200,44);
for(int i = 0; i < m_buttonCharacterList.size(); i++)
{
m_buttonCharacterList[i]->setGeometry(50+i*73,140,62,40);
}
for(int i = 0; i < m_buttonNumberList.size(); i++)
{
m_buttonNumberList[i]->setGeometry(50+i*73,190,62,40);
}
int x = 0;
int y = 0;
int idx = 0;
for(int i = 0; i < m_buttonWordList.size(); i++)
{
if(m_buttonWordList[i]->text().toUpper() == "Q")
{
x = 50;
y = 240;
idx = i;
}
if(m_buttonWordList[i]->text().toUpper() == "A")
{
x =86;
y = 290;
idx = 0;
}
if(m_buttonWordList[i]->text().toUpper() == "Z")
{
x = 159;
y = 340;
idx = 0;
}
m_buttonWordList[i]->setGeometry(x+idx*73,y,62,40);
idx++;
}
ui->buttonShift->setGeometry(50,340,98,40);
ui->buttonBack->setGeometry(671,340,98,40);
ui->frameTwo->setGeometry(564,400,321,51);
ui->buttonOk->setGeometry(0,0,96,40);
ui->buttonCancel->setGeometry(108,0,96,40);
}
//初始化窗体控件样式
void WordsInputDialog::initControlStyle()
{
SetControlStyle setControlStyle;
setControlStyle.setUiName(this->objectName());
//白蓝色渐变、灰蓝色渐变
QString style = "QPushButton{background-color: qlineargradient(spread:pad, x1:0.5 y1:0, x2:0.5, y2:1, stop:0 rgb(255, 255, 255), stop:1 rgb(215, 243, 254));border-radius:5px;}";
style += "QPushButton:pressed{background-color: qlineargradient(spread:pad, x1:0.5 y1:0, x2:0.5, y2:1, stop:0 rgb(217, 222, 224), stop:1 rgb(191,213,223));}";
style += "QPushButton:disabled{background-color: qlineargradient(spread:pad, x1:0.5 y1:0, x2:0.5, y2:1, stop:0 rgb(230, 230, 230), stop:1 rgb(182,182,182));}";
for(int i = 0; i < m_buttonCharacterList.size(); i++)
{
m_buttonCharacterList[i]->setStyleSheet(style);
m_buttonCharacterList[i]->setFont(fontNormal_1);
}
for(int i = 0; i < m_buttonWordList.size(); i++)
{
m_buttonWordList[i]->setStyleSheet(style);
m_buttonWordList[i]->setFont(fontNormal_1);
}
for(int i = 0; i < m_buttonNumberList.size(); i++)
{
m_buttonNumberList[i]->setStyleSheet(style);
m_buttonNumberList[i]->setFont(fontNormal_1);
}
ui->frameBack->setStyleSheet(TRANSPARENTSTYLE);
ui->frameBack->setStyleSheet(setControlStyle.getStyleSheet(this->objectName()));
ui->labelName->setStyleSheet(LABELNAVYBLUESTYLE);
ui->labelName->setFont(fontNormal_1);
// ui->labelName->setAlignment(Qt::AlignRight);
// ui->labelName->setAlignment(Qt::AlignVCenter);
ui->labelTitle->setStyleSheet(LABELWHITESTYLE);
ui->labelTitle->setFont(fontNormal_1);
ui->labelTitle->setAlignment(Qt::AlignLeft);
ui->labelTitle->setAlignment(Qt::AlignVCenter);
ui->labelNameNewWords->setStyleSheet(LABELNAVYBLUESTYLE);
ui->labelNameNewWords->setFont(fontNormal_1);
ui->labelNameNewWords->setAlignment(Qt::AlignLeft);
ui->labelNameNewWords->setAlignment(Qt::AlignVCenter);
ui->labelNameOldWords->setStyleSheet(LABELNAVYBLUESTYLE);
ui->labelNameOldWords->setFont(fontNormal_1);
ui->labelNameOldWords->setAlignment(Qt::AlignLeft);
ui->labelNameOldWords->setAlignment(Qt::AlignVCenter);
ui->buttonShift->setStyleSheet(style);
ui->buttonShift->setFont(fontNormal_1);
ui->buttonBack->setStyleSheet(style);
ui->buttonBack->setFont(fontNormal_1);
ui->frameTwo->setStyleSheet(TRANSPARENTSTYLE);
ui->buttonOk->setWhiteBlueBottomStyle();
ui->buttonOk->setTopImage(setControlStyle.getSharedTopStyleSheet(ui->buttonOk->objectName()+"_1"),12);
ui->buttonCancel->setWhiteBlueBottomStyle();
ui->buttonCancel->setTopImage(setControlStyle.getSharedTopStyleSheet(ui->buttonCancel->objectName()+"_1"),12);
}
void WordsInputDialog::setTitleStr(QString str)
{
ui->labelTitle->setText(str);
}
void WordsInputDialog::setOldWordsStr(QString str)
{
ui->labelNameOldWords->setText(str);
}
void WordsInputDialog::clean()
{
m_inputStr.clear();
ui->labelNameNewWords->clear();
ui->buttonOk->setEnabled(false);
}
void WordsInputDialog::wifiClean()
{
m_inputStr.clear();
ui->labelNameNewWords->clear();
ui->buttonOk->setEnabled(true);
}
QString WordsInputDialog::getInputStr()
{
return m_inputStr;
}
void WordsInputDialog::inputBtnClick()
{
QPushButton *button = (QPushButton*) this->sender() ;
if(button == NULL)
{
return;
}
QString str = button->text();
setInputStr(str);
}
void WordsInputDialog::on_buttonShift_clicked()
{
m_shift = -1 * m_shift;
for(int i = 0; i < m_buttonWordList.size(); i++)
{
if(m_shift == -1)
{
QString lostr=m_buttonWordList[i]->text().toLower();
m_buttonWordList[i]->setText(lostr);
}
else if(m_shift == 1)
{
QString upstr=m_buttonWordList[i]->text().toUpper();
m_buttonWordList[i]->setText(upstr);
}
}
}
void WordsInputDialog::on_buttonBack_clicked()
{
if(m_inputStr.length() <= 0)
{
return;
}
m_inputStr = m_inputStr.remove(m_inputStr.length()-1,m_inputStr.length()); // 删除最后一位字符
ui->labelNameNewWords->setText(m_inputStr);
if(m_inputStr.length() <= 0)
{
ui->buttonOk->setEnabled(false);
ui->buttonOk->resize(174,70);
}
}
void WordsInputDialog::on_buttonOk_clicked()
{
done(1);
}
void WordsInputDialog::on_buttonCancel_clicked()
{
clean();
done(0);
}