Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove game window title size restriction #7656

Merged
merged 2 commits into from Mar 1, 2020
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
77 changes: 49 additions & 28 deletions rpcs3/rpcs3qt/settings_dialog.cpp
@@ -1,5 +1,6 @@
#include <QButtonGroup>
#include <QDialogButtonBox>
#include <QFontMetrics>
#include <QPushButton>
#include <QMessageBox>
#include <QInputDialog>
Expand Down Expand Up @@ -1318,35 +1319,53 @@ settings_dialog::settings_dialog(std::shared_ptr<gui_settings> guiSettings, std:

// Game window title builder

connect(ui->edit_button_game_window_title_format, &QAbstractButton::clicked, [this, game]()
const auto get_game_window_title = [this, game](const QString& format)
{
const std::string game_title_format = xemu_settings->GetSetting(emu_settings::WindowTitleFormat);
rpcs3::title_format_data title_data;
title_data.format = sstr(format);
title_data.renderer = xemu_settings->GetSetting(emu_settings::Renderer);
title_data.vulkan_adapter = xemu_settings->GetSetting(emu_settings::VulkanAdapter);
title_data.fps = 60.;

auto get_game_window_title_label = [=, this](const QString& new_format)
if (game)
{
title_data.title = game->name;
title_data.title_id = game->serial;
}
else
{
rpcs3::title_format_data title_data;
title_data.format = sstr(new_format);
title_data.renderer = xemu_settings->GetSetting(emu_settings::Renderer);
title_data.vulkan_adapter = xemu_settings->GetSetting(emu_settings::VulkanAdapter);
title_data.fps = 60.;
title_data.title = sstr(tr("My Game"));
title_data.title_id = "ABCD12345";
}

if (game)
{
title_data.title = game->name;
title_data.title_id = game->serial;
}
else
{
title_data.title = sstr(tr("My Game"));
title_data.title_id = "ABCD12345";
}
const std::string game_window_title = rpcs3::get_formatted_title(title_data);

if (game_window_title.empty())
{
return QStringLiteral("RPCS3");
}

QString game_window_title = qstr(rpcs3::get_formatted_title(title_data));
return qstr(game_window_title);
};

if (game_window_title.isEmpty())
{
game_window_title = "RPCS3";
}
const auto set_game_window_title = [=, this](const std::string& format)
{
const auto game_window_title_format = qstr(format);
const auto game_window_title = get_game_window_title(game_window_title_format);
const auto width = ui->label_game_window_title_format->sizeHint().width();
const auto metrics = ui->label_game_window_title_format->fontMetrics();
const auto elided_text = metrics.elidedText(game_window_title_format, Qt::ElideRight, width);
const auto tooltip = game_window_title_format + QStringLiteral("\n\n") + game_window_title;

ui->label_game_window_title_format->setText(elided_text);
ui->label_game_window_title_format->setToolTip(tooltip);
};

connect(ui->edit_button_game_window_title_format, &QAbstractButton::clicked, [=, this]()
{
auto get_game_window_title_label = [=](const QString& format)
{
const QString game_window_title = get_game_window_title(format);

const std::vector<std::pair<const QString, const QString>> window_title_glossary =
{
Expand All @@ -1371,9 +1390,11 @@ settings_dialog::settings_dialog(std::shared_ptr<gui_settings> guiSettings, std:
return tr("Glossary:\n\n%0\nPreview:\n\n%1\n").arg(glossary).arg(game_window_title);
};

const std::string game_title_format = xemu_settings->GetSetting(emu_settings::WindowTitleFormat);

QString edited_format = qstr(game_title_format);

input_dialog dlg(30, edited_format, tr("Game Window Title Format"), get_game_window_title_label(edited_format), "", this);
input_dialog dlg(-1, edited_format, tr("Game Window Title Format"), get_game_window_title_label(edited_format), "", this);
dlg.resize(width() * .75, dlg.height());

connect(&dlg, &input_dialog::text_changed, [&](const QString& text)
Expand All @@ -1385,19 +1406,19 @@ settings_dialog::settings_dialog(std::shared_ptr<gui_settings> guiSettings, std:
if (dlg.exec() == QDialog::Accepted)
{
xemu_settings->SetSetting(emu_settings::WindowTitleFormat, sstr(edited_format));
ui->label_game_window_title_format->setText(qstr(xemu_settings->GetSetting(emu_settings::WindowTitleFormat)));
set_game_window_title(xemu_settings->GetSetting(emu_settings::WindowTitleFormat));
}
});

connect(ui->reset_button_game_window_title_format, &QAbstractButton::clicked, [this, game]()
connect(ui->reset_button_game_window_title_format, &QAbstractButton::clicked, [=, this]()
{
const std::string default_game_title_format = xemu_settings->GetSettingDefault(emu_settings::WindowTitleFormat);
xemu_settings->SetSetting(emu_settings::WindowTitleFormat, default_game_title_format);
ui->label_game_window_title_format->setText(qstr(default_game_title_format));
set_game_window_title(default_game_title_format);
});

// Load and apply the configured game window title format
ui->label_game_window_title_format->setText(qstr(xemu_settings->GetSetting(emu_settings::WindowTitleFormat)));
set_game_window_title(xemu_settings->GetSetting(emu_settings::WindowTitleFormat));

SubscribeTooltip(ui->gb_game_window_title, tooltips.settings.game_window_title_format);

Expand Down