Skip to content

Commit c38219f

Browse files
authored
[Release 0.1.2] Update
[Release 0.1.2] Update
2 parents a9e82db + d07a5ee commit c38219f

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+699
-656
lines changed

src/App.xaml.cs

Lines changed: 11 additions & 114 deletions
Original file line numberDiff line numberDiff line change
@@ -4,45 +4,16 @@
44
using Microsoft.Extensions.Logging;
55
using Serilog;
66
using System.IO;
7-
using System.Net;
8-
using System.Net.Http;
9-
using System.Runtime.InteropServices;
7+
using Windows.Win32;
108
using System.Windows.Threading;
11-
using PipManager.Core.Services.PackageSearchService;
9+
using PipManager.Core.Services;
10+
using PipManager.Windows.Extensions;
1211
using PipManager.Windows.Services;
13-
using PipManager.Windows.Services.Action;
14-
using PipManager.Windows.Services.Environment;
15-
using PipManager.Windows.Services.Mask;
16-
using PipManager.Windows.Services.Overlay;
17-
using PipManager.Windows.Services.Toast;
18-
using PipManager.Windows.ViewModels.Pages.Action;
19-
using PipManager.Windows.ViewModels.Pages.Environment;
20-
using PipManager.Windows.ViewModels.Pages.Lab;
21-
using PipManager.Windows.ViewModels.Pages.Library;
22-
using PipManager.Windows.ViewModels.Pages.Overlay;
23-
using PipManager.Windows.ViewModels.Pages.Search;
24-
using PipManager.Windows.ViewModels.Pages.Tools;
2512
using PipManager.Windows.ViewModels.Windows;
26-
using PipManager.Windows.Views.Pages.About;
27-
using PipManager.Windows.Views.Pages.Action;
28-
using PipManager.Windows.Views.Pages.Environment;
29-
using PipManager.Windows.Views.Pages.Lab;
30-
using PipManager.Windows.Views.Pages.Library;
31-
using PipManager.Windows.Views.Pages.Overlay;
32-
using PipManager.Windows.Views.Pages.Search;
33-
using PipManager.Windows.Views.Pages.Settings;
34-
using PipManager.Windows.Views.Pages.Tools;
3513
using PipManager.Windows.Views.Windows;
36-
using Wpf.Ui;
3714

3815
namespace PipManager.Windows;
3916

40-
using AboutViewModel = ViewModels.Pages.About.AboutViewModel;
41-
using SettingsViewModel = ViewModels.Pages.Settings.SettingsViewModel;
42-
43-
/// <summary>
44-
/// Interaction logic for App.xaml
45-
/// </summary>
4617
public partial class App
4718
{
4819
private static readonly IHost Host = Microsoft.Extensions.Hosting.Host
@@ -57,90 +28,25 @@ public partial class App
5728
{
5829
services.AddHostedService<ApplicationHostService>();
5930

60-
services.AddTransient(_ =>
61-
{
62-
var client = new HttpClient(new HttpClientHandler { AutomaticDecompression = DecompressionMethods.All }) { DefaultRequestVersion = HttpVersion.Version20 };
63-
client.DefaultRequestHeaders.Add("User-Agent", $"PipManager.Windows/{AppInfo.AppVersion}");
64-
client.Timeout = TimeSpan.FromSeconds(6);
65-
return client;
66-
});
31+
services.AddHttpClient(AppInfo.AppVersion);
6732

68-
// Window
6933
services.AddSingleton<MainWindow>();
7034
services.AddSingleton<MainWindowViewModel>();
71-
72-
// Services
73-
services.AddSingleton<INavigationService, NavigationService>();
74-
services.AddSingleton<ISnackbarService, SnackbarService>();
75-
services.AddSingleton<IMaskService, MaskService>();
76-
services.AddSingleton<IToastService, ToastService>();
77-
services.AddSingleton<IEnvironmentService, EnvironmentService>();
78-
services.AddSingleton<IActionService, ActionService>();
79-
services.AddSingleton<IThemeService, ThemeService>();
80-
services.AddSingleton<IContentDialogService, ContentDialogService>();
81-
services.AddSingleton<ITaskBarService, TaskBarService>();
82-
services.AddSingleton<IPackageSearchService, PackageSearchService>();
83-
services.AddSingleton<IOverlayService, OverlayService>();
84-
85-
// Pages
86-
services.AddSingleton<LibraryPage>();
87-
services.AddSingleton<LibraryViewModel>();
88-
services.AddSingleton<LibraryDetailPage>();
89-
services.AddSingleton<LibraryDetailViewModel>();
90-
services.AddSingleton<LibraryInstallPage>();
91-
services.AddSingleton<LibraryInstallViewModel>();
92-
93-
services.AddSingleton<OverlayPage>();
94-
services.AddSingleton<OverlayViewModel>();
95-
96-
services.AddSingleton<ActionPage>();
97-
services.AddSingleton<ActionViewModel>();
98-
services.AddSingleton<ActionExceptionPage>();
99-
services.AddSingleton<ActionExceptionViewModel>();
100-
101-
services.AddSingleton<SearchPage>();
102-
services.AddSingleton<SearchViewModel>();
103-
services.AddSingleton<SearchDetailPage>();
104-
services.AddSingleton<SearchDetailViewModel>();
105-
106-
services.AddSingleton<ToolsPage>();
107-
services.AddSingleton<ToolsViewModel>();
10835

109-
services.AddSingleton<LabPage>();
110-
services.AddSingleton<LabViewModel>();
111-
112-
services.AddSingleton<EnvironmentPage>();
113-
services.AddSingleton<EnvironmentViewModel>();
114-
services.AddSingleton<AddEnvironmentPage>();
115-
services.AddSingleton<AddEnvironmentViewModel>();
116-
117-
services.AddSingleton<SettingsPage>();
118-
services.AddSingleton<SettingsViewModel>();
119-
services.AddSingleton<AboutPage>();
120-
services.AddSingleton<AboutViewModel>();
36+
services.RegisterServices();
37+
services.RegisterViews();
38+
services.RegisterViewModels();
12139
}).Build();
12240

123-
/// <summary>
124-
/// Gets registered service.
125-
/// </summary>
126-
/// <typeparam name="T">Type of the service to get.</typeparam>
127-
/// <returns>Instance of the service or <see langword="null"/>.</returns>
12841
public static T GetService<T>()
12942
where T : class
13043
{
13144
return Host.Services.GetService(typeof(T)) as T ?? throw new InvalidOperationException("Service not found.");
13245
}
13346

134-
[LibraryImport("kernel32.dll")]
135-
[return: MarshalAs(UnmanagedType.Bool)]
136-
private static partial void FreeConsole();
137-
13847
private bool _showConsoleWindow;
13948
public static bool IsDebugMode { get; private set; }
14049

141-
/// <summary>
142-
/// Occurs when the application is loading.
143-
/// </summary>
14450
private void OnStartup(object sender, StartupEventArgs e)
14551
{
14652
Environment.SetEnvironmentVariable("WEBVIEW2_USER_DATA_FOLDER", AppInfo.CachesDir);
@@ -154,35 +60,26 @@ private void OnStartup(object sender, StartupEventArgs e)
15460
break;
15561
}
15662
}
63+
IsDebugMode = _showConsoleWindow;
15764
var appStarting = new AppStarting
15865
{
15966
ShowConsoleWindow = _showConsoleWindow
16067
};
16168
appStarting.StartLogging();
162-
appStarting.LoadLanguage();
163-
appStarting.CachesDeletion();
69+
AppStarting.LoadLanguage();
70+
AppStarting.CachesDeletion();
16471
Host.Start();
165-
IsDebugMode = _showConsoleWindow;
16672
}
16773

168-
/// <summary>
169-
/// Occurs when the application is closing.
170-
/// </summary>
17174
private async void OnExit(object sender, ExitEventArgs e)
17275
{
173-
if (_showConsoleWindow)
174-
{
175-
FreeConsole();
176-
}
76+
if (_showConsoleWindow) PInvoke.FreeConsole();
17777
await Host.StopAsync();
17878
Host.Dispose();
17979
Log.Information("Logging ended");
18080
await Log.CloseAndFlushAsync();
18181
}
18282

183-
/// <summary>
184-
/// Occurs when an exception is thrown by an application but not handled.
185-
/// </summary>
18683
private void OnDispatcherUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e)
18784
{
18885
Log.Error($"Exception: {e.Exception}");

src/AppStarting.cs

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,13 @@
11
using Serilog;
22
using System.Globalization;
33
using System.IO;
4-
using System.Runtime.InteropServices;
4+
using Windows.Win32;
55
using PipManager.Core.Configuration;
66

77
namespace PipManager.Windows;
88

9-
public partial class AppStarting
9+
public class AppStarting
1010
{
11-
[LibraryImport("kernel32.dll")]
12-
[return: MarshalAs(UnmanagedType.Bool)]
13-
private static partial void AllocConsole();
14-
1511
public bool ShowConsoleWindow = false;
1612

1713
public AppStarting()
@@ -22,7 +18,7 @@ public AppStarting()
2218
Directory.CreateDirectory(AppInfo.CachesDir);
2319
}
2420

25-
public void LoadLanguage()
21+
public static void LoadLanguage()
2622
{
2723
var language = Configuration.AppConfig!.Personalization.Language;
2824
if (language != "Auto")
@@ -36,7 +32,7 @@ public void StartLogging()
3632
{
3733
if (ShowConsoleWindow)
3834
{
39-
AllocConsole();
35+
PInvoke.AllocConsole();
4036
}
4137
Log.Logger = new LoggerConfiguration()
4238
.Enrich.WithProperty("Version", AppInfo.AppVersion)
@@ -47,7 +43,7 @@ public void StartLogging()
4743
Log.Information("Logging started");
4844
}
4945

50-
public void CachesDeletion()
46+
public static void CachesDeletion()
5147
{
5248
if (!Directory.Exists(AppInfo.CachesDir)) return;
5349
var directoryInfo = new DirectoryInfo(AppInfo.CachesDir);

src/Controls/Toast.xaml

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,7 @@
2323
Margin="1"
2424
VerticalAlignment="Stretch">
2525

26-
<Grid
27-
HorizontalAlignment="Stretch"
28-
VerticalAlignment="Stretch"
29-
x:Name="Grid">
26+
<Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
3027

3128
<StackPanel
3229
HorizontalAlignment="Left"

src/Controls/Toast.xaml.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ private static void ShowToast(Toast toast, int time)
160160
{
161161
PopupAnimation = PopupAnimation.Fade,
162162
AllowsTransparency = true,
163-
StaysOpen = true,
163+
StaysOpen = false,
164164
Placement = PlacementMode.Top,
165165
IsOpen = false,
166166
Child = toast,

src/Converters/PackageSourceEnumToBooleanConverter.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
using System.Globalization;
22
using System.Windows.Data;
3-
using PipManager.Windows.Models.Package;
43

54
namespace PipManager.Windows.Converters;
65

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
using Microsoft.Extensions.DependencyInjection;
2+
using PipManager.Core.Services.PackageSearchService;
3+
using PipManager.Windows.Services.Action;
4+
using PipManager.Windows.Services.Environment;
5+
using PipManager.Windows.Services.Mask;
6+
using PipManager.Windows.Services.Overlay;
7+
using PipManager.Windows.Services.Page;
8+
using PipManager.Windows.Services.Toast;
9+
using PipManager.Windows.ViewModels.Pages.About;
10+
using PipManager.Windows.ViewModels.Pages.Action;
11+
using PipManager.Windows.ViewModels.Pages.Environment;
12+
using PipManager.Windows.ViewModels.Pages.Lab;
13+
using PipManager.Windows.ViewModels.Pages.Library;
14+
using PipManager.Windows.ViewModels.Pages.Overlay;
15+
using PipManager.Windows.ViewModels.Pages.Search;
16+
using PipManager.Windows.ViewModels.Pages.Settings;
17+
using PipManager.Windows.ViewModels.Pages.Tools;
18+
using PipManager.Windows.Views.Pages.About;
19+
using PipManager.Windows.Views.Pages.Action;
20+
using PipManager.Windows.Views.Pages.Environment;
21+
using PipManager.Windows.Views.Pages.Lab;
22+
using PipManager.Windows.Views.Pages.Library;
23+
using PipManager.Windows.Views.Pages.Overlay;
24+
using PipManager.Windows.Views.Pages.Search;
25+
using PipManager.Windows.Views.Pages.Settings;
26+
using PipManager.Windows.Views.Pages.Tools;
27+
using Wpf.Ui;
28+
using Wpf.Ui.Abstractions;
29+
30+
namespace PipManager.Windows.Extensions;
31+
32+
public static class ServiceRegisterExtensions
33+
{
34+
public static void RegisterServices(this IServiceCollection services)
35+
{
36+
services.AddSingleton<INavigationViewPageProvider, PageService>();
37+
services.AddSingleton<INavigationService, NavigationService>();
38+
services.AddSingleton<ISnackbarService, SnackbarService>();
39+
services.AddSingleton<IMaskService, MaskService>();
40+
services.AddSingleton<IToastService, ToastService>();
41+
services.AddSingleton<IEnvironmentService, EnvironmentService>();
42+
services.AddSingleton<IActionService, ActionService>();
43+
services.AddSingleton<IThemeService, ThemeService>();
44+
services.AddSingleton<IContentDialogService, ContentDialogService>();
45+
services.AddSingleton<ITaskBarService, TaskBarService>();
46+
services.AddSingleton<IPackageSearchService, PackageSearchService>();
47+
services.AddSingleton<IOverlayService, OverlayService>();
48+
}
49+
50+
public static void RegisterViews(this IServiceCollection services)
51+
{
52+
services.AddSingleton<LibraryPage>();
53+
services.AddSingleton<LibraryDetailPage>();
54+
services.AddSingleton<LibraryInstallPage>();
55+
services.AddSingleton<OverlayPage>();
56+
services.AddSingleton<ActionPage>();
57+
services.AddSingleton<ActionExceptionPage>();
58+
services.AddSingleton<SearchPage>();
59+
services.AddSingleton<SearchDetailPage>();
60+
services.AddSingleton<ToolsPage>();
61+
services.AddSingleton<LabPage>();
62+
services.AddSingleton<EnvironmentPage>();
63+
services.AddSingleton<AddEnvironmentPage>();
64+
services.AddSingleton<SettingsPage>();
65+
services.AddSingleton<AboutPage>();
66+
}
67+
68+
public static void RegisterViewModels(this IServiceCollection services)
69+
{
70+
services.AddSingleton<LibraryViewModel>();
71+
services.AddSingleton<LibraryDetailViewModel>();
72+
services.AddSingleton<LibraryInstallViewModel>();
73+
services.AddSingleton<OverlayViewModel>();
74+
services.AddSingleton<ActionViewModel>();
75+
services.AddSingleton<ActionExceptionViewModel>();
76+
services.AddSingleton<SearchViewModel>();
77+
services.AddSingleton<SearchDetailViewModel>();
78+
services.AddSingleton<ToolsViewModel>();
79+
services.AddSingleton<LabViewModel>();
80+
services.AddSingleton<EnvironmentViewModel>();
81+
services.AddSingleton<AddEnvironmentViewModel>();
82+
services.AddSingleton<SettingsViewModel>();
83+
services.AddSingleton<AboutViewModel>();
84+
}
85+
}

src/Models/Action/ActionListItem.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ public ActionListItem(ActionType operationType, string[] operationCommand, strin
1616
DisplayCommand = displayCommand switch
1717
{
1818
"" => string.Join(' ', operationCommand),
19-
_ => displayCommand,
19+
_ => displayCommand
2020
};
2121
OperationDescription = operationType switch
2222
{
@@ -25,7 +25,7 @@ public ActionListItem(ActionType operationType, string[] operationCommand, strin
2525
ActionType.InstallByRequirements => Lang.Action_Operation_InstallByRequirements,
2626
ActionType.Download => Lang.Action_Operation_Download,
2727
ActionType.Update => Lang.Action_Operation_Update,
28-
_ => "Unknown",
28+
_ => "Unknown"
2929
};
3030

3131
OperationIcon = operationType switch
@@ -41,7 +41,7 @@ public ActionListItem(ActionType operationType, string[] operationCommand, strin
4141
ActionType.Uninstall => "Danger",
4242
ActionType.Install or ActionType.InstallByRequirements => "Success",
4343
ActionType.Update or ActionType.Download => "Caution",
44-
_ => "Primary",
44+
_ => "Primary"
4545
};
4646
ConsoleOutput = "";
4747
ConsoleError = Lang.Action_ConsoleError_Empty;

src/NativeMethods.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
AllocConsole
2+
FreeConsole

0 commit comments

Comments
 (0)