Add InitializeWidget before login.

This commit is contained in:
sunwen
2023-08-31 14:26:54 +08:00
parent 20b4d1ce36
commit 28e33da16d
11 changed files with 223 additions and 33 deletions

View File

@@ -0,0 +1,30 @@
#include "InitializeWidget.h"
#include <QLabel>
#include <QVBoxLayout>
#include <QProgressBar>
InitializeWidget::InitializeWidget(QWidget* aParent)
: QWidget(aParent)
, mMessage(new QLabel(this))
, mProgressBar(new QProgressBar(this))
{
setContentsMargins(0, 0, 0, 0);
setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
QVBoxLayout* layout = new QVBoxLayout(this);
layout->addWidget(mMessage);
layout->addWidget(mProgressBar);
QPixmap pixmap = QPixmap("./cfgs/initialize.jpg");
mMessage->setPixmap(pixmap);
mMessage->setScaledContents(true);
mProgressBar->setTextVisible(true);
mProgressBar->setFormat("Initializing %p%");
mProgressBar->setAlignment(Qt::AlignCenter);
}
void InitializeWidget::setMessage(const QString& aMessage)
{
mProgressBar->setValue(aMessage.toInt());
}

View File

@@ -0,0 +1,24 @@
#ifndef INITIALIZEWIDGET_H
#define INITIALIZEWIDGET_H
#include <QWidget>
class QLabel;
class QProgressBar;
class InitializeWidget : public QWidget
{
Q_OBJECT
public:
InitializeWidget(QWidget* aParent);
public slots:
void setMessage(const QString& aMessage);
private:
QLabel* mMessage;
QProgressBar* mProgressBar;
};
#endif // INITIALIZEWIDGET_H

View File

@@ -152,4 +152,11 @@ bool LoginDialog::isRunning()
return mIsRunning;
}
void LoginDialog::showEvent(QShowEvent* event)
{
QDialog::showEvent(event);
emit loginDialogShown();
}

View File

@@ -24,8 +24,12 @@ public:
int exec() override;
bool isRunning();
protected:
void showEvent(QShowEvent *event) override;
signals:
void sigUserLoginSuccessful(const QString& aUserCode);
void loginDialogShown();
private slots:
void doLogin();

View File

@@ -8,6 +8,7 @@
#include <QGestureEvent>
#include <QDockWidget>
#include "InitializeWidget.h"
#include "event/EventCenter.h"
#include "forms/TabFormWidget.h"
#include "forms/recon/ReconFormWidget.h"
@@ -29,6 +30,7 @@ MainWindow::MainWindow(QWidget* aParent)
, mDebugConsoleWidget(nullptr)
, mDebugMessageConsole(nullptr)
, mTabWidget(new QTabWidget(this))
, mInitializWidget(new InitializeWidget(this))
, mAdminTabIndex(-1)
, mThread(nullptr)
, mIsDebugMode(false)
@@ -46,25 +48,14 @@ MainWindow::MainWindow(QWidget* aParent)
connect(DeviceManager::Default(), &DeviceManager::raiseGlobalInfo, this, &MainWindow::triggerInfo);
connect(EventCenter::Default(), &EventCenter::ReloadLanguage, this, &MainWindow::reloadLanguage);
connect(EventCenter::Default(), &EventCenter::RequestScreenSaver, this, &MainWindow::requestScreenSaver);
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);
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);
}
connect(DeviceManager::Default(), &DeviceManager::initializeFinished, this, &MainWindow::requestLogin);
connect(DeviceManager::Default(), &DeviceManager::initializeProgress, mInitializWidget, &InitializeWidget::setMessage);
connect(DialogManager::Default(), &DialogManager::loginDialogShown, this, [this]()
{
mInitializWidget->setVisible(false);
mTabWidget->setVisible(true);
});
mThread->start();
GUIErrorHandle::Default()->init();
QApplication::setActiveWindow(centralWidget());
}
@@ -97,6 +88,9 @@ void MainWindow::initializeLayout()
QWidget* topBarWidget = new TopBarWidget(this);
layout->addWidget(topBarWidget);
layout->addWidget(mTabWidget);
layout->addWidget(mInitializWidget);
mTabWidget->setVisible(false);
}
void MainWindow::initializeTabWidget()

View File

@@ -18,6 +18,7 @@ class QGestureEvent;
class QSwipeGesture;
class QPanGesture;
class QDockWidget;
class InitializeWidget;
class MainWindow : public QMainWindow
{
@@ -29,13 +30,13 @@ public:
static void QMessageOutput(QtMsgType aType, const QMessageLogContext& aContext, const QString& aMessage);
void centerWidgetHide();
void centerWidgetShow();
void requestLogin();
void requestScreenSaver();
QTextEdit* getEdit();
void debugConsoleOn();
void grabGestures(const QList<Qt::GestureType>& aGestures);
public slots:
void requestLogin();
void triggerError(const QString&);
void triggerInfo(const QPair<QString,unsigned int>&);
@@ -58,6 +59,7 @@ private:
QDockWidget* mDebugConsoleWidget;
QTextEdit* mDebugMessageConsole;
QTabWidget* mTabWidget;
InitializeWidget* mInitializWidget;
int mAdminTabIndex;
QThread* mThread;
bool mIsDebugMode;