Add zoom slider to status bar

This commit is contained in:
G.K.MacGregor
2024-04-09 21:33:17 +01:00
parent ebb389b6d7
commit 3db1815772
2 changed files with 32 additions and 8 deletions

View File

@@ -33,6 +33,7 @@
#include <QScreen>
#include <QSettings>
#include <QShortcut>
#include <QSlider>
#include <QStatusBar>
#include <QToolBar>
#include <QToolButton>
@@ -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());

View File

@@ -21,13 +21,13 @@
#define MAINWINDOW_H
#include <QCheckBox>
#include <QComboBox>
#include <QGraphicsProxyWidget>
#include <QGraphicsScene>
#include <QGraphicsView>
#include <QMainWindow>
#include <QLabel>
#include <QPushButton>
#include <QSlider>
#include <QToolButton>
#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];