这次内容更新超多,肝了一整天

This commit is contained in:
muqing 2024-08-05 19:38:55 +08:00
parent 5843c2deb9
commit 28e6054ed6
34 changed files with 621 additions and 173 deletions

24
RustTools/App.config Normal file
View File

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="RustTools.Assets.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
<section name="RustTools.Assets.Settings1" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
</sectionGroup>
</configSections>
<userSettings>
<RustTools.Assets.Settings>
<setting name="设置" serializeAs="String">
<value>1</value>
</setting>
</RustTools.Assets.Settings>
<RustTools.Assets.Settings1>
<setting name="主题颜色" serializeAs="String">
<value>1</value>
</setting>
<setting name="Mod" serializeAs="String">
<value />
</setting>
</RustTools.Assets.Settings1>
</userSettings>
</configuration>

View File

@ -12,26 +12,64 @@
<ResourceDictionary Source="/Styles/Thickness.xaml" />
<ResourceDictionary Source="/Styles/TextBlock.xaml" />
<ResourceDictionary Source="/Styles/ItemView.xaml" />
<ResourceDictionary Source="/Styles/TitleSubtitleControlStyle.xaml" />
</ResourceDictionary.MergedDictionaries>
<!-- 用于动态界面的关注用户视图 -->
<DataTemplate x:Key="ConCernItem">
<ItemContainer Width="260" Margin="0,0,0,9">
<StackPanel Padding="5" Orientation="Horizontal">
<Border Margin="0,0,0,0" CornerRadius="9">
<Image
Width="56"
Height="56"
VerticalAlignment="Center"
Source="{Binding HeadIcon}"
Stretch="UniformToFill" />
</Border>
<TextBlock
Margin="3,0,0,0"
VerticalAlignment="Center"
Style="{ThemeResource SubtitleTextBlockStyle}"
Text="{Binding UserName}" />
</StackPanel>
</ItemContainer>
</DataTemplate>
<!-- 模组列表的视图 -->
<DataTemplate x:Key="HomePageListItem">
<StackPanel Orientation="Horizontal">
<Border
Width="56"
Height="56"
BorderBrush="White"
BorderThickness="0"
CornerRadius="9">
<Border.Background>
<ImageBrush ImageSource="{Binding Icon}" Stretch="UniformToFill" />
</Border.Background>
</Border>
<StackPanel Margin="10,10,10,10" Orientation="Vertical">
<TextBlock Style="{StaticResource SubtitleTextBlockStyle}" Text="{Binding Name}" />
<TextBlock
Width="500"
MaxLines="2"
Style="{StaticResource BodyStrongTextBlockStyle}"
Text="{Binding Description}"
TextTrimming="CharacterEllipsis"
TextWrapping="Wrap" />
<StackPanel Orientation="Horizontal">
<TextBlock Style="{StaticResource BodyTextBlockStyle}" Text="{Binding UpdateTime}" />
<TextBlock
Margin="10,0,0,0"
Style="{StaticResource BodyTextBlockStyle}"
Text="{Binding CoinNumber}" />
<TextBlock Style="{StaticResource BodyTextBlockStyle}" Text="次下载" />
</StackPanel>
</StackPanel>
</StackPanel>
</DataTemplate>

View File

@ -112,7 +112,7 @@ public partial class App : Microsoft.UI.Xaml.Application
protected async override void OnLaunched(Microsoft.UI.Xaml.LaunchActivatedEventArgs args)
{
base.OnLaunched(args);
var activatedEventArgs = Microsoft.Windows.AppLifecycle.AppInstance.GetCurrent().GetActivatedEventArgs();
if (activatedEventArgs.Kind == Microsoft.Windows.AppLifecycle.ExtendedActivationKind.File)
@ -154,7 +154,7 @@ public partial class App : Microsoft.UI.Xaml.Application
}
else
{
base.OnLaunched(args);
//MainWindow.Activate();
await App.GetService<IActivationService>().ActivateAsync(args);
}
}

BIN
RustTools/Assets/Icon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 206 KiB

After

Width:  |  Height:  |  Size: 264 KiB

View File

@ -2,6 +2,26 @@
using System.Collections.Generic;
using Newtonsoft.Json;
public class ModListResponse
{
[JsonProperty("code")]
public int Code
{
get; set;
}
[JsonProperty("message")]
public string Message
{
get; set;
}
[JsonProperty("data")]
public List<ModData> Data
{
get; set;
}
public class ModData
{
[JsonProperty("id")]
@ -64,24 +84,4 @@ public class ModData
get; set;
}
}
public class ModListResponse
{
[JsonProperty("code")]
public int Code
{
get; set;
}
[JsonProperty("message")]
public string Message
{
get; set;
}
[JsonProperty("data")]
public List<ModData> Data
{
get; set;
}
}

View File

@ -1,5 +1,8 @@
using RustTools.Helpers;
using System.Resources;
using Microsoft.UI.Xaml;
using RustTools.Helpers;
using RustTools.muqing;
using Windows.Storage;
using Windows.UI.ViewManagement;
namespace RustTools;
@ -8,30 +11,23 @@ public sealed partial class MainWindow : WindowEx
{
private readonly Microsoft.UI.Dispatching.DispatcherQueue dispatcherQueue;
private readonly UISettings settings;
private readonly UISettings settings = new();
public MainWindow()
{
//gj.SetBackTheme(this);
gj.SetBackTheme(this);
InitializeComponent();
//AppWindow.SetIcon("Assets/tool.png");
//gj.sc("lujing"+ AppContext.BaseDirectory);
//Resources
AppWindow.SetIcon(Path.Combine(AppContext.BaseDirectory, "Assets/WindowIcon.ico"));
//AppWindow.SetIcon(Path.Combine(AppContext.BaseDirectory, "Assets/Icon.ico"));
Content = null;
Title = "AppDisplayName".GetLocalized();
// Theme change code picked from https://github.com/microsoft/WinUI-Gallery/pull/1239
dispatcherQueue = Microsoft.UI.Dispatching.DispatcherQueue.GetForCurrentThread();
settings = new UISettings();
settings.ColorValuesChanged += Settings_ColorValuesChanged; // cannot use FrameworkElement.ActualThemeChanged event
//settings.Color
//if(wj.cz(wj.FILE.UUID))
//{
// gj.sc(wj.dqwb(wj.FILE.UUID));
//}
//else
//{
// wj.xrwb("win.uuid", gj.GetUUID());
//}
settings.ColorValuesChanged += Settings_ColorValuesChanged;
// cannot use FrameworkElement.ActualThemeChanged event
}
// this handles updating the caption button colors correctly when indows system theme is changed

View File

@ -30,11 +30,13 @@
<AppxPackageDir>D:\RustTools</AppxPackageDir>
</PropertyGroup>
<ItemGroup>
<Content Remove="Assets\Icon.ico" />
<Content Remove="Assets\WindowIcon.ico" />
</ItemGroup>
<ItemGroup>
<None Remove="Assets\image\image_106.svg" />
<None Remove="Styles\ItemView.xaml" />
<None Remove="Styles\TitleSubtitleControlStyle.xaml" />
<None Remove="Views\ConcernPage.xaml" />
<None Remove="Views\HomePage.xaml" />
<None Remove="Views\ModulePage.xaml" />
@ -42,6 +44,9 @@
<None Remove="Views\UserPage.xaml" />
<None Remove="WindowUI\ImportModule.xaml" />
</ItemGroup>
<ItemGroup>
<Page Remove="Themes\Generic.xaml" />
</ItemGroup>
<ItemGroup>
<Manifest Include="$(ApplicationManifest)" />
@ -70,6 +75,12 @@
<Pack>True</Pack>
<PackagePath>\</PackagePath>
</None>
<Page Update="Styles\TitleSubtitleControlStyle.xaml">
<Generator>MSBuild:Compile</Generator>
</Page>
<None Update="Themes\Generic.xaml">
<Generator>MSBuild:Compile</Generator>
</None>
<Page Update="Styles\ItemView.xaml">
<Generator>MSBuild:Compile</Generator>
</Page>
@ -97,10 +108,6 @@
<ProjectCapability Include="Msix" />
</ItemGroup>
<ItemGroup>
<Folder Include="Themes\" />
</ItemGroup>
<PropertyGroup Condition="'$(DisableHasPackageAndPublishMenuAddedByProject)'!='true' and '$(EnableMsixTooling)'=='true'">
<HasPackageAndPublishMenu>true</HasPackageAndPublishMenu>
</PropertyGroup>

View File

@ -0,0 +1,54 @@
using Microsoft.UI.Xaml;
using Microsoft.UI.Xaml.Controls;
using Microsoft.UI.Xaml.Data;
using Microsoft.UI.Xaml.Documents;
using Microsoft.UI.Xaml.Input;
using Microsoft.UI.Xaml.Media;
using Microsoft.UI.Xaml.Navigation;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Windows.Foundation;
using Windows.Foundation.Collections;
namespace RustTools.Styles;
public sealed class TitleSubtitleControl : Control
{
public TitleSubtitleControl()
{
DefaultStyleKey = typeof(TitleSubtitleControl);
}
public string TitleText
{
get
{
return (string)GetValue(TitleTextProperty);
}
set
{
SetValue(TitleTextProperty, value);
}
}
public static readonly DependencyProperty TitleTextProperty =
DependencyProperty.Register("TitleText", typeof(string), typeof(TitleSubtitleControl), new PropertyMetadata(""));
public string SubtitleText
{
get
{
return (string)GetValue(SubtitleTextProperty);
}
set
{
SetValue(SubtitleTextProperty, value);
}
}
public static readonly DependencyProperty SubtitleTextProperty =
DependencyProperty.Register("SubtitleText", typeof(string), typeof(TitleSubtitleControl), new PropertyMetadata(""));
}

View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8" ?>
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:RustTools.Styles">
<Style x:Key="TitleSubtitleControlStyle" TargetType="local:TitleSubtitleControl">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="local:TitleSubtitleControl">
<StackPanel
Margin="16,0,16,0"
Padding="3"
HorizontalAlignment="Center"
VerticalAlignment="Center">
<TextBlock Style="{StaticResource SubtitleTextBlockStyle}" Text="{TemplateBinding TitleText}" />
<TextBlock Style="{StaticResource BodyStrongTextBlockStyle}" Text="{TemplateBinding SubtitleText}" />
</StackPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>

View File

@ -0,0 +1,19 @@
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:RustTools">
<Style TargetType="local2:CustomControl1" xmlns:local2="using:RustTools.Styles">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="local2:CustomControl1">
<Border
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}">
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>

View File

@ -8,8 +8,8 @@ namespace RustTools.ViewModels;
public partial class HomePageViewModel : ObservableRecipient
{
public ObservableCollection<ModData> randomList = new();
public ObservableCollection<ModData> latestTimeList = new();
public ObservableCollection<ModListResponse.ModData> randomList = new();
public ObservableCollection<ModListResponse.ModData> latestTimeList = new();
public HomePageViewModel()
{

View File

@ -1,10 +1,27 @@
using CommunityToolkit.Mvvm.ComponentModel;
using System.Collections.ObjectModel;
using System.Net.Http.Json;
using CommunityToolkit.Mvvm.ComponentModel;
using Newtonsoft.Json;
using RustTools.muqing;
namespace RustTools.ViewModels;
public partial class RankingViewModel : ObservableRecipient
{
public ObservableCollection<ModListResponse.ModData> RankingList { get; set; } = new();
public RankingViewModel()
{
Init();
}
private async void Init()
{
//List必须小于10才能重新加载
var StringList = await ApiFox.mod.list("downloadNumber", "10", "");
var modData = JsonConvert.DeserializeObject<ModListResponse>(StringList);
foreach (var item in modData.Data)
{
item.Icon = item.Icon.Equals("") ? "/Assets/image/image.svg" : item.Icon.Replace("..", "https://rust.coldmint.top");
RankingList.Add(item);
}
}
}

View File

@ -13,6 +13,7 @@ using Windows.ApplicationModel;
using Windows.Storage.AccessCache;
using Windows.Storage.Pickers;
using Windows.Storage;
using RustTools.muqing;
namespace RustTools.ViewModels;

View File

@ -18,17 +18,19 @@
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<StackPanel
Margin="0,9,9,0"
Margin="0,9,9,9"
Padding="9"
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<ItemsView
<ListView
Name="ListViewA"
Grid.Column="0"
ItemInvoked="ItemsView_ItemInvoked"
ItemTemplate="{StaticResource ConCernItem}"
ItemsSource="{x:Bind ViewModels.communitylist}"
Loaded="ListViewA_Loaded"
ScrollViewer.HorizontalScrollBarVisibility="Hidden"
ScrollViewer.VerticalScrollBarVisibility="Hidden" />
ScrollViewer.VerticalScrollBarVisibility="Hidden"
SelectionChanged="ListViewA_SelectionChanged"
SelectionMode="Single" />
</StackPanel>
<StackPanel
Grid.Column="1"

View File

@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices.WindowsRuntime;
using Microsoft.UI;
using Microsoft.UI.Xaml;
using Microsoft.UI.Xaml.Controls;
using Microsoft.UI.Xaml.Controls.Primitives;
@ -30,15 +31,12 @@ public sealed partial class ConcernPage : Page
{
ViewModels = App.GetService<ConcernViewModel>();
InitializeComponent();
}
private void ItemsView_ItemInvoked(ItemsView sender, ItemsViewItemInvokedEventArgs args)
{
}
private void Page_SizeChanged(object sender, SizeChangedEventArgs e)
{
@ -47,7 +45,7 @@ public sealed partial class ConcernPage : Page
// 检查是否为有效的数值
if (!double.IsNaN(height) && !double.IsInfinity(height) && height > 16)
{
ListViewA.Height = height - 16;
ListViewA.Height = height - 36;
ListViewB.Height = height - 16;
}
else
@ -56,4 +54,24 @@ public sealed partial class ConcernPage : Page
ListViewB.Height = 500; // 或者其他适当的默认值
}
}
private void ItemsView_ItemInvoked(ItemsView sender, ItemsViewItemInvokedEventArgs args)
{
gj.sc("You invoked ");
}
private void ListViewA_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
// 获取当前选中的项目
var selectedItem = ListViewA.SelectedItem;
gj.sc(selectedItem);
}
private void ListViewA_Loaded(object sender, RoutedEventArgs e)
{
// 检查是否有项目并设置默认选中项为第一个项
if (ListViewA.Items.Count > 0)
{
ListViewA.SelectedIndex = 0;
}
}
}

View File

@ -10,41 +10,6 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
SizeChanged="Page_SizeChanged"
mc:Ignorable="d">
<Page.Resources>
<DataTemplate x:Key="HomePageListItem" x:DataType="local:HomePage">
<StackPanel Orientation="Horizontal">
<Border
Width="56"
Height="56"
BorderBrush="White"
BorderThickness="0"
CornerRadius="9">
<Border.Background>
<ImageBrush ImageSource="{Binding Icon}" Stretch="UniformToFill" />
</Border.Background>
</Border>
<StackPanel Margin="10,10,10,10" Orientation="Vertical">
<TextBlock Style="{StaticResource SubtitleTextBlockStyle}" Text="{Binding Name}" />
<TextBlock
Width="500"
MaxLines="2"
Style="{StaticResource BodyStrongTextBlockStyle}"
Text="{Binding Description}"
TextTrimming="CharacterEllipsis"
TextWrapping="Wrap" />
<StackPanel Orientation="Horizontal">
<TextBlock Style="{StaticResource BodyTextBlockStyle}" Text="{Binding UpdateTime}" />
<TextBlock
Margin="10,0,0,0"
Style="{StaticResource BodyTextBlockStyle}"
Text="{Binding CoinNumber}" />
<TextBlock Style="{StaticResource BodyTextBlockStyle}" Text="次下载" />
</StackPanel>
</StackPanel>
</StackPanel>
</DataTemplate>
</Page.Resources>
<ScrollView HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden">
@ -81,10 +46,9 @@
</RelativePanel>
<ListView
x:Name="list"
x:Name="ListA"
HorizontalAlignment="Stretch"
IsItemClickEnabled="True"
ItemClick="ListAClick"
ItemTemplate="{StaticResource HomePageListItem}"
ItemsSource="{x:Bind ViewModel.randomList}"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
@ -99,10 +63,10 @@
RelativePanel.AlignRightWithPanel="True" />
</RelativePanel>
<ListView
Name="ListB"
Grid.Row="2"
Margin="0,0,0,50"
IsItemClickEnabled="True"
ItemClick="ListAClick"
ItemTemplate="{StaticResource HomePageListItem}"
ItemsSource="{x:Bind ViewModel.latestTimeList}"
SelectionMode="None" />

View File

@ -30,6 +30,8 @@ public sealed partial class HomePage : Page
ViewModel.random();
ViewModel.Latest();
InitializeComponent();
ListA.ItemClick += ListAClick;
ListB.ItemClick += ListAClick;
}
private void Page_SizeChanged(object sender, SizeChangedEventArgs e)
@ -41,9 +43,9 @@ public sealed partial class HomePage : Page
//Banner.Height = a;
}
private void ListAClick(object sender, ItemClickEventArgs e)
public static void ListAClick(object sender, ItemClickEventArgs e)
{
if (e.ClickedItem is not ModData item) { return; }
if (e.ClickedItem is not ModListResponse.ModData item) { return; }
// 查找已存在的 ModulePage如果存在则激活它
var existingWindow = ModulePage.ModulePageList.FirstOrDefault(window => window.Mod.Id == item.Id);

View File

@ -3,13 +3,47 @@
x:Class="RustTools.Views.RankingPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:RustTools.Views"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="using:RustTools.Views"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
SizeChanged="Page_SizeChanged"
mc:Ignorable="d">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="auto" />
</Grid.ColumnDefinitions>
<AppBarButton
Grid.Row="0"
Grid.Column="1"
Margin="0,3,9,0"
Icon="Sort"
IsCompact="False"
Label="下载量"
ToolTipService.ToolTip="Sort">
<AppBarButton.Flyout>
<MenuFlyout>
<MenuFlyoutItem Tag="rating" Text="下载量" />
<MenuFlyoutItem Tag="match" Text="投币数" />
<MenuFlyoutItem Tag="distance" Text="单位数" />
<MenuFlyoutItem Tag="d" Text="更新次数" />
</MenuFlyout>
</AppBarButton.Flyout>
</AppBarButton>
<ListView
x:Name="list"
Grid.Row="1"
Padding="0,0,16,0"
HorizontalAlignment="Stretch"
IsItemClickEnabled="True"
ItemTemplate="{StaticResource HomePageListItem}"
ItemsSource="{x:Bind ViewModel.RankingList}"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
SelectionMode="None" />
</Grid>
</Page>

View File

@ -13,6 +13,9 @@ using Microsoft.UI.Xaml.Input;
using Microsoft.UI.Xaml.Media;
using Microsoft.UI.Xaml.Navigation;
using RustTools.ViewModels;
using Newtonsoft.Json;
using RustTools.muqing;
using System.Collections;
// To learn more about WinUI, the WinUI project structure,
// and more about our project templates, see: http://aka.ms/winui-project-info.
@ -27,9 +30,18 @@ public sealed partial class RankingPage : Page
{
get; set;
}
public RankingPage()
{
ViewModel=App.GetService<RankingViewModel>();
InitializeComponent();
list.ItemClick +=HomePage.ListAClick;
}
private void Page_SizeChanged(object sender, SizeChangedEventArgs e)
{
list.Height = ActualHeight - 100;
}
}

View File

@ -5,6 +5,7 @@ using Microsoft.UI.Xaml.Media;
using RustTools.Contracts.Services;
using RustTools.Helpers;
using RustTools.muqing;
using RustTools.ViewModels;
using Windows.System;
@ -41,11 +42,13 @@ public sealed partial class ShellPage : Page
App.MainWindow.ExtendsContentIntoTitleBar = true;
App.MainWindow.SetTitleBar(AppTitleBar);
App.MainWindow.Activated += MainWindow_Activated;
App.MainWindow.SetIcon(Path.Combine(AppContext.BaseDirectory, "Assets/WindowIcon.ico"));
AppTitleBarText.Text = "app_name".GetLocalized() +" " +"app_version".GetLocalized();
}
private void OnLoaded(object sender, Microsoft.UI.Xaml.RoutedEventArgs e)
{
//gj.sc(RequestedTheme);
TitleBarHelper.UpdateTitleBar(RequestedTheme);
KeyboardAccelerators.Add(BuildKeyboardAccelerator(VirtualKey.Left, VirtualKeyModifiers.Menu));

View File

@ -3,13 +3,113 @@
x:Class="RustTools.Views.UserPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:RustTools.Views"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="using:RustTools.Views"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
xmlns:styles="using:RustTools.Styles"
mc:Ignorable="d">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="110" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="auto" />
</Grid.ColumnDefinitions>
<Border
Grid.Column="0"
Padding="9,9,26,9"
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"
CornerRadius="10">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="auto" />
</Grid.ColumnDefinitions>
<PersonPicture
Grid.Column="0"
Width="86"
Height="86"
HorizontalContentAlignment="Right"
ProfilePicture="/Assets/tool.png" />
<StackPanel Grid.Column="1" Margin="16,0,0,0">
<TextBlock
Margin="0,9,0,0"
Style="{StaticResource TitleTextBlockStyle}"
Text="Muqing" />
<TextBlock
Margin="0,6,0,0"
Style="{StaticResource BodyTextBlockStyle}"
Text="测试员,开发者,这里是签名哦" />
</StackPanel>
<FontIcon Grid.Column="2" Glyph="&#xE70F;" />
</Grid>
</Border>
<Border
Grid.Column="1"
Margin="16,0,0,0"
Padding="30,9,30,9"
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"
CornerRadius="10">
<StackPanel HorizontalAlignment="Center" Orientation="Horizontal">
<styles:TitleSubtitleControl
Style="{StaticResource TitleSubtitleControlStyle}"
SubtitleText="关注"
TitleText="99" />
<Rectangle
Width="1"
Height="10"
Margin="16,0,16,0"
VerticalAlignment="Center"
Fill="Gray" />
<styles:TitleSubtitleControl
Style="{StaticResource TitleSubtitleControlStyle}"
SubtitleText="粉丝"
TitleText="99" />
<Rectangle
Width="1"
Height="10 "
Margin="16,0,16,0"
VerticalAlignment="Center"
Fill="Gray" />
<styles:TitleSubtitleControl
Style="{StaticResource TitleSubtitleControlStyle}"
SubtitleText="获赞"
TitleText="99" />
</StackPanel>
</Border>
</Grid>
<Pivot Grid.Row="1" Grid.Column="0">
<PivotItem Header="模组">
<TextBlock Text="这里是你全部发布的模组" />
</PivotItem>
<PivotItem Header="动态">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<TextBlock Text="这里是你全部发布的动态" />
<Button
Grid.Row="1"
Grid.Column="1"
Margin="16,16,0,16"
HorizontalAlignment="Right"
Content="我要发布动态" />
</Grid>
</PivotItem>
</Pivot>
</Grid>
</Page>

View File

@ -12,7 +12,6 @@
MinWidth="500"
MinHeight="500"
mc:Ignorable="d">
<Grid Name="GridView" Margin="16,16,16,16">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />

View File

@ -18,8 +18,7 @@
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
</Grid.ColumnDefinitions>
<Grid.ColumnDefinitions />
<StackPanel Grid.Row="0" Orientation="Horizontal">
<Border
Width="106"

View File

@ -1,22 +1,14 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices.WindowsRuntime;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Microsoft.UI.Xaml;
using Microsoft.UI.Xaml.Controls;
using Microsoft.UI.Xaml.Controls.Primitives;
using Microsoft.UI.Xaml.Data;
using Microsoft.UI.Xaml.Input;
using Microsoft.UI.Xaml.Media;
using Microsoft.UI.Xaml.Navigation;
using RustTools.muqing;
using Newtonsoft.Json;
using RustTools.DataList;
using RustTools.Helpers;
using System.Collections.ObjectModel;
using Windows.ApplicationModel.Core;
using System.Diagnostics;
using Windows.UI.ViewManagement;
using Microsoft.UI.Xaml.Media;
using Microsoft.UI;
// To learn more about WinUI, the WinUI project structure,
// and more about our project templates, see: http://aka.ms/winui-project-info.
@ -33,10 +25,25 @@ public sealed partial class ModulePage : WindowEx
public ModInfo.Data Mod { get; set; } = new();
public ModulePage(string v)
{
gj.SetBackTheme(this);
// ÉèÖô°¿Ú±³¾°ÑÕÉ«
InitializeComponent();
ExtendsContentIntoTitleBar = true;
gj.SetBackTheme(this);
init(v);
var frame = App.AppTitlebar as FrameworkElement;
if (frame != null)
{
gj.UpdateTitleBar(this, frame.ActualTheme);
grid.RequestedTheme = frame.ActualTheme;
}
}
static bool IsColorLight(Windows.UI.Color clr)
{
return (((5 * clr.G) + (2 * clr.R) + clr.B) > (8 * 128));
}
private async void init(string v)
{

View File

@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.IO;
using RustTools.muqing;
using Windows.Storage;
public class IniHelper
{
@ -121,6 +122,37 @@ public class IniHelper
sw.WriteLine(); // Add an empty line for readability
}
}
///更高级的配置保存方式 为什么不用呢因为不可视化保存后是个TMD二进制
//private void Load()
//{
// ApplicationDataContainer localSettings = Windows.Storage.ApplicationData.Current.LocalSettings;
// // load a setting that is local to the device
// String localValue = localSettings.Values["test setting"] as string;
// // load a composite setting
// Windows.Storage.ApplicationDataCompositeValue composite = (ApplicationDataCompositeValue)localSettings.Values["FontInfo"];
// if (composite != null)
// {
// String fontName = composite["Font"] as string;
// int fontSize = (int)composite["FontSize"];
// gj.sc(fontName + " " + ApplicationData.Current.LocalSettings.Locality);
// }
//}
//private void save()
//{
// ApplicationDataContainer localSettings = Windows.Storage.ApplicationData.Current.LocalSettings;
// // Save a setting locally on the device
// localSettings.Values["test setting"] = "a device specific setting";
// // Save a composite setting locally on the device
// Windows.Storage.ApplicationDataCompositeValue composite = new Windows.Storage.ApplicationDataCompositeValue();
// composite["Font"] = "Calibri";
// composite["FontSize"] = 11;
// localSettings.Values["FontInfo"] = composite;
//}
/// <summary>
/// 读取配置数据

View File

@ -6,11 +6,15 @@ using System.Diagnostics.Tracing;
using System.Management;
using Microsoft.UI;
using Microsoft.UI.Composition.SystemBackdrops;
using Microsoft.UI.Xaml;
using Microsoft.UI.Xaml.Media;
using Windows.UI.ViewManagement;
using System.Runtime.InteropServices;
using Windows.UI;
class gj
{
public static void sc(object obj)
public static void sc(object? obj)
{
obj ??= "null";
Debug.WriteLine(obj);
@ -79,6 +83,100 @@ class gj
}
}
public static void SetBackColor(WindowEx windowEx)
{
UISettings uISettings = new UISettings();
// 获取当前的背景颜色
var backgroundColor = uISettings.GetColorValue(UIColorType.Background);
// 判断主题模式
if (backgroundColor == Colors.Black)
{
// 设置背景色为黑色
//uISettings.SetColorValue(UIColorType.Background, Colors.Black);
//uISettings.SetColorValue(UIColorType.Foreground, Colors.White);
}
else if (backgroundColor == Colors.White)
{
// 设置背景色为白色
//uISettings.SetColorValue(UIColorType.Background, Colors.White);
//uISettings.SetColorValue(UIColorType.Foreground, Colors.Black);
}
else
{
Console.WriteLine("Current theme mode is unknown.");
}
}
private const int WAINACTIVE = 0x00;
private const int WAACTIVE = 0x01;
private const int WMACTIVATE = 0x0006;
public static void UpdateTitleBar(WindowEx a,ElementTheme theme)
{
if (a.ExtendsContentIntoTitleBar)
{
if (theme == ElementTheme.Default)
{
var uiSettings = new UISettings();
var background = uiSettings.GetColorValue(UIColorType.Background);
theme = background == Colors.White ? ElementTheme.Light : ElementTheme.Dark;
}
if (theme == ElementTheme.Default)
{
theme = Application.Current.RequestedTheme == ApplicationTheme.Light ? ElementTheme.Light : ElementTheme.Dark;
}
a.AppWindow.TitleBar.ButtonForegroundColor = theme switch
{
ElementTheme.Dark => Colors.White,
ElementTheme.Light => Colors.Black,
_ => Colors.Transparent
};
a.AppWindow.TitleBar.ButtonHoverForegroundColor = theme switch
{
ElementTheme.Dark => Colors.White,
ElementTheme.Light => Colors.Black,
_ => Colors.Transparent
};
a.AppWindow.TitleBar.ButtonHoverBackgroundColor = theme switch
{
ElementTheme.Dark => Color.FromArgb(0x33, 0xFF, 0xFF, 0xFF),
ElementTheme.Light => Color.FromArgb(0x33, 0x00, 0x00, 0x00),
_ => Colors.Transparent
};
a.AppWindow.TitleBar.ButtonPressedBackgroundColor = theme switch
{
ElementTheme.Dark => Color.FromArgb(0x66, 0xFF, 0xFF, 0xFF),
ElementTheme.Light => Color.FromArgb(0x66, 0x00, 0x00, 0x00),
_ => Colors.Transparent
};
a.AppWindow.TitleBar.BackgroundColor = Colors.Transparent;
var hwnd = WinRT.Interop.WindowNative.GetWindowHandle(a);
if (hwnd == GetActiveWindow())
{
SendMessage(hwnd, WMACTIVATE, WAINACTIVE, IntPtr.Zero);
SendMessage(hwnd, WMACTIVATE, WAACTIVE, IntPtr.Zero);
}
else
{
SendMessage(hwnd, WMACTIVATE, WAACTIVE, IntPtr.Zero);
SendMessage(hwnd, WMACTIVATE, WAINACTIVE, IntPtr.Zero);
}
}
}
[DllImport("user32.dll")]
private static extern IntPtr GetActiveWindow();
[DllImport("user32.dll", CharSet = CharSet.Auto)]
private static extern IntPtr SendMessage(IntPtr hWnd, int msg, int wParam, IntPtr lParam);
}