Skip to content

Commit

Permalink
Use Buttons for clickable suggestions
Browse files Browse the repository at this point in the history
  • Loading branch information
lontivero committed Nov 5, 2018
1 parent 297d5ae commit 5ab3d14
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 10 deletions.
9 changes: 4 additions & 5 deletions WalletWasabi.Gui/Behaviors/MnemonicSuggestionBehavior.cs
Expand Up @@ -12,10 +12,10 @@ internal class MnemonicSuggestionBehavior : Behavior<TextBox>
{
private CompositeDisposable _disposables;

private static readonly AvaloniaProperty<string> SuggestionItemsProperty =
AvaloniaProperty.Register<MnemonicSuggestionBehavior, string>(nameof(SuggestionItems), defaultBindingMode: Avalonia.Data.BindingMode.TwoWay);
private static readonly AvaloniaProperty<string[]> SuggestionItemsProperty =
AvaloniaProperty.Register<MnemonicSuggestionBehavior, string[]>(nameof(SuggestionItems), defaultBindingMode: Avalonia.Data.BindingMode.TwoWay);

public string SuggestionItems
public string[] SuggestionItems
{
get => GetValue(SuggestionItemsProperty);
set => SetValue(SuggestionItemsProperty, value);
Expand Down Expand Up @@ -50,11 +50,10 @@ private void HandleAutoUpdate()
var text = textBox.Text;
var enteredWordList = text.Split(' ', StringSplitOptions.RemoveEmptyEntries);
var lastWorld = enteredWordList.LastOrDefault();
var suggestions = SuggestionItems.Split(" ", StringSplitOptions.RemoveEmptyEntries);
var suggestions = SuggestionItems;
if(suggestions.Length == 1)
{
textBox.Text = text.Substring(0, text.Length - lastWorld.Length) + suggestions[0] + " ";
textBox.CaretIndex = textBox.Text.Length;
}
}
}
Expand Down
13 changes: 12 additions & 1 deletion WalletWasabi.Gui/Tabs/WalletManager/RecoverWalletView.xaml
Expand Up @@ -17,7 +17,18 @@
<behaviors:MnemonicSuggestionBehavior SuggestionItems="{Binding Suggestions}" />
</i:Interaction.Behaviors>
</controls:ExtendedTextBox>
<TextBlock Text="{Binding Suggestions}" FontWeight="Bold" />
<ItemsControl Items="{Binding Suggestions}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation ="Horizontal" Spacing="2"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Button Focusable="False" Content="{Binding}" Command="{Binding $parent[ItemsControl].DataContext.OnAddWord}" CommandParameter="{Binding}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</StackPanel>
</Grid>
</controls:GroupBox>
Expand Down
17 changes: 13 additions & 4 deletions WalletWasabi.Gui/Tabs/WalletManager/RecoverWalletViewModel.cs
Expand Up @@ -20,7 +20,7 @@ internal class RecoverWalletViewModel : CategoryViewModel
private string _walletName;
private bool _termsAccepted;
private string _validationMessage;
private string _suggestions;
private string[] _suggestions;

public RecoverWalletViewModel(WalletManagerViewModel owner) : base("Recover Wallet")
{
Expand Down Expand Up @@ -91,7 +91,7 @@ public string MnemonicWords
set { this.RaiseAndSetIfChanged(ref _mnemonicWords, value); }
}

public string Suggestions
public string[] Suggestions
{
get { return _suggestions; }
set { this.RaiseAndSetIfChanged(ref _suggestions, value); }
Expand Down Expand Up @@ -153,12 +153,21 @@ private void UpdateSuggestions(string words)

if (lastWorld.Length < 1)
{
Suggestions = string.Empty;
Suggestions = new string[0];
return;
}

var suggestedWords = EnglishWords.Where(w => w.StartsWith(lastWorld));
Suggestions = string.Join(" ", suggestedWords.ToArray());
Suggestions = suggestedWords.ToArray();
}

public void OnAddWord(string word)
{
string[] words = MnemonicWords.Split(' ', StringSplitOptions.RemoveEmptyEntries);
words[words.Length-1] = word;

Suggestions = new string[0];
MnemonicWords = string.Join(' ', words) + " ";
}

private static IEnumerable<string> EnglishWords = Wordlist.English.GetWords();
Expand Down

0 comments on commit 5ab3d14

Please sign in to comment.