From 3db1815772ecc4bd159de992780a6e417ddf861c Mon Sep 17 00:00:00 2001 From: "G.K.MacGregor" Date: Tue, 9 Apr 2024 21:33:17 +0100 Subject: [PATCH] Add zoom slider to status bar --- mainwindow.cpp | 36 +++++++++++++++++++++++++++++------- mainwindow.h | 4 +++- 2 files changed, 32 insertions(+), 8 deletions(-) diff --git a/mainwindow.cpp b/mainwindow.cpp index c560750..359cf68 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -33,6 +33,7 @@ #include #include #include +#include #include #include #include @@ -278,7 +279,7 @@ void MainWindow::init() if (m_viewSmoothTransform) m_textView->setRenderHints(QPainter::SmoothPixmapTransform); m_textView->setBackgroundBrush(QBrush(QColor(32, 48, 96))); - setSceneDimensions(); + m_zoomSlider->setValue(m_viewZoom); setCentralWidget(m_textView); connect(m_textWidget->document(), &TeletextDocument::cursorMoved, this, &MainWindow::updateCursorPosition); @@ -766,26 +767,36 @@ void MainWindow::setSmoothTransform(bool smoothTransform) void MainWindow::zoomIn() { - if (m_viewZoom < 4) + if (m_viewZoom < 4) { m_viewZoom++; - else if (m_viewZoom < 12) + m_zoomSlider->setValue(m_viewZoom); + } else if (m_viewZoom < 12) { m_viewZoom += 2; - setSceneDimensions(); + m_zoomSlider->setValue(m_viewZoom / 2 + 2); + } } void MainWindow::zoomOut() { - if (m_viewZoom > 4) + if (m_viewZoom > 4) { m_viewZoom -= 2; - else if (m_viewZoom > 0) + m_zoomSlider->setValue(m_viewZoom == 4 ? 4 : m_viewZoom / 2 + 2); + } else if (m_viewZoom > 0) { m_viewZoom--; + m_zoomSlider->setValue(m_viewZoom); + } +} + +void MainWindow::zoomSet(int viewZoom) +{ + m_viewZoom = (viewZoom < 5) ? viewZoom : (viewZoom - 2) * 2; setSceneDimensions(); } void MainWindow::zoomReset() { m_viewZoom = 2; - setSceneDimensions(); + m_zoomSlider->setValue(2); } void MainWindow::toggleInsertMode() @@ -821,6 +832,17 @@ void MainWindow::createStatusBar() m_cursorPositionLabel = new QLabel("1, 1"); statusBar()->insertWidget(3, m_cursorPositionLabel); + m_zoomSlider = new QSlider; + m_zoomSlider->setOrientation(Qt::Horizontal); + m_zoomSlider->setMinimumHeight(m_subPageLabel->height()); + m_zoomSlider->setMaximumHeight(m_subPageLabel->height()); + m_zoomSlider->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Fixed); + m_zoomSlider->setRange(0, 8); + m_zoomSlider->setPageStep(1); + m_zoomSlider->setFocusPolicy(Qt::NoFocus); + statusBar()->insertWidget(4, m_zoomSlider); + connect(m_zoomSlider, &QSlider::valueChanged, this, &MainWindow::zoomSet); + m_insertModePushButton = new QPushButton("OVERWRITE"); m_insertModePushButton->setFlat(true); m_insertModePushButton->setMinimumHeight(m_subPageLabel->height()); diff --git a/mainwindow.h b/mainwindow.h index 331e98d..35a7dbd 100644 --- a/mainwindow.h +++ b/mainwindow.h @@ -21,13 +21,13 @@ #define MAINWINDOW_H #include -#include #include #include #include #include #include #include +#include #include #include "mainwidget.h" @@ -84,6 +84,7 @@ private slots: void setSmoothTransform(bool smoothTransform); void zoomIn(); void zoomOut(); + void zoomSet(int viewZoom); void zoomReset(); void toggleInsertMode(); @@ -131,6 +132,7 @@ private: QLabel *m_subPageLabel, *m_cursorPositionLabel; QToolButton *m_previousSubPageButton, *m_nextSubPageButton; + QSlider *m_zoomSlider; QPushButton *m_insertModePushButton; QRadioButton *m_levelRadioButton[4];