mirror of
https://github.com/wwiinnddyy/LanMountainDesktop.git
synced 2026-08-21 04:31:20 +08:00
0.7.9
更新功能优化、插件市场优化,反正就是优化了很多东西
This commit is contained in:
@@ -4,8 +4,8 @@
|
||||
xmlns:mdxaml="https://github.com/whistyun/Markdown.Avalonia"
|
||||
xmlns:helpers="using:LanMountainDesktop.Helpers"
|
||||
xmlns:fi="using:FluentIcons.Avalonia.Fluent"
|
||||
x:Class="LanMountainDesktop.Views.SettingsPages.PluginMarketDetailDrawer"
|
||||
x:DataType="vm:PluginMarketDetailViewModel">
|
||||
x:Class="LanMountainDesktop.Views.SettingsPages.PluginCatalogDetailDrawer"
|
||||
x:DataType="vm:PluginCatalogDetailViewModel">
|
||||
<ScrollViewer VerticalScrollBarVisibility="Auto">
|
||||
<StackPanel Classes="settings-page-container"
|
||||
Margin="0,0,0,8">
|
||||
@@ -41,7 +41,7 @@
|
||||
</StackPanel>
|
||||
|
||||
<Button Grid.Column="2"
|
||||
Classes="plugin-market-icon-button"
|
||||
Classes="plugin-catalog-icon-button"
|
||||
VerticalAlignment="Center"
|
||||
Command="{Binding PerformPrimaryActionCommand}"
|
||||
IsEnabled="{Binding Item.IsActionEnabled}"
|
||||
@@ -103,7 +103,7 @@
|
||||
TextWrapping="Wrap" />
|
||||
<mdxaml:MarkdownScrollViewer IsVisible="{Binding HasReadmeContent}"
|
||||
Markdown="{Binding ReadmeMarkdown}"
|
||||
Engine="{x:Static helpers:PluginMarketMarkdownHelper.Engine}" />
|
||||
Engine="{x:Static helpers:PluginCatalogMarkdownHelper.Engine}" />
|
||||
</StackPanel>
|
||||
</Border>
|
||||
|
||||
@@ -3,14 +3,14 @@ using LanMountainDesktop.ViewModels;
|
||||
|
||||
namespace LanMountainDesktop.Views.SettingsPages;
|
||||
|
||||
public partial class PluginMarketDetailDrawer : UserControl
|
||||
public partial class PluginCatalogDetailDrawer : UserControl
|
||||
{
|
||||
public PluginMarketDetailDrawer()
|
||||
public PluginCatalogDetailDrawer()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
public PluginMarketDetailDrawer(PluginMarketDetailViewModel viewModel)
|
||||
public PluginCatalogDetailDrawer(PluginCatalogDetailViewModel viewModel)
|
||||
{
|
||||
DataContext = viewModel;
|
||||
InitializeComponent();
|
||||
@@ -3,9 +3,9 @@
|
||||
xmlns:vm="using:LanMountainDesktop.ViewModels"
|
||||
xmlns:ui="using:FluentAvalonia.UI.Controls"
|
||||
xmlns:fi="using:FluentIcons.Avalonia.Fluent"
|
||||
x:Class="LanMountainDesktop.Views.SettingsPages.PluginMarketSettingsPage"
|
||||
x:Class="LanMountainDesktop.Views.SettingsPages.PluginCatalogSettingsPage"
|
||||
x:Name="Root"
|
||||
x:DataType="vm:PluginMarketSettingsPageViewModel">
|
||||
x:DataType="vm:PluginCatalogSettingsPageViewModel">
|
||||
<ScrollViewer VerticalScrollBarVisibility="Auto">
|
||||
<StackPanel Classes="settings-page-container settings-page-animated">
|
||||
<ui:SettingsExpander Header="{Binding RefreshButtonText}"
|
||||
@@ -47,7 +47,7 @@
|
||||
</Style>
|
||||
</ListBox.Styles>
|
||||
<ListBox.ItemTemplate>
|
||||
<DataTemplate x:DataType="vm:PluginMarketItemViewModel">
|
||||
<DataTemplate x:DataType="vm:PluginCatalogItemViewModel">
|
||||
<Border Classes="settings-list-item">
|
||||
<Grid ColumnDefinitions="Auto,*,Auto"
|
||||
ColumnSpacing="14">
|
||||
@@ -70,7 +70,7 @@
|
||||
</Border>
|
||||
|
||||
<Button Grid.Column="1"
|
||||
Classes="plugin-market-row-button"
|
||||
Classes="plugin-catalog-row-button"
|
||||
Command="{Binding #Root.DataContext.OpenDetailsCommand}"
|
||||
CommandParameter="{Binding}">
|
||||
<StackPanel Spacing="4"
|
||||
@@ -83,7 +83,7 @@
|
||||
</Button>
|
||||
|
||||
<Button Grid.Column="2"
|
||||
Classes="plugin-market-icon-button"
|
||||
Classes="plugin-catalog-icon-button"
|
||||
VerticalAlignment="Center"
|
||||
Command="{Binding #Root.DataContext.ExecutePrimaryActionCommand}"
|
||||
CommandParameter="{Binding}"
|
||||
@@ -9,21 +9,21 @@ using LanMountainDesktop.ViewModels;
|
||||
namespace LanMountainDesktop.Views.SettingsPages;
|
||||
|
||||
[SettingsPageInfo(
|
||||
"plugin-market",
|
||||
"Plugin Market",
|
||||
SettingsPageCategory.PluginMarket,
|
||||
"plugin-catalog",
|
||||
"Plugin Catalog",
|
||||
SettingsPageCategory.PluginCatalog,
|
||||
IconKey = "ShoppingBag",
|
||||
SortOrder = 35,
|
||||
TitleLocalizationKey = "settings.plugin_market.title",
|
||||
DescriptionLocalizationKey = "settings.plugin_market.subtitle")]
|
||||
public partial class PluginMarketSettingsPage : SettingsPageBase
|
||||
TitleLocalizationKey = "settings.plugin_catalog.title",
|
||||
DescriptionLocalizationKey = "settings.plugin_catalog.subtitle")]
|
||||
public partial class PluginCatalogSettingsPage : SettingsPageBase
|
||||
{
|
||||
public PluginMarketSettingsPage()
|
||||
public PluginCatalogSettingsPage()
|
||||
: this(Design.IsDesignMode ? CreateDesignTimeViewModel() : CreateDefaultViewModel())
|
||||
{
|
||||
}
|
||||
|
||||
public PluginMarketSettingsPage(PluginMarketSettingsPageViewModel viewModel)
|
||||
public PluginCatalogSettingsPage(PluginCatalogSettingsPageViewModel viewModel)
|
||||
{
|
||||
ViewModel = viewModel;
|
||||
ViewModel.RestartRequested += OnRestartRequested;
|
||||
@@ -32,7 +32,7 @@ public partial class PluginMarketSettingsPage : SettingsPageBase
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
public PluginMarketSettingsPageViewModel ViewModel { get; }
|
||||
public PluginCatalogSettingsPageViewModel ViewModel { get; }
|
||||
|
||||
public override async void OnNavigatedTo(object? parameter)
|
||||
{
|
||||
@@ -44,22 +44,22 @@ public partial class PluginMarketSettingsPage : SettingsPageBase
|
||||
await ViewModel.InitializeAsync();
|
||||
}
|
||||
|
||||
private static PluginMarketSettingsPageViewModel CreateDefaultViewModel()
|
||||
private static PluginCatalogSettingsPageViewModel CreateDefaultViewModel()
|
||||
{
|
||||
var settingsFacade = HostSettingsFacadeProvider.GetOrCreate();
|
||||
var localizationService = new LocalizationService();
|
||||
return new PluginMarketSettingsPageViewModel(
|
||||
return new PluginCatalogSettingsPageViewModel(
|
||||
settingsFacade,
|
||||
localizationService,
|
||||
new AirAppMarketIconService(),
|
||||
new AirAppMarketReadmeService());
|
||||
}
|
||||
|
||||
private static PluginMarketSettingsPageViewModel CreateDesignTimeViewModel()
|
||||
private static PluginCatalogSettingsPageViewModel CreateDesignTimeViewModel()
|
||||
{
|
||||
var settingsFacade = HostSettingsFacadeProvider.GetOrCreate();
|
||||
var localizationService = new LocalizationService();
|
||||
var viewModel = new PluginMarketSettingsPageViewModel(
|
||||
var viewModel = new PluginCatalogSettingsPageViewModel(
|
||||
settingsFacade,
|
||||
localizationService,
|
||||
new AirAppMarketIconService(),
|
||||
@@ -68,8 +68,8 @@ public partial class PluginMarketSettingsPage : SettingsPageBase
|
||||
var previewHostVersion = new Version(1, 2, 0);
|
||||
var items = new[]
|
||||
{
|
||||
CreateMarketItem(
|
||||
new PluginMarketPluginInfo(
|
||||
CreateCatalogItemViewModel(
|
||||
CreateCatalogItem(
|
||||
"news-tiles",
|
||||
"News Tiles",
|
||||
"Brings editorial news cards and ticker rows to the desktop.",
|
||||
@@ -91,8 +91,8 @@ public partial class PluginMarketSettingsPage : SettingsPageBase
|
||||
localizationService,
|
||||
installedPlugin: null,
|
||||
previewHostVersion),
|
||||
CreateMarketItem(
|
||||
new PluginMarketPluginInfo(
|
||||
CreateCatalogItemViewModel(
|
||||
CreateCatalogItem(
|
||||
"workspace-pulse",
|
||||
"Workspace Pulse",
|
||||
"Tracks active projects and shows a compact productivity summary.",
|
||||
@@ -125,8 +125,8 @@ public partial class PluginMarketSettingsPage : SettingsPageBase
|
||||
true,
|
||||
null),
|
||||
previewHostVersion),
|
||||
CreateMarketItem(
|
||||
new PluginMarketPluginInfo(
|
||||
CreateCatalogItemViewModel(
|
||||
CreateCatalogItem(
|
||||
"glass-panels",
|
||||
"Glass Panels",
|
||||
"Adds experimental acrylic surfaces for plugin-powered widgets.",
|
||||
@@ -152,7 +152,7 @@ public partial class PluginMarketSettingsPage : SettingsPageBase
|
||||
|
||||
foreach (var item in items)
|
||||
{
|
||||
viewModel.MarketPlugins.Add(item);
|
||||
viewModel.CatalogPlugins.Add(item);
|
||||
viewModel.FilteredPlugins.Add(item);
|
||||
}
|
||||
|
||||
@@ -167,24 +167,87 @@ public partial class PluginMarketSettingsPage : SettingsPageBase
|
||||
RequestRestart(reason ?? ViewModel.RestartRequiredMessage);
|
||||
}
|
||||
|
||||
private async void OnDetailsRequested(PluginMarketItemViewModel item)
|
||||
private async void OnDetailsRequested(PluginCatalogItemViewModel item)
|
||||
{
|
||||
var detailViewModel = ViewModel.CreateDetailViewModel(item);
|
||||
var drawer = new PluginMarketDetailDrawer(detailViewModel);
|
||||
var drawer = new PluginCatalogDetailDrawer(detailViewModel);
|
||||
OpenDrawer(drawer, detailViewModel.DrawerTitle);
|
||||
await detailViewModel.InitializeAsync();
|
||||
}
|
||||
|
||||
private static PluginMarketItemViewModel CreateMarketItem(
|
||||
PluginMarketPluginInfo plugin,
|
||||
private static PluginCatalogItemViewModel CreateCatalogItemViewModel(
|
||||
PluginCatalogItemInfo plugin,
|
||||
LocalizationService localizationService,
|
||||
InstalledPluginInfo? installedPlugin,
|
||||
Version hostVersion)
|
||||
{
|
||||
var languageCode = localizationService.NormalizeLanguageCode(
|
||||
HostSettingsFacadeProvider.GetOrCreate().Region.Get().LanguageCode);
|
||||
var item = new PluginMarketItemViewModel(plugin, localizationService, languageCode);
|
||||
var item = new PluginCatalogItemViewModel(plugin, localizationService, languageCode);
|
||||
item.ApplyInstallState(installedPlugin, hostVersion);
|
||||
return item;
|
||||
}
|
||||
|
||||
private static PluginCatalogItemInfo CreateCatalogItem(
|
||||
string id,
|
||||
string name,
|
||||
string description,
|
||||
string author,
|
||||
string version,
|
||||
string apiVersion,
|
||||
string minHostVersion,
|
||||
string downloadUrl,
|
||||
string releaseTag,
|
||||
string releaseAssetName,
|
||||
string iconUrl,
|
||||
string readmeUrl,
|
||||
string homepageUrl,
|
||||
string repositoryUrl,
|
||||
string[] tags,
|
||||
PluginCatalogSharedContractInfo[] sharedContracts,
|
||||
DateTimeOffset publishedAt,
|
||||
DateTimeOffset updatedAt)
|
||||
{
|
||||
return new PluginCatalogItemInfo(
|
||||
new PluginCatalogManifestInfo(
|
||||
id,
|
||||
name,
|
||||
description,
|
||||
author,
|
||||
version,
|
||||
apiVersion,
|
||||
string.Empty,
|
||||
sharedContracts),
|
||||
new PluginCatalogCompatibilityInfo(
|
||||
minHostVersion,
|
||||
apiVersion),
|
||||
new PluginCatalogRepositoryInfo(
|
||||
iconUrl,
|
||||
homepageUrl,
|
||||
readmeUrl,
|
||||
homepageUrl,
|
||||
repositoryUrl,
|
||||
tags,
|
||||
string.Empty),
|
||||
new PluginCatalogPublicationInfo(
|
||||
releaseTag,
|
||||
releaseAssetName,
|
||||
publishedAt,
|
||||
updatedAt,
|
||||
0,
|
||||
string.Empty,
|
||||
null),
|
||||
string.IsNullOrWhiteSpace(downloadUrl)
|
||||
? []
|
||||
: [
|
||||
new PluginPackageSourceInfo(
|
||||
string.IsNullOrWhiteSpace(releaseTag)
|
||||
? LanMountainDesktop.Services.Settings.PluginPackageSourceKind.RawFallback
|
||||
: LanMountainDesktop.Services.Settings.PluginPackageSourceKind.ReleaseAsset,
|
||||
downloadUrl,
|
||||
string.Empty,
|
||||
0)
|
||||
],
|
||||
[]);
|
||||
}
|
||||
}
|
||||
@@ -47,7 +47,7 @@
|
||||
|
||||
<mdxaml:MarkdownScrollViewer IsVisible="{Binding HasContent}"
|
||||
Markdown="{Binding MarkdownContent}"
|
||||
Engine="{x:Static helpers:PluginMarketMarkdownHelper.Engine}" />
|
||||
Engine="{x:Static helpers:PluginCatalogMarkdownHelper.Engine}" />
|
||||
</StackPanel>
|
||||
</Border>
|
||||
</StackPanel>
|
||||
|
||||
@@ -141,6 +141,9 @@
|
||||
<Button Command="{Binding DownloadLatestReleaseCommand}"
|
||||
Content="{Binding DownloadButtonText}"
|
||||
IsVisible="{Binding IsDownloadButtonVisible}" />
|
||||
<Button Command="{Binding RedownloadUpdateCommand}"
|
||||
Content="{Binding RedownloadButtonText}"
|
||||
IsVisible="{Binding IsRedownloadButtonVisible}" />
|
||||
<Button Classes="settings-accent-button"
|
||||
Command="{Binding InstallPendingUpdateCommand}"
|
||||
Content="{Binding InstallNowButtonText}"
|
||||
@@ -172,6 +175,14 @@
|
||||
</ComboBox.ItemTemplate>
|
||||
</ComboBox>
|
||||
</ui:SettingsExpander.Footer>
|
||||
<ui:SettingsExpanderItem Content="{Binding ForceCheckUpdateLabel}"
|
||||
Description="{Binding ForceCheckUpdateDescription}"
|
||||
IsClickEnabled="True"
|
||||
Command="{Binding ForceCheckUpdateCommand}">
|
||||
<ui:SettingsExpanderItem.IconSource>
|
||||
<fi:SymbolIconSource Symbol="ArrowSync" />
|
||||
</ui:SettingsExpanderItem.IconSource>
|
||||
</ui:SettingsExpanderItem>
|
||||
</ui:SettingsExpander>
|
||||
|
||||
<ui:SettingsExpander Classes="settings-expander-card"
|
||||
|
||||
Reference in New Issue
Block a user