From b451cb18ecf60194e0bf075d2576fb1099d19af4 Mon Sep 17 00:00:00 2001 From: sunwen Date: Thu, 25 Aug 2022 14:53:43 +0800 Subject: [PATCH] Fix ScreenSaver problem. --- src/dialogs/DialogManager.cpp | 5 ++++- src/main.cpp | 1 + src/screensaver/ScreenSaverWindow.cpp | 4 ++-- src/utilities/Locker.cpp | 18 ++++++++++++++---- 4 files changed, 21 insertions(+), 7 deletions(-) diff --git a/src/dialogs/DialogManager.cpp b/src/dialogs/DialogManager.cpp index 9eda6dd..3e07008 100644 --- a/src/dialogs/DialogManager.cpp +++ b/src/dialogs/DialogManager.cpp @@ -330,7 +330,10 @@ void DialogManager::raiseDeviceError(QObject *parent, QObject *msg) { dialog->exec(); releaseTopWidget(dialog); dialog->deleteLater(); - mScreenSaverWindow->startLocker(); + if (nullptr != mTopWidget && !mTopWidget->inherits("GUIMessageDialog")) + { + mScreenSaverWindow->startLocker(); + } } // 扫描过程 dialog 只能为最底层,并且会被error dialog 清除! diff --git a/src/main.cpp b/src/main.cpp index 54e7558..14ece5b 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -46,6 +46,7 @@ int main(int argc, char* argv[]) UsctApplication a(argc, argv); + qRegisterMetaType>("QPair"); QString layouts_path = QString(QCoreApplication::applicationDirPath()).append("/layouts"); qputenv("QT_VIRTUALKEYBOARD_LAYOUT_PATH", QByteArray(layouts_path.toStdString().c_str())); diff --git a/src/screensaver/ScreenSaverWindow.cpp b/src/screensaver/ScreenSaverWindow.cpp index 036ae3f..d854ccb 100644 --- a/src/screensaver/ScreenSaverWindow.cpp +++ b/src/screensaver/ScreenSaverWindow.cpp @@ -113,7 +113,7 @@ void ScreenSaverWindow::stop(bool aIsStopLocker) { if (aIsStopLocker) { - Locker::getInstance()->stop(); + Locker::getInstance()->setIsEnable(false); } else { @@ -142,5 +142,5 @@ void ScreenSaverWindow::handleVideoStatusChanged(QMediaPlayer::MediaStatus aStat void ScreenSaverWindow::startLocker() { - Locker::getInstance()->start(); + Locker::getInstance()->setIsEnable(true); } diff --git a/src/utilities/Locker.cpp b/src/utilities/Locker.cpp index 993b0e8..33252a5 100644 --- a/src/utilities/Locker.cpp +++ b/src/utilities/Locker.cpp @@ -37,7 +37,11 @@ void Locker::setIsEnable(bool aIsEnable) mIsEnable = aIsEnable; if (!mIsEnable) { - mScreenTimer->stop(); + stop(); + } + else + { + start(); } } @@ -58,12 +62,18 @@ void Locker::setTimer(int aInterval) { mCounter = aInterval; mScreenTimer->stop(); - mScreenTimer->start(mCounter); + if (mIsEnable) + { + mScreenTimer->start(mCounter); + } } void Locker::refreshTimer() { - mScreenTimer->stop(); - mScreenTimer->start(mCounter); + if (mIsEnable) + { + mScreenTimer->stop(); + mScreenTimer->start(mCounter); + } } void Locker::stop()