mirror of
https://github.com/MaaAssistantArknights/MaaAssistantArknights.git
synced 2026-07-18 18:20:39 +08:00
chore: 调整清理图片缓存样式,增加提示
This commit is contained in:
@@ -37,7 +37,7 @@ MAA now supports the PC version of Arknights. However, due to limited maintenanc
|
||||
* 界园肉鸽可选难度提高至 18 @SherkeyXD
|
||||
* 芯片本支持显示库存数量 @ABA2396
|
||||
* 发布时 minify resource 文件下的 json (#15567) @soundofautumn
|
||||
* WpfGui 清空缓存按钮 (#15582) @soundofautumn @Constrat @HX3N
|
||||
* wpf 增加清理图片缓存功能 @soundofautumn @Constrat @HX3N @status102 @ABA2396
|
||||
* 界园肉鸽指定种子开局 (#15588) @status102 @HX3N @Manicsteiner
|
||||
|
||||
### 改进 | Improved
|
||||
@@ -46,7 +46,6 @@ MAA now supports the PC version of Arknights. However, due to limited maintenanc
|
||||
* 自动战斗不支持技能重置说明中, 干员名遵循干员名语言设置 @status102
|
||||
* 移除过时的参数兼容 @status102
|
||||
* 追加自定干员允许不切换技能 @status102
|
||||
* 清空缓存移动到界面设置 @status102
|
||||
* 自动战斗作业列表使用相对路径代替绝对路径 @status102
|
||||
* TaskQueue 任务开始&完成显示修改后的任务名 @status102
|
||||
|
||||
|
||||
@@ -1289,10 +1289,14 @@ Before use, please ensure:
|
||||
<system:String x:Key="OpenDebugFolder">Open Debug Folder</system:String>
|
||||
<system:String x:Key="GenerateSupportPayloadSuccessful">Support payload generated successfully</system:String>
|
||||
<system:String x:Key="GenerateSupportPayloadException">An error occurred while generating the support payload:</system:String>
|
||||
<system:String x:Key="ClearCache">Clear Cache</system:String>
|
||||
<system:String x:Key="ClearCacheSuccessful">Cache cleared successfully</system:String>
|
||||
<system:String x:Key="ClearCacheAlreadyEmpty">Cache directories are already empty</system:String>
|
||||
<system:String x:Key="ClearCacheException">An error occurred while clearing the cache:</system:String>
|
||||
<system:String x:Key="ClearImageCache">Clear Image Cache</system:String>
|
||||
<system:String x:Key="ClearImageCacheTip" xml:space="preserve">Manual cleanup is usually unnecessary.
|
||||
Images in the DEBUG directory have a quantity limit, and old images are automatically cleaned when exceeded.
|
||||
Manual cleanup deletes all images, which may result in missing screenshots for troubleshooting.
|
||||
Cache files (such as maps, operator avatars, etc.) need to be regenerated after clearing, which may affect user experience.</system:String>
|
||||
<system:String x:Key="ClearImageCacheSuccessful">Image cache cleared successfully</system:String>
|
||||
<system:String x:Key="ClearImageCacheAlreadyEmpty">Image cache is already empty</system:String>
|
||||
<system:String x:Key="ClearImageCacheException">An error occurred while clearing the image cache:</system:String>
|
||||
<!-- !Issues -->
|
||||
<!-- AutoRecruitSettings -->
|
||||
<system:String x:Key="AutoRefresh">Auto refresh 3★ Tags</system:String>
|
||||
|
||||
@@ -1290,10 +1290,14 @@ MAA Team の開発リソースが限られているため、PC 対応は専任
|
||||
<system:String x:Key="OpenDebugFolder">デバッグフォルダーを開く</system:String>
|
||||
<system:String x:Key="GenerateSupportPayloadSuccessful">サポート用ZIPの生成に成功しました</system:String>
|
||||
<system:String x:Key="GenerateSupportPayloadException">サポート用ZIPの生成中にエラーが発生しました:</system:String>
|
||||
<system:String x:Key="ClearCache">キャッシュをクリア</system:String>
|
||||
<system:String x:Key="ClearCacheSuccessful">キャッシュをクリアしました</system:String>
|
||||
<system:String x:Key="ClearCacheAlreadyEmpty">キャッシュディレクトリは既に空です</system:String>
|
||||
<system:String x:Key="ClearCacheException">キャッシュのクリア中にエラーが発生しました:</system:String>
|
||||
<system:String x:Key="ClearImageCache">画像キャッシュをクリア</system:String>
|
||||
<system:String x:Key="ClearImageCacheTip" xml:space="preserve">通常、手動でクリアする必要はありません。
|
||||
DEBUGディレクトリに保存される画像には数量制限があり、超過すると古い画像が自動的にクリアされます。
|
||||
手動クリアはすべての画像を削除するため、問題調査時にスクリーンショットが不足する可能性があります。
|
||||
キャッシュファイル(マップ、オペレーターアイコンなど)はクリア後に再生成が必要で、使用体験に影響する可能性があります。</system:String>
|
||||
<system:String x:Key="ClearImageCacheSuccessful">画像キャッシュをクリアしました</system:String>
|
||||
<system:String x:Key="ClearImageCacheAlreadyEmpty">画像キャッシュは既に空です</system:String>
|
||||
<system:String x:Key="ClearImageCacheException">画像キャッシュのクリア中にエラーが発生しました:</system:String>
|
||||
<!-- !Issues -->
|
||||
<!-- 自動募集設定 -->
|
||||
<system:String x:Key="AutoRefresh">星3タグを自動的に更新する</system:String>
|
||||
|
||||
@@ -1291,10 +1291,14 @@ MAA Team의 개발 인력이 제한되어 있어 PC 지원은 전담 관리가
|
||||
<system:String x:Key="OpenDebugFolder">로그 폴더 열기</system:String>
|
||||
<system:String x:Key="GenerateSupportPayloadSuccessful">압축 파일 생성 성공</system:String>
|
||||
<system:String x:Key="GenerateSupportPayloadException">압축 파일 생성 중 오류가 발생했습니다:</system:String>
|
||||
<system:String x:Key="ClearCache">캐시 비우기</system:String>
|
||||
<system:String x:Key="ClearCacheSuccessful">캐시 비우기 성공</system:String>
|
||||
<system:String x:Key="ClearCacheAlreadyEmpty">캐시 폴더가 이미 비어 있음</system:String>
|
||||
<system:String x:Key="ClearCacheException">캐시 비우기 중 오류가 발생했습니다:</system:String>
|
||||
<system:String x:Key="ClearImageCache">이미지 캐시 비우기</system:String>
|
||||
<system:String x:Key="ClearImageCacheTip" xml:space="preserve">일반적으로 수동 정리가 필요하지 않습니다.
|
||||
DEBUG 디렉토리에 저장된 이미지는 수량 제한이 있으며 초과 시 오래된 이미지가 자동으로 정리됩니다.
|
||||
수동 정리는 모든 이미지를 삭제하므로 문제 해결 시 스크린샷이 부족할 수 있습니다.
|
||||
캐시 파일(지도, 오퍼레이터 아바타 등)은 정리 후 재생성이 필요하며 사용 경험에 영향을 줄 수 있습니다.</system:String>
|
||||
<system:String x:Key="ClearImageCacheSuccessful">이미지 캐시 비우기 성공</system:String>
|
||||
<system:String x:Key="ClearImageCacheAlreadyEmpty">이미지 캐시가 이미 비어 있음</system:String>
|
||||
<system:String x:Key="ClearImageCacheException">이미지 캐시 비우기 중 오류가 발생했습니다:</system:String>
|
||||
<!-- !Issues -->
|
||||
<!-- AutoRecruitSettings -->
|
||||
<system:String x:Key="AutoRefresh">★3 태그 자동 새로고침</system:String>
|
||||
|
||||
@@ -1290,10 +1290,14 @@ C:\\leidian\\LDPlayer9。\n
|
||||
<system:String x:Key="OpenDebugFolder">打开日志文件夹</system:String>
|
||||
<system:String x:Key="GenerateSupportPayloadSuccessful">生成压缩包成功</system:String>
|
||||
<system:String x:Key="GenerateSupportPayloadException">生成压缩包时出现问题:</system:String>
|
||||
<system:String x:Key="ClearCache">清空缓存</system:String>
|
||||
<system:String x:Key="ClearCacheSuccessful">缓存已清空</system:String>
|
||||
<system:String x:Key="ClearCacheAlreadyEmpty">缓存目录为空</system:String>
|
||||
<system:String x:Key="ClearCacheException">清空缓存时出现问题:</system:String>
|
||||
<system:String x:Key="ClearImageCache">清空图片缓存</system:String>
|
||||
<system:String x:Key="ClearImageCacheTip" xml:space="preserve">正常情况下无需手动清理。
|
||||
DEBUG 目录下保存的图片有数量限制,超出后会自动清理旧图片。
|
||||
手动清理会删除所有图片,可能导致问题排查时缺少截图依据。
|
||||
缓存文件(如地图、干员头像等)清理后需要重新生成,可能影响使用体验。</system:String>
|
||||
<system:String x:Key="ClearImageCacheSuccessful">图片缓存已清空</system:String>
|
||||
<system:String x:Key="ClearImageCacheAlreadyEmpty">图片缓存为空</system:String>
|
||||
<system:String x:Key="ClearImageCacheException">清空图片缓存时出现问题:</system:String>
|
||||
<!-- !Issues -->
|
||||
<!-- AutoRecruitSettings -->
|
||||
<system:String x:Key="AutoRefresh">自动刷新 3 星 Tags</system:String>
|
||||
|
||||
@@ -1290,10 +1290,14 @@ C:\\leidian\\LDPlayer9\n
|
||||
<system:String x:Key="OpenDebugFolder">打開紀錄資料夾</system:String>
|
||||
<system:String x:Key="GenerateSupportPayloadSuccessful">壓縮檔產生成功</system:String>
|
||||
<system:String x:Key="GenerateSupportPayloadException">產生壓縮檔時發生問題:</system:String>
|
||||
<system:String x:Key="ClearCache">清空快取</system:String>
|
||||
<system:String x:Key="ClearCacheSuccessful">快取已清空</system:String>
|
||||
<system:String x:Key="ClearCacheAlreadyEmpty">快取內容為空</system:String>
|
||||
<system:String x:Key="ClearCacheException">清空快取時發生錯誤:</system:String>
|
||||
<system:String x:Key="ClearImageCache">清空圖片快取</system:String>
|
||||
<system:String x:Key="ClearImageCacheTip" xml:space="preserve">正常情況下無需手動清理。
|
||||
DEBUG 目錄下儲存的圖片有數量限制,超出後會自動清理舊圖片。
|
||||
手動清理會刪除所有圖片,可能導致問題排查時缺少截圖依據。
|
||||
快取檔案(如地圖、幹員頭像等)清理後需要重新產生,可能影響使用體驗。</system:String>
|
||||
<system:String x:Key="ClearImageCacheSuccessful">圖片快取已清空</system:String>
|
||||
<system:String x:Key="ClearImageCacheAlreadyEmpty">圖片快取為空</system:String>
|
||||
<system:String x:Key="ClearImageCacheException">清空圖片快取時發生錯誤:</system:String>
|
||||
<!-- !Issues -->
|
||||
<!-- AutoRecruitSettings -->
|
||||
<system:String x:Key="AutoRefresh">自動刷新 3★ Tags</system:String>
|
||||
|
||||
@@ -24,7 +24,7 @@ namespace MaaWpfGui.Services.Web;
|
||||
|
||||
public class MaaApiService : IMaaApiService
|
||||
{
|
||||
private static readonly string CacheDir = PathsHelper.BaseDir + "/cache/";
|
||||
private static readonly string CacheDir = PathsHelper.CacheDir;
|
||||
|
||||
public async Task<JObject?> RequestMaaApiWithCache(string api, bool allowFallbackToCache = true)
|
||||
{
|
||||
|
||||
@@ -18,6 +18,7 @@ using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.IO.Compression;
|
||||
using System.Linq;
|
||||
using System.Windows;
|
||||
using HandyControl.Controls;
|
||||
using HandyControl.Data;
|
||||
using JetBrains.Annotations;
|
||||
@@ -77,42 +78,83 @@ public class IssueReportUserControlModel : PropertyChangedBase
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 清空缓存 包括 cache 目录和 debug 目录
|
||||
/// 清空图片缓存 仅删除 cache 目录和 debug 目录中的图片文件,保留文件夹结构
|
||||
/// </summary>
|
||||
public static void ClearCache()
|
||||
public static void ClearImageCache()
|
||||
{
|
||||
var result = MessageBoxHelper.Show(
|
||||
LocalizationHelper.GetString("ClearImageCacheTip"),
|
||||
LocalizationHelper.GetString("Warning"),
|
||||
MessageBoxButton.YesNo,
|
||||
MessageBoxImage.Error,
|
||||
no: LocalizationHelper.GetString("Confirm"),
|
||||
yes: LocalizationHelper.GetString("Cancel"));
|
||||
if (result == MessageBoxResult.Yes)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
var clearedDirs = new List<string>();
|
||||
var imageExtensions = new HashSet<string>(StringComparer.OrdinalIgnoreCase)
|
||||
{
|
||||
".jpg", ".jpeg", ".png",
|
||||
};
|
||||
|
||||
int deletedCount = 0;
|
||||
|
||||
if (Directory.Exists(PathsHelper.CacheDir))
|
||||
{
|
||||
Directory.Delete(PathsHelper.CacheDir, recursive: true);
|
||||
clearedDirs.Add("cache");
|
||||
deletedCount += DeleteImageFiles(PathsHelper.CacheDir, imageExtensions);
|
||||
}
|
||||
|
||||
if (Directory.Exists(PathsHelper.DebugDir))
|
||||
{
|
||||
DeleteDirectoryContentsExcept(PathsHelper.DebugDir, ["asst.log", "gui.log"]);
|
||||
clearedDirs.Add("debug");
|
||||
deletedCount += DeleteImageFiles(PathsHelper.DebugDir, imageExtensions);
|
||||
}
|
||||
|
||||
if (clearedDirs.Count > 0)
|
||||
if (deletedCount > 0)
|
||||
{
|
||||
ShowGrowl(LocalizationHelper.GetString("ClearCacheSuccessful"));
|
||||
ShowGrowl(LocalizationHelper.GetString("ClearImageCacheSuccessful"));
|
||||
}
|
||||
else
|
||||
{
|
||||
ShowGrowl(LocalizationHelper.GetString("ClearCacheAlreadyEmpty"));
|
||||
ShowGrowl(LocalizationHelper.GetString("ClearImageCacheAlreadyEmpty"));
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
ShowGrowl($"{LocalizationHelper.GetString("ClearCacheException")}\n{ex.Message}");
|
||||
Log.Error(ex, "Failed to clear cache");
|
||||
ShowGrowl($"{LocalizationHelper.GetString("ClearImageCacheException")}\n{ex.Message}");
|
||||
Log.Error(ex, "Failed to clear image cache");
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 删除指定目录及其子目录中的所有图片文件。
|
||||
/// </summary>
|
||||
private static int DeleteImageFiles(string dir, HashSet<string> imageExtensions)
|
||||
{
|
||||
int deletedCount = 0;
|
||||
foreach (var file in Directory.EnumerateFiles(dir, "*", SearchOption.AllDirectories))
|
||||
{
|
||||
string extension = Path.GetExtension(file);
|
||||
if (imageExtensions.Contains(extension))
|
||||
{
|
||||
try
|
||||
{
|
||||
File.Delete(file);
|
||||
deletedCount++;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.Warning(ex, $"Failed to delete image file: {file}");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return deletedCount;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 生成日志压缩包
|
||||
/// </summary>
|
||||
@@ -245,6 +287,7 @@ public class IssueReportUserControlModel : PropertyChangedBase
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
/// <summary>
|
||||
/// 删除目录下的所有文件和子目录,排除指定的文件名。
|
||||
/// </summary>
|
||||
@@ -266,6 +309,7 @@ public class IssueReportUserControlModel : PropertyChangedBase
|
||||
Directory.Delete(subDir, recursive: true);
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
/// <summary>
|
||||
/// 从 sourceDir 复制文件到 targetDir,支持过滤。
|
||||
|
||||
@@ -41,67 +41,58 @@
|
||||
TextWrapping="Wrap"
|
||||
Visibility="{c:Binding 'NewVersionFoundInfo.Length + NewResourceFoundInfo.Length == 0',
|
||||
Source={x:Static ui_vms:SettingsViewModel.VersionUpdateSettings}}" />
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="*" />
|
||||
<RowDefinition Height="*" />
|
||||
<RowDefinition Height="*" />
|
||||
</Grid.RowDefinitions>
|
||||
<Grid HorizontalAlignment="Stretch">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*" />
|
||||
<ColumnDefinition Width="*" />
|
||||
<ColumnDefinition />
|
||||
<ColumnDefinition />
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<controls:TextBlock
|
||||
Grid.Row="0"
|
||||
<StackPanel
|
||||
Grid.Column="0"
|
||||
Margin="5,0"
|
||||
Margin="5"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center">
|
||||
<Hyperlink
|
||||
Cursor="Hand"
|
||||
NavigateUri="{Binding Source={x:Static constants:MaaUrls.HelpUri}}"
|
||||
TextDecorations="None">
|
||||
<TextBlock Text="{DynamicResource Help}" />
|
||||
</Hyperlink>
|
||||
</controls:TextBlock>
|
||||
|
||||
<controls:TextBlock
|
||||
Grid.Row="1"
|
||||
Grid.Column="0"
|
||||
Margin="5,0"
|
||||
<controls:TextBlock Margin="5" HorizontalAlignment="Center">
|
||||
<Hyperlink
|
||||
Cursor="Hand"
|
||||
NavigateUri="{Binding Source={x:Static constants:MaaUrls.HelpUri}}"
|
||||
TextDecorations="None">
|
||||
<TextBlock Text="{DynamicResource Help}" />
|
||||
</Hyperlink>
|
||||
</controls:TextBlock>
|
||||
<controls:TextBlock Margin="5" HorizontalAlignment="Center">
|
||||
<Hyperlink
|
||||
Command="{s:Action SetAcknowledgedNightlyWarning}"
|
||||
Cursor="Hand"
|
||||
NavigateUri="{Binding Source={x:Static constants:MaaUrls.GitHubIssues}}"
|
||||
TextDecorations="None">
|
||||
<TextBlock Text="{DynamicResource Issue}" />
|
||||
</Hyperlink>
|
||||
</controls:TextBlock>
|
||||
</StackPanel>
|
||||
<StackPanel
|
||||
Grid.Column="1"
|
||||
Margin="5"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center">
|
||||
<Hyperlink
|
||||
Command="{s:Action SetAcknowledgedNightlyWarning}"
|
||||
Cursor="Hand"
|
||||
NavigateUri="{Binding Source={x:Static constants:MaaUrls.GitHubIssues}}"
|
||||
TextDecorations="None">
|
||||
<TextBlock Text="{DynamicResource Issue}" />
|
||||
</Hyperlink>
|
||||
</controls:TextBlock>
|
||||
<Button
|
||||
Grid.Row="0"
|
||||
Grid.Column="1"
|
||||
Width="Auto"
|
||||
Margin="5,2"
|
||||
Command="{s:Action GenerateSupportPayload}"
|
||||
Content="{DynamicResource GenerateSupportPayload}" />
|
||||
<Button
|
||||
Grid.Row="1"
|
||||
Grid.Column="1"
|
||||
Width="Auto"
|
||||
Margin="5,2"
|
||||
Command="{s:Action OpenDebugFolder}"
|
||||
Content="{DynamicResource OpenDebugFolder}" />
|
||||
<Button
|
||||
Grid.Row="2"
|
||||
Grid.Column="1"
|
||||
Width="Auto"
|
||||
Margin="5,2"
|
||||
Command="{s:Action ClearCache,
|
||||
Target={x:Type settings_vms:IssueReportUserControlModel}}"
|
||||
Content="{DynamicResource ClearCache}" />
|
||||
<Button
|
||||
Margin="5,2"
|
||||
HorizontalAlignment="Left"
|
||||
Command="{s:Action GenerateSupportPayload}"
|
||||
Content="{DynamicResource GenerateSupportPayload}" />
|
||||
<Button
|
||||
Margin="5,2"
|
||||
HorizontalAlignment="Left"
|
||||
Command="{s:Action OpenDebugFolder}"
|
||||
Content="{DynamicResource OpenDebugFolder}" />
|
||||
<StackPanel Margin="5,2" Orientation="Horizontal">
|
||||
<Button
|
||||
HorizontalAlignment="Left"
|
||||
Command="{s:Action ClearImageCache,
|
||||
Target={x:Type settings_vms:IssueReportUserControlModel}}"
|
||||
Content="{DynamicResource ClearImageCache}" />
|
||||
<controls:TooltipBlock TooltipText="{DynamicResource ClearImageCacheTip}" />
|
||||
</StackPanel>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</StackPanel>
|
||||
</UserControl>
|
||||
|
||||
Reference in New Issue
Block a user