Refactor MainWindow.
This commit is contained in:
@@ -1,14 +1,13 @@
|
||||
#include "MainWindow.h"
|
||||
#include "ui_MainWindow.h"
|
||||
|
||||
#include <qtabwidget.h>
|
||||
#include <fstream>
|
||||
#include <QHBoxLayout>
|
||||
#include <QScrollBar>
|
||||
#include <QDateTime>
|
||||
#include <QGestureEvent>
|
||||
#include <QDockWidget>
|
||||
#include <fstream>
|
||||
|
||||
#include "ui_MainWindow.h"
|
||||
#include "event/EventCenter.h"
|
||||
#include "forms/TabFormWidget.h"
|
||||
#include "forms/select/SelectFormWidget.h"
|
||||
@@ -42,9 +41,6 @@ MainWindow::MainWindow(QWidget* aParent)
|
||||
initializeTabWidget();
|
||||
initializeLayout();
|
||||
|
||||
connect(EventCenter::Default(), &EventCenter::PatientSelected, [=](QObject* sender, QObject* data) {
|
||||
mTabWidget->setCurrentIndex(1);
|
||||
});
|
||||
|
||||
connect(EventCenter::Default(), &EventCenter::DeviceErrorRaise, [=](QObject* parent, QObject* msg) {
|
||||
if (!this->isVisible()) return;
|
||||
@@ -148,29 +144,11 @@ MainWindow::MainWindow(QWidget* aParent)
|
||||
AppGlobalValues::setInProcessing(false);
|
||||
}
|
||||
});
|
||||
connect(EventCenter::Default(), &EventCenter::RequestLogin, [=](QObject*, QObject* msg) {
|
||||
this->requestLogin();
|
||||
});
|
||||
connect(EventCenter::Default(), &EventCenter::LoginRoleChanged, [=](QObject*, QObject*) {
|
||||
if (User::Current()->isAdmin())
|
||||
{
|
||||
if (mAdminTabIndex == -1)
|
||||
{
|
||||
AdminSettingForm* form = new AdminSettingForm(this);
|
||||
mAdminTabIndex = mTabWidget->addTab(form, tr("Settings"));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (mAdminTabIndex != -1)
|
||||
{
|
||||
mTabWidget->removeTab(mAdminTabIndex);
|
||||
mAdminTabIndex = -1;
|
||||
}
|
||||
}
|
||||
qApp->processEvents();
|
||||
});
|
||||
connect(EventCenter::Default(), &EventCenter::PatientSelected, this,&MainWindow::switchToScanTab);
|
||||
connect(EventCenter::Default(), &EventCenter::RequestLogin, this,&MainWindow::requestLogin);
|
||||
connect(EventCenter::Default(), &EventCenter::LoginRoleChanged, this,&MainWindow::resetRoleLayout);
|
||||
connect(DeviceManager::Default(), &DeviceManager::raiseGlobalError, this, &MainWindow::triggerError);
|
||||
connect(EventCenter::Default(), &EventCenter::ReloadLanguage, this, &MainWindow::reloadLanguage);
|
||||
GUIErrorHandle::Default()->init();
|
||||
mThread = QThread::create([]() {
|
||||
QThread::sleep(10);
|
||||
@@ -179,7 +157,6 @@ MainWindow::MainWindow(QWidget* aParent)
|
||||
{
|
||||
QThread::sleep(10);
|
||||
f = f << (i * 4);
|
||||
printf("invoke %d\r\n", f);
|
||||
char* v = (char*)&f;
|
||||
QString msg;
|
||||
msg.append("w ");
|
||||
@@ -189,15 +166,61 @@ MainWindow::MainWindow(QWidget* aParent)
|
||||
msg.append(v[3]);
|
||||
EventCenter::Default()->triggerEvent(GUIErrorRaise, nullptr, (QObject*)&msg);
|
||||
}
|
||||
});
|
||||
});
|
||||
mThread->start();
|
||||
centerWidgetHide();
|
||||
connect(EventCenter::Default(), &EventCenter::ReloadLanguage, [=]() {
|
||||
mTabWidget->setTabText(0, tr("Select"));
|
||||
mTabWidget->setTabText(1, tr("Scan"));
|
||||
mTabWidget->setTabText(2, tr("Verify"));
|
||||
mTabWidget->setTabText(3, tr("Settings"));
|
||||
});
|
||||
}
|
||||
|
||||
void MainWindow::resetRoleLayout() {
|
||||
if (User::Current()->isAdmin())
|
||||
{
|
||||
if (mAdminTabIndex == -1)
|
||||
{
|
||||
AdminSettingForm* form = new AdminSettingForm(this);
|
||||
mAdminTabIndex = mTabWidget->addTab(form, tr("Settings"));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (mAdminTabIndex != -1)
|
||||
{
|
||||
mTabWidget->removeTab(mAdminTabIndex);
|
||||
mAdminTabIndex = -1;
|
||||
}
|
||||
}
|
||||
qApp->processEvents();
|
||||
}
|
||||
|
||||
MainWindow::~MainWindow()
|
||||
{
|
||||
mThread->terminate();
|
||||
mThread->deleteLater();
|
||||
delete mUI;
|
||||
}
|
||||
|
||||
//------Layout-----------------------------------------------------------------
|
||||
|
||||
void MainWindow::loadStyleSheet(const QString& aSheetName)
|
||||
{
|
||||
QFile file(":/stylesheet/" + aSheetName + ".css");
|
||||
file.open(QFile::ReadOnly);
|
||||
if (file.isOpen())
|
||||
{
|
||||
QString styleSheet = this->styleSheet();
|
||||
styleSheet += QLatin1String(file.readAll());
|
||||
this->setStyleSheet(styleSheet);
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::initializeLayout()
|
||||
{
|
||||
QVBoxLayout* layout = new QVBoxLayout(mUI->mCentralWidget);
|
||||
layout->setMargin(0);
|
||||
layout->setSpacing(0);
|
||||
QWidget* topBarWidget = new TopBarWidget(this);
|
||||
topBarWidget->setObjectName("topbarWidget");
|
||||
layout->addWidget(topBarWidget);
|
||||
layout->addWidget(mTabWidget);
|
||||
}
|
||||
|
||||
void MainWindow::initializeTabWidget()
|
||||
@@ -214,70 +237,14 @@ void MainWindow::initializeTabWidget()
|
||||
mTabWidget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
|
||||
}
|
||||
|
||||
void MainWindow::initializeLayout()
|
||||
{
|
||||
QVBoxLayout* layout = new QVBoxLayout(mUI->mCentralWidget);
|
||||
layout->setMargin(0);
|
||||
layout->setSpacing(0);
|
||||
QWidget* topBarWidget = new TopBarWidget(this);
|
||||
topBarWidget->setObjectName("topbarWidget");
|
||||
layout->addWidget(topBarWidget);
|
||||
layout->addWidget(mTabWidget);
|
||||
void MainWindow::reloadLanguage() {
|
||||
mTabWidget->setTabText(0, tr("Select"));
|
||||
mTabWidget->setTabText(1, tr("Scan"));
|
||||
mTabWidget->setTabText(2, tr("Verify"));
|
||||
mTabWidget->setTabText(3, tr("Settings"));
|
||||
}
|
||||
|
||||
void MainWindow::QMessageOutput(QtMsgType aType, const QMessageLogContext& aContext, const QString& msg)
|
||||
{
|
||||
|
||||
std::cout << msg.toStdString().c_str() << std::endl;
|
||||
|
||||
//QByteArray localMsg = msg.toLocal8Bit();
|
||||
//switch (type) {
|
||||
//case QtDebugMsg:
|
||||
// fprintf(stderr, "Debug: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function);
|
||||
// break;
|
||||
//case QtInfoMsg:
|
||||
// fprintf(stderr, "Info: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function);
|
||||
// break;
|
||||
//case QtWarningMsg:
|
||||
// fprintf(stderr, "Warning: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function);
|
||||
// break;
|
||||
//case QtCriticalMsg:
|
||||
// fprintf(stderr, "Critical: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function);
|
||||
// break;
|
||||
//case QtFatalMsg:
|
||||
// fprintf(stderr, "Fatal: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function);
|
||||
// abort();
|
||||
//}
|
||||
}
|
||||
|
||||
MainWindow::~MainWindow()
|
||||
{
|
||||
mThread->terminate();
|
||||
mThread->deleteLater();
|
||||
delete mUI;
|
||||
}
|
||||
void MainWindow::changeEvent(QEvent* aEvent)
|
||||
{
|
||||
if (aEvent->type() == QEvent::LanguageChange)
|
||||
{
|
||||
mUI->retranslateUi(this);
|
||||
}
|
||||
|
||||
QWidget::changeEvent(aEvent);
|
||||
}
|
||||
|
||||
|
||||
void MainWindow::loadStyleSheet(const QString& aSheetName)
|
||||
{
|
||||
QFile file(":/stylesheet/" + aSheetName + ".css");
|
||||
file.open(QFile::ReadOnly);
|
||||
if (file.isOpen())
|
||||
{
|
||||
QString styleSheet = this->styleSheet();
|
||||
styleSheet += QLatin1String(file.readAll());
|
||||
this->setStyleSheet(styleSheet);
|
||||
}
|
||||
}
|
||||
void MainWindow::switchToScanTab() { mTabWidget->setCurrentIndex(1); }
|
||||
|
||||
void MainWindow::centerWidgetHide()
|
||||
{
|
||||
@@ -289,61 +256,13 @@ void MainWindow::centerWidgetShow()
|
||||
mUI->mCentralWidget->setVisible(true);
|
||||
}
|
||||
|
||||
|
||||
QTextEdit* MainWindow::getEdit()
|
||||
{
|
||||
return mDebugMessageConsole;
|
||||
}
|
||||
|
||||
void MainWindow::requestLogin()
|
||||
{
|
||||
mLoginDialog->clearInputData();
|
||||
mLoginDialog->setWindowModality(Qt::WindowModal);
|
||||
mLoginDialog->showFullScreen();
|
||||
centerWidgetHide();
|
||||
while (QDialog::Accepted != mLoginDialog->result())
|
||||
{
|
||||
mLoginDialog->exec();
|
||||
}
|
||||
mLoginDialog->setResult(QDialog::Rejected);
|
||||
centerWidgetShow();
|
||||
}
|
||||
|
||||
void MainWindow::debugConsoleOn()
|
||||
{
|
||||
mIsDebugMode = true;
|
||||
mDebugConsoleWidget = new QDockWidget(this);
|
||||
mDebugConsoleWidget->setObjectName(QString::fromUtf8("dockWidget"));
|
||||
mDebugConsoleWidget->setAllowedAreas(Qt::RightDockWidgetArea);
|
||||
this->addDockWidget(static_cast<Qt::DockWidgetArea>(2), mDebugConsoleWidget);
|
||||
|
||||
mDebugMessageConsole = new UTextEdit(this);
|
||||
mDebugMessageConsole->setFocusPolicy(Qt::NoFocus);
|
||||
mDebugConsoleWidget->setWidget(mDebugMessageConsole);
|
||||
|
||||
const QString edit_style =
|
||||
"QScrollBar:vertical{border: 0px solid grey; background:#2d2d2d; width: 15px; margin: 0px 0 0px 0; }"
|
||||
"QScrollBar::handle:vertical{background:#5a5a5a;min-height: 25px;}"
|
||||
"QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical{background:#2d2d2d;}";
|
||||
mDebugMessageConsole->verticalScrollBar()->setStyleSheet(edit_style);
|
||||
//clear buffer before redirect;
|
||||
}
|
||||
|
||||
void MainWindow::triggerError(const QString& aMessage)
|
||||
{
|
||||
QString message(aMessage);
|
||||
EventCenter::Default()->triggerEvent(GUIErrorRaise, nullptr, (QObject*)&message);
|
||||
}
|
||||
|
||||
void MainWindow::grabGestures(const QList<Qt::GestureType>& aGestures)
|
||||
{
|
||||
//! [enable gestures]
|
||||
foreach(Qt::GestureType gesture, aGestures)
|
||||
{
|
||||
grabGesture(gesture);
|
||||
}
|
||||
//! [enable gestures]
|
||||
}
|
||||
//------events-----------------------------------------------------------------
|
||||
|
||||
//! [event handler]
|
||||
bool MainWindow::event(QEvent* aEvent)
|
||||
@@ -355,6 +274,33 @@ bool MainWindow::event(QEvent* aEvent)
|
||||
return QWidget::event(aEvent);
|
||||
}
|
||||
|
||||
|
||||
void MainWindow::changeEvent(QEvent* aEvent)
|
||||
{
|
||||
if (aEvent->type() == QEvent::LanguageChange)
|
||||
{
|
||||
mUI->retranslateUi(this);
|
||||
}
|
||||
|
||||
QWidget::changeEvent(aEvent);
|
||||
}
|
||||
|
||||
void MainWindow::keyPressEvent(QKeyEvent *event) {
|
||||
if (event->modifiers()==Qt::ControlModifier &&event->key()==Qt::Key_R){
|
||||
QFile file("D:\\workdir\\GUI\\src\\stylesheet\\Dark2.css");
|
||||
file.open(QFile::ReadOnly);
|
||||
if (file.isOpen())
|
||||
{
|
||||
QString styleSheet = this->styleSheet();
|
||||
styleSheet += QLatin1String(file.readAll());
|
||||
this->setStyleSheet(styleSheet);
|
||||
}
|
||||
this->update();
|
||||
}
|
||||
|
||||
QWidget::keyPressEvent(event);
|
||||
}
|
||||
|
||||
bool MainWindow::gestureEvent(QGestureEvent* aGestureEvent)
|
||||
{
|
||||
if (QGesture* swipe = aGestureEvent->gesture(Qt::SwipeGesture))
|
||||
@@ -368,6 +314,16 @@ bool MainWindow::gestureEvent(QGestureEvent* aGestureEvent)
|
||||
return true;
|
||||
}
|
||||
|
||||
void MainWindow::grabGestures(const QList<Qt::GestureType>& aGestures)
|
||||
{
|
||||
//! [enable gestures]
|
||||
foreach(Qt::GestureType gesture, aGestures)
|
||||
{
|
||||
grabGesture(gesture);
|
||||
}
|
||||
//! [enable gestures]
|
||||
}
|
||||
|
||||
void MainWindow::panTriggered(QPanGesture* aPanGesture)
|
||||
{
|
||||
if (aPanGesture->state() == Qt::GestureFinished)
|
||||
@@ -431,18 +387,70 @@ void MainWindow::swipeTriggered(QSwipeGesture* aSwipeGesture)
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::keyPressEvent(QKeyEvent *event) {
|
||||
if (event->modifiers()==Qt::ControlModifier &&event->key()==Qt::Key_R){
|
||||
QFile file("D:\\workdir\\GUI\\src\\stylesheet\\Dark2.css");
|
||||
file.open(QFile::ReadOnly);
|
||||
if (file.isOpen())
|
||||
{
|
||||
QString styleSheet = this->styleSheet();
|
||||
styleSheet += QLatin1String(file.readAll());
|
||||
this->setStyleSheet(styleSheet);
|
||||
}
|
||||
this->update();
|
||||
}
|
||||
//------actions & slots--------------------------------------------------------
|
||||
|
||||
QWidget::keyPressEvent(event);
|
||||
void MainWindow::requestLogin()
|
||||
{
|
||||
mLoginDialog->clearInputData();
|
||||
mLoginDialog->setWindowModality(Qt::WindowModal);
|
||||
mLoginDialog->showFullScreen();
|
||||
centerWidgetHide();
|
||||
while (QDialog::Accepted != mLoginDialog->result())
|
||||
{
|
||||
mLoginDialog->exec();
|
||||
}
|
||||
mLoginDialog->setResult(QDialog::Rejected);
|
||||
centerWidgetShow();
|
||||
}
|
||||
|
||||
//------log out about----------------------------------------------------------
|
||||
|
||||
QTextEdit* MainWindow::getEdit()
|
||||
{
|
||||
return mDebugMessageConsole;
|
||||
}
|
||||
|
||||
void MainWindow::debugConsoleOn()
|
||||
{
|
||||
mIsDebugMode = true;
|
||||
mDebugConsoleWidget = new QDockWidget(this);
|
||||
mDebugConsoleWidget->setObjectName(QString::fromUtf8("dockWidget"));
|
||||
mDebugConsoleWidget->setAllowedAreas(Qt::RightDockWidgetArea);
|
||||
this->addDockWidget(static_cast<Qt::DockWidgetArea>(2), mDebugConsoleWidget);
|
||||
|
||||
mDebugMessageConsole = new UTextEdit(this);
|
||||
mDebugMessageConsole->setFocusPolicy(Qt::NoFocus);
|
||||
mDebugConsoleWidget->setWidget(mDebugMessageConsole);
|
||||
|
||||
const QString edit_style =
|
||||
"QScrollBar:vertical{border: 0px solid grey; background:#2d2d2d; width: 15px; margin: 0px 0 0px 0; }"
|
||||
"QScrollBar::handle:vertical{background:#5a5a5a;min-height: 25px;}"
|
||||
"QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical{background:#2d2d2d;}";
|
||||
mDebugMessageConsole->verticalScrollBar()->setStyleSheet(edit_style);
|
||||
//clear buffer before redirect;
|
||||
}
|
||||
|
||||
void MainWindow::QMessageOutput(QtMsgType aType, const QMessageLogContext& aContext, const QString& msg)
|
||||
{
|
||||
|
||||
std::cout << msg.toStdString().c_str() << std::endl;
|
||||
|
||||
//QByteArray localMsg = msg.toLocal8Bit();
|
||||
//switch (type) {
|
||||
//case QtDebugMsg:
|
||||
// fprintf(stderr, "Debug: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function);
|
||||
// break;
|
||||
//case QtInfoMsg:
|
||||
// fprintf(stderr, "Info: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function);
|
||||
// break;
|
||||
//case QtWarningMsg:
|
||||
// fprintf(stderr, "Warning: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function);
|
||||
// break;
|
||||
//case QtCriticalMsg:
|
||||
// fprintf(stderr, "Critical: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function);
|
||||
// break;
|
||||
//case QtFatalMsg:
|
||||
// fprintf(stderr, "Fatal: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function);
|
||||
// abort();
|
||||
//}
|
||||
}
|
||||
|
||||
@@ -62,6 +62,12 @@ private:
|
||||
LoginDialog* mLoginDialog;
|
||||
QThread* mThread;
|
||||
bool mIsDebugMode;
|
||||
|
||||
void switchToScanTab();
|
||||
|
||||
void reloadLanguage() ;
|
||||
|
||||
void resetRoleLayout();
|
||||
};
|
||||
|
||||
#endif // MAINWINDOW_H
|
||||
|
||||
Reference in New Issue
Block a user