From f9c675eb7c1463e04c7bbf9d473ac07303867836 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81d=C3=A1m=20Kov=C3=A1cs?= Date: Fri, 4 Feb 2022 01:07:55 +0100 Subject: [PATCH] Linux tabs restore --- src/Core/FileTime.Core/Components/Tab.cs | 2 +- src/GuiApp/FileTime.Avalonia/Application/TabContainer.cs | 9 ++++++++- .../Services/StatePersistenceService.cs | 2 +- src/GuiApp/FileTime.Avalonia/Views/MainWindow.axaml.cs | 2 +- .../FileTime.Providers.Local/LocalContentProvider.cs | 5 ++++- 5 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/Core/FileTime.Core/Components/Tab.cs b/src/Core/FileTime.Core/Components/Tab.cs index 6f651e4..f0bcabc 100644 --- a/src/Core/FileTime.Core/Components/Tab.cs +++ b/src/Core/FileTime.Core/Components/Tab.cs @@ -63,7 +63,7 @@ namespace FileTime.Core.Components i.FullName == null && value?.FullName == null ? i.Name == value?.Name : i.FullName == value?.FullName); - if (itemToSelect == null) throw new IndexOutOfRangeException("Provided item does not exists in the current container."); + if (itemToSelect == null) throw new IndexOutOfRangeException($"Provided item ({value.FullName ?? "unknwon"}) does not exists in the current container ({_currentLocation.FullName ?? "unknwon"})."); } CancellationToken newToken; diff --git a/src/GuiApp/FileTime.Avalonia/Application/TabContainer.cs b/src/GuiApp/FileTime.Avalonia/Application/TabContainer.cs index aee2e6e..4410190 100644 --- a/src/GuiApp/FileTime.Avalonia/Application/TabContainer.cs +++ b/src/GuiApp/FileTime.Avalonia/Application/TabContainer.cs @@ -48,7 +48,14 @@ namespace FileTime.Avalonia.Application { if (value != null) { - SetSelectedItemAsync(value, true).Wait(); + try + { + SetSelectedItemAsync(value, true).Wait(); + } + catch + { + //TODO: Debug, linux start after restore 3 tabs + } } } } diff --git a/src/GuiApp/FileTime.Avalonia/Services/StatePersistenceService.cs b/src/GuiApp/FileTime.Avalonia/Services/StatePersistenceService.cs index d2fb6c1..cc5f786 100644 --- a/src/GuiApp/FileTime.Avalonia/Services/StatePersistenceService.cs +++ b/src/GuiApp/FileTime.Avalonia/Services/StatePersistenceService.cs @@ -58,7 +58,7 @@ namespace FileTime.Avalonia.Services catch { } } - public void SaveStatesAsync() + public void SaveStates() { var state = new PersistenceRoot { diff --git a/src/GuiApp/FileTime.Avalonia/Views/MainWindow.axaml.cs b/src/GuiApp/FileTime.Avalonia/Views/MainWindow.axaml.cs index 40209b5..d1b71cb 100644 --- a/src/GuiApp/FileTime.Avalonia/Views/MainWindow.axaml.cs +++ b/src/GuiApp/FileTime.Avalonia/Views/MainWindow.axaml.cs @@ -114,7 +114,7 @@ namespace FileTime.Avalonia.Views { try { - ViewModel?.StatePersistence.SaveStatesAsync(); + ViewModel?.StatePersistence.SaveStates(); } catch { } } diff --git a/src/Providers/FileTime.Providers.Local/LocalContentProvider.cs b/src/Providers/FileTime.Providers.Local/LocalContentProvider.cs index b25c2b6..46177e7 100644 --- a/src/Providers/FileTime.Providers.Local/LocalContentProvider.cs +++ b/src/Providers/FileTime.Providers.Local/LocalContentProvider.cs @@ -85,7 +85,10 @@ namespace FileTime.Providers.Local public bool CanHandlePath(string path) { var normalizedPath = NormalizePath(path); - return _rootContainers.Any(r => normalizedPath.StartsWith(NormalizePath(r.Name))); + Func match = RuntimeInformation.IsOSPlatform(OSPlatform.Windows) + ? c => normalizedPath.StartsWith(NormalizePath(c.Name)) + : c => normalizedPath.StartsWith(NormalizePath("/" + c.Name)); + return _rootContainers.Any(match); } public void SetParent(IContainer container) => _parent = container;