Issue #54: Finishing of bookmarking

This commit is contained in:
Jakub Melka
2023-12-17 18:11:49 +01:00
parent 7a5f37e38f
commit e9ca3a4a82
18 changed files with 808 additions and 56 deletions

View File

@ -134,6 +134,9 @@ PDFSidebarWidget::PDFSidebarWidget(pdf::PDFDrawWidgetProxy* proxy,
m_bookmarkItemModel = new PDFBookmarkItemModel(bookmarkManager, this);
ui->bookmarksView->setModel(m_bookmarkItemModel);
ui->bookmarksView->setItemDelegate(new PDFBookmarkItemDelegate(bookmarkManager, this));
connect(m_bookmarkManager, &PDFBookmarkManager::bookmarkActivated, this, &PDFSidebarWidget::onBookmarkActivated);
connect(ui->bookmarksView->selectionModel(), &QItemSelectionModel::currentChanged, this, &PDFSidebarWidget::onBookmarsCurrentIndexChanged);
connect(ui->bookmarksView, &QListView::clicked, this, &PDFSidebarWidget::onBookmarkClicked);
m_pageInfo[Invalid] = { nullptr, ui->emptyPage };
m_pageInfo[OptionalContent] = { ui->optionalContentButton, ui->optionalContentPage };
@ -956,6 +959,46 @@ void PDFSidebarWidget::onOutlineItemsChanged()
}
}
void PDFSidebarWidget::onBookmarkActivated(int index, PDFBookmarkManager::Bookmark bookmark)
{
if (m_bookmarkChangeInProgress)
{
return;
}
pdf::PDFTemporaryValueChange<bool> guard(&m_bookmarkChangeInProgress, true);
QModelIndex currentIndex = m_bookmarkItemModel->index(index, 0, QModelIndex());
ui->bookmarksView->selectionModel()->select(currentIndex, QItemSelectionModel::SelectCurrent);
ui->bookmarksView->setCurrentIndex(currentIndex);
}
void PDFSidebarWidget::onBookmarsCurrentIndexChanged(const QModelIndex& current, const QModelIndex& previous)
{
Q_UNUSED(previous);
if (m_bookmarkChangeInProgress)
{
return;
}
pdf::PDFTemporaryValueChange<bool> guard(&m_bookmarkChangeInProgress, true);
m_bookmarkManager->goToBookmark(current.row(), false);
}
void PDFSidebarWidget::onBookmarkClicked(const QModelIndex& index)
{
if (m_bookmarkChangeInProgress)
{
return;
}
if (index == ui->bookmarksView->currentIndex())
{
pdf::PDFTemporaryValueChange<bool> guard(&m_bookmarkChangeInProgress, true);
m_bookmarkManager->goToCurrentBookmark();
}
}
void PDFSidebarWidget::paintEvent(QPaintEvent* event)
{
Q_UNUSED(event);