More project base

This commit is contained in:
2022-04-01 20:38:43 +02:00
parent d0edf85e98
commit 8e09bf41bb
76 changed files with 3589 additions and 78 deletions

View File

@@ -0,0 +1,66 @@
namespace FileTime.App.Core.Command
{
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,
}
}

View File

@@ -0,0 +1,17 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="System.Reactive" Version="5.0.0" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\Core\FileTime.Core.Abstraction\FileTime.Core.Abstraction.csproj" />
</ItemGroup>
</Project>

View File

@@ -0,0 +1,16 @@
using System.Collections.ObjectModel;
using FileTime.App.Core.ViewModels;
namespace FileTime.App.Core
{
public interface IAppState
{
ObservableCollection<ITabViewModel> Tabs { get; }
ITabViewModel? SelectedTab { get; }
IObservable<string?> SearchText { get; }
void AddTab(ITabViewModel tabViewModel);
void RemoveTab(ITabViewModel tabViewModel);
void SetSearchText(string? searchText);
}
}

View File

@@ -0,0 +1,10 @@
namespace FileTime.App.Core.Models.Enums
{
public enum ItemAttributeType
{
File,
Element,
Container,
SizeContainer
}
}

View File

@@ -0,0 +1,12 @@
namespace FileTime.App.Core.Models.Enums
{
public enum ItemViewMode
{
Default,
Alternative,
Selected,
Marked,
MarkedSelected,
MarkedAlternative
}
}

View File

@@ -0,0 +1,14 @@
namespace FileTime.App.Core.Models
{
public class ItemNamePart
{
public string Text { get; set; }
public bool IsSpecial { get; set; }
public ItemNamePart(string text, bool isSpecial = false)
{
Text = text;
IsSpecial = isSpecial;
}
}
}

View File

@@ -0,0 +1,11 @@
using FileTime.App.Core.Models;
namespace FileTime.App.Core.Services
{
public interface IItemNameConverterService
{
List<ItemNamePart> GetDisplayName(string name, string? searchText);
string GetFileExtension(string fullName);
string GetFileName(string fullName);
}
}

View File

@@ -0,0 +1,7 @@
namespace FileTime.App.Core.ViewModels
{
public interface IContainerSizeContainerViewModel : IItemViewModel
{
}
}

View File

@@ -0,0 +1,7 @@
namespace FileTime.App.Core.ViewModels
{
public interface IContainerViewModel : IItemViewModel
{
}
}

View File

@@ -0,0 +1,7 @@
namespace FileTime.App.Core.ViewModels
{
public interface IElementViewModel : IItemViewModel
{
}
}

View File

@@ -0,0 +1,7 @@
namespace FileTime.App.Core.ViewModels
{
public interface IFileViewModel : IElementViewModel
{
}
}

View File

@@ -0,0 +1,15 @@
using FileTime.App.Core.Models;
using FileTime.App.Core.Models.Enums;
using FileTime.Core.Models;
namespace FileTime.App.Core.ViewModels
{
public interface IItemViewModel
{
IItem? Item { get; set; }
IObservable<IReadOnlyList<ItemNamePart>>? DisplayName { get; set; }
IObservable<bool>? IsSelected { get; set; }
IObservable<bool>? IsMarked { get; set; }
ItemViewMode ViewMode { get; set; }
}
}

View File

@@ -0,0 +1,16 @@
using FileTime.Core.Models;
using FileTime.Core.Services;
using InitableService;
namespace FileTime.App.Core.ViewModels
{
public interface ITabViewModel : IInitable<ITab>
{
IObservable<IContainer?>? CurrentLocation { get; }
IObservable<IItemViewModel?>? CurrentSelectedItem { get; }
IObservable<IReadOnlyList<IItemViewModel>>? CurrentItems { get; }
IObservable<IReadOnlyList<FullName>> MarkedItems { get; }
ITab? Tab { get; }
}
}