Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
37d405d
WSearchLineEdit: Correctly detect autocomplete vs. automatic "select …
cr7pt0gr4ph7 May 25, 2024
e4b9309
WSearchLineEdit: Add Ctrl+Return as an alternative to Esc
cr7pt0gr4ph7 Aug 21, 2024
cac9a01
WSearchLineEdit: Update shortcut presentation in the search box tooltip
cr7pt0gr4ph7 May 23, 2024
19dd37d
WSearchLineEdit: Fix: Remove unsupported Ctrl+Backspace shortcut from…
cr7pt0gr4ph7 Jun 7, 2024
b908e0f
WSearchLineEdit: Fix: Add missing whitespace in tooltip text
cr7pt0gr4ph7 Aug 21, 2024
1637b35
WSearchLineEdit: Order the shortcuts list in the tooltip by importance
cr7pt0gr4ph7 Aug 21, 2024
7e2949c
WSearchLineEdit: Use consistent wording ("jump to" vs. "focus") in to…
cr7pt0gr4ph7 Aug 21, 2024
329fa0c
WSearchLineEdit: Improve description text in search box tooltip
cr7pt0gr4ph7 Aug 21, 2024
b848daf
Library: Add LibraryFeature::selectAndActivate()
cr7pt0gr4ph7 May 3, 2024
4d201ae
Library: Add focusReason parameter to LibraryControl::setLibraryFocus
cr7pt0gr4ph7 May 25, 2024
efaa911
Library: Fix: setLibraryFocus should work even if the window is not c…
cr7pt0gr4ph7 Aug 21, 2024
f20fcb8
Library: Add Ctrl+Shift+F shortcut to search the internal database
cr7pt0gr4ph7 May 20, 2024
d42fdf3
Library: Make search shortcuts configurable via keymap
cr7pt0gr4ph7 Jun 7, 2024
a922f0f
WSearchLineEdit: Fix: Invoke WSearchLineEdit::setupTooltip in LegacyS…
cr7pt0gr4ph7 Aug 22, 2024
408bb41
WSearchLineEdit: Review: Rename WSearchLineEdit::handleSetFocus to se…
cr7pt0gr4ph7 Aug 23, 2024
de0e7f4
WSearchLineEdit: Review: Simplify WSearchLineEdit::getSearchText
cr7pt0gr4ph7 Aug 23, 2024
e795ce9
Merge branch 'main' into search-in-tracks-shortcut
cr7pt0gr4ph7 Jan 31, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions res/keyboard/cs_CZ.kbd.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,8 @@ vinylcontrol_cueing Ctrl+Alt+U
FileMenu_LoadDeck1 Ctrl+o
FileMenu_LoadDeck2 Ctrl+Shift+O
FileMenu_Quit Ctrl+q
LibraryMenu_SearchInCurrentView Ctrl+f
LibraryMenu_SearchInAllTracks Ctrl+Shift+F
LibraryMenu_NewPlaylist Ctrl+n
LibraryMenu_NewCrate Ctrl+Shift+N
ViewMenu_ShowSkinSettings Ctrl+1
Expand Down
2 changes: 2 additions & 0 deletions res/keyboard/da_DK.kbd.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,8 @@ vinylcontrol_cueing Ctrl+Alt+U
FileMenu_LoadDeck1 Ctrl+o
FileMenu_LoadDeck2 Ctrl+Shift+O
FileMenu_Quit Ctrl+q
LibraryMenu_SearchInCurrentView Ctrl+f
LibraryMenu_SearchInAllTracks Ctrl+Shift+F
LibraryMenu_NewPlaylist Ctrl+n
LibraryMenu_NewCrate Ctrl+Shift+N
ViewMenu_ShowSkinSettings Ctrl+1
Expand Down
2 changes: 2 additions & 0 deletions res/keyboard/de_CH.kbd.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,8 @@ vinylcontrol_cueing Ctrl+Alt+U
FileMenu_LoadDeck1 Ctrl+o
FileMenu_LoadDeck2 Ctrl+Shift+O
FileMenu_Quit Ctrl+q
LibraryMenu_SearchInCurrentView Ctrl+f
LibraryMenu_SearchInAllTracks Ctrl+Shift+F
LibraryMenu_NewPlaylist Ctrl+n
LibraryMenu_NewCrate Ctrl+Shift+N
ViewMenu_ShowSkinSettings Ctrl+1
Expand Down
2 changes: 2 additions & 0 deletions res/keyboard/de_DE.kbd.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,8 @@ vinylcontrol_cueing Ctrl+Alt+U
FileMenu_LoadDeck1 Ctrl+o
FileMenu_LoadDeck2 Ctrl+Shift+O
FileMenu_Quit Ctrl+q
LibraryMenu_SearchInCurrentView Ctrl+f
LibraryMenu_SearchInAllTracks Ctrl+Shift+F
LibraryMenu_NewPlaylist Ctrl+n
LibraryMenu_NewCrate Ctrl+Shift+N
ViewMenu_ShowSkinSettings Ctrl+1
Expand Down
2 changes: 2 additions & 0 deletions res/keyboard/el_GR.kbd.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,8 @@ vinylcontrol_cueing Ctrl+Alt+Θ
FileMenu_LoadDeck1 Ctrl+o
FileMenu_LoadDeck2 Ctrl+Shift+O
FileMenu_Quit Ctrl+q
LibraryMenu_SearchInCurrentView Ctrl+f
LibraryMenu_SearchInAllTracks Ctrl+Shift+F
LibraryMenu_NewPlaylist Ctrl+n
LibraryMenu_NewCrate Ctrl+Shift+N
ViewMenu_ShowSkinSettings Ctrl+1
Expand Down
2 changes: 2 additions & 0 deletions res/keyboard/en_US.kbd.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,8 @@ vinylcontrol_cueing Ctrl+Alt+U
FileMenu_LoadDeck1 Ctrl+o
FileMenu_LoadDeck2 Ctrl+Shift+O
FileMenu_Quit Ctrl+q
LibraryMenu_SearchInCurrentView Ctrl+f
LibraryMenu_SearchInAllTracks Ctrl+Shift+F
LibraryMenu_NewPlaylist Ctrl+n
LibraryMenu_NewCrate Ctrl+Shift+N
ViewMenu_ShowSkinSettings Ctrl+1
Expand Down
2 changes: 2 additions & 0 deletions res/keyboard/es_ES.kbd.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,8 @@ vinylcontrol_cueing Ctrl+Alt+U
FileMenu_LoadDeck1 Ctrl+o
FileMenu_LoadDeck2 Ctrl+Shift+O
FileMenu_Quit Ctrl+q
LibraryMenu_SearchInCurrentView Ctrl+f
LibraryMenu_SearchInAllTracks Ctrl+Shift+F
LibraryMenu_NewPlaylist Ctrl+n
LibraryMenu_NewCrate Ctrl+Shift+N
ViewMenu_ShowSkinSettings Ctrl+1
Expand Down
2 changes: 2 additions & 0 deletions res/keyboard/fi_FI.kbd.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,8 @@ vinylcontrol_cueing Ctrl+Alt+U
FileMenu_LoadDeck1 Ctrl+o
FileMenu_LoadDeck2 Ctrl+Shift+O
FileMenu_Quit Ctrl+q
LibraryMenu_SearchInCurrentView Ctrl+f
LibraryMenu_SearchInAllTracks Ctrl+Shift+F
LibraryMenu_NewPlaylist Ctrl+n
LibraryMenu_NewCrate Ctrl+Shift+N
ViewMenu_ShowSkinSettings Ctrl+1
Expand Down
2 changes: 2 additions & 0 deletions res/keyboard/fr_CH.kbd.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,8 @@ vinylcontrol_cueing Ctrl+Alt+U
FileMenu_LoadDeck1 Ctrl+o
FileMenu_LoadDeck2 Ctrl+Shift+O
FileMenu_Quit Ctrl+q
LibraryMenu_SearchInCurrentView Ctrl+f
LibraryMenu_SearchInAllTracks Ctrl+Shift+F
LibraryMenu_NewPlaylist Ctrl+n
LibraryMenu_NewCrate Ctrl+Shift+N
ViewMenu_ShowSkinSettings Ctrl+1
Expand Down
2 changes: 2 additions & 0 deletions res/keyboard/fr_FR.kbd.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,8 @@ vinylcontrol_cueing Ctrl+Alt+U
FileMenu_LoadDeck1 Ctrl+o
FileMenu_LoadDeck2 Ctrl+Shift+O
FileMenu_Quit Ctrl+q
LibraryMenu_SearchInCurrentView Ctrl+f
LibraryMenu_SearchInAllTracks Ctrl+Shift+F
LibraryMenu_NewPlaylist Ctrl+n
LibraryMenu_NewCrate Ctrl+Shift+N
ViewMenu_ShowSkinSettings Ctrl+1
Expand Down
2 changes: 2 additions & 0 deletions res/keyboard/it_IT.kbd.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,8 @@ vinylcontrol_cueing Ctrl+Alt+U
FileMenu_LoadDeck1 Ctrl+o
FileMenu_LoadDeck2 Ctrl+Shift+O
FileMenu_Quit Ctrl+q
LibraryMenu_SearchInCurrentView Ctrl+f
LibraryMenu_SearchInAllTracks Ctrl+Shift+F
LibraryMenu_NewPlaylist Ctrl+n
LibraryMenu_NewCrate Ctrl+Shift+N
ViewMenu_ShowSkinSettings Ctrl+1
Expand Down
2 changes: 2 additions & 0 deletions res/keyboard/ru_RU.kbd.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,8 @@ vinylcontrol_cueing Ctrl+Alt+Г
FileMenu_LoadDeck1 Ctrl+o
FileMenu_LoadDeck2 Ctrl+Shift+O
FileMenu_Quit Ctrl+q
LibraryMenu_SearchInCurrentView Ctrl+f
LibraryMenu_SearchInAllTracks Ctrl+Shift+F
LibraryMenu_NewPlaylist Ctrl+n
LibraryMenu_NewCrate Ctrl+Shift+N
ViewMenu_ShowSkinSettings Ctrl+1
Expand Down
18 changes: 16 additions & 2 deletions src/library/library.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -730,13 +730,27 @@ void Library::setEditMetadataSelectedClick(bool enabled) {
emit setSelectedClick(enabled);
}

void Library::slotSearchInCurrentView() {
m_pLibraryControl->setLibraryFocus(FocusWidget::Searchbar, Qt::ShortcutFocusReason);
}

void Library::slotSearchInAllTracks() {
searchTracksInCollection();
}

void Library::searchTracksInCollection() {
VERIFY_OR_DEBUG_ASSERT(m_pMixxxLibraryFeature) {
return;
}
m_pMixxxLibraryFeature->selectAndActivate();
m_pLibraryControl->setLibraryFocus(FocusWidget::Searchbar, Qt::ShortcutFocusReason);
}

void Library::searchTracksInCollection(const QString& query) {
VERIFY_OR_DEBUG_ASSERT(m_pMixxxLibraryFeature) {
return;
}
m_pMixxxLibraryFeature->searchAndActivate(query);
emit switchToView(m_sTrackViewName);
m_pSidebarModel->activateDefaultSelection();
}

#ifdef __ENGINEPRIME__
Expand Down
6 changes: 6 additions & 0 deletions src/library/library.h
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,10 @@ class Library: public QObject {
void setRowHeight(int rowHeight);
void setEditMetadataSelectedClick(bool enable);

/// Switches to the internal track collection view
/// and focuses the search box.
void searchTracksInCollection();

/// Triggers a new search in the internal track collection
/// and shows the results by switching the view.
void searchTracksInCollection(const QString& query);
Expand Down Expand Up @@ -126,6 +130,8 @@ class Library: public QObject {
void slotRefreshLibraryModels();
void slotCreatePlaylist();
void slotCreateCrate();
void slotSearchInCurrentView();
void slotSearchInAllTracks();
void onSkinLoadFinished();
void slotSaveCurrentViewState() const;
void slotRestoreCurrentViewState() const;
Expand Down
18 changes: 7 additions & 11 deletions src/library/librarycontrol.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -944,15 +944,11 @@ FocusWidget LibraryControl::getFocusedWidget() {
}
}

void LibraryControl::setLibraryFocus(FocusWidget newFocusWidget) {
if (!QApplication::focusWindow()) {
qInfo() << "No Mixxx window, popup or menu has focus."
<< "Don't attempt to focus a specific widget.";
return;
}

// ignore no-op
if (newFocusWidget == m_focusedWidget) {
void LibraryControl::setLibraryFocus(FocusWidget newFocusWidget, Qt::FocusReason focusReason) {
// The search box wants to do special handling when the Ctrl+f is used
// while it is already focused. Non-shortcut cases should still be a
// no-op when a control is already focused.
if (newFocusWidget == m_focusedWidget && focusReason != Qt::ShortcutFocusReason) {
return;
}

Expand All @@ -961,13 +957,13 @@ void LibraryControl::setLibraryFocus(FocusWidget newFocusWidget) {
VERIFY_OR_DEBUG_ASSERT(m_pSearchbox) {
return;
}
m_pSearchbox->setFocus();
m_pSearchbox->setFocus(focusReason);
return;
case FocusWidget::Sidebar:
VERIFY_OR_DEBUG_ASSERT(m_pSidebarWidget) {
return;
}
m_pSidebarWidget->setFocus();
m_pSidebarWidget->setFocus(focusReason);
return;
case FocusWidget::TracksTable:
VERIFY_OR_DEBUG_ASSERT(m_pLibraryWidget) {
Expand Down
5 changes: 3 additions & 2 deletions src/library/librarycontrol.h
Original file line number Diff line number Diff line change
Expand Up @@ -58,8 +58,9 @@ class LibraryControl : public QObject {
void bindLibraryWidget(WLibrary* pLibrary, KeyboardEventFilter* pKeyboard);
void bindSidebarWidget(WLibrarySidebar* pLibrarySidebar);
void bindSearchboxWidget(WSearchLineEdit* pSearchbox);
// Give the keyboard focus to one of the library widgets
void setLibraryFocus(FocusWidget newFocusWidget);
/// Give the keyboard focus to one of the library widgets
void setLibraryFocus(FocusWidget newFocusWidget,
Qt::FocusReason focusReason = Qt::OtherFocusReason);
FocusWidget getFocusedWidget();

signals:
Expand Down
11 changes: 11 additions & 0 deletions src/library/libraryfeature.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,17 @@ LibraryFeature::LibraryFeature(
}
}

void LibraryFeature::selectAndActivate(const QModelIndex& index) {
if (index.isValid()) {
emit featureSelect(this, index);
activateChild(index);
} else {
// calling featureSelect with invalid index will select the root item
emit featureSelect(this, QModelIndex());
activate();
}
}

QStringList LibraryFeature::getPlaylistFiles(QFileDialog::FileMode mode) const {
QString lastPlaylistDirectory = m_pConfig->getValue(
ConfigKey("[Library]", "LastImportExportPlaylistDirectory"),
Expand Down
4 changes: 4 additions & 0 deletions src/library/libraryfeature.h
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,10 @@ class LibraryFeature : public QObject {
const UserSettingsPointer m_pConfig;

public slots:
/// Pretend that the user has clicked on a tree item belonging
/// to this LibraryFeature by updating both the library view
/// and the sidebar selection.
void selectAndActivate(const QModelIndex& index = QModelIndex());
// called when you single click on the root item
virtual void activate() = 0;
// called when you single click on a child item, e.g., a concrete playlist or crate
Expand Down
2 changes: 1 addition & 1 deletion src/library/mixxxlibraryfeature.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -173,7 +173,7 @@ void MixxxLibraryFeature::searchAndActivate(const QString& query) {
return;
}
m_pLibraryTableModel->search(query);
activate();
selectAndActivate();
}

#ifdef __ENGINEPRIME__
Expand Down
3 changes: 1 addition & 2 deletions src/library/trackset/playlistfeature.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -308,8 +308,7 @@ void PlaylistFeature::slotPlaylistTableChanged(int playlistId) {
// Else (root item was selected or for some reason no index could be created)
// there's nothing to do: either no child was selected earlier, or the root
// was selected and will remain selected after the child model was rebuilt.
activateChild(newIndex);
emit featureSelect(this, newIndex);
selectAndActivate(newIndex);
}
}

Expand Down
9 changes: 2 additions & 7 deletions src/library/trackset/setlogfeature.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -707,13 +707,8 @@ void SetlogFeature::slotPlaylistTableChanged(int playlistId) {
newIndex = m_pSidebarModel->index(selectedYearIndexRow - 1, 0);
}
}
if (newIndex.isValid()) {
emit featureSelect(this, newIndex);
activateChild(newIndex);
} else if (rootWasSelected) {
// calling featureSelect with invalid index will select the root item
emit featureSelect(this, newIndex);
activate(); // to reload the new current playlist
if (newIndex.isValid() || rootWasSelected) {
selectAndActivate(newIndex);
}
}

Expand Down
10 changes: 10 additions & 0 deletions src/mixxxmainwindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -933,6 +933,16 @@ void MixxxMainWindow::connectMenuBar() {
}

if (m_pCoreServices->getLibrary()) {
connect(m_pMenuBar,
&WMainMenuBar::searchInCurrentView,
m_pCoreServices->getLibrary().get(),
&Library::slotSearchInCurrentView,
Qt::UniqueConnection);
connect(m_pMenuBar,
&WMainMenuBar::searchInAllTracks,
m_pCoreServices->getLibrary().get(),
&Library::slotSearchInAllTracks,
Qt::UniqueConnection);
connect(m_pMenuBar,
&WMainMenuBar::createCrate,
m_pCoreServices->getLibrary().get(),
Expand Down
24 changes: 20 additions & 4 deletions src/skin/legacy/legacyskinparser.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1525,6 +1525,19 @@ QWidget* LegacySkinParser::parseSearchBox(const QDomElement& node) {
commonWidgetSetup(node, pLineEditSearch, false);
pLineEditSearch->setup(node, *m_pContext);

// Translate shortcuts to native text
QString searchInCurrentViewShortcut =
localizeShortcutKeys(m_pKeyboard->getKeyboardConfig()->getValue(
ConfigKey("[KeyboardShortcuts]",
"LibraryMenu_SearchInCurrentView"),
"Ctrl+f"));
QString searchInAllTracksShortcut =
localizeShortcutKeys(m_pKeyboard->getKeyboardConfig()->getValue(
ConfigKey("[KeyboardShortcuts]",
"LibraryMenu_SearchInAllTracks"),
"Ctrl+Shift+F"));
pLineEditSearch->setupToolTip(searchInCurrentViewShortcut, searchInAllTracksShortcut);

m_pLibrary->bindSearchboxWidget(pLineEditSearch);

return pLineEditSearch;
Expand Down Expand Up @@ -2587,20 +2600,23 @@ void LegacySkinParser::addShortcutToToolTip(WBaseWidget* pWidget,

QString tooltip;

// translate shortcut to native text
QString nativeShortcut = QKeySequence(shortcut, QKeySequence::PortableText).toString(QKeySequence::NativeText);

tooltip += "\n";
tooltip += tr("Shortcut");
if (!cmd.isEmpty()) {
tooltip += " ";
tooltip += cmd;
}
tooltip += ": ";
tooltip += nativeShortcut;
tooltip += localizeShortcutKeys(shortcut);
pWidget->appendBaseTooltip(tooltip);
}

QString LegacySkinParser::localizeShortcutKeys(const QString& shortcut) {
// Translate shortcut to native text
return QKeySequence(shortcut, QKeySequence::PortableText)
.toString(QKeySequence::NativeText);
}

QString LegacySkinParser::parseLaunchImageStyle(const QDomNode& skinDoc) {
QString schemeLaunchImageStyle;
// Check if the skins has color schemes
Expand Down
1 change: 1 addition & 0 deletions src/skin/legacy/legacyskinparser.h
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,7 @@ class LegacySkinParser : public QObject, public SkinParser {
bool setupPosition=true);
void setupConnections(const QDomNode& node, WBaseWidget* pWidget);
void addShortcutToToolTip(WBaseWidget* pWidget, const QString& shortcut, const QString& cmd);
QString localizeShortcutKeys(const QString& shortcut);
QString getLibraryStyle(const QDomNode& node);

QString lookupNodeGroup(const QDomElement& node);
Expand Down
3 changes: 2 additions & 1 deletion src/widget/wlibrary.h
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,8 @@ class WLibrary : public QStackedWidget, public WBaseWidget {
}

signals:
FocusWidget setLibraryFocus(FocusWidget newFocus);
FocusWidget setLibraryFocus(FocusWidget newFocus,
Qt::FocusReason focusReason = Qt::OtherFocusReason);

public slots:
// Show the view registered with the given name. Does nothing if the current
Expand Down
3 changes: 2 additions & 1 deletion src/widget/wlibrarysidebar.h
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,8 @@ class WLibrarySidebar : public QTreeView, public WBaseWidget {
void rightClicked(const QPoint&, const QModelIndex&);
void renameItem(const QModelIndex&);
void deleteItem(const QModelIndex&);
FocusWidget setLibraryFocus(FocusWidget newFocus);
FocusWidget setLibraryFocus(FocusWidget newFocus,
Qt::FocusReason focusReason = Qt::OtherFocusReason);

protected:
bool event(QEvent* pEvent) override;
Expand Down
28 changes: 28 additions & 0 deletions src/widget/wmainmenubar.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -168,6 +168,34 @@ void WMainMenuBar::initialize() {

pLibraryMenu->addSeparator();

QString searchHereTitle = tr("Search in Current View...");
QString searchHereText = tr("Search for tracks in the current library view");
auto* pSearchHere = new QAction(searchHereTitle, this);
pSearchHere->setShortcut(QKeySequence(m_pKbdConfig->getValue(
ConfigKey("[KeyboardShortcuts]", "LibraryMenu_SearchInCurrentView"),
tr("Ctrl+f"))));
pSearchHere->setShortcutContext(Qt::ApplicationShortcut);
pSearchHere->setStatusTip(searchHereText);
pSearchHere->setWhatsThis(buildWhatsThis(searchHereTitle, searchHereText));
connect(pSearchHere, &QAction::triggered, this, &WMainMenuBar::searchInCurrentView);
pLibraryMenu->addAction(pSearchHere);

QString searchAllTitle = tr("Search in Tracks Library...");
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's use "Tracks view" so it's consistent with "Current view" and the searchbar tooltip

QString searchAllText =
tr("Search in the internal track collection under \"Tracks\" in "
"the library");
auto* pSearchAll = new QAction(searchAllTitle, this);
pSearchAll->setShortcut(QKeySequence(m_pKbdConfig->getValue(
ConfigKey("[KeyboardShortcuts]", "LibraryMenu_SearchInAllTracks"),
tr("Ctrl+Shift+F"))));
pSearchAll->setShortcutContext(Qt::ApplicationShortcut);
pSearchAll->setStatusTip(searchAllText);
pSearchAll->setWhatsThis(buildWhatsThis(searchAllText, searchAllText));
connect(pSearchAll, &QAction::triggered, this, &WMainMenuBar::searchInAllTracks);
pLibraryMenu->addAction(pSearchAll);

pLibraryMenu->addSeparator();

QString createPlaylistTitle = tr("Create &New Playlist");
QString createPlaylistText = tr("Create a new playlist");
auto* pLibraryCreatePlaylist = new QAction(createPlaylistTitle, this);
Expand Down
Loading