Add keyboard shortcut for focusing search fields

Fixes #779
This commit is contained in:
Jonas Kvinge
2021-09-27 21:42:30 +02:00
parent 3292db8b77
commit 8d2615547d
15 changed files with 128 additions and 8 deletions

View File

@@ -35,12 +35,12 @@ InternetCollectionViewContainer::InternetCollectionViewContainer(QWidget *parent
ui_(new Ui_InternetCollectionViewContainer) {
ui_->setupUi(this);
view()->SetFilter(filter_widget());
ui_->view->SetFilter(ui_->filter_widget);
QObject::connect(filter_widget(), &CollectionFilterWidget::UpPressed, view(), &InternetCollectionView::UpAndFocus);
QObject::connect(filter_widget(), &CollectionFilterWidget::DownPressed, view(), &InternetCollectionView::DownAndFocus);
QObject::connect(filter_widget(), &CollectionFilterWidget::ReturnPressed, view(), &InternetCollectionView::FilterReturnPressed);
QObject::connect(view(), &InternetCollectionView::FocusOnFilterSignal, filter_widget(), &CollectionFilterWidget::FocusOnFilter);
QObject::connect(ui_->filter_widget, &CollectionFilterWidget::UpPressed, ui_->view, &InternetCollectionView::UpAndFocus);
QObject::connect(ui_->filter_widget, &CollectionFilterWidget::DownPressed, ui_->view, &InternetCollectionView::DownAndFocus);
QObject::connect(ui_->filter_widget, &CollectionFilterWidget::ReturnPressed, ui_->view, &InternetCollectionView::FilterReturnPressed);
QObject::connect(ui_->view, &InternetCollectionView::FocusOnFilterSignal, ui_->filter_widget, &CollectionFilterWidget::FocusOnFilter);
ui_->progressbar->hide();
@@ -51,8 +51,18 @@ InternetCollectionViewContainer::InternetCollectionViewContainer(QWidget *parent
InternetCollectionViewContainer::~InternetCollectionViewContainer() { delete ui_; }
void InternetCollectionViewContainer::ReloadSettings() const {
filter_widget()->ReloadSettings();
view()->ReloadSettings();
ui_->filter_widget->ReloadSettings();
ui_->view->ReloadSettings();
}
bool InternetCollectionViewContainer::SearchFieldHasFocus() const {
return ui_->filter_widget->SearchFieldHasFocus();
}
void InternetCollectionViewContainer::FocusSearchField() {
ui_->filter_widget->FocusSearchField();
}
void InternetCollectionViewContainer::contextMenuEvent(QContextMenuEvent *e) { Q_UNUSED(e); }

View File

@@ -44,6 +44,8 @@ class InternetCollectionViewContainer : public QWidget {
~InternetCollectionViewContainer() override;
void ReloadSettings() const;
bool SearchFieldHasFocus() const;
void FocusSearchField();
QStackedWidget *stacked() const { return ui_->stacked; }
QWidget *help_page() const { return ui_->help_page; }

View File

@@ -658,6 +658,12 @@ void InternetSearchView::SearchForThis() {
StartSearch(ui_->results->selectionModel()->selectedRows().first().data().toString());
}
bool InternetSearchView::SearchFieldHasFocus() const {
return ui_->search->hasFocus();
}
void InternetSearchView::FocusSearchField() {
ui_->search->setFocus();

View File

@@ -85,6 +85,9 @@ class InternetSearchView : public QWidget {
void Init(Application *app, InternetService *service);
bool SearchFieldHasFocus() const;
void FocusSearchField();
void LazyLoadAlbumCover(const QModelIndex &proxy_index);
protected:
@@ -121,7 +124,6 @@ class InternetSearchView : public QWidget {
bool SearchKeyEvent(QKeyEvent *e);
bool ResultsContextMenuEvent(QContextMenuEvent *e);
void FocusSearchField();
MimeData *SelectedMimeData();

View File

@@ -48,6 +48,9 @@ class InternetSongsView : public QWidget {
InternetCollectionView *view() const { return ui_->view; }
bool SearchFieldHasFocus() const { return ui_->filter_widget->SearchFieldHasFocus(); }
void FocusSearchField() { ui_->filter_widget->FocusSearchField(); }
private slots:
void OpenSettingsDialog();
void GetSongs();

View File

@@ -206,6 +206,32 @@ void InternetTabsView::ReloadSettings() {
}
bool InternetTabsView::SearchFieldHasFocus() const {
return ((ui_->tabs->currentWidget() == ui_->artists && ui_->artists_collection->SearchFieldHasFocus()) ||
(ui_->tabs->currentWidget() == ui_->albums && ui_->albums_collection->SearchFieldHasFocus()) ||
(ui_->tabs->currentWidget() == ui_->songs && ui_->songs_collection->SearchFieldHasFocus()) ||
(ui_->tabs->currentWidget() == ui_->search && ui_->search_view->SearchFieldHasFocus()));
}
void InternetTabsView::FocusSearchField() {
if (ui_->tabs->currentWidget() == ui_->artists) {
ui_->artists_collection->FocusSearchField();
}
else if (ui_->tabs->currentWidget() == ui_->albums) {
ui_->albums_collection->FocusSearchField();
}
else if (ui_->tabs->currentWidget() == ui_->songs) {
ui_->songs_collection->FocusSearchField();
}
else if (ui_->tabs->currentWidget() == ui_->search) {
ui_->search_view->FocusSearchField();
}
}
void InternetTabsView::GetArtists() {
if (!service_->authenticated() && service_->oauth()) {

View File

@@ -53,6 +53,9 @@ class InternetTabsView : public QWidget {
InternetCollectionView *songs_collection_view() const { return ui_->songs_collection->view(); }
InternetSearchView *search_view() const { return ui_->search_view; }
bool SearchFieldHasFocus() const;
void FocusSearchField();
private slots:
void OpenSettingsDialog();
void GetArtists();