mirror of
https://github.com/YACReader/yacreader
synced 2025-05-28 03:10:27 -04:00
Merge pull request #209 from vedgy/add-focus-shortcuts
Add focus shortcuts
This commit is contained in:
commit
84c43e456e
@ -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()
|
void ClassicComicsView::selectAll()
|
||||||
{
|
{
|
||||||
tableView->selectAll();
|
tableView->selectAll();
|
||||||
|
@ -19,7 +19,7 @@ class ClassicComicsView : public ComicsView
|
|||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
ClassicComicsView(QWidget *parent = 0);
|
explicit ClassicComicsView(QWidget *parent = nullptr);
|
||||||
void setToolBar(QToolBar *toolBar) override;
|
void setToolBar(QToolBar *toolBar) override;
|
||||||
void setModel(ComicModel *model) override;
|
void setModel(ComicModel *model) override;
|
||||||
|
|
||||||
@ -32,6 +32,7 @@ public:
|
|||||||
void enableFilterMode(bool enabled) override;
|
void enableFilterMode(bool enabled) override;
|
||||||
void selectIndex(int index) override;
|
void selectIndex(int index) override;
|
||||||
void updateCurrentComicView() override;
|
void updateCurrentComicView() override;
|
||||||
|
void focusComicsNavigation(Qt::FocusReason reason) override;
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void setCurrentIndex(const QModelIndex &index) override;
|
void setCurrentIndex(const QModelIndex &index) override;
|
||||||
|
@ -29,6 +29,7 @@ public:
|
|||||||
virtual void enableFilterMode(bool enabled) = 0;
|
virtual void enableFilterMode(bool enabled) = 0;
|
||||||
virtual void selectIndex(int index) = 0;
|
virtual void selectIndex(int index) = 0;
|
||||||
virtual void updateCurrentComicView() = 0;
|
virtual void updateCurrentComicView() = 0;
|
||||||
|
virtual void focusComicsNavigation(Qt::FocusReason reason) = 0;
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
virtual void updateInfoForIndex(int index);
|
virtual void updateInfoForIndex(int index);
|
||||||
|
@ -20,11 +20,6 @@ ComicsViewTransition::ComicsViewTransition(QWidget *parent)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
QSize ComicsViewTransition::sizeHint()
|
|
||||||
{
|
|
||||||
return QSize(450, 350);
|
|
||||||
}
|
|
||||||
|
|
||||||
void ComicsViewTransition::paintEvent(QPaintEvent *)
|
void ComicsViewTransition::paintEvent(QPaintEvent *)
|
||||||
{
|
{
|
||||||
QPainter painter(this);
|
QPainter painter(this);
|
||||||
|
@ -8,7 +8,6 @@ class ComicsViewTransition : public QWidget
|
|||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
explicit ComicsViewTransition(QWidget *parent = nullptr);
|
explicit ComicsViewTransition(QWidget *parent = nullptr);
|
||||||
QSize sizeHint();
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void paintEvent(QPaintEvent *) override;
|
void paintEvent(QPaintEvent *) override;
|
||||||
|
@ -469,11 +469,6 @@ void GridComicsView::resetScroll()
|
|||||||
QMetaObject::invokeMethod(scrollView, "scrollToOrigin");
|
QMetaObject::invokeMethod(scrollView, "scrollToOrigin");
|
||||||
}
|
}
|
||||||
|
|
||||||
QSize GridComicsView::sizeHint()
|
|
||||||
{
|
|
||||||
return QSize(1280, 768);
|
|
||||||
}
|
|
||||||
|
|
||||||
QByteArray GridComicsView::getMimeDataFromSelection()
|
QByteArray GridComicsView::getMimeDataFromSelection()
|
||||||
{
|
{
|
||||||
QByteArray data;
|
QByteArray data;
|
||||||
@ -491,6 +486,11 @@ void GridComicsView::updateCurrentComicView()
|
|||||||
setCurrentComicIfNeeded();
|
setCurrentComicIfNeeded();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GridComicsView::focusComicsNavigation(Qt::FocusReason reason)
|
||||||
|
{
|
||||||
|
view->setFocus(reason);
|
||||||
|
}
|
||||||
|
|
||||||
void GridComicsView::startDrag()
|
void GridComicsView::startDrag()
|
||||||
{
|
{
|
||||||
auto drag = new QDrag(this);
|
auto drag = new QDrag(this);
|
||||||
|
@ -19,8 +19,8 @@ class GridComicsView : public ComicsView
|
|||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
explicit GridComicsView(QWidget *parent = 0);
|
explicit GridComicsView(QWidget *parent = nullptr);
|
||||||
virtual ~GridComicsView();
|
~GridComicsView() override;
|
||||||
void setToolBar(QToolBar *toolBar) override;
|
void setToolBar(QToolBar *toolBar) override;
|
||||||
void setModel(ComicModel *model) override;
|
void setModel(ComicModel *model) override;
|
||||||
void setCurrentIndex(const QModelIndex &index) override;
|
void setCurrentIndex(const QModelIndex &index) override;
|
||||||
@ -31,9 +31,9 @@ public:
|
|||||||
void toNormal() override;
|
void toNormal() override;
|
||||||
void updateConfig(QSettings *settings) override;
|
void updateConfig(QSettings *settings) override;
|
||||||
void enableFilterMode(bool enabled) override;
|
void enableFilterMode(bool enabled) override;
|
||||||
QSize sizeHint();
|
|
||||||
QByteArray getMimeDataFromSelection();
|
QByteArray getMimeDataFromSelection();
|
||||||
void updateCurrentComicView() override;
|
void updateCurrentComicView() override;
|
||||||
|
void focusComicsNavigation(Qt::FocusReason reason) override;
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
//ComicsView
|
//ComicsView
|
||||||
|
@ -208,6 +208,11 @@ void InfoComicsView::updateCurrentComicView()
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void InfoComicsView::focusComicsNavigation(Qt::FocusReason reason)
|
||||||
|
{
|
||||||
|
view->setFocus(reason);
|
||||||
|
}
|
||||||
|
|
||||||
void InfoComicsView::setShowMarks(bool show)
|
void InfoComicsView::setShowMarks(bool show)
|
||||||
{
|
{
|
||||||
QQmlContext *ctxt = view->rootContext();
|
QQmlContext *ctxt = view->rootContext();
|
||||||
|
@ -26,9 +26,10 @@ public:
|
|||||||
void enableFilterMode(bool enabled) override;
|
void enableFilterMode(bool enabled) override;
|
||||||
void selectIndex(int index) override;
|
void selectIndex(int index) override;
|
||||||
void updateCurrentComicView() override;
|
void updateCurrentComicView() override;
|
||||||
|
void focusComicsNavigation(Qt::FocusReason reason) override;
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void setShowMarks(bool show);
|
void setShowMarks(bool show) override;
|
||||||
void selectAll() override;
|
void selectAll() override;
|
||||||
|
|
||||||
protected slots:
|
protected slots:
|
||||||
|
@ -377,6 +377,8 @@ void LibraryWindow::setUpShortcutsManagement()
|
|||||||
tmpList = QList<QAction *>()
|
tmpList = QList<QAction *>()
|
||||||
<< backAction
|
<< backAction
|
||||||
<< forwardAction
|
<< forwardAction
|
||||||
|
<< focusSearchLineAction
|
||||||
|
<< focusComicsViewAction
|
||||||
<< helpAboutAction
|
<< helpAboutAction
|
||||||
<< optionsAction
|
<< optionsAction
|
||||||
<< serverConfigAction
|
<< serverConfigAction
|
||||||
@ -719,6 +721,17 @@ void LibraryWindow::createActions()
|
|||||||
getInfoAction->setIcon(QIcon(":/images/comics_view_toolbar/getInfo.png"));
|
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 = new QAction(tr("Edit shortcuts"), this);
|
||||||
showEditShortcutsAction->setData(SHOW_EDIT_SHORTCUTS_ACTION_YL);
|
showEditShortcutsAction->setData(SHOW_EDIT_SHORTCUTS_ACTION_YL);
|
||||||
showEditShortcutsAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(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(comicsModel,SIGNAL(searchNumResults(int)),this,SLOT(checkSearchNumResults(int)));
|
||||||
//connect(emptyFolderWidget,SIGNAL(subfolderSelected(QModelIndex,int)),this,SLOT(selectSubfolder(QModelIndex,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()));
|
connect(showEditShortcutsAction, SIGNAL(triggered()), editShortcutsDialog, SLOT(show()));
|
||||||
|
|
||||||
//update folders (partial updates)
|
//update folders (partial updates)
|
||||||
|
@ -213,6 +213,9 @@ public:
|
|||||||
QAction *forceCoverExtractedAction;
|
QAction *forceCoverExtractedAction;
|
||||||
QAction *deleteComicsAction;
|
QAction *deleteComicsAction;
|
||||||
|
|
||||||
|
QAction *focusSearchLineAction;
|
||||||
|
QAction *focusComicsViewAction;
|
||||||
|
|
||||||
QAction *showEditShortcutsAction;
|
QAction *showEditShortcutsAction;
|
||||||
|
|
||||||
QAction *updateFolderAction;
|
QAction *updateFolderAction;
|
||||||
|
@ -122,6 +122,9 @@ public:
|
|||||||
PropertiesDialog(QWidget *parent = nullptr);
|
PropertiesDialog(QWidget *parent = nullptr);
|
||||||
QString databasePath;
|
QString databasePath;
|
||||||
QString basePath;
|
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();
|
QSize sizeHint();
|
||||||
void paintEvent(QPaintEvent *event) override;
|
void paintEvent(QPaintEvent *event) override;
|
||||||
|
|
||||||
|
@ -121,6 +121,11 @@ void YACReaderComicsViewsManager::toggleComicsView()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void YACReaderComicsViewsManager::focusComicsViewViaShortcut()
|
||||||
|
{
|
||||||
|
comicsView->focusComicsNavigation(Qt::ShortcutFocusReason);
|
||||||
|
}
|
||||||
|
|
||||||
//PROTECTED
|
//PROTECTED
|
||||||
|
|
||||||
void YACReaderComicsViewsManager::disconnectComicsViewConnections(ComicsView *widget)
|
void YACReaderComicsViewsManager::disconnectComicsViewConnections(ComicsView *widget)
|
||||||
|
@ -55,6 +55,7 @@ signals:
|
|||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void toggleComicsView();
|
void toggleComicsView();
|
||||||
|
void focusComicsViewViaShortcut();
|
||||||
|
|
||||||
void showComicsView();
|
void showComicsView();
|
||||||
void showEmptyFolderView();
|
void showEmptyFolderView();
|
||||||
|
@ -12,6 +12,7 @@ class YACReaderMacOSXSearchLineEdit : public QObject
|
|||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
YACReaderMacOSXSearchLineEdit();
|
YACReaderMacOSXSearchLineEdit();
|
||||||
|
void setFocus(Qt::FocusReason reason);
|
||||||
void *getNSTextField();
|
void *getNSTextField();
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
|
@ -316,6 +316,13 @@ YACReaderMacOSXSearchLineEdit::YACReaderMacOSXSearchLineEdit()
|
|||||||
nstextfield = searchEdit;
|
nstextfield = searchEdit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void YACReaderMacOSXSearchLineEdit::setFocus(Qt::FocusReason reason)
|
||||||
|
{
|
||||||
|
Q_UNUSED(reason)
|
||||||
|
|
||||||
|
[((NSTextField *)nstextfield) becomeFirstResponder];
|
||||||
|
}
|
||||||
|
|
||||||
void *YACReaderMacOSXSearchLineEdit::getNSTextField()
|
void *YACReaderMacOSXSearchLineEdit::getNSTextField()
|
||||||
{
|
{
|
||||||
return nstextfield;
|
return nstextfield;
|
||||||
|
@ -13,6 +13,7 @@ void ShortcutsManager::initDefaultShorcuts()
|
|||||||
{
|
{
|
||||||
#ifdef YACREADER_LIBRARY
|
#ifdef YACREADER_LIBRARY
|
||||||
//ACTIONS
|
//ACTIONS
|
||||||
|
defaultShorcuts.insert(FOCUS_SEARCH_LINE_ACTION_YL, Qt::CTRL | Qt::Key_F);
|
||||||
defaultShorcuts.insert(CREATE_LIBRARY_ACTION_YL, Qt::Key_A);
|
defaultShorcuts.insert(CREATE_LIBRARY_ACTION_YL, Qt::Key_A);
|
||||||
defaultShorcuts.insert(OPEN_LIBRARY_ACTION_YL, Qt::Key_O);
|
defaultShorcuts.insert(OPEN_LIBRARY_ACTION_YL, Qt::Key_O);
|
||||||
defaultShorcuts.insert(UPDATE_LIBRARY_ACTION_YL, Qt::Key_U);
|
defaultShorcuts.insert(UPDATE_LIBRARY_ACTION_YL, Qt::Key_U);
|
||||||
|
@ -75,6 +75,8 @@ public:
|
|||||||
#define DELETE_COMICS_ACTION_YL "DELETE_COMICS_ACTION_YL"
|
#define DELETE_COMICS_ACTION_YL "DELETE_COMICS_ACTION_YL"
|
||||||
#define HIDE_COMIC_VIEW_ACTION_YL "HIDE_COMIC_VIEW_ACTION_YL"
|
#define HIDE_COMIC_VIEW_ACTION_YL "HIDE_COMIC_VIEW_ACTION_YL"
|
||||||
#define GET_INFO_ACTION_YL "GET_INFO_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 SHOW_EDIT_SHORTCUTS_ACTION_YL "SHOW_EDIT_SHORTCUTS_ACTION_YL"
|
||||||
#define UPDATE_CURRENT_FOLDER_ACTION_YL "UPDATE_CURRENT_FOLDER_ACTION_YL"
|
#define UPDATE_CURRENT_FOLDER_ACTION_YL "UPDATE_CURRENT_FOLDER_ACTION_YL"
|
||||||
#define ADD_FOLDER_ACTION_YL "ADD_FOLDER_ACTION_YL"
|
#define ADD_FOLDER_ACTION_YL "ADD_FOLDER_ACTION_YL"
|
||||||
|
Loading…
Reference in New Issue
Block a user