From 29fea313ad8f2a5df256186acfb1590c79f176b4 Mon Sep 17 00:00:00 2001 From: sunwen Date: Mon, 6 May 2024 16:51:15 +0800 Subject: [PATCH] Refactory lock screen and screen saver. --- src/dialogs/DialogManager.cpp | 10 ------ src/dialogs/DialogManager.h | 1 - src/main.cpp | 1 - src/screensaver/ScreenSaverWindow.cpp | 16 +--------- src/screensaver/ScreenSaverWindow.h | 3 +- src/utilities/GetLockScreenTimeHelper.cpp | 2 ++ src/utilities/Locker.cpp | 37 ++++++++++------------- src/utilities/Locker.h | 3 +- 8 files changed, 21 insertions(+), 52 deletions(-) diff --git a/src/dialogs/DialogManager.cpp b/src/dialogs/DialogManager.cpp index edd3d03..eb23945 100644 --- a/src/dialogs/DialogManager.cpp +++ b/src/dialogs/DialogManager.cpp @@ -121,11 +121,6 @@ void DialogManager::requestScreenSaverPlay() mScreenSaverWindow->play(); } -void DialogManager::requestScreenSaverStop(bool aIsStopLocker) -{ - mScreenSaverWindow->stop(aIsStopLocker); -} - DialogResult DialogManager::requestResetAdminPwd() { AdminSPwdDialog dialog(mTopWidget); @@ -487,15 +482,10 @@ void DialogManager::raiseDeviceError(QObject *parent, QObject *msg) { dialog->showExitButton(); setTopWidget(dialog); dialog->setWindowModality(Qt::WindowModal); - mScreenSaverWindow->stop(true); dialog->showFullScreen (); dialog->exec(); releaseTopWidget(dialog); dialog->deleteLater(); - if (nullptr != mTopWidget && !mTopWidget->inherits("GUIMessageDialog")) - { - mScreenSaverWindow->startLocker(); - } } // 扫描过程 dialog 只能为最底层,并且会被error dialog 清除! diff --git a/src/dialogs/DialogManager.h b/src/dialogs/DialogManager.h index 4a1666f..114dcc7 100644 --- a/src/dialogs/DialogManager.h +++ b/src/dialogs/DialogManager.h @@ -44,7 +44,6 @@ public: void init(QWidget* aParent); void requestLogin(QWidget* aParent); void requestScreenSaverPlay(); - void requestScreenSaverStop(bool aIsStopLocker = false); DialogResult requestResetAdminPwd(); int requestAddAccount(QSqlTableModel* model); int requestEditSelfAccount(); diff --git a/src/main.cpp b/src/main.cpp index 7c1ccda..fed6156 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -94,7 +94,6 @@ int main(int argc, char* argv[]) DialogManager::Default()->init(&w); UserOperationLog::Default()->init(); - Locker::getInstance()->start(); QObject::connect(TouchScreenSignalSender::getInstance(), SIGNAL(touchScreen()), Locker::getInstance(), SLOT(refreshTimer())); QList gestures; gestures << Qt::SwipeGesture; diff --git a/src/screensaver/ScreenSaverWindow.cpp b/src/screensaver/ScreenSaverWindow.cpp index 52a7ac7..f894110 100644 --- a/src/screensaver/ScreenSaverWindow.cpp +++ b/src/screensaver/ScreenSaverWindow.cpp @@ -72,7 +72,6 @@ void ScreenSaverWindow::initializeMultimediaList() void ScreenSaverWindow::mousePressEvent(QMouseEvent* aEvent) { stop(); - EventCenter::Default()->triggerEvent(GUIEvents::RequestLogin, nullptr, nullptr); QWidget::mousePressEvent(aEvent); } @@ -111,16 +110,8 @@ void ScreenSaverWindow::playMultimedia() mCurrentPlayIndex++; } -void ScreenSaverWindow::stop(bool aIsStopLocker) +void ScreenSaverWindow::stop() { - if (aIsStopLocker) - { - Locker::getInstance()->setIsEnable(false); - } - else - { - Locker::getInstance()->start(); - } if (!mIsPlaying) { return; @@ -141,8 +132,3 @@ void ScreenSaverWindow::handleVideoStatusChanged(QMediaPlayer::MediaStatus aStat playMultimedia(); } } - -void ScreenSaverWindow::startLocker() -{ - Locker::getInstance()->setIsEnable(true); -} diff --git a/src/screensaver/ScreenSaverWindow.h b/src/screensaver/ScreenSaverWindow.h index 842c9b5..0956737 100644 --- a/src/screensaver/ScreenSaverWindow.h +++ b/src/screensaver/ScreenSaverWindow.h @@ -30,8 +30,7 @@ class ScreenSaverWindow : public QWidget public: explicit ScreenSaverWindow(QWidget *aParent = nullptr); void play(); - void stop(bool aIsStopLocker = false); - void startLocker(); + void stop(); protected: void mousePressEvent(QMouseEvent* aEvent); diff --git a/src/utilities/GetLockScreenTimeHelper.cpp b/src/utilities/GetLockScreenTimeHelper.cpp index 6f24c7c..e77c29e 100644 --- a/src/utilities/GetLockScreenTimeHelper.cpp +++ b/src/utilities/GetLockScreenTimeHelper.cpp @@ -1,4 +1,5 @@ #include "GetLockScreenTimeHelper.h" +#include "Locker.h" #include "json/jsonobject.h" @@ -28,6 +29,7 @@ QString GetLockScreenTimeHelper::getLockScreenTimeStr() void GetLockScreenTimeHelper::setLockScreenTime(const QString& aTime) { int time = aTime.section(" ", 0, 0).toInt(); + Locker::getInstance()->setTimer(time * 1000 * 60); JsonObject::Instance()->setLockScreenTime(time); } diff --git a/src/utilities/Locker.cpp b/src/utilities/Locker.cpp index 7c9795e..e4649cf 100644 --- a/src/utilities/Locker.cpp +++ b/src/utilities/Locker.cpp @@ -15,14 +15,11 @@ Locker* Locker::getInstance() Locker::Locker() : QObject() , mScreenTimer(new QTimer(this)) - , mCounter(GetLockScreenTimeHelper::getLockScreenTime() * 1000) + , mCounter(GetLockScreenTimeHelper::getLockScreenTime() * 1000 * 60) , mIsEnable(false) { - if(mCounter > 0) - { - setIsEnable(true); - } mScreenTimer->setSingleShot(true); + connect(EventCenter::Default(), &EventCenter::LoginSuccess, this, &Locker::start); connect(mScreenTimer, SIGNAL(timeout()), this, SLOT(coverScreen())); } @@ -32,26 +29,14 @@ Locker::~Locker() void Locker::start() { - if (mIsEnable && mCounter > 0) + if (mCounter > 0) { + mIsEnable = true; mScreenTimer->stop(); mScreenTimer->start(mCounter); } } -void Locker::setIsEnable(bool aIsEnable) -{ - mIsEnable = aIsEnable; - if (!mIsEnable) - { - stop(); - } - else - { - start(); - } -} - void Locker::coverScreen() { if (AppGlobalValues::InProcessing().toBool()) @@ -60,13 +45,22 @@ void Locker::coverScreen() } else { - mScreenTimer->stop(); - EventCenter::Default()->triggerEvent(GUIEvents::RequestScreenSaver, nullptr, nullptr); + stop(); + EventCenter::Default()->triggerEvent(GUIEvents::RequestLogin, nullptr, nullptr); + if(JsonObject::Instance()->getScreenSaverMode()) + { + EventCenter::Default()->triggerEvent(GUIEvents::RequestScreenSaver, nullptr, nullptr); + } } } void Locker::setTimer(int aInterval) { mCounter = aInterval; + mScreenTimer->stop(); + if (mCounter > 0) + { + mScreenTimer->start(mCounter); + } } void Locker::refreshTimer() { @@ -79,5 +73,6 @@ void Locker::refreshTimer() void Locker::stop() { + mIsEnable = false; mScreenTimer->stop(); } diff --git a/src/utilities/Locker.h b/src/utilities/Locker.h index 16c9635..6401580 100644 --- a/src/utilities/Locker.h +++ b/src/utilities/Locker.h @@ -9,12 +9,11 @@ class Locker : public QObject Q_OBJECT public: static Locker* getInstance(); - void start(); void stop(); void setTimer(int aInterval); - void setIsEnable(bool aIsEnable); public slots: + void start(); void refreshTimer(); void coverScreen(); private: