Make menus and placeholders display appropriate custom key combos. (#4045)

* Add initial support for finding hotkey display key sequences

* Make neededArguments work

* Implement displaying key combos in SplitHeader main menu

* Make Settings search text dynamic

* Make tab hide notice use a custom hotkeys key sequence

* Make Notebook menus use custom hotkeys key combo lookup for hiding tabs

* shut up changelog ci

* Make NotebookTab menus show custom hotkeys. SCUFFED:
this does not update dynamically!

* Scuffed: Make the show prefs button setting show the key bind

* Scuffed: Make the R9K description refer to hotkeys

* @pajlada, is something like this ok?

Co-authored-by: pajlada <rasmus.karlsson@pajlada.com>
This commit is contained in:
Mm2PL
2022-10-09 17:20:44 +02:00
committed by GitHub
parent 4e2da540d2
commit e604a36777
10 changed files with 248 additions and 41 deletions
@@ -1,6 +1,7 @@
#include "controllers/hotkeys/HotkeyController.hpp"
#include "common/QLogging.hpp"
#include "controllers/hotkeys/HotkeyCategory.hpp"
#include "controllers/hotkeys/HotkeyModel.hpp"
#include "singletons/Settings.hpp"
@@ -547,4 +548,40 @@ void HotkeyController::showHotkeyError(const std::shared_ptr<Hotkey> &hotkey,
msgBox->exec();
}
QKeySequence HotkeyController::getDisplaySequence(
HotkeyCategory category, const QString &action,
const std::optional<std::vector<QString>> &arguments) const
{
const auto &found = this->findLike(category, action, arguments);
if (found != nullptr)
{
return found->keySequence();
}
return {};
}
std::shared_ptr<Hotkey> HotkeyController::findLike(
HotkeyCategory category, const QString &action,
const std::optional<std::vector<QString>> &arguments) const
{
for (auto other : this->hotkeys_)
{
if (other->category() == category && other->action() == action)
{
if (arguments)
{
if (other->arguments() == *arguments)
{
return other;
}
}
else
{
return other;
}
}
}
return nullptr;
}
} // namespace chatterino