add scrolling status message.
MODIFY
WalletWasabi.Fluent/ViewModels/MainViewModel.cs
WalletWasabi.Fluent/ViewModels/MainViewModel.cs
@@ -14,6 +14,7 @@ using WalletWasabi.Fluent.ViewModels.HelpAndSupport;
using WalletWasabi.Fluent.ViewModels.OpenDirectory;
using WalletWasabi.Logging;
using WalletWasabi.Fluent.ViewModels.StatusBar;
+using WalletWasabi.Fluent.ViewModels.Wallets;
using WalletWasabi.WabiSabi.Client;
namespace WalletWasabi.Fluent.ViewModels;
@@ -36,6 +37,7 @@ public partial class MainViewModel : ViewModelBase
[AutoNotify] private WindowState _windowState;
[AutoNotify] private bool _isOobeBackgroundVisible;
[AutoNotify] private bool _isCoinJoinActive;
+ [AutoNotify] private WalletViewModel? _currentWallet;
public MainViewModel()
{
@@ -130,6 +132,19 @@ public partial class MainViewModel : ViewModelBase
}
});
+ this.WhenAnyValue(x => x.MainScreen.CurrentPage)
+ .Subscribe(x =>
+ {
+ if (x is WalletViewModel walletViewModel)
+ {
+ CurrentWallet = walletViewModel;
+ }
+ else
+ {
+ CurrentWallet = null;
+ }
+ });
+
IsOobeBackgroundVisible = Services.UiConfig.Oobe;
RxApp.MainThreadScheduler.Schedule(async () =>

MODIFY
WalletWasabi.Fluent/ViewModels/Wallets/MusicControlsViewModel.cs
WalletWasabi.Fluent/ViewModels/Wallets/MusicControlsViewModel.cs
using System.Reactive.Linq;
+using Avalonia.Threading;
+using ReactiveUI;
+using WalletWasabi.WabiSabi.Client;
+using WalletWasabi.Wallets;
namespace WalletWasabi.Fluent.ViewModels.Wallets;
public partial class MusicControlsViewModel : ViewModelBase
{
[AutoNotify] private bool _isActive;
+ [AutoNotify] private TimeSpan _autoStartCountdown;
+ [AutoNotify] private string? _currentStatus;
- public MusicControlsViewModel()
+
+ public MusicControlsViewModel(Wallet wallet)
{
- Observable.Interval(TimeSpan.FromMilliseconds(3000))
- .Subscribe(token => IsActive = !IsActive);
- }
+ IsActive = true;
+
+ var coinJoinManager = Services.HostedServices.Get<CoinJoinManager>();
+
+ Observable.Interval(TimeSpan.FromSeconds(1))
+ .ObserveOn(RxApp.MainThreadScheduler)
+ .Subscribe(x =>
+ {
+ CurrentStatus = $"CoinJoin will auto-start in this is a very long message: {(DateTime.Now - coinJoinManager.WhenWalletCanStartAutoCoinJoin(wallet)):mm\\:ss}";
+
+
+ });
+ }
}
\ No newline at end of file

MODIFY
WalletWasabi.Fluent/ViewModels/Wallets/WalletViewModel.cs
WalletWasabi.Fluent/ViewModels/Wallets/WalletViewModel.cs
@@ -146,8 +146,12 @@ public partial class WalletViewModel : WalletViewModelBase
WalletSettingsCommand = ReactiveCommand.Create(() => Navigate(NavigationTarget.DialogScreen).To(Settings));
WalletCoinsCommand = ReactiveCommand.Create(() => Navigate(NavigationTarget.DialogScreen).To(new WalletCoinsViewModel(this, balanceChanged)));
+
+ MusicControls = new MusicControlsViewModel(wallet);
}
+ public MusicControlsViewModel MusicControls { get; }
+
public WalletSettingsViewModel Settings { get; }
public ICommand SendCommand { get; }

MODIFY
WalletWasabi.Fluent/Views/MainView.axaml
WalletWasabi.Fluent/Views/MainView.axaml
xmlns:behaviors="using:WalletWasabi.Fluent.Behaviors"
xmlns:vm="using:WalletWasabi.Fluent.ViewModels"
xmlns:statusBar="clr-namespace:WalletWasabi.Fluent.Views.StatusBar"
+ xmlns:wallets="clr-namespace:WalletWasabi.Fluent.Views.Wallets"
mc:Ignorable="d" d:DesignWidth="536" d:DesignHeight="459"
x:DataType="vm:MainViewModel"
x:CompileBindings="True"
</Style>
</Panel.Styles>
<ContentControl ClipToBounds="False" Content="{Binding MainScreen.CurrentPage}" />
+ <wallets:MusicControlsView DataContext="{Binding CurrentWallet.MusicControls}" VerticalAlignment="Bottom" HorizontalAlignment="Center" Height="64" />
</Panel>
</Panel>
</Panel>

MODIFY
WalletWasabi.Fluent/Views/Wallets/MusicControlsView.axaml
WalletWasabi.Fluent/Views/Wallets/MusicControlsView.axaml
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:wallets="clr-namespace:WalletWasabi.Fluent.ViewModels.Wallets"
+ xmlns:controls="clr-namespace:WalletWasabi.Fluent.Controls"
+ x:DataType="wallets:MusicControlsViewModel"
+ x:CompileBindings="True"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
x:Class="WalletWasabi.Fluent.Views.Wallets.MusicControlsView">
- <UserControl.DataContext>
- <wallets:MusicControlsViewModel/>
- </UserControl.DataContext>
<UserControl.Styles>
<Style Selector="TextBlock">
<Setter Property="VerticalAlignment" Value="Center" />
<Style Selector="Border#PART_MainBorder.IsActive">
<Style.Animations>
- <Animation Duration="0:0:0.2" Easing="{StaticResource FluentEasing}" FillMode="Both">
- <KeyFrame Cue="100%">
+ <Animation Duration="0:0:2" Easing="{StaticResource FluentEasing}" FillMode="Both">
+ <KeyFrame Cue="50%">
<Setter Property="(TranslateTransform.Y)" Value="120" />
</KeyFrame>
+ <KeyFrame Cue="100%">
+ <Setter Property="(TranslateTransform.Y)" Value="0" />
+ </KeyFrame>
</Animation>
</Style.Animations>
</Style>
<Style Selector="Border#PART_MainBorder:not(.IsActive)">
<Style.Animations>
- <Animation Duration="0:0:0.2" Easing="{StaticResource FluentEasing}" FillMode="Both">
- <KeyFrame Cue="100%">
+ <Animation Duration="0:0:2" Easing="{StaticResource FluentEasing}" FillMode="Both">
+ <KeyFrame Cue="50%">
<Setter Property="(TranslateTransform.Y)" Value="0" />
</KeyFrame>
+ <KeyFrame Cue="100%">
+ <Setter Property="(TranslateTransform.Y)" Value="120" />
+ </KeyFrame>
</Animation>
</Style.Animations>
</Style>
</UserControl.Styles>
<Border Name="PART_MainBorder"
- Classes.IsActive="{Binding IsActive}"
+ Classes.IsActive="{Binding IsActive, FallbackValue=false}"
TextBlock.FontFamily="{StaticResource MonospacedFont}"
Padding="20 10" CornerRadius="4 4 0 0" BorderThickness="1 1 1 0" Background="#19FFFFFF"
BorderBrush="#3CFFFFFF">
<StackPanel Orientation="Horizontal" Spacing="20">
- <TextBlock Text="Round in progress" />
+
+ <controls:ScrollingTextBlock MaxWidth="350" Text="{Binding CurrentStatus}" />
<Separator Classes="vertical" />
<ProgressBar Minimum="0" Maximum="100" Value="89" Foreground="White" />
- <TextBlock Text="09:59" />
-
<Separator Classes="vertical" />
<Button Classes="plain">

MODIFY
WalletWasabi.Fluent/Views/Wallets/WalletView.axaml
WalletWasabi.Fluent/Views/Wallets/WalletView.axaml
</Panel.Styles>
<home:WalletTiles />
</Panel>
- <controls:MusicControlsView DockPanel.Dock="Bottom" HorizontalAlignment="Center" Margin="0 20 0 -22" Height="64" />
<Panel>
<history:HistoryTable Name="HistoryTable"
DataContext="{Binding History}"

add scrolling status message.