Admin mode WIP
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
using Avalonia.Input;
|
||||
using FileTime.App.Core.UserCommand;
|
||||
using FileTime.Providers.LocalAdmin;
|
||||
|
||||
namespace FileTime.GuiApp.Configuration;
|
||||
|
||||
@@ -7,17 +8,21 @@ public static class MainConfiguration
|
||||
{
|
||||
private static readonly Lazy<List<CommandBindingConfiguration>> _defaultKeybindings = new(InitDefaultKeyBindings);
|
||||
|
||||
public static Dictionary<string, string> Configuration { get; }
|
||||
public static Dictionary<string, string?> Configuration { get; }
|
||||
|
||||
static MainConfiguration()
|
||||
{
|
||||
Configuration = new();
|
||||
Configuration = new()
|
||||
{
|
||||
{AdminElevationConfiguration.SectionName + ":" + nameof(AdminElevationConfiguration.ServerExecutablePath), "FileTime.Server.exe"},
|
||||
};
|
||||
|
||||
PopulateDefaultEditorPrograms(Configuration);
|
||||
PopulateDefaultKeyBindings(Configuration, _defaultKeybindings.Value,
|
||||
SectionNames.KeybindingSectionName + ":" + nameof(KeyBindingConfiguration.DefaultKeyBindings));
|
||||
}
|
||||
|
||||
private static void PopulateDefaultKeyBindings(Dictionary<string, string> configuration,
|
||||
private static void PopulateDefaultKeyBindings(Dictionary<string, string?> configuration,
|
||||
List<CommandBindingConfiguration> commandBindingConfigs, string basePath)
|
||||
{
|
||||
for (var i = 0; i < commandBindingConfigs.Count; i++)
|
||||
@@ -113,7 +118,7 @@ public static class MainConfiguration
|
||||
//new CommandBindingConfiguration(ConfigCommand.ToggleAdvancedIcons, new[] { Key.Z, Key.I }),
|
||||
};
|
||||
|
||||
private static void PopulateDefaultEditorPrograms(Dictionary<string, string> configuration)
|
||||
private static void PopulateDefaultEditorPrograms(Dictionary<string, string?> configuration)
|
||||
{
|
||||
var editorPrograms = new List<ProgramConfiguration>()
|
||||
{
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\..\AppCommon\FileTime.App.Core.Abstraction\FileTime.App.Core.Abstraction.csproj" />
|
||||
<ProjectReference Include="..\..\..\Core\FileTime.Core.Models\FileTime.Core.Models.csproj" />
|
||||
<ProjectReference Include="..\..\..\Providers\FileTime.Providers.LocalAdmin.Abstractions\FileTime.Providers.LocalAdmin.Abstractions.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
||||
@@ -8,6 +8,7 @@ using FileTime.App.Search;
|
||||
using FileTime.GuiApp.Font;
|
||||
using FileTime.GuiApp.ViewModels;
|
||||
using FileTime.GuiApp.Views;
|
||||
using FileTime.Server.Common;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Logging;
|
||||
|
||||
@@ -19,7 +20,8 @@ public class App : Application
|
||||
{
|
||||
var configuration = Startup.CreateConfiguration();
|
||||
DI.ServiceProvider = DependencyInjection
|
||||
.RegisterDefaultServices()
|
||||
.RegisterDefaultServices(configuration: configuration)
|
||||
.AddRemoteServices()
|
||||
.AddFrequencyNavigation()
|
||||
.AddCommandPalette()
|
||||
.AddSearch()
|
||||
|
||||
@@ -52,4 +52,7 @@
|
||||
<ItemGroup Condition="'$(Configuration)' == 'Debug'">
|
||||
<Content Include="appsettings.Development.json" CopyToOutputDirectory="PreserveNewest" />
|
||||
</ItemGroup>
|
||||
<ItemGroup Condition="'$(Configuration)' == 'Debug'">
|
||||
<Content Include="appsettings.Local.json" CopyToOutputDirectory="PreserveNewest" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Runtime.InteropServices;
|
||||
using FileTime.App.Core.Services;
|
||||
@@ -14,7 +13,6 @@ using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.DependencyInjection.Extensions;
|
||||
using Serilog;
|
||||
using Serilog.Configuration;
|
||||
|
||||
namespace FileTime.GuiApp.App;
|
||||
|
||||
@@ -25,7 +23,8 @@ public static class Startup
|
||||
var configurationBuilder = new ConfigurationBuilder()
|
||||
.AddInMemoryCollection(MainConfiguration.Configuration)
|
||||
.AddJsonFile("appsettings.json", optional: true)
|
||||
.AddJsonFile($"appsettings.{Program.EnvironmentName}.json", true);
|
||||
.AddJsonFile($"appsettings.{Program.EnvironmentName}.json", true)
|
||||
.AddJsonFile("appsettings.Local.json", optional: true);
|
||||
|
||||
var configurationDirectory = new DirectoryInfo(Path.Combine(Program.AppDataRoot, "config"));
|
||||
if (configurationDirectory.Exists)
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12,12H19C18.47,16.11 15.72,19.78 12,20.92V12H5V6.3L12,3.19M12,1L3,5V11C3,16.55 6.84,21.73 12,23C17.16,21.73 21,16.55 21,11V5L12,1Z" /></svg>
|
||||
|
After Width: | Height: | Size: 210 B |
@@ -42,6 +42,7 @@
|
||||
<ProjectReference Include="..\..\..\AppCommon\FileTime.App.Core.Abstraction\FileTime.App.Core.Abstraction.csproj" />
|
||||
<ProjectReference Include="..\..\..\AppCommon\FileTime.App.FrequencyNavigation.Abstractions\FileTime.App.FrequencyNavigation.Abstractions.csproj" />
|
||||
<ProjectReference Include="..\..\..\Providers\FileTime.Providers.Local.Abstractions\FileTime.Providers.Local.Abstractions.csproj" />
|
||||
<ProjectReference Include="..\..\..\Providers\FileTime.Providers.LocalAdmin.Abstractions\FileTime.Providers.LocalAdmin.Abstractions.csproj" />
|
||||
<ProjectReference Include="..\FileTime.GuiApp.Abstractions\FileTime.GuiApp.Abstractions.csproj" />
|
||||
<ProjectReference Include="..\FileTime.GuiApp.DesignPreview\FileTime.GuiApp.DesignPreview.csproj" />
|
||||
<ProjectReference Include="..\FileTime.GuiApp.Font.Abstractions\FileTime.GuiApp.Font.Abstractions.csproj" />
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
using FileTime.App.Core.Services;
|
||||
using FileTime.App.FrequencyNavigation.Services;
|
||||
using FileTime.GuiApp.Services;
|
||||
using FileTime.Providers.LocalAdmin;
|
||||
|
||||
namespace FileTime.GuiApp.ViewModels;
|
||||
|
||||
@@ -13,5 +14,6 @@ public interface IMainWindowViewModel : IMainWindowViewModelBase
|
||||
IDialogService DialogService { get; }
|
||||
IFrequencyNavigationService FrequencyNavigationService { get; }
|
||||
ICommandPaletteService CommandPaletteService { get; }
|
||||
public IRefreshSmoothnessCalculator RefreshSmoothnessCalculator { get; }
|
||||
IRefreshSmoothnessCalculator RefreshSmoothnessCalculator { get; }
|
||||
IAdminElevationManager AdminElevationManager { get; }
|
||||
}
|
||||
@@ -9,6 +9,7 @@ using FileTime.Core.Models;
|
||||
using FileTime.Core.Timeline;
|
||||
using FileTime.GuiApp.Services;
|
||||
using FileTime.Providers.Local;
|
||||
using FileTime.Providers.LocalAdmin;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using MvvmGen;
|
||||
|
||||
@@ -29,6 +30,7 @@ namespace FileTime.GuiApp.ViewModels;
|
||||
[Inject(typeof(IFrequencyNavigationService), PropertyAccessModifier = AccessModifier.Public)]
|
||||
[Inject(typeof(ICommandPaletteService), PropertyAccessModifier = AccessModifier.Public)]
|
||||
[Inject(typeof(IRefreshSmoothnessCalculator), PropertyAccessModifier = AccessModifier.Public)]
|
||||
[Inject(typeof(IAdminElevationManager), PropertyAccessModifier = AccessModifier.Public)]
|
||||
public partial class MainWindowViewModel : IMainWindowViewModel
|
||||
{
|
||||
public bool Loading => false;
|
||||
|
||||
@@ -62,10 +62,24 @@
|
||||
<Grid Grid.Column="1" PointerPressed="HeaderPointerPressed">
|
||||
<Rectangle Fill="#01000000" />
|
||||
|
||||
<StackPanel Margin="20,10" Orientation="Horizontal">
|
||||
<local:PathPresenter DataContext="{Binding AppState.SelectedTab^.CurrentLocation^.FullName.Path, Converter={StaticResource PathPreformatter}}" />
|
||||
<TextBlock Foreground="{StaticResource AccentBrush}" Text="{Binding AppState.SelectedTab^.CurrentSelectedItem.Value.DisplayNameText}" />
|
||||
</StackPanel>
|
||||
<Grid ColumnDefinitions="*, Auto">
|
||||
<StackPanel Margin="20,10" Orientation="Horizontal">
|
||||
<local:PathPresenter DataContext="{Binding AppState.SelectedTab^.CurrentLocation^.FullName.Path, Converter={StaticResource PathPreformatter}}" />
|
||||
<TextBlock Foreground="{StaticResource AccentBrush}" Text="{Binding AppState.SelectedTab^.CurrentSelectedItem.Value.DisplayNameText}" />
|
||||
</StackPanel>
|
||||
<StackPanel
|
||||
Grid.Column="1"
|
||||
Margin="20,10,160,10"
|
||||
Orientation="Vertical">
|
||||
<Image
|
||||
Height="20"
|
||||
HorizontalAlignment="Left"
|
||||
IsVisible="{Binding AdminElevationManager.IsAdminInstanceRunning}"
|
||||
Source="{SvgImage /Assets/material/security.svg}"
|
||||
VerticalAlignment="Center"
|
||||
Width="20" />
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</Grid>
|
||||
|
||||
<Grid Grid.Row="1" RowDefinitions="Auto,Auto,Auto,Auto">
|
||||
|
||||
Reference in New Issue
Block a user