File indexing completed on 2024-05-12 16:02:07

0001 /* This file is part of the KDE project
0002  * SPDX-FileCopyrightText: 2005-2007 Thomas Zander <zander@kde.org>
0003  *
0004  * SPDX-License-Identifier: LGPL-2.0-or-later
0005  */
0006 #include "KoAspectButton.h"
0007 
0008 #include <QPixmap>
0009 #include <QPainter>
0010 #include <QMouseEvent>
0011 
0012 #include <kis_icon_utils.h>
0013 
0014 class Q_DECL_HIDDEN KoAspectButton::Private
0015 {
0016 public:
0017     Private()
0018         : keepAspect(true)
0019     {
0020     }
0021     bool keepAspect;
0022 };
0023 
0024 KoAspectButton::KoAspectButton(QWidget *parent)
0025     : QToolButton(parent),
0026     d( new Private() )
0027 {
0028     setIconSize(QSize(9, 24));
0029     setFixedSize(19, 34);
0030     setAutoRaise(true);
0031 
0032     connect(this, SIGNAL(released()), this, SLOT(buttonReleased()));
0033 
0034     setKeepAspectRatio(false);
0035 }
0036 
0037 KoAspectButton::~KoAspectButton()
0038 {
0039     delete d;
0040 }
0041 
0042 void KoAspectButton::buttonReleased() {
0043     if(! isEnabled())
0044         return;
0045     setKeepAspectRatio(!d->keepAspect);
0046 }
0047 
0048 void KoAspectButton::setKeepAspectRatio(bool on) {
0049     this->setIcon(on ? KisIconUtils::loadIcon("chain-icon") : KisIconUtils::loadIcon("chain-broken-icon"));
0050     update();
0051 
0052     if(d->keepAspect != on) {
0053         d->keepAspect = on;
0054         emit keepAspectRatioChanged(d->keepAspect);
0055     }
0056 }
0057 
0058 bool KoAspectButton::keepAspectRatio() const
0059 {
0060     return d->keepAspect;
0061 }