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 #ifndef KASTEN_ABSTRACTLINEPOPUP_P_HPP 0010 #define KASTEN_ABSTRACTLINEPOPUP_P_HPP 0011 0012 #include "abstractlinepopup.hpp" 0013 0014 class QIcon; 0015 class QLabel; 0016 class QHBoxLayout; 0017 class QEventLoop; 0018 0019 namespace Kasten { 0020 0021 class AbstractLinePopupPrivate 0022 { 0023 public: 0024 explicit AbstractLinePopupPrivate(AbstractLinePopup* parent); 0025 AbstractLinePopupPrivate(const AbstractLinePopupPrivate&) = delete; 0026 0027 ~AbstractLinePopupPrivate(); 0028 0029 AbstractLinePopupPrivate& operator=(const AbstractLinePopupPrivate&) = delete; 0030 0031 public: 0032 void init(); 0033 0034 void setPosition(QPoint globalPosition); 0035 void setIcon(const QIcon& icon); 0036 void setWidget(QWidget* widget); 0037 0038 void setResult(int result); 0039 int exec(); 0040 void open(); 0041 void accept(); 0042 void reject(); 0043 0044 int result() const; 0045 0046 public: // QWidget API 0047 void setVisible(bool visible); 0048 0049 public: 0050 bool isOrContainsObject(QObject* object) const; 0051 0052 private: 0053 void done(int result); 0054 0055 private: 0056 AbstractLinePopup* const p; 0057 0058 QHBoxLayout* mBaseLayout; 0059 QLabel* mIconLabel; 0060 QWidget* mWidget = nullptr; 0061 0062 QEventLoop* mEventLoop = nullptr; 0063 int mResult = AbstractLinePopup::Rejected; 0064 }; 0065 0066 inline AbstractLinePopupPrivate::AbstractLinePopupPrivate(AbstractLinePopup* parent) 0067 : p(parent) 0068 { 0069 } 0070 0071 inline AbstractLinePopupPrivate::~AbstractLinePopupPrivate() = default; 0072 0073 inline int AbstractLinePopupPrivate::result() const { return mResult; } 0074 inline void AbstractLinePopupPrivate::setResult(int result) { mResult = result; } 0075 0076 inline bool AbstractLinePopupPrivate::isOrContainsObject(QObject* object) const 0077 { 0078 bool result = false; 0079 0080 while (object) { 0081 if (object == p) { 0082 result = true; 0083 break; 0084 } 0085 object = object->parent(); 0086 } 0087 0088 return result; 0089 } 0090 0091 } 0092 0093 #endif