Qt: Add title and title id to button tooltips

This commit is contained in:
Megamouse 2020-03-06 22:36:31 +01:00
parent e56b3256b0
commit 0c45457101
4 changed files with 84 additions and 31 deletions

View File

@ -128,6 +128,11 @@ public:
return m_title; return m_title;
} }
const std::string GetTitleAndTitleID() const
{
return m_title + (m_title_id.empty() ? "" : " [" + m_title_id + "]");
}
const std::string& GetCat() const const std::string& GetCat() const
{ {
return m_cat; return m_cat;

View File

@ -1213,7 +1213,7 @@ void game_list_frame::ShowContextMenu(const QPoint &pos)
}); });
connect(copy_info, &QAction::triggered, [=, this] connect(copy_info, &QAction::triggered, [=, this]
{ {
QApplication::clipboard()->setText(name + " [" + serial + "]"); QApplication::clipboard()->setText(name % QStringLiteral(" [") % serial % QStringLiteral("]"));
}); });
connect(copy_name, &QAction::triggered, [=, this] connect(copy_name, &QAction::triggered, [=, this]
{ {

View File

@ -126,14 +126,16 @@ void main_window::Init()
show(); // needs to be done before creating the thumbnail toolbar show(); // needs to be done before creating the thumbnail toolbar
// enable play options if a recent game exists // enable play options if a recent game exists
const bool enable_play_last = !m_recentGameActs.isEmpty(); const bool enable_play_last = !m_recentGameActs.isEmpty() && m_recentGameActs.first();
const QString start_toolip = enable_play_last ? tr("Start %0").arg(m_recentGameActs.first()->text()) : tr("Start emulation");
if (enable_play_last) if (enable_play_last)
{ {
ui->sysPauseAct->setEnabled(true); ui->sysPauseAct->setEnabled(true);
ui->sysPauseAct->setText(tr("&Start last played game\tCtrl+E")); ui->sysPauseAct->setText(tr("&Start last played game\tCtrl+E"));
ui->sysPauseAct->setIcon(m_icon_play); ui->sysPauseAct->setIcon(m_icon_play);
ui->toolbar_start->setToolTip(tr("Start last played game")); ui->toolbar_start->setToolTip(start_toolip);
ui->toolbar_start->setEnabled(true); ui->toolbar_start->setEnabled(true);
} }
@ -143,7 +145,7 @@ void main_window::Init()
m_thumb_bar->setWindow(windowHandle()); m_thumb_bar->setWindow(windowHandle());
m_thumb_playPause = new QWinThumbnailToolButton(m_thumb_bar); m_thumb_playPause = new QWinThumbnailToolButton(m_thumb_bar);
m_thumb_playPause->setToolTip(enable_play_last ? tr("Start last played game") : tr("Start emulation")); m_thumb_playPause->setToolTip(start_toolip);
m_thumb_playPause->setIcon(m_icon_thumb_play); m_thumb_playPause->setIcon(m_icon_thumb_play);
m_thumb_playPause->setEnabled(enable_play_last); m_thumb_playPause->setEnabled(enable_play_last);
@ -179,6 +181,16 @@ void main_window::Init()
#endif #endif
} }
QString main_window::GetCurrentTitle()
{
QString title = qstr(Emu.GetTitleAndTitleID());
if (title.isEmpty())
{
title = qstr(Emu.GetBoot());
}
return title;
}
// returns appIcon // returns appIcon
QIcon main_window::GetAppIcon() QIcon main_window::GetAppIcon()
{ {
@ -307,10 +319,9 @@ void main_window::Boot(const std::string& path, const std::string& title_id, boo
else else
{ {
gui_log.success("Boot successful."); gui_log.success("Boot successful.");
const std::string serial = Emu.GetTitleID().empty() ? "" : "[" + Emu.GetTitleID() + "] ";
if (!add_only) if (!add_only)
{ {
AddRecentAction(gui::Recent_Game(qstr(Emu.GetBoot()), qstr(serial + Emu.GetTitle()))); AddRecentAction(gui::Recent_Game(qstr(Emu.GetBoot()), qstr(Emu.GetTitleAndTitleID())));
} }
} }
@ -894,43 +905,64 @@ void main_window::RepaintToolBarIcons()
void main_window::OnEmuRun(bool /*start_playtime*/) void main_window::OnEmuRun(bool /*start_playtime*/)
{ {
const QString title = GetCurrentTitle();
const QString restart_tooltip = tr("Restart %0").arg(title);
const QString pause_tooltip = tr("Pause %0").arg(title);
const QString stop_tooltip = tr("Stop %0").arg(title);
m_debuggerFrame->EnableButtons(true); m_debuggerFrame->EnableButtons(true);
#ifdef _WIN32 #ifdef _WIN32
m_thumb_playPause->setToolTip(tr("Pause emulation")); m_thumb_stop->setToolTip(stop_tooltip);
m_thumb_restart->setToolTip(restart_tooltip);
m_thumb_playPause->setToolTip(pause_tooltip);
m_thumb_playPause->setIcon(m_icon_thumb_pause); m_thumb_playPause->setIcon(m_icon_thumb_pause);
#endif #endif
ui->sysPauseAct->setText(tr("&Pause\tCtrl+P")); ui->sysPauseAct->setText(tr("&Pause\tCtrl+P"));
ui->sysPauseAct->setIcon(m_icon_pause); ui->sysPauseAct->setIcon(m_icon_pause);
ui->toolbar_start->setIcon(m_icon_pause); ui->toolbar_start->setIcon(m_icon_pause);
ui->toolbar_start->setText(tr("Pause")); ui->toolbar_start->setText(tr("Pause"));
ui->toolbar_start->setToolTip(tr("Pause emulation")); ui->toolbar_start->setToolTip(pause_tooltip);
ui->toolbar_stop->setToolTip(stop_tooltip);
EnableMenus(true); EnableMenus(true);
} }
void main_window::OnEmuResume() void main_window::OnEmuResume()
{ {
const QString title = GetCurrentTitle();
const QString restart_tooltip = tr("Restart %0").arg(title);
const QString pause_tooltip = tr("Pause %0").arg(title);
const QString stop_tooltip = tr("Stop %0").arg(title);
#ifdef _WIN32 #ifdef _WIN32
m_thumb_playPause->setToolTip(tr("Pause emulation")); m_thumb_stop->setToolTip(stop_tooltip);
m_thumb_restart->setToolTip(restart_tooltip);
m_thumb_playPause->setToolTip(pause_tooltip);
m_thumb_playPause->setIcon(m_icon_thumb_pause); m_thumb_playPause->setIcon(m_icon_thumb_pause);
#endif #endif
ui->sysPauseAct->setText(tr("&Pause\tCtrl+P")); ui->sysPauseAct->setText(tr("&Pause\tCtrl+P"));
ui->sysPauseAct->setIcon(m_icon_pause); ui->sysPauseAct->setIcon(m_icon_pause);
ui->toolbar_start->setIcon(m_icon_pause); ui->toolbar_start->setIcon(m_icon_pause);
ui->toolbar_start->setText(tr("Pause")); ui->toolbar_start->setText(tr("Pause"));
ui->toolbar_start->setToolTip(tr("Pause emulation")); ui->toolbar_start->setToolTip(pause_tooltip);
ui->toolbar_stop->setToolTip(stop_tooltip);
} }
void main_window::OnEmuPause() void main_window::OnEmuPause()
{ {
const QString title = GetCurrentTitle();
const QString resume_tooltip = tr("Resume %0").arg(title);
#ifdef _WIN32 #ifdef _WIN32
m_thumb_playPause->setToolTip(tr("Resume emulation")); m_thumb_playPause->setToolTip(resume_tooltip);
m_thumb_playPause->setIcon(m_icon_thumb_play); m_thumb_playPause->setIcon(m_icon_thumb_play);
#endif #endif
ui->sysPauseAct->setText(tr("&Resume\tCtrl+E")); ui->sysPauseAct->setText(tr("&Resume\tCtrl+E"));
ui->sysPauseAct->setIcon(m_icon_play); ui->sysPauseAct->setIcon(m_icon_play);
ui->toolbar_start->setIcon(m_icon_play); ui->toolbar_start->setIcon(m_icon_play);
ui->toolbar_start->setText(tr("Play")); ui->toolbar_start->setText(tr("Play"));
ui->toolbar_start->setToolTip(tr("Resume emulation")); ui->toolbar_start->setToolTip(resume_tooltip);
// Refresh game list in order to update time played // Refresh game list in order to update time played
if (m_gameListFrame) if (m_gameListFrame)
@ -941,33 +973,40 @@ void main_window::OnEmuPause()
void main_window::OnEmuStop() void main_window::OnEmuStop()
{ {
const QString title = GetCurrentTitle();
const QString play_tooltip = Emu.IsReady() ? tr("Start %0").arg(title) : tr("Resume %0").arg(title);
const QString restart_tooltip = tr("Restart %0").arg(title);
m_debuggerFrame->EnableButtons(false); m_debuggerFrame->EnableButtons(false);
m_debuggerFrame->ClearBreakpoints(); m_debuggerFrame->ClearBreakpoints();
ui->sysPauseAct->setText(Emu.IsReady() ? tr("&Start\tCtrl+E") : tr("&Resume\tCtrl+E")); ui->sysPauseAct->setText(Emu.IsReady() ? tr("&Start\tCtrl+E") : tr("&Resume\tCtrl+E"));
ui->sysPauseAct->setIcon(m_icon_play); ui->sysPauseAct->setIcon(m_icon_play);
#ifdef _WIN32 #ifdef _WIN32
m_thumb_playPause->setToolTip(Emu.IsReady() ? tr("Start emulation") : tr("Resume emulation")); m_thumb_playPause->setToolTip(play_tooltip);
m_thumb_playPause->setIcon(m_icon_thumb_play); m_thumb_playPause->setIcon(m_icon_thumb_play);
#endif #endif
EnableMenus(false); EnableMenus(false);
if (!Emu.GetBoot().empty())
if (Emu.GetBoot().empty())
{
ui->toolbar_start->setIcon(m_icon_play);
ui->toolbar_start->setText(tr("Play"));
ui->toolbar_start->setToolTip(play_tooltip);
}
else
{ {
ui->toolbar_start->setEnabled(true); ui->toolbar_start->setEnabled(true);
ui->toolbar_start->setIcon(m_icon_restart); ui->toolbar_start->setIcon(m_icon_restart);
ui->toolbar_start->setText(tr("Restart")); ui->toolbar_start->setText(tr("Restart"));
ui->toolbar_start->setToolTip(tr("Restart emulation")); ui->toolbar_start->setToolTip(restart_tooltip);
ui->sysRebootAct->setEnabled(true); ui->sysRebootAct->setEnabled(true);
#ifdef _WIN32 #ifdef _WIN32
m_thumb_restart->setToolTip(restart_tooltip);
m_thumb_restart->setEnabled(true); m_thumb_restart->setEnabled(true);
#endif #endif
} }
else
{
ui->toolbar_start->setIcon(m_icon_play);
ui->toolbar_start->setText(tr("Play"));
ui->toolbar_start->setToolTip(Emu.IsReady() ? tr("Start emulation") : tr("Resume emulation"));
}
ui->actionManage_Users->setEnabled(true); ui->actionManage_Users->setEnabled(true);
// Refresh game list in order to update time played // Refresh game list in order to update time played
@ -979,16 +1018,20 @@ void main_window::OnEmuStop()
void main_window::OnEmuReady() void main_window::OnEmuReady()
{ {
const QString title = GetCurrentTitle();
const QString play_tooltip = Emu.IsReady() ? tr("Start %0").arg(title) : tr("Resume %0").arg(title);
m_debuggerFrame->EnableButtons(true); m_debuggerFrame->EnableButtons(true);
#ifdef _WIN32 #ifdef _WIN32
m_thumb_playPause->setToolTip(Emu.IsReady() ? tr("Start emulation") : tr("Resume emulation")); m_thumb_playPause->setToolTip(play_tooltip);
m_thumb_playPause->setIcon(m_icon_thumb_play); m_thumb_playPause->setIcon(m_icon_thumb_play);
#endif #endif
ui->sysPauseAct->setText(Emu.IsReady() ? tr("&Start\tCtrl+E") : tr("&Resume\tCtrl+E")); ui->sysPauseAct->setText(Emu.IsReady() ? tr("&Start\tCtrl+E") : tr("&Resume\tCtrl+E"));
ui->sysPauseAct->setIcon(m_icon_play); ui->sysPauseAct->setIcon(m_icon_play);
ui->toolbar_start->setIcon(m_icon_play); ui->toolbar_start->setIcon(m_icon_play);
ui->toolbar_start->setText(tr("Play")); ui->toolbar_start->setText(tr("Play"));
ui->toolbar_start->setToolTip(Emu.IsReady() ? tr("Start emulation") : tr("Resume emulation")); ui->toolbar_start->setToolTip(play_tooltip);
EnableMenus(true); EnableMenus(true);
ui->actionManage_Users->setEnabled(false); ui->actionManage_Users->setEnabled(false);
@ -1032,7 +1075,7 @@ void main_window::BootRecentAction(const QAction* act)
const QString pth = act->data().toString(); const QString pth = act->data().toString();
const std::string path = sstr(pth); const std::string path = sstr(pth);
QString nam; QString name;
bool containsPath = false; bool containsPath = false;
int idx = -1; int idx = -1;
@ -1042,12 +1085,13 @@ void main_window::BootRecentAction(const QAction* act)
{ {
idx = i; idx = i;
containsPath = true; containsPath = true;
nam = m_rg_entries.at(idx).second; name = m_rg_entries.at(idx).second;
break;
} }
} }
// path is invalid: remove action from list return // path is invalid: remove action from list return
if ((containsPath && nam.isEmpty()) || (!QFileInfo(pth).isDir() && !QFileInfo(pth).isFile())) if ((containsPath && name.isEmpty()) || (!QFileInfo(pth).isDir() && !QFileInfo(pth).isFile()))
{ {
if (containsPath) if (containsPath)
{ {
@ -1148,12 +1192,14 @@ void main_window::AddRecentAction(const q_string_pair& entry)
ui->bootRecentMenu->removeAction(act); ui->bootRecentMenu->removeAction(act);
} }
// if path already exists, remove it in order to get it to beginning // If path already exists, remove it in order to get it to beginning. Also remove duplicates.
if (m_rg_entries.contains(entry)) for (int i = m_rg_entries.count() - 1; i >= 0; --i)
{ {
int idx = m_rg_entries.indexOf(entry); if (m_rg_entries[i].first == entry.first)
m_rg_entries.removeAt(idx); {
m_recentGameActs.removeAt(idx); m_rg_entries.removeAt(i);
m_recentGameActs.removeAt(i);
}
} }
// remove oldest action at the end if needed // remove oldest action at the end if needed

View File

@ -141,6 +141,8 @@ private:
void RemoveDiskCache(); void RemoveDiskCache();
QString GetCurrentTitle();
q_pair_list m_rg_entries; q_pair_list m_rg_entries;
QList<QAction*> m_recentGameActs; QList<QAction*> m_recentGameActs;