Перейти к содержанию

Отображение файла в предпросмотре сразу при открытии карточки

Отображение файла в предпросмотре сразу при открытии карточки

Требуется в момент открытия карточки (но не после сохранения или обновления) автоматически загружать и отображать файл в области предпросмотра. Напишем расширение CardUIExtension, которое в методе Initialized проверяет тип открытия карточки context.InitializationType, который должен соответствовать типу “открывается карточка в новой вкладке” - CardUIInitializationType.Opening.

Далее находим файл, который требуется показать сразу после открытия, и элемент управления, в котором этот файл есть. Если файл найден, то в методе ShowInPreviewAsync выполняем загрузку его содержимого, после чего отображаем файл в предпросмотре и выделяем его в элементе управления.

using System.Linq; using Tessa.Cards; using Tessa.Files; using Tessa.Platform.Validation; using Tessa.UI; using Tessa.UI.Cards; using Tessa.UI.Cards.Controls; using Tessa.UI.Files;

namespace Tessa.Extensions.Client { public sealed class TestUIExtension : CardUIExtension { public override void Initialized(ICardUIExtensionContext context) { if (context.InitializationType != CardUIInitializationType.Opening) { return; }

IFile file = context.FileContainer.Files.OrderBy(x => x.Name).FirstOrDefault(); if (file == null) { return; }

foreach (FileListViewModel controlViewModel in context.Model.ControlBag.OfType<FileListViewModel>()) { IFileControl control = controlViewModel.FileControl; IFileViewModel fileViewModel = control.Items.FirstOrDefault(x => x.Model == file);

if (fileViewModel != null) { ShowInPreviewAsync(fileViewModel, control); break; } } }

private static async void ShowInPreviewAsync(IFileViewModel fileViewModel, IFileControl control) { ValidationResult loadResult = await fileViewModel.Model.EnsureContentDownloadedInUIAsync(); TessaDialog.ShowNotEmpty(loadResult);

if (loadResult.IsSuccessful) { string filePath = fileViewModel.Model.Content.GetLocalFilePath(); control.Manager.ShowPreview(control, filePath);

fileViewModel.IsSelected = true; } } }

[Registrator] public sealed class TestRegistrator : RegistratorBase { public override void RegisterExtensions(IExtensionContainer extensionContainer) { extensionContainer .RegisterExtension<ICardUIExtension, TestUIExtension>(x => x .WithOrder(ExtensionStage.AfterPlatform, 1) .WithSingleton() .WhenCardTypes("Car")) ; } } }

Back to top