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 <QScreen>
#include <QSettings> #include <QSettings>
#include <QShortcut> #include <QShortcut>
#include <QSlider>
#include <QStatusBar> #include <QStatusBar>
#include <QToolBar> #include <QToolBar>
#include <QToolButton> #include <QToolButton>
@@ -278,7 +279,7 @@ void MainWindow::init()
if (m_viewSmoothTransform) if (m_viewSmoothTransform)
m_textView->setRenderHints(QPainter::SmoothPixmapTransform); m_textView->setRenderHints(QPainter::SmoothPixmapTransform);
m_textView->setBackgroundBrush(QBrush(QColor(32, 48, 96))); m_textView->setBackgroundBrush(QBrush(QColor(32, 48, 96)));
setSceneDimensions(); m_zoomSlider->setValue(m_viewZoom);
setCentralWidget(m_textView); setCentralWidget(m_textView);
connect(m_textWidget->document(), &TeletextDocument::cursorMoved, this, &MainWindow::updateCursorPosition); connect(m_textWidget->document(), &TeletextDocument::cursorMoved, this, &MainWindow::updateCursorPosition);
@@ -766,26 +767,36 @@ void MainWindow::setSmoothTransform(bool smoothTransform)
void MainWindow::zoomIn() void MainWindow::zoomIn()
{ {
if (m_viewZoom < 4) if (m_viewZoom < 4) {
m_viewZoom++; m_viewZoom++;
else if (m_viewZoom < 12) m_zoomSlider->setValue(m_viewZoom);
} else if (m_viewZoom < 12) {
m_viewZoom += 2; m_viewZoom += 2;
setSceneDimensions(); m_zoomSlider->setValue(m_viewZoom / 2 + 2);
}
} }
void MainWindow::zoomOut() void MainWindow::zoomOut()
{ {
if (m_viewZoom > 4) if (m_viewZoom > 4) {
m_viewZoom -= 2; 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_viewZoom--;
m_zoomSlider->setValue(m_viewZoom);
}
}
void MainWindow::zoomSet(int viewZoom)
{
m_viewZoom = (viewZoom < 5) ? viewZoom : (viewZoom - 2) * 2;
setSceneDimensions(); setSceneDimensions();
} }
void MainWindow::zoomReset() void MainWindow::zoomReset()
{ {
m_viewZoom = 2; m_viewZoom = 2;
setSceneDimensions(); m_zoomSlider->setValue(2);
} }
void MainWindow::toggleInsertMode() void MainWindow::toggleInsertMode()
@@ -821,6 +832,17 @@ void MainWindow::createStatusBar()
m_cursorPositionLabel = new QLabel("1, 1"); m_cursorPositionLabel = new QLabel("1, 1");
statusBar()->insertWidget(3, m_cursorPositionLabel); 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 = new QPushButton("OVERWRITE");
m_insertModePushButton->setFlat(true); m_insertModePushButton->setFlat(true);
m_insertModePushButton->setMinimumHeight(m_subPageLabel->height()); m_insertModePushButton->setMinimumHeight(m_subPageLabel->height());

View File

@@ -21,13 +21,13 @@
#define MAINWINDOW_H #define MAINWINDOW_H
#include <QCheckBox> #include <QCheckBox>
#include <QComboBox>
#include <QGraphicsProxyWidget> #include <QGraphicsProxyWidget>
#include <QGraphicsScene> #include <QGraphicsScene>
#include <QGraphicsView> #include <QGraphicsView>
#include <QMainWindow> #include <QMainWindow>
#include <QLabel> #include <QLabel>
#include <QPushButton> #include <QPushButton>
#include <QSlider>
#include <QToolButton> #include <QToolButton>
#include "mainwidget.h" #include "mainwidget.h"
@@ -84,6 +84,7 @@ private slots:
void setSmoothTransform(bool smoothTransform); void setSmoothTransform(bool smoothTransform);
void zoomIn(); void zoomIn();
void zoomOut(); void zoomOut();
void zoomSet(int viewZoom);
void zoomReset(); void zoomReset();
void toggleInsertMode(); void toggleInsertMode();
@@ -131,6 +132,7 @@ private:
QLabel *m_subPageLabel, *m_cursorPositionLabel; QLabel *m_subPageLabel, *m_cursorPositionLabel;
QToolButton *m_previousSubPageButton, *m_nextSubPageButton; QToolButton *m_previousSubPageButton, *m_nextSubPageButton;
QSlider *m_zoomSlider;
QPushButton *m_insertModePushButton; QPushButton *m_insertModePushButton;
QRadioButton *m_levelRadioButton[4]; QRadioButton *m_levelRadioButton[4];