Skip to content

Migrate PropDashboardDialog to PersistentDialog (#2767). Principle III.#2775

Merged
ten9876 merged 2 commits into
mainfrom
aetherclaude/issue-2767
May 17, 2026
Merged

Migrate PropDashboardDialog to PersistentDialog (#2767). Principle III.#2775
ten9876 merged 2 commits into
mainfrom
aetherclaude/issue-2767

Conversation

@aethersdr-agent

Copy link
Copy Markdown
Contributor

Summary

Fixes #2767

What was changed

Migrate PropDashboardDialog to PersistentDialog (#2767). Principle III.

Files modified

  • src/gui/MainWindow.cpp
  • src/gui/MainWindow.h
  • src/gui/PropDashboardDialog.cpp
  • src/gui/PropDashboardDialog.h
 src/gui/MainWindow.cpp          | 14 +------------
 src/gui/MainWindow.h            |  3 ++-
 src/gui/PropDashboardDialog.cpp | 46 ++++-------------------------------------
 src/gui/PropDashboardDialog.h   |  9 +++-----
 4 files changed, 10 insertions(+), 62 deletions(-)

Generated by AetherClaude (automated agent for AetherSDR)

Mechanical migration matching PR #2742's recipe (1/3 of the umbrella
PersistentDialog work tracked in #2679):

- PropDashboardDialog.h now inherits from PersistentDialog; drops the
  manual m_titleBar/m_bodyLayout members and the setFramelessMode decl
  (provided by the base class).
- Constructor delegates to PersistentDialog("HF Propagation Dashboard",
  "PropDashboardDialogGeometry", parent) and installs content into
  bodyWidget() instead of a hand-rolled body widget.
- Drops the standalone setFramelessMode() impl and the inline
  FramelessResizer::install(this) bootstrap.
- MainWindow::showPropDashboard() collapses to a single
  showOrRaisePersistent(m_propDashboardDialog, m_propForecast) call.
- Removed the qobject_cast<PropDashboardDialog*> branch from
  setFramelessWindow(): the m_persistentDialogs registry already
  auto-propagates frameless toggles to every PersistentDialog-derived
  child.
- Retyped m_propDashboardDialog from QPointer<QDialog> to
  QPointer<PropDashboardDialog>.

The user-facing window title is preserved verbatim ("HF Propagation
Dashboard") — Principle III: on-screen labels are inviolable for the
user, so the abbreviation in the recipe was not adopted. closeEvent
recipe step is a no-op for this dialog (no override exists; base class
handles geometry-flush on close).

Geometry persists under AppSettings key PropDashboardDialogGeometry.
No behavior change to refresh logic, charts, panels, or the
NetworkAccessManager fetch path.

Blast radius: risk_score=0.163, 2 high-risk affected (top: MainWindow::MainWindow, MainWindow::buildMenuBar). Both are reached through the usual MainWindow include of PropDashboardDialog.h; all PropDashboardDialog references in src/ are accounted for and updated.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

@aethersdr-agent aethersdr-agent Bot left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good — clean migration that mirrors the established PersistentDialog pattern.

Verified:

  • Constructor correctly passes title + geometry key ("PropDashboardDialogGeometry") to the base, and the subclass installs its root QVBoxLayout on bodyWidget() per the contract documented in PersistentDialog.h:30-38.
  • setMinimumSize() / resize() are called in the ctor before any geometry restore — safe, because PersistentDialog::showEvent (PersistentDialog.cpp:75-89) defers restore to first show specifically for this reason.
  • Removing the explicit qobject_cast<PropDashboardDialog*>(m_propDashboardDialog)->setFramelessMode(on) branch in MainWindow::setFramelessWindow is correct: showOrRaisePersistent (MainWindow.h:727) registers the dialog in m_persistentDialogs, and the existing loop at MainWindow.cpp:11650 already propagates frameless mode to every entry.
  • QPointer<QDialog>QPointer<PropDashboardDialog> is a strict refinement; no callers stored a QDialog* reference.
  • Local m_titleBar / m_bodyLayout members and setFramelessMode override are fully removed with no remaining references (verified via grep — the only matches were within the deleted ctor/method bodies).

Side benefit: this dialog now gets geometry persistence across sessions, which it didn't have before.

Thanks for the contribution!

@ten9876 ten9876 merged commit eddb44a into main May 17, 2026
4 checks passed
@ten9876 ten9876 deleted the aetherclaude/issue-2767 branch May 17, 2026 01:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Migrate PropDashboardDialog to PersistentDialog (#2679 follow-up 1/3)

1 participant