From 04a5078133287f85176fa2b69db694060f329255 Mon Sep 17 00:00:00 2001 From: DanS Date: Tue, 14 Jul 2026 16:20:02 -0500 Subject: [PATCH] feat(receive): migrate QR + Request-payment modals to the reference design Bring the two Receive-tab modals onto the settings-modal reference language (presentation-only): - struct-form BeginOverlayDialog(OverlayDialogSpec{BlurFloat, cardWidth, idSuffix}) replacing the legacy positional overload (idSuffix qrpopup / requestpay) - StyledButton -> TactileButton (2 + 3 sites) - drop Request-payment's description divider No logic touched: the QR texture lifecycle, payment-URI builder, address combo, and clipboard/notification calls are unchanged. The "DRGX" ticker stays hardcoded per the existing codebase convention (7 sites, no currency TR key). Co-Authored-By: Claude Opus 4.8 (1M context) --- src/ui/windows/qr_popup_dialog.cpp | 10 +++++++--- src/ui/windows/request_payment_dialog.cpp | 18 ++++++++++-------- 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/src/ui/windows/qr_popup_dialog.cpp b/src/ui/windows/qr_popup_dialog.cpp index 1b61633..dd06f74 100644 --- a/src/ui/windows/qr_popup_dialog.cpp +++ b/src/ui/windows/qr_popup_dialog.cpp @@ -67,7 +67,11 @@ void QRPopupDialog::render(App* app) // Match the key-export modal: 85% of the window width (divide out the dpiScale that // BeginOverlayDialog re-applies, so the final card is exactly 85% at any font scale). const float cardW = (0.85f * ImGui::GetMainViewport()->Size.x) / Layout::dpiScale(); - if (material::BeginOverlayDialog(TR("qr_title"), &s_open, cardW, 0.94f)) { + material::OverlayDialogSpec ov; + ov.title = TR("qr_title"); ov.p_open = &s_open; + ov.style = material::OverlayStyle::BlurFloat; + ov.cardWidth = cardW; ov.idSuffix = "qrpopup"; + if (material::BeginOverlayDialog(ov)) { // Label if present if (!s_label.empty()) { @@ -120,11 +124,11 @@ void QRPopupDialog::render(App* app) const float total_width = w_copy + w_close + ImGui::GetStyle().ItemSpacing.x; ImGui::SetCursorPosX((window_width - total_width) / 2.0f); - if (material::StyledButton(TR("copy_address"), ImVec2(w_copy, 0), btnFont)) { + if (material::TactileButton(TR("copy_address"), ImVec2(w_copy, 0), btnFont)) { ImGui::SetClipboardText(s_address.c_str()); } ImGui::SameLine(); - if (material::StyledButton(TR("close"), ImVec2(w_close, 0), btnFont)) { + if (material::TactileButton(TR("close"), ImVec2(w_close, 0), btnFont)) { close(); } material::EndOverlayDialog(); diff --git a/src/ui/windows/request_payment_dialog.cpp b/src/ui/windows/request_payment_dialog.cpp index 3b82cd9..59d4859 100644 --- a/src/ui/windows/request_payment_dialog.cpp +++ b/src/ui/windows/request_payment_dialog.cpp @@ -76,13 +76,15 @@ void RequestPaymentDialog::render(App* app) auto qr = S.drawElement("dialogs.request-payment", "qr-code"); auto actionBtn = S.button("dialogs.request-payment", "action-button"); - if (material::BeginOverlayDialog(TR("request_title"), &s_open, win.width, 0.94f)) { + material::OverlayDialogSpec ov; + ov.title = TR("request_title"); ov.p_open = &s_open; + ov.style = material::OverlayStyle::BlurFloat; + ov.cardWidth = win.width; ov.idSuffix = "requestpay"; + if (material::BeginOverlayDialog(ov)) { const auto& state = app->getWalletState(); - + ImGui::TextWrapped("%s", TR("request_description")); - - ImGui::Spacing(); - ImGui::Separator(); + ImGui::Spacing(); // Address selection @@ -196,14 +198,14 @@ void RequestPaymentDialog::render(App* app) ImGui::Spacing(); // Copy button - if (material::StyledButton(TR("request_copy_uri"), ImVec2(actionBtn.width, 0), S.resolveFont(actionBtn.font))) { + if (material::TactileButton(TR("request_copy_uri"), ImVec2(actionBtn.width, 0), S.resolveFont(actionBtn.font))) { ImGui::SetClipboardText(s_payment_uri.c_str()); Notifications::instance().success(TR("request_uri_copied")); } ImGui::SameLine(); - if (material::StyledButton(TR("copy_address"), ImVec2(actionBtn.width, 0), S.resolveFont(actionBtn.font))) { + if (material::TactileButton(TR("copy_address"), ImVec2(actionBtn.width, 0), S.resolveFont(actionBtn.font))) { ImGui::SetClipboardText(s_address); Notifications::instance().success(TR("address_copied")); } @@ -212,7 +214,7 @@ void RequestPaymentDialog::render(App* app) ImGui::Spacing(); // Close button - if (material::StyledButton(TR("close"), ImVec2(actionBtn.width, 0), S.resolveFont(actionBtn.font))) { + if (material::TactileButton(TR("close"), ImVec2(actionBtn.width, 0), S.resolveFont(actionBtn.font))) { s_open = false; } material::EndOverlayDialog();