~haowenl/vorg-windows

e0afd10e4347dde95bf5f456b4900ba376a9cc0e — Haowen Liu 11 months ago 7663d7a
Support import cancel and skip. Add slide transition.
M libvorg => libvorg +1 -1
@@ 1,1 1,1 @@
Subproject commit a3888800b021c15524cb7185fca28f59ae8c154a
Subproject commit bcca86300f2830ec117f7dae441bd151be400467

M vorg-windows/App.xaml.cpp => vorg-windows/App.xaml.cpp +10 -0
@@ 90,6 90,16 @@ bool App::ImportNext(const hstring &title, const hstring &studio,
    return mRepo->importNext(titleUTF8, studioUTF8, actorsStd, tagsStd) == Vorg::VorgRepo::Success;
}

bool App::Skip()
{
    return mRepo->skipCurrent() == Vorg::VorgRepo::Success;
}

void App::CancelImport()
{
    mRepo->cancelImport();
}

void App::PopulateVideoData(
    Windows::Foundation::Collections::IObservableVector<Windows::Foundation::IInspectable> &resultData) const
{

M vorg-windows/App.xaml.h => vorg-windows/App.xaml.h +2 -0
@@ 21,6 21,8 @@ struct App : AppT<App>
    bool ImportNext(const hstring &title, const hstring &studio,
                    const Windows::Foundation::Collections::IObservableVector<hstring> &actors,
                    const Windows::Foundation::Collections::IObservableVector<hstring> &tags);
    bool Skip();
    void CancelImport();
    void PopulateVideoData(
        Windows::Foundation::Collections::IObservableVector<Windows::Foundation::IInspectable> &resultData) const;
    Windows::Foundation::Collections::IVector<Windows::Foundation::IInspectable> CompleteStudios(

A vorg-windows/BrowseDetailPage.idl => vorg-windows/BrowseDetailPage.idl +12 -0
@@ 0,0 1,12 @@
// Copyright (c) Microsoft Corporation and Contributors.
// Licensed under the MIT License.

namespace vorg_windows
{
    [default_interface]
    runtimeclass BrowseDetailPage : Microsoft.UI.Xaml.Controls.Page
    {
        BrowseDetailPage();
        Int32 MyProperty;
    }
}

A vorg-windows/BrowseDetailPage.xaml => vorg-windows/BrowseDetailPage.xaml +16 -0
@@ 0,0 1,16 @@
<!-- Copyright (c) Microsoft Corporation and Contributors. -->
<!-- Licensed under the MIT License. -->

<Page
    x:Class="vorg_windows.BrowseDetailPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:vorg_windows"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d">

    <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
        <Button x:Name="myButton" Click="myButton_Click">Click Me</Button>
    </StackPanel>
</Page>

A vorg-windows/BrowseDetailPage.xaml.cpp => vorg-windows/BrowseDetailPage.xaml.cpp +37 -0
@@ 0,0 1,37 @@
// Copyright (c) Microsoft Corporation and Contributors.
// Licensed under the MIT License.

#include "pch.h"
#include "BrowseDetailPage.xaml.h"
#if __has_include("BrowseDetailPage.g.cpp")
#include "BrowseDetailPage.g.cpp"
#endif

using namespace winrt;
using namespace Microsoft::UI::Xaml;

// To learn more about WinUI, the WinUI project structure,
// and more about our project templates, see: http://aka.ms/winui-project-info.

namespace winrt::vorg_windows::implementation
{
    BrowseDetailPage::BrowseDetailPage()
    {
        InitializeComponent();
    }

    int32_t BrowseDetailPage::MyProperty()
    {
        throw hresult_not_implemented();
    }

    void BrowseDetailPage::MyProperty(int32_t /* value */)
    {
        throw hresult_not_implemented();
    }

    void BrowseDetailPage::myButton_Click(IInspectable const&, RoutedEventArgs const&)
    {
        myButton().Content(box_value(L"Clicked"));
    }
}

A vorg-windows/BrowseDetailPage.xaml.h => vorg-windows/BrowseDetailPage.xaml.h +26 -0
@@ 0,0 1,26 @@
// Copyright (c) Microsoft Corporation and Contributors.
// Licensed under the MIT License.

#pragma once

#include "BrowseDetailPage.g.h"

namespace winrt::vorg_windows::implementation
{
    struct BrowseDetailPage : BrowseDetailPageT<BrowseDetailPage>
    {
        BrowseDetailPage();

        int32_t MyProperty();
        void MyProperty(int32_t value);

        void myButton_Click(Windows::Foundation::IInspectable const& sender, Microsoft::UI::Xaml::RoutedEventArgs const& args);
    };
}

namespace winrt::vorg_windows::factory_implementation
{
    struct BrowseDetailPage : BrowseDetailPageT<BrowseDetailPage, implementation::BrowseDetailPage>
    {
    };
}

A vorg-windows/BrowseGalleryPage.idl => vorg-windows/BrowseGalleryPage.idl +12 -0
@@ 0,0 1,12 @@
// Copyright (c) Microsoft Corporation and Contributors.
// Licensed under the MIT License.

namespace vorg_windows
{
    [default_interface]
    runtimeclass BrowseGalleryPage : Microsoft.UI.Xaml.Controls.Page
    {
        BrowseGalleryPage();
        Int32 MyProperty;
    }
}

A vorg-windows/BrowseGalleryPage.xaml => vorg-windows/BrowseGalleryPage.xaml +16 -0
@@ 0,0 1,16 @@
<!-- Copyright (c) Microsoft Corporation and Contributors. -->
<!-- Licensed under the MIT License. -->

<Page
    x:Class="vorg_windows.BrowseGalleryPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:vorg_windows"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d">

    <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
        <Button x:Name="myButton" Click="myButton_Click">Click Me</Button>
    </StackPanel>
</Page>

A vorg-windows/BrowseGalleryPage.xaml.cpp => vorg-windows/BrowseGalleryPage.xaml.cpp +37 -0
@@ 0,0 1,37 @@
// Copyright (c) Microsoft Corporation and Contributors.
// Licensed under the MIT License.

#include "pch.h"
#include "BrowseGalleryPage.xaml.h"
#if __has_include("BrowseGalleryPage.g.cpp")
#include "BrowseGalleryPage.g.cpp"
#endif

using namespace winrt;
using namespace Microsoft::UI::Xaml;

// To learn more about WinUI, the WinUI project structure,
// and more about our project templates, see: http://aka.ms/winui-project-info.

namespace winrt::vorg_windows::implementation
{
    BrowseGalleryPage::BrowseGalleryPage()
    {
        InitializeComponent();
    }

    int32_t BrowseGalleryPage::MyProperty()
    {
        throw hresult_not_implemented();
    }

    void BrowseGalleryPage::MyProperty(int32_t /* value */)
    {
        throw hresult_not_implemented();
    }

    void BrowseGalleryPage::myButton_Click(IInspectable const&, RoutedEventArgs const&)
    {
        myButton().Content(box_value(L"Clicked"));
    }
}

A vorg-windows/BrowseGalleryPage.xaml.h => vorg-windows/BrowseGalleryPage.xaml.h +26 -0
@@ 0,0 1,26 @@
// Copyright (c) Microsoft Corporation and Contributors.
// Licensed under the MIT License.

#pragma once

#include "BrowseGalleryPage.g.h"

namespace winrt::vorg_windows::implementation
{
    struct BrowseGalleryPage : BrowseGalleryPageT<BrowseGalleryPage>
    {
        BrowseGalleryPage();

        int32_t MyProperty();
        void MyProperty(int32_t value);

        void myButton_Click(Windows::Foundation::IInspectable const& sender, Microsoft::UI::Xaml::RoutedEventArgs const& args);
    };
}

namespace winrt::vorg_windows::factory_implementation
{
    struct BrowseGalleryPage : BrowseGalleryPageT<BrowseGalleryPage, implementation::BrowseGalleryPage>
    {
    };
}

M vorg-windows/ImportEditPage.xaml => vorg-windows/ImportEditPage.xaml +227 -188
@@ 10,212 10,251 @@
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d">

    <StackPanel Margin="0,62,0,0" Orientation="Vertical">
        <TextBlock
            Margin="0,0,0,20"
            VerticalAlignment="Center"
            FontSize="22"
            Style="{StaticResource SubtitleTextBlockStyle}"
            Text="{x:Bind Path=State.FileName, Mode=OneWay}" />
        <MediaPlayerElement
            x:Name="MediaPlayer"
            AreTransportControlsEnabled="True"
            BorderThickness="0"
            CornerRadius="16"
            Source="{x:Bind Path=State.MediaSource, Mode=OneWay}" />
    <Grid
        Margin="0,44,0,44"
        HorizontalAlignment="Stretch"
        VerticalAlignment="Stretch">
        <Grid
            Margin="0,16,0,0"
            ColumnSpacing="16"
            RowSpacing="8">
            <Grid.ColumnDefinitions>
                <ColumnDefinition />
                <ColumnDefinition />
            </Grid.ColumnDefinitions>
            <Grid.RowDefinitions>
                <RowDefinition />
                <RowDefinition />
            </Grid.RowDefinitions>

            <!--  Title  -->
            <TextBlock Grid.Row="0" Grid.Column="0">Title</TextBlock>
            <TextBox
                x:Name="TitleInput"
                Grid.Row="1"
                Grid.Column="0" />

            <!--  Studio  -->
            <TextBlock Grid.Row="0" Grid.Column="1">Studio</TextBlock>
            <AutoSuggestBox
                x:Name="StudioInput"
                Grid.Row="1"
                Grid.Column="1"
                TextChanged="StudioInput_TextChanged" />
            Height="40"
            Margin="0,0,0,22"
            VerticalAlignment="Top"
            Background="Transparent">
            <Button x:Name="BackButton" Click="BackButton_Click">
                <StackPanel Orientation="Horizontal" Spacing="8">
                    <FontIcon
                        FontFamily="Segoe Fluent Icons"
                        FontSize="16"
                        Glyph="&#xE72B;" />
                    <TextBlock>Back</TextBlock>
                </StackPanel>
            </Button>
        </Grid>

        <Grid
            Margin="0,16,0,0"
            ColumnSpacing="16"
            RowSpacing="8">
            <Grid.ColumnDefinitions>
                <ColumnDefinition />
                <ColumnDefinition />
            </Grid.ColumnDefinitions>
            <Grid.RowDefinitions>
                <RowDefinition />
                <RowDefinition />
                <RowDefinition />
            </Grid.RowDefinitions>

            <!--  Actors  -->
            <TextBlock Grid.Row="0" Grid.Column="0">Actors</TextBlock>
        <StackPanel Margin="0,62,0,0" Orientation="Vertical">
            <TextBlock
                Margin="0,0,0,20"
                VerticalAlignment="Center"
                FontSize="22"
                Style="{StaticResource SubtitleTextBlockStyle}"
                Text="{x:Bind Path=State.FileName, Mode=OneWay}" />
            <MediaPlayerElement
                x:Name="MediaPlayer"
                AreTransportControlsEnabled="True"
                BorderThickness="0"
                CornerRadius="16"
                Source="{x:Bind Path=State.MediaSource, Mode=OneWay}" />
            <Grid
                Grid.Row="1"
                Grid.Column="0"
                ColumnSpacing="8">
                Margin="0,16,0,0"
                ColumnSpacing="16"
                RowSpacing="8">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition />
                    <ColumnDefinition Width="Auto" />
                    <ColumnDefinition />
                </Grid.ColumnDefinitions>
                <Grid.RowDefinitions>
                    <RowDefinition />
                    <RowDefinition />
                </Grid.RowDefinitions>

                <!--  Title  -->
                <TextBlock Grid.Row="0" Grid.Column="0">Title</TextBlock>
                <TextBox
                    x:Name="TitleInput"
                    Grid.Row="1"
                    Grid.Column="0" />

                <!--  Studio  -->
                <TextBlock Grid.Row="0" Grid.Column="1">Studio</TextBlock>
                <AutoSuggestBox
                    x:Name="ActorNameInput"
                    Grid.Column="0"
                    HorizontalAlignment="Stretch"
                    KeyUp="ActorNameInput_KeyUp"
                    TextChanged="ActorNameInput_TextChanged" />
                <Button
                    x:Name="ActorsSubmitButton"
                    x:Name="StudioInput"
                    Grid.Row="1"
                    Grid.Column="1"
                    VerticalAlignment="Stretch"
                    Click="ActorsSubmitButton_Click"
                    Content="&#xE710;"
                    FontFamily="Segoe MDL2 Assets"
                    IsTabStop="False" />
                    TextChanged="StudioInput_TextChanged" />
            </Grid>
            <ListView
                Grid.Row="2"
                Grid.Column="0"
                ItemsSource="{x:Bind Actors}"
                SelectionMode="Single">
                <ItemsControl.ItemTemplate>
                    <DataTemplate x:DataType="x:String">
                        <UserControl PointerEntered="UserControl_PointerEntered" PointerExited="UserControl_PointerExited">
                            <Grid>
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition />
                                    <ColumnDefinition Width="Auto" />
                                </Grid.ColumnDefinitions>
                                <TextBlock
                                    Grid.Column="0"
                                    VerticalAlignment="Center"
                                    Text="{x:Bind}" />
                                <Button
                                    x:Name="ActorsDeleteButton"
                                    Grid.Column="1"
                                    Click="ActorsDeleteButton_Click"
                                    Content="&#xE711;"
                                    FontFamily="Segoe MDL2 Assets"
                                    Visibility="Collapsed" />
                                <VisualStateManager.VisualStateGroups>
                                    <VisualStateGroup x:Name="CommonStates">
                                        <VisualState x:Name="HoverButtonsHidden" />
                                        <VisualState x:Name="HoverButtonsShown">
                                            <VisualState.Setters>
                                                <Setter Target="ActorsDeleteButton.Visibility" Value="Visible" />
                                            </VisualState.Setters>
                                        </VisualState>
                                    </VisualStateGroup>
                                </VisualStateManager.VisualStateGroups>
                            </Grid>
                        </UserControl>
                    </DataTemplate>
                </ItemsControl.ItemTemplate>
                <ItemsControl.ItemContainerStyle>
                    <Style BasedOn="{StaticResource DefaultListViewItemStyle}" TargetType="ListViewItem">
                        <Setter Property="IsTabStop" Value="False" />
                    </Style>
                </ItemsControl.ItemContainerStyle>
            </ListView>

            <!--  Tags  -->
            <TextBlock Grid.Row="0" Grid.Column="1">Tags</TextBlock>
            <Grid
                Grid.Row="1"
                Grid.Column="1"
                ColumnSpacing="8">
                Margin="0,16,0,0"
                ColumnSpacing="16"
                RowSpacing="8">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition />
                    <ColumnDefinition Width="Auto" />
                    <ColumnDefinition />
                </Grid.ColumnDefinitions>
                <AutoSuggestBox
                    x:Name="TagNameInput"
                <Grid.RowDefinitions>
                    <RowDefinition />
                    <RowDefinition />
                    <RowDefinition />
                </Grid.RowDefinitions>

                <!--  Actors  -->
                <TextBlock Grid.Row="0" Grid.Column="0">Actors</TextBlock>
                <Grid
                    Grid.Row="1"
                    Grid.Column="0"
                    HorizontalAlignment="Stretch"
                    KeyUp="TagNameInput_KeyUp"
                    TextChanged="TagNameInput_TextChanged" />
                <Button
                    x:Name="TagsSubmitButton"
                    ColumnSpacing="8">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition />
                        <ColumnDefinition Width="Auto" />
                    </Grid.ColumnDefinitions>
                    <AutoSuggestBox
                        x:Name="ActorNameInput"
                        Grid.Column="0"
                        HorizontalAlignment="Stretch"
                        KeyUp="ActorNameInput_KeyUp"
                        TextChanged="ActorNameInput_TextChanged" />
                    <Button
                        x:Name="ActorsSubmitButton"
                        Grid.Column="1"
                        VerticalAlignment="Stretch"
                        Click="ActorsSubmitButton_Click"
                        Content="&#xE710;"
                        FontFamily="Segoe Fluent Icons"
                        IsTabStop="False" />
                </Grid>
                <ListView
                    Grid.Row="2"
                    Grid.Column="0"
                    ItemsSource="{x:Bind Actors}"
                    SelectionMode="Single">
                    <ItemsControl.ItemTemplate>
                        <DataTemplate x:DataType="x:String">
                            <UserControl PointerEntered="UserControl_PointerEntered" PointerExited="UserControl_PointerExited">
                                <Grid>
                                    <Grid.ColumnDefinitions>
                                        <ColumnDefinition />
                                        <ColumnDefinition Width="Auto" />
                                    </Grid.ColumnDefinitions>
                                    <TextBlock
                                        Grid.Column="0"
                                        VerticalAlignment="Center"
                                        Text="{x:Bind}" />
                                    <Button
                                        x:Name="ActorsDeleteButton"
                                        Grid.Column="1"
                                        Click="ActorsDeleteButton_Click"
                                        Content="&#xE711;"
                                        FontFamily="Segoe Fluent Icons"
                                        Visibility="Collapsed" />
                                    <VisualStateManager.VisualStateGroups>
                                        <VisualStateGroup x:Name="CommonStates">
                                            <VisualState x:Name="HoverButtonsHidden" />
                                            <VisualState x:Name="HoverButtonsShown">
                                                <VisualState.Setters>
                                                    <Setter Target="ActorsDeleteButton.Visibility" Value="Visible" />
                                                </VisualState.Setters>
                                            </VisualState>
                                        </VisualStateGroup>
                                    </VisualStateManager.VisualStateGroups>
                                </Grid>
                            </UserControl>
                        </DataTemplate>
                    </ItemsControl.ItemTemplate>
                    <ItemsControl.ItemContainerStyle>
                        <Style BasedOn="{StaticResource DefaultListViewItemStyle}" TargetType="ListViewItem">
                            <Setter Property="IsTabStop" Value="False" />
                        </Style>
                    </ItemsControl.ItemContainerStyle>
                </ListView>

                <!--  Tags  -->
                <TextBlock Grid.Row="0" Grid.Column="1">Tags</TextBlock>
                <Grid
                    Grid.Row="1"
                    Grid.Column="1"
                    ColumnSpacing="8">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition />
                        <ColumnDefinition Width="Auto" />
                    </Grid.ColumnDefinitions>
                    <AutoSuggestBox
                        x:Name="TagNameInput"
                        Grid.Column="0"
                        HorizontalAlignment="Stretch"
                        KeyUp="TagNameInput_KeyUp"
                        TextChanged="TagNameInput_TextChanged" />
                    <Button
                        x:Name="TagsSubmitButton"
                        Grid.Column="1"
                        VerticalAlignment="Stretch"
                        Click="TagsSubmitButton_Click"
                        Content="&#xE710;"
                        FontFamily="Segoe Fluent Icons"
                        IsTabStop="False" />
                </Grid>
                <ListView
                    Grid.Row="2"
                    Grid.Column="1"
                    VerticalAlignment="Stretch"
                    Click="TagsSubmitButton_Click"
                    Content="&#xE710;"
                    FontFamily="Segoe MDL2 Assets"
                    IsTabStop="False" />
                    ItemsSource="{x:Bind Tags}"
                    SelectionMode="Single">
                    <ItemsControl.ItemTemplate>
                        <DataTemplate x:DataType="x:String">
                            <UserControl PointerEntered="UserControl_PointerEntered" PointerExited="UserControl_PointerExited">
                                <Grid>
                                    <Grid.ColumnDefinitions>
                                        <ColumnDefinition />
                                        <ColumnDefinition Width="Auto" />
                                    </Grid.ColumnDefinitions>
                                    <TextBlock
                                        Grid.Column="0"
                                        VerticalAlignment="Center"
                                        Text="{x:Bind}" />
                                    <Button
                                        x:Name="TagsDeleteButton"
                                        Grid.Column="1"
                                        Click="TagsDeleteButton_Click"
                                        Content="&#xE711;"
                                        FontFamily="Segoe Fluent Icons"
                                        Visibility="Collapsed" />
                                    <VisualStateManager.VisualStateGroups>
                                        <VisualStateGroup x:Name="CommonStates">
                                            <VisualState x:Name="HoverButtonsHidden" />
                                            <VisualState x:Name="HoverButtonsShown">
                                                <VisualState.Setters>
                                                    <Setter Target="TagsDeleteButton.Visibility" Value="Visible" />
                                                </VisualState.Setters>
                                            </VisualState>
                                        </VisualStateGroup>
                                    </VisualStateManager.VisualStateGroups>
                                </Grid>
                            </UserControl>
                        </DataTemplate>
                    </ItemsControl.ItemTemplate>
                    <ItemsControl.ItemContainerStyle>
                        <Style BasedOn="{StaticResource DefaultListViewItemStyle}" TargetType="ListViewItem">
                            <Setter Property="IsTabStop" Value="False" />
                        </Style>
                    </ItemsControl.ItemContainerStyle>
                </ListView>
            </Grid>
            <ListView
                Grid.Row="2"
                Grid.Column="1"
                ItemsSource="{x:Bind Tags}"
                SelectionMode="Single">
                <ItemsControl.ItemTemplate>
                    <DataTemplate x:DataType="x:String">
                        <UserControl PointerEntered="UserControl_PointerEntered" PointerExited="UserControl_PointerExited">
                            <Grid>
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition />
                                    <ColumnDefinition Width="Auto" />
                                </Grid.ColumnDefinitions>
                                <TextBlock
                                    Grid.Column="0"
                                    VerticalAlignment="Center"
                                    Text="{x:Bind}" />
                                <Button
                                    x:Name="TagsDeleteButton"
                                    Grid.Column="1"
                                    Click="TagsDeleteButton_Click"
                                    Content="&#xE711;"
                                    FontFamily="Segoe MDL2 Assets"
                                    Visibility="Collapsed" />
                                <VisualStateManager.VisualStateGroups>
                                    <VisualStateGroup x:Name="CommonStates">
                                        <VisualState x:Name="HoverButtonsHidden" />
                                        <VisualState x:Name="HoverButtonsShown">
                                            <VisualState.Setters>
                                                <Setter Target="TagsDeleteButton.Visibility" Value="Visible" />
                                            </VisualState.Setters>
                                        </VisualState>
                                    </VisualStateGroup>
                                </VisualStateManager.VisualStateGroups>
                            </Grid>
                        </UserControl>
                    </DataTemplate>
                </ItemsControl.ItemTemplate>
                <ItemsControl.ItemContainerStyle>
                    <Style BasedOn="{StaticResource DefaultListViewItemStyle}" TargetType="ListViewItem">
                        <Setter Property="IsTabStop" Value="False" />
                    </Style>
                </ItemsControl.ItemContainerStyle>
            </ListView>
        </Grid>

        <Button
            Margin="0,16,0,0"
            HorizontalAlignment="Right"
            Click="SubmitButton_Click"
            Style="{StaticResource AccentButtonStyle}">
            <StackPanel Orientation="Horizontal" Spacing="8">
                <TextBlock>Import</TextBlock>
                <SymbolIcon Symbol="Import" />
            <local:VideoDataEditor />

            <StackPanel
                Margin="0,16,0,0"
                HorizontalAlignment="Right"
                Orientation="Horizontal"
                Spacing="16">
                <Button
                    x:Name="SkipButton"
                    Width="96"
                    Click="SkipButton_Click">
                    <StackPanel Orientation="Horizontal" Spacing="8">
                        <TextBlock>Skip</TextBlock>
                        <FontIcon FontFamily="Segoe Fluent Icons" Glyph="&#xEb9d;" />
                    </StackPanel>
                </Button>
                <Button
                    Width="96"
                    Click="SubmitButton_Click"
                    Style="{StaticResource AccentButtonStyle}">
                    <StackPanel Orientation="Horizontal" Spacing="8">
                        <TextBlock>Import</TextBlock>
                        <FontIcon FontFamily="Segoe Fluent Icons" Glyph="&#xE8b5;" />
                    </StackPanel>
                </Button>
            </StackPanel>
        </Button>
    </StackPanel>

        </StackPanel>

    </Grid>
</Page>

M vorg-windows/ImportEditPage.xaml.cpp => vorg-windows/ImportEditPage.xaml.cpp +14 -0
@@ 130,6 130,20 @@ void ImportEditPage::TagNameInput_TextChanged(
    sender.ItemsSource(mApp->CompleteTags(sender.Text()));
}

void ImportEditPage::BackButton_Click(const Windows::Foundation::IInspectable &,
                                      const Microsoft::UI::Xaml::RoutedEventArgs &)
{
    mApp->CancelImport();
    mEditFinishedEvent(*this, nullptr);
}

void ImportEditPage::SkipButton_Click(const Windows::Foundation::IInspectable &,
                                      const Microsoft::UI::Xaml::RoutedEventArgs &)
{
    mApp->Skip();
    mEditFinishedEvent(*this, nullptr);
}

event_token ImportEditPage::EditFinished(
    const Windows::Foundation::TypedEventHandler<vorg_windows::ImportEditPage, Windows::Foundation::IInspectable>
        &handler)

M vorg-windows/ImportEditPage.xaml.h => vorg-windows/ImportEditPage.xaml.h +4 -0
@@ 43,6 43,10 @@ struct ImportEditPage : ImportEditPageT<ImportEditPage>
    void TagNameInput_TextChanged(const Microsoft::UI::Xaml::Controls::AutoSuggestBox &sender,
                                  const Microsoft::UI::Xaml::Controls::AutoSuggestBoxTextChangedEventArgs &);

    void BackButton_Click(const Windows::Foundation::IInspectable &, const Microsoft::UI::Xaml::RoutedEventArgs &);

    void SkipButton_Click(const Windows::Foundation::IInspectable &, const Microsoft::UI::Xaml::RoutedEventArgs &);

    event_token EditFinished(const Windows::Foundation::TypedEventHandler<vorg_windows::ImportEditPage,
                                                                          Windows::Foundation::IInspectable> &handler);
    void EditFinished(const event_token &token);

M vorg-windows/ImportPage.xaml => vorg-windows/ImportPage.xaml +7 -17
@@ 11,22 11,12 @@
    NavigationCacheMode="Required"
    mc:Ignorable="d">

    <Grid
        Margin="0,44,0,44"
        HorizontalAlignment="Stretch"
        VerticalAlignment="Stretch">
        <Grid
            Height="40"
            Margin="0,0,0,22"
            VerticalAlignment="Top"
            Background="Transparent">
            <TextBlock
                VerticalAlignment="Center"
                FontSize="22"
                Style="{StaticResource TitleTextBlockStyle}"
                Text="Import Video" />
        </Grid>
    <Frame x:Name="ContentFrame">
        <Frame.ContentTransitions>
            <TransitionCollection>
                <NavigationThemeTransition />
            </TransitionCollection>
        </Frame.ContentTransitions>
    </Frame>

        <Frame x:Name="ContentFrame" />
    </Grid>
</Page>

M vorg-windows/ImportPage.xaml.cpp => vorg-windows/ImportPage.xaml.cpp +6 -2
@@ 37,7 37,9 @@ void ImportPage::ImportSelectionPage_SelectionFinished(const vorg_windows::Impor
    selectionPage.SelectionFinished(mSelectionFinishedToken);

    // Navigate to ImportEditPage
    ContentFrame().Navigate(xaml_typename<vorg_windows::ImportEditPage>());
    Microsoft::UI::Xaml::Media::Animation::SlideNavigationTransitionInfo transitionInfo;
    transitionInfo.Effect(Microsoft::UI::Xaml::Media::Animation::SlideNavigationTransitionEffect::FromRight);
    ContentFrame().Navigate(xaml_typename<vorg_windows::ImportEditPage>(), nullptr, transitionInfo);

    // Set ImportEditPage MediaSource
    vorg_windows::ImportEditPage editPage = ContentFrame().Content().as<vorg_windows::ImportEditPage>();


@@ 70,7 72,9 @@ void ImportPage::ImportEditPage_EditFinished(const vorg_windows::ImportEditPage 
        editPage.EditFinished(mEditFinishedToken);

        // Navigate to ImportSelectionPage
        ContentFrame().Navigate(xaml_typename<vorg_windows::ImportSelectionPage>());
        Microsoft::UI::Xaml::Media::Animation::SlideNavigationTransitionInfo transitionInfo;
        transitionInfo.Effect(Microsoft::UI::Xaml::Media::Animation::SlideNavigationTransitionEffect::FromLeft);
        ContentFrame().Navigate(xaml_typename<vorg_windows::ImportSelectionPage>(), nullptr, transitionInfo);
        vorg_windows::ImportSelectionPage selectionPage =
            ContentFrame().Content().as<vorg_windows::ImportSelectionPage>();
        mSelectionFinishedToken = selectionPage.SelectionFinished(

M vorg-windows/ImportSelectionPage.xaml => vorg-windows/ImportSelectionPage.xaml +48 -30
@@ 10,34 10,52 @@
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d">

    <StackPanel
        HorizontalAlignment="Center"
        VerticalAlignment="Center"
        Orientation="Horizontal"
        Spacing="32">
        <Button
            x:Name="ImportFileButton"
            Width="128"
            Click="ImportFileButton_Click">
            <StackPanel Padding="0,8,0,2" Spacing="4">
                <FontIcon
                    FontFamily="Segoe MDL2 Assets"
                    FontSize="32"
                    Glyph="&#xE8E5;" />
                <TextBlock>Import File</TextBlock>
            </StackPanel>
        </Button>
        <Button
            x:Name="ImportFolderButton"
            Width="128"
            Click="ImportFolderButton_Click">
            <StackPanel Padding="0,8,0,2" Spacing="4">
                <FontIcon
                    FontFamily="Segoe MDL2 Assets"
                    FontSize="32"
                    Glyph="&#xED43;" />
                <TextBlock>Import Folder</TextBlock>
            </StackPanel>
        </Button>
    </StackPanel>
    <Grid
        Margin="0,44,0,44"
        HorizontalAlignment="Stretch"
        VerticalAlignment="Stretch">
        <Grid
            Height="40"
            Margin="0,0,0,22"
            VerticalAlignment="Top"
            Background="Transparent">
            <TextBlock
                VerticalAlignment="Center"
                FontSize="22"
                Style="{StaticResource TitleTextBlockStyle}"
                Text="Import Video" />
        </Grid>

        <StackPanel
            HorizontalAlignment="Center"
            VerticalAlignment="Center"
            Orientation="Horizontal"
            Spacing="32">
            <Button
                x:Name="ImportFileButton"
                Width="128"
                Click="ImportFileButton_Click">
                <StackPanel Padding="0,8,0,2" Spacing="4">
                    <FontIcon
                        FontFamily="Segoe Fluent Icons"
                        FontSize="32"
                        Glyph="&#xE8E5;" />
                    <TextBlock>Import File</TextBlock>
                </StackPanel>
            </Button>
            <Button
                x:Name="ImportFolderButton"
                Width="128"
                Click="ImportFolderButton_Click">
                <StackPanel Padding="0,8,0,2" Spacing="4">
                    <FontIcon
                        FontFamily="Segoe Fluent Icons"
                        FontSize="32"
                        Glyph="&#xED43;" />
                    <TextBlock>Import Folder</TextBlock>
                </StackPanel>
            </Button>
        </StackPanel>
    </Grid>

</Page>

M vorg-windows/LandingPage.xaml => vorg-windows/LandingPage.xaml +2 -2
@@ 30,7 30,7 @@
            <Button Width="128" Click="openButton_Click">
                <StackPanel Padding="0,8,0,2" Spacing="4">
                    <FontIcon
                        FontFamily="Segoe MDL2 Assets"
                        FontFamily="Segoe Fluent Icons"
                        FontSize="32"
                        Glyph="&#xE838;" />
                    <TextBlock>Open Existing</TextBlock>


@@ 39,7 39,7 @@
            <Button Width="128" Click="createButton_Click">
                <StackPanel Padding="0,8,0,2" Spacing="4">
                    <FontIcon
                        FontFamily="Segoe MDL2 Assets"
                        FontFamily="Segoe Fluent Icons"
                        FontSize="32"
                        Glyph="&#xE8F4;" />
                    <TextBlock>Create New</TextBlock>

A vorg-windows/VideoDataEditor.idl => vorg-windows/VideoDataEditor.idl +11 -0
@@ 0,0 1,11 @@
// Copyright (c) Microsoft Corporation and Contributors.
// Licensed under the MIT License.

namespace vorg_windows
{
    [default_interface]
    runtimeclass VideoDataEditor : Microsoft.UI.Xaml.Controls.StackPanel
    {
        VideoDataEditor();
    }
}

A vorg-windows/VideoDataEditor.xaml => vorg-windows/VideoDataEditor.xaml +11 -0
@@ 0,0 1,11 @@
<!--  Copyright (c) Microsoft Corporation and Contributors.  -->
<!--  Licensed under the MIT License.  -->

<StackPanel
    x:Class="vorg_windows.VideoDataEditor"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:local="using:vorg_windows"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d" />

A vorg-windows/VideoDataEditor.xaml.cpp => vorg-windows/VideoDataEditor.xaml.cpp +22 -0
@@ 0,0 1,22 @@
// Copyright (c) Microsoft Corporation and Contributors.
// Licensed under the MIT License.

#include "pch.h"
#include "VideoDataEditor.xaml.h"
#if __has_include("VideoDataEditor.g.cpp")
#include "VideoDataEditor.g.cpp"
#endif

using namespace winrt;
using namespace Microsoft::UI::Xaml;

// To learn more about WinUI, the WinUI project structure,
// and more about our project templates, see: http://aka.ms/winui-project-info.

namespace winrt::vorg_windows::implementation
{
    VideoDataEditor::VideoDataEditor()
    {
        InitializeComponent();
    }
}

A vorg-windows/VideoDataEditor.xaml.h => vorg-windows/VideoDataEditor.xaml.h +21 -0
@@ 0,0 1,21 @@
// Copyright (c) Microsoft Corporation and Contributors.
// Licensed under the MIT License.

#pragma once

#include "VideoDataEditor.g.h"

namespace winrt::vorg_windows::implementation
{
    struct VideoDataEditor : VideoDataEditorT<VideoDataEditor>
    {
        VideoDataEditor();
    };
}

namespace winrt::vorg_windows::factory_implementation
{
    struct VideoDataEditor : VideoDataEditorT<VideoDataEditor, implementation::VideoDataEditor>
    {
    };
}

M vorg-windows/pch.h => vorg-windows/pch.h +1 -0
@@ 21,6 21,7 @@
#include <winrt/Microsoft.UI.Xaml.Input.h>
#include <winrt/Microsoft.UI.Xaml.Interop.h>
#include <winrt/Microsoft.UI.Xaml.Markup.h>
#include <winrt/Microsoft.UI.Xaml.Media.Animation.h>
#include <winrt/Microsoft.UI.Xaml.Media.h>
#include <winrt/Microsoft.UI.Xaml.Navigation.h>
#include <winrt/Microsoft.UI.Xaml.Shapes.h>

M vorg-windows/vorg-windows.vcxproj => vorg-windows/vorg-windows.vcxproj +45 -0
@@ 123,6 123,14 @@
    <Manifest Include="app.manifest" />
  </ItemGroup>
  <ItemGroup>
    <ClInclude Include="BrowseDetailPage.xaml.h">
      <DependentUpon>BrowseDetailPage.xaml</DependentUpon>
      <SubType>Code</SubType>
    </ClInclude>
    <ClInclude Include="BrowseGalleryPage.xaml.h">
      <DependentUpon>BrowseGalleryPage.xaml</DependentUpon>
      <SubType>Code</SubType>
    </ClInclude>
    <ClInclude Include="BrowsePage.xaml.h">
      <DependentUpon>BrowsePage.xaml</DependentUpon>
      <SubType>Code</SubType>


@@ 160,9 168,19 @@
    <ClInclude Include="MainWindow.xaml.h">
      <DependentUpon>MainWindow.xaml</DependentUpon>
    </ClInclude>
    <ClInclude Include="VideoDataEditor.xaml.h">
      <DependentUpon>VideoDataEditor.xaml</DependentUpon>
      <SubType>Code</SubType>
    </ClInclude>
  </ItemGroup>
  <ItemGroup>
    <ApplicationDefinition Include="App.xaml" />
    <Page Include="BrowseDetailPage.xaml">
      <SubType>Designer</SubType>
    </Page>
    <Page Include="BrowseGalleryPage.xaml">
      <SubType>Designer</SubType>
    </Page>
    <Page Include="BrowsePage.xaml">
      <SubType>Designer</SubType>
    </Page>


@@ 185,8 203,19 @@
    <Page Include="ManagePage.xaml">
      <SubType>Designer</SubType>
    </Page>
    <Page Include="VideoDataEditor.xaml">
      <SubType>Designer</SubType>
    </Page>
  </ItemGroup>
  <ItemGroup>
    <ClCompile Include="BrowseDetailPage.xaml.cpp">
      <DependentUpon>BrowseDetailPage.xaml</DependentUpon>
      <SubType>Code</SubType>
    </ClCompile>
    <ClCompile Include="BrowseGalleryPage.xaml.cpp">
      <DependentUpon>BrowseGalleryPage.xaml</DependentUpon>
      <SubType>Code</SubType>
    </ClCompile>
    <ClCompile Include="BrowsePage.xaml.cpp">
      <DependentUpon>BrowsePage.xaml</DependentUpon>
      <SubType>Code</SubType>


@@ 227,12 256,24 @@
      <DependentUpon>MainWindow.xaml</DependentUpon>
    </ClCompile>
    <ClCompile Include="$(GeneratedFilesDir)module.g.cpp" />
    <ClCompile Include="VideoDataEditor.xaml.cpp">
      <DependentUpon>VideoDataEditor.xaml</DependentUpon>
      <SubType>Code</SubType>
    </ClCompile>
  </ItemGroup>
  <ItemGroup>
    <Midl Include="App.idl">
      <SubType>Code</SubType>
      <DependentUpon>App.xaml</DependentUpon>
    </Midl>
    <Midl Include="BrowseDetailPage.idl">
      <DependentUpon>BrowseDetailPage.xaml</DependentUpon>
      <SubType>Code</SubType>
    </Midl>
    <Midl Include="BrowseGalleryPage.idl">
      <DependentUpon>BrowseGalleryPage.xaml</DependentUpon>
      <SubType>Code</SubType>
    </Midl>
    <Midl Include="BrowsePage.idl">
      <DependentUpon>BrowsePage.xaml</DependentUpon>
      <SubType>Code</SubType>


@@ 267,6 308,10 @@
      <DependentUpon>ManagePage.xaml</DependentUpon>
      <SubType>Code</SubType>
    </Midl>
    <Midl Include="VideoDataEditor.idl">
      <DependentUpon>VideoDataEditor.xaml</DependentUpon>
      <SubType>Code</SubType>
    </Midl>
  </ItemGroup>
  <ItemGroup>
    <Text Include="readme.txt">

M vorg-windows/vorg-windows.vcxproj.filters => vorg-windows/vorg-windows.vcxproj.filters +25 -4
@@ 5,13 5,28 @@
  </ItemGroup>
  <ItemGroup>
    <Page Include="MainWindow.xaml" />
    <Page Include="ImportPage.xaml" />
    <Page Include="LandingPage.xaml" />
    <Page Include="BrowsePage.xaml" />
    <Page Include="ManagePage.xaml" />
    <Page Include="ErrorContentDialog.xaml" />
    <Page Include="ImportEditPage.xaml" />
    <Page Include="ImportSelectionPage.xaml" />
    <Page Include="ImportEditPage.xaml">
      <Filter>ImportPage</Filter>
    </Page>
    <Page Include="ImportPage.xaml">
      <Filter>ImportPage</Filter>
    </Page>
    <Page Include="ImportSelectionPage.xaml">
      <Filter>ImportPage</Filter>
    </Page>
    <Page Include="BrowseDetailPage.xaml">
      <Filter>BrowsePage</Filter>
    </Page>
    <Page Include="BrowseGalleryPage.xaml">
      <Filter>BrowsePage</Filter>
    </Page>
    <Page Include="BrowsePage.xaml">
      <Filter>BrowsePage</Filter>
    </Page>
    <Page Include="VideoDataEditor.xaml" />
  </ItemGroup>
  <ItemGroup>
    <Midl Include="App.idl" />


@@ 72,6 87,12 @@
    <Filter Include="Data Types">
      <UniqueIdentifier>{1a7d8cec-2b9a-4b31-ac35-3c9e042a2a7a}</UniqueIdentifier>
    </Filter>
    <Filter Include="ImportPage">
      <UniqueIdentifier>{8f661dcc-9cbc-44a0-b104-107a651dc2a4}</UniqueIdentifier>
    </Filter>
    <Filter Include="BrowsePage">
      <UniqueIdentifier>{30c0db6e-3407-43db-a2d2-a571e95ad1dc}</UniqueIdentifier>
    </Filter>
  </ItemGroup>
  <ItemGroup>
    <Text Include="readme.txt" />