Skip to content

Commit

Permalink
Improve About window
Browse files Browse the repository at this point in the history
  • Loading branch information
Coding-Enthusiast committed Feb 16, 2025
1 parent 0c955cf commit db9b21e
Show file tree
Hide file tree
Showing 9 changed files with 147 additions and 75 deletions.
35 changes: 0 additions & 35 deletions WatchOnlyBitcoinWallet/AboutWindow.axaml

This file was deleted.

30 changes: 0 additions & 30 deletions WatchOnlyBitcoinWallet/AboutWindow.axaml.cs

This file was deleted.

3 changes: 3 additions & 0 deletions WatchOnlyBitcoinWallet/App.axaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@
</Application.Styles>

<Application.DataTemplates>
<DataTemplate DataType="{x:Type vm:AboutViewModel}">
<views:AboutView/>
</DataTemplate>
<DataTemplate DataType="{x:Type vm:SettingsViewModel}">
<views:SettingsView/>
</DataTemplate>
Expand Down
7 changes: 6 additions & 1 deletion WatchOnlyBitcoinWallet/App.axaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
using Avalonia;
using Avalonia.Controls.ApplicationLifetimes;
using Avalonia.Markup.Xaml;
using System.Diagnostics;
using WatchOnlyBitcoinWallet.ViewModels;

namespace WatchOnlyBitcoinWallet
Expand All @@ -21,10 +22,14 @@ public override void OnFrameworkInitializationCompleted()
{
if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
{
MainWindowViewModel vm = new();
desktop.MainWindow = new MainWindow
{
DataContext = new MainWindowViewModel()
DataContext = vm
};

Debug.Assert(desktop.MainWindow.Clipboard is not null);
vm.Clipboard = desktop.MainWindow.Clipboard;
}

base.OnFrameworkInitializationCompleted();
Expand Down
7 changes: 0 additions & 7 deletions WatchOnlyBitcoinWallet/MainWindow.axaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,6 @@ public MainWindow()
InitializeComponent();
}

private void About_Click(object sender, RoutedEventArgs e)
{
AboutWindow myWin = new AboutWindow();
//myWin.Owner = this;
//myWin.ShowDialog();
}

private void Exit_Click(object sender, RoutedEventArgs e)
{
this.Close();
Expand Down
46 changes: 46 additions & 0 deletions WatchOnlyBitcoinWallet/ViewModels/AboutViewModel.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
// WatchOnlyBitcoinWallet
// Copyright (c) 2016 Coding Enthusiast
// Distributed under the MIT software license, see the accompanying
// file LICENCE or http://www.opensource.org/licenses/mit-license.php.

using Avalonia.Input.Platform;
using WatchOnlyBitcoinWallet.MVVM;

namespace WatchOnlyBitcoinWallet.ViewModels
{
public class AboutViewModel : ViewModelBase
{
/// <summary>
/// Make designer happy!
/// </summary>
#pragma warning disable CS8625 // Cannot convert null literal to non-nullable reference type.
public AboutViewModel() : this("(Version 1.2.3)", null)
#pragma warning restore CS8625 // Cannot convert null literal to non-nullable reference type.
{
}

public AboutViewModel(string ver, IClipboard clipboard)
{
VersionString = ver;
this.clipboard = clipboard;

CopyCommand = new BindableCommand<string>(Copy);
}


private readonly IClipboard clipboard;
public string VersionString { get; }
public string Address1 => "1Q9swRQuwhTtjZZ2yguFWk7m7pszknkWyk";
public string Address2 => "bc1q3n5t9gv40ayq68nwf0yth49dt5c799wpld376s";
public string DonateUri1 => $"bitcoin:{Address1}{Bip21Extras}";
public string DonateUri2 => $"bitcoin:{Address2}{Bip21Extras}";

private const string Bip21Extras = "?label=Coding-Enthusiast&message=Donation%20to%20WatchOnlyBitcoinWallet%20project";

public BindableCommand<string> CopyCommand { get; }
private void Copy(string s)
{
clipboard?.SetTextAsync(s);
}
}
}
4 changes: 2 additions & 2 deletions WatchOnlyBitcoinWallet/ViewModels/MainWindowViewModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -127,8 +127,8 @@ public decimal BitcoinBalanceLC
public BindableCommand OpenAboutCommand { get; private set; }
private async void OpenAbout()
{
//AboutViewModel vm = new($"({VersionString})", Clipboard);
//await WindowMan.ShowDialog(vm);
AboutViewModel vm = new($"({VersionString})", Clipboard);
await WindowMan.ShowDialog(vm);
}

public BindableCommand OpenSettingsCommand { get; private set; }
Expand Down
73 changes: 73 additions & 0 deletions WatchOnlyBitcoinWallet/Views/AboutView.axaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
<UserControl xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:vm="using:WatchOnlyBitcoinWallet.ViewModels"
mc:Ignorable="d"
x:Class="WatchOnlyBitcoinWallet.Views.AboutView"
Height="285" Width="300"
FontSize="14">

<Design.DataContext>
<vm:AboutViewModel/>
</Design.DataContext>

<Grid RowDefinitions="auto,auto,auto,auto,auto,auto,*">
<TextBlock Text="Watch Only Bitcoin Wallet" VerticalAlignment="Top"
FontFamily="Comic Sans MS" FontSize="22" FontWeight="Bold"
HorizontalAlignment="Center"
Margin="0,10,0,0"
Grid.Row="0"/>
<TextBlock Text="{Binding VersionString}"
FontFamily="Comic Sans MS" FontSize="18" FontWeight="Bold"
HorizontalAlignment="Center"
Grid.Row="1"/>
<TextBlock Text="by Coding Enthusiast"
FontFamily="Comic Sans MS" FontSize="16" FontWeight="Bold"
HorizontalAlignment="Center"
Grid.Row="2"/>
<TextBlock Text="Button icons by icons8.com"
FontFamily="Comic Sans MS" FontSize="12" FontWeight="Bold"
Margin="0,10,0,0"
HorizontalAlignment="Center"
Grid.Row="3"/>

<HyperlinkButton Content="Github Repository Link"
NavigateUri="https://github.com/Coding-Enthusiast/Watch-Only-Bitcoin-Wallet"
Margin="0,15,0,0"
Grid.Row="4"/>

<HyperlinkButton Content="BitcoinTalk.org Announcement Link"
NavigateUri="https://bitcointalk.org/index.php?topic=1616888.0"
Grid.Row="5"/>

<Grid ColumnDefinitions="*,auto,auto" RowDefinitions="auto,auto" Grid.Row="6">
<TextBox Text="{Binding Address1}"
IsReadOnly="True"
FontSize="11"
Margin="3"
Grid.Column="0" Grid.Row="0"/>
<Button Content="Copy"
Command="{Binding CopyCommand}"
CommandParameter="{Binding Address1}"
Grid.Column="1" Grid.Row="0"/>
<HyperlinkButton Content="Donate"
NavigateUri="{Binding DonateUri1}"
Grid.Column="2" Grid.Row="0"/>

<TextBox Text="{Binding Address2}"
IsReadOnly="True"
FontSize="11"
Margin="3"
Grid.Column="0" Grid.Row="1"/>
<Button Content="Copy"
Command="{Binding CopyCommand}"
CommandParameter="{Binding Address2}"
Grid.Column="1" Grid.Row="1"/>
<HyperlinkButton Content="Donate"
NavigateUri="{Binding DonateUri2}"
Grid.Column="2" Grid.Row="1"/>
</Grid>

</Grid>
</UserControl>
17 changes: 17 additions & 0 deletions WatchOnlyBitcoinWallet/Views/AboutView.axaml.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
// WatchOnlyBitcoinWallet
// Copyright (c) 2016 Coding Enthusiast
// Distributed under the MIT software license, see the accompanying
// file LICENCE or http://www.opensource.org/licenses/mit-license.php.

using Avalonia.Controls;

namespace WatchOnlyBitcoinWallet.Views
{
public partial class AboutView : UserControl
{
public AboutView()
{
InitializeComponent();
}
}
}

0 comments on commit db9b21e

Please sign in to comment.