Skip to content

Commit db9b21e

Browse files
Improve About window
1 parent 0c955cf commit db9b21e

File tree

9 files changed

+147
-75
lines changed

9 files changed

+147
-75
lines changed

WatchOnlyBitcoinWallet/AboutWindow.axaml

Lines changed: 0 additions & 35 deletions
This file was deleted.

WatchOnlyBitcoinWallet/AboutWindow.axaml.cs

Lines changed: 0 additions & 30 deletions
This file was deleted.

WatchOnlyBitcoinWallet/App.axaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@
1212
</Application.Styles>
1313

1414
<Application.DataTemplates>
15+
<DataTemplate DataType="{x:Type vm:AboutViewModel}">
16+
<views:AboutView/>
17+
</DataTemplate>
1518
<DataTemplate DataType="{x:Type vm:SettingsViewModel}">
1619
<views:SettingsView/>
1720
</DataTemplate>

WatchOnlyBitcoinWallet/App.axaml.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
using Avalonia;
77
using Avalonia.Controls.ApplicationLifetimes;
88
using Avalonia.Markup.Xaml;
9+
using System.Diagnostics;
910
using WatchOnlyBitcoinWallet.ViewModels;
1011

1112
namespace WatchOnlyBitcoinWallet
@@ -21,10 +22,14 @@ public override void OnFrameworkInitializationCompleted()
2122
{
2223
if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
2324
{
25+
MainWindowViewModel vm = new();
2426
desktop.MainWindow = new MainWindow
2527
{
26-
DataContext = new MainWindowViewModel()
28+
DataContext = vm
2729
};
30+
31+
Debug.Assert(desktop.MainWindow.Clipboard is not null);
32+
vm.Clipboard = desktop.MainWindow.Clipboard;
2833
}
2934

3035
base.OnFrameworkInitializationCompleted();

WatchOnlyBitcoinWallet/MainWindow.axaml.cs

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,6 @@ public MainWindow()
1515
InitializeComponent();
1616
}
1717

18-
private void About_Click(object sender, RoutedEventArgs e)
19-
{
20-
AboutWindow myWin = new AboutWindow();
21-
//myWin.Owner = this;
22-
//myWin.ShowDialog();
23-
}
24-
2518
private void Exit_Click(object sender, RoutedEventArgs e)
2619
{
2720
this.Close();
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
// WatchOnlyBitcoinWallet
2+
// Copyright (c) 2016 Coding Enthusiast
3+
// Distributed under the MIT software license, see the accompanying
4+
// file LICENCE or http://www.opensource.org/licenses/mit-license.php.
5+
6+
using Avalonia.Input.Platform;
7+
using WatchOnlyBitcoinWallet.MVVM;
8+
9+
namespace WatchOnlyBitcoinWallet.ViewModels
10+
{
11+
public class AboutViewModel : ViewModelBase
12+
{
13+
/// <summary>
14+
/// Make designer happy!
15+
/// </summary>
16+
#pragma warning disable CS8625 // Cannot convert null literal to non-nullable reference type.
17+
public AboutViewModel() : this("(Version 1.2.3)", null)
18+
#pragma warning restore CS8625 // Cannot convert null literal to non-nullable reference type.
19+
{
20+
}
21+
22+
public AboutViewModel(string ver, IClipboard clipboard)
23+
{
24+
VersionString = ver;
25+
this.clipboard = clipboard;
26+
27+
CopyCommand = new BindableCommand<string>(Copy);
28+
}
29+
30+
31+
private readonly IClipboard clipboard;
32+
public string VersionString { get; }
33+
public string Address1 => "1Q9swRQuwhTtjZZ2yguFWk7m7pszknkWyk";
34+
public string Address2 => "bc1q3n5t9gv40ayq68nwf0yth49dt5c799wpld376s";
35+
public string DonateUri1 => $"bitcoin:{Address1}{Bip21Extras}";
36+
public string DonateUri2 => $"bitcoin:{Address2}{Bip21Extras}";
37+
38+
private const string Bip21Extras = "?label=Coding-Enthusiast&message=Donation%20to%20WatchOnlyBitcoinWallet%20project";
39+
40+
public BindableCommand<string> CopyCommand { get; }
41+
private void Copy(string s)
42+
{
43+
clipboard?.SetTextAsync(s);
44+
}
45+
}
46+
}

WatchOnlyBitcoinWallet/ViewModels/MainWindowViewModel.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -127,8 +127,8 @@ public decimal BitcoinBalanceLC
127127
public BindableCommand OpenAboutCommand { get; private set; }
128128
private async void OpenAbout()
129129
{
130-
//AboutViewModel vm = new($"({VersionString})", Clipboard);
131-
//await WindowMan.ShowDialog(vm);
130+
AboutViewModel vm = new($"({VersionString})", Clipboard);
131+
await WindowMan.ShowDialog(vm);
132132
}
133133

134134
public BindableCommand OpenSettingsCommand { get; private set; }
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
<UserControl xmlns="https://github.com/avaloniaui"
2+
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
3+
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
4+
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
5+
xmlns:vm="using:WatchOnlyBitcoinWallet.ViewModels"
6+
mc:Ignorable="d"
7+
x:Class="WatchOnlyBitcoinWallet.Views.AboutView"
8+
Height="285" Width="300"
9+
FontSize="14">
10+
11+
<Design.DataContext>
12+
<vm:AboutViewModel/>
13+
</Design.DataContext>
14+
15+
<Grid RowDefinitions="auto,auto,auto,auto,auto,auto,*">
16+
<TextBlock Text="Watch Only Bitcoin Wallet" VerticalAlignment="Top"
17+
FontFamily="Comic Sans MS" FontSize="22" FontWeight="Bold"
18+
HorizontalAlignment="Center"
19+
Margin="0,10,0,0"
20+
Grid.Row="0"/>
21+
<TextBlock Text="{Binding VersionString}"
22+
FontFamily="Comic Sans MS" FontSize="18" FontWeight="Bold"
23+
HorizontalAlignment="Center"
24+
Grid.Row="1"/>
25+
<TextBlock Text="by Coding Enthusiast"
26+
FontFamily="Comic Sans MS" FontSize="16" FontWeight="Bold"
27+
HorizontalAlignment="Center"
28+
Grid.Row="2"/>
29+
<TextBlock Text="Button icons by icons8.com"
30+
FontFamily="Comic Sans MS" FontSize="12" FontWeight="Bold"
31+
Margin="0,10,0,0"
32+
HorizontalAlignment="Center"
33+
Grid.Row="3"/>
34+
35+
<HyperlinkButton Content="Github Repository Link"
36+
NavigateUri="https://github.com/Coding-Enthusiast/Watch-Only-Bitcoin-Wallet"
37+
Margin="0,15,0,0"
38+
Grid.Row="4"/>
39+
40+
<HyperlinkButton Content="BitcoinTalk.org Announcement Link"
41+
NavigateUri="https://bitcointalk.org/index.php?topic=1616888.0"
42+
Grid.Row="5"/>
43+
44+
<Grid ColumnDefinitions="*,auto,auto" RowDefinitions="auto,auto" Grid.Row="6">
45+
<TextBox Text="{Binding Address1}"
46+
IsReadOnly="True"
47+
FontSize="11"
48+
Margin="3"
49+
Grid.Column="0" Grid.Row="0"/>
50+
<Button Content="Copy"
51+
Command="{Binding CopyCommand}"
52+
CommandParameter="{Binding Address1}"
53+
Grid.Column="1" Grid.Row="0"/>
54+
<HyperlinkButton Content="Donate"
55+
NavigateUri="{Binding DonateUri1}"
56+
Grid.Column="2" Grid.Row="0"/>
57+
58+
<TextBox Text="{Binding Address2}"
59+
IsReadOnly="True"
60+
FontSize="11"
61+
Margin="3"
62+
Grid.Column="0" Grid.Row="1"/>
63+
<Button Content="Copy"
64+
Command="{Binding CopyCommand}"
65+
CommandParameter="{Binding Address2}"
66+
Grid.Column="1" Grid.Row="1"/>
67+
<HyperlinkButton Content="Donate"
68+
NavigateUri="{Binding DonateUri2}"
69+
Grid.Column="2" Grid.Row="1"/>
70+
</Grid>
71+
72+
</Grid>
73+
</UserControl>
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
// WatchOnlyBitcoinWallet
2+
// Copyright (c) 2016 Coding Enthusiast
3+
// Distributed under the MIT software license, see the accompanying
4+
// file LICENCE or http://www.opensource.org/licenses/mit-license.php.
5+
6+
using Avalonia.Controls;
7+
8+
namespace WatchOnlyBitcoinWallet.Views
9+
{
10+
public partial class AboutView : UserControl
11+
{
12+
public AboutView()
13+
{
14+
InitializeComponent();
15+
}
16+
}
17+
}

0 commit comments

Comments
 (0)