restable Ctrl+i shortcuts to jump from results to row i

This commit is contained in:
Jean-Francois Dockes 2021-01-22 09:46:01 +01:00
parent c19229a59f
commit 84815d4aa6
2 changed files with 58 additions and 17 deletions

View File

@ -594,6 +594,17 @@ void ResTable::init()
connect(&SCBase::scBase(), SIGNAL(shortcutsChanged()), connect(&SCBase::scBase(), SIGNAL(shortcutsChanged()),
this, SLOT(onNewShortcuts())); this, SLOT(onNewShortcuts()));
new QShortcut(QKeySequence("Ctrl+0"), this, SLOT(setCurrentRow0()));
new QShortcut(QKeySequence("Ctrl+1"), this, SLOT(setCurrentRow1()));
new QShortcut(QKeySequence("Ctrl+2"), this, SLOT(setCurrentRow2()));
new QShortcut(QKeySequence("Ctrl+3"), this, SLOT(setCurrentRow3()));
new QShortcut(QKeySequence("Ctrl+4"), this, SLOT(setCurrentRow4()));
new QShortcut(QKeySequence("Ctrl+5"), this, SLOT(setCurrentRow5()));
new QShortcut(QKeySequence("Ctrl+6"), this, SLOT(setCurrentRow6()));
new QShortcut(QKeySequence("Ctrl+7"), this, SLOT(setCurrentRow7()));
new QShortcut(QKeySequence("Ctrl+8"), this, SLOT(setCurrentRow8()));
new QShortcut(QKeySequence("Ctrl+9"), this, SLOT(setCurrentRow9()));
connect(tableView, SIGNAL(customContextMenuRequested(const QPoint&)), connect(tableView, SIGNAL(customContextMenuRequested(const QPoint&)),
this, SLOT(createPopupMenu(const QPoint&))); this, SLOT(createPopupMenu(const QPoint&)));
@ -727,6 +738,25 @@ void ResTable::onUiPrefsChanged()
} }
} }
#define SETCURRENTROW(INDEX) \
void ResTable::setCurrentRow##INDEX() \
{ \
tableView->setFocus(Qt::ShortcutFocusReason); \
tableView->selectionModel()->setCurrentIndex( \
m_model->index(INDEX, 0), \
QItemSelectionModel::ClearAndSelect|QItemSelectionModel::Rows); \
}
SETCURRENTROW(0)
SETCURRENTROW(1)
SETCURRENTROW(2)
SETCURRENTROW(3)
SETCURRENTROW(4)
SETCURRENTROW(5)
SETCURRENTROW(6)
SETCURRENTROW(7)
SETCURRENTROW(8)
SETCURRENTROW(9)
int ResTable::getDetailDocNumOrTopRow() int ResTable::getDetailDocNumOrTopRow()
{ {
if (m_detaildocnum >= 0) if (m_detaildocnum >= 0)

View File

@ -32,11 +32,12 @@
class ResTable; class ResTable;
typedef std::string (FieldGetter)(const std::string& fldname, const Rcl::Doc& doc); typedef std::string (FieldGetter)(
const std::string& fldname, const Rcl::Doc& doc);
class RecollModel : public QAbstractTableModel { class RecollModel : public QAbstractTableModel {
Q_OBJECT Q_OBJECT;
public: public:
RecollModel(const QStringList fields, ResTable *tb, QObject *parent = 0); RecollModel(const QStringList fields, ResTable *tb, QObject *parent = 0);
@ -45,9 +46,9 @@ public:
virtual int rowCount (const QModelIndex& = QModelIndex()) const; virtual int rowCount (const QModelIndex& = QModelIndex()) const;
virtual int columnCount(const QModelIndex& = QModelIndex()) const; virtual int columnCount(const QModelIndex& = QModelIndex()) const;
virtual QVariant headerData (int col, Qt::Orientation orientation, virtual QVariant headerData (int col, Qt::Orientation orientation,
int role = Qt::DisplayRole ) const; int role = Qt::DisplayRole ) const;
virtual QVariant data(const QModelIndex& index, virtual QVariant data(const QModelIndex& index,
int role = Qt::DisplayRole ) const; int role = Qt::DisplayRole ) const;
virtual void saveAsCSV(std::fstream& fp); virtual void saveAsCSV(std::fstream& fp);
virtual void sort(int column, Qt::SortOrder order = Qt::AscendingOrder); virtual void sort(int column, Qt::SortOrder order = Qt::AscendingOrder);
// Specific methods // Specific methods
@ -95,10 +96,10 @@ class ResTable;
class ResTableDetailArea : public QTextBrowser { class ResTableDetailArea : public QTextBrowser {
Q_OBJECT; Q_OBJECT;
public: public:
ResTableDetailArea(ResTable* parent = 0); ResTableDetailArea(ResTable* parent = 0);
public slots: public slots:
virtual void createPopupMenu(const QPoint& pos); virtual void createPopupMenu(const QPoint& pos);
virtual void setFont(); virtual void setFont();
virtual void init(); virtual void init();
@ -115,17 +116,14 @@ class QShortcut;
class ResTable : public QWidget, public Ui::ResTable class ResTable : public QWidget, public Ui::ResTable
{ {
Q_OBJECT Q_OBJECT;
public: public:
ResTable(QWidget* parent = 0) ResTable(QWidget* parent = 0)
: QWidget(parent), : QWidget(parent) {
m_model(0), m_pager(0), m_detail(0), m_detaildocnum(-1), setupUi(this);
m_rclmain(0), m_ismainres(true) init();
{ }
setupUi(this);
init();
}
virtual ~ResTable() {} virtual ~ResTable() {}
virtual RecollModel *getModel() {return m_model;} virtual RecollModel *getModel() {return m_model;}
@ -169,6 +167,16 @@ public slots:
virtual void takeFocus(); virtual void takeFocus();
virtual void onUiPrefsChanged(); virtual void onUiPrefsChanged();
virtual void onNewShortcuts(); virtual void onNewShortcuts();
virtual void setCurrentRow0();
virtual void setCurrentRow1();
virtual void setCurrentRow2();
virtual void setCurrentRow3();
virtual void setCurrentRow4();
virtual void setCurrentRow5();
virtual void setCurrentRow6();
virtual void setCurrentRow7();
virtual void setCurrentRow8();
virtual void setCurrentRow9();
signals: signals:
void docPreviewClicked(int, Rcl::Doc, int); void docPreviewClicked(int, Rcl::Doc, int);
@ -184,18 +192,21 @@ signals:
friend class ResTablePager; friend class ResTablePager;
friend class ResTableDetailArea; friend class ResTableDetailArea;
protected: protected:
bool eventFilter(QObject* obj, QEvent* event); bool eventFilter(QObject* obj, QEvent* event);
private: private:
void init(); void init();
RecollModel *m_model{nullptr}; RecollModel *m_model{nullptr};
ResTablePager *m_pager{nullptr}; ResTablePager *m_pager{nullptr};
ResTableDetailArea *m_detail{nullptr}; ResTableDetailArea *m_detail{nullptr};
int m_detaildocnum; int m_detaildocnum{-1};
Rcl::Doc m_detaildoc; Rcl::Doc m_detaildoc;
int m_popcolumn; int m_popcolumn{0};
RclMain *m_rclmain{nullptr}; RclMain *m_rclmain{nullptr};
bool m_ismainres; bool m_ismainres{true};
QShortcut *m_opensc{nullptr}; QShortcut *m_opensc{nullptr};
QShortcut *m_openquitsc{nullptr}; QShortcut *m_openquitsc{nullptr};
QShortcut *m_previewsc{nullptr}; QShortcut *m_previewsc{nullptr};