From be28a8f025aa93ccd7ebeda7e6cdec8ec823e266 Mon Sep 17 00:00:00 2001 From: chrisbell Date: Wed, 7 Jan 2026 20:13:36 -0600 Subject: [PATCH] Added search feature --- .../Controls/DocumentItem.axaml.cs | 1 + .../Controls/ProfileButton.axaml.cs | 5 +++- .../CritterFolio/Pages/HomePage.axaml | 12 ++++++--- .../CritterFolio/Pages/HomePage.axaml.cs | 25 +++++++++++++++++++ 4 files changed, 38 insertions(+), 5 deletions(-) diff --git a/critterfolio/CritterFolio/CritterFolio/Controls/DocumentItem.axaml.cs b/critterfolio/CritterFolio/CritterFolio/Controls/DocumentItem.axaml.cs index 7f6c4a5..2b01375 100644 --- a/critterfolio/CritterFolio/CritterFolio/Controls/DocumentItem.axaml.cs +++ b/critterfolio/CritterFolio/CritterFolio/Controls/DocumentItem.axaml.cs @@ -48,6 +48,7 @@ public partial class DocumentItem : UserControl } } + // TODO: Fix on android. Theres some special Uri permission/intent needed private async void ViewButtonOnClick(object? sender, RoutedEventArgs e) { if (_document is null) return; diff --git a/critterfolio/CritterFolio/CritterFolio/Controls/ProfileButton.axaml.cs b/critterfolio/CritterFolio/CritterFolio/Controls/ProfileButton.axaml.cs index c1e6c8e..66979bb 100644 --- a/critterfolio/CritterFolio/CritterFolio/Controls/ProfileButton.axaml.cs +++ b/critterfolio/CritterFolio/CritterFolio/Controls/ProfileButton.axaml.cs @@ -9,9 +9,10 @@ namespace CritterFolio.Controls; public partial class ProfileButton : UserControl { - public event EventHandler? Clicked; + public Critter? Critter { get; private set; } + public ProfileButton() { InitializeComponent(); @@ -21,6 +22,8 @@ public partial class ProfileButton : UserControl public void Init(Critter critter) { + Critter = critter; + try { var pfp = new Bitmap(critter.ProfileImagePath); diff --git a/critterfolio/CritterFolio/CritterFolio/Pages/HomePage.axaml b/critterfolio/CritterFolio/CritterFolio/Pages/HomePage.axaml index a767e94..386a665 100644 --- a/critterfolio/CritterFolio/CritterFolio/Pages/HomePage.axaml +++ b/critterfolio/CritterFolio/CritterFolio/Pages/HomePage.axaml @@ -6,10 +6,14 @@ x:Class="CritterFolio.Pages.HomePage"> - - - - + + + + + diff --git a/critterfolio/CritterFolio/CritterFolio/Pages/HomePage.axaml.cs b/critterfolio/CritterFolio/CritterFolio/Pages/HomePage.axaml.cs index 52f198b..e30619d 100644 --- a/critterfolio/CritterFolio/CritterFolio/Pages/HomePage.axaml.cs +++ b/critterfolio/CritterFolio/CritterFolio/Pages/HomePage.axaml.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using System.Threading.Tasks; using Avalonia; using Avalonia.Controls; @@ -31,10 +32,34 @@ public partial class HomePage : Page CreateHeaderButtons(); AddButton.Click += AddButtonClicked; + SearchButton.Click += SearchClicked; RefreshProfileButtons(); } + private void SearchClicked(object? sender, RoutedEventArgs e) + { + if (string.IsNullOrEmpty(SearchBox.Text)) + { + foreach (var child in CritterStack.Children) + { + if (child is ProfileButton profileButton) + { + profileButton.IsVisible = true; + } + } + + return; + } + + foreach (var child in CritterStack.Children) + { + if (child is not ProfileButton profileButton) continue; + if (profileButton.Critter is null) continue; + if (!profileButton.Critter.Name.Contains(SearchBox.Text, StringComparison.CurrentCultureIgnoreCase)) profileButton.IsVisible = false; + } + } + private void CreateHeaderButtons() { var settingsBttn = new Button()