diff --git a/critterfolio/CritterFolio/CritterFolio.Android/MainActivity.cs b/critterfolio/CritterFolio/CritterFolio.Android/MainActivity.cs index 3d6926c..ee07061 100644 --- a/critterfolio/CritterFolio/CritterFolio.Android/MainActivity.cs +++ b/critterfolio/CritterFolio/CritterFolio.Android/MainActivity.cs @@ -29,7 +29,7 @@ public class MainActivity : AvaloniaMainActivity { //base.OnBackPressed(); // CA1422: This call site is reachable on: 'Android' 21.0 and later. 'AvaloniaActivity.OnBackPressed()' is obsoleted on: 'Android' 33.0 and later. - // Just call exit from Sytem.Environment for now which does not shutdown cleanly + // Just call exit from System.Environment for now which does not shutdown cleanly Environment.Exit(0); } } diff --git a/critterfolio/CritterFolio/CritterFolio/App.axaml.cs b/critterfolio/CritterFolio/CritterFolio/App.axaml.cs index 58e996d..093ec86 100644 --- a/critterfolio/CritterFolio/CritterFolio/App.axaml.cs +++ b/critterfolio/CritterFolio/CritterFolio/App.axaml.cs @@ -35,6 +35,9 @@ public partial class App : Application DataContext = new MainViewModel() }; } + + // Other init stuff here + base.OnFrameworkInitializationCompleted(); } diff --git a/critterfolio/CritterFolio/CritterFolio/Assets/Icon.png b/critterfolio/CritterFolio/CritterFolio/Assets/Icon.png new file mode 100644 index 0000000..6bb4ac3 Binary files /dev/null and b/critterfolio/CritterFolio/CritterFolio/Assets/Icon.png differ diff --git a/critterfolio/CritterFolio/CritterFolio/Controls/ProfileButton.axaml b/critterfolio/CritterFolio/CritterFolio/Controls/ProfileButton.axaml new file mode 100644 index 0000000..6d5166b --- /dev/null +++ b/critterfolio/CritterFolio/CritterFolio/Controls/ProfileButton.axaml @@ -0,0 +1,18 @@ + + + diff --git a/critterfolio/CritterFolio/CritterFolio/Controls/ProfileButton.axaml.cs b/critterfolio/CritterFolio/CritterFolio/Controls/ProfileButton.axaml.cs new file mode 100644 index 0000000..5705a09 --- /dev/null +++ b/critterfolio/CritterFolio/CritterFolio/Controls/ProfileButton.axaml.cs @@ -0,0 +1,36 @@ +using System; +using Avalonia; +using Avalonia.Controls; +using Avalonia.Markup.Xaml; +using Avalonia.Media.Imaging; +using CritterFolio.DataModels; + +namespace CritterFolio.Controls; + +public partial class ProfileButton : UserControl +{ + + public event EventHandler? Clicked; + + public ProfileButton() + { + InitializeComponent(); + + MainButton.Click += (sender, args) => { Clicked?.Invoke(sender, args); }; + } + + public void Init(Critter critter) + { + try + { + var pfp = new Bitmap(critter.ProfileImagePath); + ProfileImage.Source = pfp; + } + catch (Exception e) + { + Console.WriteLine(e); + } + + ProfileNameLabel.Content = string.IsNullOrEmpty(critter.Name) ? "Critter" : critter.Name ; + } +} \ No newline at end of file diff --git a/critterfolio/CritterFolio/CritterFolio/Navigation.axaml b/critterfolio/CritterFolio/CritterFolio/Navigation.axaml index 4138280..2c527e5 100644 --- a/critterfolio/CritterFolio/CritterFolio/Navigation.axaml +++ b/critterfolio/CritterFolio/CritterFolio/Navigation.axaml @@ -10,8 +10,9 @@ x:Name="PageTitle" VerticalAlignment="Center" Foreground="{DynamicResource PrimaryForeground}" - Margin="20, 0, 0, 0" - FontSize="20"/> + Margin="10, 0, 0, 0" + FontSize="20" + FontWeight="Medium"/> diff --git a/critterfolio/CritterFolio/CritterFolio/Pages/HomePage.axaml b/critterfolio/CritterFolio/CritterFolio/Pages/HomePage.axaml index 0fbba20..a767e94 100644 --- a/critterfolio/CritterFolio/CritterFolio/Pages/HomePage.axaml +++ b/critterfolio/CritterFolio/CritterFolio/Pages/HomePage.axaml @@ -4,8 +4,13 @@ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450" x:Class="CritterFolio.Pages.HomePage"> - - - - + + + + + + + + + diff --git a/critterfolio/CritterFolio/CritterFolio/Pages/HomePage.axaml.cs b/critterfolio/CritterFolio/CritterFolio/Pages/HomePage.axaml.cs index 5d74e23..ef819d9 100644 --- a/critterfolio/CritterFolio/CritterFolio/Pages/HomePage.axaml.cs +++ b/critterfolio/CritterFolio/CritterFolio/Pages/HomePage.axaml.cs @@ -4,6 +4,8 @@ using Avalonia.Controls; using Avalonia.Interactivity; using Avalonia.Markup.Xaml; using Avalonia.Media; +using CritterFolio.Controls; +using CritterFolio.DataModels; namespace CritterFolio.Pages; @@ -22,30 +24,50 @@ public partial class HomePage : Page base.Refresh(); Sys.Navigation?.SetTitle(Title); - - TestBttn.Click += TestPage; + CreateHeaderButtons(); - var headBtn = new Button() - { - Classes = { "headerBttn" }, - Content = "\ue248" - }; - - headBtn.Click += (sender, args) => - { - Console.WriteLine("Save button clicked"); - }; + AddButton.Click += AddButtonClicked; - Sys.Navigation?.AddHeaderButton(headBtn); + RefreshProfileButtons(); } - private void TestPage(object? sender, RoutedEventArgs args) + private void CreateHeaderButtons() + { + var settingsBttn = new Button() + { + Classes = { "headerBttn" }, + Content = "\ue270" + }; + + settingsBttn.Click += SettingsPage; + Sys.Navigation?.AddHeaderButton(settingsBttn); + } + + private void RefreshProfileButtons() + { + CritterStack.Children.Clear(); + } + + private void AddButtonClicked(object? sender, RoutedEventArgs e) + { + var newCritter = new Critter() + { + Name = "Toriel", + }; + + var newProfButton = new ProfileButton(); + newProfButton.Init(newCritter); + + CritterStack.Children.Add(newProfButton); + } + + private void SettingsPage(object? sender, RoutedEventArgs args) { Sys.Navigation?.PushPage(new TestPage()); } protected override void ClearConnections() { - TestBttn.Click -= TestPage; + AddButton.Click -= AddButtonClicked; } } \ No newline at end of file diff --git a/critterfolio/CritterFolio/CritterFolio/Pages/TestPage.axaml.cs b/critterfolio/CritterFolio/CritterFolio/Pages/TestPage.axaml.cs index 67e59b7..1b44c0d 100644 --- a/critterfolio/CritterFolio/CritterFolio/Pages/TestPage.axaml.cs +++ b/critterfolio/CritterFolio/CritterFolio/Pages/TestPage.axaml.cs @@ -6,7 +6,7 @@ namespace CritterFolio.Pages; public partial class TestPage : Page { - public override string Title { get; } = "Test"; + public override string Title { get; } = "Settings"; public TestPage() { diff --git a/critterfolio/CritterFolio/CritterFolio/Styles/MainStyles.axaml b/critterfolio/CritterFolio/CritterFolio/Styles/MainStyles.axaml index a9bbffb..a437b16 100644 --- a/critterfolio/CritterFolio/CritterFolio/Styles/MainStyles.axaml +++ b/critterfolio/CritterFolio/CritterFolio/Styles/MainStyles.axaml @@ -28,4 +28,21 @@ + + + + diff --git a/critterfolio/CritterFolio/CritterFolio/Sys.cs b/critterfolio/CritterFolio/CritterFolio/Sys.cs index 5b84dbe..0021a39 100644 --- a/critterfolio/CritterFolio/CritterFolio/Sys.cs +++ b/critterfolio/CritterFolio/CritterFolio/Sys.cs @@ -1,6 +1,11 @@ +using System; +using System.IO; + namespace CritterFolio; public static class Sys { + public static string UserDataPath => Path.Combine(AppContext.BaseDirectory, "UserData"); + public static Navigation? Navigation { get; set; } } \ No newline at end of file diff --git a/icon.svg b/icon.svg new file mode 100644 index 0000000..cce2fd3 --- /dev/null +++ b/icon.svg @@ -0,0 +1,55 @@ + + + +