Improve inactivity timer

* Fix #11957
* Prevent resetting the timer hundreds of times per second
* Improve code flow for inactivity timer in general
This commit is contained in:
Jonathan White 2024-04-21 12:26:53 -04:00
parent f262c291ef
commit 8075a98f1b
No known key found for this signature in database
GPG key ID: 440FC65F2E0C6E01
4 changed files with 26 additions and 36 deletions

View file

@ -265,7 +265,7 @@ MainWindow::MainWindow()
m_ui->actionAllowScreenCapture->setVisible(osUtils->canPreventScreenCapture());
m_inactivityTimer = new InactivityTimer(this);
connect(m_inactivityTimer, SIGNAL(inactivityDetected()), this, SLOT(lockDatabasesAfterInactivity()));
connect(m_inactivityTimer, SIGNAL(inactivityDetected()), this, SLOT(lockAllDatabases()));
applySettingsChanges();
m_ui->actionDatabaseNew->setShortcut(Qt::CTRL + Qt::SHIFT + Qt::Key_N);
@ -1656,14 +1656,9 @@ void MainWindow::setShortcut(QAction* action, QKeySequence::StandardKey standard
void MainWindow::applySettingsChanges()
{
int timeout = config()->get(Config::Security_LockDatabaseIdleSeconds).toInt() * 1000;
if (timeout <= 0) {
timeout = 60;
}
m_inactivityTimer->setInactivityTimeout(timeout);
if (config()->get(Config::Security_LockDatabaseIdle).toBool()) {
m_inactivityTimer->activate();
auto timeout = config()->get(Config::Security_LockDatabaseIdleSeconds).toInt() * 1000;
m_inactivityTimer->activate(timeout);
} else {
m_inactivityTimer->deactivate();
}
@ -1833,13 +1828,6 @@ void MainWindow::closeModalWindow()
}
}
void MainWindow::lockDatabasesAfterInactivity()
{
if (!m_ui->tabWidget->lockDatabases()) {
m_inactivityTimer->activate();
}
}
bool MainWindow::isTrayIconEnabled() const
{
return m_trayIcon && m_trayIcon->isVisible();
@ -1894,7 +1882,7 @@ void MainWindow::bringToFront()
void MainWindow::handleScreenLock()
{
if (config()->get(Config::Security_LockDatabaseScreenLock).toBool()) {
lockDatabasesAfterInactivity();
lockAllDatabases();
}
}
@ -1944,7 +1932,7 @@ void MainWindow::closeAllDatabases()
void MainWindow::lockAllDatabases()
{
lockDatabasesAfterInactivity();
m_ui->tabWidget->lockDatabases();
}
void MainWindow::displayDesktopNotification(const QString& msg, QString title, int msTimeoutHint)