feat: modernize address list with drag-transfer, labels, and UX polish

- Rewrite RenderSharedAddressList with two-pass layout architecture
- Add drag-to-transfer: drag address onto another to open transfer dialog
- Add AddressLabelDialog with custom label text and 20-icon picker
- Add AddressTransferDialog with amount input, fee, and balance preview
- Add AddressMeta persistence (label, icon, sortOrder) in settings.json
- Gold favorite border inset 2dp from container edge
- Show hide button on all addresses, not just zero-balance
- Smaller star/hide buttons to clear favorite border
- Semi-transparent dragged row with context-aware tooltip
- Copy-to-clipboard deferred to mouse-up (no copy on drag)
- Themed colors via resolveColor() with CSS variable fallbacks
- Keyboard nav (Up/Down/J/K, Enter to copy, F2 to edit label)
- Add i18n keys for all new UI strings
This commit is contained in:
dan_s
2026-04-12 17:29:56 -05:00
parent 79d8f0d809
commit 9f23b2781c
10 changed files with 1026 additions and 174 deletions

View File

@@ -401,6 +401,32 @@ void I18n::loadBuiltinEnglish()
strings_["remove_favorite"] = "Remove Favorite";
strings_["favorite_address"] = "Favorite Address";
strings_["show_hidden"] = "Show Hidden (%d)";
strings_["filter"] = "Filter...";
strings_["no_addresses_yet"] = "No addresses yet";
strings_["showing_x_of_y"] = "Showing %d of %d addresses";
strings_["set_label"] = "Set Label...";
strings_["copied"] = "Copied!";
strings_["hidden_tag"] = " (hidden)";
strings_["z_address"] = "Z-Address";
strings_["t_address"] = "T-Address";
strings_["shielded_address"] = "Shielded Address";
strings_["transparent_address"] = "Transparent Address";
strings_["label_placeholder"] = "e.g. Savings, Mining...";
strings_["choose_icon"] = "Choose Icon";
strings_["clear_icon"] = "Clear Icon";
strings_["transfer_funds"] = "Transfer Funds";
strings_["transfer_to"] = "Transfer to:";
strings_["deshielding_warning"] = "Warning: This will de-shield funds from a private (Z) address to a transparent (T) address.";
strings_["shielding_notice"] = "Note: This will shield funds from a transparent (T) address to a private (Z) address.";
strings_["result_preview"] = "Result Preview";
strings_["sender_balance"] = "Sender: %.8f \xe2\x86\x92 %.8f DRGX";
strings_["recipient_balance"] = "Recipient: %.8f \xe2\x86\x92 %.8f DRGX";
strings_["insufficient_funds"] = "Insufficient funds for this amount plus fee.";
strings_["sends_full_balance_warning"] = "This sends the full balance. The sending address will have a zero balance.";
strings_["confirm_transfer"] = "Confirm Transfer";
strings_["transfer_sent"] = "Transfer Sent";
strings_["transfer_sent_desc"] = "Your transfer has been submitted to the network.";
strings_["transfer_failed"] = "Transfer Failed";
// Misc dialog strings
strings_["shield_operation_id"] = "Operation ID: %s";