diff --git a/UI/DeveloperToolsScreen.cpp b/UI/DeveloperToolsScreen.cpp index 685dc74dc7..c88b58f91f 100644 --- a/UI/DeveloperToolsScreen.cpp +++ b/UI/DeveloperToolsScreen.cpp @@ -21,7 +21,10 @@ #include "Common/UI/ViewGroup.h" #include "Common/System/OSD.h" #include "Common/GPU/OpenGL/GLFeatures.h" +#include "Common/Data/Text/Parsers.h" +#include "Common/Data/Encoding/Utf8.h" #include "Common/File/FileUtil.h" +#include "Common/Render/Text/draw_text.h" #include "Common/StringUtils.h" #include "GPU/Common/TextureReplacer.h" #include "GPU/Common/PostShader.h" @@ -39,6 +42,7 @@ #include "UI/DisplayLayoutScreen.h" #include "UI/GameSettingsScreen.h" #include "UI/OnScreenDisplay.h" +#include "UI/IconCache.h" #if PPSSPP_PLATFORM(ANDROID) @@ -341,6 +345,100 @@ void DeveloperToolsScreen::CreateUITab(UI::LinearLayout *list) { list->Add(new Choice(dev->T("Reload UI atlas")))->OnClick.Add([uiContext](UI::EventParams &) { uiContext->InvalidateAtlas(); }); + + auto di = GetI18NCategory(I18NCat::DIALOG); + auto si = GetI18NCategory(I18NCat::SYSINFO); + auto sy = GetI18NCategory(I18NCat::SYSTEM); + auto ac = GetI18NCategory(I18NCat::ACHIEVEMENTS); + + // TODO: Move most of these strings out of the SysInfo category. + + list->Add(new ItemHeader(si->T("Icon cache"))); + IconCacheStats iconStats = g_iconCache.GetStats(); + list->Add(new InfoItem(si->T("Image data count"), StringFromFormat("%d", iconStats.cachedCount))); + list->Add(new InfoItem(si->T("Texture count"), StringFromFormat("%d", iconStats.textureCount))); + list->Add(new InfoItem(si->T("Data size"), NiceSizeFormat(iconStats.dataSize))); + list->Add(new Choice(di->T("Clear")))->OnClick.Add([&](UI::EventParams &) { + g_iconCache.ClearData(); + RecreateViews(); + }); + + list->Add(new ItemHeader(si->T("Font cache"))); + const TextDrawer *text = screenManager()->getUIContext()->Text(); + if (text) { + list->Add(new InfoItem(si->T("Texture count"), StringFromFormat("%d", text->GetStringCacheSize()))); + list->Add(new InfoItem(si->T("Data size"), NiceSizeFormat(text->GetCacheDataSize()))); + } + + list->Add(new ItemHeader(si->T("Slider test"))); + list->Add(new Slider(&testSliderValue_, 0, 100, 1, new LinearLayoutParams(FILL_PARENT, WRAP_CONTENT))); + + list->Add(new ItemHeader(si->T("Notification tests"))); + list->Add(new Choice(si->T("Error")))->OnClick.Add([&](UI::EventParams &) { + std::string str = "Error " + CodepointToUTF8(0x1F41B) + CodepointToUTF8(0x1F41C) + CodepointToUTF8(0x1F914); + g_OSD.Show(OSDType::MESSAGE_ERROR, str); + }); + list->Add(new Choice(si->T("Warning")))->OnClick.Add([&](UI::EventParams &) { + g_OSD.Show(OSDType::MESSAGE_WARNING, "Warning", "Some\nAdditional\nDetail"); + }); + list->Add(new Choice(si->T("Info")))->OnClick.Add([&](UI::EventParams &) { + g_OSD.Show(OSDType::MESSAGE_INFO, "Info"); + }); + // This one is clickable + list->Add(new Choice(si->T("Success")))->OnClick.Add([&](UI::EventParams &) { + g_OSD.Show(OSDType::MESSAGE_SUCCESS, "Success", 0.0f, "clickable"); + g_OSD.SetClickCallback("clickable", [](bool clicked, void *) { + if (clicked) { + System_LaunchUrl(LaunchUrlType::BROWSER_URL, "https://www.google.com/"); + } + }, nullptr); + }); + list->Add(new Choice(sy->T("RetroAchievements")))->OnClick.Add([&](UI::EventParams &) { + g_OSD.Show(OSDType::MESSAGE_WARNING, "RetroAchievements warning", "", "I_RETROACHIEVEMENTS_LOGO"); + }); + list->Add(new ItemHeader(si->T("Progress tests"))); + list->Add(new Choice(si->T("30%")))->OnClick.Add([&](UI::EventParams &) { + g_OSD.SetProgressBar("testprogress", "Test Progress", 1, 100, 30, 0.0f); + }); + list->Add(new Choice(si->T("100%")))->OnClick.Add([&](UI::EventParams &) { + g_OSD.SetProgressBar("testprogress", "Test Progress", 1, 100, 100, 1.0f); + }); + list->Add(new Choice(si->T("N/A%")))->OnClick.Add([&](UI::EventParams &) { + g_OSD.SetProgressBar("testprogress", "Test Progress", 0, 0, 0, 0.0f); + }); + list->Add(new Choice(si->T("Success")))->OnClick.Add([&](UI::EventParams &) { + g_OSD.RemoveProgressBar("testprogress", true, 0.5f); + }); + list->Add(new Choice(si->T("Failure")))->OnClick.Add([&](UI::EventParams &) { + g_OSD.RemoveProgressBar("testprogress", false, 0.5f); + }); + list->Add(new ItemHeader(si->T("Achievement tests"))); + list->Add(new Choice(si->T("Leaderboard tracker: Show")))->OnClick.Add([=](UI::EventParams &) { + g_OSD.ShowLeaderboardTracker(1, "My leaderboard tracker", true); + }); + list->Add(new Choice(si->T("Leaderboard tracker: Update")))->OnClick.Add([=](UI::EventParams &) { + g_OSD.ShowLeaderboardTracker(1, "Updated tracker", true); + }); + list->Add(new Choice(si->T("Leaderboard tracker: Hide")))->OnClick.Add([=](UI::EventParams &) { + g_OSD.ShowLeaderboardTracker(1, "", false); + }); + + static const char *positions[] = {"Bottom Left", "Bottom Center", "Bottom Right", "Top Left", "Top Center", "Top Right", "Center Left", "Center Right", "None"}; + + list->Add(new ItemHeader(ac->T("Notifications"))); + list->Add(new PopupMultiChoice(&g_Config.iAchievementsLeaderboardTrackerPos, ac->T("Leaderboard tracker"), positions, 0, ARRAY_SIZE(positions), I18NCat::DIALOG, screenManager()))->SetEnabledPtr(&g_Config.bAchievementsEnable); + +#ifdef _DEBUG + // Untranslated string because this is debug mode only, only for PPSSPP developers. + list->Add(new Choice("Assert"))->OnClick.Add([=](UI::EventParams &) { + _dbg_assert_msg_(false, "Test assert message"); + }); +#endif +#if PPSSPP_PLATFORM(ANDROID) + list->Add(new Choice(si->T("Exception")))->OnClick.Add([&](UI::EventParams &) { + System_Notify(SystemNotification::TEST_JAVA_EXCEPTION); + }); +#endif } void DeveloperToolsScreen::CreateNetworkTab(UI::LinearLayout *list) { diff --git a/UI/DeveloperToolsScreen.h b/UI/DeveloperToolsScreen.h index 5f07c2748e..4ca172a5b8 100644 --- a/UI/DeveloperToolsScreen.h +++ b/UI/DeveloperToolsScreen.h @@ -56,4 +56,6 @@ private: bool MIPSTracerEnabled_ = false; std::string MIPSTracerPath_ = ""; UI::InfoItem* MIPSTracerPath = nullptr; + + int testSliderValue_ = 0; }; diff --git a/UI/SystemInfoScreen.cpp b/UI/SystemInfoScreen.cpp index ce7d6858b6..11e53ad592 100644 --- a/UI/SystemInfoScreen.cpp +++ b/UI/SystemInfoScreen.cpp @@ -97,9 +97,6 @@ void SystemInfoScreen::CreateTabs() { AddTab("DevSystemInfoDriverBugs", si->T("Driver bugs"), [this](UI::LinearLayout *parent) { CreateDriverBugsTab(parent); }); - AddTab("DevSystemInfoInternals", si->T("Internals"), [this](UI::LinearLayout *parent) { - CreateInternalsTab(parent); - }); } void SystemInfoScreen::CreateDeviceInfoTab(UI::LinearLayout *deviceSpecs) { @@ -505,99 +502,3 @@ void SystemInfoScreen::CreateVulkanExtsTab(UI::LinearLayout *gpuExtensions) { vulkanExtensions->Add(new TextView(extension, new LayoutParams(FILL_PARENT, WRAP_CONTENT)))->SetFocusable(true); } } - -void SystemInfoScreen::CreateInternalsTab(UI::ViewGroup *internals) { - using namespace UI; - - auto di = GetI18NCategory(I18NCat::DIALOG); - auto si = GetI18NCategory(I18NCat::SYSINFO); - auto sy = GetI18NCategory(I18NCat::SYSTEM); - auto ac = GetI18NCategory(I18NCat::ACHIEVEMENTS); - - internals->Add(new ItemHeader(si->T("Icon cache"))); - IconCacheStats iconStats = g_iconCache.GetStats(); - internals->Add(new InfoItem(si->T("Image data count"), StringFromFormat("%d", iconStats.cachedCount))); - internals->Add(new InfoItem(si->T("Texture count"), StringFromFormat("%d", iconStats.textureCount))); - internals->Add(new InfoItem(si->T("Data size"), NiceSizeFormat(iconStats.dataSize))); - internals->Add(new Choice(di->T("Clear")))->OnClick.Add([&](UI::EventParams &) { - g_iconCache.ClearData(); - RecreateViews(); - }); - - internals->Add(new ItemHeader(si->T("Font cache"))); - const TextDrawer *text = screenManager()->getUIContext()->Text(); - if (text) { - internals->Add(new InfoItem(si->T("Texture count"), StringFromFormat("%d", text->GetStringCacheSize()))); - internals->Add(new InfoItem(si->T("Data size"), NiceSizeFormat(text->GetCacheDataSize()))); - } - - internals->Add(new ItemHeader(si->T("Slider test"))); - internals->Add(new Slider(&testSliderValue_, 0, 100, 1, new LinearLayoutParams(FILL_PARENT, WRAP_CONTENT))); - - internals->Add(new ItemHeader(si->T("Notification tests"))); - internals->Add(new Choice(si->T("Error")))->OnClick.Add([&](UI::EventParams &) { - std::string str = "Error " + CodepointToUTF8(0x1F41B) + CodepointToUTF8(0x1F41C) + CodepointToUTF8(0x1F914); - g_OSD.Show(OSDType::MESSAGE_ERROR, str); - }); - internals->Add(new Choice(si->T("Warning")))->OnClick.Add([&](UI::EventParams &) { - g_OSD.Show(OSDType::MESSAGE_WARNING, "Warning", "Some\nAdditional\nDetail"); - }); - internals->Add(new Choice(si->T("Info")))->OnClick.Add([&](UI::EventParams &) { - g_OSD.Show(OSDType::MESSAGE_INFO, "Info"); - }); - // This one is clickable - internals->Add(new Choice(si->T("Success")))->OnClick.Add([&](UI::EventParams &) { - g_OSD.Show(OSDType::MESSAGE_SUCCESS, "Success", 0.0f, "clickable"); - g_OSD.SetClickCallback("clickable", [](bool clicked, void *) { - if (clicked) { - System_LaunchUrl(LaunchUrlType::BROWSER_URL, "https://www.google.com/"); - } - }, nullptr); - }); - internals->Add(new Choice(sy->T("RetroAchievements")))->OnClick.Add([&](UI::EventParams &) { - g_OSD.Show(OSDType::MESSAGE_WARNING, "RetroAchievements warning", "", "I_RETROACHIEVEMENTS_LOGO"); - }); - internals->Add(new ItemHeader(si->T("Progress tests"))); - internals->Add(new Choice(si->T("30%")))->OnClick.Add([&](UI::EventParams &) { - g_OSD.SetProgressBar("testprogress", "Test Progress", 1, 100, 30, 0.0f); - }); - internals->Add(new Choice(si->T("100%")))->OnClick.Add([&](UI::EventParams &) { - g_OSD.SetProgressBar("testprogress", "Test Progress", 1, 100, 100, 1.0f); - }); - internals->Add(new Choice(si->T("N/A%")))->OnClick.Add([&](UI::EventParams &) { - g_OSD.SetProgressBar("testprogress", "Test Progress", 0, 0, 0, 0.0f); - }); - internals->Add(new Choice(si->T("Success")))->OnClick.Add([&](UI::EventParams &) { - g_OSD.RemoveProgressBar("testprogress", true, 0.5f); - }); - internals->Add(new Choice(si->T("Failure")))->OnClick.Add([&](UI::EventParams &) { - g_OSD.RemoveProgressBar("testprogress", false, 0.5f); - }); - internals->Add(new ItemHeader(si->T("Achievement tests"))); - internals->Add(new Choice(si->T("Leaderboard tracker: Show")))->OnClick.Add([=](UI::EventParams &) { - g_OSD.ShowLeaderboardTracker(1, "My leaderboard tracker", true); - }); - internals->Add(new Choice(si->T("Leaderboard tracker: Update")))->OnClick.Add([=](UI::EventParams &) { - g_OSD.ShowLeaderboardTracker(1, "Updated tracker", true); - }); - internals->Add(new Choice(si->T("Leaderboard tracker: Hide")))->OnClick.Add([=](UI::EventParams &) { - g_OSD.ShowLeaderboardTracker(1, "", false); - }); - - static const char *positions[] = {"Bottom Left", "Bottom Center", "Bottom Right", "Top Left", "Top Center", "Top Right", "Center Left", "Center Right", "None"}; - - internals->Add(new ItemHeader(ac->T("Notifications"))); - internals->Add(new PopupMultiChoice(&g_Config.iAchievementsLeaderboardTrackerPos, ac->T("Leaderboard tracker"), positions, 0, ARRAY_SIZE(positions), I18NCat::DIALOG, screenManager()))->SetEnabledPtr(&g_Config.bAchievementsEnable); - -#ifdef _DEBUG - // Untranslated string because this is debug mode only, only for PPSSPP developers. - internals->Add(new Choice("Assert"))->OnClick.Add([=](UI::EventParams &) { - _dbg_assert_msg_(false, "Test assert message"); - }); -#endif -#if PPSSPP_PLATFORM(ANDROID) - internals->Add(new Choice(si->T("Exception")))->OnClick.Add([&](UI::EventParams &) { - System_Notify(SystemNotification::TEST_JAVA_EXCEPTION); - }); -#endif -} diff --git a/UI/SystemInfoScreen.h b/UI/SystemInfoScreen.h index 6f5356b5b7..626614f8e4 100644 --- a/UI/SystemInfoScreen.h +++ b/UI/SystemInfoScreen.h @@ -27,9 +27,6 @@ private: void CreateBuildConfigTab(UI::LinearLayout *storage); void CreateCPUExtensionsTab(UI::LinearLayout *storage); void CreateDriverBugsTab(UI::LinearLayout *storage); - void CreateInternalsTab(UI::ViewGroup *internals); void CreateOpenGLExtsTab(UI::LinearLayout *gpuExtensions); void CreateVulkanExtsTab(UI::LinearLayout *gpuExtensions); - - int testSliderValue_ = 0; }; diff --git a/assets/lang/th_TH.ini b/assets/lang/th_TH.ini index aef99f93a8..d3eae94b11 100644 --- a/assets/lang/th_TH.ini +++ b/assets/lang/th_TH.ini @@ -1319,7 +1319,6 @@ Icon cache = แคชไอคอน Image data count = จำนวนข้อมูลรูปภาพ Info = ข้อมูล Instance = ทำงานแล้ว -Internals = ข้อมูลภายใน JIT available = JIT ใช้งานได้ Lang/Region = ภาษา/ภูมิภาค Leaderboard tracker: Hide = การติดตามกระดานแต้มผู้นำ: ซ่อน