diff --git a/imageviewwidget.cpp b/imageviewwidget.cpp index 2ff637b..98b3538 100644 --- a/imageviewwidget.cpp +++ b/imageviewwidget.cpp @@ -46,5 +46,19 @@ void ImageViewWidget::keyPressEvent(QKeyEvent *event) return; } + if (event->key() == Qt::Key_PageDown) + { + emit nextRequested(); + event->accept(); + return; + } + + if (event->key() == Qt::Key_PageUp) + { + emit previousRequested(); + event->accept(); + return; + } + QWidget::keyPressEvent(event); } diff --git a/imageviewwidget.h b/imageviewwidget.h index f10cd29..c6f5d3c 100644 --- a/imageviewwidget.h +++ b/imageviewwidget.h @@ -16,6 +16,8 @@ public: signals: void closeRequested(); + void nextRequested(); + void previousRequested(); protected: void paintEvent(QPaintEvent *event) override; diff --git a/mainwindow.cpp b/mainwindow.cpp index 504f0b0..1f33e27 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -107,6 +107,28 @@ void MainWindow::setupConnections() connect(m_imageView, &ImageViewWidget::closeRequested, this, &MainWindow::leaveSingleImageMode); + connect(m_imageView, &ImageViewWidget::nextRequested, this, [this]() { + QModelIndex cur = m_listView->currentIndex(); + int next = cur.isValid() ? cur.row() + 1 : 0; + if (next < m_imageModel->rowCount()) + { + QModelIndex idx = m_imageModel->index(next); + m_listView->setCurrentIndex(idx); + enterSingleImageMode(idx); + } + }); + + connect(m_imageView, &ImageViewWidget::previousRequested, this, [this]() { + QModelIndex cur = m_listView->currentIndex(); + int prev = cur.isValid() ? cur.row() - 1 : 0; + if (prev >= 0) + { + QModelIndex idx = m_imageModel->index(prev); + m_listView->setCurrentIndex(idx); + enterSingleImageMode(idx); + } + }); + connect(m_listView->verticalScrollBar(), &QScrollBar::valueChanged, this, [this]() { loadVisibleThumbnails(); });