/
githubmirror
/
Files
Обзор
Документация
Войти
/
githubmirror
/
Files
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/Files.App/Actions/Navigation/OpenInNewPane/BaseOpenInNewPaneAction.cs
62 строки
2 KB
yair100
Feature: Improved 'Open in new pane' context menu (#18602)
17 июн 2026, 02:39
Не верифицирован
17 июн 2026, 02:39
4f15868
Код
Авторство
О чём код?
// Copyright (c) Files Community // Licensed under the MIT License. namespace Files.App.Actions { internal abstract class BaseOpenInNewPaneAction : ObservableObject, IAction { protected IUserSettingsService UserSettingsService { get; } = Ioc.Default.GetRequiredService<IUserSettingsService>(); protected IContentPageContext ContentPageContext { get; } = Ioc.Default.GetRequiredService<IContentPageContext>(); protected IHomePageContext HomePageContext { get; } = Ioc.Default.GetRequiredService<IHomePageContext>(); protected ISidebarContext SidebarContext { get; } = Ioc.Default.GetRequiredService<ISidebarContext>(); public string Label => Strings.OpenInNewPane.GetLocalizedResource(); public string Description => Strings.OpenDirectoryInNewPaneDescription.GetLocalizedResource(); public virtual ActionCategory Category => ActionCategory.DualPane; public virtual bool IsExecutable => ContentPageContext.PageType != ContentPageTypes.RecycleBin && ContentPageContext.SelectedItem is not null && ContentPageContext.SelectedItem.IsFolder && ContentPageContext.IsMultiPaneAvailable && !ContentPageContext.IsMultiPaneActive; public virtual bool IsAccessibleGlobally => true; public BaseOpenInNewPaneAction() { ContentPageContext.PropertyChanged += Context_PropertyChanged; } public virtual Task ExecuteAsync(object? parameter = null) { NavigationHelpers.OpenInSecondaryPane( ContentPageContext.ShellPage, ContentPageContext.ShellPage.SlimContentPage.SelectedItems.FirstOrDefault(), parameter as ShellPaneArrangement? ?? ShellPaneArrangement.None); return Task.CompletedTask; } protected virtual void Context_PropertyChanged(object? sender, PropertyChangedEventArgs e) { switch (e.PropertyName) { case nameof(IContentPageContext.ShellPage): case nameof(IContentPageContext.PageType): case nameof(IContentPageContext.HasSelection): case nameof(IContentPageContext.SelectedItems): case nameof(IContentPageContext.IsMultiPaneActive): case nameof(IContentPageContext.IsMultiPaneAvailable): OnPropertyChanged(nameof(IsExecutable)); break; } } } }