From babdd53be8b304e2c4a8786774fea7186e8d979f Mon Sep 17 00:00:00 2001 From: Chris Xiong Date: Thu, 22 Sep 2022 23:45:09 -0400 Subject: Add single image view. --- qdeduper/mingui.cpp | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) (limited to 'qdeduper/mingui.cpp') diff --git a/qdeduper/mingui.cpp b/qdeduper/mingui.cpp index f93fda3..29cf416 100644 --- a/qdeduper/mingui.cpp +++ b/qdeduper/mingui.cpp @@ -16,6 +16,7 @@ #include #include #include +#include #include #include #include @@ -95,6 +96,7 @@ DeduperMainWindow::DeduperMainWindow() id = new ImageItemDelegate(); id->setScrollbarMargins(lv->verticalScrollBar()->width(), lv->horizontalScrollBar()->height()); + id->set_model(im); lv->setItemDelegate(id); lv->setSelectionMode(QAbstractItemView::SelectionMode::NoSelection); lv->setResizeMode(QListView::ResizeMode::Adjust); @@ -131,7 +133,21 @@ DeduperMainWindow::DeduperMainWindow() QAction *sa = new QAction(); sa->setShortcut(QKeySequence(Qt::Modifier::SHIFT | k)); QObject::connect(sa, &QAction::triggered, std::bind(&DeduperMainWindow::mark_all_but, this, i)); - selhk.push_back(a); + selhk.push_back(sa); + QAction *ca = new QAction(); + ca->setShortcut(QKeySequence(Qt::Modifier::CTRL | k)); + QObject::connect(ca, &QAction::triggered, [this, i] { + if (i >= im->rowCount()) return; + if (id->is_single_item_mode()) + id->set_single_item_mode(false); + else + { + id->set_single_item_mode(true); + QTimer::singleShot(5, [this, i] { + lv->scrollTo(im->index(i, 0), QAbstractItemView::ScrollHint::PositionAtTop);}); + } + }); + selhk.push_back(ca); } this->addActions(selhk); @@ -656,11 +672,8 @@ bool DeduperMainWindow::eventFilter(QObject *obj, QEvent *e) { if (e->type() == QEvent::Type::Resize) { - if (im && id && obj == lv) - for (int i = 0; i < im->rowCount(); ++i) - { - id->resize(im->indexFromItem(im->item(i))); - } + if (id && obj == lv) + id->resize(); return false; } return false; -- cgit v1.2.3