Merge pull request #4012 from zhaowenlan1779/ui-retext
citra_qt: UI text improvements
This commit is contained in:
commit
aed15a8d9d
@ -78,36 +78,20 @@ enum class CalloutFlag : uint32_t {
|
||||
Telemetry = 0x1,
|
||||
};
|
||||
|
||||
static void ShowCalloutMessage(const QString& message, CalloutFlag flag) {
|
||||
if (UISettings::values.callout_flags & static_cast<uint32_t>(flag)) {
|
||||
void GMainWindow::ShowTelemetryCallout() {
|
||||
if (UISettings::values.callout_flags & static_cast<uint32_t>(CalloutFlag::Telemetry)) {
|
||||
return;
|
||||
}
|
||||
|
||||
UISettings::values.callout_flags |= static_cast<uint32_t>(flag);
|
||||
|
||||
QMessageBox msg;
|
||||
msg.setText(message);
|
||||
msg.setStandardButtons(QMessageBox::Ok);
|
||||
msg.setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
|
||||
msg.setStyleSheet("QLabel{min-width: 900px;}");
|
||||
msg.exec();
|
||||
}
|
||||
|
||||
void GMainWindow::ShowCallouts() {
|
||||
UISettings::values.callout_flags |= static_cast<uint32_t>(CalloutFlag::Telemetry);
|
||||
static const QString telemetry_message =
|
||||
tr("To help improve Citra, the Citra Team collects anonymous usage data. No private or "
|
||||
"personally identifying information is collected. This data helps us to understand how "
|
||||
"people use Citra and prioritize our efforts. Furthermore, it helps us to more easily "
|
||||
"identify emulation bugs and performance issues. This data includes:<ul><li>Information"
|
||||
" about the version of Citra you are using</li><li>Performance data about the games you "
|
||||
"play</li><li>Your configuration settings</li><li>Information about your computer "
|
||||
"hardware</li><li>Emulation errors and crash information</li></ul>By default, this "
|
||||
"feature is enabled. To disable this feature, click 'Emulation' from the menu and then "
|
||||
"select 'Configure...'. Then, on the 'Web' tab, uncheck 'Share anonymous usage data with"
|
||||
" the Citra team'. <br/><br/>By using this software, you agree to the above terms.<br/>"
|
||||
"<br/><a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>Learn "
|
||||
"more</a>");
|
||||
ShowCalloutMessage(telemetry_message, CalloutFlag::Telemetry);
|
||||
tr("<a href='https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/'>Anonymous "
|
||||
"data is collected</a> to help improve Citra. "
|
||||
"<br/><br/>Would you like to share your usage data with us?");
|
||||
if (QMessageBox::question(this, tr("Telemetry"), telemetry_message) != QMessageBox::Yes) {
|
||||
Settings::values.enable_telemetry = false;
|
||||
Settings::Apply();
|
||||
}
|
||||
}
|
||||
|
||||
const int GMainWindow::max_recent_files_item;
|
||||
@ -160,7 +144,7 @@ GMainWindow::GMainWindow() : config(new Config()), emu_thread(nullptr) {
|
||||
game_list->PopulateAsync(UISettings::values.game_dirs);
|
||||
|
||||
// Show one-time "callout" messages to the user
|
||||
ShowCallouts();
|
||||
ShowTelemetryCallout();
|
||||
|
||||
if (UISettings::values.check_for_update_on_start) {
|
||||
CheckForUpdates();
|
||||
@ -606,11 +590,10 @@ void GMainWindow::OnUpdateFound(bool found, bool error) {
|
||||
void GMainWindow::ShowUpdatePrompt() {
|
||||
defer_update_prompt = false;
|
||||
|
||||
auto result = QMessageBox::question(
|
||||
this, tr("Update available!"),
|
||||
tr("An update for Citra is available. Do you wish to install it now?<br /><br />"
|
||||
"This <b>will</b> terminate emulation, if it is running."),
|
||||
QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
|
||||
auto result =
|
||||
QMessageBox::question(this, tr("Update Available"),
|
||||
tr("An update is available. Would you like to install it now?"),
|
||||
QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
|
||||
|
||||
if (result == QMessageBox::Yes) {
|
||||
updater->LaunchUIOnExit();
|
||||
@ -619,7 +602,7 @@ void GMainWindow::ShowUpdatePrompt() {
|
||||
}
|
||||
|
||||
void GMainWindow::ShowNoUpdatePrompt() {
|
||||
QMessageBox::information(this, tr("No update found"), tr("No update has been found for Citra."),
|
||||
QMessageBox::information(this, tr("No Update Found"), tr("No update is found."),
|
||||
QMessageBox::Ok, QMessageBox::Ok);
|
||||
}
|
||||
|
||||
@ -636,7 +619,7 @@ bool GMainWindow::LoadROM(const QString& filename) {
|
||||
render_window->MakeCurrent();
|
||||
|
||||
if (!gladLoadGL()) {
|
||||
QMessageBox::critical(this, tr("Error while initializing OpenGL 3.3 Core!"),
|
||||
QMessageBox::critical(this, tr("OpenGL 3.3 Unsupported"),
|
||||
tr("Your GPU may not support OpenGL 3.3, or you do not "
|
||||
"have the latest graphics driver."));
|
||||
return false;
|
||||
@ -650,44 +633,53 @@ bool GMainWindow::LoadROM(const QString& filename) {
|
||||
switch (result) {
|
||||
case Core::System::ResultStatus::ErrorGetLoader:
|
||||
LOG_CRITICAL(Frontend, "Failed to obtain loader for {}!", filename.toStdString());
|
||||
QMessageBox::critical(this, tr("Error while loading ROM!"),
|
||||
tr("The ROM format is not supported."));
|
||||
QMessageBox::critical(
|
||||
this, tr("Invalid ROM Format"),
|
||||
tr("Your ROM format is not supported.<br/>Please follow the guides to redump your "
|
||||
"<a href='https://citra-emu.org/wiki/dumping-game-cartridges/'>game "
|
||||
"cartridges</a> or "
|
||||
"<a href='https://citra-emu.org/wiki/dumping-installed-titles/'>installed "
|
||||
"titles</a>."));
|
||||
break;
|
||||
|
||||
case Core::System::ResultStatus::ErrorSystemMode:
|
||||
LOG_CRITICAL(Frontend, "Failed to load ROM!");
|
||||
QMessageBox::critical(this, tr("Error while loading ROM!"),
|
||||
tr("Could not determine the system mode."));
|
||||
QMessageBox::critical(
|
||||
this, tr("ROM Corrupted"),
|
||||
tr("Your ROM is corrupted. <br/>Please follow the guides to redump your "
|
||||
"<a href='https://citra-emu.org/wiki/dumping-game-cartridges/'>game "
|
||||
"cartridges</a> or "
|
||||
"<a href='https://citra-emu.org/wiki/dumping-installed-titles/'>installed "
|
||||
"titles</a>."));
|
||||
break;
|
||||
|
||||
case Core::System::ResultStatus::ErrorLoader_ErrorEncrypted: {
|
||||
QMessageBox::critical(
|
||||
this, tr("Error while loading ROM!"),
|
||||
tr("The game that you are trying to load must be decrypted before being used with "
|
||||
"Citra. A real 3DS is required.<br/><br/>"
|
||||
"For more information on dumping and decrypting games, please see the following "
|
||||
"wiki pages: <ul>"
|
||||
"<li><a href='https://citra-emu.org/wiki/dumping-game-cartridges/'>Dumping Game "
|
||||
"Cartridges</a></li>"
|
||||
"<li><a href='https://citra-emu.org/wiki/dumping-installed-titles/'>Dumping "
|
||||
"Installed Titles</a></li>"
|
||||
"</ul>"));
|
||||
this, tr("ROM Encrypted"),
|
||||
tr("Your ROM is encrypted. <br/>Please follow the guides to redump your "
|
||||
"<a href='https://citra-emu.org/wiki/dumping-game-cartridges/'>game "
|
||||
"cartridges</a> or "
|
||||
"<a href='https://citra-emu.org/wiki/dumping-installed-titles/'>installed "
|
||||
"titles</a>."));
|
||||
break;
|
||||
}
|
||||
case Core::System::ResultStatus::ErrorLoader_ErrorInvalidFormat:
|
||||
QMessageBox::critical(this, tr("Error while loading ROM!"),
|
||||
tr("The ROM format is not supported."));
|
||||
QMessageBox::critical(
|
||||
this, tr("Invalid ROM Format"),
|
||||
tr("Your ROM format is not supported.<br/>Please follow the guides to redump your "
|
||||
"<a href='https://citra-emu.org/wiki/dumping-game-cartridges/'>game "
|
||||
"cartridges</a> or "
|
||||
"<a href='https://citra-emu.org/wiki/dumping-installed-titles/'>installed "
|
||||
"titles</a>."));
|
||||
break;
|
||||
|
||||
case Core::System::ResultStatus::ErrorVideoCore:
|
||||
QMessageBox::critical(
|
||||
this, tr("An error occured in the video core."),
|
||||
tr("Citra has encountered an error while running the video core, please see the "
|
||||
"log for more details."
|
||||
"For more information on accessing the log, please see the following page: "
|
||||
"<a href='https://community.citra-emu.org/t/how-to-upload-the-log-file/296'>How "
|
||||
"to "
|
||||
"Upload the Log File</a>."
|
||||
this, tr("Video Core Error"),
|
||||
tr("An error has occured. Please <a "
|
||||
"href='https://community.citra-emu.org/t/how-to-upload-the-log-file/296'>see "
|
||||
"the "
|
||||
"log</a> for more details. "
|
||||
"Ensure that you have the latest graphics drivers for your GPU."));
|
||||
|
||||
break;
|
||||
@ -1076,12 +1068,9 @@ void GMainWindow::OnMenuReportCompatibility() {
|
||||
CompatDB compatdb{this};
|
||||
compatdb.exec();
|
||||
} else {
|
||||
QMessageBox::critical(
|
||||
this, tr("Missing Citra Account"),
|
||||
tr("In order to submit a game compatibility test case, you must link your Citra "
|
||||
"account.<br><br/>To link your Citra account, go to Emulation > Configuration "
|
||||
"> "
|
||||
"Web."));
|
||||
QMessageBox::critical(this, tr("Missing Citra Account"),
|
||||
tr("You must link your Citra account to submit test cases."
|
||||
"<br/>Go to Emulation > Configure... > Web to do so."));
|
||||
}
|
||||
}
|
||||
|
||||
@ -1249,53 +1238,52 @@ void GMainWindow::OnCoreError(Core::System::ResultStatus result, std::string det
|
||||
QMessageBox::StandardButton answer;
|
||||
QString status_message;
|
||||
const QString common_message =
|
||||
tr("The game you are trying to load requires additional files from your 3DS to be dumped "
|
||||
"before playing.<br/><br/>For more information on dumping these files, please see the "
|
||||
"following wiki page: <a "
|
||||
tr("%1 is missing. Please <a "
|
||||
"href='https://citra-emu.org/wiki/"
|
||||
"dumping-system-archives-and-the-shared-fonts-from-a-3ds-console/'>Dumping System "
|
||||
"Archives and the Shared Fonts from a 3DS Console</a>.<br/><br/>Would you like to quit "
|
||||
"back to the game list? Continuing emulation may result in crashes, corrupted save "
|
||||
"data, or other bugs.");
|
||||
"dumping-system-archives-and-the-shared-fonts-from-a-3ds-console/'>dump your "
|
||||
"system archives</a>.<br/>Continuing emulation may result in crashes and bugs.");
|
||||
QString title, message;
|
||||
switch (result) {
|
||||
case Core::System::ResultStatus::ErrorSystemFiles: {
|
||||
QString message = "Citra was unable to locate a 3DS system archive";
|
||||
if (!details.empty()) {
|
||||
message.append(tr(": %1. ").arg(details.c_str()));
|
||||
message = common_message.arg(QString::fromStdString(details));
|
||||
} else {
|
||||
message.append(". ");
|
||||
message = common_message.arg("A system archive");
|
||||
}
|
||||
message.append(common_message);
|
||||
|
||||
answer = QMessageBox::question(this, tr("System Archive Not Found"), message,
|
||||
QMessageBox::Yes | QMessageBox::No, QMessageBox::No);
|
||||
title = tr("System Archive Not Found");
|
||||
status_message = "System Archive Missing";
|
||||
break;
|
||||
}
|
||||
|
||||
case Core::System::ResultStatus::ErrorSharedFont: {
|
||||
QString message = tr("Citra was unable to locate the 3DS shared fonts. ");
|
||||
message = tr("Shared fonts not found. ");
|
||||
message.append(common_message);
|
||||
answer = QMessageBox::question(this, tr("Shared Fonts Not Found"), message,
|
||||
QMessageBox::Yes | QMessageBox::No, QMessageBox::No);
|
||||
title = tr("Shared Fonts Not Found");
|
||||
status_message = "Shared Font Missing";
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
answer = QMessageBox::question(
|
||||
this, tr("Fatal Error"),
|
||||
tr("Citra has encountered a fatal error, please see the log for more details. "
|
||||
"For more information on accessing the log, please see the following page: "
|
||||
"<a href='https://community.citra-emu.org/t/how-to-upload-the-log-file/296'>How to "
|
||||
"Upload the Log File</a>.<br/><br/>Would you like to quit back to the game list? "
|
||||
"Continuing emulation may result in crashes, corrupted save data, or other bugs."),
|
||||
QMessageBox::Yes | QMessageBox::No, QMessageBox::No);
|
||||
title = tr("Fatal Error");
|
||||
message =
|
||||
tr("A fatal error occured. "
|
||||
"<a href='https://community.citra-emu.org/t/how-to-upload-the-log-file/296'>Check "
|
||||
"the log</a> for details."
|
||||
"<br/>Continuing emulation may result in crashes and bugs.");
|
||||
status_message = "Fatal Error encountered";
|
||||
break;
|
||||
}
|
||||
|
||||
if (answer == QMessageBox::Yes) {
|
||||
QMessageBox message_box;
|
||||
message_box.setWindowTitle(title);
|
||||
message_box.setText(message);
|
||||
message_box.setIcon(QMessageBox::Icon::Critical);
|
||||
QPushButton* continue_button = message_box.addButton(tr("Continue"), QMessageBox::RejectRole);
|
||||
QPushButton* abort_button = message_box.addButton(tr("Abort"), QMessageBox::AcceptRole);
|
||||
message_box.exec();
|
||||
|
||||
if (message_box.clickedButton() == abort_button) {
|
||||
if (emu_thread) {
|
||||
ShutdownGame();
|
||||
}
|
||||
@ -1319,7 +1307,7 @@ bool GMainWindow::ConfirmClose() {
|
||||
return true;
|
||||
|
||||
QMessageBox::StandardButton answer =
|
||||
QMessageBox::question(this, tr("Citra"), tr("Are you sure you want to close Citra?"),
|
||||
QMessageBox::question(this, tr("Citra"), tr("Would you like to exit now?"),
|
||||
QMessageBox::Yes | QMessageBox::No, QMessageBox::No);
|
||||
return answer != QMessageBox::No;
|
||||
}
|
||||
@ -1386,8 +1374,7 @@ bool GMainWindow::ConfirmChangeGame() {
|
||||
return true;
|
||||
|
||||
auto answer = QMessageBox::question(
|
||||
this, tr("Citra"),
|
||||
tr("Are you sure you want to stop the emulation? Any unsaved progress will be lost."),
|
||||
this, tr("Citra"), tr("The game is still running. Would you like to stop emulation?"),
|
||||
QMessageBox::Yes | QMessageBox::No, QMessageBox::No);
|
||||
return answer != QMessageBox::No;
|
||||
}
|
||||
|
@ -103,7 +103,7 @@ private:
|
||||
void BootGame(const QString& filename);
|
||||
void ShutdownGame();
|
||||
|
||||
void ShowCallouts();
|
||||
void ShowTelemetryCallout();
|
||||
void ShowUpdaterWidgets();
|
||||
void ShowUpdatePrompt();
|
||||
void ShowNoUpdatePrompt();
|
||||
|
Loading…
Reference in New Issue
Block a user