File indexing completed on 2025-02-02 05:43:17

0001 /*
0002     This file is part of the Kasten Framework, made within the KDE community.
0003 
0004     SPDX-FileCopyrightText: 2009 Friedrich W. H. Kossebau <kossebau@kde.org>
0005 
0006     SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0007 */
0008 
0009 #include "abstractlinepopup.hpp"
0010 #include "abstractlinepopup_p.hpp"
0011 
0012 // Qt
0013 #include <QEvent>
0014 
0015 namespace Kasten {
0016 
0017 AbstractLinePopup::AbstractLinePopup(QWidget* parent)
0018     : QWidget(parent, Qt::Popup)
0019     , d_ptr(new AbstractLinePopupPrivate(this))
0020 {
0021     Q_D(AbstractLinePopup);
0022 
0023     d->init();
0024 }
0025 
0026 AbstractLinePopup::~AbstractLinePopup() = default;
0027 
0028 void AbstractLinePopup::setPosition(QPoint globalPosition)
0029 {
0030     Q_D(AbstractLinePopup);
0031 
0032     d->setPosition(globalPosition);
0033 }
0034 
0035 void AbstractLinePopup::setIcon(const QIcon& icon)
0036 {
0037     Q_D(AbstractLinePopup);
0038 
0039     d->setIcon(icon);
0040 }
0041 
0042 void AbstractLinePopup::setWidget(QWidget* widget)
0043 {
0044     Q_D(AbstractLinePopup);
0045 
0046     d->setWidget(widget);
0047 }
0048 
0049 void AbstractLinePopup::setResult(int result)
0050 {
0051     Q_D(AbstractLinePopup);
0052 
0053     d->setResult(result);
0054 }
0055 
0056 void AbstractLinePopup::setVisible(bool visible)
0057 {
0058     Q_D(AbstractLinePopup);
0059 
0060     d->setVisible(visible);
0061 }
0062 
0063 int AbstractLinePopup::exec()
0064 {
0065     Q_D(AbstractLinePopup);
0066 
0067     return d->exec();
0068 }
0069 
0070 void AbstractLinePopup::open()
0071 {
0072     Q_D(AbstractLinePopup);
0073 
0074     d->open();
0075 }
0076 
0077 int AbstractLinePopup::result() const
0078 {
0079     Q_D(const AbstractLinePopup);
0080 
0081     return d->result();
0082 }
0083 
0084 
0085 void AbstractLinePopup::accept()
0086 {
0087     Q_D(AbstractLinePopup);
0088 
0089     d->accept();
0090 }
0091 
0092 void AbstractLinePopup::reject()
0093 {
0094     Q_D(AbstractLinePopup);
0095 
0096     d->reject();
0097 }
0098 
0099 bool AbstractLinePopup::eventFilter(QObject* object, QEvent* event)
0100 {
0101     Q_D(AbstractLinePopup);
0102 
0103     switch (event->type())
0104     {
0105     case QEvent::WindowDeactivate:
0106         close();
0107         break;
0108     case QEvent::MouseButtonPress:
0109     case QEvent::Wheel:
0110         if (!d->isOrContainsObject(object)) {
0111             close();
0112         }
0113         break;
0114     default:
0115         break;
0116     }
0117 
0118     return false;
0119 }
0120 
0121 }
0122 
0123 #include "moc_abstractlinepopup.cpp"