Add the option to background the oracle wizard, add an option to automatically launch oracle wizard in background every X days since last launch.

This commit is contained in:
Lukas Brübach 2025-06-24 21:23:27 +02:00
parent 208f8349a6
commit deb60b1bc2
11 changed files with 190 additions and 20 deletions

View file

@ -691,6 +691,7 @@ void MainWindow::retranslateUi()
aTips->setText(tr("&Tip of the Day"));
aUpdate->setText(tr("Check for Client Updates"));
aCheckCardUpdates->setText(tr("Check for Card Updates..."));
aCheckCardUpdatesBackground->setText(tr("Check for Card Updates (Automatic)"));
aStatusBar->setText(tr("Show Status Bar"));
aViewLog->setText(tr("View &Debug Log"));
aOpenSettingsFolder->setText(tr("Open Settings Folder"));
@ -744,6 +745,8 @@ void MainWindow::createActions()
connect(aUpdate, &QAction::triggered, this, &MainWindow::actUpdate);
aCheckCardUpdates = new QAction(this);
connect(aCheckCardUpdates, &QAction::triggered, this, &MainWindow::actCheckCardUpdates);
aCheckCardUpdatesBackground = new QAction(this);
connect(aCheckCardUpdatesBackground, &QAction::triggered, this, &MainWindow::actCheckCardUpdatesBackground);
aStatusBar = new QAction(this);
aStatusBar->setCheckable(true);
aStatusBar->setChecked(SettingsCache::instance().getShowStatusBar());
@ -825,6 +828,7 @@ void MainWindow::createMenus()
helpMenu->addSeparator();
helpMenu->addAction(aUpdate);
helpMenu->addAction(aCheckCardUpdates);
helpMenu->addAction(aCheckCardUpdatesBackground);
helpMenu->addSeparator();
helpMenu->addAction(aStatusBar);
helpMenu->addAction(aViewLog);
@ -943,6 +947,11 @@ void MainWindow::startupConfigCheck()
} else {
// previous config from this version found
qCInfo(WindowMainStartupVersionLog) << "Startup: found config with current version";
if (SettingsCache::instance().getCardUpdateCheckRequired()) {
actCheckCardUpdatesBackground();
}
const auto reloadOk1 = QtConcurrent::run([] { CardDatabaseManager::getInstance()->loadCardDatabases(); });
// Run the tips dialog only on subsequent startups.
@ -1151,6 +1160,16 @@ void MainWindow::cardDatabaseAllNewSetsEnabled()
/* CARD UPDATER */
void MainWindow::actCheckCardUpdates()
{
createCardUpdateProcess();
}
void MainWindow::actCheckCardUpdatesBackground()
{
createCardUpdateProcess(true);
}
void MainWindow::createCardUpdateProcess(bool background)
{
if (cardUpdateProcess) {
QMessageBox::information(this, tr("Information"), tr("A card database update is already running."));
@ -1213,13 +1232,19 @@ void MainWindow::actCheckCardUpdates()
return;
}
cardUpdateProcess->start(updaterCmd, QStringList());
if (!background) {
cardUpdateProcess->start(updaterCmd, QStringList());
} else {
cardUpdateProcess->start(updaterCmd, QStringList("-b"));
statusBar()->showMessage(tr("Card database update running."));
}
}
void MainWindow::exitCardDatabaseUpdate()
{
cardUpdateProcess->deleteLater();
cardUpdateProcess = nullptr;
statusBar()->clearMessage();
const auto reloadOk1 = QtConcurrent::run([] { CardDatabaseManager::getInstance()->loadCardDatabases(); });
}
@ -1256,8 +1281,11 @@ void MainWindow::cardUpdateError(QProcess::ProcessError err)
QMessageBox::warning(this, tr("Error"), tr("The card database updater exited with an error:\n%1").arg(error));
}
void MainWindow::cardUpdateFinished(int, QProcess::ExitStatus)
void MainWindow::cardUpdateFinished(int, QProcess::ExitStatus exitStatus)
{
if (exitStatus == QProcess::NormalExit) {
SettingsCache::instance().setLastCardUpdateCheck(QDateTime::currentDateTime().date());
}
exitCardDatabaseUpdate();
}