Files
GUI/src/guimessagedialog.cpp
2021-11-02 10:31:38 +08:00

100 lines
2.4 KiB
C++

#include "guimessagedialog.h"
#include "ui_guimessagedialog.h"
#include "event/EventCenter.h"
GUIMessageDialog::GUIMessageDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::GUIMessageDialog)
{
ui->setupUi(this);
this->setWindowFlags (Qt :: FramelessWindowHint | Qt :: Dialog);
this->showFullScreen ();
ui->lbl_msg->setVisible(false);
ui->lbl_progressicon->setVisible(false);
ui->btn_main->setVisible(false);
ui->btn_main->setText("OK");
this->setWindowOpacity(0.6);
for (int i=1; i<=6;i++)
{
QString str(" ");
for(int j=0;j<i;j++)
{
str[j]='.';
}
frame.append(str);
}
for (int i=1; i<=6;i++)
{
QString str("......");
for(int j=0;j<i;j++)
{
str[j]=' ';
}
frame.append(str);
}
}
GUIMessageDialog::~GUIMessageDialog()
{
delete ui;
}
void GUIMessageDialog::timerEvent(QTimerEvent *event) {
if (frameIndex>11) frameIndex = frameIndex % 12;
ui->lbl_progressicon->setText(frame[frameIndex++]);
this->update();
}
void GUIMessageDialog::stopLoading() {
if (timerID!=-1){
killTimer(timerID);
timerID=-1;
}
disconnect(ui->btn_main,0,0,0);
ui->lbl_progressicon->setVisible(false);
}
void GUIMessageDialog::startLoading() {
ui->lbl_progressicon->setVisible(true);
disconnect(ui->btn_main,0,0,0);
connect(ui->btn_main,&QToolButton::clicked,[=](){
if (timerID != -1){
killTimer(timerID);
timerID = -1;
}
accept();
EventCenter::Default()->triggerEvent(GUIEvents::RequestStop, nullptr, nullptr);
});
timerID = startTimer(100);
ui->btn_main->setText("Stop");
ui->btn_main->setVisible(true);
}
void GUIMessageDialog::showMessage(QString msg) {
ui->lbl_msg->setVisible(true);
ui->lbl_msg->setText(msg);
}
void GUIMessageDialog::showExitButton() {
ui->btn_main->setText("OK");
ui->btn_main->setVisible(true);
disconnect(ui->btn_main,0,0,0);
connect(ui->btn_main,&QToolButton::clicked,[=](){
if (timerID != -1){
killTimer(timerID);
timerID = -1;
}
accept();
});
}
void GUIMessageDialog::hideMessage() {
ui->lbl_msg->setVisible(false);
ui->lbl_msg->setText("");
}
void GUIMessageDialog::hideExitButton() {
ui->btn_main->setVisible(false);
disconnect(ui->btn_main,0,0,0);
}