Add CustomChangeAddress; to settings
MODIFY
WalletWasabi.Gui/Tabs/SettingsView.xaml
WalletWasabi.Gui/Tabs/SettingsView.xaml
<ToggleButton IsChecked="{Binding CustomFee}" Content="{Binding CustomFee, Converter={StaticResource BooleanStringConverter}, ConverterParameter=On:Off}" Margin="0 0 10 0" />
<TextBlock VerticalAlignment="Center">Manual fee entry.</TextBlock>
</StackPanel>
+ <StackPanel Margin="0 10" Orientation="Horizontal" Spacing="5">
+ <ToggleButton IsChecked="{Binding CustomChangeAddress}" Content="{Binding CustomChangeAddress, Converter={StaticResource BooleanStringConverter}, ConverterParameter=On:Off}" Margin="0 0 10 0" />
+ <TextBlock VerticalAlignment="Center">Custom change address.</TextBlock>
+ </StackPanel>
<StackPanel Margin="0 10" Orientation="Horizontal" Spacing="5">
<ToggleButton IsChecked="{Binding LurkingWifeMode}" Content="{Binding LurkingWifeMode, Converter={StaticResource BooleanStringConverter}, ConverterParameter=On:Off}" Margin="0 0 10 0" Command="{Binding LurkingWifeModeCommand}" />
<TextBlock VerticalAlignment="Center">Lurking Wife Mode, hides sensitive content.</TextBlock>

MODIFY
WalletWasabi.Gui/Tabs/SettingsViewModel.cs
WalletWasabi.Gui/Tabs/SettingsViewModel.cs
@@ -29,6 +29,7 @@ namespace WalletWasabi.Gui.Tabs
private string _localBitcoinCoreDataDir;
private bool _autocopy;
private bool _customFee;
+ private bool _customChangeAddress;
private bool _useTor;
private bool _startLocalBitcoinCoreOnStartup;
private bool _stopLocalBitcoinCoreOnShutdown;
@@ -46,6 +47,7 @@ namespace WalletWasabi.Gui.Tabs
Autocopy = Global.UiConfig?.Autocopy is true;
CustomFee = Global.UiConfig?.IsCustomFee is true;
+ CustomChangeAddress = Global.UiConfig?.IsCustomChangeAddress is true;
// Use global config's data as default filler until the real data is filled out by the loading of the config onopen.
var globalConfig = Global.Config;
@@ -78,6 +80,10 @@ namespace WalletWasabi.Gui.Tabs
.ObserveOn(RxApp.TaskpoolScheduler)
.Subscribe(x => Global.UiConfig.IsCustomFee = x);
+ this.WhenAnyValue(x => x.CustomChangeAddress)
+ .ObserveOn(RxApp.TaskpoolScheduler)
+ .Subscribe(x => Global.UiConfig.IsCustomChangeAddress = x);
+
OpenConfigFileCommand = ReactiveCommand.CreateFromTask(OpenConfigFileAsync);
LurkingWifeModeCommand = ReactiveCommand.CreateFromTask(async () =>
@@ -196,7 +202,7 @@ namespace WalletWasabi.Gui.Tabs
.DisposeWith(disposables);
this.RaisePropertyChanged(nameof(IsPinSet)); // Fire now otherwise the button won't update for restart.
- Global.UiConfig.WhenAnyValue(x => x.LockScreenPinHash, x => x.Autocopy, x => x.IsCustomFee)
+ Global.UiConfig.WhenAnyValue(x => x.LockScreenPinHash, x => x.Autocopy, x => x.IsCustomFee, x => x.IsCustomChangeAddress)
.Throttle(TimeSpan.FromSeconds(1))
.ObserveOn(RxApp.TaskpoolScheduler)
.Subscribe(async _ => await Global.UiConfig.ToFileAsync())
@@ -270,6 +276,12 @@ namespace WalletWasabi.Gui.Tabs
set => this.RaiseAndSetIfChanged(ref _customFee, value);
}
+ public bool CustomChangeAddress
+ {
+ get => _customChangeAddress;
+ set => this.RaiseAndSetIfChanged(ref _customChangeAddress, value);
+ }
+
public bool StartLocalBitcoinCoreOnStartup
{
get => _startLocalBitcoinCoreOnStartup;

MODIFY
WalletWasabi.Gui/UiConfig.cs
WalletWasabi.Gui/UiConfig.cs
@@ -25,6 +25,7 @@ namespace WalletWasabi.Gui
private bool _lockScreenActive;
private string _lockScreenPinHash;
private bool _isCustomFee;
+ private bool _isCustomChangeAddress;
private bool _autocopy;
[JsonProperty(PropertyName = "WindowState")]
@@ -67,6 +68,14 @@ namespace WalletWasabi.Gui
set => RaiseAndSetIfChanged(ref _isCustomFee, value);
}
+ [DefaultValue(false)]
+ [JsonProperty(PropertyName = "IsCustomChangeAddress", DefaultValueHandling = DefaultValueHandling.Populate)]
+ public bool IsCustomChangeAddress
+ {
+ get => _isCustomChangeAddress;
+ set => RaiseAndSetIfChanged(ref _isCustomChangeAddress, value);
+ }
+
[DefaultValue(false)]
[JsonProperty(PropertyName = "LurkingWifeMode", DefaultValueHandling = DefaultValueHandling.Populate)]
public bool LurkingWifeMode

Add CustomChangeAddress; to settings