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"