yacreader/YACReaderLibrary/classic_comics_view.h
Igor Kushnir 8a54100804 Library: allow configuring a shortcut to focus comics view
Focusing the current comics view allows to use keyboard arrow keys to
choose among the visible comics.

The shortcut for this new action should not be a single character
without modifiers because it won't work when the search line has focus.

The Qt::FocusReason parameter in ComicsView::focusComicsNavigation()
allows to reuse this function for other keyboard navigation features.
For instance the search line can transfer focus to comics navigation
when the user presses Return or Enter key. In this case
Qt::OtherFocusReason can be used (an application-specific reason).
2021-03-13 15:08:33 +02:00

81 lines
2.3 KiB
C++

#ifndef CLASSIC_COMICS_VIEW_H
#define CLASSIC_COMICS_VIEW_H
#include "comics_view.h"
#include <QModelIndex>
#include <QModelIndexList>
class QSplitter;
class QStackedWidget;
class QToolBar;
class ComicFlowWidget;
class ComicModel;
class YACReaderTableView;
class YACReaderToolBarStretch;
class ClassicComicsView : public ComicsView
{
Q_OBJECT
public:
ClassicComicsView(QWidget *parent = 0);
void setToolBar(QToolBar *toolBar) override;
void setModel(ComicModel *model) override;
QModelIndex currentIndex() override;
QItemSelectionModel *selectionModel() override;
void scrollTo(const QModelIndex &mi, QAbstractItemView::ScrollHint hint) override;
void toFullScreen() override;
void toNormal() override;
void updateConfig(QSettings *settings) override;
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;
void centerComicFlow(const QModelIndex &mi);
void updateTableView(int i);
void saveTableHeadersStatus();
void saveSplitterStatus();
void applyModelChanges(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QVector<int> &roles);
void removeItemsFromFlow(const QModelIndex &parent, int from, int to);
//ComicsView
void setShowMarks(bool show) override;
void selectAll() override;
void selectedComicForOpening(const QModelIndex &mi);
protected slots:
void hideComicFlow(bool hide);
void requestedViewContextMenu(const QPoint &point);
void requestedItemContextMenu(const QPoint &point);
private:
YACReaderTableView *tableView;
YACReaderToolBarStretch *toolBarStretch;
QAction *toolBarStretchAction;
QToolBar *toolbar;
QWidget *comics;
QSplitter *sVertical;
ComicFlowWidget *comicFlow;
QSettings *settings;
void closeEvent(QCloseEvent *event) override;
QAction *hideFlowViewAction;
QStackedWidget *stack;
QByteArray previousSplitterStatus;
QWidget *searchingIcon;
bool searching;
void setupSearchingIcon();
void showSearchingIcon();
void hideSearchingIcon();
void updateSearchingIconPosition();
QMutex settingsMutex;
};
#endif // CLASSIC_COMICS_VIEW_H