diff --git a/src/event/EventCenter.h b/src/event/EventCenter.h index 555462f..c0e1a5d 100644 --- a/src/event/EventCenter.h +++ b/src/event/EventCenter.h @@ -25,6 +25,7 @@ ADD_EVENT_VALUE(InvokeOperationProgress)\ ADD_EVENT_VALUE(InvokeOperationEnd)\ ADD_EVENT_VALUE(PromptDialogOpen)\ ADD_EVENT_VALUE(GlobalBannerMessage)\ +ADD_EVENT_VALUE(WarnStateFlagChange)\ ADD_EVENT_VALUE(GUIErrorRaise) enum GUIEvents{ diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index bd39ef7..a0847d1 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -146,24 +146,50 @@ MainWindow::MainWindow(QWidget* parent) : ui->centralWidget->setLayout(layout); this->setWindowFlags(Qt::Window); connect(EventCenter::Default(), &EventCenter::GUIErrorRaise, [=](QObject*, QObject* msg) { - - if (!msgDialog){ + QString str; + if (msg) { + str = *(QString *) msg; + } else { + str = "Something went error!"; + } + if (str.isEmpty()) return; + //新模式,分级 + if (str[1] == ' ') { + char c = str[0].toLower().toLatin1(); + switch (c) { + //WARN 级别 + case 'w': { + char buff[4] = {0, 0, 0, 0}; + buff[0] = str[2].toLatin1(); + buff[1] = str[3].toLatin1(); + buff[2] = str[4].toLatin1(); + buff[3] = str[5].toLatin1(); + QByteArray bytes(buff); + EventCenter::Default()->triggerEvent(GUIEvents::WarnStateFlagChange, nullptr,(QObject*)(&bytes)); + return; + } + //ERROR 级别 + case 'e': + default: + break; + } + } + //默认旧模式 + if (!msgDialog) { msgDialog = new GUIMessageDialog; msgDialog->setStyleSheet(style); } - if (msg) - { - QString* str = (QString*)msg; - msgDialog->showMessage(*str); - } - else { - msgDialog->showMessage("Something went error!"); - } - msgDialog->stopLoading(); + if (msg) { + QString *str = (QString *) msg; + msgDialog->showMessage(*str); + } else { + msgDialog->showMessage("Something went error!"); + } + msgDialog->stopLoading(); msgDialog->showExitButton(); // msgDialog->showFullScreen(); if (msgDialog->isHidden())msgDialog->show(); - }); + }); connect(EventCenter::Default(), &EventCenter::InvokeOperationStart, [=](QObject*, QObject* msg) { if (msgDialog){ msgDialog->hide();