File indexing completed on 2024-04-21 04:58:12

0001 /*
0002     This file is part of the KDE project
0003     SPDX-FileCopyrightText: 2008 David Faure <faure@kde.org>
0004     SPDX-FileCopyrightText: 2009 Christoph Feck <christoph@maxiom.de>
0005 
0006     SPDX-License-Identifier: GPL-2.0-or-later
0007 */
0008 
0009 #include "konqanimatedlogo_p.h"
0010 
0011 #include <KIconLoader>
0012 
0013 #include <QEvent>
0014 #include <QToolBar>
0015 
0016 KonqAnimatedLogo::KonqAnimatedLogo(QWidget *parent)
0017     : KAnimatedButton(parent)
0018 {
0019     setAutoRaise(true);
0020     setFocusPolicy(Qt::NoFocus);
0021     setToolButtonStyle(Qt::ToolButtonIconOnly);
0022     QToolBar *bar = qobject_cast<QToolBar *>(parent);
0023     if (bar) {
0024         connectToToolBar(bar);
0025     }
0026     setAnimatedLogoSize(iconSize());
0027 }
0028 
0029 void KonqAnimatedLogo::changeEvent(QEvent *event)
0030 {
0031     KAnimatedButton::changeEvent(event);
0032     if (event->type() == QEvent::ParentAboutToChange) {
0033         if (parentWidget()) {
0034             disconnect(parentWidget(), SIGNAL(iconSizeChanged(QSize)), this, SLOT(setAnimatedLogoSize()));
0035         }
0036     } else if (event->type() == QEvent::ParentChange) {
0037         QToolBar *bar = qobject_cast<QToolBar *>(parentWidget());
0038         if (bar) {
0039             connectToToolBar(bar);
0040         }
0041     }
0042 }
0043 
0044 void KonqAnimatedLogo::connectToToolBar(QToolBar *bar)
0045 {
0046     setAnimatedLogoSize(bar->iconSize());
0047     connect(bar, SIGNAL(iconSizeChanged(QSize)), SLOT(setAnimatedLogoSize(QSize)));
0048 }
0049 
0050 void KonqAnimatedLogo::setAnimatedLogoSize(const QSize &size)
0051 {
0052     setIconSize(size);
0053     const int sizeToLoad = qMin(size.width(), size.height());
0054     setAnimationPath(KIconLoader::global()->iconPath(QStringLiteral("process-working-kde"), -sizeToLoad));
0055 }