FrymasterBadgeApp/EmployeePage.xaml

242 lines
7.5 KiB
XML

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage
xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="FrymasterBadgeApp.EmployeePage"
BackgroundColor="#0f172a"
>
<Grid RowDefinitions="80,*" ColumnDefinitions="400,*">
<!-- Header -->
<Border Grid.ColumnSpan="2" BackgroundColor="#1e293b" StrokeThickness="0" Padding="20,0">
<Grid ColumnDefinitions="Auto,*">
<Label
Text="FRYMASTER BADGE SYSTEM"
FontSize="20"
FontAttributes="Bold"
TextColor="White"
VerticalOptions="Center"
/>
<SearchBar
Grid.Column="1"
x:Name="EmployeeSearchBar"
Placeholder="Search employees..."
TextColor="White"
BackgroundColor="#334155"
PlaceholderColor="#94a3b8"
Margin="10,0"
VerticalOptions="Center"
TextChanged="OnSearchTextChanged"
/>
</Grid>
</Border>
<!-- Left: Employee List -->
<Border Grid.Row="1" BackgroundColor="#1e293b" StrokeThickness="0">
<CollectionView
x:Name="EmployeeList"
SelectionMode="Single"
SelectionChanged="OnSelectionChanged"
BackgroundColor="Transparent"
Margin="10"
>
<CollectionView.ItemsLayout>
<LinearItemsLayout Orientation="Vertical" ItemSpacing="8" />
</CollectionView.ItemsLayout>
<CollectionView.ItemTemplate>
<DataTemplate>
<Border
BackgroundColor="#334155"
Padding="15"
StrokeShape="RoundRectangle 8"
Shadow="Shadow 0 4 8 0.2 Black"
>
<Label
Text="{Binding [Data2]}"
TextColor="White"
FontSize="16"
FontAttributes="Bold"
/>
</Border>
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
</Border>
<!-- Right: Preview & Controls -->
<ScrollView Grid.Row="1" Grid.Column="1" Padding="40,20">
<VerticalStackLayout Spacing="25" HorizontalOptions="Center">
<!-- Company Logo (used in badge preview) -->
<Image
x:Name="PreviewLogoFront"
HeightRequest="60"
Aspect="AspectFit"
HorizontalOptions="Center"
/>
<!-- Badge Type & Guest Selector -->
<Border
BackgroundColor="#1e293b"
Padding="20"
StrokeShape="RoundRectangle 12"
Shadow="Shadow 0 4 10 0.3 Black"
>
<VerticalStackLayout Spacing="15">
<HorizontalStackLayout Spacing="15" HorizontalOptions="Center">
<Label
Text="Badge Type"
TextColor="White"
FontAttributes="Bold"
FontSize="16"
VerticalOptions="Center"
/>
<Picker
x:Name="BadgeTypePicker"
Title="Select type"
WidthRequest="250"
TextColor="White"
BackgroundColor="#334155"
SelectedIndexChanged="OnBadgeTypeChanged"
>
<Picker.Items>
<x:String>Office</x:String>
<x:String>Plant</x:String>
<x:String>Maintenance</x:String>
<x:String>Guest</x:String>
<x:String>Visitor</x:String>
<x:String>Vendor</x:String>
</Picker.Items>
</Picker>
</HorizontalStackLayout>
<HorizontalStackLayout
x:Name="GuestImageSelector"
IsVisible="False"
Spacing="15"
HorizontalOptions="Center"
>
<Label
Text="Guest Image"
TextColor="White"
FontAttributes="Bold"
FontSize="16"
VerticalOptions="Center"
/>
<Picker
x:Name="GuestImagePicker"
Title="Select image"
WidthRequest="250"
TextColor="White"
BackgroundColor="#334155"
SelectedIndexChanged="OnGuestImageChanged"
>
<Picker.Items>
<x:String>Guest1.png</x:String>
<x:String>Guest2.png</x:String>
<x:String>Guest3.png</x:String>
</Picker.Items>
</Picker>
</HorizontalStackLayout>
</VerticalStackLayout>
</Border>
<!-- Badge Preview (Front + Back side-by-side) -->
<Border
x:Name="PreviewFrame"
BackgroundColor="Transparent"
Padding="30"
StrokeShape="RoundRectangle 20"
Shadow="Shadow 0 8 20 0.4 Black"
HorizontalOptions="Center"
>
<!-- Content dynamically set in code-behind -->
</Border>
<!-- Action Buttons -->
<HorizontalStackLayout Spacing="20" HorizontalOptions="Center">
<Button
Text="📷 Edit / Capture Photo"
Clicked="OnTakePhotoClicked"
BackgroundColor="#3b82f6"
TextColor="White"
FontAttributes="Bold"
CornerRadius="12"
HeightRequest="55"
WidthRequest="220"
/>
<Button
Text="🖨️ Print Badge"
Clicked="OnPrintClicked"
BackgroundColor="#6366f1"
TextColor="White"
FontAttributes="Bold"
CornerRadius="12"
HeightRequest="55"
WidthRequest="220"
/>
</HorizontalStackLayout>
</VerticalStackLayout>
</ScrollView>
</Grid>
<!-- Photo Editor Overlay -->
<Grid x:Name="PhotoEditorOverlay" IsVisible="False" BackgroundColor="#CC000000">
<Border
BackgroundColor="#1e293b"
Padding="30"
StrokeShape="RoundRectangle 20"
Shadow="Shadow 0 8 20 0.4 Black"
HorizontalOptions="Center"
VerticalOptions="Center"
WidthRequest="500"
>
<VerticalStackLayout Spacing="25">
<Label
Text="Adjust Photo"
FontSize="20"
FontAttributes="Bold"
TextColor="White"
HorizontalTextAlignment="Center"
/>
<Border
BackgroundColor="Black"
StrokeShape="RoundRectangle 12"
Padding="0"
IsClippedToBounds="True"
HeightRequest="300"
WidthRequest="300"
>
<Image x:Name="EditorPhotoPreview" Aspect="AspectFill">
<Image.GestureRecognizers>
<PanGestureRecognizer PanUpdated="OnPanUpdated" />
</Image.GestureRecognizers>
</Image>
</Border>
<VerticalStackLayout Spacing="8">
<Label Text="Zoom" TextColor="#cbd5e1" HorizontalTextAlignment="Center" />
<Slider x:Name="ZoomSlider" Minimum="1" Maximum="4" Value="1" />
</VerticalStackLayout>
<Grid ColumnDefinitions="*,*" ColumnSpacing="20">
<Button
Text="Cancel"
Clicked="OnCancelPhoto"
BackgroundColor="#ef4444"
TextColor="White"
CornerRadius="10"
/>
<Button
Grid.Column="1"
Text="Save Crop"
Clicked="OnApplyPhoto"
BackgroundColor="#22c55e"
TextColor="White"
CornerRadius="10"
/>
</Grid>
</VerticalStackLayout>
</Border>
</Grid>
</ContentPage>