diff --git a/src/App/Localization/Loc.cs b/src/App/Localization/Loc.cs
index 9e39719..695ec1f 100644
--- a/src/App/Localization/Loc.cs
+++ b/src/App/Localization/Loc.cs
@@ -116,6 +116,7 @@ public sealed class Loc
["tab.send"] = ["Invia", "Send", "Enviar", "Envoyer", "Enviar", "Senden"],
["tab.contacts"] = ["Contatti", "Contacts", "Contactos", "Contacts", "Contatos", "Kontakte"],
["receive.next"] = ["Prossimo indirizzo non usato:", "Next unused address:", "Próxima dirección no usada:", "Prochaine adresse non utilisée :", "Próximo endereço não usado:", "Nächste ungenutzte Adresse:"],
+ ["receive.copy"] = ["Copia", "Copy", "Copiar", "Copier", "Copiar", "Kopieren"],
["receive.hint"] = [
"Ogni pagamento ricevuto qui comparirà nello storico alla prossima sincronizzazione.",
"Payments received here will appear in the history at the next synchronization.",
diff --git a/src/App/ViewModels/MainWindowViewModel.cs b/src/App/ViewModels/MainWindowViewModel.cs
index c1342be..642da67 100644
--- a/src/App/ViewModels/MainWindowViewModel.cs
+++ b/src/App/ViewModels/MainWindowViewModel.cs
@@ -254,6 +254,9 @@ public partial class MainWindowViewModel : ViewModelBase
previous?.Dispose();
}
+ /// Feedback dopo la copia dell'indirizzo negli appunti (chiamato dal code-behind).
+ public void NotifyAddressCopied() => StatusMessage = Loc.Tr("addr.copied");
+
private static Bitmap? GenerateQr(string text)
{
try
diff --git a/src/App/Views/MainWindow.axaml b/src/App/Views/MainWindow.axaml
index 6a77fa5..9d794e1 100644
--- a/src/App/Views/MainWindow.axaml
+++ b/src/App/Views/MainWindow.axaml
@@ -253,8 +253,14 @@
-
+
+
+
+
diff --git a/src/App/Views/MainWindow.axaml.cs b/src/App/Views/MainWindow.axaml.cs
index 7339acb..9c0e857 100644
--- a/src/App/Views/MainWindow.axaml.cs
+++ b/src/App/Views/MainWindow.axaml.cs
@@ -87,6 +87,17 @@ public partial class MainWindow : Window
vm.ApplyDataLocation(path);
}
+ private async void OnCopyReceiveAddressClick(object? sender, RoutedEventArgs e)
+ {
+ if (DataContext is not MainWindowViewModel vm || string.IsNullOrEmpty(vm.ReceiveAddress))
+ return;
+ if (Clipboard is { } clipboard)
+ {
+ await clipboard.SetTextAsync(vm.ReceiveAddress);
+ vm.NotifyAddressCopied();
+ }
+ }
+
private void OnConnectionStatusTapped(object? sender, TappedEventArgs e)
{
if (DataContext is MainWindowViewModel vm)