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"