[Spreadsheet] Enable zoom in Spreadsheet (#16130)

* [Spreadsheet] Enable zoom in Spreadsheet

Closes #6094. This commit also fixes page tab order of Spreadsheet
settings in Preferences.

* Spreadsheet: apply clang-format

---------

Co-authored-by: Chris Hennes <chennes@pioneerlibrarysystem.org>
This commit is contained in:
xtemp09
2024-12-13 23:52:51 +07:00
committed by GitHub
parent 791ddcbc34
commit 64b4382462
9 changed files with 576 additions and 62 deletions

View File

@@ -119,7 +119,7 @@ SheetTableView::SheetTableView(QWidget* parent)
setHorizontalScrollMode(QAbstractItemView::ScrollPerPixel);
connect(verticalHeader(), &QWidget::customContextMenuRequested, [this](const QPoint& point) {
QMenu menu(this);
QMenu menu {nullptr};
const auto selection = selectionModel()->selectedRows();
const auto& [min, max] = selectedMinMaxRows(selection);
if (bool isContiguous = max - min == selection.size() - 1) {
@@ -141,11 +141,11 @@ SheetTableView::SheetTableView(QWidget* parent)
}
auto remove = menu.addAction(tr("Remove row(s)", "", selection.size()));
connect(remove, &QAction::triggered, this, &SheetTableView::removeRows);
menu.exec(verticalHeader()->mapToGlobal(point));
menu.exec(QCursor::pos());
});
connect(horizontalHeader(), &QWidget::customContextMenuRequested, [this](const QPoint& point) {
QMenu menu(this);
QMenu menu {nullptr};
const auto selection = selectionModel()->selectedColumns();
const auto& [min, max] = selectedMinMaxColumns(selection);
if (bool isContiguous = max - min == selection.size() - 1) {
@@ -171,7 +171,7 @@ SheetTableView::SheetTableView(QWidget* parent)
}
auto remove = menu.addAction(tr("Remove column(s)", "", selection.size()));
connect(remove, &QAction::triggered, this, &SheetTableView::removeColumns);
menu.exec(horizontalHeader()->mapToGlobal(point));
menu.exec(QCursor::pos());
});
actionProperties = new QAction(tr("Properties..."), this);
@@ -180,41 +180,40 @@ SheetTableView::SheetTableView(QWidget* parent)
horizontalHeader()->setContextMenuPolicy(Qt::CustomContextMenu);
verticalHeader()->setContextMenuPolicy(Qt::CustomContextMenu);
contextMenu = new QMenu(this);
contextMenu->addAction(actionProperties);
contextMenu.addAction(actionProperties);
connect(actionProperties, &QAction::triggered, this, &SheetTableView::cellProperties);
contextMenu->addSeparator();
contextMenu.addSeparator();
actionRecompute = new QAction(tr("Recompute"), this);
connect(actionRecompute, &QAction::triggered, this, &SheetTableView::onRecompute);
contextMenu->addAction(actionRecompute);
contextMenu.addAction(actionRecompute);
actionBind = new QAction(tr("Bind..."), this);
connect(actionBind, &QAction::triggered, this, &SheetTableView::onBind);
contextMenu->addAction(actionBind);
contextMenu.addAction(actionBind);
actionConf = new QAction(tr("Configuration table..."), this);
connect(actionConf, &QAction::triggered, this, &SheetTableView::onConfSetup);
contextMenu->addAction(actionConf);
contextMenu.addAction(actionConf);
horizontalHeader()->addAction(actionBind);
verticalHeader()->addAction(actionBind);
contextMenu->addSeparator();
actionMerge = contextMenu->addAction(tr("Merge cells"));
contextMenu.addSeparator();
actionMerge = contextMenu.addAction(tr("Merge cells"));
connect(actionMerge, &QAction::triggered, this, &SheetTableView::mergeCells);
actionSplit = contextMenu->addAction(tr("Split cells"));
actionSplit = contextMenu.addAction(tr("Split cells"));
connect(actionSplit, &QAction::triggered, this, &SheetTableView::splitCell);
contextMenu->addSeparator();
actionCut = contextMenu->addAction(tr("Cut"));
contextMenu.addSeparator();
actionCut = contextMenu.addAction(tr("Cut"));
connect(actionCut, &QAction::triggered, this, &SheetTableView::cutSelection);
actionCopy = contextMenu->addAction(tr("Copy"));
actionCopy = contextMenu.addAction(tr("Copy"));
connect(actionCopy, &QAction::triggered, this, &SheetTableView::copySelection);
actionPaste = contextMenu->addAction(tr("Paste"));
actionPaste = contextMenu.addAction(tr("Paste"));
connect(actionPaste, &QAction::triggered, this, &SheetTableView::pasteClipboard);
actionDel = contextMenu->addAction(tr("Delete"));
actionDel = contextMenu.addAction(tr("Delete"));
connect(actionDel, &QAction::triggered, this, &SheetTableView::deleteSelection);
setTabKeyNavigation(false);
@@ -241,7 +240,7 @@ void SheetTableView::onBind()
{
auto ranges = selectedRanges();
if (!ranges.empty() && ranges.size() <= 2) {
DlgBindSheet dlg(sheet, ranges, this);
DlgBindSheet dlg {sheet, ranges};
dlg.exec();
}
}
@@ -252,16 +251,16 @@ void SheetTableView::onConfSetup()
if (ranges.empty()) {
return;
}
DlgSheetConf dlg(sheet, ranges.back(), this);
DlgSheetConf dlg {sheet, ranges.back()};
dlg.exec();
}
void SheetTableView::cellProperties()
{
std::unique_ptr<PropertiesDialog> dialog(new PropertiesDialog(sheet, selectedRanges(), this));
PropertiesDialog dialog {sheet, selectedRanges()};
if (dialog->exec() == QDialog::Accepted) {
dialog->apply();
if (dialog.exec() == QDialog::Accepted) {
dialog.apply();
}
}
@@ -1125,7 +1124,7 @@ void SheetTableView::contextMenuEvent(QContextMenuEvent*)
auto ranges = selectedRanges();
actionBind->setEnabled(!ranges.empty() && ranges.size() <= 2);
contextMenu->exec(QCursor::pos());
contextMenu.exec(QCursor::pos());
}
QString SheetTableView::toHtml() const