diff --git a/.editorconfig b/.editorconfig
index 35af4a6..9d2b516 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -1,2 +1,4 @@
[*.cs]
-dotnet_diagnostic.RCS1196.severity = none
\ No newline at end of file
+dotnet_diagnostic.RCS1196.severity = none
+csharp_style_namespace_declarations = file_scoped:error
+dotnet_diagnostic.IDE0161.severity = error
\ No newline at end of file
diff --git a/src/AppCommon/FileTime.App.Core.Abstraction/Command/Commands.cs b/src/AppCommon/FileTime.App.Core.Abstraction/Command/Commands.cs
index 22a7765..cde308b 100644
--- a/src/AppCommon/FileTime.App.Core.Abstraction/Command/Commands.cs
+++ b/src/AppCommon/FileTime.App.Core.Abstraction/Command/Commands.cs
@@ -1,66 +1,65 @@
-namespace FileTime.App.Core.Command
-{
- public enum Commands
- {
- None,
+namespace FileTime.App.Core.Command;
- AutoRefresh,
- ChangeTimelineMode,
- CloseTab,
- Compress,
- Copy,
- CopyHash,
- CopyPath,
- CreateContainer,
- CreateElement,
- Cut,
- Edit,
- EnterRapidTravel,
- FindByName,
- FindByNameRegex,
- GoToHome,
- GoToPath,
- GoToProvider,
- GoToRoot,
- GoUp,
- HardDelete,
- Mark,
- MoveCursorDown,
- MoveCursorDownPage,
- MoveCursorUp,
- MoveCursorUpPage,
- MoveToFirst,
- MoveToLast,
- NextTimelineBlock,
- NextTimelineCommand,
- Open,
- OpenInFileBrowser,
- OpenOrRun,
- PasteMerge,
- PasteOverwrite,
- PasteSkip,
- PinFavorite,
- PreviousTimelineBlock,
- PreviousTimelineCommand,
- Refresh,
- Rename,
- RunCommand,
- ScanContainerSize,
- ShowAllShotcut,
- SoftDelete,
- SwitchToLastTab,
- SwitchToTab1,
- SwitchToTab2,
- SwitchToTab3,
- SwitchToTab4,
- SwitchToTab5,
- SwitchToTab6,
- SwitchToTab7,
- SwitchToTab8,
- TimelinePause,
- TimelineRefresh,
- TimelineStart,
- ToggleAdvancedIcons,
- ToggleHidden,
- }
+public enum Commands
+{
+ None,
+
+ AutoRefresh,
+ ChangeTimelineMode,
+ CloseTab,
+ Compress,
+ Copy,
+ CopyHash,
+ CopyPath,
+ CreateContainer,
+ CreateElement,
+ Cut,
+ Edit,
+ EnterRapidTravel,
+ FindByName,
+ FindByNameRegex,
+ GoToHome,
+ GoToPath,
+ GoToProvider,
+ GoToRoot,
+ GoUp,
+ HardDelete,
+ Mark,
+ MoveCursorDown,
+ MoveCursorDownPage,
+ MoveCursorUp,
+ MoveCursorUpPage,
+ MoveToFirst,
+ MoveToLast,
+ NextTimelineBlock,
+ NextTimelineCommand,
+ Open,
+ OpenInFileBrowser,
+ OpenOrRun,
+ PasteMerge,
+ PasteOverwrite,
+ PasteSkip,
+ PinFavorite,
+ PreviousTimelineBlock,
+ PreviousTimelineCommand,
+ Refresh,
+ Rename,
+ RunCommand,
+ ScanContainerSize,
+ ShowAllShotcut,
+ SoftDelete,
+ SwitchToLastTab,
+ SwitchToTab1,
+ SwitchToTab2,
+ SwitchToTab3,
+ SwitchToTab4,
+ SwitchToTab5,
+ SwitchToTab6,
+ SwitchToTab7,
+ SwitchToTab8,
+ TimelinePause,
+ TimelineRefresh,
+ TimelineStart,
+ ToggleAdvancedIcons,
+ ToggleHidden,
}
\ No newline at end of file
diff --git a/src/AppCommon/FileTime.App.Core.Abstraction/FileTime.App.Core.Abstraction.csproj b/src/AppCommon/FileTime.App.Core.Abstraction/FileTime.App.Core.Abstraction.csproj
index d2d0d89..64ce252 100644
--- a/src/AppCommon/FileTime.App.Core.Abstraction/FileTime.App.Core.Abstraction.csproj
+++ b/src/AppCommon/FileTime.App.Core.Abstraction/FileTime.App.Core.Abstraction.csproj
@@ -6,6 +6,10 @@
enable
+
+ true
+
+
diff --git a/src/AppCommon/FileTime.App.Core.Abstraction/Models/BindedCollection.cs b/src/AppCommon/FileTime.App.Core.Abstraction/Models/BindedCollection.cs
index fb2a153..8287d63 100644
--- a/src/AppCommon/FileTime.App.Core.Abstraction/Models/BindedCollection.cs
+++ b/src/AppCommon/FileTime.App.Core.Abstraction/Models/BindedCollection.cs
@@ -1,26 +1,25 @@
using System.Collections.ObjectModel;
using DynamicData;
-namespace FileTime.App.Core.Models
+namespace FileTime.App.Core.Models;
+
+public class BindedCollection : IDisposable
{
- public class BindedCollection : IDisposable
+ private readonly IDisposable _disposable;
+ public ReadOnlyObservableCollection Collection { get; }
+ public BindedCollection(IObservable> dynamicList)
{
- private readonly IDisposable _disposable;
- public ReadOnlyObservableCollection Collection { get; }
- public BindedCollection(IObservable> dynamicList)
- {
- _disposable = dynamicList
- .Bind(out var collection)
- .DisposeMany()
- .Subscribe();
+ _disposable = dynamicList
+ .Bind(out var collection)
+ .DisposeMany()
+ .Subscribe();
- Collection = collection;
- }
+ Collection = collection;
+ }
- public void Dispose()
- {
- _disposable.Dispose();
- GC.SuppressFinalize(this);
- }
+ public void Dispose()
+ {
+ _disposable.Dispose();
+ GC.SuppressFinalize(this);
}
}
\ No newline at end of file
diff --git a/src/AppCommon/FileTime.App.Core.Abstraction/Models/Enums/ItemAttributeType.cs b/src/AppCommon/FileTime.App.Core.Abstraction/Models/Enums/ItemAttributeType.cs
index 030402b..09e9074 100644
--- a/src/AppCommon/FileTime.App.Core.Abstraction/Models/Enums/ItemAttributeType.cs
+++ b/src/AppCommon/FileTime.App.Core.Abstraction/Models/Enums/ItemAttributeType.cs
@@ -1,10 +1,9 @@
-namespace FileTime.App.Core.Models.Enums
+namespace FileTime.App.Core.Models.Enums;
+
+public enum ItemAttributeType
{
- public enum ItemAttributeType
- {
- File,
- Element,
- Container,
- SizeContainer
- }
+ File,
+ Element,
+ Container,
+ SizeContainer
}
\ No newline at end of file
diff --git a/src/AppCommon/FileTime.App.Core.Abstraction/Models/Enums/ItemViewMode.cs b/src/AppCommon/FileTime.App.Core.Abstraction/Models/Enums/ItemViewMode.cs
index 2f8eb6e..ec0052f 100644
--- a/src/AppCommon/FileTime.App.Core.Abstraction/Models/Enums/ItemViewMode.cs
+++ b/src/AppCommon/FileTime.App.Core.Abstraction/Models/Enums/ItemViewMode.cs
@@ -1,12 +1,11 @@
-namespace FileTime.App.Core.Models.Enums
+namespace FileTime.App.Core.Models.Enums;
+
+public enum ItemViewMode
{
- public enum ItemViewMode
- {
- Default,
- Alternative,
- Selected,
- Marked,
- MarkedSelected,
- MarkedAlternative
- }
+ Default,
+ Alternative,
+ Selected,
+ Marked,
+ MarkedSelected,
+ MarkedAlternative
}
\ No newline at end of file
diff --git a/src/AppCommon/FileTime.App.Core.Abstraction/Models/Enums/ViewMode.cs b/src/AppCommon/FileTime.App.Core.Abstraction/Models/Enums/ViewMode.cs
index 5cff236..b11da9b 100644
--- a/src/AppCommon/FileTime.App.Core.Abstraction/Models/Enums/ViewMode.cs
+++ b/src/AppCommon/FileTime.App.Core.Abstraction/Models/Enums/ViewMode.cs
@@ -1,8 +1,7 @@
-namespace FileTime.App.Core.Models.Enums
+namespace FileTime.App.Core.Models.Enums;
+
+public enum ViewMode
{
- public enum ViewMode
- {
- Default,
- RapidTravel
- }
+ Default,
+ RapidTravel
}
\ No newline at end of file
diff --git a/src/AppCommon/FileTime.App.Core.Abstraction/Models/ItemNamePart.cs b/src/AppCommon/FileTime.App.Core.Abstraction/Models/ItemNamePart.cs
index 81e01fe..946b30c 100644
--- a/src/AppCommon/FileTime.App.Core.Abstraction/Models/ItemNamePart.cs
+++ b/src/AppCommon/FileTime.App.Core.Abstraction/Models/ItemNamePart.cs
@@ -1,14 +1,13 @@
-namespace FileTime.App.Core.Models
-{
- public class ItemNamePart
- {
- public string Text { get; set; }
- public bool IsSpecial { get; set; }
+namespace FileTime.App.Core.Models;
- public ItemNamePart(string text, bool isSpecial = false)
- {
- Text = text;
- IsSpecial = isSpecial;
- }
+public class ItemNamePart
+{
+ public string Text { get; set; }
+ public bool IsSpecial { get; set; }
+
+ public ItemNamePart(string text, bool isSpecial = false)
+ {
+ Text = text;
+ IsSpecial = isSpecial;
}
}
\ No newline at end of file
diff --git a/src/AppCommon/FileTime.App.Core.Abstraction/Services/IClipboardService.cs b/src/AppCommon/FileTime.App.Core.Abstraction/Services/IClipboardService.cs
index 2dc008e..16f4a40 100644
--- a/src/AppCommon/FileTime.App.Core.Abstraction/Services/IClipboardService.cs
+++ b/src/AppCommon/FileTime.App.Core.Abstraction/Services/IClipboardService.cs
@@ -1,16 +1,15 @@
using FileTime.Core.Command;
using FileTime.Core.Models;
-namespace FileTime.App.Core.Services
-{
- public interface IClipboardService
- {
- Type? CommandType { get; }
- IReadOnlyList Content { get; }
+namespace FileTime.App.Core.Services;
- void AddContent(IAbsolutePath absolutePath);
- void RemoveContent(IAbsolutePath absolutePath);
- void Clear();
- void SetCommand() where T : ITransportationCommand;
- }
+public interface IClipboardService
+{
+ Type? CommandType { get; }
+ IReadOnlyList Content { get; }
+
+ void AddContent(IAbsolutePath absolutePath);
+ void RemoveContent(IAbsolutePath absolutePath);
+ void Clear();
+ void SetCommand() where T : ITransportationCommand;
}
\ No newline at end of file
diff --git a/src/AppCommon/FileTime.App.Core.Abstraction/Services/ICommandHandler.cs b/src/AppCommon/FileTime.App.Core.Abstraction/Services/ICommandHandler.cs
index 67156c7..116fb4f 100644
--- a/src/AppCommon/FileTime.App.Core.Abstraction/Services/ICommandHandler.cs
+++ b/src/AppCommon/FileTime.App.Core.Abstraction/Services/ICommandHandler.cs
@@ -1,10 +1,9 @@
using FileTime.App.Core.Command;
-namespace FileTime.App.Core.Services
+namespace FileTime.App.Core.Services;
+
+public interface ICommandHandler
{
- public interface ICommandHandler
- {
- bool CanHandleCommand(Commands command);
- Task HandleCommandAsync(Commands command);
- }
+ bool CanHandleCommand(Commands command);
+ Task HandleCommandAsync(Commands command);
}
\ No newline at end of file
diff --git a/src/AppCommon/FileTime.App.Core.Abstraction/Services/ICommandHandlerService.cs b/src/AppCommon/FileTime.App.Core.Abstraction/Services/ICommandHandlerService.cs
index 4f43ccc..b48cef7 100644
--- a/src/AppCommon/FileTime.App.Core.Abstraction/Services/ICommandHandlerService.cs
+++ b/src/AppCommon/FileTime.App.Core.Abstraction/Services/ICommandHandlerService.cs
@@ -1,9 +1,8 @@
using FileTime.App.Core.Command;
-namespace FileTime.App.Core.Services
+namespace FileTime.App.Core.Services;
+
+public interface ICommandHandlerService
{
- public interface ICommandHandlerService
- {
- Task HandleCommandAsync(Commands command);
- }
+ Task HandleCommandAsync(Commands command);
}
\ No newline at end of file
diff --git a/src/AppCommon/FileTime.App.Core.Abstraction/Services/IItemNameConverterService.cs b/src/AppCommon/FileTime.App.Core.Abstraction/Services/IItemNameConverterService.cs
index 72825c1..fac1901 100644
--- a/src/AppCommon/FileTime.App.Core.Abstraction/Services/IItemNameConverterService.cs
+++ b/src/AppCommon/FileTime.App.Core.Abstraction/Services/IItemNameConverterService.cs
@@ -1,11 +1,10 @@
using FileTime.App.Core.Models;
-namespace FileTime.App.Core.Services
+namespace FileTime.App.Core.Services;
+
+public interface IItemNameConverterService
{
- public interface IItemNameConverterService
- {
- List GetDisplayName(string name, string? searchText);
- string GetFileExtension(string fullName);
- string GetFileName(string fullName);
- }
+ List GetDisplayName(string name, string? searchText);
+ string GetFileExtension(string fullName);
+ string GetFileName(string fullName);
}
\ No newline at end of file
diff --git a/src/AppCommon/FileTime.App.Core.Abstraction/Services/IRxSchedulerService.cs b/src/AppCommon/FileTime.App.Core.Abstraction/Services/IRxSchedulerService.cs
index e9310bf..6b114ff 100644
--- a/src/AppCommon/FileTime.App.Core.Abstraction/Services/IRxSchedulerService.cs
+++ b/src/AppCommon/FileTime.App.Core.Abstraction/Services/IRxSchedulerService.cs
@@ -1,10 +1,9 @@
using System.Reactive.Concurrency;
-namespace FileTime.App.Core.Services
+namespace FileTime.App.Core.Services;
+
+public interface IRxSchedulerService
{
- public interface IRxSchedulerService
- {
- IScheduler GetWorkerScheduler();
- IScheduler GetUIScheduler();
- }
+ IScheduler GetWorkerScheduler();
+ IScheduler GetUIScheduler();
}
\ No newline at end of file
diff --git a/src/AppCommon/FileTime.App.Core.Abstraction/ViewModels/IAppState.cs b/src/AppCommon/FileTime.App.Core.Abstraction/ViewModels/IAppState.cs
index 1b322ef..77cc837 100644
--- a/src/AppCommon/FileTime.App.Core.Abstraction/ViewModels/IAppState.cs
+++ b/src/AppCommon/FileTime.App.Core.Abstraction/ViewModels/IAppState.cs
@@ -1,17 +1,16 @@
using System.Collections.ObjectModel;
using FileTime.App.Core.Models.Enums;
-namespace FileTime.App.Core.ViewModels
-{
- public interface IAppState
- {
- ObservableCollection Tabs { get; }
- IObservable SelectedTab { get; }
- IObservable SearchText { get; }
- ViewMode ViewMode { get; }
+namespace FileTime.App.Core.ViewModels;
- void AddTab(ITabViewModel tabViewModel);
- void RemoveTab(ITabViewModel tabViewModel);
- void SetSearchText(string? searchText);
- }
+public interface IAppState
+{
+ ObservableCollection Tabs { get; }
+ IObservable SelectedTab { get; }
+ IObservable SearchText { get; }
+ ViewMode ViewMode { get; }
+
+ void AddTab(ITabViewModel tabViewModel);
+ void RemoveTab(ITabViewModel tabViewModel);
+ void SetSearchText(string? searchText);
}
\ No newline at end of file
diff --git a/src/AppCommon/FileTime.App.Core.Abstraction/ViewModels/IContainerSizeContainerViewModel.cs b/src/AppCommon/FileTime.App.Core.Abstraction/ViewModels/IContainerSizeContainerViewModel.cs
index 5d01f51..7d95dbb 100644
--- a/src/AppCommon/FileTime.App.Core.Abstraction/ViewModels/IContainerSizeContainerViewModel.cs
+++ b/src/AppCommon/FileTime.App.Core.Abstraction/ViewModels/IContainerSizeContainerViewModel.cs
@@ -1,10 +1,9 @@
using FileTime.Core.Models;
using InitableService;
-namespace FileTime.App.Core.ViewModels
+namespace FileTime.App.Core.ViewModels;
+
+public interface IContainerSizeContainerViewModel : IItemViewModel, IInitable
{
- public interface IContainerSizeContainerViewModel : IItemViewModel, IInitable
- {
- long Size { get; set; }
- }
+ long Size { get; set; }
}
\ No newline at end of file
diff --git a/src/AppCommon/FileTime.App.Core.Abstraction/ViewModels/IContainerViewModel.cs b/src/AppCommon/FileTime.App.Core.Abstraction/ViewModels/IContainerViewModel.cs
index 2125333..387d7f1 100644
--- a/src/AppCommon/FileTime.App.Core.Abstraction/ViewModels/IContainerViewModel.cs
+++ b/src/AppCommon/FileTime.App.Core.Abstraction/ViewModels/IContainerViewModel.cs
@@ -1,10 +1,9 @@
using FileTime.Core.Models;
using InitableService;
-namespace FileTime.App.Core.ViewModels
+namespace FileTime.App.Core.ViewModels;
+
+public interface IContainerViewModel : IItemViewModel, IInitable
{
- public interface IContainerViewModel : IItemViewModel, IInitable
- {
- IContainer? Container { get; }
- }
+ IContainer? Container { get; }
}
\ No newline at end of file
diff --git a/src/AppCommon/FileTime.App.Core.Abstraction/ViewModels/IElementViewModel.cs b/src/AppCommon/FileTime.App.Core.Abstraction/ViewModels/IElementViewModel.cs
index 84fef93..5ea0814 100644
--- a/src/AppCommon/FileTime.App.Core.Abstraction/ViewModels/IElementViewModel.cs
+++ b/src/AppCommon/FileTime.App.Core.Abstraction/ViewModels/IElementViewModel.cs
@@ -1,10 +1,9 @@
using FileTime.Core.Models;
using InitableService;
-namespace FileTime.App.Core.ViewModels
+namespace FileTime.App.Core.ViewModels;
+
+public interface IElementViewModel : IItemViewModel, IInitable
{
- public interface IElementViewModel : IItemViewModel, IInitable
- {
- long? Size { get; set; }
- }
+ long? Size { get; set; }
}
\ No newline at end of file
diff --git a/src/AppCommon/FileTime.App.Core.Abstraction/ViewModels/IFileViewModel.cs b/src/AppCommon/FileTime.App.Core.Abstraction/ViewModels/IFileViewModel.cs
index 22118e6..e3f0c0f 100644
--- a/src/AppCommon/FileTime.App.Core.Abstraction/ViewModels/IFileViewModel.cs
+++ b/src/AppCommon/FileTime.App.Core.Abstraction/ViewModels/IFileViewModel.cs
@@ -1,9 +1,8 @@
using FileTime.Core.Models;
using InitableService;
-namespace FileTime.App.Core.ViewModels
+namespace FileTime.App.Core.ViewModels;
+
+public interface IFileViewModel : IElementViewModel, IInitable
{
- public interface IFileViewModel : IElementViewModel, IInitable
- {
- }
}
\ No newline at end of file
diff --git a/src/AppCommon/FileTime.App.Core.Abstraction/ViewModels/IItemViewModel.cs b/src/AppCommon/FileTime.App.Core.Abstraction/ViewModels/IItemViewModel.cs
index ceeded9..15daeae 100644
--- a/src/AppCommon/FileTime.App.Core.Abstraction/ViewModels/IItemViewModel.cs
+++ b/src/AppCommon/FileTime.App.Core.Abstraction/ViewModels/IItemViewModel.cs
@@ -3,19 +3,18 @@ using FileTime.App.Core.Models.Enums;
using FileTime.Core.Models;
using InitableService;
-namespace FileTime.App.Core.ViewModels
+namespace FileTime.App.Core.ViewModels;
+
+public interface IItemViewModel : IInitable
{
- public interface IItemViewModel : IInitable
- {
- IItem? BaseItem { get; set; }
- IObservable>? DisplayName { get; set; }
- string? DisplayNameText { get; set; }
- IObservable? IsSelected { get; set; }
- IObservable? IsMarked { get; set; }
- IObservable IsAlternative { get; }
- IObservable ViewMode { get; set; }
- DateTime? CreatedAt { get; set; }
- string? Attributes { get; set; }
- bool EqualsTo(IItemViewModel? itemViewModel);
- }
+ IItem? BaseItem { get; set; }
+ IObservable>? DisplayName { get; set; }
+ string? DisplayNameText { get; set; }
+ IObservable? IsSelected { get; set; }
+ IObservable? IsMarked { get; set; }
+ IObservable IsAlternative { get; }
+ IObservable ViewMode { get; set; }
+ DateTime? CreatedAt { get; set; }
+ string? Attributes { get; set; }
+ bool EqualsTo(IItemViewModel? itemViewModel);
}
\ No newline at end of file
diff --git a/src/AppCommon/FileTime.App.Core.Abstraction/ViewModels/ITabViewModel.cs b/src/AppCommon/FileTime.App.Core.Abstraction/ViewModels/ITabViewModel.cs
index bc1c7d9..be498e7 100644
--- a/src/AppCommon/FileTime.App.Core.Abstraction/ViewModels/ITabViewModel.cs
+++ b/src/AppCommon/FileTime.App.Core.Abstraction/ViewModels/ITabViewModel.cs
@@ -5,26 +5,25 @@ using FileTime.Core.Models;
using FileTime.Core.Services;
using InitableService;
-namespace FileTime.App.Core.ViewModels
+namespace FileTime.App.Core.ViewModels;
+
+public interface ITabViewModel : IInitable
{
- public interface ITabViewModel : IInitable
- {
- ITab? Tab { get; }
- int TabNumber { get; }
- IObservable IsSelected { get; }
- IObservable CurrentLocation { get; }
- IObservable CurrentSelectedItem { get; }
- IObservable>?> CurrentItems { get; }
- IObservable> MarkedItems { get; }
- IObservable>?> SelectedsChildren { get; }
- IObservable>?> ParentsChildren { get; }
- BindedCollection? CurrentItemsCollection { get; }
- BindedCollection? SelectedsChildrenCollection { get; }
- BindedCollection? ParentsChildrenCollection { get; }
- IObservable?> CurrentItemsCollectionObservable { get; }
- void ClearMarkedItems();
- void RemoveMarkedItem(IAbsolutePath item);
- void AddMarkedItem(IAbsolutePath item);
- void ToggleMarkedItem(IAbsolutePath item);
- }
+ ITab? Tab { get; }
+ int TabNumber { get; }
+ IObservable IsSelected { get; }
+ IObservable CurrentLocation { get; }
+ IObservable CurrentSelectedItem { get; }
+ IObservable>?> CurrentItems { get; }
+ IObservable> MarkedItems { get; }
+ IObservable>?> SelectedsChildren { get; }
+ IObservable>?> ParentsChildren { get; }
+ BindedCollection? CurrentItemsCollection { get; }
+ BindedCollection? SelectedsChildrenCollection { get; }
+ BindedCollection? ParentsChildrenCollection { get; }
+ IObservable?> CurrentItemsCollectionObservable { get; }
+ void ClearMarkedItems();
+ void RemoveMarkedItem(IAbsolutePath item);
+ void AddMarkedItem(IAbsolutePath item);
+ void ToggleMarkedItem(IAbsolutePath item);
}
\ No newline at end of file
diff --git a/src/AppCommon/FileTime.App.Core/Extensions/ObservableExtensions.cs b/src/AppCommon/FileTime.App.Core/Extensions/ObservableExtensions.cs
index 727666f..2895890 100644
--- a/src/AppCommon/FileTime.App.Core/Extensions/ObservableExtensions.cs
+++ b/src/AppCommon/FileTime.App.Core/Extensions/ObservableExtensions.cs
@@ -1,9 +1,8 @@
using System.Reactive.Linq;
-namespace FileTime.App.Core.Extensions
+namespace FileTime.App.Core.Extensions;
+
+public static class ObservableExtensions
{
- public static class ObservableExtensions
- {
- public static IObservable WhereNotNull(this IObservable source) => source.Where(c => c != null)!;
- }
+ public static IObservable WhereNotNull(this IObservable source) => source.Where(c => c != null)!;
}
\ No newline at end of file
diff --git a/src/AppCommon/FileTime.App.Core/Extensions/ViewModelExtensions.cs b/src/AppCommon/FileTime.App.Core/Extensions/ViewModelExtensions.cs
index 377afae..5e91b89 100644
--- a/src/AppCommon/FileTime.App.Core/Extensions/ViewModelExtensions.cs
+++ b/src/AppCommon/FileTime.App.Core/Extensions/ViewModelExtensions.cs
@@ -1,14 +1,13 @@
using FileTime.App.Core.ViewModels;
using FileTime.Core.Models;
-namespace FileTime.App.Core.Extensions
+namespace FileTime.App.Core.Extensions;
+
+public static class ViewModelExtensions
{
- public static class ViewModelExtensions
+ public static IAbsolutePath ToAbsolutePath(this IItemViewModel itemViewModel)
{
- public static IAbsolutePath ToAbsolutePath(this IItemViewModel itemViewModel)
- {
- var item = itemViewModel.BaseItem ?? throw new ArgumentException($"{nameof(itemViewModel)} does not have {nameof(IItemViewModel.BaseItem)}");
- return new AbsolutePath(item);
- }
+ var item = itemViewModel.BaseItem ?? throw new ArgumentException($"{nameof(itemViewModel)} does not have {nameof(IItemViewModel.BaseItem)}");
+ return new AbsolutePath(item);
}
}
\ No newline at end of file
diff --git a/src/AppCommon/FileTime.App.Core/FileTime.App.Core.csproj b/src/AppCommon/FileTime.App.Core/FileTime.App.Core.csproj
index c889896..228348f 100644
--- a/src/AppCommon/FileTime.App.Core/FileTime.App.Core.csproj
+++ b/src/AppCommon/FileTime.App.Core/FileTime.App.Core.csproj
@@ -6,6 +6,10 @@
enable
+
+ true
+
+
diff --git a/src/AppCommon/FileTime.App.Core/Services/ClipboardService.cs b/src/AppCommon/FileTime.App.Core/Services/ClipboardService.cs
index e00a298..beeed61 100644
--- a/src/AppCommon/FileTime.App.Core/Services/ClipboardService.cs
+++ b/src/AppCommon/FileTime.App.Core/Services/ClipboardService.cs
@@ -1,51 +1,50 @@
using FileTime.Core.Command;
using FileTime.Core.Models;
-namespace FileTime.App.Core.Services
+namespace FileTime.App.Core.Services;
+
+public class ClipboardService : IClipboardService
{
- public class ClipboardService : IClipboardService
+ private List _content;
+ public IReadOnlyList Content { get; private set; }
+ public Type? CommandType { get; private set; }
+
+ public ClipboardService()
{
- private List _content;
- public IReadOnlyList Content { get; private set; }
- public Type? CommandType { get; private set; }
+ _content = new List();
+ Content = _content.AsReadOnly();
+ }
- public ClipboardService()
+ public void AddContent(IAbsolutePath absolutePath)
+ {
+ foreach (var content in _content)
{
- _content = new List();
- Content = _content.AsReadOnly();
+ if (content.Equals(absolutePath)) return;
}
- public void AddContent(IAbsolutePath absolutePath)
+ _content.Add(absolutePath);
+ }
+
+ public void RemoveContent(IAbsolutePath absolutePath)
+ {
+ for (var i = 0; i < _content.Count; i++)
{
- foreach (var content in _content)
+ if (_content[i].Equals(absolutePath))
{
- if (content.Equals(absolutePath)) return;
+ _content.RemoveAt(i--);
}
-
- _content.Add(absolutePath);
- }
-
- public void RemoveContent(IAbsolutePath absolutePath)
- {
- for (var i = 0; i < _content.Count; i++)
- {
- if (_content[i].Equals(absolutePath))
- {
- _content.RemoveAt(i--);
- }
- }
- }
-
- public void Clear()
- {
- _content = new List();
- Content = _content.AsReadOnly();
- CommandType = null;
- }
-
- public void SetCommand() where T : ITransportationCommand
- {
- CommandType = typeof(T);
}
}
+
+ public void Clear()
+ {
+ _content = new List();
+ Content = _content.AsReadOnly();
+ CommandType = null;
+ }
+
+ public void SetCommand() where T : ITransportationCommand
+ {
+ CommandType = typeof(T);
+ }
}
\ No newline at end of file
diff --git a/src/AppCommon/FileTime.App.Core/Services/CommandHandler/CommandHandlerBase.cs b/src/AppCommon/FileTime.App.Core/Services/CommandHandler/CommandHandlerBase.cs
index ba42208..034a38a 100644
--- a/src/AppCommon/FileTime.App.Core/Services/CommandHandler/CommandHandlerBase.cs
+++ b/src/AppCommon/FileTime.App.Core/Services/CommandHandler/CommandHandlerBase.cs
@@ -4,51 +4,50 @@ using FileTime.App.Core.Command;
using FileTime.App.Core.ViewModels;
using FileTime.Core.Models;
-namespace FileTime.App.Core.Services.CommandHandler
+namespace FileTime.App.Core.Services.CommandHandler;
+
+public abstract class CommandHandlerBase : ICommandHandler
{
- public abstract class CommandHandlerBase : ICommandHandler
+ private readonly Dictionary> _commandHandlers = new();
+ private readonly IAppState? _appState;
+
+ protected CommandHandlerBase(IAppState? appState = null)
{
- private readonly Dictionary> _commandHandlers = new();
- private readonly IAppState? _appState;
+ _appState = appState;
+ }
- protected CommandHandlerBase(IAppState? appState = null)
+ public bool CanHandleCommand(Commands command) => _commandHandlers.ContainsKey(command);
+
+ public async Task HandleCommandAsync(Commands command) => await _commandHandlers[command].Invoke();
+
+ protected void AddCommandHandler(Commands command, Func handler) => _commandHandlers.Add(command, handler);
+ protected void AddCommandHandlers(IEnumerable<(Commands command, Func handler)> commandHandlers)
+ {
+ foreach (var (command, handler) in commandHandlers)
{
- _appState = appState;
- }
-
- public bool CanHandleCommand(Commands command) => _commandHandlers.ContainsKey(command);
-
- public async Task HandleCommandAsync(Commands command) => await _commandHandlers[command].Invoke();
-
- protected void AddCommandHandler(Commands command, Func handler) => _commandHandlers.Add(command, handler);
- protected void AddCommandHandlers(IEnumerable<(Commands command, Func handler)> commandHandlers)
- {
- foreach (var (command, handler) in commandHandlers)
- {
- AddCommandHandler(command, handler);
- }
- }
-
- protected void RemoveCommandHandler(Commands command) => _commandHandlers.Remove(command);
-
- protected IDisposable SaveSelectedTab(Action handler) => RunWithAppState(appState => appState.SelectedTab.Subscribe(handler));
- protected IDisposable SaveCurrentSelectedItem(Action handler)
- => RunWithAppState(appState => appState.SelectedTab.Select(t => t == null ? Observable.Return(null) : t.CurrentSelectedItem).Switch().Subscribe(handler));
-
- protected IDisposable SaveCurrentLocation(Action handler)
- => RunWithAppState(appState => appState.SelectedTab.Select(t => t == null ? Observable.Return(null) : t.CurrentLocation).Switch().Subscribe(handler));
-
- protected IDisposable SaveCurrentItems(Action> handler)
- => RunWithAppState(appState => appState.SelectedTab.Select(t => t?.CurrentItemsCollectionObservable ?? Observable.Return((IEnumerable?)Enumerable.Empty())).Switch().Subscribe(i => handler(i ?? Enumerable.Empty())));
-
- protected IDisposable SaveMarkedItems(Action> handler)
- => RunWithAppState(appstate => appstate.SelectedTab.Select(t => t == null ? Observable.Empty>() : t.MarkedItems).Switch().Subscribe(handler));
-
- private IDisposable RunWithAppState(Func act)
- {
- if (_appState == null) throw new NullReferenceException($"AppState is nit initialized in {nameof(CommandHandlerBase)}.");
-
- return act(_appState);
+ AddCommandHandler(command, handler);
}
}
+
+ protected void RemoveCommandHandler(Commands command) => _commandHandlers.Remove(command);
+
+ protected IDisposable SaveSelectedTab(Action handler) => RunWithAppState(appState => appState.SelectedTab.Subscribe(handler));
+ protected IDisposable SaveCurrentSelectedItem(Action handler)
+ => RunWithAppState(appState => appState.SelectedTab.Select(t => t == null ? Observable.Return(null) : t.CurrentSelectedItem).Switch().Subscribe(handler));
+
+ protected IDisposable SaveCurrentLocation(Action handler)
+ => RunWithAppState(appState => appState.SelectedTab.Select(t => t == null ? Observable.Return(null) : t.CurrentLocation).Switch().Subscribe(handler));
+
+ protected IDisposable SaveCurrentItems(Action> handler)
+ => RunWithAppState(appState => appState.SelectedTab.Select(t => t?.CurrentItemsCollectionObservable ?? Observable.Return((IEnumerable?)Enumerable.Empty())).Switch().Subscribe(i => handler(i ?? Enumerable.Empty())));
+
+ protected IDisposable SaveMarkedItems(Action> handler)
+ => RunWithAppState(appstate => appstate.SelectedTab.Select(t => t == null ? Observable.Empty>() : t.MarkedItems).Switch().Subscribe(handler));
+
+ private IDisposable RunWithAppState(Func act)
+ {
+ if (_appState == null) throw new NullReferenceException($"AppState is nit initialized in {nameof(CommandHandlerBase)}.");
+
+ return act(_appState);
+ }
}
\ No newline at end of file
diff --git a/src/AppCommon/FileTime.App.Core/Services/CommandHandler/ItemManipulationCommandHandler.cs b/src/AppCommon/FileTime.App.Core/Services/CommandHandler/ItemManipulationCommandHandler.cs
index c197273..f6d25de 100644
--- a/src/AppCommon/FileTime.App.Core/Services/CommandHandler/ItemManipulationCommandHandler.cs
+++ b/src/AppCommon/FileTime.App.Core/Services/CommandHandler/ItemManipulationCommandHandler.cs
@@ -6,91 +6,90 @@ using FileTime.Core.Command;
using FileTime.Core.Command.Copy;
using FileTime.Core.Models;
-namespace FileTime.App.Core.Services.CommandHandler
+namespace FileTime.App.Core.Services.CommandHandler;
+
+public class ItemManipulationCommandHandler : CommandHandlerBase
{
- public class ItemManipulationCommandHandler : CommandHandlerBase
+ private ITabViewModel? _selectedTab;
+ private IItemViewModel? _currentSelectedItem;
+ private readonly ICommandHandlerService _commandHandlerService;
+ private readonly IClipboardService _clipboardService;
+ private BindedCollection? _markedItems;
+
+ public ItemManipulationCommandHandler(
+ IAppState appState,
+ ICommandHandlerService commandHandlerService,
+ IClipboardService clipboardService) : base(appState)
{
- private ITabViewModel? _selectedTab;
- private IItemViewModel? _currentSelectedItem;
- private readonly ICommandHandlerService _commandHandlerService;
- private readonly IClipboardService _clipboardService;
- private BindedCollection? _markedItems;
+ _commandHandlerService = commandHandlerService;
+ _clipboardService = clipboardService;
- public ItemManipulationCommandHandler(
- IAppState appState,
- ICommandHandlerService commandHandlerService,
- IClipboardService clipboardService) : base(appState)
+ SaveSelectedTab(t =>
{
- _commandHandlerService = commandHandlerService;
- _clipboardService = clipboardService;
+ _selectedTab = t;
+ _markedItems?.Dispose();
+ _markedItems = t == null ? null : new BindedCollection(t.MarkedItems);
+ });
+ SaveCurrentSelectedItem(i => _currentSelectedItem = i);
- SaveSelectedTab(t =>
- {
- _selectedTab = t;
- _markedItems?.Dispose();
- _markedItems = t == null ? null : new BindedCollection(t.MarkedItems);
- });
- SaveCurrentSelectedItem(i => _currentSelectedItem = i);
-
- AddCommandHandlers(new (Commands, Func)[]
- {
- (Commands.Copy, Copy),
- (Commands.Mark, MarkItem),
- (Commands.PasteMerge, PasteMerge),
- (Commands.PasteOverwrite, PasteOverwrite),
- (Commands.PasteSkip, PasteSkip),
- });
- }
-
- private async Task MarkItem()
+ AddCommandHandlers(new (Commands, Func)[]
{
- if (_selectedTab == null || _currentSelectedItem?.BaseItem?.FullName == null) return;
+ (Commands.Copy, Copy),
+ (Commands.Mark, MarkItem),
+ (Commands.PasteMerge, PasteMerge),
+ (Commands.PasteOverwrite, PasteOverwrite),
+ (Commands.PasteSkip, PasteSkip),
+ });
+ }
- _selectedTab.ToggleMarkedItem(new AbsolutePath(_currentSelectedItem.BaseItem));
- await _commandHandlerService.HandleCommandAsync(Commands.MoveCursorDown);
- }
+ private async Task MarkItem()
+ {
+ if (_selectedTab == null || _currentSelectedItem?.BaseItem?.FullName == null) return;
- private Task Copy()
+ _selectedTab.ToggleMarkedItem(new AbsolutePath(_currentSelectedItem.BaseItem));
+ await _commandHandlerService.HandleCommandAsync(Commands.MoveCursorDown);
+ }
+
+ private Task Copy()
+ {
+ _clipboardService.Clear();
+ _clipboardService.SetCommand();
+
+ if ((_markedItems?.Collection.Count ?? 0) > 0)
{
- _clipboardService.Clear();
- _clipboardService.SetCommand();
-
- if ((_markedItems?.Collection.Count ?? 0) > 0)
+ foreach (var item in _markedItems!.Collection)
{
- foreach (var item in _markedItems!.Collection)
- {
- _clipboardService.AddContent(item);
- }
-
- _selectedTab?.ClearMarkedItems();
- }
- else if (_currentSelectedItem?.BaseItem != null)
- {
- _clipboardService.AddContent(new AbsolutePath(_currentSelectedItem.BaseItem));
+ _clipboardService.AddContent(item);
}
- return Task.CompletedTask;
+ _selectedTab?.ClearMarkedItems();
+ }
+ else if (_currentSelectedItem?.BaseItem != null)
+ {
+ _clipboardService.AddContent(new AbsolutePath(_currentSelectedItem.BaseItem));
}
- private async Task PasteMerge()
- {
- await Paste(TransportMode.Merge);
- }
+ return Task.CompletedTask;
+ }
- private async Task PasteOverwrite()
- {
- await Paste(TransportMode.Overwrite);
- }
+ private async Task PasteMerge()
+ {
+ await Paste(TransportMode.Merge);
+ }
- private async Task PasteSkip()
- {
- await Paste(TransportMode.Skip);
- }
+ private async Task PasteOverwrite()
+ {
+ await Paste(TransportMode.Overwrite);
+ }
- private Task Paste(TransportMode skip)
- {
- if (_clipboardService.CommandType is null) return Task.CompletedTask;
- return Task.CompletedTask;
- }
+ private async Task PasteSkip()
+ {
+ await Paste(TransportMode.Skip);
+ }
+
+ private Task Paste(TransportMode skip)
+ {
+ if (_clipboardService.CommandType is null) return Task.CompletedTask;
+ return Task.CompletedTask;
}
}
\ No newline at end of file
diff --git a/src/AppCommon/FileTime.App.Core/Services/CommandHandler/NavigationCommandHandler.cs b/src/AppCommon/FileTime.App.Core/Services/CommandHandler/NavigationCommandHandler.cs
index d98ae63..82f4361 100644
--- a/src/AppCommon/FileTime.App.Core/Services/CommandHandler/NavigationCommandHandler.cs
+++ b/src/AppCommon/FileTime.App.Core/Services/CommandHandler/NavigationCommandHandler.cs
@@ -4,65 +4,64 @@ using FileTime.App.Core.Extensions;
using FileTime.App.Core.ViewModels;
using FileTime.Core.Models;
-namespace FileTime.App.Core.Services.CommandHandler
+namespace FileTime.App.Core.Services.CommandHandler;
+
+public class NavigationCommandHandler : CommandHandlerBase
{
- public class NavigationCommandHandler : CommandHandlerBase
+ private ITabViewModel? _selectedTab;
+ private IContainer? _currentLocation;
+ private IItemViewModel? _currentSelectedItem;
+ private IEnumerable _currentItems = Enumerable.Empty();
+
+ public NavigationCommandHandler(IAppState appState) : base(appState)
{
- private ITabViewModel? _selectedTab;
- private IContainer? _currentLocation;
- private IItemViewModel? _currentSelectedItem;
- private IEnumerable _currentItems = Enumerable.Empty();
+ SaveSelectedTab(t => _selectedTab = t);
+ SaveCurrentSelectedItem(i => _currentSelectedItem = i);
+ SaveCurrentLocation(l => _currentLocation = l);
+ SaveCurrentItems(i => _currentItems = i);
- public NavigationCommandHandler(IAppState appState) : base(appState)
+ AddCommandHandlers(new (Commands, Func)[]
{
- SaveSelectedTab(t => _selectedTab = t);
- SaveCurrentSelectedItem(i => _currentSelectedItem = i);
- SaveCurrentLocation(l => _currentLocation = l);
- SaveCurrentItems(i => _currentItems = i);
+ (Commands.GoUp, GoUp),
+ (Commands.MoveCursorDown, MoveCursorDown),
+ (Commands.MoveCursorUp, MoveCursorUp),
+ (Commands.Open, OpenContainer),
+ });
+ }
- AddCommandHandlers(new (Commands, Func)[]
- {
- (Commands.GoUp, GoUp),
- (Commands.MoveCursorDown, MoveCursorDown),
- (Commands.MoveCursorUp, MoveCursorUp),
- (Commands.Open, OpenContainer),
- });
- }
+ private Task OpenContainer()
+ {
+ if (_currentSelectedItem is not IContainerViewModel containerViewModel || containerViewModel.Container is null) return Task.CompletedTask;
- private Task OpenContainer()
- {
- if (_currentSelectedItem is not IContainerViewModel containerViewModel || containerViewModel.Container is null) return Task.CompletedTask;
+ _selectedTab?.Tab?.SetCurrentLocation(containerViewModel.Container);
+ return Task.CompletedTask;
+ }
- _selectedTab?.Tab?.SetCurrentLocation(containerViewModel.Container);
- return Task.CompletedTask;
- }
+ private async Task GoUp()
+ {
+ if (_currentLocation?.Parent is not IAbsolutePath parentPath || await parentPath.ResolveAsyncSafe() is not IContainer newContainer) return;
+ _selectedTab?.Tab?.SetCurrentLocation(newContainer);
+ }
- private async Task GoUp()
- {
- if (_currentLocation?.Parent is not IAbsolutePath parentPath || await parentPath.ResolveAsyncSafe() is not IContainer newContainer) return;
- _selectedTab?.Tab?.SetCurrentLocation(newContainer);
- }
+ private Task MoveCursorDown()
+ {
+ SelectNewSelectedItem(i => i.SkipWhile(i => !i.EqualsTo(_currentSelectedItem)).Skip(1).FirstOrDefault());
+ return Task.CompletedTask;
+ }
- private Task MoveCursorDown()
- {
- SelectNewSelectedItem(i => i.SkipWhile(i => !i.EqualsTo(_currentSelectedItem)).Skip(1).FirstOrDefault());
- return Task.CompletedTask;
- }
+ private Task MoveCursorUp()
+ {
+ SelectNewSelectedItem(i => i.TakeWhile(i => !i.EqualsTo(_currentSelectedItem)).LastOrDefault());
+ return Task.CompletedTask;
+ }
- private Task MoveCursorUp()
- {
- SelectNewSelectedItem(i => i.TakeWhile(i => !i.EqualsTo(_currentSelectedItem)).LastOrDefault());
- return Task.CompletedTask;
- }
+ private void SelectNewSelectedItem(Func, IItemViewModel?> getNewSelected)
+ {
+ if (_selectedTab is null || _currentLocation is null) return;
- private void SelectNewSelectedItem(Func, IItemViewModel?> getNewSelected)
- {
- if (_selectedTab is null || _currentLocation is null) return;
+ var newSelectedItem = getNewSelected(_currentItems);
+ if (newSelectedItem == null) return;
- var newSelectedItem = getNewSelected(_currentItems);
- if (newSelectedItem == null) return;
-
- _selectedTab.Tab?.SetSelectedItem(newSelectedItem.ToAbsolutePath());
- }
+ _selectedTab.Tab?.SetSelectedItem(newSelectedItem.ToAbsolutePath());
}
}
\ No newline at end of file
diff --git a/src/AppCommon/FileTime.App.Core/Services/CommandHandlerService.cs b/src/AppCommon/FileTime.App.Core/Services/CommandHandlerService.cs
index eddfcc5..aa96613 100644
--- a/src/AppCommon/FileTime.App.Core/Services/CommandHandlerService.cs
+++ b/src/AppCommon/FileTime.App.Core/Services/CommandHandlerService.cs
@@ -1,80 +1,79 @@
using FileTime.App.Core.Command;
using Microsoft.Extensions.DependencyInjection;
-namespace FileTime.App.Core.Services
+namespace FileTime.App.Core.Services;
+
+public class CommandHandlerService : ICommandHandlerService
{
- public class CommandHandlerService : ICommandHandlerService
+ private readonly Lazy> _commandHandlers;
+
+ public CommandHandlerService(IServiceProvider serviceProvider)
{
- private readonly Lazy> _commandHandlers;
+ _commandHandlers = new Lazy>(() => serviceProvider.GetServices());
- public CommandHandlerService(IServiceProvider serviceProvider)
+ //(Commands.AutoRefresh, ToggleAutoRefresh),
+ //(Commands.ChangeTimelineMode, ChangeTimelineMode),
+ //(Commands.CloseTab, CloseTab),
+ //(Commands.Compress, Compress),
+ //(Commands.Copy, Copy),
+ //(Commands.CopyHash, CopyHash),
+ //(Commands.CopyPath, CopyPath),
+ //(Commands.CreateContainer, CreateContainer),
+ //(Commands.CreateElement, CreateElement),
+ //(Commands.Cut, Cut),
+ //(Commands.Edit, Edit),
+ //(Commands.EnterRapidTravel, EnterRapidTravelMode),
+ //(Commands.FindByName, FindByName),
+ //(Commands.FindByNameRegex, FindByNameRegex),
+ //(Commands.GoToHome, GotToHome),
+ //(Commands.GoToPath, GoToContainer),
+ //(Commands.GoToProvider, GotToProvider),
+ //(Commands.GoToRoot, GotToRoot),
+ //(Commands.HardDelete, HardDelete),
+ //(Commands.Mark, MarkCurrentItem),
+ //(Commands.MoveCursorDownPage, MoveCursorDownPage),
+ //(Commands.MoveCursorUpPage, MoveCursorUpPage),
+ //(Commands.MoveToFirst, MoveToFirst),
+ //(Commands.MoveToLast, MoveToLast),
+ //(Commands.NextTimelineBlock, SelectNextTimelineBlock),
+ //(Commands.NextTimelineCommand, SelectNextTimelineCommand),
+ //(Commands.OpenInFileBrowser, OpenInDefaultFileExplorer),
+ //(Commands.OpenOrRun, OpenOrRun),
+ //(Commands.PasteMerge, PasteMerge),
+ //(Commands.PasteOverwrite, PasteOverwrite),
+ //(Commands.PasteSkip, PasteSkip),
+ //(Commands.PinFavorite, PinFavorite),
+ //(Commands.PreviousTimelineBlock, SelectPreviousTimelineBlock),
+ //(Commands.PreviousTimelineCommand, SelectPreviousTimelineCommand),
+ //(Commands.Refresh, RefreshCurrentLocation),
+ //(Commands.Rename, Rename),
+ //(Commands.RunCommand, RunCommandInContainer),
+ //(Commands.ScanContainerSize, ScanContainerSize),
+ //(Commands.ShowAllShotcut, ShowAllShortcut),
+ //(Commands.SoftDelete, SoftDelete),
+ //(Commands.SwitchToLastTab, async() => await SwitchToTab(-1)),
+ //(Commands.SwitchToTab1, async() => await SwitchToTab(1)),
+ //(Commands.SwitchToTab2, async() => await SwitchToTab(2)),
+ //(Commands.SwitchToTab3, async() => await SwitchToTab(3)),
+ //(Commands.SwitchToTab4, async() => await SwitchToTab(4)),
+ //(Commands.SwitchToTab5, async() => await SwitchToTab(5)),
+ //(Commands.SwitchToTab6, async() => await SwitchToTab(6)),
+ //(Commands.SwitchToTab7, async() => await SwitchToTab(7)),
+ //(Commands.SwitchToTab8, async() => await SwitchToTab(8)),
+ //(Commands.TimelinePause, PauseTimeline),
+ //(Commands.TimelineRefresh, RefreshTimeline),
+ //(Commands.TimelineStart, ContinueTimeline),
+ //(Commands.ToggleAdvancedIcons, ToggleAdvancedIcons),
+ //(Commands.ToggleHidden, ToggleHidden),
+ }
+
+ public async Task HandleCommandAsync(Commands command)
+ {
+ var handler = _commandHandlers.Value.FirstOrDefault(h => h.CanHandleCommand(command));
+
+ if (handler != null)
{
- _commandHandlers = new Lazy>(() => serviceProvider.GetServices());
-
- //(Commands.AutoRefresh, ToggleAutoRefresh),
- //(Commands.ChangeTimelineMode, ChangeTimelineMode),
- //(Commands.CloseTab, CloseTab),
- //(Commands.Compress, Compress),
- //(Commands.Copy, Copy),
- //(Commands.CopyHash, CopyHash),
- //(Commands.CopyPath, CopyPath),
- //(Commands.CreateContainer, CreateContainer),
- //(Commands.CreateElement, CreateElement),
- //(Commands.Cut, Cut),
- //(Commands.Edit, Edit),
- //(Commands.EnterRapidTravel, EnterRapidTravelMode),
- //(Commands.FindByName, FindByName),
- //(Commands.FindByNameRegex, FindByNameRegex),
- //(Commands.GoToHome, GotToHome),
- //(Commands.GoToPath, GoToContainer),
- //(Commands.GoToProvider, GotToProvider),
- //(Commands.GoToRoot, GotToRoot),
- //(Commands.HardDelete, HardDelete),
- //(Commands.Mark, MarkCurrentItem),
- //(Commands.MoveCursorDownPage, MoveCursorDownPage),
- //(Commands.MoveCursorUpPage, MoveCursorUpPage),
- //(Commands.MoveToFirst, MoveToFirst),
- //(Commands.MoveToLast, MoveToLast),
- //(Commands.NextTimelineBlock, SelectNextTimelineBlock),
- //(Commands.NextTimelineCommand, SelectNextTimelineCommand),
- //(Commands.OpenInFileBrowser, OpenInDefaultFileExplorer),
- //(Commands.OpenOrRun, OpenOrRun),
- //(Commands.PasteMerge, PasteMerge),
- //(Commands.PasteOverwrite, PasteOverwrite),
- //(Commands.PasteSkip, PasteSkip),
- //(Commands.PinFavorite, PinFavorite),
- //(Commands.PreviousTimelineBlock, SelectPreviousTimelineBlock),
- //(Commands.PreviousTimelineCommand, SelectPreviousTimelineCommand),
- //(Commands.Refresh, RefreshCurrentLocation),
- //(Commands.Rename, Rename),
- //(Commands.RunCommand, RunCommandInContainer),
- //(Commands.ScanContainerSize, ScanContainerSize),
- //(Commands.ShowAllShotcut, ShowAllShortcut),
- //(Commands.SoftDelete, SoftDelete),
- //(Commands.SwitchToLastTab, async() => await SwitchToTab(-1)),
- //(Commands.SwitchToTab1, async() => await SwitchToTab(1)),
- //(Commands.SwitchToTab2, async() => await SwitchToTab(2)),
- //(Commands.SwitchToTab3, async() => await SwitchToTab(3)),
- //(Commands.SwitchToTab4, async() => await SwitchToTab(4)),
- //(Commands.SwitchToTab5, async() => await SwitchToTab(5)),
- //(Commands.SwitchToTab6, async() => await SwitchToTab(6)),
- //(Commands.SwitchToTab7, async() => await SwitchToTab(7)),
- //(Commands.SwitchToTab8, async() => await SwitchToTab(8)),
- //(Commands.TimelinePause, PauseTimeline),
- //(Commands.TimelineRefresh, RefreshTimeline),
- //(Commands.TimelineStart, ContinueTimeline),
- //(Commands.ToggleAdvancedIcons, ToggleAdvancedIcons),
- //(Commands.ToggleHidden, ToggleHidden),
- }
-
- public async Task HandleCommandAsync(Commands command)
- {
- var handler = _commandHandlers.Value.FirstOrDefault(h => h.CanHandleCommand(command));
-
- if (handler != null)
- {
- await handler.HandleCommandAsync(command);
- }
+ await handler.HandleCommandAsync(command);
}
}
}
\ No newline at end of file
diff --git a/src/AppCommon/FileTime.App.Core/Services/ItemNameConverterService.cs b/src/AppCommon/FileTime.App.Core/Services/ItemNameConverterService.cs
index 24f85ae..c966825 100644
--- a/src/AppCommon/FileTime.App.Core/Services/ItemNameConverterService.cs
+++ b/src/AppCommon/FileTime.App.Core/Services/ItemNameConverterService.cs
@@ -1,56 +1,55 @@
using FileTime.App.Core.Models;
-namespace FileTime.App.Core.Services
+namespace FileTime.App.Core.Services;
+
+public class ItemNameConverterService : IItemNameConverterService
{
- public class ItemNameConverterService : IItemNameConverterService
+ public List GetDisplayName(string name, string? searchText)
{
- public List GetDisplayName(string name, string? searchText)
+ var nameParts = new List();
+ searchText = searchText?.ToLower();
+
+ if (!string.IsNullOrEmpty(searchText))
{
- var nameParts = new List();
- searchText = searchText?.ToLower();
+ var nameLeft = name;
- if (!string.IsNullOrEmpty(searchText))
+ while (nameLeft.ToLower().IndexOf(searchText, StringComparison.Ordinal) is int rapidTextStart && rapidTextStart != -1)
{
- var nameLeft = name;
+ var before = rapidTextStart > 0 ? nameLeft.Substring(0, rapidTextStart) : null;
+ var rapidTravel = nameLeft.Substring(rapidTextStart, searchText.Length);
- while (nameLeft.ToLower().IndexOf(searchText, StringComparison.Ordinal) is int rapidTextStart && rapidTextStart != -1)
+ nameLeft = nameLeft.Substring(rapidTextStart + searchText.Length);
+
+ if (before != null)
{
- var before = rapidTextStart > 0 ? nameLeft.Substring(0, rapidTextStart) : null;
- var rapidTravel = nameLeft.Substring(rapidTextStart, searchText.Length);
-
- nameLeft = nameLeft.Substring(rapidTextStart + searchText.Length);
-
- if (before != null)
- {
- nameParts.Add(new ItemNamePart(before));
- }
-
- nameParts.Add(new ItemNamePart(rapidTravel, true));
+ nameParts.Add(new ItemNamePart(before));
}
- if (nameLeft.Length > 0)
- {
- nameParts.Add(new ItemNamePart(nameLeft));
- }
+ nameParts.Add(new ItemNamePart(rapidTravel, true));
}
- else
+
+ if (nameLeft.Length > 0)
{
- nameParts.Add(new ItemNamePart(name));
+ nameParts.Add(new ItemNamePart(nameLeft));
}
- return nameParts;
}
-
- public string GetFileName(string fullName)
+ else
{
- var parts = fullName.Split('.');
- var fileName = string.Join('.', parts[..^1]);
- return string.IsNullOrEmpty(fileName) ? fullName : fileName;
- }
-
- public string GetFileExtension(string fullName)
- {
- var parts = fullName.Split('.');
- return parts.Length == 1 || (parts.Length == 2 && string.IsNullOrEmpty(parts[0])) ? "" : parts[^1];
+ nameParts.Add(new ItemNamePart(name));
}
+ return nameParts;
}
-}
+
+ public string GetFileName(string fullName)
+ {
+ var parts = fullName.Split('.');
+ var fileName = string.Join('.', parts[..^1]);
+ return string.IsNullOrEmpty(fileName) ? fullName : fileName;
+ }
+
+ public string GetFileExtension(string fullName)
+ {
+ var parts = fullName.Split('.');
+ return parts.Length == 1 || (parts.Length == 2 && string.IsNullOrEmpty(parts[0])) ? "" : parts[^1];
+ }
+}
\ No newline at end of file
diff --git a/src/AppCommon/FileTime.App.Core/Startup.cs b/src/AppCommon/FileTime.App.Core/Startup.cs
index 13a8229..0c5524b 100644
--- a/src/AppCommon/FileTime.App.Core/Startup.cs
+++ b/src/AppCommon/FileTime.App.Core/Startup.cs
@@ -3,27 +3,26 @@ using FileTime.App.Core.Services.CommandHandler;
using FileTime.App.Core.ViewModels;
using Microsoft.Extensions.DependencyInjection;
-namespace FileTime.App.Core
-{
- public static class Startup
- {
- public static IServiceCollection AddCoreAppServices(this IServiceCollection serviceCollection)
- {
- return serviceCollection
- .AddTransient()
- .AddTransient()
- .AddTransient()
- .AddTransient()
- .AddSingleton()
- .AddSingleton()
- .AddCommandHandlers();
- }
+namespace FileTime.App.Core;
- private static IServiceCollection AddCommandHandlers(this IServiceCollection serviceCollection)
- {
- return serviceCollection
- .AddSingleton()
- .AddSingleton();
- }
+public static class Startup
+{
+ public static IServiceCollection AddCoreAppServices(this IServiceCollection serviceCollection)
+ {
+ return serviceCollection
+ .AddTransient()
+ .AddTransient()
+ .AddTransient()
+ .AddTransient()
+ .AddSingleton()
+ .AddSingleton()
+ .AddCommandHandlers();
+ }
+
+ private static IServiceCollection AddCommandHandlers(this IServiceCollection serviceCollection)
+ {
+ return serviceCollection
+ .AddSingleton()
+ .AddSingleton();
}
}
\ No newline at end of file
diff --git a/src/AppCommon/FileTime.App.Core/ViewModels/AppStateBase.cs b/src/AppCommon/FileTime.App.Core/ViewModels/AppStateBase.cs
index 18fd13c..1807c19 100644
--- a/src/AppCommon/FileTime.App.Core/ViewModels/AppStateBase.cs
+++ b/src/AppCommon/FileTime.App.Core/ViewModels/AppStateBase.cs
@@ -5,50 +5,49 @@ using FileTime.App.Core.Models.Enums;
using MvvmGen;
using MoreLinq;
-namespace FileTime.App.Core.ViewModels
+namespace FileTime.App.Core.ViewModels;
+
+[ViewModel]
+public abstract partial class AppStateBase : IAppState
{
- [ViewModel]
- public abstract partial class AppStateBase : IAppState
+ private readonly BehaviorSubject _searchText = new(null);
+ private readonly BehaviorSubject _selectedTab = new(null);
+ private readonly BehaviorSubject> _tabs = new(Enumerable.Empty());
+
+ [Property]
+ private ViewMode _viewMode;
+
+ public ObservableCollection Tabs { get; } = new();
+ public IObservable SearchText { get; private set; }
+
+ public IObservable SelectedTab { get; private set; }
+
+ partial void OnInitialize()
{
- private readonly BehaviorSubject _searchText = new(null);
- private readonly BehaviorSubject _selectedTab = new(null);
- private readonly BehaviorSubject> _tabs = new(Enumerable.Empty());
+ Tabs.CollectionChanged += (_, _) => _tabs.OnNext(Tabs);
+ SearchText = _searchText.AsObservable();
+ SelectedTab = Observable.CombineLatest(_tabs, _selectedTab, GetSelectedTab);
+ }
- [Property]
- private ViewMode _viewMode;
+ public void AddTab(ITabViewModel tabViewModel)
+ {
+ Tabs.Add(tabViewModel);
+ }
- public ObservableCollection Tabs { get; } = new();
- public IObservable SearchText { get; private set; }
+ public void RemoveTab(ITabViewModel tabViewModel)
+ {
+ if (!Tabs.Contains(tabViewModel)) return;
- public IObservable SelectedTab { get; private set; }
+ Tabs.Remove(tabViewModel);
+ }
- partial void OnInitialize()
- {
- Tabs.CollectionChanged += (_, _) => _tabs.OnNext(Tabs);
- SearchText = _searchText.AsObservable();
- SelectedTab = Observable.CombineLatest(_tabs, _selectedTab, GetSelectedTab);
- }
+ public void SetSearchText(string? searchText) => _searchText.OnNext(searchText);
- public void AddTab(ITabViewModel tabViewModel)
- {
- Tabs.Add(tabViewModel);
- }
+ public void SetSelectedTab(ITabViewModel tabToSelect) => _selectedTab.OnNext(tabToSelect);
- public void RemoveTab(ITabViewModel tabViewModel)
- {
- if (!Tabs.Contains(tabViewModel)) return;
-
- Tabs.Remove(tabViewModel);
- }
-
- public void SetSearchText(string? searchText) => _searchText.OnNext(searchText);
-
- public void SetSelectedTab(ITabViewModel tabToSelect) => _selectedTab.OnNext(tabToSelect);
-
- private ITabViewModel? GetSelectedTab(IEnumerable tabs, ITabViewModel? expectedSelectedTab)
- {
- var (prefered, others) = tabs.OrderBy(t => t.TabNumber).Partition(t => t.TabNumber >= (expectedSelectedTab?.TabNumber ?? 0));
- return prefered.Concat(others).FirstOrDefault();
- }
+ private ITabViewModel? GetSelectedTab(IEnumerable tabs, ITabViewModel? expectedSelectedTab)
+ {
+ var (prefered, others) = tabs.OrderBy(t => t.TabNumber).Partition(t => t.TabNumber >= (expectedSelectedTab?.TabNumber ?? 0));
+ return prefered.Concat(others).FirstOrDefault();
}
}
\ No newline at end of file
diff --git a/src/AppCommon/FileTime.App.Core/ViewModels/ContainerSizeContainerViewModel.cs b/src/AppCommon/FileTime.App.Core/ViewModels/ContainerSizeContainerViewModel.cs
index 856c0e5..66eb239 100644
--- a/src/AppCommon/FileTime.App.Core/ViewModels/ContainerSizeContainerViewModel.cs
+++ b/src/AppCommon/FileTime.App.Core/ViewModels/ContainerSizeContainerViewModel.cs
@@ -2,21 +2,20 @@ using FileTime.App.Core.Services;
using FileTime.Core.Models;
using MvvmGen;
-namespace FileTime.App.Core.ViewModels
+namespace FileTime.App.Core.ViewModels;
+
+[ViewModel(GenerateConstructor = false)]
+public partial class ContainerSizeContainerViewModel : ItemViewModel, IContainerSizeContainerViewModel
{
- [ViewModel(GenerateConstructor = false)]
- public partial class ContainerSizeContainerViewModel : ItemViewModel, IContainerSizeContainerViewModel
+ [Property]
+ private long _size;
+
+ public ContainerSizeContainerViewModel(IItemNameConverterService _itemNameConverterService, IAppState _appState) : base(_itemNameConverterService, _appState)
{
- [Property]
- private long _size;
+ }
- public ContainerSizeContainerViewModel(IItemNameConverterService _itemNameConverterService, IAppState _appState) : base(_itemNameConverterService, _appState)
- {
- }
-
- public void Init(IContainer item, ITabViewModel parentTab)
- {
- Init((IItem)item, parentTab);
- }
+ public void Init(IContainer item, ITabViewModel parentTab)
+ {
+ Init((IItem)item, parentTab);
}
}
\ No newline at end of file
diff --git a/src/AppCommon/FileTime.App.Core/ViewModels/ContainerViewModel.cs b/src/AppCommon/FileTime.App.Core/ViewModels/ContainerViewModel.cs
index ab8fe8c..d793d28 100644
--- a/src/AppCommon/FileTime.App.Core/ViewModels/ContainerViewModel.cs
+++ b/src/AppCommon/FileTime.App.Core/ViewModels/ContainerViewModel.cs
@@ -2,20 +2,19 @@ using FileTime.App.Core.Services;
using FileTime.Core.Models;
using MvvmGen;
-namespace FileTime.App.Core.ViewModels
+namespace FileTime.App.Core.ViewModels;
+
+[ViewModel(GenerateConstructor = false)]
+public partial class ContainerViewModel : ItemViewModel, IContainerViewModel
{
- [ViewModel(GenerateConstructor = false)]
- public partial class ContainerViewModel : ItemViewModel, IContainerViewModel
+ public IContainer? Container => BaseItem as IContainer;
+
+ public ContainerViewModel(IItemNameConverterService _itemNameConverterService, IAppState _appState) : base(_itemNameConverterService, _appState)
{
- public IContainer? Container => BaseItem as IContainer;
+ }
- public ContainerViewModel(IItemNameConverterService _itemNameConverterService, IAppState _appState) : base(_itemNameConverterService, _appState)
- {
- }
-
- public void Init(IContainer item, ITabViewModel parentTab)
- {
- Init((IItem)item, parentTab);
- }
+ public void Init(IContainer item, ITabViewModel parentTab)
+ {
+ Init((IItem)item, parentTab);
}
}
\ No newline at end of file
diff --git a/src/AppCommon/FileTime.App.Core/ViewModels/ElementViewModel.cs b/src/AppCommon/FileTime.App.Core/ViewModels/ElementViewModel.cs
index e2944ad..c9eb96c 100644
--- a/src/AppCommon/FileTime.App.Core/ViewModels/ElementViewModel.cs
+++ b/src/AppCommon/FileTime.App.Core/ViewModels/ElementViewModel.cs
@@ -2,21 +2,20 @@ using FileTime.App.Core.Services;
using FileTime.Core.Models;
using MvvmGen;
-namespace FileTime.App.Core.ViewModels
+namespace FileTime.App.Core.ViewModels;
+
+[ViewModel(GenerateConstructor = false)]
+public partial class ElementViewModel : ItemViewModel, IElementViewModel
{
- [ViewModel(GenerateConstructor = false)]
- public partial class ElementViewModel : ItemViewModel, IElementViewModel
+ [Property]
+ private long? _size;
+
+ public ElementViewModel(IItemNameConverterService _itemNameConverterService, IAppState _appState) : base(_itemNameConverterService, _appState)
{
- [Property]
- private long? _size;
+ }
- public ElementViewModel(IItemNameConverterService _itemNameConverterService, IAppState _appState) : base(_itemNameConverterService, _appState)
- {
- }
-
- public void Init(IElement item, ITabViewModel parentTab)
- {
- Init((IItem)item, parentTab);
- }
+ public void Init(IElement item, ITabViewModel parentTab)
+ {
+ Init((IItem)item, parentTab);
}
}
\ No newline at end of file
diff --git a/src/AppCommon/FileTime.App.Core/ViewModels/FileViewModel.cs b/src/AppCommon/FileTime.App.Core/ViewModels/FileViewModel.cs
index 7dd1aa6..7ba9fe0 100644
--- a/src/AppCommon/FileTime.App.Core/ViewModels/FileViewModel.cs
+++ b/src/AppCommon/FileTime.App.Core/ViewModels/FileViewModel.cs
@@ -2,18 +2,17 @@ using FileTime.App.Core.Services;
using FileTime.Core.Models;
using MvvmGen;
-namespace FileTime.App.Core.ViewModels
-{
- [ViewModel(GenerateConstructor = false)]
- public partial class FileViewModel : ElementViewModel, IFileViewModel
- {
- public FileViewModel(IItemNameConverterService _itemNameConverterService, IAppState _appState) : base(_itemNameConverterService, _appState)
- {
- }
+namespace FileTime.App.Core.ViewModels;
- public void Init(IFileElement item, ITabViewModel parentTab)
- {
- Init((IElement)item, parentTab);
- }
+[ViewModel(GenerateConstructor = false)]
+public partial class FileViewModel : ElementViewModel, IFileViewModel
+{
+ public FileViewModel(IItemNameConverterService _itemNameConverterService, IAppState _appState) : base(_itemNameConverterService, _appState)
+ {
+ }
+
+ public void Init(IFileElement item, ITabViewModel parentTab)
+ {
+ Init((IElement)item, parentTab);
}
}
\ No newline at end of file
diff --git a/src/AppCommon/FileTime.App.Core/ViewModels/ItemViewModel.cs b/src/AppCommon/FileTime.App.Core/ViewModels/ItemViewModel.cs
index c73e746..0b690c2 100644
--- a/src/AppCommon/FileTime.App.Core/ViewModels/ItemViewModel.cs
+++ b/src/AppCommon/FileTime.App.Core/ViewModels/ItemViewModel.cs
@@ -7,54 +7,54 @@ using FileTime.Core.Models;
using MoreLinq;
using MvvmGen;
-namespace FileTime.App.Core.ViewModels
+namespace FileTime.App.Core.ViewModels;
+
+[ViewModel]
+[Inject(typeof(IAppState), "_appState")]
+[Inject(typeof(IItemNameConverterService), "_itemNameConverterService")]
+public abstract partial class ItemViewModel : IItemViewModel
{
- [ViewModel]
- [Inject(typeof(IAppState), "_appState")]
- [Inject(typeof(IItemNameConverterService), "_itemNameConverterService")]
- public abstract partial class ItemViewModel : IItemViewModel
+ [Property]
+ private IItem? _baseItem;
+
+ [Property]
+ private IObservable>? _displayName;
+
+ [Property]
+ private string? _displayNameText;
+
+ [Property]
+ private IObservable? _isSelected;
+
+ [Property]
+ private IObservable? _isMarked;
+
+ [Property]
+ private IObservable _viewMode;
+
+ [Property]
+ private DateTime? _createdAt;
+
+ [Property]
+ private string? _attributes;
+
+ [Property]
+ private IObservable _isAlternative;
+
+ public void Init(IItem item, ITabViewModel parentTab)
{
- [Property]
- private IItem? _baseItem;
+ BaseItem = item;
+ DisplayName = _appState.SearchText.Select(s => _itemNameConverterService.GetDisplayName(item.DisplayName, s));
+ DisplayNameText = item.DisplayName;
+ IsMarked = parentTab.MarkedItems.ToCollection().Select(m => m.Any(i => i.Path.Path == item.FullName?.Path));
+ IsSelected = parentTab.CurrentSelectedItem.Select(EqualsTo);
+ IsAlternative = parentTab.CurrentItemsCollectionObservable.Select(c => c?.Index().FirstOrDefault(i => EqualsTo(i.Value)).Key % 2 == 0);
+ ViewMode = Observable.CombineLatest(IsMarked, IsSelected, IsAlternative, GenerateViewMode);
+ Attributes = item.Attributes;
+ CreatedAt = item.CreatedAt;
+ }
- [Property]
- private IObservable>? _displayName;
-
- [Property]
- private string? _displayNameText;
-
- [Property]
- private IObservable? _isSelected;
-
- [Property]
- private IObservable? _isMarked;
-
- [Property]
- private IObservable _viewMode;
-
- [Property]
- private DateTime? _createdAt;
-
- [Property]
- private string? _attributes;
-
- [Property]
- private IObservable _isAlternative;
-
- public void Init(IItem item, ITabViewModel parentTab)
- {
- BaseItem = item;
- DisplayName = _appState.SearchText.Select(s => _itemNameConverterService.GetDisplayName(item.DisplayName, s));
- DisplayNameText = item.DisplayName;
- IsMarked = parentTab.MarkedItems.ToCollection().Select(m => m.Any(i => i.Path.Path == item.FullName?.Path));
- IsSelected = parentTab.CurrentSelectedItem.Select(EqualsTo);
- IsAlternative = parentTab.CurrentItemsCollectionObservable.Select(c => c?.Index().FirstOrDefault(i => EqualsTo(i.Value)).Key % 2 == 0);
- ViewMode = Observable.CombineLatest(IsMarked, IsSelected, IsAlternative, GenerateViewMode);
- Attributes = item.Attributes;
- CreatedAt = item.CreatedAt;
- }
-
- private ItemViewMode GenerateViewMode(bool isMarked, bool isSelected, bool sAlternative)
+ private ItemViewMode GenerateViewMode(bool isMarked, bool isSelected, bool sAlternative)
=> (isMarked, isSelected, sAlternative) switch
{
(true, true, _) => ItemViewMode.MarkedSelected,
@@ -65,9 +65,8 @@ namespace FileTime.App.Core.ViewModels
_ => ItemViewMode.Default
};
- public bool EqualsTo(IItemViewModel? itemViewModel)
- {
- return BaseItem?.FullName?.Path is string path && path == itemViewModel?.BaseItem?.FullName?.Path;
- }
+ public bool EqualsTo(IItemViewModel? itemViewModel)
+ {
+ return BaseItem?.FullName?.Path is string path && path == itemViewModel?.BaseItem?.FullName?.Path;
}
}
\ No newline at end of file
diff --git a/src/AppCommon/FileTime.App.Core/ViewModels/TabViewModel.cs b/src/AppCommon/FileTime.App.Core/ViewModels/TabViewModel.cs
index 27bd68c..87cf897 100644
--- a/src/AppCommon/FileTime.App.Core/ViewModels/TabViewModel.cs
+++ b/src/AppCommon/FileTime.App.Core/ViewModels/TabViewModel.cs
@@ -9,118 +9,118 @@ using FileTime.Tools.Extensions;
using Microsoft.Extensions.DependencyInjection;
using MvvmGen;
-namespace FileTime.App.Core.ViewModels
+namespace FileTime.App.Core.ViewModels;
+
+[ViewModel]
+public partial class TabViewModel : ITabViewModel, IDisposable
{
- [ViewModel]
- public partial class TabViewModel : ITabViewModel, IDisposable
+ private readonly IServiceProvider _serviceProvider;
+ private readonly IItemNameConverterService _itemNameConverterService;
+ private readonly IAppState _appState;
+ private readonly IRxSchedulerService _rxSchedulerService;
+ private readonly SourceList _markedItems = new();
+ private readonly List _disposables = new();
+ private bool disposed;
+
+ public ITab? Tab { get; private set; }
+ public int TabNumber { get; private set; }
+
+ public IObservable IsSelected { get; }
+
+ public IObservable CurrentLocation { get; private set; } = null!;
+ public IObservable CurrentSelectedItem { get; private set; } = null!;
+ public IObservable>?> CurrentItems { get; private set; } = null!;
+ public IObservable> MarkedItems { get; }
+ public IObservable>?> SelectedsChildren { get; private set; } = null!;
+ public IObservable>?> ParentsChildren { get; private set; } = null!;
+
+ public IObservable?> CurrentItemsCollectionObservable { get; private set; } = null!;
+
+ [Property]
+ private BindedCollection? _currentItemsCollection;
+
+ [Property]
+ private BindedCollection? _parentsChildrenCollection;
+
+ [Property]
+ private BindedCollection? _selectedsChildrenCollection;
+
+ public TabViewModel(
+ IServiceProvider serviceProvider,
+ IItemNameConverterService itemNameConverterService,
+ IAppState appState,
+ IRxSchedulerService rxSchedulerService)
{
- private readonly IServiceProvider _serviceProvider;
- private readonly IItemNameConverterService _itemNameConverterService;
- private readonly IAppState _appState;
- private readonly IRxSchedulerService _rxSchedulerService;
- private readonly SourceList _markedItems = new();
- private readonly List _disposables = new();
- private bool disposed;
+ _serviceProvider = serviceProvider;
+ _itemNameConverterService = itemNameConverterService;
+ _appState = appState;
- public ITab? Tab { get; private set; }
- public int TabNumber { get; private set; }
+ MarkedItems = _markedItems.Connect().StartWithEmpty();
+ IsSelected = _appState.SelectedTab.Select(s => s == this);
+ _rxSchedulerService = rxSchedulerService;
+ }
- public IObservable IsSelected { get; }
+ public void Init(ITab tab, int tabNumber)
+ {
+ Tab = tab;
+ TabNumber = tabNumber;
- public IObservable CurrentLocation { get; private set; } = null!;
- public IObservable CurrentSelectedItem { get; private set; } = null!;
- public IObservable>?> CurrentItems { get; private set; } = null!;
- public IObservable> MarkedItems { get; }
- public IObservable>?> SelectedsChildren { get; private set; } = null!;
- public IObservable>?> ParentsChildren { get; private set; } = null!;
+ CurrentLocation = tab.CurrentLocation.AsObservable();
+ CurrentItems = tab.CurrentItems
+ .Select(items => items?.Transform(MapItemToViewModel))
+ .ObserveOn(_rxSchedulerService.GetWorkerScheduler())
+ .SubscribeOn(_rxSchedulerService.GetUIScheduler())
+ .Publish(null)
+ .RefCount();
- public IObservable?> CurrentItemsCollectionObservable { get; private set; } = null!;
-
- [Property]
- private BindedCollection? _currentItemsCollection;
-
- [Property]
- private BindedCollection? _parentsChildrenCollection;
-
- [Property]
- private BindedCollection? _selectedsChildrenCollection;
-
- public TabViewModel(
- IServiceProvider serviceProvider,
- IItemNameConverterService itemNameConverterService,
- IAppState appState,
- IRxSchedulerService rxSchedulerService)
- {
- _serviceProvider = serviceProvider;
- _itemNameConverterService = itemNameConverterService;
- _appState = appState;
-
- MarkedItems = _markedItems.Connect().StartWithEmpty();
- IsSelected = _appState.SelectedTab.Select(s => s == this);
- _rxSchedulerService = rxSchedulerService;
- }
-
- public void Init(ITab tab, int tabNumber)
- {
- Tab = tab;
- TabNumber = tabNumber;
-
- CurrentLocation = tab.CurrentLocation.AsObservable();
- CurrentItems = tab.CurrentItems
- .Select(items => items?.Transform(MapItemToViewModel))
- .ObserveOn(_rxSchedulerService.GetWorkerScheduler())
- .SubscribeOn(_rxSchedulerService.GetUIScheduler())
- .Publish(null)
- .RefCount();
-
- CurrentSelectedItem =
- Observable.CombineLatest(
+ CurrentSelectedItem =
+ Observable.CombineLatest(
CurrentItems,
tab.CurrentSelectedItem,
(currentItems, currentSelectedItemPath) =>
currentItems == null
- ? Observable.Return((IItemViewModel?)null)
- : currentItems
- .ToCollection()
- .Select(items => items.FirstOrDefault(i => i.BaseItem?.FullName == currentSelectedItemPath?.Path))
+ ? Observable.Return((IItemViewModel?)null)
+ : currentItems
+ .ToCollection()
+ .Select(items => items.FirstOrDefault(i => i.BaseItem?.FullName == currentSelectedItemPath?.Path))
)
.Switch()
.Publish(null)
.RefCount();
- SelectedsChildren = InitSelectedsChildren();
- ParentsChildren = InitParentsChildren();
+ SelectedsChildren = InitSelectedsChildren();
+ ParentsChildren = InitParentsChildren();
- CurrentItemsCollectionObservable = CurrentItems
- .Select(c => c != null ? c.ToCollection() : Observable.Return((IReadOnlyCollection?)null))
- .Switch()
- .Publish(null)
- .RefCount();
+ CurrentItemsCollectionObservable = CurrentItems
+ .Select(c => c != null ? c.ToCollection() : Observable.Return((IReadOnlyCollection?)null))
+ .Switch()
+ .Publish(null)
+ .RefCount();
- CurrentItems.Subscribe(children =>
- {
- CurrentItemsCollection?.Dispose();
- CurrentItemsCollection = children.MapNull(c => new BindedCollection(c!));
- });
+ CurrentItems.Subscribe(children =>
+ {
+ CurrentItemsCollection?.Dispose();
+ CurrentItemsCollection = children.MapNull(c => new BindedCollection(c!));
+ });
- ParentsChildren.Subscribe(children =>
- {
- ParentsChildrenCollection?.Dispose();
- ParentsChildrenCollection = children.MapNull(c => new BindedCollection(c!));
- });
+ ParentsChildren.Subscribe(children =>
+ {
+ ParentsChildrenCollection?.Dispose();
+ ParentsChildrenCollection = children.MapNull(c => new BindedCollection(c!));
+ });
- SelectedsChildren.Subscribe(children =>
- {
- SelectedsChildrenCollection?.Dispose();
- SelectedsChildrenCollection = children.MapNull(c => new BindedCollection(c!));
- });
+ SelectedsChildren.Subscribe(children =>
+ {
+ SelectedsChildrenCollection?.Dispose();
+ SelectedsChildrenCollection = children.MapNull(c => new BindedCollection(c!));
+ });
- tab.CurrentLocation.Subscribe((_) => _markedItems.Clear());
+ tab.CurrentLocation.Subscribe((_) => _markedItems.Clear());
- IObservable>?> InitSelectedsChildren()
- {
- var currentSelectedItemThrottled = CurrentSelectedItem.Throttle(TimeSpan.FromMilliseconds(250)).Publish(null).RefCount();
- return Observable.Merge(
+ IObservable>?> InitSelectedsChildren()
+ {
+ var currentSelectedItemThrottled = CurrentSelectedItem.Throttle(TimeSpan.FromMilliseconds(250)).Publish(null).RefCount();
+ return Observable.Merge(
currentSelectedItemThrottled
.WhereNotNull()
.OfType()
@@ -136,17 +136,17 @@ namespace FileTime.App.Core.ViewModels
.SubscribeOn(_rxSchedulerService.GetUIScheduler())
.Publish(null)
.RefCount();
- }
+ }
- IObservable>?> InitParentsChildren()
- {
- var parentThrottled = CurrentLocation
- .Select(l => l?.Parent)
- .DistinctUntilChanged()
- .Publish(null)
- .RefCount();
+ IObservable>?> InitParentsChildren()
+ {
+ var parentThrottled = CurrentLocation
+ .Select(l => l?.Parent)
+ .DistinctUntilChanged()
+ .Publish(null)
+ .RefCount();
- return Observable.Merge(
+ return Observable.Merge(
parentThrottled
.Where(p => p is not null)
.Select(p => Observable.FromAsync(async () => (IContainer)await p!.ResolveAsync()))
@@ -162,85 +162,84 @@ namespace FileTime.App.Core.ViewModels
.SubscribeOn(_rxSchedulerService.GetUIScheduler())
.Publish(null)
.RefCount();
- }
- }
-
- private static async Task MapItem(IAbsolutePath item)
- => await item.ResolveAsync(forceResolve: true, itemInitializationSettings: new ItemInitializationSettings(true));
-
- private IItemViewModel MapItemToViewModel(IItem item)
- {
- if (item is IContainer container)
- {
- var containerViewModel = _serviceProvider.GetInitableResolver(container, this).GetRequiredService();
-
- return containerViewModel;
- }
- else if (item is IFileElement fileElement)
- {
- var fileViewModel = _serviceProvider.GetInitableResolver(fileElement, this).GetRequiredService();
- fileViewModel.Size = fileElement.Size;
-
- return fileViewModel;
- }
- else if (item is IElement element)
- {
- var elementViewModel = _serviceProvider.GetInitableResolver(element, this).GetRequiredService();
-
- return elementViewModel;
- }
-
- throw new ArgumentException($"{nameof(item)} is not {nameof(IContainer)} neither {nameof(IElement)}");
- }
-
- public void AddMarkedItem(IAbsolutePath item) => _markedItems.Add(item);
-
- public void RemoveMarkedItem(IAbsolutePath item)
- {
- var itemsToRemove = _markedItems.Items.Where(i => i.Path.Path == item.Path.Path).ToList();
-
- _markedItems.RemoveMany(itemsToRemove);
- }
-
- public void ToggleMarkedItem(IAbsolutePath item)
- {
- if (_markedItems.Items.Any(i => i.Path.Path == item.Path.Path))
- {
- RemoveMarkedItem(item);
- }
- else
- {
- AddMarkedItem(item);
- }
- }
-
- public void ClearMarkedItems()
- {
- _markedItems.Clear();
- }
-
- ~TabViewModel() => Dispose(false);
-
- public void Dispose()
- {
- Dispose(true);
- GC.SuppressFinalize(this);
- }
-
- private void Dispose(bool disposing)
- {
- if (!disposed && disposing)
- {
- foreach (var disposable in _disposables)
- {
- try
- {
- disposable.Dispose();
- }
- catch { }
- }
- }
- disposed = true;
}
}
+
+ private static async Task MapItem(IAbsolutePath item)
+ => await item.ResolveAsync(forceResolve: true, itemInitializationSettings: new ItemInitializationSettings(true));
+
+ private IItemViewModel MapItemToViewModel(IItem item)
+ {
+ if (item is IContainer container)
+ {
+ var containerViewModel = _serviceProvider.GetInitableResolver(container, this).GetRequiredService();
+
+ return containerViewModel;
+ }
+ else if (item is IFileElement fileElement)
+ {
+ var fileViewModel = _serviceProvider.GetInitableResolver(fileElement, this).GetRequiredService();
+ fileViewModel.Size = fileElement.Size;
+
+ return fileViewModel;
+ }
+ else if (item is IElement element)
+ {
+ var elementViewModel = _serviceProvider.GetInitableResolver(element, this).GetRequiredService();
+
+ return elementViewModel;
+ }
+
+ throw new ArgumentException($"{nameof(item)} is not {nameof(IContainer)} neither {nameof(IElement)}");
+ }
+
+ public void AddMarkedItem(IAbsolutePath item) => _markedItems.Add(item);
+
+ public void RemoveMarkedItem(IAbsolutePath item)
+ {
+ var itemsToRemove = _markedItems.Items.Where(i => i.Path.Path == item.Path.Path).ToList();
+
+ _markedItems.RemoveMany(itemsToRemove);
+ }
+
+ public void ToggleMarkedItem(IAbsolutePath item)
+ {
+ if (_markedItems.Items.Any(i => i.Path.Path == item.Path.Path))
+ {
+ RemoveMarkedItem(item);
+ }
+ else
+ {
+ AddMarkedItem(item);
+ }
+ }
+
+ public void ClearMarkedItems()
+ {
+ _markedItems.Clear();
+ }
+
+ ~TabViewModel() => Dispose(false);
+
+ public void Dispose()
+ {
+ Dispose(true);
+ GC.SuppressFinalize(this);
+ }
+
+ private void Dispose(bool disposing)
+ {
+ if (!disposed && disposing)
+ {
+ foreach (var disposable in _disposables)
+ {
+ try
+ {
+ disposable.Dispose();
+ }
+ catch { }
+ }
+ }
+ disposed = true;
+ }
}
\ No newline at end of file
diff --git a/src/AppCommon/FileTime.App.DependencyInjection/DependencyInjection.cs b/src/AppCommon/FileTime.App.DependencyInjection/DependencyInjection.cs
index 967ea73..a3a38c1 100644
--- a/src/AppCommon/FileTime.App.DependencyInjection/DependencyInjection.cs
+++ b/src/AppCommon/FileTime.App.DependencyInjection/DependencyInjection.cs
@@ -3,18 +3,17 @@ using FileTime.Core.Services;
using FileTime.Providers.Local;
using Microsoft.Extensions.DependencyInjection;
-namespace FileTime.App.DependencyInjection
-{
- public static class DependencyInjection
- {
- public static IServiceCollection RegisterDefaultServices(IServiceCollection? serviceCollection = null)
- {
- serviceCollection ??= new ServiceCollection();
+namespace FileTime.App.DependencyInjection;
- return serviceCollection
- .AddTransient()
- .AddCoreAppServices()
- .AddLocalServices();
- }
+public static class DependencyInjection
+{
+ public static IServiceCollection RegisterDefaultServices(IServiceCollection? serviceCollection = null)
+ {
+ serviceCollection ??= new ServiceCollection();
+
+ return serviceCollection
+ .AddTransient()
+ .AddCoreAppServices()
+ .AddLocalServices();
}
}
\ No newline at end of file
diff --git a/src/AppCommon/FileTime.App.DependencyInjection/FileTime.App.DependencyInjection.csproj b/src/AppCommon/FileTime.App.DependencyInjection/FileTime.App.DependencyInjection.csproj
index 16d495d..440ce50 100644
--- a/src/AppCommon/FileTime.App.DependencyInjection/FileTime.App.DependencyInjection.csproj
+++ b/src/AppCommon/FileTime.App.DependencyInjection/FileTime.App.DependencyInjection.csproj
@@ -5,6 +5,11 @@
enable
enable
+
+
+ true
+
+
diff --git a/src/ConsoleApp/FileTime.ConsoleUI.App/FileTime.ConsoleUI.App.csproj b/src/ConsoleApp/FileTime.ConsoleUI.App/FileTime.ConsoleUI.App.csproj
index 132c02c..ec0a628 100644
--- a/src/ConsoleApp/FileTime.ConsoleUI.App/FileTime.ConsoleUI.App.csproj
+++ b/src/ConsoleApp/FileTime.ConsoleUI.App/FileTime.ConsoleUI.App.csproj
@@ -6,4 +6,8 @@
enable
+
+ true
+
+
diff --git a/src/ConsoleApp/FileTime.ConsoleUI/FileTime.ConsoleUI.csproj b/src/ConsoleApp/FileTime.ConsoleUI/FileTime.ConsoleUI.csproj
index 5bb66e7..f29c3c7 100644
--- a/src/ConsoleApp/FileTime.ConsoleUI/FileTime.ConsoleUI.csproj
+++ b/src/ConsoleApp/FileTime.ConsoleUI/FileTime.ConsoleUI.csproj
@@ -7,6 +7,10 @@
enable
+
+ true
+
+
diff --git a/src/Core/FileTime.Core.Abstraction/Behaviors/IOnContainerEnter.cs b/src/Core/FileTime.Core.Abstraction/Behaviors/IOnContainerEnter.cs
index 47bc880..0f3d100 100644
--- a/src/Core/FileTime.Core.Abstraction/Behaviors/IOnContainerEnter.cs
+++ b/src/Core/FileTime.Core.Abstraction/Behaviors/IOnContainerEnter.cs
@@ -1,7 +1,6 @@
-namespace FileTime.Core.Behaviors
+namespace FileTime.Core.Behaviors;
+
+public interface IOnContainerEnter
{
- public interface IOnContainerEnter
- {
- Task OnEnter();
- }
+ Task OnEnter();
}
\ No newline at end of file
diff --git a/src/Core/FileTime.Core.Abstraction/Command/ICommand.cs b/src/Core/FileTime.Core.Abstraction/Command/ICommand.cs
index d119d7e..8508a67 100644
--- a/src/Core/FileTime.Core.Abstraction/Command/ICommand.cs
+++ b/src/Core/FileTime.Core.Abstraction/Command/ICommand.cs
@@ -1,7 +1,6 @@
-namespace FileTime.Core.Command
+namespace FileTime.Core.Command;
+
+public interface ICommand
{
- public interface ICommand
- {
- }
}
\ No newline at end of file
diff --git a/src/Core/FileTime.Core.Abstraction/Command/ITransportationCommand.cs b/src/Core/FileTime.Core.Abstraction/Command/ITransportationCommand.cs
index 338c855..ac66aee 100644
--- a/src/Core/FileTime.Core.Abstraction/Command/ITransportationCommand.cs
+++ b/src/Core/FileTime.Core.Abstraction/Command/ITransportationCommand.cs
@@ -1,7 +1,6 @@
-namespace FileTime.Core.Command
+namespace FileTime.Core.Command;
+
+public interface ITransportationCommand : ICommand
{
- public interface ITransportationCommand : ICommand
- {
- }
}
\ No newline at end of file
diff --git a/src/Core/FileTime.Core.Abstraction/Enums/AbsolutePathType.cs b/src/Core/FileTime.Core.Abstraction/Enums/AbsolutePathType.cs
index 8ea7f63..6526cc8 100644
--- a/src/Core/FileTime.Core.Abstraction/Enums/AbsolutePathType.cs
+++ b/src/Core/FileTime.Core.Abstraction/Enums/AbsolutePathType.cs
@@ -1,9 +1,8 @@
-namespace FileTime.Core.Enums
+namespace FileTime.Core.Enums;
+
+public enum AbsolutePathType
{
- public enum AbsolutePathType
- {
- Unknown,
- Container,
- Element
- }
+ Unknown,
+ Container,
+ Element
}
\ No newline at end of file
diff --git a/src/Core/FileTime.Core.Abstraction/Enums/SupportsDelete.cs b/src/Core/FileTime.Core.Abstraction/Enums/SupportsDelete.cs
index ce052d5..04e3703 100644
--- a/src/Core/FileTime.Core.Abstraction/Enums/SupportsDelete.cs
+++ b/src/Core/FileTime.Core.Abstraction/Enums/SupportsDelete.cs
@@ -1,9 +1,8 @@
-namespace FileTime.Core.Enums
+namespace FileTime.Core.Enums;
+
+public enum SupportsDelete
{
- public enum SupportsDelete
- {
- False,
- True,
- HardDeleteOnly,
- }
+ False,
+ True,
+ HardDeleteOnly,
}
\ No newline at end of file
diff --git a/src/Core/FileTime.Core.Abstraction/FileTime.Core.Abstraction.csproj b/src/Core/FileTime.Core.Abstraction/FileTime.Core.Abstraction.csproj
index 0bf3e28..e9c5d5a 100644
--- a/src/Core/FileTime.Core.Abstraction/FileTime.Core.Abstraction.csproj
+++ b/src/Core/FileTime.Core.Abstraction/FileTime.Core.Abstraction.csproj
@@ -6,6 +6,10 @@
enable
+
+ true
+
+
diff --git a/src/Core/FileTime.Core.Abstraction/Models/Constants.cs b/src/Core/FileTime.Core.Abstraction/Models/Constants.cs
index 7244ea6..343cb4b 100644
--- a/src/Core/FileTime.Core.Abstraction/Models/Constants.cs
+++ b/src/Core/FileTime.Core.Abstraction/Models/Constants.cs
@@ -1,7 +1,6 @@
-namespace FileTime.Core.Models
+namespace FileTime.Core.Models;
+
+public static class Constants
{
- public static class Constants
- {
- public const char SeparatorChar = '/';
- }
+ public const char SeparatorChar = '/';
}
\ No newline at end of file
diff --git a/src/Core/FileTime.Core.Abstraction/Models/FullName.cs b/src/Core/FileTime.Core.Abstraction/Models/FullName.cs
index 406f5dd..d57a913 100644
--- a/src/Core/FileTime.Core.Abstraction/Models/FullName.cs
+++ b/src/Core/FileTime.Core.Abstraction/Models/FullName.cs
@@ -1,17 +1,16 @@
-namespace FileTime.Core.Models
-{
- public record FullName(string Path)
- {
- public FullName? GetParent()
- {
- if (Path is null) return null;
+namespace FileTime.Core.Models;
- var pathParts = Path.TrimEnd(Constants.SeparatorChar).Split(Constants.SeparatorChar);
- return pathParts.Length switch
- {
- > 1 => new(string.Join(Constants.SeparatorChar, pathParts.SkipLast(1))),
- _ => null
- };
- }
+public record FullName(string Path)
+{
+ public FullName? GetParent()
+ {
+ if (Path is null) return null;
+
+ var pathParts = Path.TrimEnd(Constants.SeparatorChar).Split(Constants.SeparatorChar);
+ return pathParts.Length switch
+ {
+ > 1 => new(string.Join(Constants.SeparatorChar, pathParts.SkipLast(1))),
+ _ => null
+ };
}
}
\ No newline at end of file
diff --git a/src/Core/FileTime.Core.Abstraction/Models/IAbsolutePath.cs b/src/Core/FileTime.Core.Abstraction/Models/IAbsolutePath.cs
index f0f8ea5..f958f00 100644
--- a/src/Core/FileTime.Core.Abstraction/Models/IAbsolutePath.cs
+++ b/src/Core/FileTime.Core.Abstraction/Models/IAbsolutePath.cs
@@ -1,16 +1,15 @@
using FileTime.Core.Enums;
using FileTime.Core.Services;
-namespace FileTime.Core.Models
-{
- public interface IAbsolutePath
- {
- IContentProvider ContentProvider { get; }
- IContentProvider? VirtualContentProvider { get; }
- FullName Path { get; }
- AbsolutePathType Type { get; }
+namespace FileTime.Core.Models;
- Task ResolveAsync(bool forceResolve = false, ItemInitializationSettings itemInitializationSettings = default);
- Task ResolveAsyncSafe(bool forceResolve = false, ItemInitializationSettings itemInitializationSettings = default);
- }
+public interface IAbsolutePath
+{
+ IContentProvider ContentProvider { get; }
+ IContentProvider? VirtualContentProvider { get; }
+ FullName Path { get; }
+ AbsolutePathType Type { get; }
+
+ Task ResolveAsync(bool forceResolve = false, ItemInitializationSettings itemInitializationSettings = default);
+ Task ResolveAsyncSafe(bool forceResolve = false, ItemInitializationSettings itemInitializationSettings = default);
}
\ No newline at end of file
diff --git a/src/Core/FileTime.Core.Abstraction/Models/IContainer.cs b/src/Core/FileTime.Core.Abstraction/Models/IContainer.cs
index b008d5c..e1c6b29 100644
--- a/src/Core/FileTime.Core.Abstraction/Models/IContainer.cs
+++ b/src/Core/FileTime.Core.Abstraction/Models/IContainer.cs
@@ -1,10 +1,9 @@
using DynamicData;
-namespace FileTime.Core.Models
+namespace FileTime.Core.Models;
+
+public interface IContainer : IItem
{
- public interface IContainer : IItem
- {
- IObservable>?> Items { get; }
- IObservable IsLoading { get; }
- }
+ IObservable>?> Items { get; }
+ IObservable IsLoading { get; }
}
\ No newline at end of file
diff --git a/src/Core/FileTime.Core.Abstraction/Models/IElement.cs b/src/Core/FileTime.Core.Abstraction/Models/IElement.cs
index cb68137..2b48a74 100644
--- a/src/Core/FileTime.Core.Abstraction/Models/IElement.cs
+++ b/src/Core/FileTime.Core.Abstraction/Models/IElement.cs
@@ -1,7 +1,6 @@
-namespace FileTime.Core.Models
+namespace FileTime.Core.Models;
+
+public interface IElement : IItem
{
- public interface IElement : IItem
- {
- }
}
\ No newline at end of file
diff --git a/src/Core/FileTime.Core.Abstraction/Models/IFileElement.cs b/src/Core/FileTime.Core.Abstraction/Models/IFileElement.cs
index 6dff1a6..7a364a2 100644
--- a/src/Core/FileTime.Core.Abstraction/Models/IFileElement.cs
+++ b/src/Core/FileTime.Core.Abstraction/Models/IFileElement.cs
@@ -1,7 +1,6 @@
-namespace FileTime.Core.Models
+namespace FileTime.Core.Models;
+
+public interface IFileElement : IElement
{
- public interface IFileElement : IElement
- {
- long Size { get; }
- }
+ long Size { get; }
}
\ No newline at end of file
diff --git a/src/Core/FileTime.Core.Abstraction/Models/IItem.cs b/src/Core/FileTime.Core.Abstraction/Models/IItem.cs
index 15ed4cc..58208d0 100644
--- a/src/Core/FileTime.Core.Abstraction/Models/IItem.cs
+++ b/src/Core/FileTime.Core.Abstraction/Models/IItem.cs
@@ -1,23 +1,22 @@
using FileTime.Core.Enums;
using FileTime.Core.Services;
-namespace FileTime.Core.Models
+namespace FileTime.Core.Models;
+
+public interface IItem
{
- public interface IItem
- {
- string Name { get; }
- string DisplayName { get; }
- FullName? FullName { get; }
- NativePath? NativePath { get; }
- IAbsolutePath? Parent { get; }
- bool IsHidden { get; }
- bool IsExists { get; }
- DateTime? CreatedAt { get; }
- SupportsDelete CanDelete { get; }
- bool CanRename { get; }
- IContentProvider Provider { get; }
- string? Attributes { get; }
- AbsolutePathType Type { get; }
- IObservable> Exceptions { get; }
- }
+ string Name { get; }
+ string DisplayName { get; }
+ FullName? FullName { get; }
+ NativePath? NativePath { get; }
+ IAbsolutePath? Parent { get; }
+ bool IsHidden { get; }
+ bool IsExists { get; }
+ DateTime? CreatedAt { get; }
+ SupportsDelete CanDelete { get; }
+ bool CanRename { get; }
+ IContentProvider Provider { get; }
+ string? Attributes { get; }
+ AbsolutePathType Type { get; }
+ IObservable> Exceptions { get; }
}
\ No newline at end of file
diff --git a/src/Core/FileTime.Core.Abstraction/Models/ItemInitializationSettings.cs b/src/Core/FileTime.Core.Abstraction/Models/ItemInitializationSettings.cs
index 82a14eb..b44a70b 100644
--- a/src/Core/FileTime.Core.Abstraction/Models/ItemInitializationSettings.cs
+++ b/src/Core/FileTime.Core.Abstraction/Models/ItemInitializationSettings.cs
@@ -1,12 +1,11 @@
-namespace FileTime.Core.Models
-{
- public readonly struct ItemInitializationSettings
- {
- public readonly bool SkipChildInitialization;
+namespace FileTime.Core.Models;
- public ItemInitializationSettings(bool skipChildInitialization)
- {
- SkipChildInitialization = skipChildInitialization;
- }
+public readonly struct ItemInitializationSettings
+{
+ public readonly bool SkipChildInitialization;
+
+ public ItemInitializationSettings(bool skipChildInitialization)
+ {
+ SkipChildInitialization = skipChildInitialization;
}
}
\ No newline at end of file
diff --git a/src/Core/FileTime.Core.Abstraction/Models/ItemsTransformator.cs b/src/Core/FileTime.Core.Abstraction/Models/ItemsTransformator.cs
index c16b576..7213d21 100644
--- a/src/Core/FileTime.Core.Abstraction/Models/ItemsTransformator.cs
+++ b/src/Core/FileTime.Core.Abstraction/Models/ItemsTransformator.cs
@@ -1,7 +1,6 @@
-namespace FileTime.Core.Models
-{
- public record ItemsTransformator(
- string Name,
- Func, Task>> Transformator
- );
-}
\ No newline at end of file
+namespace FileTime.Core.Models;
+
+public record ItemsTransformator(
+ string Name,
+ Func, Task>> Transformator
+);
\ No newline at end of file
diff --git a/src/Core/FileTime.Core.Abstraction/Models/NativePath.cs b/src/Core/FileTime.Core.Abstraction/Models/NativePath.cs
index 8f1d703..3a1b7e7 100644
--- a/src/Core/FileTime.Core.Abstraction/Models/NativePath.cs
+++ b/src/Core/FileTime.Core.Abstraction/Models/NativePath.cs
@@ -1,4 +1,3 @@
-namespace FileTime.Core.Models
-{
- public record NativePath(string Path);
-}
\ No newline at end of file
+namespace FileTime.Core.Models;
+
+public record NativePath(string Path);
\ No newline at end of file
diff --git a/src/Core/FileTime.Core.Abstraction/Services/IContentProvider.cs b/src/Core/FileTime.Core.Abstraction/Services/IContentProvider.cs
index 82ab077..c803d60 100644
--- a/src/Core/FileTime.Core.Abstraction/Services/IContentProvider.cs
+++ b/src/Core/FileTime.Core.Abstraction/Services/IContentProvider.cs
@@ -2,22 +2,21 @@ using FileTime.Core.Behaviors;
using FileTime.Core.Enums;
using FileTime.Core.Models;
-namespace FileTime.Core.Services
+namespace FileTime.Core.Services;
+
+public interface IContentProvider : IContainer, IOnContainerEnter
{
- public interface IContentProvider : IContainer, IOnContainerEnter
- {
- Task GetItemByFullNameAsync(
- FullName fullName,
- bool forceResolve = false,
- AbsolutePathType forceResolvePathType = AbsolutePathType.Unknown,
- ItemInitializationSettings itemInitializationSettings = default);
+ Task GetItemByFullNameAsync(
+ FullName fullName,
+ bool forceResolve = false,
+ AbsolutePathType forceResolvePathType = AbsolutePathType.Unknown,
+ ItemInitializationSettings itemInitializationSettings = default);
- Task GetItemByNativePathAsync(
- NativePath nativePath,
- bool forceResolve = false,
- AbsolutePathType forceResolvePathType = AbsolutePathType.Unknown,
- ItemInitializationSettings itemInitializationSettings = default);
+ Task GetItemByNativePathAsync(
+ NativePath nativePath,
+ bool forceResolve = false,
+ AbsolutePathType forceResolvePathType = AbsolutePathType.Unknown,
+ ItemInitializationSettings itemInitializationSettings = default);
- Task> GetItemsByContainerAsync(FullName fullName);
- }
+ Task> GetItemsByContainerAsync(FullName fullName);
}
\ No newline at end of file
diff --git a/src/Core/FileTime.Core.Abstraction/Services/ITab.cs b/src/Core/FileTime.Core.Abstraction/Services/ITab.cs
index 54539cb..6733f3f 100644
--- a/src/Core/FileTime.Core.Abstraction/Services/ITab.cs
+++ b/src/Core/FileTime.Core.Abstraction/Services/ITab.cs
@@ -2,18 +2,17 @@ using DynamicData;
using FileTime.Core.Models;
using InitableService;
-namespace FileTime.Core.Services
-{
- public interface ITab : IInitable
- {
- IObservable