app/src/BookScanner.App.csproj
+2
-0
diff --git a/app/src/BookScanner.App.csproj b/app/src/BookScanner.App.csproj
index 3555fec..4b294f0 100644
@@ -3,7 +3,9 @@
<RootNamespace>BookScanner.App</RootNamespace>
<AssemblyName>BookScanner.App</AssemblyName>
<OutputType>WinExe</OutputType>
<NoWarn>AVLN3001</NoWarn>
<ApplicationManifest>app.manifest</ApplicationManifest>
<AvaloniaUseCompiledBindingsByDefault>true</AvaloniaUseCompiledBindingsByDefault>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Avalonia" />
app/src/MainWindow.axaml
+4
-1
diff --git a/app/src/MainWindow.axaml b/app/src/MainWindow.axaml
index 5a76008..014118a 100644
@@ -3,11 +3,14 @@
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:pages="using:BookScanner.App.Pages"
mc:Ignorable="d"
d:DesignWidth="800"
d:DesignHeight="450"
x:Class="BookScanner.App.MainWindow"
Title="BookScanner"
>
Welcome to Avalonia!
<NavigationPage>
<pages:StartPage />
</NavigationPage>
</Window>
app/src/Pages/RecordingPage.axaml
+14
-0
diff --git a/app/src/Pages/RecordingPage.axaml b/app/src/Pages/RecordingPage.axaml
new file mode 100644
index 0000000..dfbf4ef
@@ -0,0 +1,14 @@
<ContentPage
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"
mc:Ignorable="d"
d:DesignWidth="800"
d:DesignHeight="450"
x:Class="BookScanner.App.Pages.RecordingPage"
>
<ContentPage.Header>
<TextBlock Name="projectName" />
</ContentPage.Header>
</ContentPage>
app/src/Pages/RecordingPage.axaml.cs
+19
-0
diff --git a/app/src/Pages/RecordingPage.axaml.cs b/app/src/Pages/RecordingPage.axaml.cs
new file mode 100644
index 0000000..6cb9c87
@@ -0,0 +1,19 @@
using System.Web;
using Avalonia.Controls;
using Avalonia.Platform.Storage;
namespace BookScanner.App.Pages;
public partial class RecordingPage : ContentPage
{
private readonly IStorageFolder projectFolder;
public RecordingPage(IStorageFolder projectFolder)
{
InitializeComponent();
DataContext = this;
this.projectFolder = projectFolder;
projectName.Text = HttpUtility.UrlDecode(projectFolder.Path.Segments[^1].Trim('/'));
}
}
app/src/Pages/StartPage.axaml
+15
-0
diff --git a/app/src/Pages/StartPage.axaml b/app/src/Pages/StartPage.axaml
new file mode 100644
index 0000000..7bc6403
@@ -0,0 +1,15 @@
<ContentPage
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"
mc:Ignorable="d"
d:DesignWidth="800"
d:DesignHeight="450"
x:Class="BookScanner.App.Pages.StartPage"
NavigationPage.HasNavigationBar="false"
>
<Button Click="OnOpenProjectClick" HorizontalAlignment="Center" VerticalAlignment="Center">
Open Project
</Button>
</ContentPage>
app/src/Pages/StartPage.axaml.cs
+32
-0
diff --git a/app/src/Pages/StartPage.axaml.cs b/app/src/Pages/StartPage.axaml.cs
new file mode 100644
index 0000000..1d7559f
@@ -0,0 +1,32 @@
using Avalonia.Controls;
using Avalonia.Interactivity;
using Avalonia.Platform.Storage;
namespace BookScanner.App.Pages;
public partial class StartPage : ContentPage
{
private static readonly FolderPickerOpenOptions projectFolderPickerOptions = new()
{
Title = "Open Project folder",
};
public StartPage()
{
InitializeComponent();
}
private async void OnOpenProjectClick(object sender, RoutedEventArgs args)
{
var topLevel = TopLevel.GetTopLevel(this)!;
var documentsFolder = await topLevel.StorageProvider.TryGetWellKnownFolderAsync(WellKnownFolder.Documents);
var folderPickerResult = await topLevel.StorageProvider.OpenFolderPickerAsync(
new() { Title = "Open Project folder", SuggestedStartLocation = documentsFolder }
);
if (folderPickerResult is not [var folder])
{
return;
}
await Navigation!.PushAsync(new RecordingPage(folder));
}
}