citra_qt: Show one-time callout messages to user.
This commit is contained in:
parent
3cdf854e44
commit
59ad933022
|
@ -194,6 +194,7 @@ void Config::ReadValues() {
|
||||||
UISettings::values.show_status_bar = qt_config->value("showStatusBar", true).toBool();
|
UISettings::values.show_status_bar = qt_config->value("showStatusBar", true).toBool();
|
||||||
UISettings::values.confirm_before_closing = qt_config->value("confirmClose", true).toBool();
|
UISettings::values.confirm_before_closing = qt_config->value("confirmClose", true).toBool();
|
||||||
UISettings::values.first_start = qt_config->value("firstStart", true).toBool();
|
UISettings::values.first_start = qt_config->value("firstStart", true).toBool();
|
||||||
|
UISettings::values.callout_flags = qt_config->value("calloutFlags", 0).toUInt();
|
||||||
|
|
||||||
qt_config->endGroup();
|
qt_config->endGroup();
|
||||||
}
|
}
|
||||||
|
@ -320,6 +321,7 @@ void Config::SaveValues() {
|
||||||
qt_config->setValue("showStatusBar", UISettings::values.show_status_bar);
|
qt_config->setValue("showStatusBar", UISettings::values.show_status_bar);
|
||||||
qt_config->setValue("confirmClose", UISettings::values.confirm_before_closing);
|
qt_config->setValue("confirmClose", UISettings::values.confirm_before_closing);
|
||||||
qt_config->setValue("firstStart", UISettings::values.first_start);
|
qt_config->setValue("firstStart", UISettings::values.first_start);
|
||||||
|
qt_config->setValue("calloutFlags", UISettings::values.callout_flags);
|
||||||
|
|
||||||
qt_config->endGroup();
|
qt_config->endGroup();
|
||||||
}
|
}
|
||||||
|
|
|
@ -48,6 +48,47 @@
|
||||||
Q_IMPORT_PLUGIN(QWindowsIntegrationPlugin);
|
Q_IMPORT_PLUGIN(QWindowsIntegrationPlugin);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* "Callouts" are one-time instructional messages shown to the user. In the config settings, there
|
||||||
|
* is a bitfield "callout_flags" options, used to track if a message has already been shown to the
|
||||||
|
* user. This is 32-bits - if we have more than 32 callouts, we should retire and recyle old ones.
|
||||||
|
*/
|
||||||
|
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)) {
|
||||||
|
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() {
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
|
||||||
GMainWindow::GMainWindow() : config(new Config()), emu_thread(nullptr) {
|
GMainWindow::GMainWindow() : config(new Config()), emu_thread(nullptr) {
|
||||||
Pica::g_debug_context = Pica::DebugContext::Construct();
|
Pica::g_debug_context = Pica::DebugContext::Construct();
|
||||||
setAcceptDrops(true);
|
setAcceptDrops(true);
|
||||||
|
@ -73,6 +114,9 @@ GMainWindow::GMainWindow() : config(new Config()), emu_thread(nullptr) {
|
||||||
|
|
||||||
UpdateUITheme();
|
UpdateUITheme();
|
||||||
|
|
||||||
|
// Show one-time "callout" messages to the user
|
||||||
|
ShowCallouts();
|
||||||
|
|
||||||
QStringList args = QApplication::arguments();
|
QStringList args = QApplication::arguments();
|
||||||
if (args.length() >= 2) {
|
if (args.length() >= 2) {
|
||||||
BootGame(args[1]);
|
BootGame(args[1]);
|
||||||
|
|
|
@ -80,6 +80,8 @@ private:
|
||||||
void BootGame(const QString& filename);
|
void BootGame(const QString& filename);
|
||||||
void ShutdownGame();
|
void ShutdownGame();
|
||||||
|
|
||||||
|
void ShowCallouts();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Stores the filename in the recently loaded files list.
|
* Stores the filename in the recently loaded files list.
|
||||||
* The new filename is stored at the beginning of the recently loaded files list.
|
* The new filename is stored at the beginning of the recently loaded files list.
|
||||||
|
|
|
@ -48,6 +48,8 @@ struct Values {
|
||||||
|
|
||||||
// Shortcut name <Shortcut, context>
|
// Shortcut name <Shortcut, context>
|
||||||
std::vector<Shortcut> shortcuts;
|
std::vector<Shortcut> shortcuts;
|
||||||
|
|
||||||
|
uint32_t callout_flags;
|
||||||
};
|
};
|
||||||
|
|
||||||
extern Values values;
|
extern Values values;
|
||||||
|
|
Loading…
Reference in New Issue