#include <QDebug>
|
#include "mymessagebox.h"
|
#include "ui_mymessagebox.h"
|
#include "Driver/buzzerdrv.h"
|
|
MessageBox::MessageBox(QWidget *parent, const QString &text, myButtons buttons, Work_Thread *thread) :
|
QDialog(parent),
|
ui(new Ui::MessageBox)
|
{
|
ui->setupUi(this);
|
this->setWindowFlags(Qt::Dialog|Qt::FramelessWindowHint);
|
initpage();
|
|
mMoveing = false;
|
|
workThread = thread;
|
t_timer = new QTimer(this);
|
connect(t_timer,SIGNAL(timeout()),this,SLOT(checkAutoClose()));
|
t_timer->start(500);
|
|
setButtons(buttons);
|
setLabelWidth(ui->label_Text,text);
|
|
connect(ui->toolButton_close, SIGNAL(pressed()), this, SLOT(btn_beep()));
|
connect(ui->toolButton_yes, SIGNAL(pressed()), this, SLOT(btn_beep()));
|
connect(ui->toolButton_ok, SIGNAL(pressed()), this, SLOT(btn_beep()));
|
connect(ui->toolButton_no, SIGNAL(pressed()), this, SLOT(btn_beep()));
|
|
connect(ui->toolButton_close, SIGNAL(released()), this, SLOT(onButtonReleased()));
|
connect(ui->toolButton_yes, SIGNAL(released()), this, SLOT(onButtonReleased()));
|
connect(ui->toolButton_ok, SIGNAL(released()), this, SLOT(onButtonReleased()));
|
connect(ui->toolButton_no, SIGNAL(released()), this, SLOT(onButtonReleased()));
|
|
}
|
|
MessageBox::~MessageBox()
|
{
|
delete t_timer;
|
delete ui;
|
}
|
|
void MessageBox::checkAutoClose()
|
{
|
if(workThread->remoteState.to_workpage == 1){
|
//close();
|
reject();
|
}
|
}
|
|
void MessageBox::btn_beep(void)
|
{
|
BuzzerDrv BD;
|
BD.BuzzerBeep(50);
|
}
|
void MessageBox::setButtons(myButtons buttons)
|
{
|
ui->toolButton_yes->setVisible(false);
|
ui->toolButton_ok->setVisible(false);
|
ui->toolButton_no->setVisible(false);
|
if(buttons.testFlag(Yes) && buttons.testFlag(No))
|
{
|
ui->toolButton_yes->setVisible(true);
|
ui->toolButton_yes->setText(tr("确定"));//(tr("Yes"));
|
ui->toolButton_no->setVisible(true);
|
ui->toolButton_no->setText(tr("取消"));//(tr("No"));
|
}
|
if(buttons.testFlag(Ok))
|
{
|
ui->toolButton_ok->setVisible(true);
|
ui->toolButton_ok->setText(tr("确定"));//(tr("OK"));
|
}
|
}
|
void MessageBox::setLabelWidth(QLabel *Label,const QString &text)
|
{
|
#define MAX_Width 750
|
|
QFontMetrics fm(Label->font());
|
int textWidth = fm.width(text);
|
QString str,testtext;
|
|
str.clear();
|
testtext.clear();
|
|
if(textWidth > MAX_Width)
|
{
|
int width1 = textWidth%MAX_Width;
|
if(width1 < 50)
|
width1 = MAX_Width-50;
|
else
|
width1 = MAX_Width;
|
|
for(int i=0;i<text.count();i++)
|
{
|
str.append(text.at(i));
|
if(fm.width(str) > width1)
|
{
|
if((text.at(i).isLower() || text.at(i).isUpper())
|
&&(text.at(i+1).isLower() || text.at(i+1).isUpper()))
|
{
|
str.append("-\n");
|
}
|
else
|
{
|
str.append("\n");
|
}
|
testtext += str;
|
str.clear();
|
}
|
}
|
testtext += str;
|
}
|
else
|
{
|
testtext = text;
|
}
|
Label->setText(testtext);
|
}
|
//*****************************************************************************
|
void MessageBox::onButtonReleased(void)
|
{
|
int button = 0;
|
QToolButton *tb = dynamic_cast<QToolButton*>(sender());
|
if(ui->toolButton_yes == tb)
|
button = Yes;
|
else if(ui->toolButton_ok == tb)
|
button = Ok;
|
else if(ui->toolButton_no == tb)
|
button = No;
|
else //if(ui->toolButton_close == tb)
|
button = NoButton;
|
|
done(button);
|
}
|
//*****************************************************************************
|
void MessageBox::mousePressEvent(QMouseEvent *event)
|
{
|
mMoveing = true;
|
mMovePosition = event->globalPos() - pos();
|
return QDialog::mousePressEvent(event);
|
}
|
|
void MessageBox::mouseMoveEvent(QMouseEvent *event)
|
{
|
QPoint temp = event->globalPos()-mMovePosition;
|
|
if(temp.x()>800-this->width())
|
temp.setX(800-this->width());
|
else if(temp.x()<0)
|
temp.setX(0);
|
|
if(temp.y()>480-this->height())
|
temp.setY(480-this->height());
|
else if(temp.y()<0)
|
temp.setY(0);
|
|
if (mMoveing && (event->buttons() && Qt::LeftButton)
|
&& temp.manhattanLength() > QApplication::startDragDistance())
|
{
|
move(temp);
|
mMovePosition = event->globalPos() - pos();
|
}
|
|
return QDialog::mouseMoveEvent(event);
|
}
|
void MessageBox::mouseReleaseEvent(QMouseEvent *event)
|
{
|
mMoveing = false;
|
return QDialog::mouseReleaseEvent(event);
|
}
|
|
void MessageBox::settext(const QString text)
|
{
|
setLabelWidth(ui->label_Text,text);
|
}
|
|
void MessageBox::set_yes_btn_text(bool en, QString str){
|
ui->toolButton_yes->setEnabled(en);
|
ui->toolButton_yes->setText(str);
|
}
|
|
void MessageBox::initpage(){
|
QPixmap TempPix=style()->standardPixmap(QStyle::SP_TitleBarCloseButton);
|
ui->toolButton_close->setIcon(TempPix);
|
ui->toolButton_close->setStyleSheet("background-color: rgb(97, 118, 184);");
|
}
|