File indexing completed on 2024-05-19 04:07:52
0001 /* 0002 SPDX-FileCopyrightText: 2009 Stefan Majewsky <majewsky@gmx.net> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #include "zoomwidget.h" 0008 #include "view.h" //for minimum/maximum values 0009 0010 #include <QSlider> 0011 #include <QToolButton> 0012 #include <QVBoxLayout> 0013 #include <QIcon> 0014 #include <KLocalizedString> 0015 #include <KStandardShortcut> 0016 0017 Palapeli::ZoomWidget::ZoomWidget(QWidget* parent) 0018 : QWidget(parent) 0019 , m_constrainedButton(new QToolButton(this)) 0020 , m_zoomOutButton(new QToolButton(this)) 0021 , m_zoomInButton(new QToolButton(this)) 0022 , m_slider(new QSlider(Qt::Horizontal)) 0023 { 0024 //init buttons 0025 m_constrainedButton->setIcon(QIcon::fromTheme( QStringLiteral( "select-rectangular" ))); 0026 m_constrainedButton->setToolTip(i18n("Lock the puzzle table area")); 0027 m_constrainedButton->setCheckable(true); 0028 connect(m_constrainedButton, &QToolButton::toggled, this, &ZoomWidget::constrainedChanged); 0029 m_zoomOutButton->setIcon(QIcon::fromTheme( QStringLiteral( "zoom-out" ))); 0030 //QT5 m_zoomOutButton->setShortcut(KStandardShortcut::zoomOut().primary()); 0031 connect(m_zoomOutButton, &QToolButton::pressed, this, &ZoomWidget::zoomOutRequest); 0032 m_zoomInButton->setIcon(QIcon::fromTheme( QStringLiteral( "zoom-in" ))); 0033 //QT5 m_zoomInButton->setShortcut(KStandardShortcut::zoomIn().primary()); 0034 connect(m_zoomInButton, &QToolButton::pressed, this, &ZoomWidget::zoomInRequest); 0035 //init slider 0036 m_slider->setMinimum(Palapeli::View::MinimumZoomLevel); 0037 m_slider->setMaximum(Palapeli::View::MaximumZoomLevel); 0038 connect(m_slider, &QSlider::valueChanged, this, &ZoomWidget::levelChanged); 0039 //init widget layout 0040 QHBoxLayout* layout = new QHBoxLayout; 0041 layout->addWidget(m_constrainedButton); 0042 layout->addWidget(m_zoomOutButton); 0043 layout->addWidget(m_slider); 0044 layout->addWidget(m_zoomInButton); 0045 layout->setContentsMargins(0, 0, 0, 0); 0046 setLayout(layout); 0047 } 0048 0049 void Palapeli::ZoomWidget::setConstrained(bool constrained) 0050 { 0051 if (m_constrainedButton->isChecked() != constrained) 0052 { 0053 m_constrainedButton->setChecked(constrained); 0054 Q_EMIT constrainedChanged(constrained); 0055 } 0056 } 0057 0058 void Palapeli::ZoomWidget::setLevel(int level) 0059 { 0060 m_slider->setValue(level); 0061 } 0062 0063 #include "moc_zoomwidget.cpp"