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 }