Foi adicionada a funcionalidade de upload de imagens PNG para um local de rede específico. No backend, a interface `IImageService` e o serviço `ImageService` foram atualizados com o método assíncrono `MoveFile`, que move arquivos para o destino desejado, criando diretórios se necessário e exibindo mensagens de erro em caso de falha. No frontend, foi adicionado um botão "Upload" à interface gráfica (`MainWindow.xaml`), vinculado ao comando `UploadImageCommand` no `MainWindowViewModel`. Este comando utiliza o método privado `UploadImageAsync` para abrir uma caixa de diálogo, permitir a seleção de um arquivo PNG e mover o arquivo utilizando o serviço de imagens. Feedback ao usuário é exibido para sucesso ou erro.
218 lines
10 KiB
XML
218 lines
10 KiB
XML
<Window x:Class="BackgroundBuilder.Views.MainWindow"
|
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:converters="clr-namespace:BackgroundBuilder.Converters"
|
|
Title="BackgroundBuilder" WindowStartupLocation="CenterScreen" WindowState="Maximized" MinHeight="950" MinWidth="1290" MaxHeight="1048" MaxWidth="2250">
|
|
<Window.Resources>
|
|
<converters:DateNoDotConverter x:Key="DateNoDotConverter"/>
|
|
</Window.Resources>
|
|
<Grid x:Name="RootGrid" Margin="20">
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="*"/>
|
|
</Grid.RowDefinitions>
|
|
<Border Grid.Row="0" BorderBrush="Black" BorderThickness="1"/>
|
|
<Border Grid.Row="1" BorderBrush="Black" BorderThickness="1,0,1,1"/>
|
|
<!-- Row 0: three side-by-side DataGrids -->
|
|
<Grid Grid.Row="0" HorizontalAlignment="Stretch" VerticalAlignment="Bottom">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="*"/>
|
|
</Grid.ColumnDefinitions>
|
|
<Border Grid.Column="0" BorderBrush="Black" BorderThickness="1"/>
|
|
<!-- Column 0: DataGrid for RawContatos -->
|
|
<DataGrid x:Name="RawGrid"
|
|
Grid.Column="0"
|
|
ItemsSource="{Binding RawContatos}"
|
|
SelectedItem="{Binding SelectedContato}"
|
|
AutoGenerateColumns="False"
|
|
IsReadOnly="False"
|
|
IsHitTestVisible ="True"
|
|
FontSize="11"
|
|
BorderBrush="Black"
|
|
BorderThickness="1"
|
|
VerticalAlignment="Top"
|
|
HorizontalAlignment="Left"
|
|
Height="800"
|
|
Panel.ZIndex="1"
|
|
SelectionChanged="ListView_SelectionChanged"
|
|
AlternatingRowBackground="DarkGray">
|
|
<DataGrid.ColumnHeaderStyle>
|
|
<Style TargetType="DataGridColumnHeader">
|
|
<Setter Property="HorizontalContentAlignment" Value="Center"/>
|
|
<Setter Property="Background" Value="Gray"/>
|
|
<Setter Property="Foreground" Value="White"/>
|
|
<Setter Property="Padding" Value="5"/>
|
|
<Setter Property="HorizontalAlignment" Value="Stretch"/>
|
|
</Style>
|
|
</DataGrid.ColumnHeaderStyle>
|
|
|
|
<!-- your existing columns here -->
|
|
<DataGrid.Columns>
|
|
<DataGridTextColumn Header="Ramal" Binding="{Binding Ramal, UpdateSourceTrigger=PropertyChanged}" />
|
|
<DataGridTextColumn Header="Nome" Binding="{Binding Nome, UpdateSourceTrigger=PropertyChanged}" />
|
|
<DataGridTextColumn Header="Email" Binding="{Binding Email, UpdateSourceTrigger=PropertyChanged}" />
|
|
<DataGridTextColumn Header="Área" Binding="{Binding Area, UpdateSourceTrigger=PropertyChanged}" />
|
|
<DataGridTemplateColumn Header="Aniversário">
|
|
<DataGridTemplateColumn.CellTemplate>
|
|
<DataTemplate>
|
|
<DatePicker SelectedDate="{Binding Aniversario, UpdateSourceTrigger=PropertyChanged}"/>
|
|
</DataTemplate>
|
|
</DataGridTemplateColumn.CellTemplate>
|
|
</DataGridTemplateColumn>
|
|
<DataGridCheckBoxColumn Header="É Comando?" Binding="{Binding IsComando}" />
|
|
|
|
</DataGrid.Columns>
|
|
</DataGrid>
|
|
|
|
<!-- Column 1: DataGrid for MainGrid -->
|
|
<Grid Grid.Column="0" x:Name="MainGrid" HorizontalAlignment="Right" VerticalAlignment="Bottom">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="Auto"/>
|
|
<ColumnDefinition Width="Auto"/>
|
|
<ColumnDefinition Width="Auto"/>
|
|
<ColumnDefinition Width="Auto"/>
|
|
</Grid.ColumnDefinitions>
|
|
|
|
<!-- Comando -->
|
|
<DataGrid Grid.Column="0"
|
|
ItemsSource="{Binding Comando}"
|
|
AutoGenerateColumns="False"
|
|
CanUserAddRows="False">
|
|
<DataGrid.Columns>
|
|
<DataGridTextColumn Header="Ação" Binding="{Binding Nome}"/>
|
|
<DataGridTextColumn Header="Ramal" Binding="{Binding Ramal}"/>
|
|
</DataGrid.Columns>
|
|
</DataGrid>
|
|
<!-- ContatosSemCMD (First Half) -->
|
|
<DataGrid Grid.Column="1"
|
|
x:Name="ContatosSemCMDGrid1"
|
|
ItemsSource="{Binding ContatosSemCMDFirstHalf}"
|
|
AutoGenerateColumns="False"
|
|
CanUserAddRows="False">
|
|
<DataGrid.Columns>
|
|
<DataGridTextColumn Header="Nome" Binding="{Binding Nome}"/>
|
|
<DataGridTextColumn Header="Email" Binding="{Binding Email}"/>
|
|
<DataGridTextColumn Header="Ramal" Binding="{Binding Ramal}"/>
|
|
<DataGridTextColumn Header="Área" Binding="{Binding Area}"/>
|
|
</DataGrid.Columns>
|
|
</DataGrid>
|
|
<!-- ContatosSemCMD (Second Half) -->
|
|
<DataGrid Grid.Column="2"
|
|
x:Name="ContatosSemCMDGrid2"
|
|
ItemsSource="{Binding ContatosSemCMDSecondHalf}"
|
|
AutoGenerateColumns="False"
|
|
CanUserAddRows="False">
|
|
<DataGrid.Columns>
|
|
<DataGridTextColumn Header="Nome" Binding="{Binding Nome}"/>
|
|
<DataGridTextColumn Header="Email" Binding="{Binding Email}"/>
|
|
<DataGridTextColumn Header="Ramal" Binding="{Binding Ramal}"/>
|
|
<DataGridTextColumn Header="Área" Binding="{Binding Area}"/>
|
|
</DataGrid.Columns>
|
|
</DataGrid>
|
|
<!-- Aniversarios -->
|
|
<DataGrid Grid.Column="3"
|
|
ItemsSource="{Binding Aniversarios}"
|
|
AutoGenerateColumns="False"
|
|
CanUserAddRows="False">
|
|
<DataGrid.Columns>
|
|
<DataGridTextColumn Header="Nome" Binding="{Binding Nome}"/>
|
|
<DataGridTextColumn Header="Aniversário"
|
|
Binding="{Binding Aniversario,Converter={StaticResource DateNoDotConverter}}"/>
|
|
</DataGrid.Columns>
|
|
</DataGrid>
|
|
</Grid>
|
|
|
|
</Grid>
|
|
|
|
<!-- Row 1: Buttons for actions -->
|
|
<Grid Grid.Row="1"
|
|
Margin="5">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="Auto"/>
|
|
<ColumnDefinition Width="Auto"/>
|
|
<ColumnDefinition Width="*"/>
|
|
<ColumnDefinition Width="Auto"/>
|
|
<ColumnDefinition Width="Auto"/>
|
|
<ColumnDefinition Width="Auto"/>
|
|
<ColumnDefinition Width="Auto"/>
|
|
<ColumnDefinition Width="Auto"/>
|
|
<ColumnDefinition Width="Auto"/>
|
|
<ColumnDefinition Width="Auto"/>
|
|
</Grid.ColumnDefinitions>
|
|
<!-- Row 2: Image-->
|
|
<Rectangle Grid.Column="0"
|
|
Fill="Gainsboro"
|
|
Height="90"
|
|
Width="160"
|
|
>
|
|
</Rectangle>
|
|
<Image Source="{Binding BackgroundImage}" Height="90" Stretch="Uniform" Grid.Column="0"/>
|
|
<Button Content="Selecionar Imagem de Fundo…"
|
|
Command="{Binding SelectImageCommand}"
|
|
Grid.Column="1"
|
|
Padding="20,3,20,3"
|
|
Height="40"
|
|
Margin="5"/>
|
|
<TextBox Text="{Binding CaminhoBGImage}"
|
|
Grid.Column="2"
|
|
IsReadOnly="True"
|
|
Padding="20,3,20,3"
|
|
Height="40"
|
|
Margin="5"/>
|
|
<Button Content="Importar"
|
|
Command="{Binding ImportExcelCommand}"
|
|
Grid.Column="3"
|
|
FontWeight="Bold"
|
|
Padding="20,3,20,3"
|
|
Height="40"
|
|
Margin="5"/>
|
|
<Button Content="Recarregar Contatos"
|
|
Command="{Binding RefreshCommand}"
|
|
Grid.Column="4"
|
|
FontWeight="Medium"
|
|
Padding="5"
|
|
Height="40"
|
|
Margin="5"/>
|
|
<Button Content="+ Nova linha"
|
|
Command="{Binding AddCommand}"
|
|
Grid.Column = "5"
|
|
Foreground="Green"
|
|
FontWeight="Medium"
|
|
Padding="5"
|
|
Height="40"
|
|
Margin="5"/>
|
|
<Button Content="- Deletar selecionada"
|
|
Command="{Binding DeleteCommand}"
|
|
Grid.Column = "6"
|
|
Foreground="Red"
|
|
FontWeight="Medium"
|
|
Padding="5"
|
|
Height="40"
|
|
Margin="5"/>
|
|
<Button Content="Salvar dados"
|
|
Command="{Binding UpdateCommand}"
|
|
CommandParameter="RawGrid"
|
|
Grid.Column = "7"
|
|
FontWeight="Medium"
|
|
Padding="5"
|
|
Height="40"
|
|
Margin="5"/>
|
|
<Button Content="Criar Imagem -->"
|
|
Command="{Binding ExportImageCommand}"
|
|
CommandParameter="MainGrid"
|
|
Grid.Column = "8"
|
|
Foreground="Blue"
|
|
FontWeight="Bold"
|
|
Padding="5"
|
|
Height="40"
|
|
Margin="5"/>
|
|
<Button Content="Upload"
|
|
Command="{Binding UploadImageCommand}"
|
|
CommandParameter="MainGrid"
|
|
Grid.Column = "9"
|
|
FontWeight="Bold"
|
|
Padding="5"
|
|
Height="40"
|
|
Margin="5"/>
|
|
</Grid>
|
|
</Grid>
|
|
</Window> |