-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #1 from ryuuzera/feat-game-download
add download feature
- Loading branch information
Showing
16 changed files
with
1,025 additions
and
26 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
<Page x:Class="TrimuiSmartHub.Application.Frames.GameDownloader" | ||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" | ||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" | ||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" | ||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" | ||
xmlns:local="clr-namespace:TrimuiSmartHub.Application.Frames" | ||
mc:Ignorable="d" | ||
d:DesignHeight="450" d:DesignWidth="800" | ||
xmlns:li="clr-namespace:LoadingIndicators.WPF;assembly=LoadingIndicators.WPF" | ||
Title="GameDownloader"> | ||
|
||
<Grid> | ||
<StackPanel x:Name="LoadingIndicator" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0,0,25,100"> | ||
<TextBlock FontSize="18" FontWeight="SemiBold" Foreground="#AAB8C2" Text="Loading Emulators" Margin="25"/> | ||
<li:LoadingIndicator SpeedRatio="1" IsActive="True" Style="{DynamicResource LoadingIndicatorThreeDotsStyle}" Foreground="#2d607f" RenderTransformOrigin="0.5,0.5" > | ||
<li:LoadingIndicator.RenderTransform> | ||
<ScaleTransform ScaleX="2" ScaleY="2" /> | ||
</li:LoadingIndicator.RenderTransform> | ||
</li:LoadingIndicator> | ||
</StackPanel> | ||
<StackPanel x:Name="RomsPanel" Visibility="Collapsed" Orientation="Vertical" Margin="0,25"> | ||
<TextBlock Text="Select a Emulator" Foreground="#AAB8C2" FontSize="16" FontWeight="SemiBold"/> | ||
<Separator Width="Auto" Margin="5, 20, 20,20" Background="#AAB8C2"/> | ||
|
||
<ScrollViewer VerticalScrollBarVisibility="Auto" Style="{StaticResource CustomScrollViewer}" > | ||
<WrapPanel Orientation="Horizontal" Margin="10" x:Name="RomsContainer"> | ||
|
||
|
||
</WrapPanel> | ||
</ScrollViewer> | ||
|
||
</StackPanel> | ||
</Grid> | ||
</Page> |
162 changes: 162 additions & 0 deletions
162
TrimuiSmartHub.Application/Frames/GameDownloader.xaml.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,162 @@ | ||
using System.IO; | ||
using System.Windows; | ||
using System.Windows.Controls; | ||
using System.Windows.Media; | ||
using System.Windows.Media.Imaging; | ||
using TrimuiSmartHub.Application.Repository; | ||
using TrimuiSmartHub.Application.Services.LibRetro; | ||
using TrimuiSmartHub.Application.Services.Trimui; | ||
using TrimuiSmartHub.Application.Helpers; | ||
using TrimuiSmartHub.Application.Services; | ||
using CsQuery.Implementation; | ||
using MahApps.Metro.Controls.Dialogs; | ||
using MahApps.Metro.Controls; | ||
using System.Linq; | ||
using TrimuiSmartHub.Application.Pages; | ||
using CsQuery.Engine.PseudoClassSelectors; | ||
|
||
namespace TrimuiSmartHub.Application.Frames | ||
{ | ||
public partial class GameDownloader : Page | ||
{ | ||
private SmartProHub Parent { get; set; } | ||
public GameDownloader(SmartProHub parent) | ||
{ | ||
InitializeComponent(); | ||
|
||
Parent = parent; | ||
|
||
PopulateEmulators(); | ||
} | ||
|
||
private void PopulateEmulators() | ||
{ | ||
Task.Run(() => | ||
{ | ||
var emulatorList = TrimuiService.New().GetEmulators(); | ||
|
||
foreach (var emulator in emulatorList) | ||
{ | ||
|
||
Dispatcher.Invoke(() => | ||
{ | ||
var emulatorCard = CreateGameComponent(emulator); | ||
|
||
if (emulatorCard != null) | ||
{ | ||
RomsContainer.Children.Add(emulatorCard); | ||
} | ||
}); | ||
} | ||
|
||
Dispatcher.Invoke(() => | ||
{ | ||
RomsPanel.Visibility = Visibility.Visible; | ||
LoadingIndicator.Visibility = Visibility.Collapsed; | ||
}); | ||
}); | ||
} | ||
private Button? CreateGameComponent(string emulator) | ||
{ | ||
string emulatorDescription; | ||
|
||
EmulatorDictionary.EmulatorMapRetrostic.TryGetValue(emulator, out emulatorDescription); | ||
|
||
if (emulatorDescription.IsNullOrEmpty()) return null; | ||
|
||
Border border = new Border | ||
{ | ||
Background = new LinearGradientBrush | ||
{ | ||
StartPoint = new Point(0.5, 0), | ||
EndPoint = new Point(0.5, 1), | ||
GradientStops = new GradientStopCollection | ||
{ | ||
new GradientStop(Color.FromArgb(35, 25, 84, 112), 1), | ||
new GradientStop(Color.FromArgb(75, 45, 84, 112), 1) | ||
} | ||
}, | ||
CornerRadius = new CornerRadius(10), | ||
Width = 120, | ||
Height = 120, | ||
Margin = new Thickness(5), | ||
BorderThickness = new Thickness(1), | ||
BorderBrush = new SolidColorBrush(Color.FromArgb(75, 45, 84, 112)), | ||
}; | ||
|
||
StackPanel stackPanel = new StackPanel | ||
{ | ||
Orientation = Orientation.Vertical, | ||
VerticalAlignment = VerticalAlignment.Center, | ||
HorizontalAlignment = HorizontalAlignment.Center | ||
}; | ||
|
||
try | ||
{ | ||
var imgSource = new BitmapImage(new Uri($"pack://application:,,,/Resources/Images/Emulators/{emulator}.png")); | ||
Image image = new Image | ||
{ | ||
Source = imgSource, | ||
Width = 70, | ||
Height = 60, | ||
VerticalAlignment = VerticalAlignment.Center, | ||
Margin = new Thickness(0, 0, 0, 0) | ||
}; | ||
|
||
RenderOptions.SetBitmapScalingMode(image, BitmapScalingMode.HighQuality); | ||
|
||
stackPanel.Children.Add(image); | ||
} | ||
catch (Exception) | ||
{ | ||
// | ||
} | ||
|
||
|
||
TextBlock titleBlock = new TextBlock | ||
{ | ||
Text = emulator, | ||
FontSize = 14, | ||
FontWeight = FontWeights.Bold, | ||
Foreground = Brushes.LightGray, | ||
HorizontalAlignment = HorizontalAlignment.Center | ||
}; | ||
|
||
stackPanel.Children.Add(titleBlock); | ||
|
||
border.Child = stackPanel; | ||
|
||
Button button = new Button | ||
{ | ||
Content = border, | ||
Style = (Style)System.Windows.Application.Current.FindResource("GameButtonStyle"), | ||
Background = Brushes.Transparent, | ||
BorderThickness = new Thickness(0), | ||
}; | ||
|
||
button.Click += async (sender, e) => | ||
{ | ||
//await Loading(true, $"Downloading games boxart..."); | ||
|
||
var count = 0; | ||
|
||
Task.Run(async () => | ||
{ | ||
//var download = RetrosticService.New().DownloadGame(emulator, "Street Fighter"); | ||
|
||
Dispatcher.Invoke(() => | ||
{ | ||
Parent.NavigationFrame.Navigate(new GameDownloaderSearch(emulator)); | ||
}); | ||
|
||
}); | ||
|
||
//await Loading(false); | ||
|
||
//await ShowMessageAsync("Download Completed!", (count > 0) ? $"{count} Files was updated!" : "The boxarts already updated!"); | ||
}; | ||
|
||
return button; | ||
} | ||
} | ||
} |
141 changes: 141 additions & 0 deletions
141
TrimuiSmartHub.Application/Frames/GameDownloaderSearch.xaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,141 @@ | ||
<Page x:Class="TrimuiSmartHub.Application.Frames.GameDownloaderSearch" | ||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" | ||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" | ||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" | ||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" | ||
xmlns:local="clr-namespace:TrimuiSmartHub.Application.Frames" | ||
mc:Ignorable="d" | ||
d:DesignHeight="450" d:DesignWidth="800" | ||
xmlns:li="clr-namespace:LoadingIndicators.WPF;assembly=LoadingIndicators.WPF" | ||
Title="GameDownloaderSearch"> | ||
|
||
<Grid> | ||
<StackPanel x:Name="LoadingComponent" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0,0,25,100"> | ||
<TextBlock FontSize="18" FontWeight="SemiBold" Foreground="#AAB8C2" Text="Searching Games..." Margin="25"/> | ||
<li:LoadingIndicator SpeedRatio="1" IsActive="True" Style="{DynamicResource LoadingIndicatorThreeDotsStyle}" Foreground="#2d607f" RenderTransformOrigin="0.5,0.5" > | ||
<li:LoadingIndicator.RenderTransform> | ||
<ScaleTransform ScaleX="2" ScaleY="2" /> | ||
</li:LoadingIndicator.RenderTransform> | ||
</li:LoadingIndicator> | ||
</StackPanel> | ||
<Grid> | ||
<Grid.RowDefinitions> | ||
<RowDefinition Height="80" /> | ||
<RowDefinition Height="Auto" /> | ||
</Grid.RowDefinitions> | ||
<Grid.ColumnDefinitions> | ||
<ColumnDefinition Width="*"/> | ||
</Grid.ColumnDefinitions> | ||
|
||
<Grid> | ||
<Grid.ColumnDefinitions> | ||
<ColumnDefinition Width="*"/> | ||
<ColumnDefinition Width="150"/> | ||
</Grid.ColumnDefinitions> | ||
<TextBlock x:Name="ConsoleName" Margin="35,0,15,0" Text="Console Name" FontSize="16" FontWeight="SemiBold" | ||
Foreground="#AAB8C2" /> | ||
<Border Margin="30,15,15,0" | ||
Background="#4DF0F0F0" | ||
BorderBrush="Transparent" | ||
BorderThickness="1" | ||
CornerRadius="5" | ||
HorizontalAlignment="Stretch" | ||
Height="35"> | ||
<Grid> | ||
<Grid.ColumnDefinitions> | ||
<ColumnDefinition Width="Auto"/> | ||
<ColumnDefinition Width="*"/> | ||
<ColumnDefinition Width="100"/> | ||
</Grid.ColumnDefinitions> | ||
|
||
<TextBlock Text="" | ||
FontFamily="Segoe MDL2 Assets" | ||
VerticalAlignment="Center" | ||
Margin="10,0,0,0" | ||
FontSize="16" | ||
Foreground="#AAB8C2"/> | ||
|
||
<!--<TextBox x:Name="searchTextBox" | ||
Grid.Column="1" | ||
Margin="10,0,10,0" | ||
VerticalAlignment="Center" | ||
Background="Transparent" | ||
BorderThickness="0" | ||
FontSize="14" | ||
Foreground="Black" | ||
Text="Search ROMs..." | ||
/>--> | ||
<Grid Grid.Column="1"> | ||
<TextBox Width="250" FontSize="14" Foreground="#AAB8C2" Background="Transparent" BorderThickness="0" VerticalAlignment="Center" HorizontalAlignment="Left" x:Name="SearchTermTextBox" Margin="5"/> | ||
<TextBlock IsHitTestVisible="False" | ||
FontSize="14" | ||
Text="Enter the game name to search..." | ||
VerticalAlignment="Center" | ||
HorizontalAlignment="Left" | ||
Margin="10,0,0,0" | ||
Foreground="#AAB8C2" > | ||
<TextBlock.Style> | ||
<Style TargetType="{x:Type TextBlock}"> | ||
<Setter Property="Visibility" Value="Collapsed"/> | ||
<Style.Triggers> | ||
<DataTrigger Binding="{Binding Text, ElementName=SearchTermTextBox}" Value=""> | ||
<Setter Property="Visibility" Value="Visible"/> | ||
</DataTrigger> | ||
</Style.Triggers> | ||
</Style> | ||
</TextBlock.Style> | ||
</TextBlock> | ||
</Grid> | ||
</Grid> | ||
</Border> | ||
<Button Background="#22384f" Height="33" Margin="0, 15,20,0" Grid.Column="1" Cursor="Hand" Click="Search_Button_Click"> | ||
<Button.Content> | ||
<TextBlock Text="Search" Foreground="#AAB8C2" FontSize="14" FontWeight="Medium" /> | ||
</Button.Content> | ||
</Button> | ||
</Grid> | ||
|
||
<StackPanel Grid.Row="1" Margin="10"> | ||
<Border Padding="5" Background="#B31c2e41" CornerRadius="5"> | ||
<Grid> | ||
<Grid.ColumnDefinitions> | ||
<ColumnDefinition Width="150"/> | ||
<ColumnDefinition Width="3*"/> | ||
<ColumnDefinition Width="*"/> | ||
</Grid.ColumnDefinitions> | ||
|
||
|
||
<TextBlock Text="Image" | ||
Foreground="#AAB8C2" | ||
VerticalAlignment="Center" | ||
FontSize="14" | ||
FontWeight="Bold" | ||
HorizontalAlignment="Center" | ||
Grid.Column="0" | ||
Margin="10,0"/> | ||
|
||
<TextBlock Text="Name" | ||
Foreground="#AAB8C2" | ||
FontWeight="Bold" | ||
FontSize="14" | ||
VerticalAlignment="Center" | ||
Grid.Column="1" | ||
Margin="20,0"/> | ||
<TextBlock Text="Region" | ||
Foreground="#AAB8C2" | ||
FontWeight="Bold" | ||
FontSize="14" | ||
VerticalAlignment="Center" | ||
Grid.Column="2" | ||
Margin="20,0"/> | ||
</Grid> | ||
</Border> | ||
<ScrollViewer Grid.Row="1" VerticalScrollBarVisibility="Auto" Height="580"> | ||
<WrapPanel Orientation="Vertical" x:Name="Container" Margin="0,10,0,0" Visibility="Collapsed"> | ||
|
||
</WrapPanel> | ||
</ScrollViewer> | ||
</StackPanel> | ||
</Grid> | ||
</Grid> | ||
</Page> |
Oops, something went wrong.