feat(FeedBack): 添加GitHub反馈选项和Markdown模板功能
- 在反馈窗口中新增第三页,提供GitHub问题反馈选项 - 添加Markdown模板生成功能,自动包含用户选择的环境和设备信息 - 实现复制反馈链接和模板的功能按钮 - 重构导航逻辑以支持三页切换 Signed-off-by: doudou0720 <98651603+doudou0720@users.noreply.github.com>
This commit is contained in:
@@ -139,6 +139,76 @@
|
||||
</ScrollViewer>
|
||||
</Grid>
|
||||
|
||||
<Grid Grid.Row="0" x:Name="Page3" Visibility="Collapsed">
|
||||
<ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Disabled">
|
||||
<ikw:SimpleStackPanel Spacing="12" Margin="0,0,0,20">
|
||||
<TextBlock FontSize="20" FontWeight="SemiBold" Margin="0,0,0,10" Text="选择反馈方式"/>
|
||||
|
||||
<ui:SettingsExpander x:Name="ExpanderGitHubFeedback" Header="GitHub 问题反馈"
|
||||
Description="在 GitHub 上提交问题反馈">
|
||||
<ui:SettingsExpander.HeaderIcon>
|
||||
<ui:FontIcon Icon="{x:Static ui:SegoeFluentIcons.Mail}"/>
|
||||
</ui:SettingsExpander.HeaderIcon>
|
||||
<Button x:Name="BtnOpenGitHubIssue" Content="跳转到 GitHub 反馈" Click="BtnOpenGitHubIssue_Click">
|
||||
<Button.Style>
|
||||
<Style TargetType="Button" BasedOn="{StaticResource {x:Static ui:ThemeKeys.AccentButtonStyleKey}}"/>
|
||||
</Button.Style>
|
||||
</Button>
|
||||
<ui:SettingsExpander.Items>
|
||||
<ui:SettingsCard Header="复制反馈链接" IsClickEnabled="True" Click="CardCopyIssueUrl_Click">
|
||||
<TextBox x:Name="TextBoxIssueUrl"
|
||||
MaxWidth="400"
|
||||
Text="https://github.com/InkCanvasForClass/community/issues/new?template=01-bug_report.yml"
|
||||
IsReadOnly="True"
|
||||
BorderThickness="0"
|
||||
Background="Transparent"
|
||||
FontFamily="Consolas"
|
||||
FontSize="12"
|
||||
TextWrapping="Wrap"
|
||||
AcceptsReturn="True"
|
||||
HorizontalScrollBarVisibility="Auto"
|
||||
VerticalScrollBarVisibility="Auto"
|
||||
IsReadOnlyCaretVisible="False"
|
||||
Foreground="{DynamicResource {x:Static ui:ThemeKeys.TextFillColorSecondaryBrushKey}}"
|
||||
TextAlignment="Left"
|
||||
VerticalAlignment="Center"/>
|
||||
<ui:SettingsCard.ActionIcon>
|
||||
<ui:FontIcon Icon="{x:Static ui:SegoeFluentIcons.Copy}"/>
|
||||
</ui:SettingsCard.ActionIcon>
|
||||
</ui:SettingsCard>
|
||||
</ui:SettingsExpander.Items>
|
||||
</ui:SettingsExpander>
|
||||
|
||||
<ui:SettingsExpander x:Name="ExpanderMarkdownTemplate" Header="反馈模板 (Markdown)"
|
||||
Description="复制以下 Markdown 模板进行反馈">
|
||||
<ui:SettingsExpander.HeaderIcon>
|
||||
<ui:FontIcon Icon="{x:Static ui:SegoeFluentIcons.Code}"/>
|
||||
</ui:SettingsExpander.HeaderIcon>
|
||||
<Button x:Name="BtnCopyMarkdown" Content="复制模板" Click="BtnCopyMarkdown_Click">
|
||||
<Button.Style>
|
||||
<Style TargetType="Button" BasedOn="{StaticResource {x:Static ui:ThemeKeys.DefaultButtonStyleKey}}"/>
|
||||
</Button.Style>
|
||||
</Button>
|
||||
<ui:SettingsExpander.Items>
|
||||
<ui:SettingsCard ContentAlignment="Left">
|
||||
<TextBox x:Name="TextBoxMarkdownTemplate"
|
||||
MinHeight="200"
|
||||
IsReadOnly="True"
|
||||
BorderThickness="0"
|
||||
Background="Transparent"
|
||||
FontFamily="Consolas"
|
||||
FontSize="12"
|
||||
TextWrapping="Wrap"
|
||||
AcceptsReturn="True"
|
||||
VerticalScrollBarVisibility="Auto"
|
||||
Text="# 问题描述
请描述您遇到的问题...

# 重现步骤
1. 
2. 
3. 

# 预期行为
请描述您期望的行为...

# 实际行为
请描述实际发生的...

# 环境信息
- 版本: 
- 系统: 
"/>
|
||||
</ui:SettingsCard>
|
||||
</ui:SettingsExpander.Items>
|
||||
</ui:SettingsExpander>
|
||||
</ikw:SimpleStackPanel>
|
||||
</ScrollViewer>
|
||||
</Grid>
|
||||
|
||||
<Grid Grid.Row="1" VerticalAlignment="Bottom" Margin="0,20,0,0">
|
||||
<ikw:SimpleStackPanel HorizontalAlignment="Right" VerticalAlignment="Center" Orientation="Horizontal" Spacing="12">
|
||||
<Button x:Name="ButtonCancel" Content="取消" Width="100" Height="36" FontFamily="Microsoft YaHei UI" FontSize="14" Click="ButtonCancel_Click">
|
||||
@@ -160,7 +230,7 @@
|
||||
</Style>
|
||||
</Button.Style>
|
||||
</Button>
|
||||
<Button x:Name="ButtonSubmit" Content="提交反馈" Width="120" Height="36" FontFamily="Microsoft YaHei UI" FontSize="14" FontWeight="SemiBold" Click="ButtonSubmit_Click" Visibility="Collapsed">
|
||||
<Button x:Name="ButtonConfirm" Content="下一步" Width="120" Height="36" FontFamily="Microsoft YaHei UI" FontSize="14" FontWeight="SemiBold" Click="ButtonConfirm_Click" Visibility="Collapsed">
|
||||
<Button.Style>
|
||||
<Style TargetType="Button" BasedOn="{StaticResource {x:Static ui:ThemeKeys.AccentButtonStyleKey}}"/>
|
||||
</Button.Style>
|
||||
|
||||
@@ -247,12 +247,24 @@ namespace Ink_Canvas
|
||||
|
||||
private void ButtonBack_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
Page1.Visibility = Visibility.Visible;
|
||||
Page2.Visibility = Visibility.Collapsed;
|
||||
ButtonCancel.Visibility = Visibility.Visible;
|
||||
ButtonNext.Visibility = Visibility.Visible;
|
||||
ButtonBack.Visibility = Visibility.Collapsed;
|
||||
ButtonSubmit.Visibility = Visibility.Collapsed;
|
||||
if (Page3.Visibility == Visibility.Visible)
|
||||
{
|
||||
Page3.Visibility = Visibility.Collapsed;
|
||||
Page2.Visibility = Visibility.Visible;
|
||||
ButtonCancel.Visibility = Visibility.Collapsed;
|
||||
ButtonNext.Visibility = Visibility.Collapsed;
|
||||
ButtonBack.Visibility = Visibility.Visible;
|
||||
ButtonConfirm.Visibility = Visibility.Visible;
|
||||
}
|
||||
else if (Page2.Visibility == Visibility.Visible)
|
||||
{
|
||||
Page2.Visibility = Visibility.Collapsed;
|
||||
Page1.Visibility = Visibility.Visible;
|
||||
ButtonCancel.Visibility = Visibility.Visible;
|
||||
ButtonNext.Visibility = Visibility.Visible;
|
||||
ButtonBack.Visibility = Visibility.Collapsed;
|
||||
ButtonConfirm.Visibility = Visibility.Collapsed;
|
||||
}
|
||||
}
|
||||
|
||||
private void ButtonNext_Click(object sender, RoutedEventArgs e)
|
||||
@@ -349,7 +361,7 @@ namespace Ink_Canvas
|
||||
ButtonCancel.Visibility = Visibility.Collapsed;
|
||||
ButtonNext.Visibility = Visibility.Collapsed;
|
||||
ButtonBack.Visibility = Visibility.Visible;
|
||||
ButtonSubmit.Visibility = Visibility.Visible;
|
||||
ButtonConfirm.Visibility = Visibility.Visible;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
@@ -357,7 +369,71 @@ namespace Ink_Canvas
|
||||
}
|
||||
}
|
||||
|
||||
private void ButtonSubmit_Click(object sender, RoutedEventArgs e)
|
||||
private void ButtonConfirm_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
GenerateMarkdownTemplate();
|
||||
Page2.Visibility = Visibility.Collapsed;
|
||||
Page3.Visibility = Visibility.Visible;
|
||||
ButtonCancel.Visibility = Visibility.Visible;
|
||||
ButtonNext.Visibility = Visibility.Collapsed;
|
||||
ButtonBack.Visibility = Visibility.Visible;
|
||||
ButtonConfirm.Visibility = Visibility.Collapsed;
|
||||
}
|
||||
|
||||
private void GenerateMarkdownTemplate()
|
||||
{
|
||||
string template = "## 环境信息\n";
|
||||
|
||||
if (CheckAppVersion.IsChecked == true)
|
||||
{
|
||||
template += $"- 软件版本: {_appVersion}\n";
|
||||
}
|
||||
if (CheckUpdateChannel.IsChecked == true)
|
||||
{
|
||||
template += $"- 更新通道: {_updateChannel}\n";
|
||||
}
|
||||
if (CheckOSVersion.IsChecked == true)
|
||||
{
|
||||
template += $"- 操作系统: {_osVersion}\n";
|
||||
}
|
||||
if (CheckNetVersion.IsChecked == true)
|
||||
{
|
||||
template += $"- .NET 版本: {_netVersion}\n";
|
||||
}
|
||||
if (CheckTouchSupport.IsChecked == true)
|
||||
{
|
||||
template += $"- 触控支持: {_touchSupport}\n";
|
||||
}
|
||||
|
||||
template += "\n## 设备信息\n";
|
||||
if (CheckDeviceId.IsChecked == true)
|
||||
{
|
||||
template += $"- 设备ID: {_deviceId}\n";
|
||||
}
|
||||
if (CheckFanceId.IsChecked == true && !string.IsNullOrEmpty(_telemetryId))
|
||||
{
|
||||
template += $"- 遥测ID: {_telemetryId}\n";
|
||||
}
|
||||
|
||||
if (CheckPPTLinkage.IsChecked == true || CheckInkRecognition.IsChecked == true)
|
||||
{
|
||||
template += "\n## 软件配置\n";
|
||||
if (CheckPPTLinkage.IsChecked == true)
|
||||
{
|
||||
template += "### PPT联动设置\n";
|
||||
template += _pptLinkageSettings + "\n";
|
||||
}
|
||||
if (CheckInkRecognition.IsChecked == true)
|
||||
{
|
||||
template += "### 墨迹识别设置\n";
|
||||
template += _inkRecognitionSettings + "\n";
|
||||
}
|
||||
}
|
||||
|
||||
TextBoxMarkdownTemplate.Text = template;
|
||||
}
|
||||
|
||||
private void BtnOpenGitHubIssue_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
@@ -457,5 +533,112 @@ namespace Ink_Canvas
|
||||
System.Diagnostics.Debug.WriteLine($"打开反馈链接失败: {ex.Message}");
|
||||
}
|
||||
}
|
||||
|
||||
private void CardCopyIssueUrl_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
string versionInfo = "";
|
||||
string systemInfo = "";
|
||||
|
||||
if (CheckAppVersion.IsChecked == true || CheckUpdateChannel.IsChecked == true)
|
||||
{
|
||||
if (CheckAppVersion.IsChecked == true)
|
||||
{
|
||||
versionInfo += _appVersion;
|
||||
}
|
||||
if (CheckUpdateChannel.IsChecked == true)
|
||||
{
|
||||
if (!string.IsNullOrEmpty(versionInfo))
|
||||
{
|
||||
versionInfo += " ";
|
||||
}
|
||||
versionInfo += $"({_updateChannel})";
|
||||
}
|
||||
}
|
||||
|
||||
if (CheckOSVersion.IsChecked == true || CheckNetVersion.IsChecked == true || CheckTouchSupport.IsChecked == true)
|
||||
{
|
||||
if (CheckOSVersion.IsChecked == true)
|
||||
{
|
||||
systemInfo += _osVersion;
|
||||
}
|
||||
if (CheckNetVersion.IsChecked == true)
|
||||
{
|
||||
if (!string.IsNullOrEmpty(systemInfo))
|
||||
{
|
||||
systemInfo += " | ";
|
||||
}
|
||||
systemInfo += _netVersion;
|
||||
}
|
||||
if (CheckTouchSupport.IsChecked == true)
|
||||
{
|
||||
if (!string.IsNullOrEmpty(systemInfo))
|
||||
{
|
||||
systemInfo += " | ";
|
||||
}
|
||||
systemInfo += $"触控:{_touchSupport}";
|
||||
}
|
||||
}
|
||||
|
||||
string url = "https://github.com/InkCanvasForClass/community/issues/new?template=01-bug_report.yml";
|
||||
|
||||
if (!string.IsNullOrEmpty(versionInfo))
|
||||
{
|
||||
url += $"&version={Uri.EscapeDataString(versionInfo)}";
|
||||
}
|
||||
|
||||
if (!string.IsNullOrEmpty(systemInfo))
|
||||
{
|
||||
url += $"&os={Uri.EscapeDataString(systemInfo)}";
|
||||
}
|
||||
|
||||
string extraInfo = "";
|
||||
if (CheckDeviceId.IsChecked == true)
|
||||
{
|
||||
extraInfo += $"设备ID: {_deviceId}\n";
|
||||
}
|
||||
|
||||
if (CheckFanceId.IsChecked == true)
|
||||
{
|
||||
extraInfo += $"遥测ID: {_telemetryId}\n";
|
||||
}
|
||||
|
||||
if (CheckPPTLinkage.IsChecked == true)
|
||||
{
|
||||
extraInfo += "\nPPT联动设置:\n";
|
||||
extraInfo += _pptLinkageSettings;
|
||||
}
|
||||
|
||||
if (CheckInkRecognition.IsChecked == true)
|
||||
{
|
||||
extraInfo += "\n墨迹识别设置:\n";
|
||||
extraInfo += _inkRecognitionSettings;
|
||||
}
|
||||
|
||||
if (!string.IsNullOrEmpty(extraInfo))
|
||||
{
|
||||
url += $"&extra={Uri.EscapeDataString(extraInfo)}";
|
||||
}
|
||||
|
||||
Clipboard.SetText(url);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
System.Diagnostics.Debug.WriteLine($"复制反馈链接失败: {ex.Message}");
|
||||
}
|
||||
}
|
||||
|
||||
private void BtnCopyMarkdown_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
Clipboard.SetText(TextBoxMarkdownTemplate.Text);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
System.Diagnostics.Debug.WriteLine($"复制Markdown模板失败: {ex.Message}");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user