Merge pull request #209 from vedgy/add-focus-shortcuts

Add focus shortcuts
This commit is contained in:
Luis Ángel San Martín 2021-03-13 17:09:46 +01:00 committed by GitHub
commit 84c43e456e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
18 changed files with 66 additions and 16 deletions

View File

@ -258,6 +258,15 @@ void ClassicComicsView::updateCurrentComicView()
{
}
void ClassicComicsView::focusComicsNavigation(Qt::FocusReason reason)
{
const bool comicFlowVisible = stack->currentWidget() == comicFlow && sVertical->sizes().constFirst() != 0;
if (comicFlowVisible)
comicFlow->setFocus(reason);
else // Let the user navigate the table.
tableView->setFocus(reason);
}
void ClassicComicsView::selectAll()
{
tableView->selectAll();

View File

@ -19,7 +19,7 @@ class ClassicComicsView : public ComicsView
{
Q_OBJECT
public:
ClassicComicsView(QWidget *parent = 0);
explicit ClassicComicsView(QWidget *parent = nullptr);
void setToolBar(QToolBar *toolBar) override;
void setModel(ComicModel *model) override;
@ -32,6 +32,7 @@ public:
void enableFilterMode(bool enabled) override;
void selectIndex(int index) override;
void updateCurrentComicView() override;
void focusComicsNavigation(Qt::FocusReason reason) override;
public slots:
void setCurrentIndex(const QModelIndex &index) override;

View File

@ -29,6 +29,7 @@ public:
virtual void enableFilterMode(bool enabled) = 0;
virtual void selectIndex(int index) = 0;
virtual void updateCurrentComicView() = 0;
virtual void focusComicsNavigation(Qt::FocusReason reason) = 0;
public slots:
virtual void updateInfoForIndex(int index);

View File

@ -20,11 +20,6 @@ ComicsViewTransition::ComicsViewTransition(QWidget *parent)
#endif
}
QSize ComicsViewTransition::sizeHint()
{
return QSize(450, 350);
}
void ComicsViewTransition::paintEvent(QPaintEvent *)
{
QPainter painter(this);

View File

@ -8,7 +8,6 @@ class ComicsViewTransition : public QWidget
Q_OBJECT
public:
explicit ComicsViewTransition(QWidget *parent = nullptr);
QSize sizeHint();
protected:
void paintEvent(QPaintEvent *) override;

View File

@ -469,11 +469,6 @@ void GridComicsView::resetScroll()
QMetaObject::invokeMethod(scrollView, "scrollToOrigin");
}
QSize GridComicsView::sizeHint()
{
return QSize(1280, 768);
}
QByteArray GridComicsView::getMimeDataFromSelection()
{
QByteArray data;
@ -491,6 +486,11 @@ void GridComicsView::updateCurrentComicView()
setCurrentComicIfNeeded();
}
void GridComicsView::focusComicsNavigation(Qt::FocusReason reason)
{
view->setFocus(reason);
}
void GridComicsView::startDrag()
{
auto drag = new QDrag(this);

View File

@ -19,8 +19,8 @@ class GridComicsView : public ComicsView
{
Q_OBJECT
public:
explicit GridComicsView(QWidget *parent = 0);
virtual ~GridComicsView();
explicit GridComicsView(QWidget *parent = nullptr);
~GridComicsView() override;
void setToolBar(QToolBar *toolBar) override;
void setModel(ComicModel *model) override;
void setCurrentIndex(const QModelIndex &index) override;
@ -31,9 +31,9 @@ public:
void toNormal() override;
void updateConfig(QSettings *settings) override;
void enableFilterMode(bool enabled) override;
QSize sizeHint();
QByteArray getMimeDataFromSelection();
void updateCurrentComicView() override;
void focusComicsNavigation(Qt::FocusReason reason) override;
public slots:
//ComicsView

View File

@ -208,6 +208,11 @@ void InfoComicsView::updateCurrentComicView()
{
}
void InfoComicsView::focusComicsNavigation(Qt::FocusReason reason)
{
view->setFocus(reason);
}
void InfoComicsView::setShowMarks(bool show)
{
QQmlContext *ctxt = view->rootContext();

View File

@ -26,9 +26,10 @@ public:
void enableFilterMode(bool enabled) override;
void selectIndex(int index) override;
void updateCurrentComicView() override;
void focusComicsNavigation(Qt::FocusReason reason) override;
public slots:
void setShowMarks(bool show);
void setShowMarks(bool show) override;
void selectAll() override;
protected slots:

View File

@ -377,6 +377,8 @@ void LibraryWindow::setUpShortcutsManagement()
tmpList = QList<QAction *>()
<< backAction
<< forwardAction
<< focusSearchLineAction
<< focusComicsViewAction
<< helpAboutAction
<< optionsAction
<< serverConfigAction
@ -719,6 +721,17 @@ void LibraryWindow::createActions()
getInfoAction->setIcon(QIcon(":/images/comics_view_toolbar/getInfo.png"));
//-------------------------------------------------------------------------
focusSearchLineAction = new QAction(tr("Focus search line"), this);
focusSearchLineAction->setData(FOCUS_SEARCH_LINE_ACTION_YL);
focusSearchLineAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(FOCUS_SEARCH_LINE_ACTION_YL));
focusSearchLineAction->setIcon(QIcon(":/images/iconSearch.png"));
addAction(focusSearchLineAction);
focusComicsViewAction = new QAction(tr("Focus comics view"), this);
focusComicsViewAction->setData(FOCUS_COMICS_VIEW_ACTION_YL);
focusComicsViewAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(FOCUS_COMICS_VIEW_ACTION_YL));
addAction(focusComicsViewAction);
showEditShortcutsAction = new QAction(tr("Edit shortcuts"), this);
showEditShortcutsAction->setData(SHOW_EDIT_SHORTCUTS_ACTION_YL);
showEditShortcutsAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(SHOW_EDIT_SHORTCUTS_ACTION_YL));
@ -1147,6 +1160,9 @@ void LibraryWindow::createConnections()
//connect(comicsModel,SIGNAL(searchNumResults(int)),this,SLOT(checkSearchNumResults(int)));
//connect(emptyFolderWidget,SIGNAL(subfolderSelected(QModelIndex,int)),this,SLOT(selectSubfolder(QModelIndex,int)));
connect(focusSearchLineAction, &QAction::triggered, searchEdit, [this] { searchEdit->setFocus(Qt::ShortcutFocusReason); });
connect(focusComicsViewAction, &QAction::triggered, comicsViewsManager, &YACReaderComicsViewsManager::focusComicsViewViaShortcut);
connect(showEditShortcutsAction, SIGNAL(triggered()), editShortcutsDialog, SLOT(show()));
//update folders (partial updates)

View File

@ -213,6 +213,9 @@ public:
QAction *forceCoverExtractedAction;
QAction *deleteComicsAction;
QAction *focusSearchLineAction;
QAction *focusComicsViewAction;
QAction *showEditShortcutsAction;
QAction *updateFolderAction;

View File

@ -122,6 +122,9 @@ public:
PropertiesDialog(QWidget *parent = nullptr);
QString databasePath;
QString basePath;
// TODO: this non-const member function hides rather than overrides
// QWidget::sizeHint(). But the function cannot be simply removed as it is used
// in our constructor. Will have to investigate and decide how to fix this.
QSize sizeHint();
void paintEvent(QPaintEvent *event) override;

View File

@ -121,6 +121,11 @@ void YACReaderComicsViewsManager::toggleComicsView()
}
}
void YACReaderComicsViewsManager::focusComicsViewViaShortcut()
{
comicsView->focusComicsNavigation(Qt::ShortcutFocusReason);
}
//PROTECTED
void YACReaderComicsViewsManager::disconnectComicsViewConnections(ComicsView *widget)

View File

@ -55,6 +55,7 @@ signals:
public slots:
void toggleComicsView();
void focusComicsViewViaShortcut();
void showComicsView();
void showEmptyFolderView();

View File

@ -12,6 +12,7 @@ class YACReaderMacOSXSearchLineEdit : public QObject
Q_OBJECT
public:
YACReaderMacOSXSearchLineEdit();
void setFocus(Qt::FocusReason reason);
void *getNSTextField();
public slots:

View File

@ -316,6 +316,13 @@ YACReaderMacOSXSearchLineEdit::YACReaderMacOSXSearchLineEdit()
nstextfield = searchEdit;
}
void YACReaderMacOSXSearchLineEdit::setFocus(Qt::FocusReason reason)
{
Q_UNUSED(reason)
[((NSTextField *)nstextfield) becomeFirstResponder];
}
void *YACReaderMacOSXSearchLineEdit::getNSTextField()
{
return nstextfield;

View File

@ -13,6 +13,7 @@ void ShortcutsManager::initDefaultShorcuts()
{
#ifdef YACREADER_LIBRARY
//ACTIONS
defaultShorcuts.insert(FOCUS_SEARCH_LINE_ACTION_YL, Qt::CTRL | Qt::Key_F);
defaultShorcuts.insert(CREATE_LIBRARY_ACTION_YL, Qt::Key_A);
defaultShorcuts.insert(OPEN_LIBRARY_ACTION_YL, Qt::Key_O);
defaultShorcuts.insert(UPDATE_LIBRARY_ACTION_YL, Qt::Key_U);

View File

@ -75,6 +75,8 @@ public:
#define DELETE_COMICS_ACTION_YL "DELETE_COMICS_ACTION_YL"
#define HIDE_COMIC_VIEW_ACTION_YL "HIDE_COMIC_VIEW_ACTION_YL"
#define GET_INFO_ACTION_YL "GET_INFO_ACTION_YL"
#define FOCUS_SEARCH_LINE_ACTION_YL "FOCUS_SEARCH_LINE_ACTION_YL"
#define FOCUS_COMICS_VIEW_ACTION_YL "FOCUS_COMICS_VIEW_ACTION_YL"
#define SHOW_EDIT_SHORTCUTS_ACTION_YL "SHOW_EDIT_SHORTCUTS_ACTION_YL"
#define UPDATE_CURRENT_FOLDER_ACTION_YL "UPDATE_CURRENT_FOLDER_ACTION_YL"
#define ADD_FOLDER_ACTION_YL "ADD_FOLDER_ACTION_YL"