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:
@@ -1640,6 +1640,61 @@ bool App::isAddressFavorite(const std::string& addr) const
|
||||
return settings_ && settings_->isAddressFavorite(addr);
|
||||
}
|
||||
|
||||
void App::setAddressLabel(const std::string& addr, const std::string& label)
|
||||
{
|
||||
if (settings_) {
|
||||
settings_->setAddressLabel(addr, label);
|
||||
settings_->save();
|
||||
}
|
||||
}
|
||||
|
||||
void App::setAddressIcon(const std::string& addr, const std::string& icon)
|
||||
{
|
||||
if (settings_) {
|
||||
settings_->setAddressIcon(addr, icon);
|
||||
settings_->save();
|
||||
}
|
||||
}
|
||||
|
||||
std::string App::getAddressLabel(const std::string& addr) const
|
||||
{
|
||||
if (!settings_) return "";
|
||||
return settings_->getAddressMeta(addr).label;
|
||||
}
|
||||
|
||||
std::string App::getAddressIcon(const std::string& addr) const
|
||||
{
|
||||
if (!settings_) return "";
|
||||
return settings_->getAddressMeta(addr).icon;
|
||||
}
|
||||
|
||||
int App::getAddressSortOrder(const std::string& addr) const
|
||||
{
|
||||
if (!settings_) return -1;
|
||||
return settings_->getAddressMeta(addr).sortOrder;
|
||||
}
|
||||
|
||||
void App::setAddressSortOrder(const std::string& addr, int order)
|
||||
{
|
||||
if (settings_) {
|
||||
settings_->setAddressSortOrder(addr, order);
|
||||
settings_->save();
|
||||
}
|
||||
}
|
||||
|
||||
int App::getNextSortOrder() const
|
||||
{
|
||||
return settings_ ? settings_->getNextSortOrder() : 0;
|
||||
}
|
||||
|
||||
void App::swapAddressOrder(const std::string& a, const std::string& b)
|
||||
{
|
||||
if (settings_) {
|
||||
settings_->swapAddressOrder(a, b);
|
||||
settings_->save();
|
||||
}
|
||||
}
|
||||
|
||||
// ============================================================================
|
||||
// Key Export/Import Operations
|
||||
// ============================================================================
|
||||
|
||||
Reference in New Issue
Block a user