* Refactor windows package.
This commit is contained in:
153
src/windows/LoginDialog.cpp
Normal file
153
src/windows/LoginDialog.cpp
Normal file
@@ -0,0 +1,153 @@
|
||||
#include "LoginDialog.h"
|
||||
|
||||
#include <QVBoxLayout>
|
||||
#include <QLineEdit>
|
||||
#include <QToolButton>
|
||||
#include <QFrame>
|
||||
#include <QInputMethodEvent>
|
||||
#include <QtWidgets/QLabel>
|
||||
#include <QCryptographicHash>
|
||||
|
||||
#include "guimacros.h"
|
||||
#include "event/EventCenter.h"
|
||||
#include "db/SQLHelper.h"
|
||||
#include "utilities/InputObject.h"
|
||||
#include "models/User.h"
|
||||
#include "log/UserOperationLog.h"
|
||||
#include "json/jsonobject.h"
|
||||
#include "dialogs/guimessagedialog.h"
|
||||
|
||||
LoginDialog::LoginDialog(QWidget* aParent)
|
||||
: QDialog(aParent)
|
||||
, mVMainLayout(new QVBoxLayout(this))
|
||||
, mDialogTitle(new QLabel(this))
|
||||
, mDialogFrame(new QFrame(this))
|
||||
, mDialogContentsLayout(new QVBoxLayout(mDialogFrame))
|
||||
, mAccountEdit(new QLineEdit(mDialogFrame))
|
||||
, mPasswordEdit(new QLineEdit(mDialogFrame))
|
||||
, mLoginButton(nullptr)
|
||||
, mErrorMessage(new QLabel(this))
|
||||
{
|
||||
initializeAllWidget();
|
||||
setWindowFlags(windowFlags() | Qt::Window | Qt::FramelessWindowHint | Qt::WindowSystemMenuHint);
|
||||
mAccountEdit->setText(JsonObject::Instance()->defaultUser());
|
||||
}
|
||||
|
||||
LoginDialog::~LoginDialog()
|
||||
{
|
||||
}
|
||||
|
||||
void LoginDialog::initializeAllWidget()
|
||||
{
|
||||
this->setObjectName("loginform");
|
||||
|
||||
initializeTitle();
|
||||
initializeDialogFrame();
|
||||
initializeLayout();
|
||||
initializeEdit();
|
||||
initializeLoginButton();
|
||||
initializeErrorMessage();
|
||||
|
||||
connect(EventCenter::Default(), &EventCenter::DeviceErrorRaise, [=](QObject* parent, QObject* msg) {
|
||||
if (!this->isVisible()) return;
|
||||
//默认旧模式
|
||||
GUIMessageDialog msgDialog(this);
|
||||
msgDialog.setOpacity(1.0);
|
||||
if (msg)
|
||||
{
|
||||
QString* str = (QString*)msg;
|
||||
msgDialog.showMessage(*str);
|
||||
}
|
||||
else
|
||||
{
|
||||
msgDialog.showMessage("Something went error!");
|
||||
}
|
||||
msgDialog.stopLoading();
|
||||
msgDialog.showExitButton();
|
||||
msgDialog.exec();
|
||||
});
|
||||
}
|
||||
|
||||
void LoginDialog::initializeLayout()
|
||||
{
|
||||
mVMainLayout->setContentsMargins(0, 0, 0, 0);
|
||||
mVMainLayout->setSpacing(0);
|
||||
mVMainLayout->addSpacerItem(new QSpacerItem(20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding));
|
||||
mVMainLayout->addWidget(mDialogTitle, 0, Qt::AlignCenter);
|
||||
mVMainLayout->addWidget(mDialogFrame, 0, Qt::AlignCenter);
|
||||
mVMainLayout->addSpacerItem(new QSpacerItem(20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding));
|
||||
|
||||
mDialogContentsLayout->setSpacing(30);
|
||||
mDialogContentsLayout->setContentsMargins(20, 60, 20, 20);
|
||||
}
|
||||
|
||||
void LoginDialog::initializeTitle()
|
||||
{
|
||||
mDialogTitle->setObjectName("title");
|
||||
mDialogTitle->setText(tr("U S C T"));
|
||||
}
|
||||
|
||||
void LoginDialog::initializeDialogFrame()
|
||||
{
|
||||
mDialogFrame->setObjectName("login_frame_username");
|
||||
}
|
||||
|
||||
void LoginDialog::initializeEdit()
|
||||
{
|
||||
mAccountEdit->setObjectName("combobox_UserName");
|
||||
mAccountEdit->setPlaceholderText(tr("Username"));
|
||||
mDialogContentsLayout->addWidget(mAccountEdit);
|
||||
mPasswordEdit->setObjectName("edt_Password");
|
||||
mPasswordEdit->setEchoMode(QLineEdit::Password);
|
||||
mPasswordEdit->setPlaceholderText(tr("Password"));
|
||||
mDialogContentsLayout->addWidget(mPasswordEdit);
|
||||
}
|
||||
|
||||
void LoginDialog::initializeLoginButton()
|
||||
{
|
||||
ADD_TOOL_BTN_TO_LAYOUT(login, ":/icons/login.png", mDialogContentsLayout);
|
||||
btnlogin->setText(tr("Login"));
|
||||
mDialogContentsLayout->removeWidget(btnlogin);
|
||||
mDialogContentsLayout->addWidget(btnlogin, 0, Qt::AlignCenter);
|
||||
mLoginButton = btnlogin;
|
||||
btnlogin->setObjectName("btnlogin");
|
||||
connect(mLoginButton, SIGNAL(clicked()), this, SLOT(doLogin()));
|
||||
}
|
||||
|
||||
void LoginDialog::initializeErrorMessage()
|
||||
{
|
||||
mErrorMessage->setObjectName("warn");
|
||||
mErrorMessage->setText("Login failed, username or password error!");
|
||||
mErrorMessage->setVisible(false);
|
||||
mDialogContentsLayout->addWidget(mErrorMessage, 0, Qt::AlignCenter);
|
||||
}
|
||||
|
||||
void LoginDialog::clearInputData()
|
||||
{
|
||||
mAccountEdit->clear();
|
||||
mPasswordEdit->clear();
|
||||
}
|
||||
|
||||
|
||||
void LoginDialog::doLogin()
|
||||
{
|
||||
QString strUserCode = mAccountEdit->text();
|
||||
QString strPassWord = mPasswordEdit->text();
|
||||
|
||||
QString encryptedPassword = strPassWord;
|
||||
strPassWord = "123456";
|
||||
|
||||
QString encryptPwd = User::getEncryptedPassword(strPassWord);
|
||||
if (User::QueryUser(strUserCode, encryptPwd))
|
||||
{
|
||||
accept();
|
||||
LOG_USER_OPERATION(Login);
|
||||
JsonObject::Instance()->setDefaultUser(strUserCode);
|
||||
}
|
||||
else
|
||||
{
|
||||
mErrorMessage->setVisible(true);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
50
src/windows/LoginDialog.h
Normal file
50
src/windows/LoginDialog.h
Normal file
@@ -0,0 +1,50 @@
|
||||
#ifndef LOGINDIALOG_H
|
||||
#define LOGINDIALOG_H
|
||||
|
||||
#include <QKeyEvent>
|
||||
#include <QComboBox>
|
||||
#include <QDialog>
|
||||
|
||||
class QVBoxLayout;
|
||||
class QLineEdit;
|
||||
class QToolButton;
|
||||
class QFrame;
|
||||
class QLabel;
|
||||
|
||||
class LoginDialog : public QDialog
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
LoginDialog(QWidget* aParent = nullptr);
|
||||
~LoginDialog() override;
|
||||
|
||||
void clearInputData();
|
||||
|
||||
signals:
|
||||
void sigUserLoginSuccessful(const QString& aUserCode);
|
||||
|
||||
private slots:
|
||||
void doLogin();
|
||||
|
||||
private:
|
||||
void initializeAllWidget();
|
||||
void initializeLayout();
|
||||
void initializeTitle();
|
||||
void initializeDialogFrame();
|
||||
void initializeEdit();
|
||||
void initializeLoginButton();
|
||||
void initializeErrorMessage();
|
||||
|
||||
private:
|
||||
QVBoxLayout* mVMainLayout;
|
||||
QLabel* mDialogTitle;
|
||||
QFrame* mDialogFrame;
|
||||
QVBoxLayout* mDialogContentsLayout;
|
||||
QLineEdit* mAccountEdit;
|
||||
QLineEdit* mPasswordEdit;
|
||||
QToolButton* mLoginButton;
|
||||
QLabel* mErrorMessage;
|
||||
};
|
||||
|
||||
#endif // LOGINDIALOG_H
|
||||
437
src/windows/MainWindow.cpp
Normal file
437
src/windows/MainWindow.cpp
Normal file
@@ -0,0 +1,437 @@
|
||||
#include "MainWindow.h"
|
||||
|
||||
#include <qtabwidget.h>
|
||||
#include <QSizePolicy>
|
||||
#include <QHBoxLayout>
|
||||
#include <QTextEdit>
|
||||
#include <QScrollBar>
|
||||
#include <QDateTime>
|
||||
#include <QGestureEvent>
|
||||
#include <QDockWidget>
|
||||
#include <fstream>
|
||||
#include <sstream>
|
||||
|
||||
#include "ui_mainwindow.h"
|
||||
#include "event/EventCenter.h"
|
||||
#include "forms/tabformwidget.h"
|
||||
#include "forms/select/SelectFormWidget.h"
|
||||
#include "forms/scan/ScanFormWidget.h"
|
||||
#include "forms/settings/AdminSettingForm.h"
|
||||
#include "forms/TopBarWidget.h"
|
||||
#include "dialogs/guimessagedialog.h"
|
||||
#include "device/DeviceManager.h"
|
||||
#include "errorhandle/GUIErrorHandle.h"
|
||||
#include "LoginDialog.h"
|
||||
#include "models/User.h"
|
||||
#include "appvals/AppGlobalValues.h"
|
||||
|
||||
MainWindow::MainWindow(QWidget* aParent)
|
||||
: QMainWindow(aParent)
|
||||
, mUI(new Ui::MainWindow)
|
||||
, mDebugConsoleWidget(nullptr)
|
||||
, mMessageDialog(nullptr)
|
||||
, mDebugMessageConsole(nullptr)
|
||||
, mTabWidget(new QTabWidget(this))
|
||||
, mAdminTabIndex(-1)
|
||||
, mLoginDialog(new LoginDialog(this))
|
||||
, mThread(nullptr)
|
||||
, mIsDebugMode(false)
|
||||
{
|
||||
mUI->setupUi(this);
|
||||
this->loadStyleSheet("Dark2");
|
||||
this->setWindowFlags(Qt::Window);
|
||||
|
||||
initializeTabWidget();
|
||||
initializeLayout();
|
||||
|
||||
connect(EventCenter::Default(), &EventCenter::PatientSelected, [=](QObject* sender, QObject* data) {
|
||||
mTabWidget->setCurrentIndex(1);
|
||||
});
|
||||
|
||||
connect(EventCenter::Default(), &EventCenter::DeviceErrorRaise, [=](QObject* parent, QObject* msg) {
|
||||
if (!mUI->mCentralWidget->isVisible()) return;
|
||||
//默认旧模式
|
||||
if (!mMessageDialog)
|
||||
{
|
||||
mMessageDialog = new GUIMessageDialog(this);
|
||||
}
|
||||
if (msg)
|
||||
{
|
||||
QString* str = (QString*)msg;
|
||||
mMessageDialog->showMessage(*str);
|
||||
}
|
||||
else
|
||||
{
|
||||
mMessageDialog->showMessage("Something went error!");
|
||||
}
|
||||
mMessageDialog->stopLoading();
|
||||
mMessageDialog->showExitButton();
|
||||
if (mMessageDialog->isHidden())
|
||||
{
|
||||
mMessageDialog->setWindowModality(Qt::NonModal);
|
||||
mMessageDialog->exec();
|
||||
}
|
||||
});
|
||||
connect(EventCenter::Default(), &EventCenter::InvokeOperationStart, [=](QObject*, QObject* msg) {
|
||||
if (mMessageDialog)
|
||||
{
|
||||
mMessageDialog->hide();
|
||||
delete mMessageDialog;
|
||||
}
|
||||
mMessageDialog = new GUIMessageDialog(this);
|
||||
if (msg)
|
||||
{
|
||||
QString* str = (QString*)msg;
|
||||
mMessageDialog->showMessage(*str);
|
||||
}
|
||||
else
|
||||
{
|
||||
mMessageDialog->hideMessage();
|
||||
}
|
||||
mMessageDialog->hideExitButton();
|
||||
mMessageDialog->startLoading();
|
||||
AppGlobalValues::setInProcessing(true);
|
||||
// msgDialog->showFullScreen();
|
||||
if (mMessageDialog->isHidden())
|
||||
{
|
||||
mMessageDialog->show();
|
||||
}
|
||||
});
|
||||
connect(EventCenter::Default(), &EventCenter::InvokeOperationProgress, [=](QObject*, QObject* msg) {
|
||||
if (!mMessageDialog) mMessageDialog = new GUIMessageDialog(this);
|
||||
if (msg)
|
||||
{
|
||||
QVariant* var = (QVariant*)msg;
|
||||
if (mMessageDialog->Pending())
|
||||
{
|
||||
mMessageDialog->stopPending();
|
||||
}
|
||||
mMessageDialog->showMessage(var->toString());
|
||||
}
|
||||
else
|
||||
{
|
||||
mMessageDialog->hideMessage();
|
||||
}
|
||||
if (mMessageDialog->isHidden())
|
||||
{
|
||||
mMessageDialog->show();
|
||||
}
|
||||
});
|
||||
connect(EventCenter::Default(), &EventCenter::InvokeOperationPending, [=](QObject*, QObject* msg) {
|
||||
if (!mMessageDialog) return;
|
||||
if (!mMessageDialog->Pending())
|
||||
{
|
||||
mMessageDialog->startPending();
|
||||
QVariant* var = (QVariant*)msg;
|
||||
mMessageDialog->showMessage(var->toString());
|
||||
}
|
||||
});
|
||||
connect(EventCenter::Default(), &EventCenter::InvokeOperationEnd, [=](QObject*, QObject* v) {
|
||||
if (!mMessageDialog)
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (!mMessageDialog->isHidden())
|
||||
{
|
||||
if (v && ((QVariant*)v)->toBool())
|
||||
{
|
||||
mMessageDialog->stopLoading();
|
||||
mMessageDialog->showMessage("Scan completed!");
|
||||
mMessageDialog->showExitButton();
|
||||
mMessageDialog->setWindowModality(Qt::WindowModal);
|
||||
mMessageDialog->exec();
|
||||
}
|
||||
else
|
||||
{
|
||||
mMessageDialog->accept();
|
||||
}
|
||||
delete mMessageDialog;
|
||||
mMessageDialog = nullptr;
|
||||
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(DeviceManager::Default(), &DeviceManager::raiseGlobalError, this, &MainWindow::triggerError);
|
||||
GUIErrorHandle::Default()->init();
|
||||
mThread = QThread::create([]() {
|
||||
QThread::sleep(10);
|
||||
int f = 0x00100001;
|
||||
for (int i = 0; i < 8; ++i)
|
||||
{
|
||||
QThread::sleep(10);
|
||||
f = f << (i * 4);
|
||||
printf("invoke %d\r\n", f);
|
||||
char* v = (char*)&f;
|
||||
QString msg;
|
||||
msg.append("w ");
|
||||
msg.append(v[0]);
|
||||
msg.append(v[1]);
|
||||
msg.append(v[2]);
|
||||
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::initializeTabWidget()
|
||||
{
|
||||
mTabWidget->setTabPosition(QTabWidget::South);
|
||||
mTabWidget->setContentsMargins(0, 0, 0, 0);
|
||||
|
||||
SelectFormWidget* selectForm = new SelectFormWidget(this);
|
||||
mTabWidget->addTab(selectForm, tr("Select"));
|
||||
ScanFormWidget* scanForm = new ScanFormWidget(this);
|
||||
mTabWidget->addTab(scanForm, tr("Scan"));
|
||||
TabFormWidget* verifyForm = new TabFormWidget(this);
|
||||
mTabWidget->addTab(verifyForm, tr("Verify"));
|
||||
mTabWidget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
|
||||
}
|
||||
|
||||
void MainWindow::initializeLayout()
|
||||
{
|
||||
QVBoxLayout* layout = new QVBoxLayout(this);
|
||||
layout->setMargin(0);
|
||||
layout->setSpacing(0);
|
||||
QWidget* topBarWidget = new TopBarWidget(this);
|
||||
topBarWidget->setObjectName("topbarWidget");
|
||||
layout->addWidget(topBarWidget);
|
||||
layout->addWidget(mTabWidget);
|
||||
|
||||
mUI->mCentralWidget->setLayout(layout);
|
||||
}
|
||||
|
||||
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->quit();
|
||||
mThread->wait();
|
||||
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::centerWidgetHide()
|
||||
{
|
||||
mUI->mCentralWidget->setVisible(false);
|
||||
}
|
||||
|
||||
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 QTextEdit(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]
|
||||
}
|
||||
|
||||
//! [event handler]
|
||||
bool MainWindow::event(QEvent* aEvent)
|
||||
{
|
||||
if (aEvent->type() == QEvent::Gesture)
|
||||
{
|
||||
return gestureEvent(static_cast<QGestureEvent*>(aEvent));
|
||||
}
|
||||
return QWidget::event(aEvent);
|
||||
}
|
||||
|
||||
bool MainWindow::gestureEvent(QGestureEvent* aGestureEvent)
|
||||
{
|
||||
if (QGesture* swipe = aGestureEvent->gesture(Qt::SwipeGesture))
|
||||
{
|
||||
swipeTriggered(static_cast<QSwipeGesture*>(swipe));
|
||||
}
|
||||
if (QGesture* pan = aGestureEvent->gesture(Qt::PanGesture))
|
||||
{
|
||||
panTriggered(static_cast<QPanGesture*>(pan));
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void MainWindow::panTriggered(QPanGesture* aPanGesture)
|
||||
{
|
||||
if (aPanGesture->state() == Qt::GestureFinished)
|
||||
{
|
||||
QPointF delta = aPanGesture->offset();
|
||||
int index = mTabWidget->currentIndex();
|
||||
if (delta.x() > 50)
|
||||
{
|
||||
|
||||
index--;
|
||||
if (index >= 0)
|
||||
{
|
||||
mTabWidget->setCurrentIndex(index);
|
||||
}
|
||||
}
|
||||
if (delta.x() < -50)
|
||||
{
|
||||
index++;
|
||||
if (index < mTabWidget->count())
|
||||
{
|
||||
mTabWidget->setCurrentIndex(index);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::swipeTriggered(QSwipeGesture* aSwipeGesture)
|
||||
{
|
||||
if (aSwipeGesture->state() == Qt::GestureFinished)
|
||||
{
|
||||
//if (gesture->horizontalDirection() == QSwipeGesture::Right) {
|
||||
// int index = tab->currentIndex();
|
||||
// index--;
|
||||
// if (index >= 0) {
|
||||
// tab->setCurrentIndex(index);
|
||||
// }
|
||||
|
||||
//}
|
||||
//if (gesture->horizontalDirection() == QSwipeGesture::Left) {
|
||||
// int index = tab->currentIndex();
|
||||
// index++;
|
||||
// if (index < tab->count()) {
|
||||
// tab->setCurrentIndex(index);
|
||||
// }
|
||||
//}
|
||||
if (aSwipeGesture->verticalDirection() == QSwipeGesture::Down)
|
||||
{
|
||||
if (mIsDebugMode)
|
||||
{
|
||||
mDebugConsoleWidget->show();
|
||||
}
|
||||
}
|
||||
if (aSwipeGesture->verticalDirection() == QSwipeGesture::Up)
|
||||
{
|
||||
if (mIsDebugMode)
|
||||
{
|
||||
mDebugConsoleWidget->hide();
|
||||
}
|
||||
}
|
||||
//update();
|
||||
}
|
||||
}
|
||||
65
src/windows/MainWindow.h
Normal file
65
src/windows/MainWindow.h
Normal file
@@ -0,0 +1,65 @@
|
||||
#ifndef MAINWINDOW_H
|
||||
#define MAINWINDOW_H
|
||||
|
||||
#include <QMainWindow>
|
||||
#include <QTimer>
|
||||
|
||||
#include "utilities/StdOutRedirector.h"
|
||||
#include "json/cJSON.h"
|
||||
|
||||
namespace Ui
|
||||
{
|
||||
class MainWindow;
|
||||
}
|
||||
|
||||
class GUIMessageDialog;
|
||||
class QTabWidget;
|
||||
class QGestureEvent;
|
||||
class QSwipeGesture;
|
||||
class QPanGesture;
|
||||
class QDockWidget;
|
||||
class LoginDialog;
|
||||
|
||||
class MainWindow : public QMainWindow
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit MainWindow(QWidget* aParent = nullptr);
|
||||
~MainWindow();
|
||||
static void QMessageOutput(QtMsgType aType, const QMessageLogContext& aContext, const QString& aMessage);
|
||||
void centerWidgetHide();
|
||||
void centerWidgetShow();
|
||||
void requestLogin();
|
||||
QTextEdit* getEdit();
|
||||
void debugConsoleOn();
|
||||
void grabGestures(const QList<Qt::GestureType>& aGestures);
|
||||
|
||||
public slots:
|
||||
void triggerError(const QString&);
|
||||
|
||||
protected:
|
||||
void changeEvent(QEvent* aEvent);
|
||||
bool event(QEvent* aEvent) override;
|
||||
|
||||
private:
|
||||
void initializeTabWidget();
|
||||
void initializeLayout();
|
||||
bool gestureEvent(QGestureEvent* aGestureEvent);
|
||||
void swipeTriggered(QSwipeGesture* aSwipeGesture);
|
||||
void panTriggered(QPanGesture* aPanGesture);
|
||||
void loadStyleSheet(const QString& aSheetName);
|
||||
|
||||
private:
|
||||
Ui::MainWindow* mUI;
|
||||
QDockWidget* mDebugConsoleWidget;
|
||||
GUIMessageDialog* mMessageDialog;
|
||||
QTextEdit* mDebugMessageConsole;
|
||||
QTabWidget* mTabWidget;
|
||||
int mAdminTabIndex;
|
||||
LoginDialog* mLoginDialog;
|
||||
QThread* mThread;
|
||||
bool mIsDebugMode;
|
||||
};
|
||||
|
||||
#endif // MAINWINDOW_H
|
||||
21
src/windows/MainWindow.ui
Normal file
21
src/windows/MainWindow.ui
Normal file
@@ -0,0 +1,21 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>MainWindow</class>
|
||||
<widget class="QMainWindow" name="MainWindow">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>400</width>
|
||||
<height>300</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>MainWindow</string>
|
||||
</property>
|
||||
<widget class="QWidget" name="mCentralWidget"/>
|
||||
</widget>
|
||||
<layoutdefault spacing="6" margin="11"/>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
||||
@@ -1,149 +0,0 @@
|
||||
#include "loginwindow.h"
|
||||
#include <QVBoxLayout>
|
||||
#include <QLineEdit>
|
||||
#include <QToolButton>
|
||||
#include <QFrame>
|
||||
|
||||
#include <QInputMethodEvent>
|
||||
#include <QtWidgets/QLabel>
|
||||
#include "guimacros.h"
|
||||
#include <QCryptographicHash>
|
||||
#include <src/event/EventCenter.h>
|
||||
#include "db/SQLHelper.h"
|
||||
#include "src/utilities/InputObject.h"
|
||||
#include "models/User.h"
|
||||
#include "log/UserOperationLog.h"
|
||||
#include "json/jsonobject.h"
|
||||
#include "src/dialogs/guimessagedialog.h"
|
||||
|
||||
LoginWindow::LoginWindow(QWidget* parent)
|
||||
: QDialog(parent)
|
||||
, m_pLoginButton(nullptr)
|
||||
, m_pVMainLayout(nullptr)
|
||||
, m_pUserCodeFrame(nullptr)
|
||||
, m_pUserCodeLayout(nullptr)
|
||||
, m_pUserCodeEdit(nullptr)
|
||||
, m_pPassWordEdit(nullptr)
|
||||
{
|
||||
initUi();
|
||||
init();
|
||||
setWindowFlags(windowFlags() | Qt::Window | Qt::FramelessWindowHint | Qt::WindowSystemMenuHint);
|
||||
//Dialog::Instance()->InitForm();
|
||||
m_pUserCodeEdit->setText(JsonObject::Instance()->defaultUser());
|
||||
|
||||
|
||||
}
|
||||
|
||||
LoginWindow::~LoginWindow()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
void LoginWindow::initUi()
|
||||
{
|
||||
|
||||
this->setObjectName("loginform");
|
||||
m_pVMainLayout = new QVBoxLayout(this);
|
||||
m_pVMainLayout->setContentsMargins(0, 0, 0, 0);
|
||||
m_pVMainLayout->setSpacing(0);
|
||||
m_pVMainLayout->addSpacerItem(new QSpacerItem(20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding));
|
||||
|
||||
QLabel* title = new QLabel(this);
|
||||
title->setObjectName("title");
|
||||
title->setText(tr("U S C T"));
|
||||
m_pVMainLayout->addWidget(title, 0, Qt::AlignCenter);
|
||||
m_pUserCodeFrame = new QFrame(this);
|
||||
m_pUserCodeFrame->setObjectName("login_frame_username");
|
||||
m_pUserCodeLayout = new QVBoxLayout(m_pUserCodeFrame);
|
||||
m_pUserCodeLayout->setSpacing(30);
|
||||
m_pUserCodeLayout->setContentsMargins(20, 60, 20, 20);
|
||||
warn = new QLabel(this);
|
||||
warn->setObjectName("warn");
|
||||
warn->setText("Login failed, username or password error!");
|
||||
warn->setVisible(false);
|
||||
m_pUserCodeLayout->addWidget(warn, 0, Qt::AlignCenter);
|
||||
m_pUserCodeEdit = new QLineEdit(m_pUserCodeFrame);
|
||||
m_pUserCodeEdit->setObjectName("combobox_UserName");
|
||||
|
||||
//m_pUserCodeEdit->setLineEdit(new QLineEdit(m_pUserCodeFrame));
|
||||
|
||||
m_pUserCodeEdit->setPlaceholderText(tr("Username"));
|
||||
m_pUserCodeLayout->addWidget(m_pUserCodeEdit);
|
||||
m_pVMainLayout->addWidget(m_pUserCodeFrame, 0, Qt::AlignCenter);
|
||||
|
||||
m_pPassWordEdit = new QLineEdit(this);
|
||||
m_pPassWordEdit->setObjectName("edt_Password");
|
||||
m_pPassWordEdit->setEchoMode(QLineEdit::Password);
|
||||
m_pPassWordEdit->setPlaceholderText(tr("Password"));
|
||||
m_pUserCodeLayout->addWidget(m_pPassWordEdit);
|
||||
|
||||
ADD_TOOL_BTN_TO_LAYOUT(login, ":/icons/login.png", m_pUserCodeLayout);
|
||||
btnlogin->setText(tr("Login"));
|
||||
m_pUserCodeLayout->removeWidget(btnlogin);
|
||||
m_pUserCodeLayout->addWidget(btnlogin, 0, Qt::AlignCenter);
|
||||
m_pLoginButton = btnlogin;
|
||||
btnlogin->setObjectName("btnlogin");
|
||||
// m_pUserCodeLayout->addWidget(m_pLoginButton, 0, Qt::AlignCenter);
|
||||
m_pVMainLayout->addSpacerItem(new QSpacerItem(20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding));
|
||||
connect(EventCenter::Default(), &EventCenter::DeviceErrorRaise, [=](QObject* parent, QObject* msg) {
|
||||
if (!this->isVisible()) return;
|
||||
//默认旧模式
|
||||
GUIMessageDialog msgDialog(this);
|
||||
msgDialog.setOpacity(1.0);
|
||||
if (msg) {
|
||||
QString* str = (QString*)msg;
|
||||
msgDialog.showMessage(*str);
|
||||
}
|
||||
else {
|
||||
msgDialog.showMessage("Something went error!");
|
||||
}
|
||||
msgDialog.stopLoading();
|
||||
msgDialog.showExitButton();
|
||||
// msgDialog.setWindowModality(Q);
|
||||
msgDialog.exec();
|
||||
});
|
||||
initUserList();
|
||||
}
|
||||
|
||||
void LoginWindow::init()
|
||||
{
|
||||
connect(m_pLoginButton, SIGNAL(clicked()), this, SLOT(doLogin()));
|
||||
}
|
||||
|
||||
void LoginWindow::initUserList()
|
||||
{
|
||||
}
|
||||
|
||||
void LoginWindow::clearInputData()
|
||||
{
|
||||
m_pUserCodeEdit->clear();
|
||||
m_pPassWordEdit->clear();
|
||||
//m_pUserCodeEdit->setFocus();
|
||||
}
|
||||
|
||||
|
||||
void LoginWindow::doLogin()
|
||||
{
|
||||
QString strUserCode = m_pUserCodeEdit->text();
|
||||
QString strPassWord = m_pPassWordEdit->text();
|
||||
|
||||
QString encryptedPassword = strPassWord;
|
||||
strPassWord = "123456";
|
||||
|
||||
QString encryptPwd = User::getEncryptedPassword(strPassWord);
|
||||
QString sql = QString("select UserCode from Account where UserCode='%1' and Password='%2'")
|
||||
.arg(strUserCode).arg(encryptPwd);
|
||||
if (User::QueryUser(strUserCode, encryptPwd))
|
||||
{
|
||||
accept();
|
||||
LOG_USER_OPERATION(Login);
|
||||
JsonObject::Instance()->setDefaultUser(strUserCode);
|
||||
}
|
||||
else {
|
||||
warn->setVisible(true);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -1,48 +0,0 @@
|
||||
#ifndef LOGINWINDOW_H
|
||||
#define LOGINWINDOW_H
|
||||
|
||||
#include <QKeyEvent>
|
||||
#include <QComboBox>
|
||||
#include <QDialog>
|
||||
|
||||
|
||||
class QVBoxLayout;
|
||||
class QLineEdit;
|
||||
class QToolButton;
|
||||
class QFrame;
|
||||
class QLabel;
|
||||
|
||||
class LoginWindow : public QDialog
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
LoginWindow(QWidget* parent = nullptr);
|
||||
~LoginWindow() override;
|
||||
|
||||
void initUi();
|
||||
void init();
|
||||
void clearInputData();
|
||||
signals:
|
||||
void sigUserLoginSuccessful(const QString& userCode);
|
||||
|
||||
public slots:
|
||||
void doLogin();
|
||||
//void onUserCodeFocusOut(QFocusEvent* e);
|
||||
|
||||
private:
|
||||
void initUserList();
|
||||
|
||||
private:
|
||||
|
||||
QVBoxLayout* m_pVMainLayout;
|
||||
QFrame* m_pUserCodeFrame;
|
||||
QVBoxLayout* m_pUserCodeLayout;
|
||||
QLineEdit* m_pUserCodeEdit;
|
||||
QLineEdit* m_pPassWordEdit;
|
||||
QToolButton* m_pLoginButton;
|
||||
QLabel* warn;
|
||||
|
||||
};
|
||||
|
||||
#endif // LOGINWINDOW_H
|
||||
@@ -1,389 +0,0 @@
|
||||
#include "mainwindow.h"
|
||||
#include "ui_mainwindow.h"
|
||||
#include <qtabwidget.h>
|
||||
#include <QSizePolicy>
|
||||
#include <QHBoxLayout>
|
||||
#include "event/EventCenter.h"
|
||||
#include "src/forms/tabformwidget.h"
|
||||
#include "src/forms/select/SelectFormWidget.h"
|
||||
#include "src/forms/scan/ScanFormWidget.h"
|
||||
#include "src/dialogs/guimessagedialog.h"
|
||||
#include "device/DeviceManager.h"
|
||||
#include "errorhandle/GUIErrorHandle.h"
|
||||
#include "loginwindow.h"
|
||||
#include <QTextEdit>
|
||||
#include <QScrollBar>
|
||||
#include "models/User.h"
|
||||
#include "src/forms/settings/AdminSettingForm.h"
|
||||
#include "appvals/AppGlobalValues.h"
|
||||
#include <fstream>
|
||||
#include <sstream>
|
||||
#include <QDateTime>
|
||||
#include "src/forms/TopBarWidget.h"
|
||||
#include <QGestureEvent>
|
||||
#include <QDockWidget>
|
||||
|
||||
void MainWindow::QMessageOutput(QtMsgType type, const QMessageLogContext& context, 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(QWidget* parent) :
|
||||
QMainWindow(parent),
|
||||
ui(new Ui::MainWindow)
|
||||
{
|
||||
|
||||
this->loadStyleSheet("Dark2");
|
||||
ui->setupUi(this);
|
||||
tab = new QTabWidget(this);
|
||||
tab->setTabPosition(QTabWidget::South);
|
||||
tab->setContentsMargins(0, 0, 0, 0);
|
||||
connect(EventCenter::Default(), &EventCenter::PatientSelected, [=](QObject* sender, QObject* data) {
|
||||
tab->setCurrentIndex(1);
|
||||
});
|
||||
SelectFormWidget* select_form = new SelectFormWidget(this);
|
||||
tab->addTab(select_form, tr("Select"));
|
||||
ScanFormWidget* scan_form = new ScanFormWidget(this);
|
||||
tab->addTab(scan_form, tr("Scan"));
|
||||
TabFormWidget* verify_form = new TabFormWidget(this);
|
||||
tab->addTab(verify_form, tr("Verify"));
|
||||
tab->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
|
||||
QVBoxLayout* layout = new QVBoxLayout(this);
|
||||
layout->setMargin(0);
|
||||
layout->setSpacing(0);
|
||||
QWidget* top = new TopBarWidget(this);
|
||||
top->setObjectName("topbarWidget");
|
||||
layout->addWidget(top);
|
||||
layout->addWidget(tab);
|
||||
|
||||
ui->centralWidget->setLayout(layout);
|
||||
this->setWindowFlags(Qt::Window);
|
||||
connect(EventCenter::Default(), &EventCenter::DeviceErrorRaise, [=](QObject* parent, QObject* msg) {
|
||||
if (!this->ui->centralWidget->isVisible()) return;
|
||||
//默认旧模式
|
||||
if (!msgDialog) {
|
||||
msgDialog = new GUIMessageDialog(this);
|
||||
//msgDialog->setStyleSheet(style);
|
||||
}
|
||||
if (msg) {
|
||||
QString* str = (QString*)msg;
|
||||
msgDialog->showMessage(*str);
|
||||
}
|
||||
else {
|
||||
msgDialog->showMessage("Something went error!");
|
||||
}
|
||||
msgDialog->stopLoading();
|
||||
msgDialog->showExitButton();
|
||||
if (msgDialog->isHidden()) {
|
||||
msgDialog->setWindowModality(Qt::NonModal);
|
||||
msgDialog->exec();
|
||||
}
|
||||
});
|
||||
connect(EventCenter::Default(), &EventCenter::InvokeOperationStart, [=](QObject*, QObject* msg) {
|
||||
if (msgDialog) {
|
||||
msgDialog->hide();
|
||||
delete msgDialog;
|
||||
}
|
||||
msgDialog = new GUIMessageDialog(this);
|
||||
if (msg)
|
||||
{
|
||||
QString* str = (QString*)msg;
|
||||
msgDialog->showMessage(*str);
|
||||
}
|
||||
else {
|
||||
msgDialog->hideMessage();
|
||||
}
|
||||
msgDialog->hideExitButton();
|
||||
msgDialog->startLoading();
|
||||
AppGlobalValues::setInProcessing(true);
|
||||
// msgDialog->showFullScreen();
|
||||
if (msgDialog->isHidden()) {
|
||||
msgDialog->show();
|
||||
}
|
||||
});
|
||||
connect(EventCenter::Default(), &EventCenter::InvokeOperationProgress, [=](QObject*, QObject* msg) {
|
||||
if (!msgDialog) msgDialog = new GUIMessageDialog(this);
|
||||
if (msg)
|
||||
{
|
||||
QVariant* var = (QVariant*)msg;
|
||||
if (msgDialog->Pending())msgDialog->stopPending();
|
||||
msgDialog->showMessage(var->toString());
|
||||
}
|
||||
else {
|
||||
msgDialog->hideMessage();
|
||||
}
|
||||
// msgDialog->showFullScreen();
|
||||
if (msgDialog->isHidden())msgDialog->show();
|
||||
});
|
||||
connect(EventCenter::Default(), &EventCenter::InvokeOperationPending, [=](QObject*, QObject* msg) {
|
||||
if (!msgDialog) return;
|
||||
if (!msgDialog->Pending()){
|
||||
msgDialog->startPending();
|
||||
QVariant* var = (QVariant*)msg;
|
||||
msgDialog->showMessage(var->toString());
|
||||
}
|
||||
});
|
||||
connect(EventCenter::Default(), &EventCenter::InvokeOperationEnd, [=](QObject*, QObject* v) {
|
||||
if (!msgDialog) return;
|
||||
if (!msgDialog->isHidden()){
|
||||
if (v && ((QVariant*)v)->toBool()) {
|
||||
msgDialog->stopLoading();
|
||||
msgDialog->showMessage("Scan completed!");
|
||||
msgDialog->showExitButton();
|
||||
msgDialog->setWindowModality(Qt::WindowModal);
|
||||
msgDialog->exec();
|
||||
}
|
||||
else{
|
||||
msgDialog->accept();
|
||||
}
|
||||
delete msgDialog;
|
||||
msgDialog = nullptr;
|
||||
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 (admin_tab_index == -1)
|
||||
{
|
||||
AdminSettingForm* form = new AdminSettingForm(this);
|
||||
admin_tab_index = tab->addTab(form, tr("Settings"));
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (admin_tab_index != -1) {
|
||||
tab->removeTab(admin_tab_index);
|
||||
admin_tab_index = -1;
|
||||
}
|
||||
}
|
||||
qApp->processEvents();
|
||||
});
|
||||
connect(DeviceManager::Default(), &DeviceManager::raiseGlobalError, this, &MainWindow::triggerError);
|
||||
GUIErrorHandle::Default()->init();
|
||||
l = new LoginWindow(this);
|
||||
t = QThread::create([]() {
|
||||
QThread::sleep(10);
|
||||
int f = 0x00100001;
|
||||
for (int i = 0; i < 8; ++i) {
|
||||
QThread::sleep(10);
|
||||
f = f << (i * 4);
|
||||
printf("invoke %d\r\n", f);
|
||||
char* v = (char*)&f;
|
||||
QString msg;
|
||||
msg.append("w ");
|
||||
msg.append(v[0]);
|
||||
msg.append(v[1]);
|
||||
msg.append(v[2]);
|
||||
msg.append(v[3]);
|
||||
EventCenter::Default()->triggerEvent(GUIErrorRaise, nullptr, (QObject*)&msg);
|
||||
}
|
||||
});
|
||||
t->start();
|
||||
l->showFullScreen();
|
||||
centerWidgetHide();
|
||||
connect(EventCenter::Default(), &EventCenter::ReloadLanguage, [=]() {
|
||||
|
||||
tab->setTabText(0, tr("Select"));
|
||||
tab->setTabText(1, tr("Scan"));
|
||||
tab->setTabText(2, tr("Verify"));
|
||||
tab->setTabText(3, tr("Settings"));
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
MainWindow::~MainWindow()
|
||||
{
|
||||
t->terminate();
|
||||
delete t;
|
||||
delete ui;
|
||||
delete redir;
|
||||
}
|
||||
void MainWindow::changeEvent(QEvent* event)
|
||||
{
|
||||
if (event->type() == QEvent::LanguageChange)
|
||||
{
|
||||
ui->retranslateUi(this);
|
||||
}
|
||||
|
||||
QWidget::changeEvent(event);
|
||||
}
|
||||
|
||||
|
||||
void MainWindow::loadStyleSheet(const QString& sheetName)
|
||||
{
|
||||
QFile file(":/stylesheet/" + sheetName + ".css");
|
||||
file.open(QFile::ReadOnly);
|
||||
if (file.isOpen())
|
||||
{
|
||||
QString styleSheet = this->styleSheet();
|
||||
styleSheet += QLatin1String(file.readAll());
|
||||
this->setStyleSheet(styleSheet);
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::centerWidgetHide() {
|
||||
ui->centralWidget->setVisible(false);
|
||||
}
|
||||
|
||||
void MainWindow::centerWidgetShow() {
|
||||
|
||||
ui->centralWidget->setVisible(true);
|
||||
}
|
||||
|
||||
|
||||
QTextEdit* MainWindow::getEdit()
|
||||
{
|
||||
return this->console;
|
||||
}
|
||||
|
||||
void MainWindow::requestLogin() {
|
||||
|
||||
l->clearInputData();
|
||||
l->setWindowModality(Qt::WindowModal);
|
||||
l->showFullScreen();
|
||||
this->centerWidgetHide();
|
||||
while (l->result() != QDialog::Accepted)
|
||||
{
|
||||
l->exec();
|
||||
}
|
||||
l->setResult(QDialog::Rejected);
|
||||
this->centerWidgetShow();
|
||||
}
|
||||
|
||||
void MainWindow::debugConsoleOn() {
|
||||
|
||||
debugMode = true;
|
||||
dockWidget = new QDockWidget(this);
|
||||
dockWidget->setObjectName(QString::fromUtf8("dockWidget"));
|
||||
dockWidget->setAllowedAreas(Qt::RightDockWidgetArea);
|
||||
this->addDockWidget(static_cast<Qt::DockWidgetArea>(2), dockWidget);
|
||||
|
||||
QTextEdit* text_edit = new QTextEdit(this);
|
||||
text_edit->setFocusPolicy(Qt::NoFocus);
|
||||
dockWidget->setWidget(text_edit);
|
||||
|
||||
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;}";
|
||||
text_edit->verticalScrollBar()->setStyleSheet(edit_style);
|
||||
//clear buffer before redirect;
|
||||
this->console = text_edit;
|
||||
}
|
||||
|
||||
void MainWindow::triggerError(const QString& msg) {
|
||||
QString s(msg);
|
||||
qDebug() << "invoke trigger error slot msg:" << msg;
|
||||
EventCenter::Default()->triggerEvent(GUIErrorRaise, nullptr, (QObject*)&s);
|
||||
}
|
||||
|
||||
void MainWindow::grabGestures(const QList<Qt::GestureType>& gestures)
|
||||
{
|
||||
//! [enable gestures]
|
||||
foreach(Qt::GestureType gesture, gestures)
|
||||
grabGesture(gesture);
|
||||
//! [enable gestures]
|
||||
}
|
||||
|
||||
//! [event handler]
|
||||
bool MainWindow::event(QEvent* event)
|
||||
{
|
||||
if (event->type() == QEvent::Gesture)
|
||||
return gestureEvent(static_cast<QGestureEvent*>(event));
|
||||
return QWidget::event(event);
|
||||
}
|
||||
|
||||
bool MainWindow::gestureEvent(QGestureEvent* event)
|
||||
{
|
||||
//qCDebug(lcExample) << "gestureEvent():" << event;
|
||||
if (QGesture* swipe = event->gesture(Qt::SwipeGesture))
|
||||
swipeTriggered(static_cast<QSwipeGesture*>(swipe));
|
||||
if (QGesture* pan = event->gesture(Qt::PanGesture))
|
||||
panTriggered(static_cast<QPanGesture*>(pan));
|
||||
//if (QGesture* pinch = event->gesture(Qt::PinchGesture))
|
||||
//pinchTriggered(static_cast<QPinchGesture*>(pinch));
|
||||
return true;
|
||||
}
|
||||
|
||||
void MainWindow::panTriggered(QPanGesture* gesture)
|
||||
{
|
||||
|
||||
if (gesture->state() == Qt::GestureFinished) {
|
||||
QPointF delta = gesture->offset();
|
||||
int index = tab->currentIndex();
|
||||
if (delta.x() > 50) {
|
||||
|
||||
index--;
|
||||
if (index >= 0) {
|
||||
tab->setCurrentIndex(index);
|
||||
}
|
||||
}
|
||||
if (delta.x() < -50)
|
||||
{
|
||||
index++;
|
||||
if (index < tab->count()) {
|
||||
tab->setCurrentIndex(index);
|
||||
}
|
||||
}
|
||||
qDebug() << "panTriggered" << index;
|
||||
}
|
||||
}
|
||||
void MainWindow::swipeTriggered(QSwipeGesture* gesture)
|
||||
{
|
||||
|
||||
if (gesture->state() == Qt::GestureFinished) {
|
||||
//if (gesture->horizontalDirection() == QSwipeGesture::Right) {
|
||||
// int index = tab->currentIndex();
|
||||
// index--;
|
||||
// if (index >= 0) {
|
||||
// tab->setCurrentIndex(index);
|
||||
// }
|
||||
|
||||
//}
|
||||
//if (gesture->horizontalDirection() == QSwipeGesture::Left) {
|
||||
// int index = tab->currentIndex();
|
||||
// index++;
|
||||
// if (index < tab->count()) {
|
||||
// tab->setCurrentIndex(index);
|
||||
// }
|
||||
//}
|
||||
if (gesture->verticalDirection() == QSwipeGesture::Down) {
|
||||
if (debugMode)
|
||||
{
|
||||
dockWidget->show();
|
||||
}
|
||||
}
|
||||
if (gesture->verticalDirection() == QSwipeGesture::Up) {
|
||||
if (debugMode)
|
||||
{
|
||||
dockWidget->hide();
|
||||
}
|
||||
}
|
||||
//update();
|
||||
}
|
||||
}
|
||||
@@ -1,62 +0,0 @@
|
||||
#ifndef MAINWINDOW_H
|
||||
#define MAINWINDOW_H
|
||||
|
||||
#include <QMainWindow>
|
||||
#include <QDebug>
|
||||
#include <QTimer>
|
||||
#include "src/utilities/StdOutRedirector.h"
|
||||
#include "json/cJSON.h"
|
||||
#include "loginwindow.h"
|
||||
|
||||
namespace Ui {
|
||||
class MainWindow;
|
||||
}
|
||||
class GUIMessageDialog;
|
||||
class QTabWidget;
|
||||
class QGestureEvent;
|
||||
class QSwipeGesture;
|
||||
class QPanGesture;
|
||||
class QDockWidget;
|
||||
|
||||
class MainWindow : public QMainWindow
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit MainWindow(QWidget* parent = nullptr);
|
||||
~MainWindow();
|
||||
static void QMessageOutput(QtMsgType, const QMessageLogContext&, const QString& msg);
|
||||
void centerWidgetHide();
|
||||
void centerWidgetShow();
|
||||
void requestLogin();
|
||||
QTextEdit* getEdit();
|
||||
void debugConsoleOn();
|
||||
|
||||
void grabGestures(const QList<Qt::GestureType>& gestures);
|
||||
public slots:
|
||||
void triggerError(const QString&);
|
||||
protected:
|
||||
void changeEvent(QEvent* event);
|
||||
bool event(QEvent* event) override;
|
||||
|
||||
private:
|
||||
bool gestureEvent(QGestureEvent* event);
|
||||
void swipeTriggered(QSwipeGesture*);
|
||||
void panTriggered(QPanGesture*);
|
||||
void loadStyleSheet(const QString& sheetName);
|
||||
cJSON* json_root = nullptr;
|
||||
|
||||
Ui::MainWindow* ui;
|
||||
QDockWidget* dockWidget;
|
||||
GUIMessageDialog* msgDialog = nullptr;
|
||||
StdOutRedirector* redir = nullptr;
|
||||
QTextEdit* console = nullptr;
|
||||
bool m_bLoaded = false;
|
||||
QTabWidget* tab = nullptr;
|
||||
int admin_tab_index = -1;
|
||||
LoginWindow* l;
|
||||
QThread* t;
|
||||
bool debugMode = false;
|
||||
};
|
||||
|
||||
#endif // MAINWINDOW_H
|
||||
@@ -1,21 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>MainWindow</class>
|
||||
<widget class="QMainWindow" name="MainWindow">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>400</width>
|
||||
<height>300</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>MainWindow</string>
|
||||
</property>
|
||||
<widget class="QWidget" name="centralWidget"/>
|
||||
</widget>
|
||||
<layoutdefault spacing="6" margin="11"/>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
||||
Reference in New Issue
Block a user