You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
50 lines
1.3 KiB
50 lines
1.3 KiB
using System; |
|
using System.Diagnostics; |
|
using AsyncAwaitBestPractices; |
|
using Avalonia.Controls; |
|
using Avalonia.Input; |
|
using Avalonia.Markup.Xaml; |
|
using StabilityMatrix.Avalonia.Controls; |
|
using StabilityMatrix.Avalonia.Models; |
|
using StabilityMatrix.Core.Attributes; |
|
using CivitAiBrowserViewModel = StabilityMatrix.Avalonia.ViewModels.CheckpointBrowser.CivitAiBrowserViewModel; |
|
|
|
namespace StabilityMatrix.Avalonia.Views; |
|
|
|
[Singleton] |
|
public partial class CivitAiBrowserPage : UserControlBase |
|
{ |
|
public CivitAiBrowserPage() |
|
{ |
|
InitializeComponent(); |
|
} |
|
|
|
private void InitializeComponent() |
|
{ |
|
AvaloniaXamlLoader.Load(this); |
|
} |
|
|
|
private void ScrollViewer_OnScrollChanged(object? sender, ScrollChangedEventArgs e) |
|
{ |
|
if (sender is not ScrollViewer scrollViewer) |
|
return; |
|
|
|
if (scrollViewer.Offset.Y == 0) |
|
return; |
|
|
|
var isAtEnd = Math.Abs(scrollViewer.Offset.Y - scrollViewer.ScrollBarMaximum.Y) < 1f; |
|
|
|
if (isAtEnd && DataContext is IInfinitelyScroll scroll) |
|
{ |
|
scroll.LoadNextPageAsync().SafeFireAndForget(); |
|
} |
|
} |
|
|
|
private void InputElement_OnKeyDown(object? sender, KeyEventArgs e) |
|
{ |
|
if (e.Key == Key.Escape && DataContext is CivitAiBrowserViewModel viewModel) |
|
{ |
|
viewModel.ClearSearchQuery(); |
|
} |
|
} |
|
}
|
|
|