aboutsummaryrefslogtreecommitdiffstats
path: root/src/mainwindow.cpp
diff options
context:
space:
mode:
authorDanilo M. <danix@danix.xyz>2026-08-03 09:28:33 +0200
committerDanilo M. <danix@danix.xyz>2026-08-04 12:52:50 +0200
commit612fa37a08325bdd4876a6fa71b93d8362515e28 (patch)
tree2599d137cd2534fb7fa3272cd55ad9e1f92a3c12 /src/mainwindow.cpp
parentd358e3ea59cfad6a7c93f80290bab0e19bde7bbb (diff)
downloadqtmaildir-612fa37a08325bdd4876a6fa71b93d8362515e28.tar.gz
qtmaildir-612fa37a08325bdd4876a6fa71b93d8362515e28.zip
fix: only interrupt startup for real configuration problems
Found while walking the task 13 checklist against real mail. Item 1 ("startup shows no configuration warnings with a valid config") failed: with a perfectly valid config that simply had no [sync] command, every launch opened a blocking modal that had to be dismissed before the window could be used. Config now separates the two cases. A problem is something configured but wrong (a sync command that does not exist, an account with no maildir); those still open a dialog, as does every KeyMap warning, since each one means a binding the user wrote is being ignored. A notice is an optional feature simply not being configured; it reports to the status bar only. Nothing is broken in that case, and a modal on every launch teaches the user to dismiss dialogs unread, which defeats the ones that matter. problems() is a subset of warnings(), so callers wanting everything need only the latter. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Diffstat (limited to 'src/mainwindow.cpp')
-rw-r--r--src/mainwindow.cpp18
1 files changed, 14 insertions, 4 deletions
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
index ed16010..d6eccf9 100644
--- a/src/mainwindow.cpp
+++ b/src/mainwindow.cpp
@@ -274,15 +274,25 @@ void MainWindow::wireWorker()
void MainWindow::showWarnings()
{
- QStringList warnings = m_config.warnings() + m_keyMap.warnings();
+ const QStringList warnings = m_config.warnings() + m_keyMap.warnings();
if (warnings.isEmpty())
return;
// Non-fatal: the app runs degraded rather than refusing to start.
m_statusLabel->setText(
- tr("%1 configuration warning(s); see Help").arg(warnings.size()));
- QMessageBox::warning(this, tr("Configuration warnings"),
- warnings.join(QLatin1Char('\n')));
+ tr("%n configuration warning(s)", "", warnings.size()));
+
+ // Interrupt startup only for things that are actually wrong. Every KeyMap
+ // warning qualifies (each one means a binding the user wrote is being
+ // ignored), but a Config notice such as "no sync command configured" does
+ // not: nothing is broken, the feature is simply off, and a modal on every
+ // launch teaches the user to dismiss dialogs unread.
+ const QStringList problems = m_config.problems() + m_keyMap.warnings();
+ if (problems.isEmpty())
+ return;
+
+ QMessageBox::warning(this, tr("Configuration problems"),
+ problems.join(QLatin1Char('\n')));
}
void MainWindow::runCurrentQuery()